|
134 | 134 | ADDR_SPACE, ARG2_TYPE) \
|
135 | 135 | DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ADDR_SPACE ARG2_TYPE##2 * y) { \
|
136 | 136 | return (RET_TYPE##2)( \
|
137 |
| - FUNCTION(x.x, (ARG2_TYPE *)y), \ |
| 137 | + FUNCTION(x.x, (ADDR_SPACE ARG2_TYPE *)y), \ |
138 | 138 | FUNCTION(x.y, \
|
139 | 139 | (ADDR_SPACE ARG2_TYPE *)((ADDR_SPACE ARG2_TYPE *)y + 1))); \
|
140 | 140 | } \
|
141 | 141 | \
|
142 | 142 | DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x, ADDR_SPACE ARG2_TYPE##3 * y) { \
|
143 | 143 | return (RET_TYPE##3)( \
|
144 |
| - FUNCTION(x.x, (ARG2_TYPE *)y), \ |
| 144 | + FUNCTION(x.x, (ADDR_SPACE ARG2_TYPE *)y), \ |
145 | 145 | FUNCTION(x.y, \
|
146 | 146 | (ADDR_SPACE ARG2_TYPE *)((ADDR_SPACE ARG2_TYPE *)y + 1)), \
|
147 | 147 | FUNCTION(x.z, \
|
|
150 | 150 | \
|
151 | 151 | DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x, ADDR_SPACE ARG2_TYPE##4 * y) { \
|
152 | 152 | return (RET_TYPE##4)( \
|
153 |
| - FUNCTION(x.lo, (ARG2_TYPE##2 *)y), \ |
| 153 | + FUNCTION(x.lo, (ADDR_SPACE ARG2_TYPE##2 *)y), \ |
154 | 154 | FUNCTION(x.hi, \
|
155 | 155 | (ADDR_SPACE ARG2_TYPE##2 *)((ADDR_SPACE ARG2_TYPE *)y + 2))); \
|
156 | 156 | } \
|
157 | 157 | \
|
158 | 158 | DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x, ADDR_SPACE ARG2_TYPE##8 * y) { \
|
159 | 159 | return (RET_TYPE##8)( \
|
160 |
| - FUNCTION(x.lo, (ARG2_TYPE##4 *)y), \ |
| 160 | + FUNCTION(x.lo, (ADDR_SPACE ARG2_TYPE##4 *)y), \ |
161 | 161 | FUNCTION(x.hi, \
|
162 | 162 | (ADDR_SPACE ARG2_TYPE##4 *)((ADDR_SPACE ARG2_TYPE *)y + 4))); \
|
163 | 163 | } \
|
164 | 164 | \
|
165 | 165 | DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x, \
|
166 | 166 | ADDR_SPACE ARG2_TYPE##16 * y) { \
|
167 | 167 | return (RET_TYPE##16)( \
|
168 |
| - FUNCTION(x.lo, (ARG2_TYPE##8 *)y), \ |
| 168 | + FUNCTION(x.lo, (ADDR_SPACE ARG2_TYPE##8 *)y), \ |
169 | 169 | FUNCTION(x.hi, \
|
170 | 170 | (ADDR_SPACE ARG2_TYPE##8 *)((ADDR_SPACE ARG2_TYPE *)y + 8))); \
|
171 | 171 | }
|
172 | 172 |
|
| 173 | +#define _CLC_DEFINE_TERNARY_BUILTIN(RET_TYPE, FUNCTION, BUILTIN, ARG1_TYPE, \ |
| 174 | + ARG2_TYPE, ARG3_TYPE) \ |
| 175 | + _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y, \ |
| 176 | + ARG3_TYPE z) { \ |
| 177 | + return BUILTIN(x, y, z); \ |
| 178 | + } \ |
| 179 | + _CLC_TERNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, RET_TYPE, FUNCTION, \ |
| 180 | + ARG1_TYPE, ARG2_TYPE, ARG3_TYPE) |
| 181 | + |
173 | 182 | #define _CLC_DEFINE_BINARY_BUILTIN(RET_TYPE, FUNCTION, BUILTIN, ARG1_TYPE, \
|
174 | 183 | ARG2_TYPE) \
|
175 | 184 | _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y) { \
|
|
0 commit comments