From: Guillaume Poirier Date: Tue, 25 Mar 2008 16:30:04 +0000 (+0000) Subject: fix hpel_filter_altivec picked up by checkasm X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1c72e71929a6eabded391ec6f16ba66d3cac75f3;p=libx264 fix hpel_filter_altivec picked up by checkasm Patch by Manuel %maaanuuu A gmx.net % and Noboru Asai % noboru P asai A gmail P com % --- diff --git a/common/ppc/mc.c b/common/ppc/mc.c index 3c69b261..c99cd31e 100644 --- a/common/ppc/mc.c +++ b/common/ppc/mc.c @@ -611,11 +611,30 @@ void x264_hpel_filter_altivec( uint8_t *dsth, uint8_t *dstv, uint8_t *dstc, uint HPEL_FILTER_CENTRAL(); } + /* Partial vertical filter */ + VEC_LOAD( &src[x+i_stride*(y-2)], src1v, 16, vec_u8_t ); + VEC_LOAD( &src[x+i_stride*(y-1)], src2v, 16, vec_u8_t ); + VEC_LOAD( &src[x+i_stride*(y-0)], src3v, 16, vec_u8_t ); + VEC_LOAD( &src[x+i_stride*(y+1)], src4v, 16, vec_u8_t ); + VEC_LOAD( &src[x+i_stride*(y+2)], src5v, 16, vec_u8_t ); + VEC_LOAD( &src[x+i_stride*(y+3)], src6v, 16, vec_u8_t ); + + temp1v = vec_u8_to_s16_h( src1v ); + temp2v = vec_u8_to_s16_h( src2v ); + temp3v = vec_u8_to_s16_h( src3v ); + temp4v = vec_u8_to_s16_h( src4v ); + temp5v = vec_u8_to_s16_h( src5v ); + temp6v = vec_u8_to_s16_h( src6v ); + + HPEL_FILTER_1( temp1v, temp2v, temp3v, + temp4v, temp5v, temp6v ); + /* central_filter */ tempav = tempcv; tempbv = tempdv; tempcv = tempev; - tempdv = vec_splat( tempcv, 7 ); /* last only */ + tempdv = temp1v; + /* tempev is not used */ HPEL_FILTER_CENTRAL(); }