From 4e73e4bf93b52910088619059e6a4d76271e5f3b Mon Sep 17 00:00:00 2001 From: Ed Baker Date: Thu, 2 Apr 2015 13:57:13 -0700 Subject: [PATCH] Test loopfilters with count=2 The following functions use the count parameter to either loop or select dedicated paths: vp9_lpf_horizontal_16_c vp9_lpf_horizontal_16_sse2 vp9_lpf_horizontal_16_avx2 vp9_lpf_horizontal_16_neon vp9_highbd_lpf_horizontal_16_c vp9_highbd_lpf_horizontal_16_sse2 Change-Id: I7abfd2cb30baa292b4ebe11c847968481103c037 --- test/lpf_8_test.cc | 99 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 55 insertions(+), 44 deletions(-) diff --git a/test/lpf_8_test.cc b/test/lpf_8_test.cc index c836fac..2c396ce 100644 --- a/test/lpf_8_test.cc +++ b/test/lpf_8_test.cc @@ -52,7 +52,7 @@ typedef void (*dual_loop_op_t)(uint8_t *s, int p, const uint8_t *blimit0, const uint8_t *thresh1); #endif // CONFIG_VP9_HIGHBITDEPTH -typedef std::tr1::tuple loop8_param_t; +typedef std::tr1::tuple loop8_param_t; typedef std::tr1::tuple dualloop8_param_t; #if HAVE_SSE2 @@ -144,6 +144,7 @@ class Loop8Test6Param : public ::testing::TestWithParam { loopfilter_op_ = GET_PARAM(0); ref_loopfilter_op_ = GET_PARAM(1); bit_depth_ = GET_PARAM(2); + count_ = GET_PARAM(3); mask_ = (1 << bit_depth_) - 1; } @@ -151,6 +152,7 @@ class Loop8Test6Param : public ::testing::TestWithParam { protected: int bit_depth_; + int count_; int mask_; loop_op_t loopfilter_op_; loop_op_t ref_loopfilter_op_; @@ -206,7 +208,6 @@ TEST_P(Loop8Test6Param, OperationCheck) { tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp }; int32_t p = kNumCoeffs/32; - int count = 1; uint16_t tmp_s[kNumCoeffs]; int j = 0; @@ -238,13 +239,13 @@ TEST_P(Loop8Test6Param, OperationCheck) { ref_s[j] = s[j]; } #if CONFIG_VP9_HIGHBITDEPTH - ref_loopfilter_op_(ref_s + 8 + p * 8, p, blimit, limit, thresh, count, bd); + ref_loopfilter_op_(ref_s + 8 + p * 8, p, blimit, limit, thresh, count_, bd); ASM_REGISTER_STATE_CHECK( - loopfilter_op_(s + 8 + p * 8, p, blimit, limit, thresh, count, bd)); + loopfilter_op_(s + 8 + p * 8, p, blimit, limit, thresh, count_, bd)); #else - ref_loopfilter_op_(ref_s+8+p*8, p, blimit, limit, thresh, count); + ref_loopfilter_op_(ref_s+8+p*8, p, blimit, limit, thresh, count_); ASM_REGISTER_STATE_CHECK( - loopfilter_op_(s + 8 + p * 8, p, blimit, limit, thresh, count)); + loopfilter_op_(s + 8 + p * 8, p, blimit, limit, thresh, count_)); #endif // CONFIG_VP9_HIGHBITDEPTH for (int j = 0; j < kNumCoeffs; ++j) { @@ -305,19 +306,18 @@ TEST_P(Loop8Test6Param, ValueCheck) { tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp }; int32_t p = kNumCoeffs / 32; - int count = 1; for (int j = 0; j < kNumCoeffs; ++j) { s[j] = rnd.Rand16() & mask_; ref_s[j] = s[j]; } #if CONFIG_VP9_HIGHBITDEPTH - ref_loopfilter_op_(ref_s + 8 + p * 8, p, blimit, limit, thresh, count, bd); + ref_loopfilter_op_(ref_s + 8 + p * 8, p, blimit, limit, thresh, count_, bd); ASM_REGISTER_STATE_CHECK( - loopfilter_op_(s + 8 + p * 8, p, blimit, limit, thresh, count, bd)); + loopfilter_op_(s + 8 + p * 8, p, blimit, limit, thresh, count_, bd)); #else - ref_loopfilter_op_(ref_s+8+p*8, p, blimit, limit, thresh, count); + ref_loopfilter_op_(ref_s+8+p*8, p, blimit, limit, thresh, count_); ASM_REGISTER_STATE_CHECK( - loopfilter_op_(s + 8 + p * 8, p, blimit, limit, thresh, count)); + loopfilter_op_(s + 8 + p * 8, p, blimit, limit, thresh, count_)); #endif // CONFIG_VP9_HIGHBITDEPTH for (int j = 0; j < kNumCoeffs; ++j) { err_count += ref_s[j] != s[j]; @@ -521,55 +521,62 @@ INSTANTIATE_TEST_CASE_P( SSE2, Loop8Test6Param, ::testing::Values( make_tuple(&vp9_highbd_lpf_horizontal_4_sse2, - &vp9_highbd_lpf_horizontal_4_c, 8), + &vp9_highbd_lpf_horizontal_4_c, 8, 1), make_tuple(&vp9_highbd_lpf_vertical_4_sse2, - &vp9_highbd_lpf_vertical_4_c, 8), + &vp9_highbd_lpf_vertical_4_c, 8, 1), make_tuple(&vp9_highbd_lpf_horizontal_8_sse2, - &vp9_highbd_lpf_horizontal_8_c, 8), + &vp9_highbd_lpf_horizontal_8_c, 8, 1), make_tuple(&vp9_highbd_lpf_horizontal_16_sse2, - &vp9_highbd_lpf_horizontal_16_c, 8), + &vp9_highbd_lpf_horizontal_16_c, 8, 1), + make_tuple(&vp9_highbd_lpf_horizontal_16_sse2, + &vp9_highbd_lpf_horizontal_16_c, 8, 2), make_tuple(&vp9_highbd_lpf_vertical_8_sse2, - &vp9_highbd_lpf_vertical_8_c, 8), + &vp9_highbd_lpf_vertical_8_c, 8, 1), make_tuple(&wrapper_vertical_16_sse2, - &wrapper_vertical_16_c, 8), + &wrapper_vertical_16_c, 8, 1), make_tuple(&vp9_highbd_lpf_horizontal_4_sse2, - &vp9_highbd_lpf_horizontal_4_c, 10), + &vp9_highbd_lpf_horizontal_4_c, 10, 1), make_tuple(&vp9_highbd_lpf_vertical_4_sse2, - &vp9_highbd_lpf_vertical_4_c, 10), + &vp9_highbd_lpf_vertical_4_c, 10, 1), make_tuple(&vp9_highbd_lpf_horizontal_8_sse2, - &vp9_highbd_lpf_horizontal_8_c, 10), + &vp9_highbd_lpf_horizontal_8_c, 10, 1), + make_tuple(&vp9_highbd_lpf_horizontal_16_sse2, + &vp9_highbd_lpf_horizontal_16_c, 10, 1), make_tuple(&vp9_highbd_lpf_horizontal_16_sse2, - &vp9_highbd_lpf_horizontal_16_c, 10), + &vp9_highbd_lpf_horizontal_16_c, 10, 2), make_tuple(&vp9_highbd_lpf_vertical_8_sse2, - &vp9_highbd_lpf_vertical_8_c, 10), + &vp9_highbd_lpf_vertical_8_c, 10, 1), make_tuple(&wrapper_vertical_16_sse2, - &wrapper_vertical_16_c, 10), + &wrapper_vertical_16_c, 10, 1), make_tuple(&vp9_highbd_lpf_horizontal_4_sse2, - &vp9_highbd_lpf_horizontal_4_c, 12), + &vp9_highbd_lpf_horizontal_4_c, 12, 1), make_tuple(&vp9_highbd_lpf_vertical_4_sse2, - &vp9_highbd_lpf_vertical_4_c, 12), + &vp9_highbd_lpf_vertical_4_c, 12, 1), make_tuple(&vp9_highbd_lpf_horizontal_8_sse2, - &vp9_highbd_lpf_horizontal_8_c, 12), + &vp9_highbd_lpf_horizontal_8_c, 12, 1), make_tuple(&vp9_highbd_lpf_horizontal_16_sse2, - &vp9_highbd_lpf_horizontal_16_c, 12), + &vp9_highbd_lpf_horizontal_16_c, 12, 1), + make_tuple(&vp9_highbd_lpf_horizontal_16_sse2, + &vp9_highbd_lpf_horizontal_16_c, 12, 2), make_tuple(&vp9_highbd_lpf_vertical_8_sse2, - &vp9_highbd_lpf_vertical_8_c, 12), + &vp9_highbd_lpf_vertical_8_c, 12, 1), make_tuple(&wrapper_vertical_16_sse2, - &wrapper_vertical_16_c, 12), + &wrapper_vertical_16_c, 12, 1), make_tuple(&wrapper_vertical_16_dual_sse2, - &wrapper_vertical_16_dual_c, 8), + &wrapper_vertical_16_dual_c, 8, 1), make_tuple(&wrapper_vertical_16_dual_sse2, - &wrapper_vertical_16_dual_c, 10), + &wrapper_vertical_16_dual_c, 10, 1), make_tuple(&wrapper_vertical_16_dual_sse2, - &wrapper_vertical_16_dual_c, 12))); + &wrapper_vertical_16_dual_c, 12, 1))); #else INSTANTIATE_TEST_CASE_P( SSE2, Loop8Test6Param, ::testing::Values( - make_tuple(&vp9_lpf_horizontal_8_sse2, &vp9_lpf_horizontal_8_c, 8), - make_tuple(&vp9_lpf_horizontal_16_sse2, &vp9_lpf_horizontal_16_c, 8), - make_tuple(&vp9_lpf_vertical_8_sse2, &vp9_lpf_vertical_8_c, 8), - make_tuple(&wrapper_vertical_16_sse2, &wrapper_vertical_16_c, 8))); + make_tuple(&vp9_lpf_horizontal_8_sse2, &vp9_lpf_horizontal_8_c, 8, 1), + make_tuple(&vp9_lpf_horizontal_16_sse2, &vp9_lpf_horizontal_16_c, 8, 1), + make_tuple(&vp9_lpf_horizontal_16_sse2, &vp9_lpf_horizontal_16_c, 8, 2), + make_tuple(&vp9_lpf_vertical_8_sse2, &vp9_lpf_vertical_8_c, 8, 1), + make_tuple(&wrapper_vertical_16_sse2, &wrapper_vertical_16_c, 8, 1))); #endif // CONFIG_VP9_HIGHBITDEPTH #endif @@ -577,7 +584,9 @@ INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P( AVX2, Loop8Test6Param, ::testing::Values( - make_tuple(&vp9_lpf_horizontal_16_avx2, &vp9_lpf_horizontal_16_c, 8))); + make_tuple(&vp9_lpf_horizontal_16_avx2, &vp9_lpf_horizontal_16_c, 8, 1), + make_tuple(&vp9_lpf_horizontal_16_avx2, &vp9_lpf_horizontal_16_c, 8, + 2))); #endif #if HAVE_SSE2 @@ -635,20 +644,22 @@ INSTANTIATE_TEST_CASE_P( // Using #if inside the macro is unsupported on MSVS but the tests are not // currently built for MSVS with ARM and NEON. make_tuple(&vp9_lpf_horizontal_16_neon, - &vp9_lpf_horizontal_16_c, 8), + &vp9_lpf_horizontal_16_c, 8, 1), + make_tuple(&vp9_lpf_horizontal_16_neon, + &vp9_lpf_horizontal_16_c, 8, 2), make_tuple(&wrapper_vertical_16_neon, - &wrapper_vertical_16_c, 8), + &wrapper_vertical_16_c, 8, 1), make_tuple(&wrapper_vertical_16_dual_neon, - &wrapper_vertical_16_dual_c, 8), + &wrapper_vertical_16_dual_c, 8, 1), make_tuple(&vp9_lpf_horizontal_8_neon, - &vp9_lpf_horizontal_8_c, 8), + &vp9_lpf_horizontal_8_c, 8, 1), make_tuple(&vp9_lpf_vertical_8_neon, - &vp9_lpf_vertical_8_c, 8), + &vp9_lpf_vertical_8_c, 8, 1), #endif // HAVE_NEON_ASM make_tuple(&vp9_lpf_horizontal_4_neon, - &vp9_lpf_horizontal_4_c, 8), + &vp9_lpf_horizontal_4_c, 8, 1), make_tuple(&vp9_lpf_vertical_4_neon, - &vp9_lpf_vertical_4_c, 8))); + &vp9_lpf_vertical_4_c, 8, 1))); INSTANTIATE_TEST_CASE_P( NEON, Loop8Test9Param, ::testing::Values( -- 2.7.4