clang 23.0.0git
CIRGenBuiltinNVPTX.cpp
Go to the documentation of this file.
1//===---- CIRGenBuiltinNVPTX.cpp - Emit CIR for NVPTX builtins ------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This contains code to emit NVPTX Builtin calls.
10//
11//===----------------------------------------------------------------------===//
12
13#include "CIRGenFunction.h"
14
15#include "mlir/IR/Value.h"
17
18using namespace clang;
19using namespace clang::CIRGen;
20
21std::optional<mlir::Value>
23 switch (builtinId) {
24 case NVPTX::BI__nvvm_atom_add_gen_i:
25 case NVPTX::BI__nvvm_atom_add_gen_l:
26 case NVPTX::BI__nvvm_atom_add_gen_ll:
27 cgm.errorNYI(expr->getSourceRange(),
28 std::string("unimplemented NVPTX builtin call: ") +
29 getContext().BuiltinInfo.getName(builtinId));
30 return mlir::Value{};
31 case NVPTX::BI__nvvm_atom_sub_gen_i:
32 case NVPTX::BI__nvvm_atom_sub_gen_l:
33 case NVPTX::BI__nvvm_atom_sub_gen_ll:
34 cgm.errorNYI(expr->getSourceRange(),
35 std::string("unimplemented NVPTX builtin call: ") +
36 getContext().BuiltinInfo.getName(builtinId));
37 return mlir::Value{};
38 case NVPTX::BI__nvvm_atom_and_gen_i:
39 case NVPTX::BI__nvvm_atom_and_gen_l:
40 case NVPTX::BI__nvvm_atom_and_gen_ll:
41 cgm.errorNYI(expr->getSourceRange(),
42 std::string("unimplemented NVPTX builtin call: ") +
43 getContext().BuiltinInfo.getName(builtinId));
44 return mlir::Value{};
45 case NVPTX::BI__nvvm_atom_or_gen_i:
46 case NVPTX::BI__nvvm_atom_or_gen_l:
47 case NVPTX::BI__nvvm_atom_or_gen_ll:
48 cgm.errorNYI(expr->getSourceRange(),
49 std::string("unimplemented NVPTX builtin call: ") +
50 getContext().BuiltinInfo.getName(builtinId));
51 return mlir::Value{};
52 case NVPTX::BI__nvvm_atom_xor_gen_i:
53 case NVPTX::BI__nvvm_atom_xor_gen_l:
54 case NVPTX::BI__nvvm_atom_xor_gen_ll:
55 cgm.errorNYI(expr->getSourceRange(),
56 std::string("unimplemented NVPTX builtin call: ") +
57 getContext().BuiltinInfo.getName(builtinId));
58 return mlir::Value{};
59 case NVPTX::BI__nvvm_atom_xchg_gen_i:
60 case NVPTX::BI__nvvm_atom_xchg_gen_l:
61 case NVPTX::BI__nvvm_atom_xchg_gen_ll:
62 cgm.errorNYI(expr->getSourceRange(),
63 std::string("unimplemented NVPTX builtin call: ") +
64 getContext().BuiltinInfo.getName(builtinId));
65 return mlir::Value{};
66 case NVPTX::BI__nvvm_atom_max_gen_i:
67 case NVPTX::BI__nvvm_atom_max_gen_l:
68 case NVPTX::BI__nvvm_atom_max_gen_ll:
69 cgm.errorNYI(expr->getSourceRange(),
70 std::string("unimplemented NVPTX builtin call: ") +
71 getContext().BuiltinInfo.getName(builtinId));
72 return mlir::Value{};
73 case NVPTX::BI__nvvm_atom_max_gen_ui:
74 case NVPTX::BI__nvvm_atom_max_gen_ul:
75 case NVPTX::BI__nvvm_atom_max_gen_ull:
76 cgm.errorNYI(expr->getSourceRange(),
77 std::string("unimplemented NVPTX builtin call: ") +
78 getContext().BuiltinInfo.getName(builtinId));
79 return mlir::Value{};
80 case NVPTX::BI__nvvm_atom_min_gen_i:
81 case NVPTX::BI__nvvm_atom_min_gen_l:
82 case NVPTX::BI__nvvm_atom_min_gen_ll:
83 cgm.errorNYI(expr->getSourceRange(),
84 std::string("unimplemented NVPTX builtin call: ") +
85 getContext().BuiltinInfo.getName(builtinId));
86 return mlir::Value{};
87 case NVPTX::BI__nvvm_atom_min_gen_ui:
88 case NVPTX::BI__nvvm_atom_min_gen_ul:
89 case NVPTX::BI__nvvm_atom_min_gen_ull:
90 cgm.errorNYI(expr->getSourceRange(),
91 std::string("unimplemented NVPTX builtin call: ") +
92 getContext().BuiltinInfo.getName(builtinId));
93 return mlir::Value{};
94 case NVPTX::BI__nvvm_atom_cas_gen_us:
95 case NVPTX::BI__nvvm_atom_cas_gen_i:
96 case NVPTX::BI__nvvm_atom_cas_gen_l:
97 case NVPTX::BI__nvvm_atom_cas_gen_ll:
98 cgm.errorNYI(expr->getSourceRange(),
99 std::string("unimplemented NVPTX builtin call: ") +
100 getContext().BuiltinInfo.getName(builtinId));
101 return mlir::Value{};
102 // success flag.
103 case NVPTX::BI__nvvm_atom_add_gen_f:
104 case NVPTX::BI__nvvm_atom_add_gen_d:
105 cgm.errorNYI(expr->getSourceRange(),
106 std::string("unimplemented NVPTX builtin call: ") +
107 getContext().BuiltinInfo.getName(builtinId));
108 return mlir::Value{};
109 case NVPTX::BI__nvvm_atom_inc_gen_ui:
110 cgm.errorNYI(expr->getSourceRange(),
111 std::string("unimplemented NVPTX builtin call: ") +
112 getContext().BuiltinInfo.getName(builtinId));
113 return mlir::Value{};
114 case NVPTX::BI__nvvm_atom_dec_gen_ui:
115 cgm.errorNYI(expr->getSourceRange(),
116 std::string("unimplemented NVPTX builtin call: ") +
117 getContext().BuiltinInfo.getName(builtinId));
118 return mlir::Value{};
119 case NVPTX::BI__nvvm_ldg_c:
120 case NVPTX::BI__nvvm_ldg_sc:
121 case NVPTX::BI__nvvm_ldg_c2:
122 case NVPTX::BI__nvvm_ldg_sc2:
123 case NVPTX::BI__nvvm_ldg_c4:
124 case NVPTX::BI__nvvm_ldg_sc4:
125 case NVPTX::BI__nvvm_ldg_s:
126 case NVPTX::BI__nvvm_ldg_s2:
127 case NVPTX::BI__nvvm_ldg_s4:
128 case NVPTX::BI__nvvm_ldg_i:
129 case NVPTX::BI__nvvm_ldg_i2:
130 case NVPTX::BI__nvvm_ldg_i4:
131 case NVPTX::BI__nvvm_ldg_l:
132 case NVPTX::BI__nvvm_ldg_l2:
133 case NVPTX::BI__nvvm_ldg_ll:
134 case NVPTX::BI__nvvm_ldg_ll2:
135 case NVPTX::BI__nvvm_ldg_uc:
136 case NVPTX::BI__nvvm_ldg_uc2:
137 case NVPTX::BI__nvvm_ldg_uc4:
138 case NVPTX::BI__nvvm_ldg_us:
139 case NVPTX::BI__nvvm_ldg_us2:
140 case NVPTX::BI__nvvm_ldg_us4:
141 case NVPTX::BI__nvvm_ldg_ui:
142 case NVPTX::BI__nvvm_ldg_ui2:
143 case NVPTX::BI__nvvm_ldg_ui4:
144 case NVPTX::BI__nvvm_ldg_ul:
145 case NVPTX::BI__nvvm_ldg_ul2:
146 case NVPTX::BI__nvvm_ldg_ull:
147 case NVPTX::BI__nvvm_ldg_ull2:
148 case NVPTX::BI__nvvm_ldg_f:
149 case NVPTX::BI__nvvm_ldg_f2:
150 case NVPTX::BI__nvvm_ldg_f4:
151 case NVPTX::BI__nvvm_ldg_d:
152 case NVPTX::BI__nvvm_ldg_d2:
153 cgm.errorNYI(expr->getSourceRange(),
154 std::string("unimplemented NVPTX builtin call: ") +
155 getContext().BuiltinInfo.getName(builtinId));
156 return mlir::Value{};
157 case NVPTX::BI__nvvm_ldu_c:
158 case NVPTX::BI__nvvm_ldu_sc:
159 case NVPTX::BI__nvvm_ldu_c2:
160 case NVPTX::BI__nvvm_ldu_sc2:
161 case NVPTX::BI__nvvm_ldu_c4:
162 case NVPTX::BI__nvvm_ldu_sc4:
163 case NVPTX::BI__nvvm_ldu_s:
164 case NVPTX::BI__nvvm_ldu_s2:
165 case NVPTX::BI__nvvm_ldu_s4:
166 case NVPTX::BI__nvvm_ldu_i:
167 case NVPTX::BI__nvvm_ldu_i2:
168 case NVPTX::BI__nvvm_ldu_i4:
169 case NVPTX::BI__nvvm_ldu_l:
170 case NVPTX::BI__nvvm_ldu_l2:
171 case NVPTX::BI__nvvm_ldu_ll:
172 case NVPTX::BI__nvvm_ldu_ll2:
173 case NVPTX::BI__nvvm_ldu_uc:
174 case NVPTX::BI__nvvm_ldu_uc2:
175 case NVPTX::BI__nvvm_ldu_uc4:
176 case NVPTX::BI__nvvm_ldu_us:
177 case NVPTX::BI__nvvm_ldu_us2:
178 case NVPTX::BI__nvvm_ldu_us4:
179 case NVPTX::BI__nvvm_ldu_ui:
180 case NVPTX::BI__nvvm_ldu_ui2:
181 case NVPTX::BI__nvvm_ldu_ui4:
182 case NVPTX::BI__nvvm_ldu_ul:
183 case NVPTX::BI__nvvm_ldu_ul2:
184 case NVPTX::BI__nvvm_ldu_ull:
185 case NVPTX::BI__nvvm_ldu_ull2:
186 cgm.errorNYI(expr->getSourceRange(),
187 std::string("unimplemented NVPTX builtin call: ") +
188 getContext().BuiltinInfo.getName(builtinId));
189 return mlir::Value{};
190 case NVPTX::BI__nvvm_ldu_f:
191 case NVPTX::BI__nvvm_ldu_f2:
192 case NVPTX::BI__nvvm_ldu_f4:
193 case NVPTX::BI__nvvm_ldu_d:
194 case NVPTX::BI__nvvm_ldu_d2:
195 cgm.errorNYI(expr->getSourceRange(),
196 std::string("unimplemented NVPTX builtin call: ") +
197 getContext().BuiltinInfo.getName(builtinId));
198 return mlir::Value{};
199 case NVPTX::BI__nvvm_atom_cta_add_gen_i:
200 case NVPTX::BI__nvvm_atom_cta_add_gen_l:
201 case NVPTX::BI__nvvm_atom_cta_add_gen_ll:
202 cgm.errorNYI(expr->getSourceRange(),
203 std::string("unimplemented NVPTX builtin call: ") +
204 getContext().BuiltinInfo.getName(builtinId));
205 return mlir::Value{};
206 case NVPTX::BI__nvvm_atom_sys_add_gen_i:
207 case NVPTX::BI__nvvm_atom_sys_add_gen_l:
208 case NVPTX::BI__nvvm_atom_sys_add_gen_ll:
209 cgm.errorNYI(expr->getSourceRange(),
210 std::string("unimplemented NVPTX builtin call: ") +
211 getContext().BuiltinInfo.getName(builtinId));
212 return mlir::Value{};
213 case NVPTX::BI__nvvm_atom_cta_add_gen_f:
214 case NVPTX::BI__nvvm_atom_cta_add_gen_d:
215 cgm.errorNYI(expr->getSourceRange(),
216 std::string("unimplemented NVPTX builtin call: ") +
217 getContext().BuiltinInfo.getName(builtinId));
218 return mlir::Value{};
219 case NVPTX::BI__nvvm_atom_sys_add_gen_f:
220 case NVPTX::BI__nvvm_atom_sys_add_gen_d:
221 cgm.errorNYI(expr->getSourceRange(),
222 std::string("unimplemented NVPTX builtin call: ") +
223 getContext().BuiltinInfo.getName(builtinId));
224 return mlir::Value{};
225 case NVPTX::BI__nvvm_atom_cta_xchg_gen_i:
226 case NVPTX::BI__nvvm_atom_cta_xchg_gen_l:
227 case NVPTX::BI__nvvm_atom_cta_xchg_gen_ll:
228 cgm.errorNYI(expr->getSourceRange(),
229 std::string("unimplemented NVPTX builtin call: ") +
230 getContext().BuiltinInfo.getName(builtinId));
231 return mlir::Value{};
232 case NVPTX::BI__nvvm_atom_sys_xchg_gen_i:
233 case NVPTX::BI__nvvm_atom_sys_xchg_gen_l:
234 case NVPTX::BI__nvvm_atom_sys_xchg_gen_ll:
235 cgm.errorNYI(expr->getSourceRange(),
236 std::string("unimplemented NVPTX builtin call: ") +
237 getContext().BuiltinInfo.getName(builtinId));
238 return mlir::Value{};
239 case NVPTX::BI__nvvm_atom_cta_max_gen_i:
240 case NVPTX::BI__nvvm_atom_cta_max_gen_ui:
241 case NVPTX::BI__nvvm_atom_cta_max_gen_l:
242 case NVPTX::BI__nvvm_atom_cta_max_gen_ul:
243 case NVPTX::BI__nvvm_atom_cta_max_gen_ll:
244 case NVPTX::BI__nvvm_atom_cta_max_gen_ull:
245 cgm.errorNYI(expr->getSourceRange(),
246 std::string("unimplemented NVPTX builtin call: ") +
247 getContext().BuiltinInfo.getName(builtinId));
248 return mlir::Value{};
249 case NVPTX::BI__nvvm_atom_sys_max_gen_i:
250 case NVPTX::BI__nvvm_atom_sys_max_gen_ui:
251 case NVPTX::BI__nvvm_atom_sys_max_gen_l:
252 case NVPTX::BI__nvvm_atom_sys_max_gen_ul:
253 case NVPTX::BI__nvvm_atom_sys_max_gen_ll:
254 case NVPTX::BI__nvvm_atom_sys_max_gen_ull:
255 cgm.errorNYI(expr->getSourceRange(),
256 std::string("unimplemented NVPTX builtin call: ") +
257 getContext().BuiltinInfo.getName(builtinId));
258 return mlir::Value{};
259 case NVPTX::BI__nvvm_atom_cta_min_gen_i:
260 case NVPTX::BI__nvvm_atom_cta_min_gen_ui:
261 case NVPTX::BI__nvvm_atom_cta_min_gen_l:
262 case NVPTX::BI__nvvm_atom_cta_min_gen_ul:
263 case NVPTX::BI__nvvm_atom_cta_min_gen_ll:
264 case NVPTX::BI__nvvm_atom_cta_min_gen_ull:
265 cgm.errorNYI(expr->getSourceRange(),
266 std::string("unimplemented NVPTX builtin call: ") +
267 getContext().BuiltinInfo.getName(builtinId));
268 return mlir::Value{};
269 case NVPTX::BI__nvvm_atom_sys_min_gen_i:
270 case NVPTX::BI__nvvm_atom_sys_min_gen_ui:
271 case NVPTX::BI__nvvm_atom_sys_min_gen_l:
272 case NVPTX::BI__nvvm_atom_sys_min_gen_ul:
273 case NVPTX::BI__nvvm_atom_sys_min_gen_ll:
274 case NVPTX::BI__nvvm_atom_sys_min_gen_ull:
275 cgm.errorNYI(expr->getSourceRange(),
276 std::string("unimplemented NVPTX builtin call: ") +
277 getContext().BuiltinInfo.getName(builtinId));
278 return mlir::Value{};
279 case NVPTX::BI__nvvm_atom_cta_inc_gen_ui:
280 cgm.errorNYI(expr->getSourceRange(),
281 std::string("unimplemented NVPTX builtin call: ") +
282 getContext().BuiltinInfo.getName(builtinId));
283 return mlir::Value{};
284 case NVPTX::BI__nvvm_atom_cta_dec_gen_ui:
285 cgm.errorNYI(expr->getSourceRange(),
286 std::string("unimplemented NVPTX builtin call: ") +
287 getContext().BuiltinInfo.getName(builtinId));
288 return mlir::Value{};
289 case NVPTX::BI__nvvm_atom_sys_inc_gen_ui:
290 cgm.errorNYI(expr->getSourceRange(),
291 std::string("unimplemented NVPTX builtin call: ") +
292 getContext().BuiltinInfo.getName(builtinId));
293 return mlir::Value{};
294 case NVPTX::BI__nvvm_atom_sys_dec_gen_ui:
295 cgm.errorNYI(expr->getSourceRange(),
296 std::string("unimplemented NVPTX builtin call: ") +
297 getContext().BuiltinInfo.getName(builtinId));
298 return mlir::Value{};
299 case NVPTX::BI__nvvm_atom_cta_and_gen_i:
300 case NVPTX::BI__nvvm_atom_cta_and_gen_l:
301 case NVPTX::BI__nvvm_atom_cta_and_gen_ll:
302 cgm.errorNYI(expr->getSourceRange(),
303 std::string("unimplemented NVPTX builtin call: ") +
304 getContext().BuiltinInfo.getName(builtinId));
305 return mlir::Value{};
306 case NVPTX::BI__nvvm_atom_sys_and_gen_i:
307 case NVPTX::BI__nvvm_atom_sys_and_gen_l:
308 case NVPTX::BI__nvvm_atom_sys_and_gen_ll:
309 cgm.errorNYI(expr->getSourceRange(),
310 std::string("unimplemented NVPTX builtin call: ") +
311 getContext().BuiltinInfo.getName(builtinId));
312 return mlir::Value{};
313 case NVPTX::BI__nvvm_atom_cta_or_gen_i:
314 case NVPTX::BI__nvvm_atom_cta_or_gen_l:
315 case NVPTX::BI__nvvm_atom_cta_or_gen_ll:
316 cgm.errorNYI(expr->getSourceRange(),
317 std::string("unimplemented NVPTX builtin call: ") +
318 getContext().BuiltinInfo.getName(builtinId));
319 return mlir::Value{};
320 case NVPTX::BI__nvvm_atom_sys_or_gen_i:
321 case NVPTX::BI__nvvm_atom_sys_or_gen_l:
322 case NVPTX::BI__nvvm_atom_sys_or_gen_ll:
323 cgm.errorNYI(expr->getSourceRange(),
324 std::string("unimplemented NVPTX builtin call: ") +
325 getContext().BuiltinInfo.getName(builtinId));
326 return mlir::Value{};
327 case NVPTX::BI__nvvm_atom_cta_xor_gen_i:
328 case NVPTX::BI__nvvm_atom_cta_xor_gen_l:
329 case NVPTX::BI__nvvm_atom_cta_xor_gen_ll:
330 cgm.errorNYI(expr->getSourceRange(),
331 std::string("unimplemented NVPTX builtin call: ") +
332 getContext().BuiltinInfo.getName(builtinId));
333 return mlir::Value{};
334 case NVPTX::BI__nvvm_atom_sys_xor_gen_i:
335 case NVPTX::BI__nvvm_atom_sys_xor_gen_l:
336 case NVPTX::BI__nvvm_atom_sys_xor_gen_ll:
337 cgm.errorNYI(expr->getSourceRange(),
338 std::string("unimplemented NVPTX builtin call: ") +
339 getContext().BuiltinInfo.getName(builtinId));
340 return mlir::Value{};
341 case NVPTX::BI__nvvm_atom_cta_cas_gen_us:
342 case NVPTX::BI__nvvm_atom_cta_cas_gen_i:
343 case NVPTX::BI__nvvm_atom_cta_cas_gen_l:
344 case NVPTX::BI__nvvm_atom_cta_cas_gen_ll:
345 cgm.errorNYI(expr->getSourceRange(),
346 std::string("unimplemented NVPTX builtin call: ") +
347 getContext().BuiltinInfo.getName(builtinId));
348 return mlir::Value{};
349 case NVPTX::BI__nvvm_atom_sys_cas_gen_us:
350 case NVPTX::BI__nvvm_atom_sys_cas_gen_i:
351 case NVPTX::BI__nvvm_atom_sys_cas_gen_l:
352 case NVPTX::BI__nvvm_atom_sys_cas_gen_ll:
353 cgm.errorNYI(expr->getSourceRange(),
354 std::string("unimplemented NVPTX builtin call: ") +
355 getContext().BuiltinInfo.getName(builtinId));
356 return mlir::Value{};
357 case NVPTX::BI__nvvm_match_all_sync_i32p:
358 case NVPTX::BI__nvvm_match_all_sync_i64p:
359 cgm.errorNYI(expr->getSourceRange(),
360 std::string("unimplemented NVPTX builtin call: ") +
361 getContext().BuiltinInfo.getName(builtinId));
362 return mlir::Value{};
363 // FP MMA loads
364 case NVPTX::BI__hmma_m16n16k16_ld_a:
365 case NVPTX::BI__hmma_m16n16k16_ld_b:
366 case NVPTX::BI__hmma_m16n16k16_ld_c_f16:
367 case NVPTX::BI__hmma_m16n16k16_ld_c_f32:
368 case NVPTX::BI__hmma_m32n8k16_ld_a:
369 case NVPTX::BI__hmma_m32n8k16_ld_b:
370 case NVPTX::BI__hmma_m32n8k16_ld_c_f16:
371 case NVPTX::BI__hmma_m32n8k16_ld_c_f32:
372 case NVPTX::BI__hmma_m8n32k16_ld_a:
373 case NVPTX::BI__hmma_m8n32k16_ld_b:
374 case NVPTX::BI__hmma_m8n32k16_ld_c_f16:
375 case NVPTX::BI__hmma_m8n32k16_ld_c_f32:
376 cgm.errorNYI(expr->getSourceRange(),
377 std::string("unimplemented NVPTX builtin call: ") +
378 getContext().BuiltinInfo.getName(builtinId));
379 return mlir::Value{};
380 case NVPTX::BI__imma_m16n16k16_ld_a_s8:
381 case NVPTX::BI__imma_m16n16k16_ld_a_u8:
382 case NVPTX::BI__imma_m16n16k16_ld_b_s8:
383 case NVPTX::BI__imma_m16n16k16_ld_b_u8:
384 case NVPTX::BI__imma_m16n16k16_ld_c:
385 case NVPTX::BI__imma_m32n8k16_ld_a_s8:
386 case NVPTX::BI__imma_m32n8k16_ld_a_u8:
387 case NVPTX::BI__imma_m32n8k16_ld_b_s8:
388 case NVPTX::BI__imma_m32n8k16_ld_b_u8:
389 case NVPTX::BI__imma_m32n8k16_ld_c:
390 case NVPTX::BI__imma_m8n32k16_ld_a_s8:
391 case NVPTX::BI__imma_m8n32k16_ld_a_u8:
392 case NVPTX::BI__imma_m8n32k16_ld_b_s8:
393 case NVPTX::BI__imma_m8n32k16_ld_b_u8:
394 case NVPTX::BI__imma_m8n32k16_ld_c:
395 cgm.errorNYI(expr->getSourceRange(),
396 std::string("unimplemented NVPTX builtin call: ") +
397 getContext().BuiltinInfo.getName(builtinId));
398 return mlir::Value{};
399 case NVPTX::BI__imma_m8n8k32_ld_a_s4:
400 case NVPTX::BI__imma_m8n8k32_ld_a_u4:
401 case NVPTX::BI__imma_m8n8k32_ld_b_s4:
402 case NVPTX::BI__imma_m8n8k32_ld_b_u4:
403 case NVPTX::BI__imma_m8n8k32_ld_c:
404 case NVPTX::BI__bmma_m8n8k128_ld_a_b1:
405 case NVPTX::BI__bmma_m8n8k128_ld_b_b1:
406 case NVPTX::BI__bmma_m8n8k128_ld_c:
407 cgm.errorNYI(expr->getSourceRange(),
408 std::string("unimplemented NVPTX builtin call: ") +
409 getContext().BuiltinInfo.getName(builtinId));
410 return mlir::Value{};
411 case NVPTX::BI__dmma_m8n8k4_ld_a:
412 case NVPTX::BI__dmma_m8n8k4_ld_b:
413 case NVPTX::BI__dmma_m8n8k4_ld_c:
414 cgm.errorNYI(expr->getSourceRange(),
415 std::string("unimplemented NVPTX builtin call: ") +
416 getContext().BuiltinInfo.getName(builtinId));
417 return mlir::Value{};
418 case NVPTX::BI__mma_bf16_m16n16k16_ld_a:
419 case NVPTX::BI__mma_bf16_m16n16k16_ld_b:
420 case NVPTX::BI__mma_bf16_m8n32k16_ld_a:
421 case NVPTX::BI__mma_bf16_m8n32k16_ld_b:
422 case NVPTX::BI__mma_bf16_m32n8k16_ld_a:
423 case NVPTX::BI__mma_bf16_m32n8k16_ld_b:
424 case NVPTX::BI__mma_tf32_m16n16k8_ld_a:
425 case NVPTX::BI__mma_tf32_m16n16k8_ld_b:
426 case NVPTX::BI__mma_tf32_m16n16k8_ld_c:
427 cgm.errorNYI(expr->getSourceRange(),
428 std::string("unimplemented NVPTX builtin call: ") +
429 getContext().BuiltinInfo.getName(builtinId));
430 return mlir::Value{};
431 case NVPTX::BI__hmma_m16n16k16_st_c_f16:
432 case NVPTX::BI__hmma_m16n16k16_st_c_f32:
433 case NVPTX::BI__hmma_m32n8k16_st_c_f16:
434 case NVPTX::BI__hmma_m32n8k16_st_c_f32:
435 case NVPTX::BI__hmma_m8n32k16_st_c_f16:
436 case NVPTX::BI__hmma_m8n32k16_st_c_f32:
437 case NVPTX::BI__imma_m16n16k16_st_c_i32:
438 case NVPTX::BI__imma_m32n8k16_st_c_i32:
439 case NVPTX::BI__imma_m8n32k16_st_c_i32:
440 case NVPTX::BI__imma_m8n8k32_st_c_i32:
441 case NVPTX::BI__bmma_m8n8k128_st_c_i32:
442 case NVPTX::BI__dmma_m8n8k4_st_c_f64:
443 case NVPTX::BI__mma_m16n16k8_st_c_f32:
444 cgm.errorNYI(expr->getSourceRange(),
445 std::string("unimplemented NVPTX builtin call: ") +
446 getContext().BuiltinInfo.getName(builtinId));
447 return mlir::Value{};
448 // BI__hmma_m16n16k16_mma_<Dtype><CType>(d, a, b, c, layout, satf) -->
449 // Intrinsic::nvvm_wmma_m16n16k16_mma_sync<layout A,B><DType><CType><Satf>
450 case NVPTX::BI__hmma_m16n16k16_mma_f16f16:
451 case NVPTX::BI__hmma_m16n16k16_mma_f32f16:
452 case NVPTX::BI__hmma_m16n16k16_mma_f32f32:
453 case NVPTX::BI__hmma_m16n16k16_mma_f16f32:
454 case NVPTX::BI__hmma_m32n8k16_mma_f16f16:
455 case NVPTX::BI__hmma_m32n8k16_mma_f32f16:
456 case NVPTX::BI__hmma_m32n8k16_mma_f32f32:
457 case NVPTX::BI__hmma_m32n8k16_mma_f16f32:
458 case NVPTX::BI__hmma_m8n32k16_mma_f16f16:
459 case NVPTX::BI__hmma_m8n32k16_mma_f32f16:
460 case NVPTX::BI__hmma_m8n32k16_mma_f32f32:
461 case NVPTX::BI__hmma_m8n32k16_mma_f16f32:
462 case NVPTX::BI__imma_m16n16k16_mma_s8:
463 case NVPTX::BI__imma_m16n16k16_mma_u8:
464 case NVPTX::BI__imma_m32n8k16_mma_s8:
465 case NVPTX::BI__imma_m32n8k16_mma_u8:
466 case NVPTX::BI__imma_m8n32k16_mma_s8:
467 case NVPTX::BI__imma_m8n32k16_mma_u8:
468 case NVPTX::BI__imma_m8n8k32_mma_s4:
469 case NVPTX::BI__imma_m8n8k32_mma_u4:
470 case NVPTX::BI__bmma_m8n8k128_mma_xor_popc_b1:
471 case NVPTX::BI__bmma_m8n8k128_mma_and_popc_b1:
472 case NVPTX::BI__dmma_m8n8k4_mma_f64:
473 case NVPTX::BI__mma_bf16_m16n16k16_mma_f32:
474 case NVPTX::BI__mma_bf16_m8n32k16_mma_f32:
475 case NVPTX::BI__mma_bf16_m32n8k16_mma_f32:
476 case NVPTX::BI__mma_tf32_m16n16k8_mma_f32:
477 cgm.errorNYI(expr->getSourceRange(),
478 std::string("unimplemented NVPTX builtin call: ") +
479 getContext().BuiltinInfo.getName(builtinId));
480 return mlir::Value{};
481 // The following builtins require half type support
482 case NVPTX::BI__nvvm_ex2_approx_f16:
483 cgm.errorNYI(expr->getSourceRange(),
484 std::string("unimplemented NVPTX builtin call: ") +
485 getContext().BuiltinInfo.getName(builtinId));
486 return mlir::Value{};
487 case NVPTX::BI__nvvm_ex2_approx_f16x2:
488 cgm.errorNYI(expr->getSourceRange(),
489 std::string("unimplemented NVPTX builtin call: ") +
490 getContext().BuiltinInfo.getName(builtinId));
491 return mlir::Value{};
492 case NVPTX::BI__nvvm_ff2f16x2_rn:
493 cgm.errorNYI(expr->getSourceRange(),
494 std::string("unimplemented NVPTX builtin call: ") +
495 getContext().BuiltinInfo.getName(builtinId));
496 return mlir::Value{};
497 case NVPTX::BI__nvvm_ff2f16x2_rn_relu:
498 cgm.errorNYI(expr->getSourceRange(),
499 std::string("unimplemented NVPTX builtin call: ") +
500 getContext().BuiltinInfo.getName(builtinId));
501 return mlir::Value{};
502 case NVPTX::BI__nvvm_ff2f16x2_rz:
503 cgm.errorNYI(expr->getSourceRange(),
504 std::string("unimplemented NVPTX builtin call: ") +
505 getContext().BuiltinInfo.getName(builtinId));
506 return mlir::Value{};
507 case NVPTX::BI__nvvm_ff2f16x2_rz_relu:
508 cgm.errorNYI(expr->getSourceRange(),
509 std::string("unimplemented NVPTX builtin call: ") +
510 getContext().BuiltinInfo.getName(builtinId));
511 return mlir::Value{};
512 case NVPTX::BI__nvvm_fma_rn_f16:
513 cgm.errorNYI(expr->getSourceRange(),
514 std::string("unimplemented NVPTX builtin call: ") +
515 getContext().BuiltinInfo.getName(builtinId));
516 return mlir::Value{};
517 case NVPTX::BI__nvvm_fma_rn_f16x2:
518 cgm.errorNYI(expr->getSourceRange(),
519 std::string("unimplemented NVPTX builtin call: ") +
520 getContext().BuiltinInfo.getName(builtinId));
521 return mlir::Value{};
522 case NVPTX::BI__nvvm_fma_rn_ftz_f16:
523 cgm.errorNYI(expr->getSourceRange(),
524 std::string("unimplemented NVPTX builtin call: ") +
525 getContext().BuiltinInfo.getName(builtinId));
526 return mlir::Value{};
527 case NVPTX::BI__nvvm_fma_rn_ftz_f16x2:
528 cgm.errorNYI(expr->getSourceRange(),
529 std::string("unimplemented NVPTX builtin call: ") +
530 getContext().BuiltinInfo.getName(builtinId));
531 return mlir::Value{};
532 case NVPTX::BI__nvvm_fma_rn_ftz_relu_f16:
533 cgm.errorNYI(expr->getSourceRange(),
534 std::string("unimplemented NVPTX builtin call: ") +
535 getContext().BuiltinInfo.getName(builtinId));
536 return mlir::Value{};
537 case NVPTX::BI__nvvm_fma_rn_ftz_relu_f16x2:
538 cgm.errorNYI(expr->getSourceRange(),
539 std::string("unimplemented NVPTX builtin call: ") +
540 getContext().BuiltinInfo.getName(builtinId));
541 return mlir::Value{};
542 case NVPTX::BI__nvvm_fma_rn_ftz_sat_f16:
543 cgm.errorNYI(expr->getSourceRange(),
544 std::string("unimplemented NVPTX builtin call: ") +
545 getContext().BuiltinInfo.getName(builtinId));
546 return mlir::Value{};
547 case NVPTX::BI__nvvm_fma_rn_ftz_sat_f16x2:
548 cgm.errorNYI(expr->getSourceRange(),
549 std::string("unimplemented NVPTX builtin call: ") +
550 getContext().BuiltinInfo.getName(builtinId));
551 return mlir::Value{};
552 case NVPTX::BI__nvvm_fma_rn_relu_f16:
553 cgm.errorNYI(expr->getSourceRange(),
554 std::string("unimplemented NVPTX builtin call: ") +
555 getContext().BuiltinInfo.getName(builtinId));
556 return mlir::Value{};
557 case NVPTX::BI__nvvm_fma_rn_relu_f16x2:
558 cgm.errorNYI(expr->getSourceRange(),
559 std::string("unimplemented NVPTX builtin call: ") +
560 getContext().BuiltinInfo.getName(builtinId));
561 return mlir::Value{};
562 case NVPTX::BI__nvvm_fma_rn_sat_f16:
563 cgm.errorNYI(expr->getSourceRange(),
564 std::string("unimplemented NVPTX builtin call: ") +
565 getContext().BuiltinInfo.getName(builtinId));
566 return mlir::Value{};
567 case NVPTX::BI__nvvm_fma_rn_sat_f16x2:
568 cgm.errorNYI(expr->getSourceRange(),
569 std::string("unimplemented NVPTX builtin call: ") +
570 getContext().BuiltinInfo.getName(builtinId));
571 return mlir::Value{};
572 case NVPTX::BI__nvvm_fma_rn_oob_f16:
573 cgm.errorNYI(expr->getSourceRange(),
574 std::string("unimplemented NVPTX builtin call: ") +
575 getContext().BuiltinInfo.getName(builtinId));
576 return mlir::Value{};
577 case NVPTX::BI__nvvm_fma_rn_oob_f16x2:
578 cgm.errorNYI(expr->getSourceRange(),
579 std::string("unimplemented NVPTX builtin call: ") +
580 getContext().BuiltinInfo.getName(builtinId));
581 return mlir::Value{};
582 case NVPTX::BI__nvvm_fma_rn_oob_bf16:
583 cgm.errorNYI(expr->getSourceRange(),
584 std::string("unimplemented NVPTX builtin call: ") +
585 getContext().BuiltinInfo.getName(builtinId));
586 return mlir::Value{};
587 case NVPTX::BI__nvvm_fma_rn_oob_bf16x2:
588 cgm.errorNYI(expr->getSourceRange(),
589 std::string("unimplemented NVPTX builtin call: ") +
590 getContext().BuiltinInfo.getName(builtinId));
591 return mlir::Value{};
592 case NVPTX::BI__nvvm_fma_rn_oob_relu_f16:
593 cgm.errorNYI(expr->getSourceRange(),
594 std::string("unimplemented NVPTX builtin call: ") +
595 getContext().BuiltinInfo.getName(builtinId));
596 return mlir::Value{};
597 case NVPTX::BI__nvvm_fma_rn_oob_relu_f16x2:
598 cgm.errorNYI(expr->getSourceRange(),
599 std::string("unimplemented NVPTX builtin call: ") +
600 getContext().BuiltinInfo.getName(builtinId));
601 return mlir::Value{};
602 case NVPTX::BI__nvvm_fma_rn_oob_relu_bf16:
603 cgm.errorNYI(expr->getSourceRange(),
604 std::string("unimplemented NVPTX builtin call: ") +
605 getContext().BuiltinInfo.getName(builtinId));
606 return mlir::Value{};
607 case NVPTX::BI__nvvm_fma_rn_oob_relu_bf16x2:
608 cgm.errorNYI(expr->getSourceRange(),
609 std::string("unimplemented NVPTX builtin call: ") +
610 getContext().BuiltinInfo.getName(builtinId));
611 return mlir::Value{};
612 case NVPTX::BI__nvvm_fmax_f16:
613 cgm.errorNYI(expr->getSourceRange(),
614 std::string("unimplemented NVPTX builtin call: ") +
615 getContext().BuiltinInfo.getName(builtinId));
616 return mlir::Value{};
617 case NVPTX::BI__nvvm_fmax_f16x2:
618 cgm.errorNYI(expr->getSourceRange(),
619 std::string("unimplemented NVPTX builtin call: ") +
620 getContext().BuiltinInfo.getName(builtinId));
621 return mlir::Value{};
622 case NVPTX::BI__nvvm_fmax_ftz_f16:
623 cgm.errorNYI(expr->getSourceRange(),
624 std::string("unimplemented NVPTX builtin call: ") +
625 getContext().BuiltinInfo.getName(builtinId));
626 return mlir::Value{};
627 case NVPTX::BI__nvvm_fmax_ftz_f16x2:
628 cgm.errorNYI(expr->getSourceRange(),
629 std::string("unimplemented NVPTX builtin call: ") +
630 getContext().BuiltinInfo.getName(builtinId));
631 return mlir::Value{};
632 case NVPTX::BI__nvvm_fmax_ftz_nan_f16:
633 cgm.errorNYI(expr->getSourceRange(),
634 std::string("unimplemented NVPTX builtin call: ") +
635 getContext().BuiltinInfo.getName(builtinId));
636 return mlir::Value{};
637 case NVPTX::BI__nvvm_fmax_ftz_nan_f16x2:
638 cgm.errorNYI(expr->getSourceRange(),
639 std::string("unimplemented NVPTX builtin call: ") +
640 getContext().BuiltinInfo.getName(builtinId));
641 return mlir::Value{};
642 case NVPTX::BI__nvvm_fmax_ftz_nan_xorsign_abs_f16:
643 cgm.errorNYI(expr->getSourceRange(),
644 std::string("unimplemented NVPTX builtin call: ") +
645 getContext().BuiltinInfo.getName(builtinId));
646 return mlir::Value{};
647 case NVPTX::BI__nvvm_fmax_ftz_nan_xorsign_abs_f16x2:
648 cgm.errorNYI(expr->getSourceRange(),
649 std::string("unimplemented NVPTX builtin call: ") +
650 getContext().BuiltinInfo.getName(builtinId));
651 return mlir::Value{};
652 case NVPTX::BI__nvvm_fmax_ftz_xorsign_abs_f16:
653 cgm.errorNYI(expr->getSourceRange(),
654 std::string("unimplemented NVPTX builtin call: ") +
655 getContext().BuiltinInfo.getName(builtinId));
656 return mlir::Value{};
657 case NVPTX::BI__nvvm_fmax_ftz_xorsign_abs_f16x2:
658 cgm.errorNYI(expr->getSourceRange(),
659 std::string("unimplemented NVPTX builtin call: ") +
660 getContext().BuiltinInfo.getName(builtinId));
661 return mlir::Value{};
662 case NVPTX::BI__nvvm_fmax_nan_f16:
663 cgm.errorNYI(expr->getSourceRange(),
664 std::string("unimplemented NVPTX builtin call: ") +
665 getContext().BuiltinInfo.getName(builtinId));
666 return mlir::Value{};
667 case NVPTX::BI__nvvm_fmax_nan_f16x2:
668 cgm.errorNYI(expr->getSourceRange(),
669 std::string("unimplemented NVPTX builtin call: ") +
670 getContext().BuiltinInfo.getName(builtinId));
671 return mlir::Value{};
672 case NVPTX::BI__nvvm_fmax_nan_xorsign_abs_f16:
673 cgm.errorNYI(expr->getSourceRange(),
674 std::string("unimplemented NVPTX builtin call: ") +
675 getContext().BuiltinInfo.getName(builtinId));
676 return mlir::Value{};
677 case NVPTX::BI__nvvm_fmax_nan_xorsign_abs_f16x2:
678 cgm.errorNYI(expr->getSourceRange(),
679 std::string("unimplemented NVPTX builtin call: ") +
680 getContext().BuiltinInfo.getName(builtinId));
681 return mlir::Value{};
682 case NVPTX::BI__nvvm_fmax_xorsign_abs_f16:
683 cgm.errorNYI(expr->getSourceRange(),
684 std::string("unimplemented NVPTX builtin call: ") +
685 getContext().BuiltinInfo.getName(builtinId));
686 return mlir::Value{};
687 case NVPTX::BI__nvvm_fmax_xorsign_abs_f16x2:
688 cgm.errorNYI(expr->getSourceRange(),
689 std::string("unimplemented NVPTX builtin call: ") +
690 getContext().BuiltinInfo.getName(builtinId));
691 return mlir::Value{};
692 case NVPTX::BI__nvvm_fmin_f16:
693 cgm.errorNYI(expr->getSourceRange(),
694 std::string("unimplemented NVPTX builtin call: ") +
695 getContext().BuiltinInfo.getName(builtinId));
696 return mlir::Value{};
697 case NVPTX::BI__nvvm_fmin_f16x2:
698 cgm.errorNYI(expr->getSourceRange(),
699 std::string("unimplemented NVPTX builtin call: ") +
700 getContext().BuiltinInfo.getName(builtinId));
701 return mlir::Value{};
702 case NVPTX::BI__nvvm_fmin_ftz_f16:
703 cgm.errorNYI(expr->getSourceRange(),
704 std::string("unimplemented NVPTX builtin call: ") +
705 getContext().BuiltinInfo.getName(builtinId));
706 return mlir::Value{};
707 case NVPTX::BI__nvvm_fmin_ftz_f16x2:
708 cgm.errorNYI(expr->getSourceRange(),
709 std::string("unimplemented NVPTX builtin call: ") +
710 getContext().BuiltinInfo.getName(builtinId));
711 return mlir::Value{};
712 case NVPTX::BI__nvvm_fmin_ftz_nan_f16:
713 cgm.errorNYI(expr->getSourceRange(),
714 std::string("unimplemented NVPTX builtin call: ") +
715 getContext().BuiltinInfo.getName(builtinId));
716 return mlir::Value{};
717 case NVPTX::BI__nvvm_fmin_ftz_nan_f16x2:
718 cgm.errorNYI(expr->getSourceRange(),
719 std::string("unimplemented NVPTX builtin call: ") +
720 getContext().BuiltinInfo.getName(builtinId));
721 return mlir::Value{};
722 case NVPTX::BI__nvvm_fmin_ftz_nan_xorsign_abs_f16:
723 cgm.errorNYI(expr->getSourceRange(),
724 std::string("unimplemented NVPTX builtin call: ") +
725 getContext().BuiltinInfo.getName(builtinId));
726 return mlir::Value{};
727 case NVPTX::BI__nvvm_fmin_ftz_nan_xorsign_abs_f16x2:
728 cgm.errorNYI(expr->getSourceRange(),
729 std::string("unimplemented NVPTX builtin call: ") +
730 getContext().BuiltinInfo.getName(builtinId));
731 return mlir::Value{};
732 case NVPTX::BI__nvvm_fmin_ftz_xorsign_abs_f16:
733 cgm.errorNYI(expr->getSourceRange(),
734 std::string("unimplemented NVPTX builtin call: ") +
735 getContext().BuiltinInfo.getName(builtinId));
736 return mlir::Value{};
737 case NVPTX::BI__nvvm_fmin_ftz_xorsign_abs_f16x2:
738 cgm.errorNYI(expr->getSourceRange(),
739 std::string("unimplemented NVPTX builtin call: ") +
740 getContext().BuiltinInfo.getName(builtinId));
741 return mlir::Value{};
742 case NVPTX::BI__nvvm_fmin_nan_f16:
743 cgm.errorNYI(expr->getSourceRange(),
744 std::string("unimplemented NVPTX builtin call: ") +
745 getContext().BuiltinInfo.getName(builtinId));
746 return mlir::Value{};
747 case NVPTX::BI__nvvm_fmin_nan_f16x2:
748 cgm.errorNYI(expr->getSourceRange(),
749 std::string("unimplemented NVPTX builtin call: ") +
750 getContext().BuiltinInfo.getName(builtinId));
751 return mlir::Value{};
752 case NVPTX::BI__nvvm_fmin_nan_xorsign_abs_f16:
753 cgm.errorNYI(expr->getSourceRange(),
754 std::string("unimplemented NVPTX builtin call: ") +
755 getContext().BuiltinInfo.getName(builtinId));
756 return mlir::Value{};
757 case NVPTX::BI__nvvm_fmin_nan_xorsign_abs_f16x2:
758 cgm.errorNYI(expr->getSourceRange(),
759 std::string("unimplemented NVPTX builtin call: ") +
760 getContext().BuiltinInfo.getName(builtinId));
761 return mlir::Value{};
762 case NVPTX::BI__nvvm_fmin_xorsign_abs_f16:
763 cgm.errorNYI(expr->getSourceRange(),
764 std::string("unimplemented NVPTX builtin call: ") +
765 getContext().BuiltinInfo.getName(builtinId));
766 return mlir::Value{};
767 case NVPTX::BI__nvvm_fmin_xorsign_abs_f16x2:
768 cgm.errorNYI(expr->getSourceRange(),
769 std::string("unimplemented NVPTX builtin call: ") +
770 getContext().BuiltinInfo.getName(builtinId));
771 return mlir::Value{};
772 case NVPTX::BI__nvvm_fabs_f:
773 case NVPTX::BI__nvvm_abs_bf16:
774 case NVPTX::BI__nvvm_abs_bf16x2:
775 case NVPTX::BI__nvvm_fabs_f16:
776 case NVPTX::BI__nvvm_fabs_f16x2:
777 cgm.errorNYI(expr->getSourceRange(),
778 std::string("unimplemented NVPTX builtin call: ") +
779 getContext().BuiltinInfo.getName(builtinId));
780 return mlir::Value{};
781 case NVPTX::BI__nvvm_fabs_ftz_f:
782 case NVPTX::BI__nvvm_fabs_ftz_f16:
783 case NVPTX::BI__nvvm_fabs_ftz_f16x2:
784 cgm.errorNYI(expr->getSourceRange(),
785 std::string("unimplemented NVPTX builtin call: ") +
786 getContext().BuiltinInfo.getName(builtinId));
787 return mlir::Value{};
788 case NVPTX::BI__nvvm_fabs_d:
789 cgm.errorNYI(expr->getSourceRange(),
790 std::string("unimplemented NVPTX builtin call: ") +
791 getContext().BuiltinInfo.getName(builtinId));
792 return mlir::Value{};
793 case NVPTX::BI__nvvm_ex2_approx_d:
794 case NVPTX::BI__nvvm_ex2_approx_f:
795 cgm.errorNYI(expr->getSourceRange(),
796 std::string("unimplemented NVPTX builtin call: ") +
797 getContext().BuiltinInfo.getName(builtinId));
798 return mlir::Value{};
799 case NVPTX::BI__nvvm_ex2_approx_ftz_f:
800 cgm.errorNYI(expr->getSourceRange(),
801 std::string("unimplemented NVPTX builtin call: ") +
802 getContext().BuiltinInfo.getName(builtinId));
803 return mlir::Value{};
804 case NVPTX::BI__nvvm_ldg_h:
805 case NVPTX::BI__nvvm_ldg_h2:
806 cgm.errorNYI(expr->getSourceRange(),
807 std::string("unimplemented NVPTX builtin call: ") +
808 getContext().BuiltinInfo.getName(builtinId));
809 return mlir::Value{};
810 case NVPTX::BI__nvvm_ldu_h:
811 case NVPTX::BI__nvvm_ldu_h2:
812 cgm.errorNYI(expr->getSourceRange(),
813 std::string("unimplemented NVPTX builtin call: ") +
814 getContext().BuiltinInfo.getName(builtinId));
815 return mlir::Value{};
816 case NVPTX::BI__nvvm_cp_async_ca_shared_global_4:
817 cgm.errorNYI(expr->getSourceRange(),
818 std::string("unimplemented NVPTX builtin call: ") +
819 getContext().BuiltinInfo.getName(builtinId));
820 return mlir::Value{};
821 case NVPTX::BI__nvvm_cp_async_ca_shared_global_8:
822 cgm.errorNYI(expr->getSourceRange(),
823 std::string("unimplemented NVPTX builtin call: ") +
824 getContext().BuiltinInfo.getName(builtinId));
825 return mlir::Value{};
826 case NVPTX::BI__nvvm_cp_async_ca_shared_global_16:
827 cgm.errorNYI(expr->getSourceRange(),
828 std::string("unimplemented NVPTX builtin call: ") +
829 getContext().BuiltinInfo.getName(builtinId));
830 return mlir::Value{};
831 case NVPTX::BI__nvvm_cp_async_cg_shared_global_16:
832 cgm.errorNYI(expr->getSourceRange(),
833 std::string("unimplemented NVPTX builtin call: ") +
834 getContext().BuiltinInfo.getName(builtinId));
835 return mlir::Value{};
836 case NVPTX::BI__nvvm_read_ptx_sreg_clusterid_x:
837 cgm.errorNYI(expr->getSourceRange(),
838 std::string("unimplemented NVPTX builtin call: ") +
839 getContext().BuiltinInfo.getName(builtinId));
840 return mlir::Value{};
841 case NVPTX::BI__nvvm_read_ptx_sreg_clusterid_y:
842 cgm.errorNYI(expr->getSourceRange(),
843 std::string("unimplemented NVPTX builtin call: ") +
844 getContext().BuiltinInfo.getName(builtinId));
845 return mlir::Value{};
846 case NVPTX::BI__nvvm_read_ptx_sreg_clusterid_z:
847 cgm.errorNYI(expr->getSourceRange(),
848 std::string("unimplemented NVPTX builtin call: ") +
849 getContext().BuiltinInfo.getName(builtinId));
850 return mlir::Value{};
851 case NVPTX::BI__nvvm_read_ptx_sreg_clusterid_w:
852 cgm.errorNYI(expr->getSourceRange(),
853 std::string("unimplemented NVPTX builtin call: ") +
854 getContext().BuiltinInfo.getName(builtinId));
855 return mlir::Value{};
856 case NVPTX::BI__nvvm_read_ptx_sreg_nclusterid_x:
857 cgm.errorNYI(expr->getSourceRange(),
858 std::string("unimplemented NVPTX builtin call: ") +
859 getContext().BuiltinInfo.getName(builtinId));
860 return mlir::Value{};
861 case NVPTX::BI__nvvm_read_ptx_sreg_nclusterid_y:
862 cgm.errorNYI(expr->getSourceRange(),
863 std::string("unimplemented NVPTX builtin call: ") +
864 getContext().BuiltinInfo.getName(builtinId));
865 return mlir::Value{};
866 case NVPTX::BI__nvvm_read_ptx_sreg_nclusterid_z:
867 cgm.errorNYI(expr->getSourceRange(),
868 std::string("unimplemented NVPTX builtin call: ") +
869 getContext().BuiltinInfo.getName(builtinId));
870 return mlir::Value{};
871 case NVPTX::BI__nvvm_read_ptx_sreg_nclusterid_w:
872 cgm.errorNYI(expr->getSourceRange(),
873 std::string("unimplemented NVPTX builtin call: ") +
874 getContext().BuiltinInfo.getName(builtinId));
875 return mlir::Value{};
876 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctaid_x:
877 cgm.errorNYI(expr->getSourceRange(),
878 std::string("unimplemented NVPTX builtin call: ") +
879 getContext().BuiltinInfo.getName(builtinId));
880 return mlir::Value{};
881 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctaid_y:
882 cgm.errorNYI(expr->getSourceRange(),
883 std::string("unimplemented NVPTX builtin call: ") +
884 getContext().BuiltinInfo.getName(builtinId));
885 return mlir::Value{};
886 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctaid_z:
887 cgm.errorNYI(expr->getSourceRange(),
888 std::string("unimplemented NVPTX builtin call: ") +
889 getContext().BuiltinInfo.getName(builtinId));
890 return mlir::Value{};
891 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctaid_w:
892 cgm.errorNYI(expr->getSourceRange(),
893 std::string("unimplemented NVPTX builtin call: ") +
894 getContext().BuiltinInfo.getName(builtinId));
895 return mlir::Value{};
896 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctaid_x:
897 cgm.errorNYI(expr->getSourceRange(),
898 std::string("unimplemented NVPTX builtin call: ") +
899 getContext().BuiltinInfo.getName(builtinId));
900 return mlir::Value{};
901 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctaid_y:
902 cgm.errorNYI(expr->getSourceRange(),
903 std::string("unimplemented NVPTX builtin call: ") +
904 getContext().BuiltinInfo.getName(builtinId));
905 return mlir::Value{};
906 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctaid_z:
907 cgm.errorNYI(expr->getSourceRange(),
908 std::string("unimplemented NVPTX builtin call: ") +
909 getContext().BuiltinInfo.getName(builtinId));
910 return mlir::Value{};
911 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctaid_w:
912 cgm.errorNYI(expr->getSourceRange(),
913 std::string("unimplemented NVPTX builtin call: ") +
914 getContext().BuiltinInfo.getName(builtinId));
915 return mlir::Value{};
916 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctarank:
917 cgm.errorNYI(expr->getSourceRange(),
918 std::string("unimplemented NVPTX builtin call: ") +
919 getContext().BuiltinInfo.getName(builtinId));
920 return mlir::Value{};
921 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctarank:
922 cgm.errorNYI(expr->getSourceRange(),
923 std::string("unimplemented NVPTX builtin call: ") +
924 getContext().BuiltinInfo.getName(builtinId));
925 return mlir::Value{};
926 case NVPTX::BI__nvvm_is_explicit_cluster:
927 cgm.errorNYI(expr->getSourceRange(),
928 std::string("unimplemented NVPTX builtin call: ") +
929 getContext().BuiltinInfo.getName(builtinId));
930 return mlir::Value{};
931 case NVPTX::BI__nvvm_isspacep_shared_cluster:
932 cgm.errorNYI(expr->getSourceRange(),
933 std::string("unimplemented NVPTX builtin call: ") +
934 getContext().BuiltinInfo.getName(builtinId));
935 return mlir::Value{};
936 case NVPTX::BI__nvvm_mapa:
937 cgm.errorNYI(expr->getSourceRange(),
938 std::string("unimplemented NVPTX builtin call: ") +
939 getContext().BuiltinInfo.getName(builtinId));
940 return mlir::Value{};
941 case NVPTX::BI__nvvm_mapa_shared_cluster:
942 cgm.errorNYI(expr->getSourceRange(),
943 std::string("unimplemented NVPTX builtin call: ") +
944 getContext().BuiltinInfo.getName(builtinId));
945 return mlir::Value{};
946 case NVPTX::BI__nvvm_getctarank:
947 cgm.errorNYI(expr->getSourceRange(),
948 std::string("unimplemented NVPTX builtin call: ") +
949 getContext().BuiltinInfo.getName(builtinId));
950 return mlir::Value{};
951 case NVPTX::BI__nvvm_getctarank_shared_cluster:
952 cgm.errorNYI(expr->getSourceRange(),
953 std::string("unimplemented NVPTX builtin call: ") +
954 getContext().BuiltinInfo.getName(builtinId));
955 return mlir::Value{};
956 case NVPTX::BI__nvvm_barrier_cluster_arrive:
957 return builder.emitIntrinsicCallOp(getLoc(expr->getExprLoc()),
958 "nvvm.barrier.cluster.arrive",
959 builder.getVoidTy());
960 case NVPTX::BI__nvvm_barrier_cluster_arrive_relaxed:
961 return builder.emitIntrinsicCallOp(getLoc(expr->getExprLoc()),
962 "nvvm.barrier.cluster.arrive.relaxed",
963 builder.getVoidTy());
964 case NVPTX::BI__nvvm_barrier_cluster_wait:
965 return builder.emitIntrinsicCallOp(getLoc(expr->getExprLoc()),
966 "nvvm.barrier.cluster.wait",
967 builder.getVoidTy());
968 case NVPTX::BI__nvvm_fence_sc_cluster:
969 return builder.emitIntrinsicCallOp(getLoc(expr->getExprLoc()),
970 "nvvm.fence.sc.cluster",
971 builder.getVoidTy());
972 case NVPTX::BI__nvvm_bar_sync:
973 return builder.emitIntrinsicCallOp(
974 getLoc(expr->getExprLoc()), "nvvm.barrier.cta.sync.aligned.all",
975 builder.getVoidTy(), mlir::ValueRange{emitScalarExpr(expr->getArg(0))});
976 case NVPTX::BI__syncthreads:
977 return builder.emitIntrinsicCallOp(
978 getLoc(expr->getExprLoc()), "nvvm.barrier.cta.sync.aligned.all",
979 builder.getVoidTy(),
980 mlir::ValueRange{builder.getConstInt(getLoc(expr->getExprLoc()),
981 builder.getSInt32Ty(), 0)});
982 case NVPTX::BI__nvvm_barrier_sync:
983 return builder.emitIntrinsicCallOp(
984 getLoc(expr->getExprLoc()), "nvvm.barrier.cta.sync.all",
985 builder.getVoidTy(), mlir::ValueRange{emitScalarExpr(expr->getArg(0))});
986 case NVPTX::BI__nvvm_barrier_sync_cnt:
987 return builder.emitIntrinsicCallOp(
988 getLoc(expr->getExprLoc()), "nvvm.barrier.cta.sync.count",
989 builder.getVoidTy(),
990 mlir::ValueRange{emitScalarExpr(expr->getArg(0)),
991 emitScalarExpr(expr->getArg(1))});
992 case NVPTX::BI__nvvm_bar0_and:
993 cgm.errorNYI(expr->getSourceRange(),
994 std::string("unimplemented NVPTX builtin call: ") +
995 getContext().BuiltinInfo.getName(builtinId));
996 return mlir::Value{};
997 case NVPTX::BI__nvvm_bar0_or:
998 cgm.errorNYI(expr->getSourceRange(),
999 std::string("unimplemented NVPTX builtin call: ") +
1000 getContext().BuiltinInfo.getName(builtinId));
1001 return mlir::Value{};
1002 case NVPTX::BI__nvvm_bar0_popc:
1003 cgm.errorNYI(expr->getSourceRange(),
1004 std::string("unimplemented NVPTX builtin call: ") +
1005 getContext().BuiltinInfo.getName(builtinId));
1006 return mlir::Value{};
1007
1008 default:
1009 return std::nullopt;
1010 }
1011}
Enumerates target-specific builtins in their own namespaces within namespace clang.
mlir::Location getLoc(clang::SourceLocation srcLoc)
Helpers to convert Clang's SourceLocation to a MLIR Location.
std::optional< mlir::Value > emitNVPTXBuiltinExpr(unsigned builtinID, const CallExpr *expr)
Emit a call to an NVPTX builtin function.
clang::ASTContext & getContext() const
CallExpr - Represents a function call (C99 6.5.2.2, C++ [expr.call]).
Definition Expr.h:2946
const internal::VariadicDynCastAllOfMatcher< Stmt, Expr > expr
Matches expressions.
The JSON file list parser is used to communicate input to InstallAPI.