|
9 | 9 | #ifndef __CLC_MACRO_H
|
10 | 10 | #define __CLC_MACRO_H
|
11 | 11 |
|
12 |
| -#define _CLC_UNARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE) \ |
13 |
| - DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x) { \ |
14 |
| - return (RET_TYPE##2)(FUNCTION(x.x), FUNCTION(x.y)); \ |
15 |
| - } \ |
16 |
| - \ |
| 12 | +#define _CLC_UNARY_VECTORIZE_HAVE2(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE) \ |
17 | 13 | DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x) { \
|
18 | 14 | return (RET_TYPE##3)(FUNCTION(x.x), FUNCTION(x.y), FUNCTION(x.z)); \
|
19 | 15 | } \
|
|
30 | 26 | return (RET_TYPE##16)(FUNCTION(x.lo), FUNCTION(x.hi)); \
|
31 | 27 | }
|
32 | 28 |
|
33 |
| -#define _CLC_BINARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \ |
34 |
| - ARG2_TYPE) \ |
35 |
| - DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ARG2_TYPE##2 y) { \ |
36 |
| - return (RET_TYPE##2)(FUNCTION(x.x, y.x), FUNCTION(x.y, y.y)); \ |
| 29 | +#define _CLC_UNARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE) \ |
| 30 | + DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x) { \ |
| 31 | + return (RET_TYPE##2)(FUNCTION(x.x), FUNCTION(x.y)); \ |
37 | 32 | } \
|
38 |
| - \ |
| 33 | + _CLC_UNARY_VECTORIZE_HAVE2(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE) |
| 34 | + |
| 35 | +#define _CLC_BINARY_VECTORIZE_HAVE2(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \ |
| 36 | + ARG2_TYPE) \ |
39 | 37 | DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x, ARG2_TYPE##3 y) { \
|
40 | 38 | return (RET_TYPE##3)(FUNCTION(x.x, y.x), FUNCTION(x.y, y.y), \
|
41 | 39 | FUNCTION(x.z, y.z)); \
|
|
53 | 51 | return (RET_TYPE##16)(FUNCTION(x.lo, y.lo), FUNCTION(x.hi, y.hi)); \
|
54 | 52 | }
|
55 | 53 |
|
| 54 | +#define _CLC_BINARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \ |
| 55 | + ARG2_TYPE) \ |
| 56 | + DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ARG2_TYPE##2 y) { \ |
| 57 | + return (RET_TYPE##2)(FUNCTION(x.x, y.x), FUNCTION(x.y, y.y)); \ |
| 58 | + } \ |
| 59 | + _CLC_BINARY_VECTORIZE_HAVE2(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \ |
| 60 | + ARG2_TYPE) |
| 61 | + |
56 | 62 | #define _CLC_V_S_V_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \
|
57 | 63 | ARG2_TYPE) \
|
58 | 64 | DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE x, ARG2_TYPE##2 y) { \
|
|
76 | 82 | return (RET_TYPE##16)(FUNCTION(x, y.lo), FUNCTION(x, y.hi)); \
|
77 | 83 | }
|
78 | 84 |
|
79 |
| -#define _CLC_TERNARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \ |
80 |
| - ARG2_TYPE, ARG3_TYPE) \ |
81 |
| - DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ARG2_TYPE##2 y, \ |
82 |
| - ARG3_TYPE##2 z) { \ |
83 |
| - return (RET_TYPE##2)(FUNCTION(x.x, y.x, z.x), FUNCTION(x.y, y.y, z.y)); \ |
84 |
| - } \ |
85 |
| - \ |
| 85 | +#define _CLC_TERNARY_VECTORIZE_HAVE2(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \ |
| 86 | + ARG2_TYPE, ARG3_TYPE) \ |
86 | 87 | DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x, ARG2_TYPE##3 y, \
|
87 | 88 | ARG3_TYPE##3 z) { \
|
88 | 89 | return (RET_TYPE##3)(FUNCTION(x.x, y.x, z.x), FUNCTION(x.y, y.y, z.y), \
|
|
107 | 108 | FUNCTION(x.hi, y.hi, z.hi)); \
|
108 | 109 | }
|
109 | 110 |
|
| 111 | +#define _CLC_TERNARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \ |
| 112 | + ARG2_TYPE, ARG3_TYPE) \ |
| 113 | + DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ARG2_TYPE##2 y, \ |
| 114 | + ARG3_TYPE##2 z) { \ |
| 115 | + return (RET_TYPE##2)(FUNCTION(x.x, y.x, z.x), FUNCTION(x.y, y.y, z.y)); \ |
| 116 | + } \ |
| 117 | + _CLC_TERNARY_VECTORIZE_HAVE2(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \ |
| 118 | + ARG2_TYPE, ARG3_TYPE) |
| 119 | + |
110 | 120 | #define _CLC_V_S_S_V_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \
|
111 | 121 | ARG2_TYPE, ARG3_TYPE) \
|
112 | 122 | DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE x, ARG2_TYPE y, ARG3_TYPE##2 z) { \
|
|
0 commit comments