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 | #include "macros.h" | 2 | #include "macros.h" |
| 3 | #include "decode_mb_aux.h" | 3 | #include "decode_mb_aux.h" |
| 4 | #include "deblocking.h" | 4 | #include "deblocking.h" |
| 5 | #include "cpu.h" | ||
| 5 | using namespace WelsDec; | 6 | using namespace WelsDec; |
| 6 | void IdctResAddPred_ref (uint8_t* pPred, const int32_t kiStride, int16_t* pRs) { | 7 | void IdctResAddPred_ref (uint8_t* pPred, const int32_t kiStride, int16_t* pRs) { |
| 7 | int16_t iSrc[16]; | 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 | TEST(DecoderDecodeMbAux, pred) {\ | 53 | TEST(DecoderDecodeMbAux, pred) {\ |
| 53 | const int32_t kiStride = 32;\ | 54 | const int32_t kiStride = 32;\ |
| 54 | const int iBits = 12;\ | 55 | const int iBits = 12;\ |
| @@ -59,6 +60,9 @@ TEST(DecoderDecodeMbAux, pred) {\ · 4 unmodified lines | |||
| 59 | int16_t iRefRS[16];\ | 60 | int16_t iRefRS[16];\ |
| 60 | uint8_t uiRefPred[16*kiStride];\ | 61 | uint8_t uiRefPred[16*kiStride];\ |
| 61 | int32_t iRunTimes = 1000;\ | 62 | int32_t iRunTimes = 1000;\ |
| 63 | uint32_t uiCPUFlags = WelsCPUFeatureDetect(NULL); \ | ||
| 64 | if ((uiCPUFlags & flag) == 0 && flag != 0) \ | ||
| 65 | return; \ | ||
| 62 | while(iRunTimes--) {\ | 66 | while(iRunTimes--) {\ |
| 63 | for(int i = 0; i < 4; i++)\ | 67 | for(int i = 0; i < 4; i++)\ |
| 64 | for(int j = 0; j < 4; j++)\ | 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 | #if defined(X86_ASM) | 88 | #if defined(X86_ASM) |
| 85 | GENERATE_IDCTRESADDPRED (IdctResAddPred_mmx) | 89 | GENERATE_IDCTRESADDPRED (IdctResAddPred_mmx, WELS_CPU_MMXEXT) |
| 86 | #endif | 90 | #endif |
| 87 | 91 | ||
| 88 | #if defined(HAVE_NEON) | 92 | #if defined(HAVE_NEON) |
| 89 | GENERATE_IDCTRESADDPRED (IdctResAddPred_neon) | 93 | GENERATE_IDCTRESADDPRED (IdctResAddPred_neon, WELS_CPU_NEON) |
| 90 | #endif | 94 | #endif |
| 91 | 95 | ||
| 92 | #if defined(HAVE_NEON_AARCH64) | 96 | #if defined(HAVE_NEON_AARCH64) |
| 93 | GENERATE_IDCTRESADDPRED (IdctResAddPred_AArch64_neon) | 97 | GENERATE_IDCTRESADDPRED (IdctResAddPred_AArch64_neon, WELS_CPU_NEON) |
| 94 | #endif | 98 | #endif |
| 95 | 99 | ||
| 96 | #define GENERATE_SETNONZEROCOUNT(method) \ | 100 | #define GENERATE_SETNONZEROCOUNT(method, flag) \ |
| 97 | TEST(DecoderDecodeMbAux, method) \ | 101 | TEST(DecoderDecodeMbAux, method) \ |
| 98 | {\ | 102 | {\ |
| 103 | uint32_t uiCPUFlags = WelsCPUFeatureDetect(NULL); \ | ||
| 104 | if ((uiCPUFlags & flag) == 0 && flag != 0) \ | ||
| 105 | return; \ | ||
| 99 | int8_t iNonZeroCount[2][24];\ | 106 | int8_t iNonZeroCount[2][24];\ |
| 100 | for(int32_t i = 0; i < 24; i++) {\ | 107 | for(int32_t i = 0; i < 24; i++) {\ |
| 101 | iNonZeroCount[0][i] = iNonZeroCount[1][i] = (rand() % 25);\ | 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 | #if defined(X86_ASM) | 135 | #if defined(X86_ASM) |
| 129 | GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_sse2) | 136 | GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_sse2, WELS_CPU_SSE2) |
| 130 | #endif | 137 | #endif |
| 131 | 138 | ||
| 132 | #if defined(HAVE_NEON) | 139 | #if defined(HAVE_NEON) |
| 133 | GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_neon) | 140 | GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_neon, WELS_CPU_NEON) |
| 134 | #endif | 141 | #endif |
| 135 | 142 | ||
| 136 | #if defined(HAVE_NEON_AARCH64) | 143 | #if defined(HAVE_NEON_AARCH64) |
| 137 | GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_AArch64_neon) | 144 | GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_AArch64_neon, WELS_CPU_NEON) |
| 138 | #endif | 145 | #endif |