This allows running the tests on devices that don't have all the SIMD instruction sets.
Showing the changes to test/decoder/DecUT_IdctResAddPred.cpp (1 of 3 files). Show all
Unified · Split
| @@ -2,6 +2,7 @@ · 1 unmodified line | ||
| 2 | 2 | #include "macros.h" |
| 3 | 3 | #include "decode_mb_aux.h" |
| 4 | 4 | #include "deblocking.h" |
| 5 | +#include "cpu.h" | |
| 5 | 6 | using namespace WelsDec; |
| 6 | 7 | void IdctResAddPred_ref (uint8_t* pPred, const int32_t kiStride, int16_t* pRs) { |
| 7 | 8 | int16_t iSrc[16]; |
| @@ -48,7 +49,7 @@ void SetNonZeroCount_ref (int8_t* pNonZeroCount) { · 40 unmodified lines | ||
| 48 | 49 | } |
| 49 | 50 | } |
| 50 | 51 | |
| 51 | −#define GENERATE_IDCTRESADDPRED(pred) \ | |
| 52 | +#define GENERATE_IDCTRESADDPRED(pred, flag) \ | |
| 52 | 53 | TEST(DecoderDecodeMbAux, pred) {\ |
| 53 | 54 | const int32_t kiStride = 32;\ |
| 54 | 55 | const int iBits = 12;\ |
| @@ -59,6 +60,9 @@ TEST(DecoderDecodeMbAux, pred) {\ · 4 unmodified lines | ||
| 59 | 60 | int16_t iRefRS[16];\ |
| 60 | 61 | uint8_t uiRefPred[16*kiStride];\ |
| 61 | 62 | int32_t iRunTimes = 1000;\ |
| 63 | + uint32_t uiCPUFlags = WelsCPUFeatureDetect(NULL); \ | |
| 64 | + if ((uiCPUFlags & flag) == 0 && flag != 0) \ | |
| 65 | + return; \ | |
| 62 | 66 | while(iRunTimes--) {\ |
| 63 | 67 | for(int i = 0; i < 4; i++)\ |
| 64 | 68 | for(int j = 0; j < 4; j++)\ |
| @@ -80,22 +84,25 @@ TEST(DecoderDecodeMbAux, pred) {\ · 15 unmodified lines | ||
| 80 | 84 | }\ |
| 81 | 85 | } |
| 82 | 86 | |
| 83 | −GENERATE_IDCTRESADDPRED (IdctResAddPred_c) | |
| 87 | +GENERATE_IDCTRESADDPRED (IdctResAddPred_c, 0) | |
| 84 | 88 | #if defined(X86_ASM) |
| 85 | −GENERATE_IDCTRESADDPRED (IdctResAddPred_mmx) | |
| 89 | +GENERATE_IDCTRESADDPRED (IdctResAddPred_mmx, WELS_CPU_MMXEXT) | |
| 86 | 90 | #endif |
| 87 | 91 | |
| 88 | 92 | #if defined(HAVE_NEON) |
| 89 | −GENERATE_IDCTRESADDPRED (IdctResAddPred_neon) | |
| 93 | +GENERATE_IDCTRESADDPRED (IdctResAddPred_neon, WELS_CPU_NEON) | |
| 90 | 94 | #endif |
| 91 | 95 | |
| 92 | 96 | #if defined(HAVE_NEON_AARCH64) |
| 93 | −GENERATE_IDCTRESADDPRED (IdctResAddPred_AArch64_neon) | |
| 97 | +GENERATE_IDCTRESADDPRED (IdctResAddPred_AArch64_neon, WELS_CPU_NEON) | |
| 94 | 98 | #endif |
| 95 | 99 | |
| 96 | −#define GENERATE_SETNONZEROCOUNT(method) \ | |
| 100 | +#define GENERATE_SETNONZEROCOUNT(method, flag) \ | |
| 97 | 101 | TEST(DecoderDecodeMbAux, method) \ |
| 98 | 102 | {\ |
| 103 | + uint32_t uiCPUFlags = WelsCPUFeatureDetect(NULL); \ | |
| 104 | + if ((uiCPUFlags & flag) == 0 && flag != 0) \ | |
| 105 | + return; \ | |
| 99 | 106 | int8_t iNonZeroCount[2][24];\ |
| 100 | 107 | for(int32_t i = 0; i < 24; i++) {\ |
| 101 | 108 | iNonZeroCount[0][i] = iNonZeroCount[1][i] = (rand() % 25);\ |
| @@ -123,16 +130,16 @@ TEST(DecoderDecodeMbAux, method) \ · 21 unmodified lines | ||
| 123 | 130 | }\ |
| 124 | 131 | } |
| 125 | 132 | |
| 126 | −GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_c) | |
| 133 | +GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_c, 0) | |
| 127 | 134 | |
| 128 | 135 | #if defined(X86_ASM) |
| 129 | −GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_sse2) | |
| 136 | +GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_sse2, WELS_CPU_SSE2) | |
| 130 | 137 | #endif |
| 131 | 138 | |
| 132 | 139 | #if defined(HAVE_NEON) |
| 133 | −GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_neon) | |
| 140 | +GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_neon, WELS_CPU_NEON) | |
| 134 | 141 | #endif |
| 135 | 142 | |
| 136 | 143 | #if defined(HAVE_NEON_AARCH64) |
| 137 | −GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_AArch64_neon) | |
| 144 | +GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_AArch64_neon, WELS_CPU_NEON) | |
| 138 | 145 | #endif |