Add checks for cpu features in tests
This allows running the tests on devices that don't have all the SIMD instruction sets.
This commit is contained in:
parent
7f967f6fc4
commit
acafbb442d
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user