diff options
Diffstat (limited to 'simd/jidctint-altivec.c')
-rw-r--r-- | simd/jidctint-altivec.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/simd/jidctint-altivec.c b/simd/jidctint-altivec.c index 37cae75..7f0f8d0 100644 --- a/simd/jidctint-altivec.c +++ b/simd/jidctint-altivec.c @@ -61,10 +61,10 @@ in##26l = vec_mergeh(in##2, in##6); \ in##26h = vec_mergel(in##2, in##6); \ \ - tmp3l = vec_msums(in##26l, pw_f130_f054, zero32); \ - tmp3h = vec_msums(in##26h, pw_f130_f054, zero32); \ - tmp2l = vec_msums(in##26l, pw_f054_mf130, zero32); \ - tmp2h = vec_msums(in##26h, pw_f054_mf130, zero32); \ + tmp3l = vec_msums(in##26l, pw_f130_f054, pd_zero); \ + tmp3h = vec_msums(in##26h, pw_f130_f054, pd_zero); \ + tmp2l = vec_msums(in##26l, pw_f054_mf130, pd_zero); \ + tmp2h = vec_msums(in##26h, pw_f054_mf130, pd_zero); \ \ tmp0 = vec_add(in##0, in##4); \ tmp1 = vec_sub(in##0, in##4); \ @@ -111,10 +111,10 @@ z34l = vec_mergeh(z3, z4); \ z34h = vec_mergel(z3, z4); \ \ - z3l = vec_msums(z34l, pw_mf078_f117, zero32); \ - z3h = vec_msums(z34h, pw_mf078_f117, zero32); \ - z4l = vec_msums(z34l, pw_f117_f078, zero32); \ - z4h = vec_msums(z34h, pw_f117_f078, zero32); \ + z3l = vec_msums(z34l, pw_mf078_f117, pd_zero); \ + z3h = vec_msums(z34h, pw_mf078_f117, pd_zero); \ + z4l = vec_msums(z34l, pw_f117_f078, pd_zero); \ + z4h = vec_msums(z34h, pw_f117_f078, pd_zero); \ \ /* (Original) \ * z1 = tmp0 + tmp3; z2 = tmp1 + tmp2; \ @@ -210,6 +210,8 @@ jsimd_idct_islow_altivec (void * dct_table_, JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col) { short *dct_table = (short *)dct_table_; + int *outptr; + __vector short row0, row1, row2, row3, row4, row5, row6, row7, col0, col1, col2, col3, col4, col5, col6, col7, quant0, quant1, quant2, quant3, quant4, quant5, quant6, quant7, @@ -223,10 +225,9 @@ jsimd_idct_islow_altivec (void * dct_table_, JCOEFPTR coef_block, out0l, out0h, out1l, out1h, out2l, out2h, out3l, out3h, out4l, out4h, out5l, out5h, out6l, out6h, out7l, out7h; __vector signed char outb; - int *outptr; /* Constants */ - __vector short zero16 = { __8X(0) }, + __vector short pw_zero = { __8X(0) }, pw_f130_f054 = { __4X2(F_0_541 + F_0_765, F_0_541) }, pw_f054_mf130 = { __4X2(F_0_541, F_0_541 - F_1_847) }, pw_mf078_f117 = { __4X2(F_1_175 - F_1_961, F_1_175) }, @@ -236,7 +237,7 @@ jsimd_idct_islow_altivec (void * dct_table_, JCOEFPTR coef_block, pw_mf050_mf256 = { __4X2(F_2_053 - F_2_562, -F_2_562) }, pw_mf256_f050 = { __4X2(-F_2_562, F_3_072 - F_2_562) }; __vector unsigned short pass1_bits = { __8X(PASS1_BITS) }; - __vector int zero32 = { __4X(0) }, + __vector int pd_zero = { __4X(0) }, pd_descale_p1 = { __4X(1 << (DESCALE_P1 - 1)) }, pd_descale_p2 = { __4X(1 << (DESCALE_P2 - 1)) }; __vector unsigned int descale_p1 = { __4X(DESCALE_P1) }, @@ -263,9 +264,9 @@ jsimd_idct_islow_altivec (void * dct_table_, JCOEFPTR coef_block, tmp1 = vec_or(tmp1, tmp3); quant0 = vec_ld(0, dct_table); - col0 = vec_mladd(col0, quant0, zero16); + col0 = vec_mladd(col0, quant0, pw_zero); - if (vec_all_eq(tmp1, zero16)) { + if (vec_all_eq(tmp1, pw_zero)) { /* AC terms all zero */ col0 = vec_sl(col0, pass1_bits); @@ -289,13 +290,13 @@ jsimd_idct_islow_altivec (void * dct_table_, JCOEFPTR coef_block, quant6 = vec_ld(96, dct_table); quant7 = vec_ld(112, dct_table); - col1 = vec_mladd(col1, quant1, zero16); - col2 = vec_mladd(col2, quant2, zero16); - col3 = vec_mladd(col3, quant3, zero16); - col4 = vec_mladd(col4, quant4, zero16); - col5 = vec_mladd(col5, quant5, zero16); - col6 = vec_mladd(col6, quant6, zero16); - col7 = vec_mladd(col7, quant7, zero16); + col1 = vec_mladd(col1, quant1, pw_zero); + col2 = vec_mladd(col2, quant2, pw_zero); + col3 = vec_mladd(col3, quant3, pw_zero); + col4 = vec_mladd(col4, quant4, pw_zero); + col5 = vec_mladd(col5, quant5, pw_zero); + col6 = vec_mladd(col6, quant6, pw_zero); + col7 = vec_mladd(col7, quant7, pw_zero); DO_IDCT(col, 1); |