|
|
|
@@ -86,16 +86,27 @@ static void float_to_int16_altivec(int16_t *dst, const float *src, long len) |
|
|
|
static void float_to_int16_stride_altivec(int16_t *dst, const float *src, |
|
|
|
long len, int stride) |
|
|
|
{ |
|
|
|
int i, j; |
|
|
|
int i; |
|
|
|
vector signed short d, s; |
|
|
|
|
|
|
|
for (i = 0; i < len - 7; i += 8) { |
|
|
|
d = float_to_int16_one_altivec(src + i); |
|
|
|
for (j = 0; j < 8; j++) { |
|
|
|
s = vec_splat(d, j); |
|
|
|
vec_ste(s, 0, dst); |
|
|
|
dst += stride; |
|
|
|
} |
|
|
|
|
|
|
|
#define ASSIGN_S_VEC_SPLAT_D(j) \ |
|
|
|
s = vec_splat(d, j); \ |
|
|
|
vec_ste(s, 0, dst); \ |
|
|
|
dst += stride |
|
|
|
|
|
|
|
ASSIGN_S_VEC_SPLAT_D(0); |
|
|
|
ASSIGN_S_VEC_SPLAT_D(1); |
|
|
|
ASSIGN_S_VEC_SPLAT_D(2); |
|
|
|
ASSIGN_S_VEC_SPLAT_D(3); |
|
|
|
ASSIGN_S_VEC_SPLAT_D(4); |
|
|
|
ASSIGN_S_VEC_SPLAT_D(5); |
|
|
|
ASSIGN_S_VEC_SPLAT_D(6); |
|
|
|
ASSIGN_S_VEC_SPLAT_D(7); |
|
|
|
|
|
|
|
#undef ASSIGN_S_VEC_SPLAT_D |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|