Commit 0c0fd1e5 authored by Yi Luo's avatar Yi Luo

Lowbd rectangle V/H intra pred sse2 optimization

Function speedup sse2 v. C
Predictor  V_PRED  H_PRED
4x8        ~1.7x   ~1.8x
8x4        ~1.8x   ~2.2x
8x16       ~1.5x   ~1.4x
16x8       ~1.9x   ~1.3x
16x32      ~1.6x   ~1.4x
32x16      ~2.0x   ~1.9x

This patch disables speed tests to save Jenkins build
time. Developer can manually enable them by using,
--gtest_also_run_disabled_test flag in test command line.

Change-Id: I81eaee5e8afc55275c7507c99774f78cc9e49f9a
parent fe809bd1
......@@ -113,29 +113,42 @@ specialize qw/aom_dc_128_predictor_16x16 neon msa sse2/;
specialize qw/aom_dc_128_predictor_16x32 sse2/;
specialize qw/aom_dc_128_predictor_32x16 sse2/;
specialize qw/aom_dc_128_predictor_32x32 msa neon sse2/;
specialize qw/aom_v_predictor_4x4 neon msa sse2/;
specialize qw/aom_v_predictor_4x8 sse2/;
specialize qw/aom_v_predictor_8x4 sse2/;
specialize qw/aom_v_predictor_8x8 neon msa sse2/;
specialize qw/aom_v_predictor_8x16 sse2/;
specialize qw/aom_v_predictor_16x8 sse2/;
specialize qw/aom_v_predictor_16x16 neon msa sse2/;
specialize qw/aom_v_predictor_16x32 sse2/;
specialize qw/aom_v_predictor_32x16 sse2/;
specialize qw/aom_v_predictor_32x32 neon msa sse2/;
specialize qw/aom_h_predictor_4x8 sse2/;
specialize qw/aom_h_predictor_4x4 neon dspr2 msa sse2/;
specialize qw/aom_h_predictor_8x4 sse2/;
specialize qw/aom_h_predictor_8x8 neon dspr2 msa sse2/;
specialize qw/aom_h_predictor_8x16 sse2/;
specialize qw/aom_h_predictor_16x8 sse2/;
specialize qw/aom_h_predictor_16x16 neon dspr2 msa sse2/;
specialize qw/aom_h_predictor_16x32 sse2/;
specialize qw/aom_h_predictor_32x16 sse2/;
specialize qw/aom_h_predictor_32x32 neon msa sse2/;
specialize qw/aom_d63e_predictor_4x4 ssse3/;
specialize qw/aom_h_predictor_4x4 neon dspr2 msa sse2/;
specialize qw/aom_d135_predictor_4x4 neon/;
specialize qw/aom_d153_predictor_4x4 ssse3/;
specialize qw/aom_v_predictor_4x4 neon msa sse2/;
specialize qw/aom_dc_predictor_4x4 dspr2 msa neon sse2/;
specialize qw/aom_dc_predictor_4x8 sse2/;
specialize qw/aom_h_predictor_8x8 neon dspr2 msa sse2/;
specialize qw/aom_d153_predictor_8x8 ssse3/;
specialize qw/aom_v_predictor_8x8 neon msa sse2/;
specialize qw/aom_dc_predictor_8x4 sse2/;
specialize qw/aom_dc_predictor_8x8 dspr2 neon msa sse2/;
specialize qw/aom_dc_predictor_8x16 sse2/;
specialize qw/aom_h_predictor_16x16 neon dspr2 msa sse2/;
specialize qw/aom_d153_predictor_16x16 ssse3/;
specialize qw/aom_v_predictor_16x16 neon msa sse2/;
specialize qw/aom_dc_predictor_16x8 sse2/;
specialize qw/aom_dc_predictor_16x16 dspr2 neon msa sse2/;
specialize qw/aom_dc_predictor_16x32 sse2/;
specialize qw/aom_h_predictor_32x32 neon msa sse2/;
specialize qw/aom_d153_predictor_32x32 ssse3/;
specialize qw/aom_v_predictor_32x32 neon msa sse2/;
specialize qw/aom_dc_predictor_32x16 sse2/;
specialize qw/aom_dc_predictor_32x32 msa neon sse2/;
......
This diff is collapsed.
......@@ -216,8 +216,9 @@ INSTANTIATE_TEST_CASE_P(SSE2_TO_C_12, HighbdIntraPredTest,
#if HAVE_SSE2
const IntraPredFunc<IntraPred> LowbdIntraPredTestVector[] = {
lowbd_intrapred(dc, sse2), lowbd_intrapred(dc_top, sse2),
lowbd_intrapred(dc, sse2), lowbd_intrapred(dc_top, sse2),
lowbd_intrapred(dc_left, sse2), lowbd_intrapred(dc_128, sse2),
lowbd_intrapred(v, sse2), lowbd_intrapred(h, sse2),
};
INSTANTIATE_TEST_CASE_P(SSE2, LowbdIntraPredTest,
......
......@@ -370,7 +370,7 @@ void TestIntraPred32(const char *block_name, AvxPredFunc const *pred_funcs) {
#define INTRA_PRED_TEST(arch, test_func, blk, dc, dc_left, dc_top, dc_128, v, \
h, d45e, d135, d117, d153, d207e, d63e, tm, smooth, \
smooth_v, smooth_h) \
TEST(arch, test_func) { \
TEST(arch, DISABLED_##test_func) { \
static const AvxPredFunc aom_intra_pred[] = { \
dc, dc_left, dc_top, dc_128, v, h, d45e, d135, \
d117, d153, d207e, d63e, tm, smooth, smooth_v, smooth_h \
......@@ -431,8 +431,9 @@ INTRA_PRED_TEST(SSE2_1, TestIntraPred4, "intra4x4", aom_dc_predictor_4x4_sse2,
NULL, NULL, NULL, NULL)
INTRA_PRED_TEST(SSE2_2, TestIntraPred4, "intra4x8", aom_dc_predictor_4x8_sse2,
aom_dc_left_predictor_4x8_sse2, aom_dc_top_predictor_4x8_sse2,
aom_dc_128_predictor_4x8_sse2, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL)
aom_dc_128_predictor_4x8_sse2, aom_v_predictor_4x8_sse2,
aom_h_predictor_4x8_sse2, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL)
#endif // HAVE_SSE2
#if HAVE_SSSE3
......@@ -531,12 +532,14 @@ INTRA_PRED_TEST(SSE2_1, TestIntraPred8, "intra8x8", aom_dc_predictor_8x8_sse2,
NULL, NULL, NULL, NULL)
INTRA_PRED_TEST(SSE2_2, TestIntraPred8, "intra8x4", aom_dc_predictor_8x4_sse2,
aom_dc_left_predictor_8x4_sse2, aom_dc_top_predictor_8x4_sse2,
aom_dc_128_predictor_8x4_sse2, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL)
aom_dc_128_predictor_8x4_sse2, aom_v_predictor_8x4_sse2,
aom_h_predictor_8x4_sse2, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL)
INTRA_PRED_TEST(SSE2_3, TestIntraPred8, "intra8x16", aom_dc_predictor_8x16_sse2,
aom_dc_left_predictor_8x16_sse2, aom_dc_top_predictor_8x16_sse2,
aom_dc_128_predictor_8x16_sse2, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL)
aom_dc_128_predictor_8x16_sse2, aom_v_predictor_8x16_sse2,
aom_h_predictor_8x16_sse2, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL)
#endif // HAVE_SSE2
#if HAVE_SSSE3
......@@ -637,18 +640,14 @@ INTRA_PRED_TEST(SSE2_1, TestIntraPred16, "intra16x16",
INTRA_PRED_TEST(SSE2_2, TestIntraPred16, "intra16x8",
aom_dc_predictor_16x8_sse2, aom_dc_left_predictor_16x8_sse2,
aom_dc_top_predictor_16x8_sse2, aom_dc_128_predictor_16x8_sse2,
// aom_v_predictor_16x8_sse2,
// aom_h_predictor_16x8_sse2,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL)
aom_v_predictor_16x8_sse2, aom_h_predictor_16x8_sse2, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INTRA_PRED_TEST(SSE2_3, TestIntraPred16, "intra16x32",
aom_dc_predictor_16x32_sse2, aom_dc_left_predictor_16x32_sse2,
aom_dc_top_predictor_16x32_sse2,
aom_dc_128_predictor_16x32_sse2,
// aom_v_predictor_16x32_sse2,
// aom_h_predictor_16x32_sse2,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL)
aom_dc_128_predictor_16x32_sse2, aom_v_predictor_16x32_sse2,
aom_h_predictor_16x32_sse2, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL)
#endif // HAVE_SSE2
#if HAVE_SSSE3
......@@ -732,11 +731,9 @@ INTRA_PRED_TEST(SSE2_1, TestIntraPred32, "intra32x32",
INTRA_PRED_TEST(SSE2_2, TestIntraPred32, "intra32x16",
aom_dc_predictor_32x16_sse2, aom_dc_left_predictor_32x16_sse2,
aom_dc_top_predictor_32x16_sse2,
aom_dc_128_predictor_32x16_sse2,
// aom_v_predictor_32x16_sse2,
// aom_h_predictor_32x16_sse2,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL)
aom_dc_128_predictor_32x16_sse2, aom_v_predictor_32x16_sse2,
aom_h_predictor_32x16_sse2, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL)
#endif // HAVE_SSE2
#if HAVE_SSSE3
......@@ -1056,7 +1053,7 @@ void TestHighbdIntraPred32(const char *block_name,
#define HIGHBD_INTRA_PRED_TEST(arch, test_func, block_size, dc, dc_left, \
dc_top, dc_128, v, h, d45e, d135, d117, d153, \
d207e, d63e, tm, smooth, smooth_v, smooth_h) \
TEST(arch, test_func) { \
TEST(arch, DISABLED_##test_func) { \
static const AvxHighbdPredFunc aom_intra_pred[] = { \
dc, dc_left, dc_top, dc_128, v, h, d45e, d135, \
d117, d153, d207e, d63e, tm, smooth, smooth_v, smooth_h \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment