7#define VECMAT_FN_PTR(name, params, args) name##_fn name##_ = name##_scalar;
13#if defined(VECMAT_ENABLE_SVE2)
14#define VECMAT_PICK_SVE2(name) \
15 if ((features & VM_CPU_SVE2) != 0) { \
19#define VECMAT_PICK_SVE2(name)
22#if defined(VECMAT_ENABLE_SVE)
23#define VECMAT_PICK_SVE(name) \
24 if ((features & VM_CPU_SVE) != 0) { \
28#define VECMAT_PICK_SVE(name)
31#if defined(VECMAT_ENABLE_AVX512)
32#define VECMAT_PICK_AVX512(name) \
33 if ((features & VM_CPU_AVX512) != 0) { \
37#define VECMAT_PICK_AVX512(name)
40#if defined(VECMAT_ENABLE_AVX2)
41#define VECMAT_PICK_AVX2(name) \
42 if ((features & VM_CPU_AVX2) != 0) { \
46#define VECMAT_PICK_AVX2(name)
49#if defined(VECMAT_ENABLE_AVX)
50#define VECMAT_PICK_AVX(name) \
51 if ((features & VM_CPU_AVX) != 0) { \
55#define VECMAT_PICK_AVX(name)
58#define VECMAT_PICK(name) \
60 name##_fn fn = name##_scalar; \
61 VECMAT_PICK_SVE2(name) \
62 VECMAT_PICK_SVE(name) \
63 VECMAT_PICK_AVX512(name) \
64 VECMAT_PICK_AVX2(name) \
65 VECMAT_PICK_AVX(name) \
72#define VECMAT_BIND(name, params, args) VECMAT_PICK(name);
#define VECMAT_FN_PTR(name, params, args)
static int dispatch_ready
#define VECMAT_BIND(name, params, args)
static void vm_cpu_bind(const vm_cpu_features_t features)
#define VECMAT_DISPATCH_LIST(X)
uint32_t vm_cpu_features_t
vm_cpu_features_t vm_cpu_selected_features(void)