|
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