|
13 | 13 | #include <complex> |
14 | 14 | #include <type_traits> |
15 | 15 |
|
| 16 | +#include "../config/xsimd_macros.hpp" |
16 | 17 | #include "../types/xsimd_batch_constant.hpp" |
17 | 18 | #include "../types/xsimd_rvv_register.hpp" |
18 | | -#include "xsimd_constants.hpp" |
| 19 | +#include "./xsimd_constants.hpp" |
19 | 20 |
|
20 | 21 | // This set of macros allows the synthesis of identifiers using a template and |
21 | 22 | // variable macro arguments. A single template can then be used by multiple |
|
24 | 25 | // |
25 | 26 | // First some logic to paste text together... |
26 | 27 | // |
27 | | -#define XSIMD_RVV_JOIN_(x, y) x##y |
28 | | -#define XSIMD_RVV_JOIN(x, y) XSIMD_RVV_JOIN_(x, y) |
29 | | -#define XSIMD_RVV_PREFIX_T(T, S, then) XSIMD_RVV_JOIN(T, then) |
30 | | -#define XSIMD_RVV_PREFIX_S(T, S, then) XSIMD_RVV_JOIN(S, then) |
31 | | -#define XSIMD_RVV_PREFIX_M(T, S, then) XSIMD_RVV_JOIN(m1, then) |
| 28 | +#define XSIMD_RVV_PREFIX_T(T, S, then) XSIMD_CONCAT(T, then) |
| 29 | +#define XSIMD_RVV_PREFIX_S(T, S, then) XSIMD_CONCAT(S, then) |
| 30 | +#define XSIMD_RVV_PREFIX_M(T, S, then) XSIMD_CONCAT(m1, then) |
32 | 31 | #define XSIMD_RVV_PREFIX(T, S, then) then |
33 | 32 | // |
34 | 33 | // XSIMD_RVV_IDENTIFIER accepts type and size parameters, and a template for |
|
39 | 38 | // join two or more variables together. |
40 | 39 | // |
41 | 40 | #define XSIMD_RVV_IDENTIFIER9(T, S, t, ...) t |
42 | | -#define XSIMD_RVV_IDENTIFIER8(T, S, t, p, ...) XSIMD_RVV_JOIN(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER9(T, S, __VA_ARGS__))) |
43 | | -#define XSIMD_RVV_IDENTIFIER7(T, S, t, p, ...) XSIMD_RVV_JOIN(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER8(T, S, __VA_ARGS__))) |
44 | | -#define XSIMD_RVV_IDENTIFIER6(T, S, t, p, ...) XSIMD_RVV_JOIN(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER7(T, S, __VA_ARGS__))) |
45 | | -#define XSIMD_RVV_IDENTIFIER5(T, S, t, p, ...) XSIMD_RVV_JOIN(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER6(T, S, __VA_ARGS__))) |
46 | | -#define XSIMD_RVV_IDENTIFIER4(T, S, t, p, ...) XSIMD_RVV_JOIN(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER5(T, S, __VA_ARGS__))) |
47 | | -#define XSIMD_RVV_IDENTIFIER3(T, S, t, p, ...) XSIMD_RVV_JOIN(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER4(T, S, __VA_ARGS__))) |
48 | | -#define XSIMD_RVV_IDENTIFIER2(T, S, t, p, ...) XSIMD_RVV_JOIN(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER3(T, S, __VA_ARGS__))) |
49 | | -#define XSIMD_RVV_IDENTIFIER1(T, S, t, p, ...) XSIMD_RVV_JOIN(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER2(T, S, __VA_ARGS__))) |
50 | | -#define XSIMD_RVV_IDENTIFIER0(T, S, t, p, ...) XSIMD_RVV_JOIN(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER1(T, S, __VA_ARGS__))) |
| 41 | +#define XSIMD_RVV_IDENTIFIER8(T, S, t, p, ...) XSIMD_CONCAT(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER9(T, S, __VA_ARGS__))) |
| 42 | +#define XSIMD_RVV_IDENTIFIER7(T, S, t, p, ...) XSIMD_CONCAT(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER8(T, S, __VA_ARGS__))) |
| 43 | +#define XSIMD_RVV_IDENTIFIER6(T, S, t, p, ...) XSIMD_CONCAT(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER7(T, S, __VA_ARGS__))) |
| 44 | +#define XSIMD_RVV_IDENTIFIER5(T, S, t, p, ...) XSIMD_CONCAT(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER6(T, S, __VA_ARGS__))) |
| 45 | +#define XSIMD_RVV_IDENTIFIER4(T, S, t, p, ...) XSIMD_CONCAT(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER5(T, S, __VA_ARGS__))) |
| 46 | +#define XSIMD_RVV_IDENTIFIER3(T, S, t, p, ...) XSIMD_CONCAT(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER4(T, S, __VA_ARGS__))) |
| 47 | +#define XSIMD_RVV_IDENTIFIER2(T, S, t, p, ...) XSIMD_CONCAT(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER3(T, S, __VA_ARGS__))) |
| 48 | +#define XSIMD_RVV_IDENTIFIER1(T, S, t, p, ...) XSIMD_CONCAT(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER2(T, S, __VA_ARGS__))) |
| 49 | +#define XSIMD_RVV_IDENTIFIER0(T, S, t, p, ...) XSIMD_CONCAT(t, XSIMD_RVV_PREFIX##p(T, S, XSIMD_RVV_IDENTIFIER1(T, S, __VA_ARGS__))) |
51 | 50 | // |
52 | 51 | // UNBRACKET and REPARSE force the preprocessor to handle expansion in a |
53 | 52 | // specific order. XSIMD_RVV_UNBRACKET strips the parentheses from the template |
|
0 commit comments