16#ifdef VECMAT_RUNTIME_DISPATCH
17#define VECMAT_SCALAR_API
19#define VECMAT_SCALAR_API static
22#ifdef VECMAT_RUNTIME_DISPATCH
24#define VECMAT_FN_TYPE(name, params, args) typedef void (*name##_fn) params;
28#define VECMAT_FN_PTR_DECL(name, params, args) extern name##_fn name##_;
30#undef VECMAT_FN_PTR_DECL
32#define VECMAT_DECL_SCALAR(name, params, args) void name##_scalar params;
33#define VECMAT_DECL_AVX(name, params, args) void name##_avx params;
34#define VECMAT_DECL_AVX2(name, params, args) void name##_avx2 params;
35#define VECMAT_DECL_AVX512(name, params, args) void name##_avx512 params;
36#define VECMAT_DECL_SVE(name, params, args) void name##_sve params;
37#define VECMAT_DECL_SVE2(name, params, args) void name##_sve2 params;
41#if defined(VECMAT_ENABLE_AVX)
45#if defined(VECMAT_ENABLE_AVX2)
49#if defined(VECMAT_ENABLE_AVX512)
53#if defined(VECMAT_ENABLE_SVE)
57#if defined(VECMAT_ENABLE_SVE2)
61#undef VECMAT_DECL_SCALAR
63#undef VECMAT_DECL_AVX2
64#undef VECMAT_DECL_AVX512
66#undef VECMAT_DECL_SVE2
#define VECMAT_FN_PTR_DECL(name, params, args)
#define VECMAT_DECL_AVX512(name, params, args)
#define VECMAT_DECL_SVE2(name, params, args)
#define VECMAT_FN_TYPE(name, params, args)
#define VECMAT_DECL_SCALAR(name, params, args)
#define VECMAT_DECL_SVE(name, params, args)
#define VECMAT_DECL_AVX(name, params, args)
#define VECMAT_DECL_AVX2(name, params, args)
#define VECMAT_DISPATCH_LIST(X)