From 42b3b398664349d23b2122ac940417165424542d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20Storsj=C3=B6?= Date: Tue, 25 Aug 2015 14:38:10 +0300 Subject: [PATCH] checkasm: Check the right output range for integral_initXh These functions write their output into sum+stride, while we previously only checked [0..stride-8] within the sum array. This catches the previously broken aarch64 version of these functions. Also check up until stride-4 elements for init4h. --- tools/checkasm.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tools/checkasm.c b/tools/checkasm.c index a1e8eda7..f4971dfd 100644 --- a/tools/checkasm.c +++ b/tools/checkasm.c @@ -1616,7 +1616,7 @@ static int check_mc( int cpu_ref, int cpu_new ) report( "lowres init :" ); } -#define INTEGRAL_INIT( name, size, ... )\ +#define INTEGRAL_INIT( name, size, offset, cmp_len, ... )\ if( mc_a.name != mc_ref.name )\ {\ intptr_t stride = 96;\ @@ -1625,20 +1625,20 @@ static int check_mc( int cpu_ref, int cpu_new ) memcpy( buf3, buf1, size*2*stride );\ memcpy( buf4, buf1, size*2*stride );\ uint16_t *sum = (uint16_t*)buf3;\ - call_c1( mc_c.name, __VA_ARGS__ );\ + call_c1( mc_c.name, sum+offset, __VA_ARGS__ );\ sum = (uint16_t*)buf4;\ - call_a1( mc_a.name, __VA_ARGS__ );\ - if( memcmp( buf3, buf4, (stride-8)*2 ) \ + call_a1( mc_a.name, sum+offset, __VA_ARGS__ );\ + if( memcmp( buf3+2*offset, buf4+2*offset, cmp_len*2 )\ || (size>9 && memcmp( buf3+18*stride, buf4+18*stride, (stride-8)*2 )))\ ok = 0;\ - call_c2( mc_c.name, __VA_ARGS__ );\ - call_a2( mc_a.name, __VA_ARGS__ );\ + call_c2( mc_c.name, sum+offset, __VA_ARGS__ );\ + call_a2( mc_a.name, sum+offset, __VA_ARGS__ );\ } ok = 1; used_asm = 0; - INTEGRAL_INIT( integral_init4h, 2, sum+stride, pbuf2, stride ); - INTEGRAL_INIT( integral_init8h, 2, sum+stride, pbuf2, stride ); - INTEGRAL_INIT( integral_init4v, 14, sum, sum+9*stride, stride ); - INTEGRAL_INIT( integral_init8v, 9, sum, stride ); + INTEGRAL_INIT( integral_init4h, 2, stride, stride-4, pbuf2, stride ); + INTEGRAL_INIT( integral_init8h, 2, stride, stride-8, pbuf2, stride ); + INTEGRAL_INIT( integral_init4v, 14, 0, stride-8, sum+9*stride, stride ); + INTEGRAL_INIT( integral_init8v, 9, 0, stride-8, stride ); report( "integral init :" ); ok = 1; used_asm = 0; -- 2.39.2