65#if ARCH_X86_64 && HAVE_AVX2_EXTERNAL
69extern const int8_t ff_filters_ssse3[3][15][4][32];
70extern 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) \
96void 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) \
99itxfm_func(idct, idct, size, opt); \
100itxfm_func(iadst, idct, size, opt); \
101itxfm_func(idct, iadst, size, opt); \
102itxfm_func(iadst, iadst, size, opt)
126#define lpf_funcs(size1, size2, opt) \
127void ff_vp9_loop_filter_v_##size1##_##size2##_##opt(uint8_t *dst, ptrdiff_t stride, \
128 int E, int I, int H); \
129void ff_vp9_loop_filter_h_##size1##_##size2##_##opt(uint8_t *dst, ptrdiff_t stride, \
152#define ipred_func(size, type, opt) \
153void 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) \
161ipred_func(size, dc, opt); \
162ipred_func(size, dc_left, opt); \
163ipred_func(size, dc_top, opt)
165#define ipred_dir_tm_funcs(size, opt) \
166ipred_func(size, tm, opt); \
167ipred_func(size, dl, opt); \
168ipred_func(size, dr, opt); \
169ipred_func(size, hd, opt); \
170ipred_func(size, hu, opt); \
171ipred_func(size, vl, opt); \
172ipred_func(size, vr, opt)
180#define ipred_dir_tm_h_funcs(size, opt) \
181ipred_dir_tm_funcs(size, opt); \
182ipred_func(size, h, opt)
190#define ipred_all_funcs(size, opt) \
191ipred_dc_funcs(size, opt); \
192ipred_dir_tm_h_funcs(size, opt)
208#undef ipred_dir_tm_h_funcs
209#undef ipred_dir_tm_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
void(* itxfm_add[N_TXFM_SIZES+1][N_TXFM_TYPES])(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
void(* intra_pred[N_TXFM_SIZES][N_INTRA_PRED_MODES])(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
void(* loop_filter_8[3][2])(uint8_t *dst, ptrdiff_t stride, int mb_lim, int lim, int hev_thr)