| Index: source/libvpx/test/lpf_8_test.cc
|
| diff --git a/source/libvpx/test/lpf_8_test.cc b/source/libvpx/test/lpf_8_test.cc
|
| index c836facb3290069b9dc398cf1721a0a4024ce453..3d21e6c7c4eea217e142950b9e6bd1a548c41d0a 100644
|
| --- a/source/libvpx/test/lpf_8_test.cc
|
| +++ b/source/libvpx/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<loop_op_t, loop_op_t, int> loop8_param_t;
|
| +typedef std::tr1::tuple<loop_op_t, loop_op_t, int, int> loop8_param_t;
|
| typedef std::tr1::tuple<dual_loop_op_t, dual_loop_op_t, int> dualloop8_param_t;
|
|
|
| #if HAVE_SSE2
|
| @@ -144,6 +144,7 @@ class Loop8Test6Param : public ::testing::TestWithParam<loop8_param_t> {
|
| 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<loop8_param_t> {
|
|
|
| protected:
|
| int bit_depth_;
|
| + int count_;
|
| int mask_;
|
| loop_op_t loopfilter_op_;
|
| loop_op_t ref_loopfilter_op_;
|
| @@ -180,11 +182,11 @@ TEST_P(Loop8Test6Param, OperationCheck) {
|
| const int count_test_block = number_of_iterations;
|
| #if CONFIG_VP9_HIGHBITDEPTH
|
| int32_t bd = bit_depth_;
|
| - DECLARE_ALIGNED_ARRAY(16, uint16_t, s, kNumCoeffs);
|
| - DECLARE_ALIGNED_ARRAY(16, uint16_t, ref_s, kNumCoeffs);
|
| + DECLARE_ALIGNED(16, uint16_t, s[kNumCoeffs]);
|
| + DECLARE_ALIGNED(16, uint16_t, ref_s[kNumCoeffs]);
|
| #else
|
| - DECLARE_ALIGNED_ARRAY(8, uint8_t, s, kNumCoeffs);
|
| - DECLARE_ALIGNED_ARRAY(8, uint8_t, ref_s, kNumCoeffs);
|
| + DECLARE_ALIGNED(8, uint8_t, s[kNumCoeffs]);
|
| + DECLARE_ALIGNED(8, uint8_t, ref_s[kNumCoeffs]);
|
| #endif // CONFIG_VP9_HIGHBITDEPTH
|
| int err_count_total = 0;
|
| int first_failure = -1;
|
| @@ -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) {
|
| @@ -266,11 +267,11 @@ TEST_P(Loop8Test6Param, ValueCheck) {
|
| const int count_test_block = number_of_iterations;
|
| #if CONFIG_VP9_HIGHBITDEPTH
|
| const int32_t bd = bit_depth_;
|
| - DECLARE_ALIGNED_ARRAY(16, uint16_t, s, kNumCoeffs);
|
| - DECLARE_ALIGNED_ARRAY(16, uint16_t, ref_s, kNumCoeffs);
|
| + DECLARE_ALIGNED(16, uint16_t, s[kNumCoeffs]);
|
| + DECLARE_ALIGNED(16, uint16_t, ref_s[kNumCoeffs]);
|
| #else
|
| - DECLARE_ALIGNED_ARRAY(8, uint8_t, s, kNumCoeffs);
|
| - DECLARE_ALIGNED_ARRAY(8, uint8_t, ref_s, kNumCoeffs);
|
| + DECLARE_ALIGNED(8, uint8_t, s[kNumCoeffs]);
|
| + DECLARE_ALIGNED(8, uint8_t, ref_s[kNumCoeffs]);
|
| #endif // CONFIG_VP9_HIGHBITDEPTH
|
| int err_count_total = 0;
|
| int first_failure = -1;
|
| @@ -279,8 +280,8 @@ TEST_P(Loop8Test6Param, ValueCheck) {
|
| // function of sharpness_lvl and the loopfilter lvl as:
|
| // block_inside_limit = lvl >> ((sharpness_lvl > 0) + (sharpness_lvl > 4));
|
| // ...
|
| - // vpx_memset(lfi->lfthr[lvl].mblim, (2 * (lvl + 2) + block_inside_limit),
|
| - // SIMD_WIDTH);
|
| + // memset(lfi->lfthr[lvl].mblim, (2 * (lvl + 2) + block_inside_limit),
|
| + // SIMD_WIDTH);
|
| // This means that the largest value for mblim will occur when sharpness_lvl
|
| // is equal to 0, and lvl is equal to its greatest value (MAX_LOOP_FILTER).
|
| // In this case block_inside_limit will be equal to MAX_LOOP_FILTER and
|
| @@ -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];
|
| @@ -338,11 +338,11 @@ TEST_P(Loop8Test9Param, OperationCheck) {
|
| const int count_test_block = number_of_iterations;
|
| #if CONFIG_VP9_HIGHBITDEPTH
|
| const int32_t bd = bit_depth_;
|
| - DECLARE_ALIGNED_ARRAY(16, uint16_t, s, kNumCoeffs);
|
| - DECLARE_ALIGNED_ARRAY(16, uint16_t, ref_s, kNumCoeffs);
|
| + DECLARE_ALIGNED(16, uint16_t, s[kNumCoeffs]);
|
| + DECLARE_ALIGNED(16, uint16_t, ref_s[kNumCoeffs]);
|
| #else
|
| - DECLARE_ALIGNED_ARRAY(8, uint8_t, s, kNumCoeffs);
|
| - DECLARE_ALIGNED_ARRAY(8, uint8_t, ref_s, kNumCoeffs);
|
| + DECLARE_ALIGNED(8, uint8_t, s[kNumCoeffs]);
|
| + DECLARE_ALIGNED(8, uint8_t, ref_s[kNumCoeffs]);
|
| #endif // CONFIG_VP9_HIGHBITDEPTH
|
| int err_count_total = 0;
|
| int first_failure = -1;
|
| @@ -440,11 +440,11 @@ TEST_P(Loop8Test9Param, ValueCheck) {
|
| ACMRandom rnd(ACMRandom::DeterministicSeed());
|
| const int count_test_block = number_of_iterations;
|
| #if CONFIG_VP9_HIGHBITDEPTH
|
| - DECLARE_ALIGNED_ARRAY(16, uint16_t, s, kNumCoeffs);
|
| - DECLARE_ALIGNED_ARRAY(16, uint16_t, ref_s, kNumCoeffs);
|
| + DECLARE_ALIGNED(16, uint16_t, s[kNumCoeffs]);
|
| + DECLARE_ALIGNED(16, uint16_t, ref_s[kNumCoeffs]);
|
| #else
|
| - DECLARE_ALIGNED_ARRAY(8, uint8_t, s, kNumCoeffs);
|
| - DECLARE_ALIGNED_ARRAY(8, uint8_t, ref_s, kNumCoeffs);
|
| + DECLARE_ALIGNED(8, uint8_t, s[kNumCoeffs]);
|
| + DECLARE_ALIGNED(8, uint8_t, ref_s[kNumCoeffs]);
|
| #endif // CONFIG_VP9_HIGHBITDEPTH
|
| int err_count_total = 0;
|
| int first_failure = -1;
|
| @@ -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(
|
|
|