diff options
Diffstat (limited to 'third_party/aom/test/intrapred_test.cc')
-rw-r--r-- | third_party/aom/test/intrapred_test.cc | 164 |
1 files changed, 43 insertions, 121 deletions
diff --git a/third_party/aom/test/intrapred_test.cc b/third_party/aom/test/intrapred_test.cc index 12da1601c..82f191449 100644 --- a/third_party/aom/test/intrapred_test.cc +++ b/third_party/aom/test/intrapred_test.cc @@ -7,19 +7,21 @@ * obtain it at www.aomedia.org/license/software. If the Alliance for Open * Media Patent License 1.0 was not distributed with this source code in the * PATENTS file, you can obtain it at www.aomedia.org/license/patent. -*/ + */ #include <string> #include "third_party/googletest/src/googletest/include/gtest/gtest.h" -#include "./aom_config.h" -#include "./aom_dsp_rtcd.h" +#include "config/aom_config.h" +#include "config/aom_dsp_rtcd.h" + #include "test/acm_random.h" #include "test/clear_system_state.h" #include "test/register_state_check.h" #include "test/util.h" #include "av1/common/blockd.h" +#include "av1/common/common.h" #include "av1/common/pred_common.h" #include "aom_mem/aom_mem.h" @@ -139,33 +141,42 @@ class LowbdIntraPredTest : public AV1IntraPredTest<IntraPred, uint8_t> { } }; +// Suppress an unitialized warning. Once there are implementations to test then +// this can be restored. TEST_P(HighbdIntraPredTest, Bitexact) { - // max block size is 32 - DECLARE_ALIGNED(16, uint16_t, left_col[2 * 32]); - DECLARE_ALIGNED(16, uint16_t, above_data[2 * 32 + 32]); - DECLARE_ALIGNED(16, uint16_t, dst[3 * 32 * 32]); - DECLARE_ALIGNED(16, uint16_t, ref_dst[3 * 32 * 32]); + // max block size is 64 + DECLARE_ALIGNED(16, uint16_t, left_col[2 * 64]); + DECLARE_ALIGNED(16, uint16_t, above_data[2 * 64 + 64]); + DECLARE_ALIGNED(16, uint16_t, dst[3 * 64 * 64]); + DECLARE_ALIGNED(16, uint16_t, ref_dst[3 * 64 * 64]); + av1_zero(left_col); + av1_zero(above_data); RunTest(left_col, above_data, dst, ref_dst); } +// Same issue as above but for arm. +#if !HAVE_NEON TEST_P(LowbdIntraPredTest, Bitexact) { // max block size is 32 DECLARE_ALIGNED(16, uint8_t, left_col[2 * 32]); DECLARE_ALIGNED(16, uint8_t, above_data[2 * 32 + 32]); DECLARE_ALIGNED(16, uint8_t, dst[3 * 32 * 32]); DECLARE_ALIGNED(16, uint8_t, ref_dst[3 * 32 * 32]); + av1_zero(left_col); + av1_zero(above_data); RunTest(left_col, above_data, dst, ref_dst); } +#endif // !HAVE_NEON // ----------------------------------------------------------------------------- // High Bit Depth Tests - #define highbd_entry(type, width, height, opt, bd) \ IntraPredFunc<HighbdIntraPred>( \ &aom_highbd_##type##_predictor_##width##x##height##_##opt, \ &aom_highbd_##type##_predictor_##width##x##height##_c, width, height, \ bd) +#if 0 #define highbd_intrapred(type, opt, bd) \ highbd_entry(type, 4, 4, opt, bd), highbd_entry(type, 4, 8, opt, bd), \ highbd_entry(type, 8, 4, opt, bd), highbd_entry(type, 8, 8, opt, bd), \ @@ -173,111 +184,10 @@ TEST_P(LowbdIntraPredTest, Bitexact) { highbd_entry(type, 16, 16, opt, bd), \ highbd_entry(type, 16, 32, opt, bd), \ highbd_entry(type, 32, 16, opt, bd), highbd_entry(type, 32, 32, opt, bd) +#endif -#if CONFIG_HIGHBITDEPTH -#if HAVE_SSE2 -const IntraPredFunc<HighbdIntraPred> IntraPredTestVector8[] = { - highbd_intrapred(dc, sse2, 8), highbd_intrapred(dc_left, sse2, 8), - highbd_intrapred(dc_top, sse2, 8), highbd_intrapred(dc_128, sse2, 8), - highbd_intrapred(h, sse2, 8), highbd_intrapred(v, sse2, 8), - highbd_entry(d117, 4, 4, sse2, 8), highbd_entry(d135, 4, 4, sse2, 8), - highbd_entry(d153, 4, 4, sse2, 8), highbd_entry(d45e, 4, 4, sse2, 8), - highbd_entry(d45e, 4, 8, sse2, 8), highbd_entry(d45e, 8, 4, sse2, 8), - highbd_entry(d45e, 8, 8, sse2, 8), highbd_entry(d45e, 8, 16, sse2, 8), -}; - -INSTANTIATE_TEST_CASE_P(SSE2_TO_C_8, HighbdIntraPredTest, - ::testing::ValuesIn(IntraPredTestVector8)); - -const IntraPredFunc<HighbdIntraPred> IntraPredTestVector10[] = { - highbd_intrapred(dc, sse2, 10), highbd_intrapred(dc_left, sse2, 10), - highbd_intrapred(dc_top, sse2, 10), highbd_intrapred(dc_128, sse2, 10), - highbd_intrapred(h, sse2, 10), highbd_intrapred(v, sse2, 10), - highbd_entry(d117, 4, 4, sse2, 10), highbd_entry(d135, 4, 4, sse2, 10), - highbd_entry(d153, 4, 4, sse2, 10), highbd_entry(d45e, 4, 4, sse2, 10), - highbd_entry(d45e, 4, 8, sse2, 10), highbd_entry(d45e, 8, 4, sse2, 10), - highbd_entry(d45e, 8, 8, sse2, 10), highbd_entry(d45e, 8, 16, sse2, 10), -}; - -INSTANTIATE_TEST_CASE_P(SSE2_TO_C_10, HighbdIntraPredTest, - ::testing::ValuesIn(IntraPredTestVector10)); - -const IntraPredFunc<HighbdIntraPred> IntraPredTestVector12[] = { - highbd_intrapred(dc, sse2, 12), highbd_intrapred(dc_left, sse2, 12), - highbd_intrapred(dc_top, sse2, 12), highbd_intrapred(dc_128, sse2, 12), - highbd_intrapred(h, sse2, 12), highbd_intrapred(v, sse2, 12), - highbd_entry(d117, 4, 4, sse2, 12), highbd_entry(d135, 4, 4, sse2, 12), - highbd_entry(d153, 4, 4, sse2, 12), highbd_entry(d45e, 4, 4, sse2, 12), - highbd_entry(d45e, 4, 8, sse2, 12), highbd_entry(d45e, 8, 4, sse2, 12), - highbd_entry(d45e, 8, 8, sse2, 12), highbd_entry(d45e, 8, 16, sse2, 12), -}; - -INSTANTIATE_TEST_CASE_P(SSE2_TO_C_12, HighbdIntraPredTest, - ::testing::ValuesIn(IntraPredTestVector12)); - -#endif // HAVE_SSE2 - -#if HAVE_SSSE3 -const IntraPredFunc<HighbdIntraPred> IntraPredTestVectorSsse3_8[] = { - highbd_entry(d117, 8, 8, ssse3, 8), highbd_entry(d117, 16, 16, ssse3, 8), - highbd_entry(d117, 32, 32, ssse3, 8), highbd_entry(d135, 8, 8, ssse3, 8), - highbd_entry(d135, 16, 16, ssse3, 8), highbd_entry(d135, 32, 32, ssse3, 8), - highbd_entry(d153, 8, 8, ssse3, 8), highbd_entry(d153, 16, 16, ssse3, 8), - highbd_entry(d153, 32, 32, ssse3, 8), -}; -INSTANTIATE_TEST_CASE_P(SSSE3_TO_C_8, HighbdIntraPredTest, - ::testing::ValuesIn(IntraPredTestVectorSsse3_8)); - -const IntraPredFunc<HighbdIntraPred> IntraPredTestVectorSsse3_10[] = { - highbd_entry(d117, 8, 8, ssse3, 10), highbd_entry(d117, 16, 16, ssse3, 10), - highbd_entry(d117, 32, 32, ssse3, 10), highbd_entry(d135, 8, 8, ssse3, 10), - highbd_entry(d135, 16, 16, ssse3, 10), highbd_entry(d135, 32, 32, ssse3, 10), - highbd_entry(d153, 8, 8, ssse3, 10), highbd_entry(d153, 16, 16, ssse3, 10), - highbd_entry(d153, 32, 32, ssse3, 10), -}; -INSTANTIATE_TEST_CASE_P(SSSE3_TO_C_10, HighbdIntraPredTest, - ::testing::ValuesIn(IntraPredTestVectorSsse3_10)); - -const IntraPredFunc<HighbdIntraPred> IntraPredTestVectorSsse3_12[] = { - highbd_entry(d117, 8, 8, ssse3, 12), highbd_entry(d117, 16, 16, ssse3, 12), - highbd_entry(d117, 32, 32, ssse3, 12), highbd_entry(d135, 8, 8, ssse3, 12), - highbd_entry(d135, 16, 16, ssse3, 12), highbd_entry(d135, 32, 32, ssse3, 12), - highbd_entry(d153, 8, 8, ssse3, 12), highbd_entry(d153, 16, 16, ssse3, 12), - highbd_entry(d153, 32, 32, ssse3, 12), -}; -INSTANTIATE_TEST_CASE_P(SSSE3_TO_C_12, HighbdIntraPredTest, - ::testing::ValuesIn(IntraPredTestVectorSsse3_12)); -#endif // HAVE_SSSE3 - -#if HAVE_AVX2 -const IntraPredFunc<HighbdIntraPred> IntraPredTestVectorAvx2_8[] = { - highbd_entry(d45e, 16, 8, avx2, 8), highbd_entry(d45e, 16, 16, avx2, 8), - highbd_entry(d45e, 16, 32, avx2, 8), highbd_entry(d45e, 32, 16, avx2, 8), - highbd_entry(d45e, 32, 32, avx2, 8), -}; -INSTANTIATE_TEST_CASE_P(AVX2_TO_C_8, HighbdIntraPredTest, - ::testing::ValuesIn(IntraPredTestVectorAvx2_8)); - -const IntraPredFunc<HighbdIntraPred> IntraPredTestVectorAvx2_10[] = { - highbd_entry(d45e, 16, 8, avx2, 10), highbd_entry(d45e, 16, 16, avx2, 10), - highbd_entry(d45e, 16, 32, avx2, 10), highbd_entry(d45e, 32, 16, avx2, 10), - highbd_entry(d45e, 32, 32, avx2, 10), -}; -INSTANTIATE_TEST_CASE_P(AVX2_TO_C_10, HighbdIntraPredTest, - ::testing::ValuesIn(IntraPredTestVectorAvx2_10)); - -const IntraPredFunc<HighbdIntraPred> IntraPredTestVectorAvx2_12[] = { - highbd_entry(d45e, 16, 8, avx2, 12), highbd_entry(d45e, 16, 16, avx2, 12), - highbd_entry(d45e, 16, 32, avx2, 12), highbd_entry(d45e, 32, 16, avx2, 12), - highbd_entry(d45e, 32, 32, avx2, 12), -}; -INSTANTIATE_TEST_CASE_P(AVX2_TO_C_12, HighbdIntraPredTest, - ::testing::ValuesIn(IntraPredTestVectorAvx2_12)); -#endif // HAVE_AVX2 -#endif // CONFIG_HIGHBITDEPTH - -// ----------------------------------------------------------------------------- -// Low Bit Depth Tests + // --------------------------------------------------------------------------- + // Low Bit Depth Tests #define lowbd_entry(type, width, height, opt) \ IntraPredFunc<IntraPred>(&aom_##type##_predictor_##width##x##height##_##opt, \ @@ -303,6 +213,17 @@ INSTANTIATE_TEST_CASE_P(SSE2, LowbdIntraPredTest, #endif // HAVE_SSE2 +#if HAVE_SSSE3 +const IntraPredFunc<IntraPred> LowbdIntraPredTestVectorSsse3[] = { + lowbd_intrapred(paeth, ssse3), + lowbd_intrapred(smooth, ssse3), +}; + +INSTANTIATE_TEST_CASE_P(SSSE3, LowbdIntraPredTest, + ::testing::ValuesIn(LowbdIntraPredTestVectorSsse3)); + +#endif // HAVE_SSSE3 + #if HAVE_AVX2 const IntraPredFunc<IntraPred> LowbdIntraPredTestVectorAvx2[] = { lowbd_entry(dc, 32, 32, avx2), lowbd_entry(dc_top, 32, 32, avx2), @@ -318,16 +239,17 @@ const IntraPredFunc<IntraPred> LowbdIntraPredTestVectorAvx2[] = { INSTANTIATE_TEST_CASE_P(AVX2, LowbdIntraPredTest, ::testing::ValuesIn(LowbdIntraPredTestVectorAvx2)); -#endif // HAVE_SSE2 +#endif // HAVE_AVX2 -#if HAVE_SSSE3 -const IntraPredFunc<IntraPred> LowbdIntraPredTestVectorSsse3[] = { - lowbd_intrapred(paeth, ssse3), lowbd_intrapred(smooth, ssse3), +#if HAVE_NEON +const IntraPredFunc<HighbdIntraPred> HighbdIntraPredTestVectorNeon[] = { + highbd_entry(dc, 4, 4, neon, 8), highbd_entry(dc, 8, 8, neon, 8), + highbd_entry(dc, 16, 16, neon, 8), highbd_entry(dc, 32, 32, neon, 8), + highbd_entry(dc, 64, 64, neon, 8), }; -INSTANTIATE_TEST_CASE_P(SSSE3, LowbdIntraPredTest, - ::testing::ValuesIn(LowbdIntraPredTestVectorSsse3)); - -#endif // HAVE_SSSE3 +INSTANTIATE_TEST_CASE_P(NEON, HighbdIntraPredTest, + ::testing::ValuesIn(HighbdIntraPredTestVectorNeon)); +#endif // HAVE_NEON } // namespace |