| 13 | #define MEMORYZEROTEST_NUM 1000 |
| 14 | |
| 15 | TEST (SetMemZeroFunTest, WelsSetMemZero) { |
| 16 | int32_t iLen = 64; |
| 17 | int32_t iCpuCores = 0; |
| 18 | SWelsFuncPtrList sFuncPtrList; |
| 19 | uint32_t uiCpuFlag = WelsCPUFeatureDetect (&iCpuCores); |
| 20 | /* Functionality utilization of CPU instructions dependency */ |
| 21 | sFuncPtrList.pfSetMemZeroSize8 = WelsSetMemZero_c; // confirmed_safe_unsafe_usage |
| 22 | sFuncPtrList.pfSetMemZeroSize64Aligned16 = WelsSetMemZero_c; // confirmed_safe_unsafe_usage |
| 23 | sFuncPtrList.pfSetMemZeroSize64 = WelsSetMemZero_c; // confirmed_safe_unsafe_usage |
| 24 | #if defined(X86_ASM) |
| 25 | if (uiCpuFlag & WELS_CPU_MMXEXT) { |
| 26 | sFuncPtrList.pfSetMemZeroSize8 = WelsSetMemZeroSize8_mmx; // confirmed_safe_unsafe_usage |
| 27 | sFuncPtrList.pfSetMemZeroSize64Aligned16 = WelsSetMemZeroSize64_mmx; // confirmed_safe_unsafe_usage |
| 28 | sFuncPtrList.pfSetMemZeroSize64 = WelsSetMemZeroSize64_mmx; // confirmed_safe_unsafe_usage |
| 29 | } |
| 30 | if (uiCpuFlag & WELS_CPU_SSE2) { |
| 31 | sFuncPtrList.pfSetMemZeroSize64Aligned16 = WelsSetMemZeroAligned64_sse2; // confirmed_safe_unsafe_usage |
| 32 | } |
| 33 | #else |
| 34 | (void) uiCpuFlag; // Avoid warnings if no assembly is enabled |
| 35 | #endif//X86_ASM |
| 36 | |
| 37 | #if defined(HAVE_NEON) |
| 38 | if (uiCpuFlag & WELS_CPU_NEON) { |
| 39 | sFuncPtrList.pfSetMemZeroSize8 = WelsSetMemZero_neon; |
| 40 | sFuncPtrList.pfSetMemZeroSize64Aligned16 = WelsSetMemZero_neon; |
| 41 | sFuncPtrList.pfSetMemZeroSize64 = WelsSetMemZero_neon; |
| 42 | } |
| 43 | #endif |
| 44 | |
| 45 | #if defined(HAVE_NEON_AARCH64) |
| 46 | if (uiCpuFlag & WELS_CPU_NEON) { |
| 47 | sFuncPtrList.pfSetMemZeroSize8 = WelsSetMemZero_AArch64_neon; |
| 48 | sFuncPtrList.pfSetMemZeroSize64Aligned16 = WelsSetMemZero_AArch64_neon; |
| 49 | sFuncPtrList.pfSetMemZeroSize64 = WelsSetMemZero_AArch64_neon; |
| 50 | } |
| 51 | #endif |
| 52 | |
| 53 | ENFORCE_STACK_ALIGN_2D (uint8_t, pInputAlign, 2, 64 * 101, 16) |
| 54 | |
| 55 | for (int32_t k = 0; k < MEMORYZEROTEST_NUM; k++) { |
| 56 | memset (pInputAlign[0], 255, 64 * 101); |
| 57 | memset (pInputAlign[1], 255, 64 * 101); |
| 58 | iLen = 64 * (1 + (rand() % 100)); |
| 59 | WelsSetMemZero_c (pInputAlign[0], iLen); |
| 60 | sFuncPtrList.pfSetMemZeroSize64Aligned16 (pInputAlign[1], iLen); |
| 61 | for (int32_t i = 0 ; i < 64 * 101; i++) { |
| 62 | ASSERT_EQ (pInputAlign[0][i], pInputAlign[1][i]); |
| 63 | } |
| 64 | } |
| 65 | |
| 66 | for (int32_t k = 0; k < MEMORYZEROTEST_NUM; k++) { |
| 67 | memset (pInputAlign[0], 255, 64 * 101); |
| 68 | memset (pInputAlign[1], 255, 64 * 101); |
| 69 | iLen = 64 * (1 + (rand() % 100)); |
| 70 | WelsSetMemZero_c (pInputAlign[0] + 1, iLen); |
| 71 | sFuncPtrList.pfSetMemZeroSize64 (pInputAlign[1] + 1, iLen); |
| 72 | for (int32_t i = 0 ; i < 64 * 101; i++) { |
nothing calls this directly
no test coverage detected