From acafbb442ddd96755a1efd2bc827a18075b62e59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Sat, 24 Jan 2015 18:21:07 +0200 Subject: [PATCH] Add checks for cpu features in tests This allows running the tests on devices that don't have all the SIMD instruction sets. --- test/decoder/DecUT_IdctResAddPred.cpp | 27 ++-- test/encoder/EncUT_SVC_me.cpp | 130 ++++++++++-------- .../ProcessUT_AdaptiveQuantization.cpp | 13 +- 3 files changed, 97 insertions(+), 73 deletions(-) diff --git a/test/decoder/DecUT_IdctResAddPred.cpp b/test/decoder/DecUT_IdctResAddPred.cpp index e2d4e0a8..37ce8789 100644 --- a/test/decoder/DecUT_IdctResAddPred.cpp +++ b/test/decoder/DecUT_IdctResAddPred.cpp @@ -2,6 +2,7 @@ #include "macros.h" #include "decode_mb_aux.h" #include "deblocking.h" +#include "cpu.h" using namespace WelsDec; void IdctResAddPred_ref (uint8_t* pPred, const int32_t kiStride, int16_t* pRs) { int16_t iSrc[16]; @@ -48,7 +49,7 @@ void SetNonZeroCount_ref (int8_t* pNonZeroCount) { } } -#define GENERATE_IDCTRESADDPRED(pred) \ +#define GENERATE_IDCTRESADDPRED(pred, flag) \ TEST(DecoderDecodeMbAux, pred) {\ const int32_t kiStride = 32;\ const int iBits = 12;\ @@ -59,6 +60,9 @@ TEST(DecoderDecodeMbAux, pred) {\ int16_t iRefRS[16];\ uint8_t uiRefPred[16*kiStride];\ int32_t iRunTimes = 1000;\ + uint32_t uiCPUFlags = WelsCPUFeatureDetect(NULL); \ + if ((uiCPUFlags & flag) == 0 && flag != 0) \ + return; \ while(iRunTimes--) {\ for(int i = 0; i < 4; i++)\ for(int j = 0; j < 4; j++)\ @@ -80,22 +84,25 @@ TEST(DecoderDecodeMbAux, pred) {\ }\ } -GENERATE_IDCTRESADDPRED (IdctResAddPred_c) +GENERATE_IDCTRESADDPRED (IdctResAddPred_c, 0) #if defined(X86_ASM) -GENERATE_IDCTRESADDPRED (IdctResAddPred_mmx) +GENERATE_IDCTRESADDPRED (IdctResAddPred_mmx, WELS_CPU_MMXEXT) #endif #if defined(HAVE_NEON) -GENERATE_IDCTRESADDPRED (IdctResAddPred_neon) +GENERATE_IDCTRESADDPRED (IdctResAddPred_neon, WELS_CPU_NEON) #endif #if defined(HAVE_NEON_AARCH64) -GENERATE_IDCTRESADDPRED (IdctResAddPred_AArch64_neon) +GENERATE_IDCTRESADDPRED (IdctResAddPred_AArch64_neon, WELS_CPU_NEON) #endif -#define GENERATE_SETNONZEROCOUNT(method) \ +#define GENERATE_SETNONZEROCOUNT(method, flag) \ TEST(DecoderDecodeMbAux, method) \ {\ + uint32_t uiCPUFlags = WelsCPUFeatureDetect(NULL); \ + if ((uiCPUFlags & flag) == 0 && flag != 0) \ + return; \ int8_t iNonZeroCount[2][24];\ for(int32_t i = 0; i < 24; i++) {\ iNonZeroCount[0][i] = iNonZeroCount[1][i] = (rand() % 25);\ @@ -123,16 +130,16 @@ TEST(DecoderDecodeMbAux, method) \ }\ } -GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_c) +GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_c, 0) #if defined(X86_ASM) -GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_sse2) +GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_sse2, WELS_CPU_SSE2) #endif #if defined(HAVE_NEON) -GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_neon) +GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_neon, WELS_CPU_NEON) #endif #if defined(HAVE_NEON_AARCH64) -GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_AArch64_neon) +GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_AArch64_neon, WELS_CPU_NEON) #endif diff --git a/test/encoder/EncUT_SVC_me.cpp b/test/encoder/EncUT_SVC_me.cpp index 12242b3e..8577df53 100644 --- a/test/encoder/EncUT_SVC_me.cpp +++ b/test/encoder/EncUT_SVC_me.cpp @@ -105,8 +105,11 @@ void FillQpelLocationByFeatureValue_ref (uint16_t* pFeatureOfBlock, const int32_ } } -#define GENERATE_SumOfSingleBlock(anchor, method) \ +#define GENERATE_SumOfSingleBlock(anchor, method, flag) \ TEST (SVC_ME_FunTest, method) {\ + uint32_t uiCPUFlags = WelsCPUFeatureDetect(NULL); \ + if ((uiCPUFlags & flag) == 0 && flag != 0) \ + return; \ ENFORCE_STACK_ALIGN_1D (uint8_t, uiRefBuf, 16*320, 16);\ int32_t iRes[2];\ for (int32_t k = 0; k < SVC_ME_TEST_NUM; k++) {\ @@ -117,22 +120,22 @@ TEST (SVC_ME_FunTest, method) {\ }\ } -GENERATE_SumOfSingleBlock (SumOf8x8SingleBlock_ref, SumOf8x8SingleBlock_c) -GENERATE_SumOfSingleBlock (SumOf16x16SingleBlock_ref, SumOf16x16SingleBlock_c) +GENERATE_SumOfSingleBlock (SumOf8x8SingleBlock_ref, SumOf8x8SingleBlock_c, 0) +GENERATE_SumOfSingleBlock (SumOf16x16SingleBlock_ref, SumOf16x16SingleBlock_c, 0) #ifdef X86_ASM -GENERATE_SumOfSingleBlock (SumOf8x8SingleBlock_ref, SumOf8x8SingleBlock_sse2) -GENERATE_SumOfSingleBlock (SumOf16x16SingleBlock_ref, SumOf16x16SingleBlock_sse2) +GENERATE_SumOfSingleBlock (SumOf8x8SingleBlock_ref, SumOf8x8SingleBlock_sse2, WELS_CPU_SSE2) +GENERATE_SumOfSingleBlock (SumOf16x16SingleBlock_ref, SumOf16x16SingleBlock_sse2, WELS_CPU_SSE2) #endif #ifdef HAVE_NEON -GENERATE_SumOfSingleBlock (SumOf8x8SingleBlock_ref, SumOf8x8SingleBlock_neon) -GENERATE_SumOfSingleBlock (SumOf16x16SingleBlock_ref, SumOf16x16SingleBlock_neon) +GENERATE_SumOfSingleBlock (SumOf8x8SingleBlock_ref, SumOf8x8SingleBlock_neon, WELS_CPU_NEON) +GENERATE_SumOfSingleBlock (SumOf16x16SingleBlock_ref, SumOf16x16SingleBlock_neon, WELS_CPU_NEON) #endif #ifdef HAVE_NEON_AARCH64 -GENERATE_SumOfSingleBlock (SumOf8x8SingleBlock_ref, SumOf8x8SingleBlock_AArch64_neon) -GENERATE_SumOfSingleBlock (SumOf16x16SingleBlock_ref, SumOf16x16SingleBlock_AArch64_neon) +GENERATE_SumOfSingleBlock (SumOf8x8SingleBlock_ref, SumOf8x8SingleBlock_AArch64_neon, WELS_CPU_NEON) +GENERATE_SumOfSingleBlock (SumOf16x16SingleBlock_ref, SumOf16x16SingleBlock_AArch64_neon, WELS_CPU_NEON) #endif @@ -140,8 +143,11 @@ GENERATE_SumOfSingleBlock (SumOf16x16SingleBlock_ref, SumOf16x16SingleBlock_AArc _tp *_nbuff = new _tp[(_sz)+(_al)-1]; \ _tp *_nm = _nbuff + ((_al)-1) - (((uintptr_t)(_nbuff + ((_al)-1)) & ((_al)-1))/sizeof(_tp)); -#define GENERATE_SumOfFrame(anchor, method, kiWidth, kiHeight) \ +#define GENERATE_SumOfFrame(anchor, method, kiWidth, kiHeight, flag) \ TEST (SVC_ME_FunTest, method##_##kiWidth##x##kiHeight) {\ +uint32_t uiCPUFlags = WelsCPUFeatureDetect(NULL); \ +if ((uiCPUFlags & flag) == 0 && flag != 0) \ + return; \ ENFORCE_NEW_ALIGN_1D (uint8_t, pRefPicture, pRefPictureBuff, ((kiHeight+16)*((((kiWidth+15)>>4)<<4)+16)), 16) \ ENFORCE_NEW_ALIGN_1D (uint16_t, pFeatureOfBlock1, pFeatureOfBlockBuff1, (kiWidth*kiHeight), 16) \ ENFORCE_NEW_ALIGN_1D (uint16_t, pFeatureOfBlock2, pFeatureOfBlockBuff2, (kiWidth*kiHeight), 16) \ @@ -164,8 +170,11 @@ delete[] pFeatureOfBlockBuff1; \ delete[] pFeatureOfBlockBuff2; \ } -#define GENERATE_InitializeHashforFeature(anchor, method, kiWidth, kiHeight) \ +#define GENERATE_InitializeHashforFeature(anchor, method, kiWidth, kiHeight, flag) \ TEST (SVC_ME_FunTest, method##_##kiWidth##x##kiHeight) {\ +uint32_t uiCPUFlags = WelsCPUFeatureDetect(NULL); \ +if ((uiCPUFlags & flag) == 0 && flag != 0) \ + return; \ ENFORCE_NEW_ALIGN_1D (uint8_t, pRefPicture, pRefPictureBuff, ((kiHeight+16)*((((kiWidth+15)>>4)<<4)+16)), 16) \ ENFORCE_NEW_ALIGN_1D (uint16_t, pFeatureOfBlock, pFeatureOfBlockBuff, (kiWidth*kiHeight), 16) \ ENFORCE_NEW_ALIGN_1D (uint16_t, pLocation1, pLocationBuff1, (kiWidth*kiHeight)*2, 16) \ @@ -201,8 +210,11 @@ delete[] pFeaturePointValueList1Buff; \ } -#define GENERATE_FillQpelLocationByFeatureValue(anchor, method, kiWidth, kiHeight) \ +#define GENERATE_FillQpelLocationByFeatureValue(anchor, method, kiWidth, kiHeight, flag) \ TEST (SVC_ME_FunTest, method##_##kiWidth##x##kiHeight) {\ +uint32_t uiCPUFlags = WelsCPUFeatureDetect(NULL); \ +if ((uiCPUFlags & flag) == 0 && flag != 0) \ + return; \ ENFORCE_NEW_ALIGN_1D (uint8_t, pRefPicture, pRefPictureBuff, ((kiHeight+16)*((((kiWidth+15)>>4)<<4)+16)), 16) \ ENFORCE_NEW_ALIGN_1D (uint16_t, pFeatureOfBlock, pFeatureOfBlockBuff, (kiWidth*kiHeight), 16) \ ENFORCE_NEW_ALIGN_1D (uint16_t, pLocation1, pLocationBuff1, (kiWidth*kiHeight)*2, 16) \ @@ -240,68 +252,70 @@ delete[] pLocationFeature1Buff; \ delete[] pFeaturePointValueList1Buff; \ } -GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_c, 10, 10) -GENERATE_FillQpelLocationByFeatureValue (FillQpelLocationByFeatureValue_ref, FillQpelLocationByFeatureValue_c, 16, 16) -GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_c, 640, 320) -GENERATE_FillQpelLocationByFeatureValue (FillQpelLocationByFeatureValue_ref, FillQpelLocationByFeatureValue_c, 640, 320) +GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_c, 10, 10, 0) +GENERATE_FillQpelLocationByFeatureValue (FillQpelLocationByFeatureValue_ref, FillQpelLocationByFeatureValue_c, 16, 16, 0) +GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_c, 640, 320, 0) +GENERATE_FillQpelLocationByFeatureValue (FillQpelLocationByFeatureValue_ref, FillQpelLocationByFeatureValue_c, 640, 320, 0) #ifdef X86_ASM -GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_sse2, 10, 10) +GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_sse2, 10, 10, WELS_CPU_SSE2) GENERATE_FillQpelLocationByFeatureValue (FillQpelLocationByFeatureValue_ref, FillQpelLocationByFeatureValue_sse2, 16, - 16) -GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_sse2, 640, 320) + 16, WELS_CPU_SSE2) +GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_sse2, 640, 320, WELS_CPU_SSE2) GENERATE_FillQpelLocationByFeatureValue (FillQpelLocationByFeatureValue_ref, FillQpelLocationByFeatureValue_sse2, 640, - 320) + 320, WELS_CPU_SSE2) #endif -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_c, 1, 1) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_c, 1, 1) -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_c, 1, 320) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_c, 1, 320) -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_c, 640, 320) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_c, 640, 320) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_c, 1, 1, 0) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_c, 1, 1, 0) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_c, 1, 320, 0) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_c, 1, 320, 0) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_c, 640, 320, 0) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_c, 640, 320, 0) #ifdef X86_ASM -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_sse2, 6, 6) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_sse2, 6, 6) -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_sse2, 6, 320) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_sse2, 6, 320) -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_sse2, 640, 320) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_sse2, 640, 320) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_sse2, 6, 6, WELS_CPU_SSE2) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_sse2, 6, 6, WELS_CPU_SSE2) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_sse2, 6, 320, WELS_CPU_SSE2) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_sse2, 6, 320, WELS_CPU_SSE2) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_sse2, 640, 320, WELS_CPU_SSE2) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_sse2, 640, 320, WELS_CPU_SSE2) -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_sse4, 8, 2) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_sse4, 16, 2) -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_sse4, 8, 320) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_sse4, 16, 320) -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_sse4, 640, 320) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_sse4, 640, 320) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_sse4, 8, 2, WELS_CPU_SSE41) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_sse4, 16, 2, WELS_CPU_SSE41) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_sse4, 8, 320, WELS_CPU_SSE41) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_sse4, 16, 320, WELS_CPU_SSE41) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_sse4, 640, 320, WELS_CPU_SSE41) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_sse4, 640, 320, WELS_CPU_SSE41) #endif #ifdef HAVE_NEON -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_neon, 1, 1) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_neon, 1, 1) -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_neon, 1, 320) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_neon, 1, 320) -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_neon, 640, 320) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_neon, 640, 320) -GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_neon, 10, 10) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_neon, 1, 1, WELS_CPU_NEON) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_neon, 1, 1, WELS_CPU_NEON) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_neon, 1, 320, WELS_CPU_NEON) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_neon, 1, 320, WELS_CPU_NEON) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_neon, 640, 320, WELS_CPU_NEON) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_neon, 640, 320, WELS_CPU_NEON) +GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_neon, 10, 10, WELS_CPU_NEON) GENERATE_FillQpelLocationByFeatureValue (FillQpelLocationByFeatureValue_ref, FillQpelLocationByFeatureValue_neon, 16, - 16) -GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_neon, 640, 320) + 16, WELS_CPU_NEON) +GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_neon, 640, 320, WELS_CPU_NEON) GENERATE_FillQpelLocationByFeatureValue (FillQpelLocationByFeatureValue_ref, FillQpelLocationByFeatureValue_neon, 640, - 320) + 320, WELS_CPU_NEON) #endif #ifdef HAVE_NEON_AARCH64 -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_AArch64_neon, 1, 1) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_AArch64_neon, 1, 1) -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_AArch64_neon, 1, 320) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_AArch64_neon, 1, 320) -GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_AArch64_neon, 640, 320) -GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_AArch64_neon, 640, 320) -GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_AArch64_neon, 10, 10) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_AArch64_neon, 1, 1, WELS_CPU_NEON) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_AArch64_neon, 1, 1, WELS_CPU_NEON) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_AArch64_neon, 1, 320, WELS_CPU_NEON) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_AArch64_neon, 1, 320, WELS_CPU_NEON) +GENERATE_SumOfFrame (SumOf8x8BlockOfFrame_ref, SumOf8x8BlockOfFrame_AArch64_neon, 640, 320, WELS_CPU_NEON) +GENERATE_SumOfFrame (SumOf16x16BlockOfFrame_ref, SumOf16x16BlockOfFrame_AArch64_neon, 640, 320, WELS_CPU_NEON) +GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_AArch64_neon, 10, 10, + WELS_CPU_NEON) GENERATE_FillQpelLocationByFeatureValue (FillQpelLocationByFeatureValue_ref, - FillQpelLocationByFeatureValue_AArch64_neon, 16, 16) -GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_AArch64_neon, 640, 320) + FillQpelLocationByFeatureValue_AArch64_neon, 16, 16, WELS_CPU_NEON) +GENERATE_InitializeHashforFeature (InitializeHashforFeature_ref, InitializeHashforFeature_AArch64_neon, 640, 320, + WELS_CPU_NEON) GENERATE_FillQpelLocationByFeatureValue (FillQpelLocationByFeatureValue_ref, - FillQpelLocationByFeatureValue_AArch64_neon, 640, 320) + FillQpelLocationByFeatureValue_AArch64_neon, 640, 320, WELS_CPU_NEON) #endif diff --git a/test/processing/ProcessUT_AdaptiveQuantization.cpp b/test/processing/ProcessUT_AdaptiveQuantization.cpp index 5cce613d..024b5891 100644 --- a/test/processing/ProcessUT_AdaptiveQuantization.cpp +++ b/test/processing/ProcessUT_AdaptiveQuantization.cpp @@ -42,8 +42,11 @@ void SampleVariance16x16_ref (uint8_t* pRefY, int32_t iRefStride, uint8_t* pSrcY pMotionTexture->uiTextureIndex = (uiCurSquare >> 8) - (uiCurSum * uiCurSum); } -#define GENERATE_AQTEST(method) \ +#define GENERATE_AQTEST(method, flag) \ TEST (AdaptiveQuantization, method) {\ + uint32_t uiCPUFlags = WelsCPUFeatureDetect(NULL); \ + if ((uiCPUFlags & flag) == 0 && flag != 0) \ + return; \ ENFORCE_STACK_ALIGN_1D (uint8_t, pRefY,32*16,16)\ ENFORCE_STACK_ALIGN_1D (uint8_t, pSrcY,48*16,16)\ SMotionTextureUnit pMotionTexture[2];\ @@ -61,16 +64,16 @@ TEST (AdaptiveQuantization, method) {\ ASSERT_EQ(pMotionTexture[0].uiMotionIndex,pMotionTexture[1].uiMotionIndex);\ } -GENERATE_AQTEST (SampleVariance16x16_c) +GENERATE_AQTEST (SampleVariance16x16_c, 0) #if defined(X86_ASM) -GENERATE_AQTEST (SampleVariance16x16_sse2) +GENERATE_AQTEST (SampleVariance16x16_sse2, WELS_CPU_SSE2) #endif #if defined(HAVE_NEON) -GENERATE_AQTEST (SampleVariance16x16_neon) +GENERATE_AQTEST (SampleVariance16x16_neon, WELS_CPU_NEON) #endif #if defined(HAVE_NEON_AARCH64) -GENERATE_AQTEST (SampleVariance16x16_AArch64_neon) +GENERATE_AQTEST (SampleVariance16x16_AArch64_neon, WELS_CPU_NEON) #endif