summaryrefslogtreecommitdiff
path: root/libavcodec/x86/vp9dsp_init_16bpp_template.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2015-10-06 11:42:03 -0400
committerRonald S. Bultje <rsbultje@gmail.com>2015-10-13 11:05:58 -0400
commitf76423d0975dae4bb2513e6b20be2a7803fd7019 (patch)
tree4c00cf0d8d442551625e1ccb32883728c6750465 /libavcodec/x86/vp9dsp_init_16bpp_template.c
parent6b579cf547a75a0cbda5cb7f10eab9ca07522b0a (diff)
vp9: add x86 simd (sse2/ssse3) for iadst4 10bpp functions.
Diffstat (limited to 'libavcodec/x86/vp9dsp_init_16bpp_template.c')
-rw-r--r--libavcodec/x86/vp9dsp_init_16bpp_template.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/libavcodec/x86/vp9dsp_init_16bpp_template.c b/libavcodec/x86/vp9dsp_init_16bpp_template.c
index 6e12af3d3d..93fc684bf9 100644
--- a/libavcodec/x86/vp9dsp_init_16bpp_template.c
+++ b/libavcodec/x86/vp9dsp_init_16bpp_template.c
@@ -126,8 +126,11 @@ decl_ipred_fns(tm, BPC, mmxext, sse2);
decl_itxfm_func(iwht, iwht, 4, BPC, mmxext);
#if BPC == 10
-decl_itxfm_func(idct, idct, 4, BPC, mmxext);
-decl_itxfm_func(idct, idct, 4, BPC, ssse3);
+decl_itxfm_func(idct, idct, 4, BPC, mmxext);
+decl_itxfm_func(idct, iadst, 4, BPC, sse2);
+decl_itxfm_func(iadst, idct, 4, BPC, sse2);
+decl_itxfm_func(iadst, iadst, 4, BPC, sse2);
+decl_itxfm_funcs(4, BPC, ssse3);
#endif
#endif /* HAVE_YASM */
@@ -169,6 +172,11 @@ av_cold void INIT_FUNC(VP9DSPContext *dsp, int bitexact)
init_itx_func(idx, ADST_DCT, typea, typeb, size, bpp, opt); \
init_itx_func(idx, DCT_ADST, typea, typeb, size, bpp, opt); \
init_itx_func(idx, ADST_ADST, typea, typeb, size, bpp, opt)
+#define init_itx_funcs(idx, size, bpp, opt) \
+ init_itx_func(idx, DCT_DCT, idct, idct, size, bpp, opt); \
+ init_itx_func(idx, ADST_DCT, idct, iadst, size, bpp, opt); \
+ init_itx_func(idx, DCT_ADST, iadst, idct, size, bpp, opt); \
+ init_itx_func(idx, ADST_ADST, iadst, iadst, size, bpp, opt); \
if (EXTERNAL_MMXEXT(cpu_flags)) {
init_ipred_func(tm, TM_VP8, 4, BPC, mmxext);
@@ -185,13 +193,20 @@ av_cold void INIT_FUNC(VP9DSPContext *dsp, int bitexact)
init_subpel3(1, avg, BPC, sse2);
init_lpf_funcs(BPC, sse2);
init_8_16_32_ipred_funcs(tm, TM_VP8, BPC, sse2);
+#if BPC == 10
+ if (!bitexact) {
+ init_itx_func(TX_4X4, ADST_DCT, idct, iadst, 4, 10, sse2);
+ init_itx_func(TX_4X4, DCT_ADST, iadst, idct, 4, 10, sse2);
+ init_itx_func(TX_4X4, ADST_ADST, iadst, iadst, 4, 10, sse2);
+ }
+#endif
}
if (EXTERNAL_SSSE3(cpu_flags)) {
init_lpf_funcs(BPC, ssse3);
#if BPC == 10
if (!bitexact) {
- init_itx_func(TX_4X4, DCT_DCT, idct, idct, 4, 10, ssse3);
+ init_itx_funcs(TX_4X4, 4, BPC, ssse3);
}
#endif
}