Merge changes I339088b2,Iaade219e,If142afb1,I4257c4b3
* changes: fdct8x8_test: add vpx_idct8x8_64_add_neon in hbd fdct4x4_test: add vpx_idct4x4_16_add_neon in hbd partial_idct_test,NEON: add missing idct variants enable vpx_idct32x32_34_add_neon in hbd builds
This commit is contained in:
commit
80f6b243a7
@ -438,14 +438,12 @@ INSTANTIATE_TEST_CASE_P(C, Trans4x4WHT,
|
|||||||
VPX_BITS_8)));
|
VPX_BITS_8)));
|
||||||
#endif // CONFIG_VP9_HIGHBITDEPTH
|
#endif // CONFIG_VP9_HIGHBITDEPTH
|
||||||
|
|
||||||
#if HAVE_NEON_ASM && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE
|
#if HAVE_NEON && !CONFIG_EMULATE_HARDWARE
|
||||||
INSTANTIATE_TEST_CASE_P(NEON, Trans4x4DCT,
|
INSTANTIATE_TEST_CASE_P(NEON, Trans4x4DCT,
|
||||||
::testing::Values(make_tuple(&vpx_fdct4x4_c,
|
::testing::Values(make_tuple(&vpx_fdct4x4_c,
|
||||||
&vpx_idct4x4_16_add_neon,
|
&vpx_idct4x4_16_add_neon,
|
||||||
0, VPX_BITS_8)));
|
0, VPX_BITS_8)));
|
||||||
#endif // HAVE_NEON_ASM && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE
|
#if !CONFIG_VP9_HIGHBITDEPTH
|
||||||
|
|
||||||
#if HAVE_NEON && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE
|
|
||||||
INSTANTIATE_TEST_CASE_P(
|
INSTANTIATE_TEST_CASE_P(
|
||||||
NEON, Trans4x4HT,
|
NEON, Trans4x4HT,
|
||||||
::testing::Values(
|
::testing::Values(
|
||||||
@ -453,7 +451,8 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
make_tuple(&vp9_fht4x4_c, &vp9_iht4x4_16_add_neon, 1, VPX_BITS_8),
|
make_tuple(&vp9_fht4x4_c, &vp9_iht4x4_16_add_neon, 1, VPX_BITS_8),
|
||||||
make_tuple(&vp9_fht4x4_c, &vp9_iht4x4_16_add_neon, 2, VPX_BITS_8),
|
make_tuple(&vp9_fht4x4_c, &vp9_iht4x4_16_add_neon, 2, VPX_BITS_8),
|
||||||
make_tuple(&vp9_fht4x4_c, &vp9_iht4x4_16_add_neon, 3, VPX_BITS_8)));
|
make_tuple(&vp9_fht4x4_c, &vp9_iht4x4_16_add_neon, 3, VPX_BITS_8)));
|
||||||
#endif // HAVE_NEON && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE
|
#endif // !CONFIG_VP9_HIGHBITDEPTH
|
||||||
|
#endif // HAVE_NEON && !CONFIG_EMULATE_HARDWARE
|
||||||
|
|
||||||
#if HAVE_SSE2 && !CONFIG_EMULATE_HARDWARE
|
#if HAVE_SSE2 && !CONFIG_EMULATE_HARDWARE
|
||||||
INSTANTIATE_TEST_CASE_P(
|
INSTANTIATE_TEST_CASE_P(
|
||||||
|
@ -670,14 +670,17 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
make_tuple(&vp9_fht8x8_c, &vp9_iht8x8_64_add_c, 3, VPX_BITS_8)));
|
make_tuple(&vp9_fht8x8_c, &vp9_iht8x8_64_add_c, 3, VPX_BITS_8)));
|
||||||
#endif // CONFIG_VP9_HIGHBITDEPTH
|
#endif // CONFIG_VP9_HIGHBITDEPTH
|
||||||
|
|
||||||
#if HAVE_NEON_ASM && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE
|
#if HAVE_NEON && !CONFIG_EMULATE_HARDWARE
|
||||||
|
#if CONFIG_VP9_HIGHBITDEPTH
|
||||||
|
INSTANTIATE_TEST_CASE_P(NEON, FwdTrans8x8DCT,
|
||||||
|
::testing::Values(make_tuple(&vpx_fdct8x8_c,
|
||||||
|
&vpx_idct8x8_64_add_neon,
|
||||||
|
0, VPX_BITS_8)));
|
||||||
|
#else // !CONFIG_VP9_HIGHBITDEPTH
|
||||||
INSTANTIATE_TEST_CASE_P(NEON, FwdTrans8x8DCT,
|
INSTANTIATE_TEST_CASE_P(NEON, FwdTrans8x8DCT,
|
||||||
::testing::Values(make_tuple(&vpx_fdct8x8_neon,
|
::testing::Values(make_tuple(&vpx_fdct8x8_neon,
|
||||||
&vpx_idct8x8_64_add_neon,
|
&vpx_idct8x8_64_add_neon,
|
||||||
0, VPX_BITS_8)));
|
0, VPX_BITS_8)));
|
||||||
#endif // HAVE_NEON_ASM && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE
|
|
||||||
|
|
||||||
#if HAVE_NEON && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE
|
|
||||||
INSTANTIATE_TEST_CASE_P(
|
INSTANTIATE_TEST_CASE_P(
|
||||||
NEON, FwdTrans8x8HT,
|
NEON, FwdTrans8x8HT,
|
||||||
::testing::Values(
|
::testing::Values(
|
||||||
@ -685,6 +688,7 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
make_tuple(&vp9_fht8x8_c, &vp9_iht8x8_64_add_neon, 1, VPX_BITS_8),
|
make_tuple(&vp9_fht8x8_c, &vp9_iht8x8_64_add_neon, 1, VPX_BITS_8),
|
||||||
make_tuple(&vp9_fht8x8_c, &vp9_iht8x8_64_add_neon, 2, VPX_BITS_8),
|
make_tuple(&vp9_fht8x8_c, &vp9_iht8x8_64_add_neon, 2, VPX_BITS_8),
|
||||||
make_tuple(&vp9_fht8x8_c, &vp9_iht8x8_64_add_neon, 3, VPX_BITS_8)));
|
make_tuple(&vp9_fht8x8_c, &vp9_iht8x8_64_add_neon, 3, VPX_BITS_8)));
|
||||||
|
#endif // CONFIG_VP9_HIGHBITDEPTH
|
||||||
#endif // HAVE_NEON && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE
|
#endif // HAVE_NEON && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE
|
||||||
|
|
||||||
#if HAVE_SSE2 && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE
|
#if HAVE_SSE2 && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE
|
||||||
|
@ -280,10 +280,18 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
NEON, PartialIDctTest,
|
NEON, PartialIDctTest,
|
||||||
::testing::Values(make_tuple(&vpx_fdct32x32_c, &vpx_idct32x32_1024_add_c,
|
::testing::Values(make_tuple(&vpx_fdct32x32_c, &vpx_idct32x32_1024_add_c,
|
||||||
&vpx_idct32x32_1_add_neon, TX_32X32, 1),
|
&vpx_idct32x32_1_add_neon, TX_32X32, 1),
|
||||||
|
make_tuple(&vpx_fdct32x32_c, &vpx_idct32x32_1024_add_c,
|
||||||
|
&vpx_idct32x32_34_add_neon, TX_32X32, 34),
|
||||||
make_tuple(&vpx_fdct16x16_c, &vpx_idct16x16_256_add_c,
|
make_tuple(&vpx_fdct16x16_c, &vpx_idct16x16_256_add_c,
|
||||||
&vpx_idct16x16_1_add_neon, TX_16X16, 1),
|
&vpx_idct16x16_1_add_neon, TX_16X16, 1),
|
||||||
|
make_tuple(&vpx_fdct8x8_c, &vpx_idct8x8_64_add_c,
|
||||||
|
&vpx_idct8x8_64_add_neon, TX_8X8, 64),
|
||||||
|
make_tuple(&vpx_fdct8x8_c, &vpx_idct8x8_64_add_c,
|
||||||
|
&vpx_idct8x8_12_add_neon, TX_8X8, 12),
|
||||||
make_tuple(&vpx_fdct8x8_c, &vpx_idct8x8_64_add_c,
|
make_tuple(&vpx_fdct8x8_c, &vpx_idct8x8_64_add_c,
|
||||||
&vpx_idct8x8_1_add_neon, TX_8X8, 1),
|
&vpx_idct8x8_1_add_neon, TX_8X8, 1),
|
||||||
|
make_tuple(&vpx_fdct4x4_c, &vpx_idct4x4_16_add_c,
|
||||||
|
&vpx_idct4x4_16_add_neon, TX_4X4, 16),
|
||||||
make_tuple(&vpx_fdct4x4_c, &vpx_idct4x4_16_add_c,
|
make_tuple(&vpx_fdct4x4_c, &vpx_idct4x4_16_add_c,
|
||||||
&vpx_idct4x4_1_add_neon, TX_4X4, 1)));
|
&vpx_idct4x4_1_add_neon, TX_4X4, 1)));
|
||||||
#else // !CONFIG_VP9_HIGHBITDEPTH
|
#else // !CONFIG_VP9_HIGHBITDEPTH
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
// 5 13 20 26
|
// 5 13 20 26
|
||||||
// 6 21 27 33
|
// 6 21 27 33
|
||||||
// 7 24 32
|
// 7 24 32
|
||||||
static void idct32_6_neon(const int16_t *input, int16_t *output) {
|
static void idct32_6_neon(const tran_low_t *input, int16_t *output) {
|
||||||
int16x8_t in0, in1, in2, in3, in4, in5, in6, in7;
|
int16x8_t in0, in1, in2, in3, in4, in5, in6, in7;
|
||||||
int16x8_t s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s1_9, s1_10,
|
int16x8_t s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s1_9, s1_10,
|
||||||
s1_11, s1_12, s1_13, s1_14, s1_15, s1_16, s1_17, s1_18, s1_19, s1_20,
|
s1_11, s1_12, s1_13, s1_14, s1_15, s1_16, s1_17, s1_18, s1_19, s1_20,
|
||||||
@ -46,8 +46,22 @@ static void idct32_6_neon(const int16_t *input, int16_t *output) {
|
|||||||
s2_31;
|
s2_31;
|
||||||
int16x8_t s3_24, s3_25, s3_26, s3_27;
|
int16x8_t s3_24, s3_25, s3_26, s3_27;
|
||||||
|
|
||||||
load_and_transpose_s16_8x8(input, 32, &in0, &in1, &in2, &in3, &in4, &in5,
|
in0 = load_tran_low_to_s16(input);
|
||||||
&in6, &in7);
|
input += 32;
|
||||||
|
in1 = load_tran_low_to_s16(input);
|
||||||
|
input += 32;
|
||||||
|
in2 = load_tran_low_to_s16(input);
|
||||||
|
input += 32;
|
||||||
|
in3 = load_tran_low_to_s16(input);
|
||||||
|
input += 32;
|
||||||
|
in4 = load_tran_low_to_s16(input);
|
||||||
|
input += 32;
|
||||||
|
in5 = load_tran_low_to_s16(input);
|
||||||
|
input += 32;
|
||||||
|
in6 = load_tran_low_to_s16(input);
|
||||||
|
input += 32;
|
||||||
|
in7 = load_tran_low_to_s16(input);
|
||||||
|
transpose_s16_8x8(&in0, &in1, &in2, &in3, &in4, &in5, &in6, &in7);
|
||||||
|
|
||||||
// stage 1
|
// stage 1
|
||||||
// input[1] * cospi_31_64 - input[31] * cospi_1_64 (but input[31] == 0)
|
// input[1] * cospi_31_64 - input[31] * cospi_1_64 (but input[31] == 0)
|
||||||
@ -503,7 +517,7 @@ static void idct32_8_neon(const int16_t *input, uint8_t *output, int stride) {
|
|||||||
output + (24 * stride), stride);
|
output + (24 * stride), stride);
|
||||||
}
|
}
|
||||||
|
|
||||||
void vpx_idct32x32_34_add_neon(const int16_t *input, uint8_t *dest,
|
void vpx_idct32x32_34_add_neon(const tran_low_t *input, uint8_t *dest,
|
||||||
int stride) {
|
int stride) {
|
||||||
int i;
|
int i;
|
||||||
int16_t temp[32 * 8];
|
int16_t temp[32 * 8];
|
||||||
|
@ -213,7 +213,6 @@ endif # HAVE_NEON
|
|||||||
endif # HAVE_NEON_ASM
|
endif # HAVE_NEON_ASM
|
||||||
DSP_SRCS-$(HAVE_NEON) += arm/idct16x16_neon.c
|
DSP_SRCS-$(HAVE_NEON) += arm/idct16x16_neon.c
|
||||||
DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_add_neon.c
|
DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_add_neon.c
|
||||||
DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_34_add_neon.c
|
|
||||||
DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_135_add_neon.c
|
DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_135_add_neon.c
|
||||||
|
|
||||||
DSP_SRCS-$(HAVE_MSA) += mips/inv_txfm_msa.h
|
DSP_SRCS-$(HAVE_MSA) += mips/inv_txfm_msa.h
|
||||||
@ -246,6 +245,7 @@ DSP_SRCS-$(HAVE_NEON) += arm/idct16x16_1_add_neon.c
|
|||||||
endif # HAVE_NEON_ASM
|
endif # HAVE_NEON_ASM
|
||||||
DSP_SRCS-$(HAVE_NEON) += arm/idct_neon.h
|
DSP_SRCS-$(HAVE_NEON) += arm/idct_neon.h
|
||||||
DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_1_add_neon.c
|
DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_1_add_neon.c
|
||||||
|
DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_34_add_neon.c
|
||||||
|
|
||||||
endif # CONFIG_VP9
|
endif # CONFIG_VP9
|
||||||
|
|
||||||
|
@ -696,7 +696,7 @@ if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
|
|||||||
$vpx_idct32x32_135_add_sse2=vpx_idct32x32_1024_add_sse2;
|
$vpx_idct32x32_135_add_sse2=vpx_idct32x32_1024_add_sse2;
|
||||||
|
|
||||||
add_proto qw/void vpx_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
|
add_proto qw/void vpx_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
|
||||||
specialize qw/vpx_idct32x32_34_add sse2/, "$ssse3_x86_64";
|
specialize qw/vpx_idct32x32_34_add neon sse2/, "$ssse3_x86_64";
|
||||||
|
|
||||||
add_proto qw/void vpx_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
|
add_proto qw/void vpx_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
|
||||||
specialize qw/vpx_idct32x32_1_add neon sse2/;
|
specialize qw/vpx_idct32x32_1_add neon sse2/;
|
||||||
|
Loading…
Reference in New Issue
Block a user