aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/x86/vp9dsp_init.c
diff options
context:
space:
mode:
authorHenrik Gramner <gramner@twoorioles.com>2025-05-16 15:18:14 +0200
committerHenrik Gramner <henrik@gramner.com>2025-05-19 15:56:27 +0200
commitfd18ae88ae736b5aabff34e17394fcd103f9e5ad (patch)
tree4263056347dad98d15b0f104fe128a67a69b9128 /libavcodec/x86/vp9dsp_init.c
parentb6803bf10419770737f8dd77497b9afb8ffebcff (diff)
downloadffmpeg-fd18ae88ae736b5aabff34e17394fcd103f9e5ad.tar.gz
avcodec/x86/vp9: Add AVX-512ICL for 16x16 and 32x32 8bpc inverse transforms
Diffstat (limited to 'libavcodec/x86/vp9dsp_init.c')
-rw-r--r--libavcodec/x86/vp9dsp_init.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/libavcodec/x86/vp9dsp_init.c b/libavcodec/x86/vp9dsp_init.c
index 8d11dbc348..4373fa3f04 100644
--- a/libavcodec/x86/vp9dsp_init.c
+++ b/libavcodec/x86/vp9dsp_init.c
@@ -114,7 +114,9 @@ itxfm_func(idct, idct, 32, ssse3);
itxfm_func(idct, idct, 32, avx);
itxfm_func(iwht, iwht, 4, mmx);
itxfm_funcs(16, avx2);
+itxfm_funcs(16, avx512icl);
itxfm_func(idct, idct, 32, avx2);
+itxfm_func(idct, idct, 32, avx512icl);
#undef itxfm_func
#undef itxfm_funcs
@@ -406,6 +408,19 @@ av_cold void ff_vp9dsp_init_x86(VP9DSPContext *dsp, int bpp, int bitexact)
init_ipred(32, avx2, tm, TM_VP8);
}
+#if ARCH_X86_64
+ if (EXTERNAL_AVX512ICL(cpu_flags)) {
+ dsp->itxfm_add[TX_16X16][DCT_DCT] = ff_vp9_idct_idct_16x16_add_avx512icl;
+ dsp->itxfm_add[TX_16X16][ADST_DCT] = ff_vp9_idct_iadst_16x16_add_avx512icl;
+ dsp->itxfm_add[TX_16X16][DCT_ADST] = ff_vp9_iadst_idct_16x16_add_avx512icl;
+ dsp->itxfm_add[TX_16X16][ADST_ADST] = ff_vp9_iadst_iadst_16x16_add_avx512icl;
+ dsp->itxfm_add[TX_32X32][ADST_ADST] =
+ dsp->itxfm_add[TX_32X32][ADST_DCT] =
+ dsp->itxfm_add[TX_32X32][DCT_ADST] =
+ dsp->itxfm_add[TX_32X32][DCT_DCT] = ff_vp9_idct_idct_32x32_add_avx512icl;
+ }
+#endif
+
#undef init_fpel
#undef init_subpel1
#undef init_subpel2