66 #if ARCH_X86_64 && HAVE_AVX2_EXTERNAL
70 extern const int8_t ff_filters_ssse3[3][15][4][32];
71 extern const int16_t ff_filters_sse2[3][15][8][8];
77 #if ARCH_X86_64 && HAVE_AVX2_EXTERNAL
88 #if ARCH_X86_64 && HAVE_AVX2_EXTERNAL
95 #define itxfm_func(typea, typeb, size, opt) \
96 void ff_vp9_##typea##_##typeb##_##size##x##size##_add_##opt(uint8_t *dst, ptrdiff_t stride, \
97 int16_t *block, int eob)
98 #define itxfm_funcs(size, opt) \
99 itxfm_func(idct, idct, size, opt); \
100 itxfm_func(iadst, idct, size, opt); \
101 itxfm_func(idct, iadst, size, opt); \
102 itxfm_func(iadst, iadst, size, opt)
127 #define lpf_funcs(size1, size2, opt) \
128 void ff_vp9_loop_filter_v_##size1##_##size2##_##opt(uint8_t *dst, ptrdiff_t stride, \
129 int E, int I, int H); \
130 void ff_vp9_loop_filter_h_##size1##_##size2##_##opt(uint8_t *dst, ptrdiff_t stride, \
153 #define ipred_func(size, type, opt) \
154 void ff_vp9_ipred_##type##_##size##x##size##_##opt(uint8_t *dst, ptrdiff_t stride, \
155 const uint8_t *l, const uint8_t *a)
159 #define ipred_dc_funcs(size, opt) \
160 ipred_func(size, dc, opt); \
161 ipred_func(size, dc_left, opt); \
162 ipred_func(size, dc_top, opt)
167 #define ipred_dir_tm_funcs(size, opt) \
168 ipred_func(size, tm, opt); \
169 ipred_func(size, dl, opt); \
170 ipred_func(size, dr, opt); \
171 ipred_func(size, hd, opt); \
172 ipred_func(size, hu, opt); \
173 ipred_func(size, vl, opt); \
174 ipred_func(size, vr, opt)
184 #define ipred_dir_tm_h_funcs(size, opt) \
185 ipred_dir_tm_funcs(size, opt); \
186 ipred_func(size, h, opt)
194 #define ipred_all_funcs(size, opt) \
195 ipred_dc_funcs(size, opt); \
196 ipred_dir_tm_h_funcs(size, opt)
212 #undef ipred_dir_tm_h_funcs
213 #undef ipred_dir_tm_funcs
214 #undef ipred_dc_funcs
223 }
else if (bpp == 12) {
230 #define init_lpf(opt) do { \
231 dsp->loop_filter_16[0] = ff_vp9_loop_filter_h_16_16_##opt; \
232 dsp->loop_filter_16[1] = ff_vp9_loop_filter_v_16_16_##opt; \
233 dsp->loop_filter_mix2[0][0][0] = ff_vp9_loop_filter_h_44_16_##opt; \
234 dsp->loop_filter_mix2[0][0][1] = ff_vp9_loop_filter_v_44_16_##opt; \
235 dsp->loop_filter_mix2[0][1][0] = ff_vp9_loop_filter_h_48_16_##opt; \
236 dsp->loop_filter_mix2[0][1][1] = ff_vp9_loop_filter_v_48_16_##opt; \
237 dsp->loop_filter_mix2[1][0][0] = ff_vp9_loop_filter_h_84_16_##opt; \
238 dsp->loop_filter_mix2[1][0][1] = ff_vp9_loop_filter_v_84_16_##opt; \
239 dsp->loop_filter_mix2[1][1][0] = ff_vp9_loop_filter_h_88_16_##opt; \
240 dsp->loop_filter_mix2[1][1][1] = ff_vp9_loop_filter_v_88_16_##opt; \
243 #define init_ipred(sz, opt, t, e) \
244 dsp->intra_pred[TX_##sz##X##sz][e##_PRED] = ff_vp9_ipred_##t##_##sz##x##sz##_##opt
246 #define ff_vp9_ipred_hd_4x4_ssse3 ff_vp9_ipred_hd_4x4_mmxext
247 #define ff_vp9_ipred_vl_4x4_ssse3 ff_vp9_ipred_vl_4x4_mmxext
248 #define init_dir_tm_ipred(sz, opt) do { \
249 init_ipred(sz, opt, dl, DIAG_DOWN_LEFT); \
250 init_ipred(sz, opt, dr, DIAG_DOWN_RIGHT); \
251 init_ipred(sz, opt, hd, HOR_DOWN); \
252 init_ipred(sz, opt, vl, VERT_LEFT); \
253 init_ipred(sz, opt, hu, HOR_UP); \
254 init_ipred(sz, opt, tm, TM_VP8); \
255 init_ipred(sz, opt, vr, VERT_RIGHT); \
257 #define init_dir_tm_h_ipred(sz, opt) do { \
258 init_dir_tm_ipred(sz, opt); \
259 init_ipred(sz, opt, h, HOR); \
261 #define init_dc_ipred(sz, opt) do { \
262 init_ipred(sz, opt, dc, DC); \
263 init_ipred(sz, opt, dc_left, LEFT_DC); \
264 init_ipred(sz, opt, dc_top, TOP_DC); \
266 #define init_all_ipred(sz, opt) do { \
267 init_dc_ipred(sz, opt); \
268 init_dir_tm_h_ipred(sz, opt); \
377 #if ARCH_X86_64 && HAVE_AVX2_EXTERNAL