src/features/dispatch.c file

Functions

static auto vm_backend_ops_complete(const vm_backend_ops* ops) -> int
auto vm_backend_best(void) -> const vm_backend*
static void vm_cpu_bind_backend(const vm_backend* backend)
static void vm_cpu_bind(const vm_cpu_features_t features)
Binds dispatched function pointers for features.
auto vm_backend_register(const vm_backend* backend) -> int
Register an external backend.
void vm_dispatch_init(void)
One-time runtime dispatch bind (thread-safe).

Variables

static atomic_int dispatch_ready
static atomic_flag dispatch_lock
static const vm_backend* vm_backends
static int vm_backend_count

Defines

#define VECMAT_FN_PTR(name, params, args)
#define VECMAT_REQUIRE_OP(name, params, args)
#define VECMAT_BIND_BACKEND(name, params, args)
#define VECMAT_PICK_SVE2(name)
#define VECMAT_PICK_SVE(name)
#define VECMAT_PICK_NEON(name)
#define VECMAT_PICK_AVX512F(name)
#define VECMAT_PICK_AVX2(name)
#define VECMAT_PICK_AVX(name)
#define VECMAT_PICK(name)
#define VECMAT_BIND(name, params, args)

Function documentation

static void vm_cpu_bind(const vm_cpu_features_t features)

Binds dispatched function pointers for features.

Parameters
features Selected ISA mask.

int vm_backend_register(const vm_backend* backend)

Register an external backend.

Parameters
backend Backend descriptor; must outlive the process.
Returns VM_BACKEND_OK or a negative VM_BACKEND_ERR_* code.

Idempotent for the same backend pointer. Rejects a NULL name, NULL ops, or any NULL slot. Same name with a different pointer is a conflict.