Skip to content
Snippets Groups Projects
Commit a403b575 authored by Luca Barbato's avatar Luca Barbato
Browse files

mc: Factor out the decl and init macros

They can be used across arches.
parent ac1fa6cb
No related branches found
No related tags found
1 merge request!1755Factor out the 8tap decl and init macros
......@@ -30,36 +30,6 @@
#include "src/mc.h"
#include "src/cpu.h"
#define decl_8tap_gen(decl_name, fn_name, opt) \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_regular, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_regular_smooth, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_regular_sharp, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_smooth_regular, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_smooth, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_smooth_sharp, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_sharp_regular, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_sharp_smooth, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_sharp, opt))
#define decl_8tap_fns(opt) \
decl_8tap_gen(mc, put, opt); \
decl_8tap_gen(mct, prep, opt)
#define init_8tap_gen(name, opt) \
init_##name##_fn(FILTER_2D_8TAP_REGULAR, 8tap_regular, opt); \
init_##name##_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_regular_smooth, opt); \
init_##name##_fn(FILTER_2D_8TAP_REGULAR_SHARP, 8tap_regular_sharp, opt); \
init_##name##_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_smooth_regular, opt); \
init_##name##_fn(FILTER_2D_8TAP_SMOOTH, 8tap_smooth, opt); \
init_##name##_fn(FILTER_2D_8TAP_SMOOTH_SHARP, 8tap_smooth_sharp, opt); \
init_##name##_fn(FILTER_2D_8TAP_SHARP_REGULAR, 8tap_sharp_regular, opt); \
init_##name##_fn(FILTER_2D_8TAP_SHARP_SMOOTH, 8tap_sharp_smooth, opt); \
init_##name##_fn(FILTER_2D_8TAP_SHARP, 8tap_sharp, opt)
#define init_8tap_fns(opt) \
init_8tap_gen(mc, opt); \
init_8tap_gen(mct, opt)
decl_8tap_fns(neon);
decl_8tap_fns(neon_dotprod);
decl_8tap_fns(neon_i8mm);
......
......@@ -113,6 +113,36 @@ void (name)(pixel *dst, ptrdiff_t dst_stride, \
int dst_w, int h, int src_w, int dx, int mx HIGHBD_DECL_SUFFIX)
typedef decl_resize_fn(*resize_fn);
#define decl_8tap_gen(decl_name, fn_name, opt) \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_regular, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_regular_smooth, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_regular_sharp, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_smooth_regular, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_smooth, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_smooth_sharp, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_sharp_regular, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_sharp_smooth, opt)); \
decl_##decl_name##_fn(BF(dav1d_##fn_name##_8tap_sharp, opt))
#define decl_8tap_fns(opt) \
decl_8tap_gen(mc, put, opt); \
decl_8tap_gen(mct, prep, opt)
#define init_8tap_gen(name, opt) \
init_##name##_fn(FILTER_2D_8TAP_REGULAR, 8tap_regular, opt); \
init_##name##_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_regular_smooth, opt); \
init_##name##_fn(FILTER_2D_8TAP_REGULAR_SHARP, 8tap_regular_sharp, opt); \
init_##name##_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_smooth_regular, opt); \
init_##name##_fn(FILTER_2D_8TAP_SMOOTH, 8tap_smooth, opt); \
init_##name##_fn(FILTER_2D_8TAP_SMOOTH_SHARP, 8tap_smooth_sharp, opt); \
init_##name##_fn(FILTER_2D_8TAP_SHARP_REGULAR, 8tap_sharp_regular, opt); \
init_##name##_fn(FILTER_2D_8TAP_SHARP_SMOOTH, 8tap_sharp_smooth, opt); \
init_##name##_fn(FILTER_2D_8TAP_SHARP, 8tap_sharp, opt)
#define init_8tap_fns(opt) \
init_8tap_gen(mc, opt); \
init_8tap_gen(mct, opt)
typedef struct Dav1dMCDSPContext {
mc_fn mc[N_2D_FILTERS];
mc_scaled_fn mc_scaled[N_2D_FILTERS];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment