|
12 | 12 | #include <clc/internal/clc.h>
|
13 | 13 | #include <clc/utils.h>
|
14 | 14 |
|
15 |
| -#define _CLC_UNARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE) \ |
16 |
| - DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x) { \ |
17 |
| - return (RET_TYPE##2)(FUNCTION(x.s0), FUNCTION(x.s1)); \ |
18 |
| - } \ |
19 |
| - \ |
20 |
| - DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x) { \ |
21 |
| - return (RET_TYPE##3)(FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2)); \ |
22 |
| - } \ |
23 |
| - \ |
24 |
| - DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x) { \ |
25 |
| - return (RET_TYPE##4)(FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), \ |
26 |
| - FUNCTION(x.s3)); \ |
27 |
| - } \ |
28 |
| - \ |
29 |
| - DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x) { \ |
30 |
| - return (RET_TYPE##8)(FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), \ |
31 |
| - FUNCTION(x.s3), FUNCTION(x.s4), FUNCTION(x.s5), \ |
32 |
| - FUNCTION(x.s6), FUNCTION(x.s7)); \ |
33 |
| - } \ |
34 |
| - \ |
35 |
| - DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x) { \ |
36 |
| - return (RET_TYPE##16)( \ |
37 |
| - FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), FUNCTION(x.s3), \ |
38 |
| - FUNCTION(x.s4), FUNCTION(x.s5), FUNCTION(x.s6), FUNCTION(x.s7), \ |
39 |
| - FUNCTION(x.s8), FUNCTION(x.s9), FUNCTION(x.sa), FUNCTION(x.sb), \ |
40 |
| - FUNCTION(x.sc), FUNCTION(x.sd), FUNCTION(x.se), FUNCTION(x.sf)); \ |
41 |
| - } |
42 |
| - |
43 |
| -#define _CLC_BINARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \ |
44 |
| - ARG2_TYPE) \ |
45 |
| - DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ARG2_TYPE##2 y) { \ |
46 |
| - return (RET_TYPE##2)(FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1)); \ |
47 |
| - } \ |
48 |
| - \ |
49 |
| - DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x, ARG2_TYPE##3 y) { \ |
50 |
| - return (RET_TYPE##3)(FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), \ |
51 |
| - FUNCTION(x.s2, y.s2)); \ |
52 |
| - } \ |
53 |
| - \ |
54 |
| - DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x, ARG2_TYPE##4 y) { \ |
55 |
| - return (RET_TYPE##4)(FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), \ |
56 |
| - FUNCTION(x.s2, y.s2), FUNCTION(x.s3, y.s3)); \ |
57 |
| - } \ |
58 |
| - \ |
59 |
| - DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x, ARG2_TYPE##8 y) { \ |
60 |
| - return (RET_TYPE##8)(FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), \ |
61 |
| - FUNCTION(x.s2, y.s2), FUNCTION(x.s3, y.s3), \ |
62 |
| - FUNCTION(x.s4, y.s4), FUNCTION(x.s5, y.s5), \ |
63 |
| - FUNCTION(x.s6, y.s6), FUNCTION(x.s7, y.s7)); \ |
64 |
| - } \ |
65 |
| - \ |
66 |
| - DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x, ARG2_TYPE##16 y) { \ |
67 |
| - return (RET_TYPE##16)( \ |
68 |
| - FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), FUNCTION(x.s2, y.s2), \ |
69 |
| - FUNCTION(x.s3, y.s3), FUNCTION(x.s4, y.s4), FUNCTION(x.s5, y.s5), \ |
70 |
| - FUNCTION(x.s6, y.s6), FUNCTION(x.s7, y.s7), FUNCTION(x.s8, y.s8), \ |
71 |
| - FUNCTION(x.s9, y.s9), FUNCTION(x.sa, y.sa), FUNCTION(x.sb, y.sb), \ |
72 |
| - FUNCTION(x.sc, y.sc), FUNCTION(x.sd, y.sd), FUNCTION(x.se, y.se), \ |
73 |
| - FUNCTION(x.sf, y.sf)); \ |
74 |
| - } |
75 |
| - |
76 |
| -#define _CLC_TERNARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \ |
77 |
| - ARG2_TYPE, ARG3_TYPE) \ |
78 |
| - DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ARG2_TYPE##2 y, \ |
79 |
| - ARG3_TYPE##2 z) { \ |
80 |
| - return (RET_TYPE##2)(FUNCTION(x.s0, y.s0, z.s0), \ |
81 |
| - FUNCTION(x.s1, y.s1, z.s1)); \ |
82 |
| - } \ |
83 |
| - \ |
84 |
| - DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x, ARG2_TYPE##3 y, \ |
85 |
| - ARG3_TYPE##3 z) { \ |
86 |
| - return (RET_TYPE##3)(FUNCTION(x.s0, y.s0, z.s0), \ |
87 |
| - FUNCTION(x.s1, y.s1, z.s1), \ |
88 |
| - FUNCTION(x.s2, y.s2, z.s2)); \ |
89 |
| - } \ |
90 |
| - \ |
91 |
| - DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x, ARG2_TYPE##4 y, \ |
92 |
| - ARG3_TYPE##4 z) { \ |
93 |
| - return (RET_TYPE##4)( \ |
94 |
| - FUNCTION(x.s0, y.s0, z.s0), FUNCTION(x.s1, y.s1, z.s1), \ |
95 |
| - FUNCTION(x.s2, y.s2, z.s2), FUNCTION(x.s3, y.s3, z.s3)); \ |
96 |
| - } \ |
97 |
| - \ |
98 |
| - DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x, ARG2_TYPE##8 y, \ |
99 |
| - ARG3_TYPE##8 z) { \ |
100 |
| - return (RET_TYPE##8)( \ |
101 |
| - FUNCTION(x.s0, y.s0, z.s0), FUNCTION(x.s1, y.s1, z.s1), \ |
102 |
| - FUNCTION(x.s2, y.s2, z.s2), FUNCTION(x.s3, y.s3, z.s3), \ |
103 |
| - FUNCTION(x.s4, y.s4, z.s4), FUNCTION(x.s5, y.s5, z.s5), \ |
104 |
| - FUNCTION(x.s6, y.s6, z.s6), FUNCTION(x.s7, y.s7, z.s7)); \ |
105 |
| - } \ |
106 |
| - \ |
107 |
| - DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x, ARG2_TYPE##16 y, \ |
108 |
| - ARG3_TYPE##16 z) { \ |
109 |
| - return (RET_TYPE##16)( \ |
110 |
| - FUNCTION(x.s0, y.s0, z.s0), FUNCTION(x.s1, y.s1, z.s1), \ |
111 |
| - FUNCTION(x.s2, y.s2, z.s2), FUNCTION(x.s3, y.s3, z.s3), \ |
112 |
| - FUNCTION(x.s4, y.s4, z.s4), FUNCTION(x.s5, y.s5, z.s5), \ |
113 |
| - FUNCTION(x.s6, y.s6, z.s6), FUNCTION(x.s7, y.s7, z.s7), \ |
114 |
| - FUNCTION(x.s8, y.s8, z.s8), FUNCTION(x.s9, y.s9, z.s9), \ |
115 |
| - FUNCTION(x.sa, y.sa, z.sa), FUNCTION(x.sb, y.sb, z.sb), \ |
116 |
| - FUNCTION(x.sc, y.sc, z.sc), FUNCTION(x.sd, y.sd, z.sd), \ |
117 |
| - FUNCTION(x.se, y.se, z.se), FUNCTION(x.sf, y.sf, z.sf)); \ |
118 |
| - } |
119 |
| - |
120 | 15 | #define _CLC_V_V_VP_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \
|
121 | 16 | ADDR_SPACE, ARG2_TYPE) \
|
122 | 17 | DECLSPEC __CLC_XCONCAT(RET_TYPE, 2) \
|
|
171 | 66 | FUNCTION(x.sf, ptr + 15)); \
|
172 | 67 | }
|
173 | 68 |
|
174 |
| -#define _CLC_DEFINE_BINARY_BUILTIN(RET_TYPE, FUNCTION, BUILTIN, ARG1_TYPE, \ |
175 |
| - ARG2_TYPE) \ |
176 |
| - _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y) { \ |
177 |
| - return BUILTIN(x, y); \ |
178 |
| - } \ |
179 |
| - _CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, RET_TYPE, FUNCTION, ARG1_TYPE, \ |
180 |
| - ARG2_TYPE) |
181 |
| - |
182 | 69 | #endif // __CLC_CLCMACRO_H__
|
0 commit comments