44 register const vector
signed short vczero = (
const vector
signed short)vec_splat_s16(0);
47 register vector
signed short blockv, qmulv, qaddv, nqaddv, temp1;
48 register vector
bool short blockv_null, blockv_neg;
50 qmulv = vec_splat((
vec_s16)vec_lde(0, &qmul8), 0);
51 qaddv = vec_splat((
vec_s16)vec_lde(0, &qadd8), 0);
52 nqaddv = vec_sub(vczero, qaddv);
56 for (
register int j = 0; j <= nb_coeffs; j += 8) {
57 blockv = vec_ld(j << 1,
block);
58 blockv_neg = vec_cmplt(blockv, vczero);
59 blockv_null = vec_cmpeq(blockv, vczero);
61 temp1 = vec_sel(qaddv, nqaddv, blockv_neg);
63 temp1 = vec_mladd(blockv, qmulv, temp1);
65 blockv = vec_sel(temp1, blockv, blockv_null);
66 vec_st(blockv, j << 1,
block);