Fix comp_mask_variance speed tests
Speed tests were run with all possible block sizes, including those
whose wedge parameters are NULL, triggering a segmentation fault. This
was not a problem for regular tests as they are run within a loop that
is simply not entered when there are no wedge paramters. All
comp_mask_variance tests are now run only on relevant block sizes.
Change-Id: I6b801ab26293daac28481596c87677388f450fc3
diff --git a/test/comp_mask_variance_test.cc b/test/comp_mask_variance_test.cc
index bc298cd..a83a885 100644
--- a/test/comp_mask_variance_test.cc
+++ b/test/comp_mask_variance_test.cc
@@ -39,14 +39,13 @@
int width, int height, const uint8_t *ref,
int ref_stride);
-#if HAVE_SSSE3 || HAVE_SSE2 || HAVE_AVX2 || HAVE_NEON
-const BLOCK_SIZE kValidBlockSize[] = {
- BLOCK_4X4, BLOCK_8X8, BLOCK_8X16, BLOCK_8X32, BLOCK_16X8,
- BLOCK_16X16, BLOCK_16X32, BLOCK_32X8, BLOCK_32X16, BLOCK_32X32,
- BLOCK_32X64, BLOCK_64X32, BLOCK_64X64, BLOCK_64X128, BLOCK_128X64,
- BLOCK_128X128, BLOCK_16X64, BLOCK_64X16
+#if HAVE_SSSE3 || HAVE_SSE2 || HAVE_AVX2
+const BLOCK_SIZE kCompMaskPredParams[] = {
+ BLOCK_8X8, BLOCK_8X16, BLOCK_8X32, BLOCK_16X8, BLOCK_16X16,
+ BLOCK_16X32, BLOCK_32X8, BLOCK_32X16, BLOCK_32X32
};
#endif
+
typedef std::tuple<comp_mask_pred_func, BLOCK_SIZE> CompMaskPredParam;
class AV1CompMaskVarianceTest
@@ -170,14 +169,14 @@
INSTANTIATE_TEST_SUITE_P(
SSSE3, AV1CompMaskVarianceTest,
::testing::Combine(::testing::Values(&aom_comp_mask_pred_ssse3),
- ::testing::ValuesIn(kValidBlockSize)));
+ ::testing::ValuesIn(kCompMaskPredParams)));
#endif
#if HAVE_AVX2
INSTANTIATE_TEST_SUITE_P(
AVX2, AV1CompMaskVarianceTest,
::testing::Combine(::testing::Values(&aom_comp_mask_pred_avx2),
- ::testing::ValuesIn(kValidBlockSize)));
+ ::testing::ValuesIn(kCompMaskPredParams)));
#endif
#ifndef aom_comp_mask_pred
@@ -273,18 +272,27 @@
INSTANTIATE_TEST_SUITE_P(
SSSE3, AV1CompMaskUpVarianceTest,
::testing::Combine(::testing::Values(&aom_comp_mask_pred_ssse3),
- ::testing::ValuesIn(kValidBlockSize)));
+ ::testing::ValuesIn(kCompMaskPredParams)));
#endif
#if HAVE_AVX2
INSTANTIATE_TEST_SUITE_P(
AVX2, AV1CompMaskUpVarianceTest,
::testing::Combine(::testing::Values(&aom_comp_mask_pred_avx2),
- ::testing::ValuesIn(kValidBlockSize)));
+ ::testing::ValuesIn(kCompMaskPredParams)));
#endif
#endif // ifndef aom_comp_mask_pred
+#if HAVE_SSSE3 || HAVE_SSE2 || HAVE_AVX2 || HAVE_NEON
+const BLOCK_SIZE kValidBlockSize[] = {
+ BLOCK_4X4, BLOCK_8X8, BLOCK_8X16, BLOCK_8X32, BLOCK_16X8,
+ BLOCK_16X16, BLOCK_16X32, BLOCK_32X8, BLOCK_32X16, BLOCK_32X32,
+ BLOCK_32X64, BLOCK_64X32, BLOCK_64X64, BLOCK_64X128, BLOCK_128X64,
+ BLOCK_128X128, BLOCK_16X64, BLOCK_64X16
+};
+#endif
+
typedef std::tuple<comp_avg_pred_func, BLOCK_SIZE> CompAvgPredParam;
class AV1CompAvgPredTest : public ::testing::TestWithParam<CompAvgPredParam> {
@@ -557,7 +565,7 @@
INSTANTIATE_TEST_SUITE_P(
AVX2, AV1HighbdCompMaskVarianceTest,
::testing::Combine(::testing::Values(&aom_highbd_comp_mask_pred_avx2),
- ::testing::ValuesIn(kValidBlockSize),
+ ::testing::ValuesIn(kCompMaskPredParams),
::testing::Range(8, 13, 2)));
#endif
@@ -565,7 +573,7 @@
INSTANTIATE_TEST_SUITE_P(
SSE2, AV1HighbdCompMaskVarianceTest,
::testing::Combine(::testing::Values(&aom_highbd_comp_mask_pred_sse2),
- ::testing::ValuesIn(kValidBlockSize),
+ ::testing::ValuesIn(kCompMaskPredParams),
::testing::Range(8, 13, 2)));
#endif
@@ -694,7 +702,7 @@
INSTANTIATE_TEST_SUITE_P(
AVX2, AV1HighbdCompMaskUpVarianceTest,
::testing::Combine(::testing::Values(&aom_highbd_comp_mask_pred_avx2),
- ::testing::ValuesIn(kValidBlockSize),
+ ::testing::ValuesIn(kCompMaskPredParams),
::testing::Range(8, 13, 2)));
#endif
@@ -702,7 +710,7 @@
INSTANTIATE_TEST_SUITE_P(
SSE2, AV1HighbdCompMaskUpVarianceTest,
::testing::Combine(::testing::Values(&aom_highbd_comp_mask_pred_sse2),
- ::testing::ValuesIn(kValidBlockSize),
+ ::testing::ValuesIn(kCompMaskPredParams),
::testing::Range(8, 13, 2)));
#endif