diff options
Diffstat (limited to 'files/unit_test/cpu_test.cc')
-rw-r--r-- | files/unit_test/cpu_test.cc | 82 |
1 files changed, 62 insertions, 20 deletions
diff --git a/files/unit_test/cpu_test.cc b/files/unit_test/cpu_test.cc index 048ed31a..a7991d2b 100644 --- a/files/unit_test/cpu_test.cc +++ b/files/unit_test/cpu_test.cc @@ -20,39 +20,56 @@ namespace libyuv { TEST_F(LibYUVBaseTest, TestCpuHas) { int cpu_flags = TestCpuFlag(-1); - printf("Cpu Flags %x\n", cpu_flags); + printf("Cpu Flags %d\n", cpu_flags); +#if defined(__arm__) || defined(__aarch64__) int has_arm = TestCpuFlag(kCpuHasARM); - printf("Has ARM %x\n", has_arm); + printf("Has ARM %d\n", has_arm); int has_neon = TestCpuFlag(kCpuHasNEON); - printf("Has NEON %x\n", has_neon); + printf("Has NEON %d\n", has_neon); +#endif int has_x86 = TestCpuFlag(kCpuHasX86); - printf("Has X86 %x\n", has_x86); int has_sse2 = TestCpuFlag(kCpuHasSSE2); - printf("Has SSE2 %x\n", has_sse2); int has_ssse3 = TestCpuFlag(kCpuHasSSSE3); - printf("Has SSSE3 %x\n", has_ssse3); int has_sse41 = TestCpuFlag(kCpuHasSSE41); - printf("Has SSE4.1 %x\n", has_sse41); int has_sse42 = TestCpuFlag(kCpuHasSSE42); - printf("Has SSE4.2 %x\n", has_sse42); int has_avx = TestCpuFlag(kCpuHasAVX); - printf("Has AVX %x\n", has_avx); int has_avx2 = TestCpuFlag(kCpuHasAVX2); - printf("Has AVX2 %x\n", has_avx2); int has_erms = TestCpuFlag(kCpuHasERMS); - printf("Has ERMS %x\n", has_erms); int has_fma3 = TestCpuFlag(kCpuHasFMA3); - printf("Has FMA3 %x\n", has_fma3); - int has_avx3 = TestCpuFlag(kCpuHasAVX3); - printf("Has AVX3 %x\n", has_avx3); int has_f16c = TestCpuFlag(kCpuHasF16C); - printf("Has F16C %x\n", has_f16c); + int has_gfni = TestCpuFlag(kCpuHasGFNI); + int has_avx512bw = TestCpuFlag(kCpuHasAVX512BW); + int has_avx512vl = TestCpuFlag(kCpuHasAVX512VL); + int has_avx512vbmi = TestCpuFlag(kCpuHasAVX512VBMI); + int has_avx512vbmi2 = TestCpuFlag(kCpuHasAVX512VBMI2); + int has_avx512vbitalg = TestCpuFlag(kCpuHasAVX512VBITALG); + int has_avx512vpopcntdq = TestCpuFlag(kCpuHasAVX512VPOPCNTDQ); + printf("Has X86 %d\n", has_x86); + printf("Has SSE2 %d\n", has_sse2); + printf("Has SSSE3 %d\n", has_ssse3); + printf("Has SSE41 %d\n", has_sse41); + printf("Has SSE42 %d\n", has_sse42); + printf("Has AVX %d\n", has_avx); + printf("Has AVX2 %d\n", has_avx2); + printf("Has ERMS %d\n", has_erms); + printf("Has FMA3 %d\n", has_fma3); + printf("Has F16C %d\n", has_f16c); + printf("Has GFNI %d\n", has_gfni); + printf("Has AVX512BW %d\n", has_avx512bw); + printf("Has AVX512VL %d\n", has_avx512vl); + printf("Has AVX512VBMI %d\n", has_avx512vbmi); + printf("Has AVX512VBMI2 %d\n", has_avx512vbmi2); + printf("Has AVX512VBITALG %d\n", has_avx512vbitalg); + printf("Has AVX512VPOPCNTDQ %d\n", has_avx512vpopcntdq); + +#if defined(__mips__) int has_mips = TestCpuFlag(kCpuHasMIPS); - printf("Has MIPS %x\n", has_mips); - int has_dspr2 = TestCpuFlag(kCpuHasDSPR2); - printf("Has DSPR2 %x\n", has_dspr2); + printf("Has MIPS %d\n", has_mips); int has_msa = TestCpuFlag(kCpuHasMSA); - printf("Has MSA %x\n", has_msa); + printf("Has MSA %d\n", has_msa); + int has_mmi = TestCpuFlag(kCpuHasMMI); + printf("Has MMI %d\n", has_mmi); +#endif } TEST_F(LibYUVBaseTest, TestCpuCompilerEnabled) { @@ -83,7 +100,7 @@ TEST_F(LibYUVBaseTest, TestCpuCompilerEnabled) { TEST_F(LibYUVBaseTest, TestCpuId) { int has_x86 = TestCpuFlag(kCpuHasX86); if (has_x86) { - uint32 cpu_info[4]; + int cpu_info[4]; // Vendor ID: // AuthenticAMD AMD processor // CentaurHauls Centaur processor @@ -130,6 +147,8 @@ static int FileExists(const char* file_name) { TEST_F(LibYUVBaseTest, TestLinuxNeon) { if (FileExists("../../unit_test/testdata/arm_v7.txt")) { + printf("Note: testing to load \"../../unit_test/testdata/arm_v7.txt\"\n"); + EXPECT_EQ(0, ArmCpuCaps("../../unit_test/testdata/arm_v7.txt")); EXPECT_EQ(kCpuHasNEON, ArmCpuCaps("../../unit_test/testdata/tegra3.txt")); EXPECT_EQ(kCpuHasNEON, ArmCpuCaps("../../unit_test/testdata/juno.txt")); @@ -141,4 +160,27 @@ TEST_F(LibYUVBaseTest, TestLinuxNeon) { #endif } +TEST_F(LibYUVBaseTest, TestSetCpuFlags) { + // Reset any masked flags that may have been set so auto init is enabled. + MaskCpuFlags(0); + + int original_cpu_flags = TestCpuFlag(-1); + + // Test setting different CPU configurations. + int cpu_flags = kCpuHasARM | kCpuHasNEON | kCpuInitialized; + SetCpuFlags(cpu_flags); + EXPECT_EQ(cpu_flags, TestCpuFlag(-1)); + + cpu_flags = kCpuHasX86 | kCpuInitialized; + SetCpuFlags(cpu_flags); + EXPECT_EQ(cpu_flags, TestCpuFlag(-1)); + + // Test that setting 0 turns auto-init back on. + SetCpuFlags(0); + EXPECT_EQ(original_cpu_flags, TestCpuFlag(-1)); + + // Restore the CPU flag mask. + MaskCpuFlags(benchmark_cpu_info_); +} + } // namespace libyuv |