65 #if ARCH_X86_64 && HAVE_AVX2_EXTERNAL
69 extern const int8_t ff_filters_ssse3[3][15][4][32];
70 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)
126 #define lpf_funcs(size1, size2, opt) \
127 void ff_vp9_loop_filter_v_##size1##_##size2##_##opt(uint8_t *dst, ptrdiff_t stride, \
128 int E, int I, int H); \
129 void ff_vp9_loop_filter_h_##size1##_##size2##_##opt(uint8_t *dst, ptrdiff_t stride, \
152 #define ipred_func(size, type, opt) \
153 void ff_vp9_ipred_##type##_##size##x##size##_##opt(uint8_t *dst, ptrdiff_t stride, \
154 const uint8_t *l, const uint8_t *a)
160 #define ipred_dc_funcs(size, opt) \
161 ipred_func(size, dc, opt); \
162 ipred_func(size, dc_left, opt); \
163 ipred_func(size, dc_top, opt)
165 #define ipred_dir_tm_funcs(size, opt) \
166 ipred_func(size, tm, opt); \
167 ipred_func(size, dl, opt); \
168 ipred_func(size, dr, opt); \
169 ipred_func(size, hd, opt); \
170 ipred_func(size, hu, opt); \
171 ipred_func(size, vl, opt); \
172 ipred_func(size, vr, opt)
180 #define ipred_dir_tm_h_funcs(size, opt) \
181 ipred_dir_tm_funcs(size, opt); \
182 ipred_func(size, h, opt)
190 #define ipred_all_funcs(size, opt) \
191 ipred_dc_funcs(size, opt); \
192 ipred_dir_tm_h_funcs(size, opt)
208 #undef ipred_dir_tm_h_funcs
209 #undef ipred_dir_tm_funcs
210 #undef ipred_dc_funcs
219 }
else if (bpp == 12) {
226 #define init_lpf(opt) do { \
227 dsp->loop_filter_16[0] = ff_vp9_loop_filter_h_16_16_##opt; \
228 dsp->loop_filter_16[1] = ff_vp9_loop_filter_v_16_16_##opt; \
229 dsp->loop_filter_mix2[0][0][0] = ff_vp9_loop_filter_h_44_16_##opt; \
230 dsp->loop_filter_mix2[0][0][1] = ff_vp9_loop_filter_v_44_16_##opt; \
231 dsp->loop_filter_mix2[0][1][0] = ff_vp9_loop_filter_h_48_16_##opt; \
232 dsp->loop_filter_mix2[0][1][1] = ff_vp9_loop_filter_v_48_16_##opt; \
233 dsp->loop_filter_mix2[1][0][0] = ff_vp9_loop_filter_h_84_16_##opt; \
234 dsp->loop_filter_mix2[1][0][1] = ff_vp9_loop_filter_v_84_16_##opt; \
235 dsp->loop_filter_mix2[1][1][0] = ff_vp9_loop_filter_h_88_16_##opt; \
236 dsp->loop_filter_mix2[1][1][1] = ff_vp9_loop_filter_v_88_16_##opt; \
239 #define init_ipred(sz, opt, t, e) \
240 dsp->intra_pred[TX_##sz##X##sz][e##_PRED] = ff_vp9_ipred_##t##_##sz##x##sz##_##opt
242 #define ff_vp9_ipred_hd_4x4_ssse3 ff_vp9_ipred_hd_4x4_mmxext
243 #define ff_vp9_ipred_vl_4x4_ssse3 ff_vp9_ipred_vl_4x4_mmxext
244 #define init_dir_tm_ipred(sz, opt) do { \
245 init_ipred(sz, opt, dl, DIAG_DOWN_LEFT); \
246 init_ipred(sz, opt, dr, DIAG_DOWN_RIGHT); \
247 init_ipred(sz, opt, hd, HOR_DOWN); \
248 init_ipred(sz, opt, vl, VERT_LEFT); \
249 init_ipred(sz, opt, hu, HOR_UP); \
250 init_ipred(sz, opt, tm, TM_VP8); \
251 init_ipred(sz, opt, vr, VERT_RIGHT); \
253 #define init_dir_tm_h_ipred(sz, opt) do { \
254 init_dir_tm_ipred(sz, opt); \
255 init_ipred(sz, opt, h, HOR); \
257 #define init_dc_ipred(sz, opt) do { \
258 init_ipred(sz, opt, dc, DC); \
259 init_ipred(sz, opt, dc_left, LEFT_DC); \
260 init_ipred(sz, opt, dc_top, TOP_DC); \
262 #define init_all_ipred(sz, opt) do { \
263 init_dc_ipred(sz, opt); \
264 init_dir_tm_h_ipred(sz, opt); \
369 #if ARCH_X86_64 && HAVE_AVX2_EXTERNAL