From: Mans Rullgard Date: Mon, 21 Feb 2011 19:15:38 +0000 (+0000) Subject: ppc: fix vc1 inverse transform, unbreak build X-Git-Tag: android-x86-4.4-r1~12310^2~2132 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=381efba0ecedd41575f99ba9e9bd3826551079f6;p=android-x86%2Fexternal-ffmpeg.git ppc: fix vc1 inverse transform, unbreak build GCC 4.3 and later are more particular about signedness matching in vector operations. The operations under if(rangered) were missing assignments and thus had no effect. Signed-off-by: Mans Rullgard --- diff --git a/libavcodec/ppc/vc1dsp_altivec.c b/libavcodec/ppc/vc1dsp_altivec.c index b5cc71c3cf..05edb53b7c 100644 --- a/libavcodec/ppc/vc1dsp_altivec.c +++ b/libavcodec/ppc/vc1dsp_altivec.c @@ -146,7 +146,7 @@ static void vc1_inv_trans_8x8_altivec(DCTELEM block[64], const vector signed int vec_1s = vec_splat_s32(1); const vector unsigned int vec_1 = vec_splat_u32(1); const vector unsigned short rangered_shift = vec_splat_u16(1); - const vector signed short signed_bias = vec_sl(vec_splat_u16(4), + const vector signed short signed_bias = vec_sl(vec_splat_s16(4), vec_splat_u16(4)); src0 = vec_ld( 0, block); @@ -219,23 +219,23 @@ static void vc1_inv_trans_8x8_altivec(DCTELEM block[64], if (rangered) { if (!sign) { - vec_sub(src0, signed_bias); - vec_sub(src1, signed_bias); - vec_sub(src2, signed_bias); - vec_sub(src3, signed_bias); - vec_sub(src4, signed_bias); - vec_sub(src5, signed_bias); - vec_sub(src6, signed_bias); - vec_sub(src7, signed_bias); + src0 = vec_sub(src0, signed_bias); + src1 = vec_sub(src1, signed_bias); + src2 = vec_sub(src2, signed_bias); + src3 = vec_sub(src3, signed_bias); + src4 = vec_sub(src4, signed_bias); + src5 = vec_sub(src5, signed_bias); + src6 = vec_sub(src6, signed_bias); + src7 = vec_sub(src7, signed_bias); } - vec_sl(src0, rangered_shift); - vec_sl(src1, rangered_shift); - vec_sl(src2, rangered_shift); - vec_sl(src3, rangered_shift); - vec_sl(src4, rangered_shift); - vec_sl(src5, rangered_shift); - vec_sl(src6, rangered_shift); - vec_sl(src7, rangered_shift); + src0 = vec_sl(src0, rangered_shift); + src1 = vec_sl(src1, rangered_shift); + src2 = vec_sl(src2, rangered_shift); + src3 = vec_sl(src3, rangered_shift); + src4 = vec_sl(src4, rangered_shift); + src5 = vec_sl(src5, rangered_shift); + src6 = vec_sl(src6, rangered_shift); + src7 = vec_sl(src7, rangered_shift); } vec_st(src0, 0, block);