83 case NVPTX::BI__nvvm_atom_add_gen_i:
84 case NVPTX::BI__nvvm_atom_add_gen_l:
85 case NVPTX::BI__nvvm_atom_add_gen_ll:
89 cir::MemOrder::Relaxed);
90 case NVPTX::BI__nvvm_atom_sub_gen_i:
91 case NVPTX::BI__nvvm_atom_sub_gen_l:
92 case NVPTX::BI__nvvm_atom_sub_gen_ll:
96 cir::MemOrder::Relaxed);
97 case NVPTX::BI__nvvm_atom_and_gen_i:
98 case NVPTX::BI__nvvm_atom_and_gen_l:
99 case NVPTX::BI__nvvm_atom_and_gen_ll:
103 cir::MemOrder::Relaxed);
104 case NVPTX::BI__nvvm_atom_or_gen_i:
105 case NVPTX::BI__nvvm_atom_or_gen_l:
106 case NVPTX::BI__nvvm_atom_or_gen_ll:
110 cir::MemOrder::Relaxed);
111 case NVPTX::BI__nvvm_atom_xor_gen_i:
112 case NVPTX::BI__nvvm_atom_xor_gen_l:
113 case NVPTX::BI__nvvm_atom_xor_gen_ll:
117 cir::MemOrder::Relaxed);
118 case NVPTX::BI__nvvm_atom_xchg_gen_i:
119 case NVPTX::BI__nvvm_atom_xchg_gen_l:
120 case NVPTX::BI__nvvm_atom_xchg_gen_ll:
122 case NVPTX::BI__nvvm_atom_max_gen_i:
123 case NVPTX::BI__nvvm_atom_max_gen_l:
124 case NVPTX::BI__nvvm_atom_max_gen_ll:
128 cir::MemOrder::Relaxed);
129 case NVPTX::BI__nvvm_atom_max_gen_ui:
130 case NVPTX::BI__nvvm_atom_max_gen_ul:
131 case NVPTX::BI__nvvm_atom_max_gen_ull:
135 cir::MemOrder::Relaxed);
136 case NVPTX::BI__nvvm_atom_min_gen_i:
137 case NVPTX::BI__nvvm_atom_min_gen_l:
138 case NVPTX::BI__nvvm_atom_min_gen_ll:
142 cir::MemOrder::Relaxed);
143 case NVPTX::BI__nvvm_atom_min_gen_ui:
144 case NVPTX::BI__nvvm_atom_min_gen_ul:
145 case NVPTX::BI__nvvm_atom_min_gen_ull:
149 cir::MemOrder::Relaxed);
150 case NVPTX::BI__nvvm_atom_cas_gen_us:
151 case NVPTX::BI__nvvm_atom_cas_gen_i:
152 case NVPTX::BI__nvvm_atom_cas_gen_l:
153 case NVPTX::BI__nvvm_atom_cas_gen_ll:
154 cgm.errorNYI(
expr->getSourceRange(),
155 std::string(
"unimplemented NVPTX builtin call: ") +
157 return mlir::Value{};
159 case NVPTX::BI__nvvm_atom_add_gen_f:
160 case NVPTX::BI__nvvm_atom_add_gen_d:
161 cgm.errorNYI(
expr->getSourceRange(),
162 std::string(
"unimplemented NVPTX builtin call: ") +
164 return mlir::Value{};
165 case NVPTX::BI__nvvm_atom_inc_gen_ui:
169 cir::MemOrder::Relaxed);
170 case NVPTX::BI__nvvm_atom_dec_gen_ui:
174 cir::MemOrder::Relaxed);
175 case NVPTX::BI__nvvm_ldg_c:
176 case NVPTX::BI__nvvm_ldg_sc:
177 case NVPTX::BI__nvvm_ldg_c2:
178 case NVPTX::BI__nvvm_ldg_sc2:
179 case NVPTX::BI__nvvm_ldg_c4:
180 case NVPTX::BI__nvvm_ldg_sc4:
181 case NVPTX::BI__nvvm_ldg_s:
182 case NVPTX::BI__nvvm_ldg_s2:
183 case NVPTX::BI__nvvm_ldg_s4:
184 case NVPTX::BI__nvvm_ldg_i:
185 case NVPTX::BI__nvvm_ldg_i2:
186 case NVPTX::BI__nvvm_ldg_i4:
187 case NVPTX::BI__nvvm_ldg_l:
188 case NVPTX::BI__nvvm_ldg_l2:
189 case NVPTX::BI__nvvm_ldg_ll:
190 case NVPTX::BI__nvvm_ldg_ll2:
191 case NVPTX::BI__nvvm_ldg_uc:
192 case NVPTX::BI__nvvm_ldg_uc2:
193 case NVPTX::BI__nvvm_ldg_uc4:
194 case NVPTX::BI__nvvm_ldg_us:
195 case NVPTX::BI__nvvm_ldg_us2:
196 case NVPTX::BI__nvvm_ldg_us4:
197 case NVPTX::BI__nvvm_ldg_ui:
198 case NVPTX::BI__nvvm_ldg_ui2:
199 case NVPTX::BI__nvvm_ldg_ui4:
200 case NVPTX::BI__nvvm_ldg_ul:
201 case NVPTX::BI__nvvm_ldg_ul2:
202 case NVPTX::BI__nvvm_ldg_ull:
203 case NVPTX::BI__nvvm_ldg_ull2:
204 case NVPTX::BI__nvvm_ldg_f:
205 case NVPTX::BI__nvvm_ldg_f2:
206 case NVPTX::BI__nvvm_ldg_f4:
207 case NVPTX::BI__nvvm_ldg_d:
208 case NVPTX::BI__nvvm_ldg_d2:
209 cgm.errorNYI(
expr->getSourceRange(),
210 std::string(
"unimplemented NVPTX builtin call: ") +
212 return mlir::Value{};
213 case NVPTX::BI__nvvm_ldu_c:
214 case NVPTX::BI__nvvm_ldu_sc:
215 case NVPTX::BI__nvvm_ldu_c2:
216 case NVPTX::BI__nvvm_ldu_sc2:
217 case NVPTX::BI__nvvm_ldu_c4:
218 case NVPTX::BI__nvvm_ldu_sc4:
219 case NVPTX::BI__nvvm_ldu_s:
220 case NVPTX::BI__nvvm_ldu_s2:
221 case NVPTX::BI__nvvm_ldu_s4:
222 case NVPTX::BI__nvvm_ldu_i:
223 case NVPTX::BI__nvvm_ldu_i2:
224 case NVPTX::BI__nvvm_ldu_i4:
225 case NVPTX::BI__nvvm_ldu_l:
226 case NVPTX::BI__nvvm_ldu_l2:
227 case NVPTX::BI__nvvm_ldu_ll:
228 case NVPTX::BI__nvvm_ldu_ll2:
229 case NVPTX::BI__nvvm_ldu_uc:
230 case NVPTX::BI__nvvm_ldu_uc2:
231 case NVPTX::BI__nvvm_ldu_uc4:
232 case NVPTX::BI__nvvm_ldu_us:
233 case NVPTX::BI__nvvm_ldu_us2:
234 case NVPTX::BI__nvvm_ldu_us4:
235 case NVPTX::BI__nvvm_ldu_ui:
236 case NVPTX::BI__nvvm_ldu_ui2:
237 case NVPTX::BI__nvvm_ldu_ui4:
238 case NVPTX::BI__nvvm_ldu_ul:
239 case NVPTX::BI__nvvm_ldu_ul2:
240 case NVPTX::BI__nvvm_ldu_ull:
241 case NVPTX::BI__nvvm_ldu_ull2:
243 case NVPTX::BI__nvvm_ldu_f:
244 case NVPTX::BI__nvvm_ldu_f2:
245 case NVPTX::BI__nvvm_ldu_f4:
246 case NVPTX::BI__nvvm_ldu_d:
247 case NVPTX::BI__nvvm_ldu_d2:
249 case NVPTX::BI__nvvm_atom_cta_add_gen_i:
250 case NVPTX::BI__nvvm_atom_cta_add_gen_l:
251 case NVPTX::BI__nvvm_atom_cta_add_gen_ll:
253 cir::SyncScopeKind::Workgroup);
254 case NVPTX::BI__nvvm_atom_sys_add_gen_i:
255 case NVPTX::BI__nvvm_atom_sys_add_gen_l:
256 case NVPTX::BI__nvvm_atom_sys_add_gen_ll:
258 cir::SyncScopeKind::System);
259 case NVPTX::BI__nvvm_atom_cta_add_gen_f:
260 case NVPTX::BI__nvvm_atom_cta_add_gen_d:
262 cir::SyncScopeKind::Workgroup);
263 case NVPTX::BI__nvvm_atom_sys_add_gen_f:
264 case NVPTX::BI__nvvm_atom_sys_add_gen_d:
266 cir::SyncScopeKind::System);
267 case NVPTX::BI__nvvm_atom_cta_xchg_gen_i:
268 case NVPTX::BI__nvvm_atom_cta_xchg_gen_l:
269 case NVPTX::BI__nvvm_atom_cta_xchg_gen_ll:
271 case NVPTX::BI__nvvm_atom_sys_xchg_gen_i:
272 case NVPTX::BI__nvvm_atom_sys_xchg_gen_l:
273 case NVPTX::BI__nvvm_atom_sys_xchg_gen_ll:
275 case NVPTX::BI__nvvm_atom_cta_max_gen_i:
276 case NVPTX::BI__nvvm_atom_cta_max_gen_ui:
277 case NVPTX::BI__nvvm_atom_cta_max_gen_l:
278 case NVPTX::BI__nvvm_atom_cta_max_gen_ul:
279 case NVPTX::BI__nvvm_atom_cta_max_gen_ll:
280 case NVPTX::BI__nvvm_atom_cta_max_gen_ull:
282 cir::SyncScopeKind::Workgroup);
283 case NVPTX::BI__nvvm_atom_sys_max_gen_i:
284 case NVPTX::BI__nvvm_atom_sys_max_gen_ui:
285 case NVPTX::BI__nvvm_atom_sys_max_gen_l:
286 case NVPTX::BI__nvvm_atom_sys_max_gen_ul:
287 case NVPTX::BI__nvvm_atom_sys_max_gen_ll:
288 case NVPTX::BI__nvvm_atom_sys_max_gen_ull:
290 cir::SyncScopeKind::System);
291 case NVPTX::BI__nvvm_atom_cta_min_gen_i:
292 case NVPTX::BI__nvvm_atom_cta_min_gen_ui:
293 case NVPTX::BI__nvvm_atom_cta_min_gen_l:
294 case NVPTX::BI__nvvm_atom_cta_min_gen_ul:
295 case NVPTX::BI__nvvm_atom_cta_min_gen_ll:
296 case NVPTX::BI__nvvm_atom_cta_min_gen_ull:
298 cir::SyncScopeKind::Workgroup);
299 case NVPTX::BI__nvvm_atom_sys_min_gen_i:
300 case NVPTX::BI__nvvm_atom_sys_min_gen_ui:
301 case NVPTX::BI__nvvm_atom_sys_min_gen_l:
302 case NVPTX::BI__nvvm_atom_sys_min_gen_ul:
303 case NVPTX::BI__nvvm_atom_sys_min_gen_ll:
304 case NVPTX::BI__nvvm_atom_sys_min_gen_ull:
306 cir::SyncScopeKind::System);
307 case NVPTX::BI__nvvm_atom_cta_inc_gen_ui:
309 cir::SyncScopeKind::Workgroup);
310 case NVPTX::BI__nvvm_atom_cta_dec_gen_ui:
312 cir::SyncScopeKind::Workgroup);
313 case NVPTX::BI__nvvm_atom_sys_inc_gen_ui:
315 cir::SyncScopeKind::System);
316 case NVPTX::BI__nvvm_atom_sys_dec_gen_ui:
318 cir::SyncScopeKind::System);
319 case NVPTX::BI__nvvm_atom_cta_and_gen_i:
320 case NVPTX::BI__nvvm_atom_cta_and_gen_l:
321 case NVPTX::BI__nvvm_atom_cta_and_gen_ll:
323 cir::SyncScopeKind::Workgroup);
324 case NVPTX::BI__nvvm_atom_sys_and_gen_i:
325 case NVPTX::BI__nvvm_atom_sys_and_gen_l:
326 case NVPTX::BI__nvvm_atom_sys_and_gen_ll:
328 cir::SyncScopeKind::System);
329 case NVPTX::BI__nvvm_atom_cta_or_gen_i:
330 case NVPTX::BI__nvvm_atom_cta_or_gen_l:
331 case NVPTX::BI__nvvm_atom_cta_or_gen_ll:
333 cir::SyncScopeKind::Workgroup);
334 case NVPTX::BI__nvvm_atom_sys_or_gen_i:
335 case NVPTX::BI__nvvm_atom_sys_or_gen_l:
336 case NVPTX::BI__nvvm_atom_sys_or_gen_ll:
338 cir::SyncScopeKind::System);
339 case NVPTX::BI__nvvm_atom_cta_xor_gen_i:
340 case NVPTX::BI__nvvm_atom_cta_xor_gen_l:
341 case NVPTX::BI__nvvm_atom_cta_xor_gen_ll:
343 cir::SyncScopeKind::Workgroup);
344 case NVPTX::BI__nvvm_atom_sys_xor_gen_i:
345 case NVPTX::BI__nvvm_atom_sys_xor_gen_l:
346 case NVPTX::BI__nvvm_atom_sys_xor_gen_ll:
348 cir::SyncScopeKind::System);
349 case NVPTX::BI__nvvm_atom_cta_cas_gen_us:
350 case NVPTX::BI__nvvm_atom_cta_cas_gen_i:
351 case NVPTX::BI__nvvm_atom_cta_cas_gen_l:
352 case NVPTX::BI__nvvm_atom_cta_cas_gen_ll:
353 cgm.errorNYI(
expr->getSourceRange(),
354 std::string(
"unimplemented NVPTX builtin call: ") +
356 return mlir::Value{};
357 case NVPTX::BI__nvvm_atom_sys_cas_gen_us:
358 case NVPTX::BI__nvvm_atom_sys_cas_gen_i:
359 case NVPTX::BI__nvvm_atom_sys_cas_gen_l:
360 case NVPTX::BI__nvvm_atom_sys_cas_gen_ll:
361 cgm.errorNYI(
expr->getSourceRange(),
362 std::string(
"unimplemented NVPTX builtin call: ") +
364 return mlir::Value{};
365 case NVPTX::BI__nvvm_match_all_sync_i32p:
366 case NVPTX::BI__nvvm_match_all_sync_i64p:
367 cgm.errorNYI(
expr->getSourceRange(),
368 std::string(
"unimplemented NVPTX builtin call: ") +
370 return mlir::Value{};
372 case NVPTX::BI__hmma_m16n16k16_ld_a:
373 case NVPTX::BI__hmma_m16n16k16_ld_b:
374 case NVPTX::BI__hmma_m16n16k16_ld_c_f16:
375 case NVPTX::BI__hmma_m16n16k16_ld_c_f32:
376 case NVPTX::BI__hmma_m32n8k16_ld_a:
377 case NVPTX::BI__hmma_m32n8k16_ld_b:
378 case NVPTX::BI__hmma_m32n8k16_ld_c_f16:
379 case NVPTX::BI__hmma_m32n8k16_ld_c_f32:
380 case NVPTX::BI__hmma_m8n32k16_ld_a:
381 case NVPTX::BI__hmma_m8n32k16_ld_b:
382 case NVPTX::BI__hmma_m8n32k16_ld_c_f16:
383 case NVPTX::BI__hmma_m8n32k16_ld_c_f32:
384 cgm.errorNYI(
expr->getSourceRange(),
385 std::string(
"unimplemented NVPTX builtin call: ") +
387 return mlir::Value{};
388 case NVPTX::BI__imma_m16n16k16_ld_a_s8:
389 case NVPTX::BI__imma_m16n16k16_ld_a_u8:
390 case NVPTX::BI__imma_m16n16k16_ld_b_s8:
391 case NVPTX::BI__imma_m16n16k16_ld_b_u8:
392 case NVPTX::BI__imma_m16n16k16_ld_c:
393 case NVPTX::BI__imma_m32n8k16_ld_a_s8:
394 case NVPTX::BI__imma_m32n8k16_ld_a_u8:
395 case NVPTX::BI__imma_m32n8k16_ld_b_s8:
396 case NVPTX::BI__imma_m32n8k16_ld_b_u8:
397 case NVPTX::BI__imma_m32n8k16_ld_c:
398 case NVPTX::BI__imma_m8n32k16_ld_a_s8:
399 case NVPTX::BI__imma_m8n32k16_ld_a_u8:
400 case NVPTX::BI__imma_m8n32k16_ld_b_s8:
401 case NVPTX::BI__imma_m8n32k16_ld_b_u8:
402 case NVPTX::BI__imma_m8n32k16_ld_c:
403 cgm.errorNYI(
expr->getSourceRange(),
404 std::string(
"unimplemented NVPTX builtin call: ") +
406 return mlir::Value{};
407 case NVPTX::BI__imma_m8n8k32_ld_a_s4:
408 case NVPTX::BI__imma_m8n8k32_ld_a_u4:
409 case NVPTX::BI__imma_m8n8k32_ld_b_s4:
410 case NVPTX::BI__imma_m8n8k32_ld_b_u4:
411 case NVPTX::BI__imma_m8n8k32_ld_c:
412 case NVPTX::BI__bmma_m8n8k128_ld_a_b1:
413 case NVPTX::BI__bmma_m8n8k128_ld_b_b1:
414 case NVPTX::BI__bmma_m8n8k128_ld_c:
415 cgm.errorNYI(
expr->getSourceRange(),
416 std::string(
"unimplemented NVPTX builtin call: ") +
418 return mlir::Value{};
419 case NVPTX::BI__dmma_m8n8k4_ld_a:
420 case NVPTX::BI__dmma_m8n8k4_ld_b:
421 case NVPTX::BI__dmma_m8n8k4_ld_c:
422 cgm.errorNYI(
expr->getSourceRange(),
423 std::string(
"unimplemented NVPTX builtin call: ") +
425 return mlir::Value{};
426 case NVPTX::BI__mma_bf16_m16n16k16_ld_a:
427 case NVPTX::BI__mma_bf16_m16n16k16_ld_b:
428 case NVPTX::BI__mma_bf16_m8n32k16_ld_a:
429 case NVPTX::BI__mma_bf16_m8n32k16_ld_b:
430 case NVPTX::BI__mma_bf16_m32n8k16_ld_a:
431 case NVPTX::BI__mma_bf16_m32n8k16_ld_b:
432 case NVPTX::BI__mma_tf32_m16n16k8_ld_a:
433 case NVPTX::BI__mma_tf32_m16n16k8_ld_b:
434 case NVPTX::BI__mma_tf32_m16n16k8_ld_c:
435 cgm.errorNYI(
expr->getSourceRange(),
436 std::string(
"unimplemented NVPTX builtin call: ") +
438 return mlir::Value{};
439 case NVPTX::BI__hmma_m16n16k16_st_c_f16:
440 case NVPTX::BI__hmma_m16n16k16_st_c_f32:
441 case NVPTX::BI__hmma_m32n8k16_st_c_f16:
442 case NVPTX::BI__hmma_m32n8k16_st_c_f32:
443 case NVPTX::BI__hmma_m8n32k16_st_c_f16:
444 case NVPTX::BI__hmma_m8n32k16_st_c_f32:
445 case NVPTX::BI__imma_m16n16k16_st_c_i32:
446 case NVPTX::BI__imma_m32n8k16_st_c_i32:
447 case NVPTX::BI__imma_m8n32k16_st_c_i32:
448 case NVPTX::BI__imma_m8n8k32_st_c_i32:
449 case NVPTX::BI__bmma_m8n8k128_st_c_i32:
450 case NVPTX::BI__dmma_m8n8k4_st_c_f64:
451 case NVPTX::BI__mma_m16n16k8_st_c_f32:
452 cgm.errorNYI(
expr->getSourceRange(),
453 std::string(
"unimplemented NVPTX builtin call: ") +
455 return mlir::Value{};
458 case NVPTX::BI__hmma_m16n16k16_mma_f16f16:
459 case NVPTX::BI__hmma_m16n16k16_mma_f32f16:
460 case NVPTX::BI__hmma_m16n16k16_mma_f32f32:
461 case NVPTX::BI__hmma_m16n16k16_mma_f16f32:
462 case NVPTX::BI__hmma_m32n8k16_mma_f16f16:
463 case NVPTX::BI__hmma_m32n8k16_mma_f32f16:
464 case NVPTX::BI__hmma_m32n8k16_mma_f32f32:
465 case NVPTX::BI__hmma_m32n8k16_mma_f16f32:
466 case NVPTX::BI__hmma_m8n32k16_mma_f16f16:
467 case NVPTX::BI__hmma_m8n32k16_mma_f32f16:
468 case NVPTX::BI__hmma_m8n32k16_mma_f32f32:
469 case NVPTX::BI__hmma_m8n32k16_mma_f16f32:
470 case NVPTX::BI__imma_m16n16k16_mma_s8:
471 case NVPTX::BI__imma_m16n16k16_mma_u8:
472 case NVPTX::BI__imma_m32n8k16_mma_s8:
473 case NVPTX::BI__imma_m32n8k16_mma_u8:
474 case NVPTX::BI__imma_m8n32k16_mma_s8:
475 case NVPTX::BI__imma_m8n32k16_mma_u8:
476 case NVPTX::BI__imma_m8n8k32_mma_s4:
477 case NVPTX::BI__imma_m8n8k32_mma_u4:
478 case NVPTX::BI__bmma_m8n8k128_mma_xor_popc_b1:
479 case NVPTX::BI__bmma_m8n8k128_mma_and_popc_b1:
480 case NVPTX::BI__dmma_m8n8k4_mma_f64:
481 case NVPTX::BI__mma_bf16_m16n16k16_mma_f32:
482 case NVPTX::BI__mma_bf16_m8n32k16_mma_f32:
483 case NVPTX::BI__mma_bf16_m32n8k16_mma_f32:
484 case NVPTX::BI__mma_tf32_m16n16k8_mma_f32:
485 cgm.errorNYI(
expr->getSourceRange(),
486 std::string(
"unimplemented NVPTX builtin call: ") +
488 return mlir::Value{};
490 case NVPTX::BI__nvvm_ex2_approx_f16:
491 cgm.errorNYI(
expr->getSourceRange(),
492 std::string(
"unimplemented NVPTX builtin call: ") +
494 return mlir::Value{};
495 case NVPTX::BI__nvvm_ex2_approx_f16x2:
496 cgm.errorNYI(
expr->getSourceRange(),
497 std::string(
"unimplemented NVPTX builtin call: ") +
499 return mlir::Value{};
500 case NVPTX::BI__nvvm_ff2f16x2_rn:
501 cgm.errorNYI(
expr->getSourceRange(),
502 std::string(
"unimplemented NVPTX builtin call: ") +
504 return mlir::Value{};
505 case NVPTX::BI__nvvm_ff2f16x2_rn_relu:
506 cgm.errorNYI(
expr->getSourceRange(),
507 std::string(
"unimplemented NVPTX builtin call: ") +
509 return mlir::Value{};
510 case NVPTX::BI__nvvm_ff2f16x2_rz:
511 cgm.errorNYI(
expr->getSourceRange(),
512 std::string(
"unimplemented NVPTX builtin call: ") +
514 return mlir::Value{};
515 case NVPTX::BI__nvvm_ff2f16x2_rz_relu:
516 cgm.errorNYI(
expr->getSourceRange(),
517 std::string(
"unimplemented NVPTX builtin call: ") +
519 return mlir::Value{};
520 case NVPTX::BI__nvvm_fma_rn_f16:
521 cgm.errorNYI(
expr->getSourceRange(),
522 std::string(
"unimplemented NVPTX builtin call: ") +
524 return mlir::Value{};
525 case NVPTX::BI__nvvm_fma_rn_f16x2:
526 cgm.errorNYI(
expr->getSourceRange(),
527 std::string(
"unimplemented NVPTX builtin call: ") +
529 return mlir::Value{};
530 case NVPTX::BI__nvvm_fma_rn_ftz_f16:
531 cgm.errorNYI(
expr->getSourceRange(),
532 std::string(
"unimplemented NVPTX builtin call: ") +
534 return mlir::Value{};
535 case NVPTX::BI__nvvm_fma_rn_ftz_f16x2:
536 cgm.errorNYI(
expr->getSourceRange(),
537 std::string(
"unimplemented NVPTX builtin call: ") +
539 return mlir::Value{};
540 case NVPTX::BI__nvvm_fma_rn_ftz_relu_f16:
541 cgm.errorNYI(
expr->getSourceRange(),
542 std::string(
"unimplemented NVPTX builtin call: ") +
544 return mlir::Value{};
545 case NVPTX::BI__nvvm_fma_rn_ftz_relu_f16x2:
546 cgm.errorNYI(
expr->getSourceRange(),
547 std::string(
"unimplemented NVPTX builtin call: ") +
549 return mlir::Value{};
550 case NVPTX::BI__nvvm_fma_rn_ftz_sat_f16:
551 cgm.errorNYI(
expr->getSourceRange(),
552 std::string(
"unimplemented NVPTX builtin call: ") +
554 return mlir::Value{};
555 case NVPTX::BI__nvvm_fma_rn_ftz_sat_f16x2:
556 cgm.errorNYI(
expr->getSourceRange(),
557 std::string(
"unimplemented NVPTX builtin call: ") +
559 return mlir::Value{};
560 case NVPTX::BI__nvvm_fma_rn_relu_f16:
561 cgm.errorNYI(
expr->getSourceRange(),
562 std::string(
"unimplemented NVPTX builtin call: ") +
564 return mlir::Value{};
565 case NVPTX::BI__nvvm_fma_rn_relu_f16x2:
566 cgm.errorNYI(
expr->getSourceRange(),
567 std::string(
"unimplemented NVPTX builtin call: ") +
569 return mlir::Value{};
570 case NVPTX::BI__nvvm_fma_rn_sat_f16:
571 cgm.errorNYI(
expr->getSourceRange(),
572 std::string(
"unimplemented NVPTX builtin call: ") +
574 return mlir::Value{};
575 case NVPTX::BI__nvvm_fma_rn_sat_f16x2:
576 cgm.errorNYI(
expr->getSourceRange(),
577 std::string(
"unimplemented NVPTX builtin call: ") +
579 return mlir::Value{};
580 case NVPTX::BI__nvvm_fma_rn_oob_f16:
581 cgm.errorNYI(
expr->getSourceRange(),
582 std::string(
"unimplemented NVPTX builtin call: ") +
584 return mlir::Value{};
585 case NVPTX::BI__nvvm_fma_rn_oob_f16x2:
586 cgm.errorNYI(
expr->getSourceRange(),
587 std::string(
"unimplemented NVPTX builtin call: ") +
589 return mlir::Value{};
590 case NVPTX::BI__nvvm_fma_rn_oob_bf16:
591 cgm.errorNYI(
expr->getSourceRange(),
592 std::string(
"unimplemented NVPTX builtin call: ") +
594 return mlir::Value{};
595 case NVPTX::BI__nvvm_fma_rn_oob_bf16x2:
596 cgm.errorNYI(
expr->getSourceRange(),
597 std::string(
"unimplemented NVPTX builtin call: ") +
599 return mlir::Value{};
600 case NVPTX::BI__nvvm_fma_rn_oob_relu_f16:
601 cgm.errorNYI(
expr->getSourceRange(),
602 std::string(
"unimplemented NVPTX builtin call: ") +
604 return mlir::Value{};
605 case NVPTX::BI__nvvm_fma_rn_oob_relu_f16x2:
606 cgm.errorNYI(
expr->getSourceRange(),
607 std::string(
"unimplemented NVPTX builtin call: ") +
609 return mlir::Value{};
610 case NVPTX::BI__nvvm_fma_rn_oob_relu_bf16:
611 cgm.errorNYI(
expr->getSourceRange(),
612 std::string(
"unimplemented NVPTX builtin call: ") +
614 return mlir::Value{};
615 case NVPTX::BI__nvvm_fma_rn_oob_relu_bf16x2:
616 cgm.errorNYI(
expr->getSourceRange(),
617 std::string(
"unimplemented NVPTX builtin call: ") +
619 return mlir::Value{};
620 case NVPTX::BI__nvvm_fmax_f16:
621 cgm.errorNYI(
expr->getSourceRange(),
622 std::string(
"unimplemented NVPTX builtin call: ") +
624 return mlir::Value{};
625 case NVPTX::BI__nvvm_fmax_f16x2:
626 cgm.errorNYI(
expr->getSourceRange(),
627 std::string(
"unimplemented NVPTX builtin call: ") +
629 return mlir::Value{};
630 case NVPTX::BI__nvvm_fmax_ftz_f16:
631 cgm.errorNYI(
expr->getSourceRange(),
632 std::string(
"unimplemented NVPTX builtin call: ") +
634 return mlir::Value{};
635 case NVPTX::BI__nvvm_fmax_ftz_f16x2:
636 cgm.errorNYI(
expr->getSourceRange(),
637 std::string(
"unimplemented NVPTX builtin call: ") +
639 return mlir::Value{};
640 case NVPTX::BI__nvvm_fmax_ftz_nan_f16:
641 cgm.errorNYI(
expr->getSourceRange(),
642 std::string(
"unimplemented NVPTX builtin call: ") +
644 return mlir::Value{};
645 case NVPTX::BI__nvvm_fmax_ftz_nan_f16x2:
646 cgm.errorNYI(
expr->getSourceRange(),
647 std::string(
"unimplemented NVPTX builtin call: ") +
649 return mlir::Value{};
650 case NVPTX::BI__nvvm_fmax_ftz_nan_xorsign_abs_f16:
651 cgm.errorNYI(
expr->getSourceRange(),
652 std::string(
"unimplemented NVPTX builtin call: ") +
654 return mlir::Value{};
655 case NVPTX::BI__nvvm_fmax_ftz_nan_xorsign_abs_f16x2:
656 cgm.errorNYI(
expr->getSourceRange(),
657 std::string(
"unimplemented NVPTX builtin call: ") +
659 return mlir::Value{};
660 case NVPTX::BI__nvvm_fmax_ftz_xorsign_abs_f16:
661 cgm.errorNYI(
expr->getSourceRange(),
662 std::string(
"unimplemented NVPTX builtin call: ") +
664 return mlir::Value{};
665 case NVPTX::BI__nvvm_fmax_ftz_xorsign_abs_f16x2:
666 cgm.errorNYI(
expr->getSourceRange(),
667 std::string(
"unimplemented NVPTX builtin call: ") +
669 return mlir::Value{};
670 case NVPTX::BI__nvvm_fmax_nan_f16:
671 cgm.errorNYI(
expr->getSourceRange(),
672 std::string(
"unimplemented NVPTX builtin call: ") +
674 return mlir::Value{};
675 case NVPTX::BI__nvvm_fmax_nan_f16x2:
676 cgm.errorNYI(
expr->getSourceRange(),
677 std::string(
"unimplemented NVPTX builtin call: ") +
679 return mlir::Value{};
680 case NVPTX::BI__nvvm_fmax_nan_xorsign_abs_f16:
681 cgm.errorNYI(
expr->getSourceRange(),
682 std::string(
"unimplemented NVPTX builtin call: ") +
684 return mlir::Value{};
685 case NVPTX::BI__nvvm_fmax_nan_xorsign_abs_f16x2:
686 cgm.errorNYI(
expr->getSourceRange(),
687 std::string(
"unimplemented NVPTX builtin call: ") +
689 return mlir::Value{};
690 case NVPTX::BI__nvvm_fmax_xorsign_abs_f16:
691 cgm.errorNYI(
expr->getSourceRange(),
692 std::string(
"unimplemented NVPTX builtin call: ") +
694 return mlir::Value{};
695 case NVPTX::BI__nvvm_fmax_xorsign_abs_f16x2:
696 cgm.errorNYI(
expr->getSourceRange(),
697 std::string(
"unimplemented NVPTX builtin call: ") +
699 return mlir::Value{};
700 case NVPTX::BI__nvvm_fmin_f16:
701 cgm.errorNYI(
expr->getSourceRange(),
702 std::string(
"unimplemented NVPTX builtin call: ") +
704 return mlir::Value{};
705 case NVPTX::BI__nvvm_fmin_f16x2:
706 cgm.errorNYI(
expr->getSourceRange(),
707 std::string(
"unimplemented NVPTX builtin call: ") +
709 return mlir::Value{};
710 case NVPTX::BI__nvvm_fmin_ftz_f16:
711 cgm.errorNYI(
expr->getSourceRange(),
712 std::string(
"unimplemented NVPTX builtin call: ") +
714 return mlir::Value{};
715 case NVPTX::BI__nvvm_fmin_ftz_f16x2:
716 cgm.errorNYI(
expr->getSourceRange(),
717 std::string(
"unimplemented NVPTX builtin call: ") +
719 return mlir::Value{};
720 case NVPTX::BI__nvvm_fmin_ftz_nan_f16:
721 cgm.errorNYI(
expr->getSourceRange(),
722 std::string(
"unimplemented NVPTX builtin call: ") +
724 return mlir::Value{};
725 case NVPTX::BI__nvvm_fmin_ftz_nan_f16x2:
726 cgm.errorNYI(
expr->getSourceRange(),
727 std::string(
"unimplemented NVPTX builtin call: ") +
729 return mlir::Value{};
730 case NVPTX::BI__nvvm_fmin_ftz_nan_xorsign_abs_f16:
731 cgm.errorNYI(
expr->getSourceRange(),
732 std::string(
"unimplemented NVPTX builtin call: ") +
734 return mlir::Value{};
735 case NVPTX::BI__nvvm_fmin_ftz_nan_xorsign_abs_f16x2:
736 cgm.errorNYI(
expr->getSourceRange(),
737 std::string(
"unimplemented NVPTX builtin call: ") +
739 return mlir::Value{};
740 case NVPTX::BI__nvvm_fmin_ftz_xorsign_abs_f16:
741 cgm.errorNYI(
expr->getSourceRange(),
742 std::string(
"unimplemented NVPTX builtin call: ") +
744 return mlir::Value{};
745 case NVPTX::BI__nvvm_fmin_ftz_xorsign_abs_f16x2:
746 cgm.errorNYI(
expr->getSourceRange(),
747 std::string(
"unimplemented NVPTX builtin call: ") +
749 return mlir::Value{};
750 case NVPTX::BI__nvvm_fmin_nan_f16:
751 cgm.errorNYI(
expr->getSourceRange(),
752 std::string(
"unimplemented NVPTX builtin call: ") +
754 return mlir::Value{};
755 case NVPTX::BI__nvvm_fmin_nan_f16x2:
756 cgm.errorNYI(
expr->getSourceRange(),
757 std::string(
"unimplemented NVPTX builtin call: ") +
759 return mlir::Value{};
760 case NVPTX::BI__nvvm_fmin_nan_xorsign_abs_f16:
761 cgm.errorNYI(
expr->getSourceRange(),
762 std::string(
"unimplemented NVPTX builtin call: ") +
764 return mlir::Value{};
765 case NVPTX::BI__nvvm_fmin_nan_xorsign_abs_f16x2:
766 cgm.errorNYI(
expr->getSourceRange(),
767 std::string(
"unimplemented NVPTX builtin call: ") +
769 return mlir::Value{};
770 case NVPTX::BI__nvvm_fmin_xorsign_abs_f16:
771 cgm.errorNYI(
expr->getSourceRange(),
772 std::string(
"unimplemented NVPTX builtin call: ") +
774 return mlir::Value{};
775 case NVPTX::BI__nvvm_fmin_xorsign_abs_f16x2:
776 cgm.errorNYI(
expr->getSourceRange(),
777 std::string(
"unimplemented NVPTX builtin call: ") +
779 return mlir::Value{};
780 case NVPTX::BI__nvvm_fabs_f:
781 case NVPTX::BI__nvvm_abs_bf16:
782 case NVPTX::BI__nvvm_abs_bf16x2:
783 case NVPTX::BI__nvvm_fabs_f16:
784 case NVPTX::BI__nvvm_fabs_f16x2:
786 case NVPTX::BI__nvvm_fabs_ftz_f:
787 case NVPTX::BI__nvvm_fabs_ftz_f16:
788 case NVPTX::BI__nvvm_fabs_ftz_f16x2:
790 case NVPTX::BI__nvvm_fabs_d:
792 case NVPTX::BI__nvvm_ex2_approx_d:
793 case NVPTX::BI__nvvm_ex2_approx_f:
795 case NVPTX::BI__nvvm_ex2_approx_ftz_f:
797 case NVPTX::BI__nvvm_ldg_h:
798 case NVPTX::BI__nvvm_ldg_h2:
799 cgm.errorNYI(
expr->getSourceRange(),
800 std::string(
"unimplemented NVPTX builtin call: ") +
802 return mlir::Value{};
803 case NVPTX::BI__nvvm_ldu_h:
804 case NVPTX::BI__nvvm_ldu_h2:
806 case NVPTX::BI__nvvm_cp_async_ca_shared_global_4:
807 cgm.errorNYI(
expr->getSourceRange(),
808 std::string(
"unimplemented NVPTX builtin call: ") +
810 return mlir::Value{};
811 case NVPTX::BI__nvvm_cp_async_ca_shared_global_8:
812 cgm.errorNYI(
expr->getSourceRange(),
813 std::string(
"unimplemented NVPTX builtin call: ") +
815 return mlir::Value{};
816 case NVPTX::BI__nvvm_cp_async_ca_shared_global_16:
817 cgm.errorNYI(
expr->getSourceRange(),
818 std::string(
"unimplemented NVPTX builtin call: ") +
820 return mlir::Value{};
821 case NVPTX::BI__nvvm_cp_async_cg_shared_global_16:
822 cgm.errorNYI(
expr->getSourceRange(),
823 std::string(
"unimplemented NVPTX builtin call: ") +
825 return mlir::Value{};
826 case NVPTX::BI__nvvm_read_ptx_sreg_clusterid_x:
827 cgm.errorNYI(
expr->getSourceRange(),
828 std::string(
"unimplemented NVPTX builtin call: ") +
830 return mlir::Value{};
831 case NVPTX::BI__nvvm_read_ptx_sreg_clusterid_y:
832 cgm.errorNYI(
expr->getSourceRange(),
833 std::string(
"unimplemented NVPTX builtin call: ") +
835 return mlir::Value{};
836 case NVPTX::BI__nvvm_read_ptx_sreg_clusterid_z:
837 cgm.errorNYI(
expr->getSourceRange(),
838 std::string(
"unimplemented NVPTX builtin call: ") +
840 return mlir::Value{};
841 case NVPTX::BI__nvvm_read_ptx_sreg_clusterid_w:
842 cgm.errorNYI(
expr->getSourceRange(),
843 std::string(
"unimplemented NVPTX builtin call: ") +
845 return mlir::Value{};
846 case NVPTX::BI__nvvm_read_ptx_sreg_nclusterid_x:
847 cgm.errorNYI(
expr->getSourceRange(),
848 std::string(
"unimplemented NVPTX builtin call: ") +
850 return mlir::Value{};
851 case NVPTX::BI__nvvm_read_ptx_sreg_nclusterid_y:
852 cgm.errorNYI(
expr->getSourceRange(),
853 std::string(
"unimplemented NVPTX builtin call: ") +
855 return mlir::Value{};
856 case NVPTX::BI__nvvm_read_ptx_sreg_nclusterid_z:
857 cgm.errorNYI(
expr->getSourceRange(),
858 std::string(
"unimplemented NVPTX builtin call: ") +
860 return mlir::Value{};
861 case NVPTX::BI__nvvm_read_ptx_sreg_nclusterid_w:
862 cgm.errorNYI(
expr->getSourceRange(),
863 std::string(
"unimplemented NVPTX builtin call: ") +
865 return mlir::Value{};
866 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctaid_x:
867 cgm.errorNYI(
expr->getSourceRange(),
868 std::string(
"unimplemented NVPTX builtin call: ") +
870 return mlir::Value{};
871 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctaid_y:
872 cgm.errorNYI(
expr->getSourceRange(),
873 std::string(
"unimplemented NVPTX builtin call: ") +
875 return mlir::Value{};
876 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctaid_z:
877 cgm.errorNYI(
expr->getSourceRange(),
878 std::string(
"unimplemented NVPTX builtin call: ") +
880 return mlir::Value{};
881 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctaid_w:
882 cgm.errorNYI(
expr->getSourceRange(),
883 std::string(
"unimplemented NVPTX builtin call: ") +
885 return mlir::Value{};
886 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctaid_x:
887 cgm.errorNYI(
expr->getSourceRange(),
888 std::string(
"unimplemented NVPTX builtin call: ") +
890 return mlir::Value{};
891 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctaid_y:
892 cgm.errorNYI(
expr->getSourceRange(),
893 std::string(
"unimplemented NVPTX builtin call: ") +
895 return mlir::Value{};
896 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctaid_z:
897 cgm.errorNYI(
expr->getSourceRange(),
898 std::string(
"unimplemented NVPTX builtin call: ") +
900 return mlir::Value{};
901 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctaid_w:
902 cgm.errorNYI(
expr->getSourceRange(),
903 std::string(
"unimplemented NVPTX builtin call: ") +
905 return mlir::Value{};
906 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctarank:
907 cgm.errorNYI(
expr->getSourceRange(),
908 std::string(
"unimplemented NVPTX builtin call: ") +
910 return mlir::Value{};
911 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctarank:
912 cgm.errorNYI(
expr->getSourceRange(),
913 std::string(
"unimplemented NVPTX builtin call: ") +
915 return mlir::Value{};
916 case NVPTX::BI__nvvm_is_explicit_cluster:
917 cgm.errorNYI(
expr->getSourceRange(),
918 std::string(
"unimplemented NVPTX builtin call: ") +
920 return mlir::Value{};
921 case NVPTX::BI__nvvm_isspacep_shared_cluster:
922 cgm.errorNYI(
expr->getSourceRange(),
923 std::string(
"unimplemented NVPTX builtin call: ") +
925 return mlir::Value{};
926 case NVPTX::BI__nvvm_mapa:
927 cgm.errorNYI(
expr->getSourceRange(),
928 std::string(
"unimplemented NVPTX builtin call: ") +
930 return mlir::Value{};
931 case NVPTX::BI__nvvm_mapa_shared_cluster:
932 cgm.errorNYI(
expr->getSourceRange(),
933 std::string(
"unimplemented NVPTX builtin call: ") +
935 return mlir::Value{};
936 case NVPTX::BI__nvvm_getctarank:
937 cgm.errorNYI(
expr->getSourceRange(),
938 std::string(
"unimplemented NVPTX builtin call: ") +
940 return mlir::Value{};
941 case NVPTX::BI__nvvm_getctarank_shared_cluster:
942 cgm.errorNYI(
expr->getSourceRange(),
943 std::string(
"unimplemented NVPTX builtin call: ") +
945 return mlir::Value{};
946 case NVPTX::BI__nvvm_barrier_cluster_arrive:
947 return builder.emitIntrinsicCallOp(
getLoc(
expr->getExprLoc()),
948 "nvvm.barrier.cluster.arrive",
949 builder.getVoidTy());
950 case NVPTX::BI__nvvm_barrier_cluster_arrive_relaxed:
951 return builder.emitIntrinsicCallOp(
getLoc(
expr->getExprLoc()),
952 "nvvm.barrier.cluster.arrive.relaxed",
953 builder.getVoidTy());
954 case NVPTX::BI__nvvm_barrier_cluster_wait:
955 return builder.emitIntrinsicCallOp(
getLoc(
expr->getExprLoc()),
956 "nvvm.barrier.cluster.wait",
957 builder.getVoidTy());
958 case NVPTX::BI__nvvm_fence_sc_cluster:
959 return builder.emitIntrinsicCallOp(
getLoc(
expr->getExprLoc()),
960 "nvvm.fence.sc.cluster",
961 builder.getVoidTy());
962 case NVPTX::BI__nvvm_bar_sync:
963 return builder.emitIntrinsicCallOp(
964 getLoc(
expr->getExprLoc()),
"nvvm.barrier.cta.sync.aligned.all",
965 builder.getVoidTy(), mlir::ValueRange{emitScalarExpr(expr->getArg(0))});
966 case NVPTX::BI__syncthreads:
967 return builder.emitIntrinsicCallOp(
968 getLoc(
expr->getExprLoc()),
"nvvm.barrier.cta.sync.aligned.all",
970 mlir::ValueRange{builder.getConstInt(getLoc(expr->getExprLoc()),
971 builder.getSInt32Ty(), 0)});
972 case NVPTX::BI__nvvm_barrier_sync:
973 return builder.emitIntrinsicCallOp(
974 getLoc(
expr->getExprLoc()),
"nvvm.barrier.cta.sync.all",
975 builder.getVoidTy(), mlir::ValueRange{emitScalarExpr(expr->getArg(0))});
976 case NVPTX::BI__nvvm_barrier_sync_cnt:
977 return builder.emitIntrinsicCallOp(
978 getLoc(
expr->getExprLoc()),
"nvvm.barrier.cta.sync.count",
980 mlir::ValueRange{emitScalarExpr(expr->getArg(0)),
981 emitScalarExpr(expr->getArg(1))});
982 case NVPTX::BI__nvvm_bar0_and:
983 cgm.errorNYI(
expr->getSourceRange(),
984 std::string(
"unimplemented NVPTX builtin call: ") +
986 return mlir::Value{};
987 case NVPTX::BI__nvvm_bar0_or:
988 cgm.errorNYI(
expr->getSourceRange(),
989 std::string(
"unimplemented NVPTX builtin call: ") +
991 return mlir::Value{};
992 case NVPTX::BI__nvvm_bar0_popc:
993 cgm.errorNYI(
expr->getSourceRange(),
994 std::string(
"unimplemented NVPTX builtin call: ") +
996 return mlir::Value{};