diff options
author | Scott LaVarnway <slavarnway@google.com> | 2017-09-06 10:08:03 -0700 |
---|---|---|
committer | Scott LaVarnway <slavarnway@google.com> | 2017-09-11 07:36:24 -0700 |
commit | d6c9bbc2b6f2b15495c3e1fcc86feba23b27dc08 (patch) | |
tree | 27b7cb1c305734c6b16e6459034d60bf00468621 /test | |
parent | fb40b5d7a76978e6fcedf5997fd7a45571aa6b0d (diff) | |
download | libvpx-d6c9bbc2b6f2b15495c3e1fcc86feba23b27dc08.tar libvpx-d6c9bbc2b6f2b15495c3e1fcc86feba23b27dc08.tar.gz libvpx-d6c9bbc2b6f2b15495c3e1fcc86feba23b27dc08.tar.bz2 libvpx-d6c9bbc2b6f2b15495c3e1fcc86feba23b27dc08.zip |
vpxdsp: [x86] add highbd_d207_predictor functions
C vs SSE2 speed gains:
_4x4 : ~2.31x
C vs SSSE3 speed gains:
_8x8 : ~4.73x
_16x16 : ~10.88x
_32x32 : ~4.80x
BUG=webm:1411
Change-Id: I0bac29db261079181ddabc6814bd62c463109caf
Diffstat (limited to 'test')
-rw-r--r-- | test/test_intra_pred_speed.cc | 28 | ||||
-rw-r--r-- | test/vp9_intrapred_test.cc | 38 |
2 files changed, 58 insertions, 8 deletions
diff --git a/test/test_intra_pred_speed.cc b/test/test_intra_pred_speed.cc index cbc1a8c43..b92fc2b68 100644 --- a/test/test_intra_pred_speed.cc +++ b/test/test_intra_pred_speed.cc @@ -480,14 +480,12 @@ HIGHBD_INTRA_PRED_TEST( vpx_highbd_d63_predictor_32x32_c, vpx_highbd_tm_predictor_32x32_c) #if HAVE_SSE2 -HIGHBD_INTRA_PRED_TEST(SSE2, TestHighbdIntraPred4, - vpx_highbd_dc_predictor_4x4_sse2, - vpx_highbd_dc_left_predictor_4x4_sse2, - vpx_highbd_dc_top_predictor_4x4_sse2, - vpx_highbd_dc_128_predictor_4x4_sse2, - vpx_highbd_v_predictor_4x4_sse2, - vpx_highbd_h_predictor_4x4_sse2, NULL, NULL, NULL, NULL, - NULL, NULL, vpx_highbd_tm_predictor_4x4_c) +HIGHBD_INTRA_PRED_TEST( + SSE2, TestHighbdIntraPred4, vpx_highbd_dc_predictor_4x4_sse2, + vpx_highbd_dc_left_predictor_4x4_sse2, vpx_highbd_dc_top_predictor_4x4_sse2, + vpx_highbd_dc_128_predictor_4x4_sse2, vpx_highbd_v_predictor_4x4_sse2, + vpx_highbd_h_predictor_4x4_sse2, NULL, NULL, NULL, NULL, + vpx_highbd_d207_predictor_4x4_sse2, NULL, vpx_highbd_tm_predictor_4x4_c) HIGHBD_INTRA_PRED_TEST(SSE2, TestHighbdIntraPred8, vpx_highbd_dc_predictor_8x8_sse2, @@ -517,6 +515,20 @@ HIGHBD_INTRA_PRED_TEST(SSE2, TestHighbdIntraPred32, NULL, NULL, NULL, vpx_highbd_tm_predictor_32x32_sse2) #endif // HAVE_SSE2 +#if HAVE_SSSE3 +HIGHBD_INTRA_PRED_TEST(SSSE3, TestHighbdIntraPred4, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL) +HIGHBD_INTRA_PRED_TEST(SSSE3, TestHighbdIntraPred8, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, + vpx_highbd_d207_predictor_8x8_ssse3, NULL, NULL) +HIGHBD_INTRA_PRED_TEST(SSSE3, TestHighbdIntraPred16, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, + vpx_highbd_d207_predictor_16x16_ssse3, NULL, NULL) +HIGHBD_INTRA_PRED_TEST(SSSE3, TestHighbdIntraPred32, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, + vpx_highbd_d207_predictor_32x32_ssse3, NULL, NULL) +#endif // HAVE_SSSE3 + #if HAVE_NEON HIGHBD_INTRA_PRED_TEST( NEON, TestHighbdIntraPred4, vpx_highbd_dc_predictor_4x4_neon, diff --git a/test/vp9_intrapred_test.cc b/test/vp9_intrapred_test.cc index 96985bd14..649f5012e 100644 --- a/test/vp9_intrapred_test.cc +++ b/test/vp9_intrapred_test.cc @@ -467,6 +467,38 @@ TEST_P(VP9HighbdIntraPredTest, HighbdIntraPredTests) { RunTest(left_col, above_data, dst, ref_dst); } +#if HAVE_SSSE3 +INSTANTIATE_TEST_CASE_P( + SSSE3_TO_C_8, VP9HighbdIntraPredTest, + ::testing::Values( + HighbdIntraPredParam(&vpx_highbd_d207_predictor_8x8_ssse3, + &vpx_highbd_d207_predictor_8x8_c, 8, 8), + HighbdIntraPredParam(&vpx_highbd_d207_predictor_16x16_ssse3, + &vpx_highbd_d207_predictor_16x16_c, 16, 8), + HighbdIntraPredParam(&vpx_highbd_d207_predictor_32x32_ssse3, + &vpx_highbd_d207_predictor_32x32_c, 32, 8))); + +INSTANTIATE_TEST_CASE_P( + SSSE3_TO_C_10, VP9HighbdIntraPredTest, + ::testing::Values( + HighbdIntraPredParam(&vpx_highbd_d207_predictor_8x8_ssse3, + &vpx_highbd_d207_predictor_8x8_c, 8, 10), + HighbdIntraPredParam(&vpx_highbd_d207_predictor_16x16_ssse3, + &vpx_highbd_d207_predictor_16x16_c, 16, 10), + HighbdIntraPredParam(&vpx_highbd_d207_predictor_32x32_ssse3, + &vpx_highbd_d207_predictor_32x32_c, 32, 10))); + +INSTANTIATE_TEST_CASE_P( + SSSE3_TO_C_12, VP9HighbdIntraPredTest, + ::testing::Values( + HighbdIntraPredParam(&vpx_highbd_d207_predictor_8x8_ssse3, + &vpx_highbd_d207_predictor_8x8_c, 8, 12), + HighbdIntraPredParam(&vpx_highbd_d207_predictor_16x16_ssse3, + &vpx_highbd_d207_predictor_16x16_c, 16, 12), + HighbdIntraPredParam(&vpx_highbd_d207_predictor_32x32_ssse3, + &vpx_highbd_d207_predictor_32x32_c, 32, 12))); +#endif // HAVE_SSSE3 + #if HAVE_SSE2 INSTANTIATE_TEST_CASE_P( SSE2_TO_C_8, VP9HighbdIntraPredTest, @@ -479,6 +511,8 @@ INSTANTIATE_TEST_CASE_P( &vpx_highbd_dc_128_predictor_16x16_c, 16, 8), HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_sse2, &vpx_highbd_dc_128_predictor_32x32_c, 32, 8), + HighbdIntraPredParam(&vpx_highbd_d207_predictor_4x4_sse2, + &vpx_highbd_d207_predictor_4x4_c, 4, 8), HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_sse2, &vpx_highbd_dc_left_predictor_4x4_c, 4, 8), HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_sse2, @@ -539,6 +573,8 @@ INSTANTIATE_TEST_CASE_P( &vpx_highbd_dc_128_predictor_16x16_c, 16, 10), HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_sse2, &vpx_highbd_dc_128_predictor_32x32_c, 32, 10), + HighbdIntraPredParam(&vpx_highbd_d207_predictor_4x4_sse2, + &vpx_highbd_d207_predictor_4x4_c, 4, 10), HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_sse2, &vpx_highbd_dc_left_predictor_4x4_c, 4, 10), HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_sse2, @@ -599,6 +635,8 @@ INSTANTIATE_TEST_CASE_P( &vpx_highbd_dc_128_predictor_16x16_c, 16, 12), HighbdIntraPredParam(&vpx_highbd_dc_128_predictor_32x32_sse2, &vpx_highbd_dc_128_predictor_32x32_c, 32, 12), + HighbdIntraPredParam(&vpx_highbd_d207_predictor_4x4_sse2, + &vpx_highbd_d207_predictor_4x4_c, 4, 12), HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_4x4_sse2, &vpx_highbd_dc_left_predictor_4x4_c, 4, 12), HighbdIntraPredParam(&vpx_highbd_dc_left_predictor_8x8_sse2, |