Vecmat
0.2.3
C math and linear algebra library for 2D/3D graphics, physics, and science.
Loading...
Searching...
No Matches
dispatch_list.h
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2025-2026 Igal Alkon
2
// SPDX-FileCopyrightText: 2026 ALKONTEK <git@alkontek.com>
3
// SPDX-License-Identifier: BSD-3-Clause
4
5
#ifndef VECMAT_DISPATCH_LIST_H
6
#define VECMAT_DISPATCH_LIST_H
7
8
/*
9
* Dispatched kernels. X(name, params, args)
10
*
11
* Add a new row here, implement name_scalar in the existing _ptr file (plus a
12
* public `name` trampoline that calls name##_), and name_avx / name_avx2 /
13
* name_avx512 / name_sve / name_sve2. dispatch.c only binds the pointers.
14
*/
15
#define VECMAT_DISPATCH_LIST(X) \
16
X(vec4_add_ptr, \
17
(vector4 *res, const vector4 *a, const vector4 *b), (res, a, b)) \
18
X(vec4_sub_ptr, \
19
(vector4 *res, const vector4 *a, const vector4 *b), (res, a, b)) \
20
X(vec4_mul_ptr, \
21
(vector4 *res, const vector4 *a, const vector4 *b), (res, a, b)) \
22
X(vec4_mul_scalar_ptr, \
23
(vector4 *res, const vector4 *v, vm_float_t s), (res, v, s)) \
24
X(vec4_div_scalar_ptr, \
25
(vector4 *res, const vector4 *v, vm_float_t s), (res, v, s)) \
26
X(vec4_neg_ptr, \
27
(vector4 *res, const vector4 *v), (res, v)) \
28
X(vec4_abs_ptr, \
29
(vector4 *res, const vector4 *v), (res, v)) \
30
X(vec4_normalize_ptr, \
31
(vector4 *res, const vector4 *v), (res, v)) \
32
X(vec4_min_ptr, \
33
(vector4 *res, const vector4 *a, const vector4 *b), (res, a, b)) \
34
X(vec4_max_ptr, \
35
(vector4 *res, const vector4 *a, const vector4 *b), (res, a, b)) \
36
X(vec4_lerp_ptr, \
37
(vector4 *res, const vector4 *a, const vector4 *b, vm_float_t t), (res, a, b, t)) \
38
X(vec4_clamp_ptr, \
39
(vector4 *res, const vector4 *v, const vector4 *min, const vector4 *max), \
40
(res, v, min, max)) \
41
X(vec4_div_ptr, \
42
(vector4 *res, const vector4 *a, const vector4 *b), (res, a, b)) \
43
X(vec4_add_scalar_ptr, \
44
(vector4 *res, const vector4 *v, vm_float_t s), (res, v, s)) \
45
X(vec4_sub_scalar_ptr, \
46
(vector4 *res, const vector4 *v, vm_float_t s), (res, v, s)) \
47
X(vec4_clamp_scalar_ptr, \
48
(vector4 *res, const vector4 *v, vm_float_t min, vm_float_t max), (res, v, min, max)) \
49
X(vec4_saturate_ptr, \
50
(vector4 *res, const vector4 *v), (res, v)) \
51
X(vec4_sign_ptr, \
52
(vector4 *res, const vector4 *v), (res, v)) \
53
X(vec4_floor_ptr, \
54
(vector4 *res, const vector4 *v), (res, v)) \
55
X(vec4_ceil_ptr, \
56
(vector4 *res, const vector4 *v), (res, v)) \
57
X(vec4_round_ptr, \
58
(vector4 *res, const vector4 *v), (res, v)) \
59
X(vec4_fract_ptr, \
60
(vector4 *res, const vector4 *v), (res, v)) \
61
X(vec4_homogenize_ptr, \
62
(vector4 *res, const vector4 *v), (res, v)) \
63
X(mat4_mul_ptr, \
64
(matrix4 *res, const matrix4 *a, const matrix4 *b), (res, a, b)) \
65
X(mat4_transpose_ptr, \
66
(matrix4 *res, const matrix4 *m), (res, m)) \
67
X(mat4_mul_vec4_ptr, \
68
(vector4 *res, const matrix4 *m, const vector4 *v), (res, m, v)) \
69
X(mat4_mul_vec3_ptr, \
70
(vector3 *res, const matrix4 *m, const vector3 *v, vm_float_t w), (res, m, v, w)) \
71
X(quat_mul_ptr, \
72
(quaternion *res, const quaternion *a, const quaternion *b), (res, a, b)) \
73
X(quat_normalize_ptr, \
74
(quaternion *res, const quaternion *q), (res, q))
75
76
#endif
/* VECMAT_DISPATCH_LIST_H */
src
features
dispatch_list.h
Generated by
1.16.1