70 case NVPTX::BI__nvvm_atom_add_gen_i:
71 case NVPTX::BI__nvvm_atom_add_gen_l:
72 case NVPTX::BI__nvvm_atom_add_gen_ll:
76 cir::MemOrder::Relaxed);
77 case NVPTX::BI__nvvm_atom_sub_gen_i:
78 case NVPTX::BI__nvvm_atom_sub_gen_l:
79 case NVPTX::BI__nvvm_atom_sub_gen_ll:
83 cir::MemOrder::Relaxed);
84 case NVPTX::BI__nvvm_atom_and_gen_i:
85 case NVPTX::BI__nvvm_atom_and_gen_l:
86 case NVPTX::BI__nvvm_atom_and_gen_ll:
90 cir::MemOrder::Relaxed);
91 case NVPTX::BI__nvvm_atom_or_gen_i:
92 case NVPTX::BI__nvvm_atom_or_gen_l:
93 case NVPTX::BI__nvvm_atom_or_gen_ll:
97 cir::MemOrder::Relaxed);
98 case NVPTX::BI__nvvm_atom_xor_gen_i:
99 case NVPTX::BI__nvvm_atom_xor_gen_l:
100 case NVPTX::BI__nvvm_atom_xor_gen_ll:
104 cir::MemOrder::Relaxed);
105 case NVPTX::BI__nvvm_atom_xchg_gen_i:
106 case NVPTX::BI__nvvm_atom_xchg_gen_l:
107 case NVPTX::BI__nvvm_atom_xchg_gen_ll:
108 cgm.errorNYI(
expr->getSourceRange(),
109 std::string(
"unimplemented NVPTX builtin call: ") +
111 return mlir::Value{};
112 case NVPTX::BI__nvvm_atom_max_gen_i:
113 case NVPTX::BI__nvvm_atom_max_gen_l:
114 case NVPTX::BI__nvvm_atom_max_gen_ll:
118 cir::MemOrder::Relaxed);
119 case NVPTX::BI__nvvm_atom_max_gen_ui:
120 case NVPTX::BI__nvvm_atom_max_gen_ul:
121 case NVPTX::BI__nvvm_atom_max_gen_ull:
125 cir::MemOrder::Relaxed);
126 case NVPTX::BI__nvvm_atom_min_gen_i:
127 case NVPTX::BI__nvvm_atom_min_gen_l:
128 case NVPTX::BI__nvvm_atom_min_gen_ll:
132 cir::MemOrder::Relaxed);
133 case NVPTX::BI__nvvm_atom_min_gen_ui:
134 case NVPTX::BI__nvvm_atom_min_gen_ul:
135 case NVPTX::BI__nvvm_atom_min_gen_ull:
139 cir::MemOrder::Relaxed);
140 case NVPTX::BI__nvvm_atom_cas_gen_us:
141 case NVPTX::BI__nvvm_atom_cas_gen_i:
142 case NVPTX::BI__nvvm_atom_cas_gen_l:
143 case NVPTX::BI__nvvm_atom_cas_gen_ll:
144 cgm.errorNYI(
expr->getSourceRange(),
145 std::string(
"unimplemented NVPTX builtin call: ") +
147 return mlir::Value{};
149 case NVPTX::BI__nvvm_atom_add_gen_f:
150 case NVPTX::BI__nvvm_atom_add_gen_d:
151 cgm.errorNYI(
expr->getSourceRange(),
152 std::string(
"unimplemented NVPTX builtin call: ") +
154 return mlir::Value{};
155 case NVPTX::BI__nvvm_atom_inc_gen_ui:
159 cir::MemOrder::Relaxed);
160 case NVPTX::BI__nvvm_atom_dec_gen_ui:
164 cir::MemOrder::Relaxed);
165 case NVPTX::BI__nvvm_ldg_c:
166 case NVPTX::BI__nvvm_ldg_sc:
167 case NVPTX::BI__nvvm_ldg_c2:
168 case NVPTX::BI__nvvm_ldg_sc2:
169 case NVPTX::BI__nvvm_ldg_c4:
170 case NVPTX::BI__nvvm_ldg_sc4:
171 case NVPTX::BI__nvvm_ldg_s:
172 case NVPTX::BI__nvvm_ldg_s2:
173 case NVPTX::BI__nvvm_ldg_s4:
174 case NVPTX::BI__nvvm_ldg_i:
175 case NVPTX::BI__nvvm_ldg_i2:
176 case NVPTX::BI__nvvm_ldg_i4:
177 case NVPTX::BI__nvvm_ldg_l:
178 case NVPTX::BI__nvvm_ldg_l2:
179 case NVPTX::BI__nvvm_ldg_ll:
180 case NVPTX::BI__nvvm_ldg_ll2:
181 case NVPTX::BI__nvvm_ldg_uc:
182 case NVPTX::BI__nvvm_ldg_uc2:
183 case NVPTX::BI__nvvm_ldg_uc4:
184 case NVPTX::BI__nvvm_ldg_us:
185 case NVPTX::BI__nvvm_ldg_us2:
186 case NVPTX::BI__nvvm_ldg_us4:
187 case NVPTX::BI__nvvm_ldg_ui:
188 case NVPTX::BI__nvvm_ldg_ui2:
189 case NVPTX::BI__nvvm_ldg_ui4:
190 case NVPTX::BI__nvvm_ldg_ul:
191 case NVPTX::BI__nvvm_ldg_ul2:
192 case NVPTX::BI__nvvm_ldg_ull:
193 case NVPTX::BI__nvvm_ldg_ull2:
194 case NVPTX::BI__nvvm_ldg_f:
195 case NVPTX::BI__nvvm_ldg_f2:
196 case NVPTX::BI__nvvm_ldg_f4:
197 case NVPTX::BI__nvvm_ldg_d:
198 case NVPTX::BI__nvvm_ldg_d2:
199 cgm.errorNYI(
expr->getSourceRange(),
200 std::string(
"unimplemented NVPTX builtin call: ") +
202 return mlir::Value{};
203 case NVPTX::BI__nvvm_ldu_c:
204 case NVPTX::BI__nvvm_ldu_sc:
205 case NVPTX::BI__nvvm_ldu_c2:
206 case NVPTX::BI__nvvm_ldu_sc2:
207 case NVPTX::BI__nvvm_ldu_c4:
208 case NVPTX::BI__nvvm_ldu_sc4:
209 case NVPTX::BI__nvvm_ldu_s:
210 case NVPTX::BI__nvvm_ldu_s2:
211 case NVPTX::BI__nvvm_ldu_s4:
212 case NVPTX::BI__nvvm_ldu_i:
213 case NVPTX::BI__nvvm_ldu_i2:
214 case NVPTX::BI__nvvm_ldu_i4:
215 case NVPTX::BI__nvvm_ldu_l:
216 case NVPTX::BI__nvvm_ldu_l2:
217 case NVPTX::BI__nvvm_ldu_ll:
218 case NVPTX::BI__nvvm_ldu_ll2:
219 case NVPTX::BI__nvvm_ldu_uc:
220 case NVPTX::BI__nvvm_ldu_uc2:
221 case NVPTX::BI__nvvm_ldu_uc4:
222 case NVPTX::BI__nvvm_ldu_us:
223 case NVPTX::BI__nvvm_ldu_us2:
224 case NVPTX::BI__nvvm_ldu_us4:
225 case NVPTX::BI__nvvm_ldu_ui:
226 case NVPTX::BI__nvvm_ldu_ui2:
227 case NVPTX::BI__nvvm_ldu_ui4:
228 case NVPTX::BI__nvvm_ldu_ul:
229 case NVPTX::BI__nvvm_ldu_ul2:
230 case NVPTX::BI__nvvm_ldu_ull:
231 case NVPTX::BI__nvvm_ldu_ull2:
233 case NVPTX::BI__nvvm_ldu_f:
234 case NVPTX::BI__nvvm_ldu_f2:
235 case NVPTX::BI__nvvm_ldu_f4:
236 case NVPTX::BI__nvvm_ldu_d:
237 case NVPTX::BI__nvvm_ldu_d2:
239 case NVPTX::BI__nvvm_atom_cta_add_gen_i:
240 case NVPTX::BI__nvvm_atom_cta_add_gen_l:
241 case NVPTX::BI__nvvm_atom_cta_add_gen_ll:
243 cir::SyncScopeKind::Workgroup);
244 case NVPTX::BI__nvvm_atom_sys_add_gen_i:
245 case NVPTX::BI__nvvm_atom_sys_add_gen_l:
246 case NVPTX::BI__nvvm_atom_sys_add_gen_ll:
248 cir::SyncScopeKind::System);
249 case NVPTX::BI__nvvm_atom_cta_add_gen_f:
250 case NVPTX::BI__nvvm_atom_cta_add_gen_d:
252 cir::SyncScopeKind::Workgroup);
253 case NVPTX::BI__nvvm_atom_sys_add_gen_f:
254 case NVPTX::BI__nvvm_atom_sys_add_gen_d:
256 cir::SyncScopeKind::System);
257 case NVPTX::BI__nvvm_atom_cta_xchg_gen_i:
258 case NVPTX::BI__nvvm_atom_cta_xchg_gen_l:
259 case NVPTX::BI__nvvm_atom_cta_xchg_gen_ll:
260 cgm.errorNYI(
expr->getSourceRange(),
261 std::string(
"unimplemented NVPTX builtin call: ") +
263 return mlir::Value{};
264 case NVPTX::BI__nvvm_atom_sys_xchg_gen_i:
265 case NVPTX::BI__nvvm_atom_sys_xchg_gen_l:
266 case NVPTX::BI__nvvm_atom_sys_xchg_gen_ll:
267 cgm.errorNYI(
expr->getSourceRange(),
268 std::string(
"unimplemented NVPTX builtin call: ") +
270 return mlir::Value{};
271 case NVPTX::BI__nvvm_atom_cta_max_gen_i:
272 case NVPTX::BI__nvvm_atom_cta_max_gen_ui:
273 case NVPTX::BI__nvvm_atom_cta_max_gen_l:
274 case NVPTX::BI__nvvm_atom_cta_max_gen_ul:
275 case NVPTX::BI__nvvm_atom_cta_max_gen_ll:
276 case NVPTX::BI__nvvm_atom_cta_max_gen_ull:
278 cir::SyncScopeKind::Workgroup);
279 case NVPTX::BI__nvvm_atom_sys_max_gen_i:
280 case NVPTX::BI__nvvm_atom_sys_max_gen_ui:
281 case NVPTX::BI__nvvm_atom_sys_max_gen_l:
282 case NVPTX::BI__nvvm_atom_sys_max_gen_ul:
283 case NVPTX::BI__nvvm_atom_sys_max_gen_ll:
284 case NVPTX::BI__nvvm_atom_sys_max_gen_ull:
286 cir::SyncScopeKind::System);
287 case NVPTX::BI__nvvm_atom_cta_min_gen_i:
288 case NVPTX::BI__nvvm_atom_cta_min_gen_ui:
289 case NVPTX::BI__nvvm_atom_cta_min_gen_l:
290 case NVPTX::BI__nvvm_atom_cta_min_gen_ul:
291 case NVPTX::BI__nvvm_atom_cta_min_gen_ll:
292 case NVPTX::BI__nvvm_atom_cta_min_gen_ull:
294 cir::SyncScopeKind::Workgroup);
295 case NVPTX::BI__nvvm_atom_sys_min_gen_i:
296 case NVPTX::BI__nvvm_atom_sys_min_gen_ui:
297 case NVPTX::BI__nvvm_atom_sys_min_gen_l:
298 case NVPTX::BI__nvvm_atom_sys_min_gen_ul:
299 case NVPTX::BI__nvvm_atom_sys_min_gen_ll:
300 case NVPTX::BI__nvvm_atom_sys_min_gen_ull:
302 cir::SyncScopeKind::System);
303 case NVPTX::BI__nvvm_atom_cta_inc_gen_ui:
305 cir::SyncScopeKind::Workgroup);
306 case NVPTX::BI__nvvm_atom_cta_dec_gen_ui:
308 cir::SyncScopeKind::Workgroup);
309 case NVPTX::BI__nvvm_atom_sys_inc_gen_ui:
311 cir::SyncScopeKind::System);
312 case NVPTX::BI__nvvm_atom_sys_dec_gen_ui:
314 cir::SyncScopeKind::System);
315 case NVPTX::BI__nvvm_atom_cta_and_gen_i:
316 case NVPTX::BI__nvvm_atom_cta_and_gen_l:
317 case NVPTX::BI__nvvm_atom_cta_and_gen_ll:
319 cir::SyncScopeKind::Workgroup);
320 case NVPTX::BI__nvvm_atom_sys_and_gen_i:
321 case NVPTX::BI__nvvm_atom_sys_and_gen_l:
322 case NVPTX::BI__nvvm_atom_sys_and_gen_ll:
324 cir::SyncScopeKind::System);
325 case NVPTX::BI__nvvm_atom_cta_or_gen_i:
326 case NVPTX::BI__nvvm_atom_cta_or_gen_l:
327 case NVPTX::BI__nvvm_atom_cta_or_gen_ll:
329 cir::SyncScopeKind::Workgroup);
330 case NVPTX::BI__nvvm_atom_sys_or_gen_i:
331 case NVPTX::BI__nvvm_atom_sys_or_gen_l:
332 case NVPTX::BI__nvvm_atom_sys_or_gen_ll:
334 cir::SyncScopeKind::System);
335 case NVPTX::BI__nvvm_atom_cta_xor_gen_i:
336 case NVPTX::BI__nvvm_atom_cta_xor_gen_l:
337 case NVPTX::BI__nvvm_atom_cta_xor_gen_ll:
339 cir::SyncScopeKind::Workgroup);
340 case NVPTX::BI__nvvm_atom_sys_xor_gen_i:
341 case NVPTX::BI__nvvm_atom_sys_xor_gen_l:
342 case NVPTX::BI__nvvm_atom_sys_xor_gen_ll:
344 cir::SyncScopeKind::System);
345 case NVPTX::BI__nvvm_atom_cta_cas_gen_us:
346 case NVPTX::BI__nvvm_atom_cta_cas_gen_i:
347 case NVPTX::BI__nvvm_atom_cta_cas_gen_l:
348 case NVPTX::BI__nvvm_atom_cta_cas_gen_ll:
349 cgm.errorNYI(
expr->getSourceRange(),
350 std::string(
"unimplemented NVPTX builtin call: ") +
352 return mlir::Value{};
353 case NVPTX::BI__nvvm_atom_sys_cas_gen_us:
354 case NVPTX::BI__nvvm_atom_sys_cas_gen_i:
355 case NVPTX::BI__nvvm_atom_sys_cas_gen_l:
356 case NVPTX::BI__nvvm_atom_sys_cas_gen_ll:
357 cgm.errorNYI(
expr->getSourceRange(),
358 std::string(
"unimplemented NVPTX builtin call: ") +
360 return mlir::Value{};
361 case NVPTX::BI__nvvm_match_all_sync_i32p:
362 case NVPTX::BI__nvvm_match_all_sync_i64p:
363 cgm.errorNYI(
expr->getSourceRange(),
364 std::string(
"unimplemented NVPTX builtin call: ") +
366 return mlir::Value{};
368 case NVPTX::BI__hmma_m16n16k16_ld_a:
369 case NVPTX::BI__hmma_m16n16k16_ld_b:
370 case NVPTX::BI__hmma_m16n16k16_ld_c_f16:
371 case NVPTX::BI__hmma_m16n16k16_ld_c_f32:
372 case NVPTX::BI__hmma_m32n8k16_ld_a:
373 case NVPTX::BI__hmma_m32n8k16_ld_b:
374 case NVPTX::BI__hmma_m32n8k16_ld_c_f16:
375 case NVPTX::BI__hmma_m32n8k16_ld_c_f32:
376 case NVPTX::BI__hmma_m8n32k16_ld_a:
377 case NVPTX::BI__hmma_m8n32k16_ld_b:
378 case NVPTX::BI__hmma_m8n32k16_ld_c_f16:
379 case NVPTX::BI__hmma_m8n32k16_ld_c_f32:
380 cgm.errorNYI(
expr->getSourceRange(),
381 std::string(
"unimplemented NVPTX builtin call: ") +
383 return mlir::Value{};
384 case NVPTX::BI__imma_m16n16k16_ld_a_s8:
385 case NVPTX::BI__imma_m16n16k16_ld_a_u8:
386 case NVPTX::BI__imma_m16n16k16_ld_b_s8:
387 case NVPTX::BI__imma_m16n16k16_ld_b_u8:
388 case NVPTX::BI__imma_m16n16k16_ld_c:
389 case NVPTX::BI__imma_m32n8k16_ld_a_s8:
390 case NVPTX::BI__imma_m32n8k16_ld_a_u8:
391 case NVPTX::BI__imma_m32n8k16_ld_b_s8:
392 case NVPTX::BI__imma_m32n8k16_ld_b_u8:
393 case NVPTX::BI__imma_m32n8k16_ld_c:
394 case NVPTX::BI__imma_m8n32k16_ld_a_s8:
395 case NVPTX::BI__imma_m8n32k16_ld_a_u8:
396 case NVPTX::BI__imma_m8n32k16_ld_b_s8:
397 case NVPTX::BI__imma_m8n32k16_ld_b_u8:
398 case NVPTX::BI__imma_m8n32k16_ld_c:
399 cgm.errorNYI(
expr->getSourceRange(),
400 std::string(
"unimplemented NVPTX builtin call: ") +
402 return mlir::Value{};
403 case NVPTX::BI__imma_m8n8k32_ld_a_s4:
404 case NVPTX::BI__imma_m8n8k32_ld_a_u4:
405 case NVPTX::BI__imma_m8n8k32_ld_b_s4:
406 case NVPTX::BI__imma_m8n8k32_ld_b_u4:
407 case NVPTX::BI__imma_m8n8k32_ld_c:
408 case NVPTX::BI__bmma_m8n8k128_ld_a_b1:
409 case NVPTX::BI__bmma_m8n8k128_ld_b_b1:
410 case NVPTX::BI__bmma_m8n8k128_ld_c:
411 cgm.errorNYI(
expr->getSourceRange(),
412 std::string(
"unimplemented NVPTX builtin call: ") +
414 return mlir::Value{};
415 case NVPTX::BI__dmma_m8n8k4_ld_a:
416 case NVPTX::BI__dmma_m8n8k4_ld_b:
417 case NVPTX::BI__dmma_m8n8k4_ld_c:
418 cgm.errorNYI(
expr->getSourceRange(),
419 std::string(
"unimplemented NVPTX builtin call: ") +
421 return mlir::Value{};
422 case NVPTX::BI__mma_bf16_m16n16k16_ld_a:
423 case NVPTX::BI__mma_bf16_m16n16k16_ld_b:
424 case NVPTX::BI__mma_bf16_m8n32k16_ld_a:
425 case NVPTX::BI__mma_bf16_m8n32k16_ld_b:
426 case NVPTX::BI__mma_bf16_m32n8k16_ld_a:
427 case NVPTX::BI__mma_bf16_m32n8k16_ld_b:
428 case NVPTX::BI__mma_tf32_m16n16k8_ld_a:
429 case NVPTX::BI__mma_tf32_m16n16k8_ld_b:
430 case NVPTX::BI__mma_tf32_m16n16k8_ld_c:
431 cgm.errorNYI(
expr->getSourceRange(),
432 std::string(
"unimplemented NVPTX builtin call: ") +
434 return mlir::Value{};
435 case NVPTX::BI__hmma_m16n16k16_st_c_f16:
436 case NVPTX::BI__hmma_m16n16k16_st_c_f32:
437 case NVPTX::BI__hmma_m32n8k16_st_c_f16:
438 case NVPTX::BI__hmma_m32n8k16_st_c_f32:
439 case NVPTX::BI__hmma_m8n32k16_st_c_f16:
440 case NVPTX::BI__hmma_m8n32k16_st_c_f32:
441 case NVPTX::BI__imma_m16n16k16_st_c_i32:
442 case NVPTX::BI__imma_m32n8k16_st_c_i32:
443 case NVPTX::BI__imma_m8n32k16_st_c_i32:
444 case NVPTX::BI__imma_m8n8k32_st_c_i32:
445 case NVPTX::BI__bmma_m8n8k128_st_c_i32:
446 case NVPTX::BI__dmma_m8n8k4_st_c_f64:
447 case NVPTX::BI__mma_m16n16k8_st_c_f32:
448 cgm.errorNYI(
expr->getSourceRange(),
449 std::string(
"unimplemented NVPTX builtin call: ") +
451 return mlir::Value{};
454 case NVPTX::BI__hmma_m16n16k16_mma_f16f16:
455 case NVPTX::BI__hmma_m16n16k16_mma_f32f16:
456 case NVPTX::BI__hmma_m16n16k16_mma_f32f32:
457 case NVPTX::BI__hmma_m16n16k16_mma_f16f32:
458 case NVPTX::BI__hmma_m32n8k16_mma_f16f16:
459 case NVPTX::BI__hmma_m32n8k16_mma_f32f16:
460 case NVPTX::BI__hmma_m32n8k16_mma_f32f32:
461 case NVPTX::BI__hmma_m32n8k16_mma_f16f32:
462 case NVPTX::BI__hmma_m8n32k16_mma_f16f16:
463 case NVPTX::BI__hmma_m8n32k16_mma_f32f16:
464 case NVPTX::BI__hmma_m8n32k16_mma_f32f32:
465 case NVPTX::BI__hmma_m8n32k16_mma_f16f32:
466 case NVPTX::BI__imma_m16n16k16_mma_s8:
467 case NVPTX::BI__imma_m16n16k16_mma_u8:
468 case NVPTX::BI__imma_m32n8k16_mma_s8:
469 case NVPTX::BI__imma_m32n8k16_mma_u8:
470 case NVPTX::BI__imma_m8n32k16_mma_s8:
471 case NVPTX::BI__imma_m8n32k16_mma_u8:
472 case NVPTX::BI__imma_m8n8k32_mma_s4:
473 case NVPTX::BI__imma_m8n8k32_mma_u4:
474 case NVPTX::BI__bmma_m8n8k128_mma_xor_popc_b1:
475 case NVPTX::BI__bmma_m8n8k128_mma_and_popc_b1:
476 case NVPTX::BI__dmma_m8n8k4_mma_f64:
477 case NVPTX::BI__mma_bf16_m16n16k16_mma_f32:
478 case NVPTX::BI__mma_bf16_m8n32k16_mma_f32:
479 case NVPTX::BI__mma_bf16_m32n8k16_mma_f32:
480 case NVPTX::BI__mma_tf32_m16n16k8_mma_f32:
481 cgm.errorNYI(
expr->getSourceRange(),
482 std::string(
"unimplemented NVPTX builtin call: ") +
484 return mlir::Value{};
486 case NVPTX::BI__nvvm_ex2_approx_f16:
487 cgm.errorNYI(
expr->getSourceRange(),
488 std::string(
"unimplemented NVPTX builtin call: ") +
490 return mlir::Value{};
491 case NVPTX::BI__nvvm_ex2_approx_f16x2:
492 cgm.errorNYI(
expr->getSourceRange(),
493 std::string(
"unimplemented NVPTX builtin call: ") +
495 return mlir::Value{};
496 case NVPTX::BI__nvvm_ff2f16x2_rn:
497 cgm.errorNYI(
expr->getSourceRange(),
498 std::string(
"unimplemented NVPTX builtin call: ") +
500 return mlir::Value{};
501 case NVPTX::BI__nvvm_ff2f16x2_rn_relu:
502 cgm.errorNYI(
expr->getSourceRange(),
503 std::string(
"unimplemented NVPTX builtin call: ") +
505 return mlir::Value{};
506 case NVPTX::BI__nvvm_ff2f16x2_rz:
507 cgm.errorNYI(
expr->getSourceRange(),
508 std::string(
"unimplemented NVPTX builtin call: ") +
510 return mlir::Value{};
511 case NVPTX::BI__nvvm_ff2f16x2_rz_relu:
512 cgm.errorNYI(
expr->getSourceRange(),
513 std::string(
"unimplemented NVPTX builtin call: ") +
515 return mlir::Value{};
516 case NVPTX::BI__nvvm_fma_rn_f16:
517 cgm.errorNYI(
expr->getSourceRange(),
518 std::string(
"unimplemented NVPTX builtin call: ") +
520 return mlir::Value{};
521 case NVPTX::BI__nvvm_fma_rn_f16x2:
522 cgm.errorNYI(
expr->getSourceRange(),
523 std::string(
"unimplemented NVPTX builtin call: ") +
525 return mlir::Value{};
526 case NVPTX::BI__nvvm_fma_rn_ftz_f16:
527 cgm.errorNYI(
expr->getSourceRange(),
528 std::string(
"unimplemented NVPTX builtin call: ") +
530 return mlir::Value{};
531 case NVPTX::BI__nvvm_fma_rn_ftz_f16x2:
532 cgm.errorNYI(
expr->getSourceRange(),
533 std::string(
"unimplemented NVPTX builtin call: ") +
535 return mlir::Value{};
536 case NVPTX::BI__nvvm_fma_rn_ftz_relu_f16:
537 cgm.errorNYI(
expr->getSourceRange(),
538 std::string(
"unimplemented NVPTX builtin call: ") +
540 return mlir::Value{};
541 case NVPTX::BI__nvvm_fma_rn_ftz_relu_f16x2:
542 cgm.errorNYI(
expr->getSourceRange(),
543 std::string(
"unimplemented NVPTX builtin call: ") +
545 return mlir::Value{};
546 case NVPTX::BI__nvvm_fma_rn_ftz_sat_f16:
547 cgm.errorNYI(
expr->getSourceRange(),
548 std::string(
"unimplemented NVPTX builtin call: ") +
550 return mlir::Value{};
551 case NVPTX::BI__nvvm_fma_rn_ftz_sat_f16x2:
552 cgm.errorNYI(
expr->getSourceRange(),
553 std::string(
"unimplemented NVPTX builtin call: ") +
555 return mlir::Value{};
556 case NVPTX::BI__nvvm_fma_rn_relu_f16:
557 cgm.errorNYI(
expr->getSourceRange(),
558 std::string(
"unimplemented NVPTX builtin call: ") +
560 return mlir::Value{};
561 case NVPTX::BI__nvvm_fma_rn_relu_f16x2:
562 cgm.errorNYI(
expr->getSourceRange(),
563 std::string(
"unimplemented NVPTX builtin call: ") +
565 return mlir::Value{};
566 case NVPTX::BI__nvvm_fma_rn_sat_f16:
567 cgm.errorNYI(
expr->getSourceRange(),
568 std::string(
"unimplemented NVPTX builtin call: ") +
570 return mlir::Value{};
571 case NVPTX::BI__nvvm_fma_rn_sat_f16x2:
572 cgm.errorNYI(
expr->getSourceRange(),
573 std::string(
"unimplemented NVPTX builtin call: ") +
575 return mlir::Value{};
576 case NVPTX::BI__nvvm_fma_rn_oob_f16:
577 cgm.errorNYI(
expr->getSourceRange(),
578 std::string(
"unimplemented NVPTX builtin call: ") +
580 return mlir::Value{};
581 case NVPTX::BI__nvvm_fma_rn_oob_f16x2:
582 cgm.errorNYI(
expr->getSourceRange(),
583 std::string(
"unimplemented NVPTX builtin call: ") +
585 return mlir::Value{};
586 case NVPTX::BI__nvvm_fma_rn_oob_bf16:
587 cgm.errorNYI(
expr->getSourceRange(),
588 std::string(
"unimplemented NVPTX builtin call: ") +
590 return mlir::Value{};
591 case NVPTX::BI__nvvm_fma_rn_oob_bf16x2:
592 cgm.errorNYI(
expr->getSourceRange(),
593 std::string(
"unimplemented NVPTX builtin call: ") +
595 return mlir::Value{};
596 case NVPTX::BI__nvvm_fma_rn_oob_relu_f16:
597 cgm.errorNYI(
expr->getSourceRange(),
598 std::string(
"unimplemented NVPTX builtin call: ") +
600 return mlir::Value{};
601 case NVPTX::BI__nvvm_fma_rn_oob_relu_f16x2:
602 cgm.errorNYI(
expr->getSourceRange(),
603 std::string(
"unimplemented NVPTX builtin call: ") +
605 return mlir::Value{};
606 case NVPTX::BI__nvvm_fma_rn_oob_relu_bf16:
607 cgm.errorNYI(
expr->getSourceRange(),
608 std::string(
"unimplemented NVPTX builtin call: ") +
610 return mlir::Value{};
611 case NVPTX::BI__nvvm_fma_rn_oob_relu_bf16x2:
612 cgm.errorNYI(
expr->getSourceRange(),
613 std::string(
"unimplemented NVPTX builtin call: ") +
615 return mlir::Value{};
616 case NVPTX::BI__nvvm_fmax_f16:
617 cgm.errorNYI(
expr->getSourceRange(),
618 std::string(
"unimplemented NVPTX builtin call: ") +
620 return mlir::Value{};
621 case NVPTX::BI__nvvm_fmax_f16x2:
622 cgm.errorNYI(
expr->getSourceRange(),
623 std::string(
"unimplemented NVPTX builtin call: ") +
625 return mlir::Value{};
626 case NVPTX::BI__nvvm_fmax_ftz_f16:
627 cgm.errorNYI(
expr->getSourceRange(),
628 std::string(
"unimplemented NVPTX builtin call: ") +
630 return mlir::Value{};
631 case NVPTX::BI__nvvm_fmax_ftz_f16x2:
632 cgm.errorNYI(
expr->getSourceRange(),
633 std::string(
"unimplemented NVPTX builtin call: ") +
635 return mlir::Value{};
636 case NVPTX::BI__nvvm_fmax_ftz_nan_f16:
637 cgm.errorNYI(
expr->getSourceRange(),
638 std::string(
"unimplemented NVPTX builtin call: ") +
640 return mlir::Value{};
641 case NVPTX::BI__nvvm_fmax_ftz_nan_f16x2:
642 cgm.errorNYI(
expr->getSourceRange(),
643 std::string(
"unimplemented NVPTX builtin call: ") +
645 return mlir::Value{};
646 case NVPTX::BI__nvvm_fmax_ftz_nan_xorsign_abs_f16:
647 cgm.errorNYI(
expr->getSourceRange(),
648 std::string(
"unimplemented NVPTX builtin call: ") +
650 return mlir::Value{};
651 case NVPTX::BI__nvvm_fmax_ftz_nan_xorsign_abs_f16x2:
652 cgm.errorNYI(
expr->getSourceRange(),
653 std::string(
"unimplemented NVPTX builtin call: ") +
655 return mlir::Value{};
656 case NVPTX::BI__nvvm_fmax_ftz_xorsign_abs_f16:
657 cgm.errorNYI(
expr->getSourceRange(),
658 std::string(
"unimplemented NVPTX builtin call: ") +
660 return mlir::Value{};
661 case NVPTX::BI__nvvm_fmax_ftz_xorsign_abs_f16x2:
662 cgm.errorNYI(
expr->getSourceRange(),
663 std::string(
"unimplemented NVPTX builtin call: ") +
665 return mlir::Value{};
666 case NVPTX::BI__nvvm_fmax_nan_f16:
667 cgm.errorNYI(
expr->getSourceRange(),
668 std::string(
"unimplemented NVPTX builtin call: ") +
670 return mlir::Value{};
671 case NVPTX::BI__nvvm_fmax_nan_f16x2:
672 cgm.errorNYI(
expr->getSourceRange(),
673 std::string(
"unimplemented NVPTX builtin call: ") +
675 return mlir::Value{};
676 case NVPTX::BI__nvvm_fmax_nan_xorsign_abs_f16:
677 cgm.errorNYI(
expr->getSourceRange(),
678 std::string(
"unimplemented NVPTX builtin call: ") +
680 return mlir::Value{};
681 case NVPTX::BI__nvvm_fmax_nan_xorsign_abs_f16x2:
682 cgm.errorNYI(
expr->getSourceRange(),
683 std::string(
"unimplemented NVPTX builtin call: ") +
685 return mlir::Value{};
686 case NVPTX::BI__nvvm_fmax_xorsign_abs_f16:
687 cgm.errorNYI(
expr->getSourceRange(),
688 std::string(
"unimplemented NVPTX builtin call: ") +
690 return mlir::Value{};
691 case NVPTX::BI__nvvm_fmax_xorsign_abs_f16x2:
692 cgm.errorNYI(
expr->getSourceRange(),
693 std::string(
"unimplemented NVPTX builtin call: ") +
695 return mlir::Value{};
696 case NVPTX::BI__nvvm_fmin_f16:
697 cgm.errorNYI(
expr->getSourceRange(),
698 std::string(
"unimplemented NVPTX builtin call: ") +
700 return mlir::Value{};
701 case NVPTX::BI__nvvm_fmin_f16x2:
702 cgm.errorNYI(
expr->getSourceRange(),
703 std::string(
"unimplemented NVPTX builtin call: ") +
705 return mlir::Value{};
706 case NVPTX::BI__nvvm_fmin_ftz_f16:
707 cgm.errorNYI(
expr->getSourceRange(),
708 std::string(
"unimplemented NVPTX builtin call: ") +
710 return mlir::Value{};
711 case NVPTX::BI__nvvm_fmin_ftz_f16x2:
712 cgm.errorNYI(
expr->getSourceRange(),
713 std::string(
"unimplemented NVPTX builtin call: ") +
715 return mlir::Value{};
716 case NVPTX::BI__nvvm_fmin_ftz_nan_f16:
717 cgm.errorNYI(
expr->getSourceRange(),
718 std::string(
"unimplemented NVPTX builtin call: ") +
720 return mlir::Value{};
721 case NVPTX::BI__nvvm_fmin_ftz_nan_f16x2:
722 cgm.errorNYI(
expr->getSourceRange(),
723 std::string(
"unimplemented NVPTX builtin call: ") +
725 return mlir::Value{};
726 case NVPTX::BI__nvvm_fmin_ftz_nan_xorsign_abs_f16:
727 cgm.errorNYI(
expr->getSourceRange(),
728 std::string(
"unimplemented NVPTX builtin call: ") +
730 return mlir::Value{};
731 case NVPTX::BI__nvvm_fmin_ftz_nan_xorsign_abs_f16x2:
732 cgm.errorNYI(
expr->getSourceRange(),
733 std::string(
"unimplemented NVPTX builtin call: ") +
735 return mlir::Value{};
736 case NVPTX::BI__nvvm_fmin_ftz_xorsign_abs_f16:
737 cgm.errorNYI(
expr->getSourceRange(),
738 std::string(
"unimplemented NVPTX builtin call: ") +
740 return mlir::Value{};
741 case NVPTX::BI__nvvm_fmin_ftz_xorsign_abs_f16x2:
742 cgm.errorNYI(
expr->getSourceRange(),
743 std::string(
"unimplemented NVPTX builtin call: ") +
745 return mlir::Value{};
746 case NVPTX::BI__nvvm_fmin_nan_f16:
747 cgm.errorNYI(
expr->getSourceRange(),
748 std::string(
"unimplemented NVPTX builtin call: ") +
750 return mlir::Value{};
751 case NVPTX::BI__nvvm_fmin_nan_f16x2:
752 cgm.errorNYI(
expr->getSourceRange(),
753 std::string(
"unimplemented NVPTX builtin call: ") +
755 return mlir::Value{};
756 case NVPTX::BI__nvvm_fmin_nan_xorsign_abs_f16:
757 cgm.errorNYI(
expr->getSourceRange(),
758 std::string(
"unimplemented NVPTX builtin call: ") +
760 return mlir::Value{};
761 case NVPTX::BI__nvvm_fmin_nan_xorsign_abs_f16x2:
762 cgm.errorNYI(
expr->getSourceRange(),
763 std::string(
"unimplemented NVPTX builtin call: ") +
765 return mlir::Value{};
766 case NVPTX::BI__nvvm_fmin_xorsign_abs_f16:
767 cgm.errorNYI(
expr->getSourceRange(),
768 std::string(
"unimplemented NVPTX builtin call: ") +
770 return mlir::Value{};
771 case NVPTX::BI__nvvm_fmin_xorsign_abs_f16x2:
772 cgm.errorNYI(
expr->getSourceRange(),
773 std::string(
"unimplemented NVPTX builtin call: ") +
775 return mlir::Value{};
776 case NVPTX::BI__nvvm_fabs_f:
777 case NVPTX::BI__nvvm_abs_bf16:
778 case NVPTX::BI__nvvm_abs_bf16x2:
779 case NVPTX::BI__nvvm_fabs_f16:
780 case NVPTX::BI__nvvm_fabs_f16x2:
782 case NVPTX::BI__nvvm_fabs_ftz_f:
783 case NVPTX::BI__nvvm_fabs_ftz_f16:
784 case NVPTX::BI__nvvm_fabs_ftz_f16x2:
786 case NVPTX::BI__nvvm_fabs_d:
788 case NVPTX::BI__nvvm_ex2_approx_d:
789 case NVPTX::BI__nvvm_ex2_approx_f:
791 case NVPTX::BI__nvvm_ex2_approx_ftz_f:
793 case NVPTX::BI__nvvm_ldg_h:
794 case NVPTX::BI__nvvm_ldg_h2:
795 cgm.errorNYI(
expr->getSourceRange(),
796 std::string(
"unimplemented NVPTX builtin call: ") +
798 return mlir::Value{};
799 case NVPTX::BI__nvvm_ldu_h:
800 case NVPTX::BI__nvvm_ldu_h2:
802 case NVPTX::BI__nvvm_cp_async_ca_shared_global_4:
803 cgm.errorNYI(
expr->getSourceRange(),
804 std::string(
"unimplemented NVPTX builtin call: ") +
806 return mlir::Value{};
807 case NVPTX::BI__nvvm_cp_async_ca_shared_global_8:
808 cgm.errorNYI(
expr->getSourceRange(),
809 std::string(
"unimplemented NVPTX builtin call: ") +
811 return mlir::Value{};
812 case NVPTX::BI__nvvm_cp_async_ca_shared_global_16:
813 cgm.errorNYI(
expr->getSourceRange(),
814 std::string(
"unimplemented NVPTX builtin call: ") +
816 return mlir::Value{};
817 case NVPTX::BI__nvvm_cp_async_cg_shared_global_16:
818 cgm.errorNYI(
expr->getSourceRange(),
819 std::string(
"unimplemented NVPTX builtin call: ") +
821 return mlir::Value{};
822 case NVPTX::BI__nvvm_read_ptx_sreg_clusterid_x:
823 cgm.errorNYI(
expr->getSourceRange(),
824 std::string(
"unimplemented NVPTX builtin call: ") +
826 return mlir::Value{};
827 case NVPTX::BI__nvvm_read_ptx_sreg_clusterid_y:
828 cgm.errorNYI(
expr->getSourceRange(),
829 std::string(
"unimplemented NVPTX builtin call: ") +
831 return mlir::Value{};
832 case NVPTX::BI__nvvm_read_ptx_sreg_clusterid_z:
833 cgm.errorNYI(
expr->getSourceRange(),
834 std::string(
"unimplemented NVPTX builtin call: ") +
836 return mlir::Value{};
837 case NVPTX::BI__nvvm_read_ptx_sreg_clusterid_w:
838 cgm.errorNYI(
expr->getSourceRange(),
839 std::string(
"unimplemented NVPTX builtin call: ") +
841 return mlir::Value{};
842 case NVPTX::BI__nvvm_read_ptx_sreg_nclusterid_x:
843 cgm.errorNYI(
expr->getSourceRange(),
844 std::string(
"unimplemented NVPTX builtin call: ") +
846 return mlir::Value{};
847 case NVPTX::BI__nvvm_read_ptx_sreg_nclusterid_y:
848 cgm.errorNYI(
expr->getSourceRange(),
849 std::string(
"unimplemented NVPTX builtin call: ") +
851 return mlir::Value{};
852 case NVPTX::BI__nvvm_read_ptx_sreg_nclusterid_z:
853 cgm.errorNYI(
expr->getSourceRange(),
854 std::string(
"unimplemented NVPTX builtin call: ") +
856 return mlir::Value{};
857 case NVPTX::BI__nvvm_read_ptx_sreg_nclusterid_w:
858 cgm.errorNYI(
expr->getSourceRange(),
859 std::string(
"unimplemented NVPTX builtin call: ") +
861 return mlir::Value{};
862 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctaid_x:
863 cgm.errorNYI(
expr->getSourceRange(),
864 std::string(
"unimplemented NVPTX builtin call: ") +
866 return mlir::Value{};
867 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctaid_y:
868 cgm.errorNYI(
expr->getSourceRange(),
869 std::string(
"unimplemented NVPTX builtin call: ") +
871 return mlir::Value{};
872 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctaid_z:
873 cgm.errorNYI(
expr->getSourceRange(),
874 std::string(
"unimplemented NVPTX builtin call: ") +
876 return mlir::Value{};
877 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctaid_w:
878 cgm.errorNYI(
expr->getSourceRange(),
879 std::string(
"unimplemented NVPTX builtin call: ") +
881 return mlir::Value{};
882 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctaid_x:
883 cgm.errorNYI(
expr->getSourceRange(),
884 std::string(
"unimplemented NVPTX builtin call: ") +
886 return mlir::Value{};
887 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctaid_y:
888 cgm.errorNYI(
expr->getSourceRange(),
889 std::string(
"unimplemented NVPTX builtin call: ") +
891 return mlir::Value{};
892 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctaid_z:
893 cgm.errorNYI(
expr->getSourceRange(),
894 std::string(
"unimplemented NVPTX builtin call: ") +
896 return mlir::Value{};
897 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctaid_w:
898 cgm.errorNYI(
expr->getSourceRange(),
899 std::string(
"unimplemented NVPTX builtin call: ") +
901 return mlir::Value{};
902 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_ctarank:
903 cgm.errorNYI(
expr->getSourceRange(),
904 std::string(
"unimplemented NVPTX builtin call: ") +
906 return mlir::Value{};
907 case NVPTX::BI__nvvm_read_ptx_sreg_cluster_nctarank:
908 cgm.errorNYI(
expr->getSourceRange(),
909 std::string(
"unimplemented NVPTX builtin call: ") +
911 return mlir::Value{};
912 case NVPTX::BI__nvvm_is_explicit_cluster:
913 cgm.errorNYI(
expr->getSourceRange(),
914 std::string(
"unimplemented NVPTX builtin call: ") +
916 return mlir::Value{};
917 case NVPTX::BI__nvvm_isspacep_shared_cluster:
918 cgm.errorNYI(
expr->getSourceRange(),
919 std::string(
"unimplemented NVPTX builtin call: ") +
921 return mlir::Value{};
922 case NVPTX::BI__nvvm_mapa:
923 cgm.errorNYI(
expr->getSourceRange(),
924 std::string(
"unimplemented NVPTX builtin call: ") +
926 return mlir::Value{};
927 case NVPTX::BI__nvvm_mapa_shared_cluster:
928 cgm.errorNYI(
expr->getSourceRange(),
929 std::string(
"unimplemented NVPTX builtin call: ") +
931 return mlir::Value{};
932 case NVPTX::BI__nvvm_getctarank:
933 cgm.errorNYI(
expr->getSourceRange(),
934 std::string(
"unimplemented NVPTX builtin call: ") +
936 return mlir::Value{};
937 case NVPTX::BI__nvvm_getctarank_shared_cluster:
938 cgm.errorNYI(
expr->getSourceRange(),
939 std::string(
"unimplemented NVPTX builtin call: ") +
941 return mlir::Value{};
942 case NVPTX::BI__nvvm_barrier_cluster_arrive:
943 return builder.emitIntrinsicCallOp(
getLoc(
expr->getExprLoc()),
944 "nvvm.barrier.cluster.arrive",
945 builder.getVoidTy());
946 case NVPTX::BI__nvvm_barrier_cluster_arrive_relaxed:
947 return builder.emitIntrinsicCallOp(
getLoc(
expr->getExprLoc()),
948 "nvvm.barrier.cluster.arrive.relaxed",
949 builder.getVoidTy());
950 case NVPTX::BI__nvvm_barrier_cluster_wait:
951 return builder.emitIntrinsicCallOp(
getLoc(
expr->getExprLoc()),
952 "nvvm.barrier.cluster.wait",
953 builder.getVoidTy());
954 case NVPTX::BI__nvvm_fence_sc_cluster:
955 return builder.emitIntrinsicCallOp(
getLoc(
expr->getExprLoc()),
956 "nvvm.fence.sc.cluster",
957 builder.getVoidTy());
958 case NVPTX::BI__nvvm_bar_sync:
959 return builder.emitIntrinsicCallOp(
960 getLoc(
expr->getExprLoc()),
"nvvm.barrier.cta.sync.aligned.all",
961 builder.getVoidTy(), mlir::ValueRange{emitScalarExpr(expr->getArg(0))});
962 case NVPTX::BI__syncthreads:
963 return builder.emitIntrinsicCallOp(
964 getLoc(
expr->getExprLoc()),
"nvvm.barrier.cta.sync.aligned.all",
966 mlir::ValueRange{builder.getConstInt(getLoc(expr->getExprLoc()),
967 builder.getSInt32Ty(), 0)});
968 case NVPTX::BI__nvvm_barrier_sync:
969 return builder.emitIntrinsicCallOp(
970 getLoc(
expr->getExprLoc()),
"nvvm.barrier.cta.sync.all",
971 builder.getVoidTy(), mlir::ValueRange{emitScalarExpr(expr->getArg(0))});
972 case NVPTX::BI__nvvm_barrier_sync_cnt:
973 return builder.emitIntrinsicCallOp(
974 getLoc(
expr->getExprLoc()),
"nvvm.barrier.cta.sync.count",
976 mlir::ValueRange{emitScalarExpr(expr->getArg(0)),
977 emitScalarExpr(expr->getArg(1))});
978 case NVPTX::BI__nvvm_bar0_and:
979 cgm.errorNYI(
expr->getSourceRange(),
980 std::string(
"unimplemented NVPTX builtin call: ") +
982 return mlir::Value{};
983 case NVPTX::BI__nvvm_bar0_or:
984 cgm.errorNYI(
expr->getSourceRange(),
985 std::string(
"unimplemented NVPTX builtin call: ") +
987 return mlir::Value{};
988 case NVPTX::BI__nvvm_bar0_popc:
989 cgm.errorNYI(
expr->getSourceRange(),
990 std::string(
"unimplemented NVPTX builtin call: ") +
992 return mlir::Value{};