}
}
+#define VSTE_INC(dst, v, elem, inc) do { \
+ vector signed short s = vec_splat(v, elem); \
+ vec_ste(s, 0, dst); \
+ dst += inc; \
+ } while (0)
+
static void float_to_int16_stride_altivec(int16_t *dst, const float *src,
long len, int stride)
{
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;
- }
+ VSTE_INC(dst, d, 0, stride);
+ VSTE_INC(dst, d, 1, stride);
+ VSTE_INC(dst, d, 2, stride);
+ VSTE_INC(dst, d, 3, stride);
+ VSTE_INC(dst, d, 4, stride);
+ VSTE_INC(dst, d, 5, stride);
+ VSTE_INC(dst, d, 6, stride);
+ VSTE_INC(dst, d, 7, stride);
}
}