Add test for block_error.
Add tests for low bitdepth block_error functions
for AVX2, MSA and NEON.
Change-Id: Iad0145656e0fb5232dbc249532cc021225de74bf
diff --git a/test/error_block_test.cc b/test/error_block_test.cc
index 3664ccf..d98cc09 100644
--- a/test/error_block_test.cc
+++ b/test/error_block_test.cc
@@ -35,9 +35,21 @@
const tran_low_t *dqcoeff,
intptr_t block_size, int64_t *ssz, int bps);
+typedef int64_t (*ErrorBlockFunc8Bits)(const tran_low_t *coeff,
+ const tran_low_t *dqcoeff,
+ intptr_t block_size, int64_t *ssz);
+
typedef ::testing::tuple<ErrorBlockFunc, ErrorBlockFunc, aom_bit_depth_t>
ErrorBlockParam;
+template <ErrorBlockFunc8Bits fn>
+int64_t BlockError8BitWrapper(const tran_low_t *coeff,
+ const tran_low_t *dqcoeff, intptr_t block_size,
+ int64_t *ssz, int bps) {
+ EXPECT_EQ(bps, 8);
+ return fn(coeff, dqcoeff, block_size, ssz);
+}
+
class ErrorBlockTest : public ::testing::TestWithParam<ErrorBlockParam> {
public:
virtual ~ErrorBlockTest() {}
@@ -220,9 +232,9 @@
}
}
-#if (HAVE_SSE2 || HAVE_AVX)
using ::testing::make_tuple;
+#if (HAVE_SSE2 || HAVE_AVX)
INSTANTIATE_TEST_CASE_P(
SSE2, ErrorBlockTest,
::testing::Values(make_tuple(&av1_highbd_block_error_sse2,
@@ -234,8 +246,6 @@
#endif // HAVE_SSE2
#if (HAVE_AVX2)
-using ::testing::make_tuple;
-
INSTANTIATE_TEST_CASE_P(
AVX2, ErrorBlockTest,
::testing::Values(make_tuple(&av1_highbd_block_error_avx2,
@@ -243,6 +253,25 @@
make_tuple(&av1_highbd_block_error_avx2,
&av1_highbd_block_error_c, AOM_BITS_12),
make_tuple(&av1_highbd_block_error_avx2,
- &av1_highbd_block_error_c, AOM_BITS_8)));
+ &av1_highbd_block_error_c, AOM_BITS_8),
+ make_tuple(&BlockError8BitWrapper<av1_block_error_avx2>,
+ &BlockError8BitWrapper<av1_block_error_c>,
+ AOM_BITS_8)));
#endif // HAVE_AVX2
+
+#if (HAVE_MSA)
+INSTANTIATE_TEST_CASE_P(
+ MSA, ErrorBlockTest,
+ ::testing::Values(make_tuple(&BlockError8BitWrapper<av1_block_error_msa>,
+ &BlockError8BitWrapper<av1_block_error_c>,
+ AOM_BITS_8)));
+#endif // HAVE_MSA
+
+#if (HAVE_NEON)
+INSTANTIATE_TEST_CASE_P(
+ NEON, ErrorBlockTest,
+ ::testing::Values(make_tuple(&BlockError8BitWrapper<av1_block_error_neon>,
+ &BlockError8BitWrapper<av1_block_error_c>,
+ AOM_BITS_8)));
+#endif // HAVE_NEON
} // namespace