LLVM: include/llvm/IR/NVVMIntrinsicUtils.h Source File (original) (raw)
29
30
31
32
43
44
45
46
52
54
61
63
65
67 switch (IntrinsicID) {
68 case Intrinsic::nvvm_f2i_rm_ftz:
69 case Intrinsic::nvvm_f2i_rn_ftz:
70 case Intrinsic::nvvm_f2i_rp_ftz:
71 case Intrinsic::nvvm_f2i_rz_ftz:
72
73 case Intrinsic::nvvm_f2ui_rm_ftz:
74 case Intrinsic::nvvm_f2ui_rn_ftz:
75 case Intrinsic::nvvm_f2ui_rp_ftz:
76 case Intrinsic::nvvm_f2ui_rz_ftz:
77
78 case Intrinsic::nvvm_f2ll_rm_ftz:
79 case Intrinsic::nvvm_f2ll_rn_ftz:
80 case Intrinsic::nvvm_f2ll_rp_ftz:
81 case Intrinsic::nvvm_f2ll_rz_ftz:
82
83 case Intrinsic::nvvm_f2ull_rm_ftz:
84 case Intrinsic::nvvm_f2ull_rn_ftz:
85 case Intrinsic::nvvm_f2ull_rp_ftz:
86 case Intrinsic::nvvm_f2ull_rz_ftz:
87 return true;
88
89 case Intrinsic::nvvm_f2i_rm:
90 case Intrinsic::nvvm_f2i_rn:
91 case Intrinsic::nvvm_f2i_rp:
92 case Intrinsic::nvvm_f2i_rz:
93
94 case Intrinsic::nvvm_f2ui_rm:
95 case Intrinsic::nvvm_f2ui_rn:
96 case Intrinsic::nvvm_f2ui_rp:
97 case Intrinsic::nvvm_f2ui_rz:
98
99 case Intrinsic::nvvm_d2i_rm:
100 case Intrinsic::nvvm_d2i_rn:
101 case Intrinsic::nvvm_d2i_rp:
102 case Intrinsic::nvvm_d2i_rz:
103
104 case Intrinsic::nvvm_d2ui_rm:
105 case Intrinsic::nvvm_d2ui_rn:
106 case Intrinsic::nvvm_d2ui_rp:
107 case Intrinsic::nvvm_d2ui_rz:
108
109 case Intrinsic::nvvm_f2ll_rm:
110 case Intrinsic::nvvm_f2ll_rn:
111 case Intrinsic::nvvm_f2ll_rp:
112 case Intrinsic::nvvm_f2ll_rz:
113
114 case Intrinsic::nvvm_f2ull_rm:
115 case Intrinsic::nvvm_f2ull_rn:
116 case Intrinsic::nvvm_f2ull_rp:
117 case Intrinsic::nvvm_f2ull_rz:
118
119 case Intrinsic::nvvm_d2ll_rm:
120 case Intrinsic::nvvm_d2ll_rn:
121 case Intrinsic::nvvm_d2ll_rp:
122 case Intrinsic::nvvm_d2ll_rz:
123
124 case Intrinsic::nvvm_d2ull_rm:
125 case Intrinsic::nvvm_d2ull_rn:
126 case Intrinsic::nvvm_d2ull_rp:
127 case Intrinsic::nvvm_d2ull_rz:
128 return false;
129 }
130 llvm_unreachable("Checking FTZ flag for invalid f2i/d2i intrinsic");
131}
132
134 switch (IntrinsicID) {
135
136 case Intrinsic::nvvm_f2i_rm:
137 case Intrinsic::nvvm_f2i_rm_ftz:
138 case Intrinsic::nvvm_f2i_rn:
139 case Intrinsic::nvvm_f2i_rn_ftz:
140 case Intrinsic::nvvm_f2i_rp:
141 case Intrinsic::nvvm_f2i_rp_ftz:
142 case Intrinsic::nvvm_f2i_rz:
143 case Intrinsic::nvvm_f2i_rz_ftz:
144
145 case Intrinsic::nvvm_d2i_rm:
146 case Intrinsic::nvvm_d2i_rn:
147 case Intrinsic::nvvm_d2i_rp:
148 case Intrinsic::nvvm_d2i_rz:
149
150 case Intrinsic::nvvm_f2ll_rm:
151 case Intrinsic::nvvm_f2ll_rm_ftz:
152 case Intrinsic::nvvm_f2ll_rn:
153 case Intrinsic::nvvm_f2ll_rn_ftz:
154 case Intrinsic::nvvm_f2ll_rp:
155 case Intrinsic::nvvm_f2ll_rp_ftz:
156 case Intrinsic::nvvm_f2ll_rz:
157 case Intrinsic::nvvm_f2ll_rz_ftz:
158
159 case Intrinsic::nvvm_d2ll_rm:
160 case Intrinsic::nvvm_d2ll_rn:
161 case Intrinsic::nvvm_d2ll_rp:
162 case Intrinsic::nvvm_d2ll_rz:
163 return true;
164
165
166 case Intrinsic::nvvm_f2ui_rm:
167 case Intrinsic::nvvm_f2ui_rm_ftz:
168 case Intrinsic::nvvm_f2ui_rn:
169 case Intrinsic::nvvm_f2ui_rn_ftz:
170 case Intrinsic::nvvm_f2ui_rp:
171 case Intrinsic::nvvm_f2ui_rp_ftz:
172 case Intrinsic::nvvm_f2ui_rz:
173 case Intrinsic::nvvm_f2ui_rz_ftz:
174
175 case Intrinsic::nvvm_d2ui_rm:
176 case Intrinsic::nvvm_d2ui_rn:
177 case Intrinsic::nvvm_d2ui_rp:
178 case Intrinsic::nvvm_d2ui_rz:
179
180 case Intrinsic::nvvm_f2ull_rm:
181 case Intrinsic::nvvm_f2ull_rm_ftz:
182 case Intrinsic::nvvm_f2ull_rn:
183 case Intrinsic::nvvm_f2ull_rn_ftz:
184 case Intrinsic::nvvm_f2ull_rp:
185 case Intrinsic::nvvm_f2ull_rp_ftz:
186 case Intrinsic::nvvm_f2ull_rz:
187 case Intrinsic::nvvm_f2ull_rz_ftz:
188
189 case Intrinsic::nvvm_d2ull_rm:
190 case Intrinsic::nvvm_d2ull_rn:
191 case Intrinsic::nvvm_d2ull_rp:
192 case Intrinsic::nvvm_d2ull_rz:
193 return false;
194 }
196 "Checking invalid f2i/d2i intrinsic for signed int conversion");
197}
198
200 switch (IntrinsicID) {
201
202 case Intrinsic::nvvm_f2i_rm:
203 case Intrinsic::nvvm_f2i_rn:
204 case Intrinsic::nvvm_f2i_rp:
205 case Intrinsic::nvvm_f2i_rz:
206 case Intrinsic::nvvm_f2i_rm_ftz:
207 case Intrinsic::nvvm_f2i_rn_ftz:
208 case Intrinsic::nvvm_f2i_rp_ftz:
209 case Intrinsic::nvvm_f2i_rz_ftz:
210
211 case Intrinsic::nvvm_f2ui_rm:
212 case Intrinsic::nvvm_f2ui_rn:
213 case Intrinsic::nvvm_f2ui_rp:
214 case Intrinsic::nvvm_f2ui_rz:
215 case Intrinsic::nvvm_f2ui_rm_ftz:
216 case Intrinsic::nvvm_f2ui_rn_ftz:
217 case Intrinsic::nvvm_f2ui_rp_ftz:
218 case Intrinsic::nvvm_f2ui_rz_ftz:
219 return true;
220
221 case Intrinsic::nvvm_d2i_rm:
222 case Intrinsic::nvvm_d2i_rn:
223 case Intrinsic::nvvm_d2i_rp:
224 case Intrinsic::nvvm_d2i_rz:
225
226 case Intrinsic::nvvm_d2ui_rm:
227 case Intrinsic::nvvm_d2ui_rn:
228 case Intrinsic::nvvm_d2ui_rp:
229 case Intrinsic::nvvm_d2ui_rz:
230
231 case Intrinsic::nvvm_f2ll_rm:
232 case Intrinsic::nvvm_f2ll_rn:
233 case Intrinsic::nvvm_f2ll_rp:
234 case Intrinsic::nvvm_f2ll_rz:
235 case Intrinsic::nvvm_f2ll_rm_ftz:
236 case Intrinsic::nvvm_f2ll_rn_ftz:
237 case Intrinsic::nvvm_f2ll_rp_ftz:
238 case Intrinsic::nvvm_f2ll_rz_ftz:
239
240 case Intrinsic::nvvm_f2ull_rm:
241 case Intrinsic::nvvm_f2ull_rn:
242 case Intrinsic::nvvm_f2ull_rp:
243 case Intrinsic::nvvm_f2ull_rz:
244 case Intrinsic::nvvm_f2ull_rm_ftz:
245 case Intrinsic::nvvm_f2ull_rn_ftz:
246 case Intrinsic::nvvm_f2ull_rp_ftz:
247 case Intrinsic::nvvm_f2ull_rz_ftz:
248
249 case Intrinsic::nvvm_d2ll_rm:
250 case Intrinsic::nvvm_d2ll_rn:
251 case Intrinsic::nvvm_d2ll_rp:
252 case Intrinsic::nvvm_d2ll_rz:
253
254 case Intrinsic::nvvm_d2ull_rm:
255 case Intrinsic::nvvm_d2ull_rn:
256 case Intrinsic::nvvm_d2ull_rp:
257 case Intrinsic::nvvm_d2ull_rz:
258 return false;
259 }
260 llvm_unreachable("Checking NaN result for invalid f2i/d2i intrinsic");
261}
262
265 switch (IntrinsicID) {
266
267 case Intrinsic::nvvm_f2i_rm:
268 case Intrinsic::nvvm_f2ui_rm:
269 case Intrinsic::nvvm_f2i_rm_ftz:
270 case Intrinsic::nvvm_f2ui_rm_ftz:
271 case Intrinsic::nvvm_d2i_rm:
272 case Intrinsic::nvvm_d2ui_rm:
273
274 case Intrinsic::nvvm_f2ll_rm:
275 case Intrinsic::nvvm_f2ull_rm:
276 case Intrinsic::nvvm_f2ll_rm_ftz:
277 case Intrinsic::nvvm_f2ull_rm_ftz:
278 case Intrinsic::nvvm_d2ll_rm:
279 case Intrinsic::nvvm_d2ull_rm:
281
282
283 case Intrinsic::nvvm_f2i_rn:
284 case Intrinsic::nvvm_f2ui_rn:
285 case Intrinsic::nvvm_f2i_rn_ftz:
286 case Intrinsic::nvvm_f2ui_rn_ftz:
287 case Intrinsic::nvvm_d2i_rn:
288 case Intrinsic::nvvm_d2ui_rn:
289
290 case Intrinsic::nvvm_f2ll_rn:
291 case Intrinsic::nvvm_f2ull_rn:
292 case Intrinsic::nvvm_f2ll_rn_ftz:
293 case Intrinsic::nvvm_f2ull_rn_ftz:
294 case Intrinsic::nvvm_d2ll_rn:
295 case Intrinsic::nvvm_d2ull_rn:
297
298
299 case Intrinsic::nvvm_f2i_rp:
300 case Intrinsic::nvvm_f2ui_rp:
301 case Intrinsic::nvvm_f2i_rp_ftz:
302 case Intrinsic::nvvm_f2ui_rp_ftz:
303 case Intrinsic::nvvm_d2i_rp:
304 case Intrinsic::nvvm_d2ui_rp:
305
306 case Intrinsic::nvvm_f2ll_rp:
307 case Intrinsic::nvvm_f2ull_rp:
308 case Intrinsic::nvvm_f2ll_rp_ftz:
309 case Intrinsic::nvvm_f2ull_rp_ftz:
310 case Intrinsic::nvvm_d2ll_rp:
311 case Intrinsic::nvvm_d2ull_rp:
313
314
315 case Intrinsic::nvvm_f2i_rz:
316 case Intrinsic::nvvm_f2ui_rz:
317 case Intrinsic::nvvm_f2i_rz_ftz:
318 case Intrinsic::nvvm_f2ui_rz_ftz:
319 case Intrinsic::nvvm_d2i_rz:
320 case Intrinsic::nvvm_d2ui_rz:
321
322 case Intrinsic::nvvm_f2ll_rz:
323 case Intrinsic::nvvm_f2ull_rz:
324 case Intrinsic::nvvm_f2ll_rz_ftz:
325 case Intrinsic::nvvm_f2ull_rz_ftz:
326 case Intrinsic::nvvm_d2ll_rz:
327 case Intrinsic::nvvm_d2ull_rz:
329 }
330 llvm_unreachable("Checking rounding mode for invalid f2i/d2i intrinsic");
331}
332
334 switch (IntrinsicID) {
335 case Intrinsic::nvvm_fmax_ftz_f:
336 case Intrinsic::nvvm_fmax_ftz_nan_f:
337 case Intrinsic::nvvm_fmax_ftz_nan_xorsign_abs_f:
338 case Intrinsic::nvvm_fmax_ftz_xorsign_abs_f:
339
340 case Intrinsic::nvvm_fmin_ftz_f:
341 case Intrinsic::nvvm_fmin_ftz_nan_f:
342 case Intrinsic::nvvm_fmin_ftz_nan_xorsign_abs_f:
343 case Intrinsic::nvvm_fmin_ftz_xorsign_abs_f:
344 return true;
345
346 case Intrinsic::nvvm_fmax_d:
347 case Intrinsic::nvvm_fmax_f:
348 case Intrinsic::nvvm_fmax_nan_f:
349 case Intrinsic::nvvm_fmax_nan_xorsign_abs_f:
350 case Intrinsic::nvvm_fmax_xorsign_abs_f:
351
352 case Intrinsic::nvvm_fmin_d:
353 case Intrinsic::nvvm_fmin_f:
354 case Intrinsic::nvvm_fmin_nan_f:
355 case Intrinsic::nvvm_fmin_nan_xorsign_abs_f:
356 case Intrinsic::nvvm_fmin_xorsign_abs_f:
357 return false;
358 }
359 llvm_unreachable("Checking FTZ flag for invalid fmin/fmax intrinsic");
360}
361
363 switch (IntrinsicID) {
364 case Intrinsic::nvvm_fmax_ftz_nan_f:
365 case Intrinsic::nvvm_fmax_nan_f:
366 case Intrinsic::nvvm_fmax_ftz_nan_xorsign_abs_f:
367 case Intrinsic::nvvm_fmax_nan_xorsign_abs_f:
368
369 case Intrinsic::nvvm_fmin_ftz_nan_f:
370 case Intrinsic::nvvm_fmin_nan_f:
371 case Intrinsic::nvvm_fmin_ftz_nan_xorsign_abs_f:
372 case Intrinsic::nvvm_fmin_nan_xorsign_abs_f:
373 return true;
374
375 case Intrinsic::nvvm_fmax_d:
376 case Intrinsic::nvvm_fmax_f:
377 case Intrinsic::nvvm_fmax_ftz_f:
378 case Intrinsic::nvvm_fmax_ftz_xorsign_abs_f:
379 case Intrinsic::nvvm_fmax_xorsign_abs_f:
380
381 case Intrinsic::nvvm_fmin_d:
382 case Intrinsic::nvvm_fmin_f:
383 case Intrinsic::nvvm_fmin_ftz_f:
384 case Intrinsic::nvvm_fmin_ftz_xorsign_abs_f:
385 case Intrinsic::nvvm_fmin_xorsign_abs_f:
386 return false;
387 }
388 llvm_unreachable("Checking NaN flag for invalid fmin/fmax intrinsic");
389}
390
392 switch (IntrinsicID) {
393 case Intrinsic::nvvm_fmax_ftz_nan_xorsign_abs_f:
394 case Intrinsic::nvvm_fmax_ftz_xorsign_abs_f:
395 case Intrinsic::nvvm_fmax_nan_xorsign_abs_f:
396 case Intrinsic::nvvm_fmax_xorsign_abs_f:
397
398 case Intrinsic::nvvm_fmin_ftz_nan_xorsign_abs_f:
399 case Intrinsic::nvvm_fmin_ftz_xorsign_abs_f:
400 case Intrinsic::nvvm_fmin_nan_xorsign_abs_f:
401 case Intrinsic::nvvm_fmin_xorsign_abs_f:
402 return true;
403
404 case Intrinsic::nvvm_fmax_d:
405 case Intrinsic::nvvm_fmax_f:
406 case Intrinsic::nvvm_fmax_ftz_f:
407 case Intrinsic::nvvm_fmax_ftz_nan_f:
408 case Intrinsic::nvvm_fmax_nan_f:
409
410 case Intrinsic::nvvm_fmin_d:
411 case Intrinsic::nvvm_fmin_f:
412 case Intrinsic::nvvm_fmin_ftz_f:
413 case Intrinsic::nvvm_fmin_ftz_nan_f:
414 case Intrinsic::nvvm_fmin_nan_f:
415 return false;
416 }
417 llvm_unreachable("Checking XorSignAbs flag for invalid fmin/fmax intrinsic");
418}
419
421 switch (IntrinsicID) {
422 case Intrinsic::nvvm_ceil_ftz_f:
423 case Intrinsic::nvvm_fabs_ftz:
424 case Intrinsic::nvvm_floor_ftz_f:
425 case Intrinsic::nvvm_round_ftz_f:
426 case Intrinsic::nvvm_saturate_ftz_f:
427 case Intrinsic::nvvm_sqrt_rn_ftz_f:
428 return true;
429 case Intrinsic::nvvm_ceil_f:
430 case Intrinsic::nvvm_ceil_d:
431 case Intrinsic::nvvm_fabs:
432 case Intrinsic::nvvm_floor_f:
433 case Intrinsic::nvvm_floor_d:
434 case Intrinsic::nvvm_round_f:
435 case Intrinsic::nvvm_round_d:
436 case Intrinsic::nvvm_saturate_d:
437 case Intrinsic::nvvm_saturate_f:
438 case Intrinsic::nvvm_sqrt_f:
439 case Intrinsic::nvvm_sqrt_rn_d:
440 case Intrinsic::nvvm_sqrt_rn_f:
441 return false;
442 }
443 llvm_unreachable("Checking FTZ flag for invalid unary intrinsic");
444}
445
447 switch (IntrinsicID) {
448 case Intrinsic::nvvm_rcp_rm_ftz_f:
449 case Intrinsic::nvvm_rcp_rn_ftz_f:
450 case Intrinsic::nvvm_rcp_rp_ftz_f:
451 case Intrinsic::nvvm_rcp_rz_ftz_f:
452 return true;
453 case Intrinsic::nvvm_rcp_rm_d:
454 case Intrinsic::nvvm_rcp_rm_f:
455 case Intrinsic::nvvm_rcp_rn_d:
456 case Intrinsic::nvvm_rcp_rn_f:
457 case Intrinsic::nvvm_rcp_rp_d:
458 case Intrinsic::nvvm_rcp_rp_f:
459 case Intrinsic::nvvm_rcp_rz_d:
460 case Intrinsic::nvvm_rcp_rz_f:
461 return false;
462 }
463 llvm_unreachable("Checking FTZ flag for invalid rcp intrinsic");
464}
465
467 switch (IntrinsicID) {
468 case Intrinsic::nvvm_rcp_rm_f:
469 case Intrinsic::nvvm_rcp_rm_d:
470 case Intrinsic::nvvm_rcp_rm_ftz_f:
472
473 case Intrinsic::nvvm_rcp_rn_f:
474 case Intrinsic::nvvm_rcp_rn_d:
475 case Intrinsic::nvvm_rcp_rn_ftz_f:
477
478 case Intrinsic::nvvm_rcp_rp_f:
479 case Intrinsic::nvvm_rcp_rp_d:
480 case Intrinsic::nvvm_rcp_rp_ftz_f:
482
483 case Intrinsic::nvvm_rcp_rz_f:
484 case Intrinsic::nvvm_rcp_rz_d:
485 case Intrinsic::nvvm_rcp_rz_ftz_f:
487 }
488 llvm_unreachable("Checking rounding mode for invalid rcp intrinsic");
489}
490
496
498 switch (IntrinsicID) {
499 case Intrinsic::nvvm_add_rm_ftz_f:
500 case Intrinsic::nvvm_add_rn_ftz_f:
501 case Intrinsic::nvvm_add_rp_ftz_f:
502 case Intrinsic::nvvm_add_rz_ftz_f:
503 return true;
504
505 case Intrinsic::nvvm_add_rm_f:
506 case Intrinsic::nvvm_add_rn_f:
507 case Intrinsic::nvvm_add_rp_f:
508 case Intrinsic::nvvm_add_rz_f:
509 case Intrinsic::nvvm_add_rm_d:
510 case Intrinsic::nvvm_add_rn_d:
511 case Intrinsic::nvvm_add_rp_d:
512 case Intrinsic::nvvm_add_rz_d:
513 return false;
514 }
515 llvm_unreachable("Checking FTZ flag for invalid NVVM add intrinsic");
516}
517
519 switch (IntrinsicID) {
520 case Intrinsic::nvvm_add_rm_f:
521 case Intrinsic::nvvm_add_rm_d:
522 case Intrinsic::nvvm_add_rm_ftz_f:
524 case Intrinsic::nvvm_add_rn_f:
525 case Intrinsic::nvvm_add_rn_d:
526 case Intrinsic::nvvm_add_rn_ftz_f:
528 case Intrinsic::nvvm_add_rp_f:
529 case Intrinsic::nvvm_add_rp_d:
530 case Intrinsic::nvvm_add_rp_ftz_f:
532 case Intrinsic::nvvm_add_rz_f:
533 case Intrinsic::nvvm_add_rz_d:
534 case Intrinsic::nvvm_add_rz_ftz_f:
536 }
537 llvm_unreachable("Invalid FP instrinsic rounding mode for NVVM add");
538}
539
541 switch (IntrinsicID) {
542 case Intrinsic::nvvm_mul_rm_ftz_f:
543 case Intrinsic::nvvm_mul_rn_ftz_f:
544 case Intrinsic::nvvm_mul_rp_ftz_f:
545 case Intrinsic::nvvm_mul_rz_ftz_f:
546 return true;
547
548 case Intrinsic::nvvm_mul_rm_f:
549 case Intrinsic::nvvm_mul_rn_f:
550 case Intrinsic::nvvm_mul_rp_f:
551 case Intrinsic::nvvm_mul_rz_f:
552 case Intrinsic::nvvm_mul_rm_d:
553 case Intrinsic::nvvm_mul_rn_d:
554 case Intrinsic::nvvm_mul_rp_d:
555 case Intrinsic::nvvm_mul_rz_d:
556 return false;
557 }
558 llvm_unreachable("Checking FTZ flag for invalid NVVM mul intrinsic");
559}
560
562 switch (IntrinsicID) {
563 case Intrinsic::nvvm_mul_rm_f:
564 case Intrinsic::nvvm_mul_rm_d:
565 case Intrinsic::nvvm_mul_rm_ftz_f:
567 case Intrinsic::nvvm_mul_rn_f:
568 case Intrinsic::nvvm_mul_rn_d:
569 case Intrinsic::nvvm_mul_rn_ftz_f:
571 case Intrinsic::nvvm_mul_rp_f:
572 case Intrinsic::nvvm_mul_rp_d:
573 case Intrinsic::nvvm_mul_rp_ftz_f:
575 case Intrinsic::nvvm_mul_rz_f:
576 case Intrinsic::nvvm_mul_rz_d:
577 case Intrinsic::nvvm_mul_rz_ftz_f:
579 }
580 llvm_unreachable("Invalid FP instrinsic rounding mode for NVVM mul");
581}
582
584 switch (IntrinsicID) {
585 case Intrinsic::nvvm_div_rm_ftz_f:
586 case Intrinsic::nvvm_div_rn_ftz_f:
587 case Intrinsic::nvvm_div_rp_ftz_f:
588 case Intrinsic::nvvm_div_rz_ftz_f:
589 return true;
590
591 case Intrinsic::nvvm_div_rm_f:
592 case Intrinsic::nvvm_div_rn_f:
593 case Intrinsic::nvvm_div_rp_f:
594 case Intrinsic::nvvm_div_rz_f:
595 case Intrinsic::nvvm_div_rm_d:
596 case Intrinsic::nvvm_div_rn_d:
597 case Intrinsic::nvvm_div_rp_d:
598 case Intrinsic::nvvm_div_rz_d:
599 return false;
600 }
601 llvm_unreachable("Checking FTZ flag for invalid NVVM div intrinsic");
602}
603
605 switch (IntrinsicID) {
606 case Intrinsic::nvvm_div_rm_f:
607 case Intrinsic::nvvm_div_rm_d:
608 case Intrinsic::nvvm_div_rm_ftz_f:
610 case Intrinsic::nvvm_div_rn_f:
611 case Intrinsic::nvvm_div_rn_d:
612 case Intrinsic::nvvm_div_rn_ftz_f:
614 case Intrinsic::nvvm_div_rp_f:
615 case Intrinsic::nvvm_div_rp_d:
616 case Intrinsic::nvvm_div_rp_ftz_f:
618 case Intrinsic::nvvm_div_rz_f:
619 case Intrinsic::nvvm_div_rz_d:
620 case Intrinsic::nvvm_div_rz_ftz_f:
622 }
623 llvm_unreachable("Invalid FP instrinsic rounding mode for NVVM div");
624}
625
627 switch (IntrinsicID) {
628 case Intrinsic::nvvm_fma_rm_ftz_f:
629 case Intrinsic::nvvm_fma_rn_ftz_f:
630 case Intrinsic::nvvm_fma_rp_ftz_f:
631 case Intrinsic::nvvm_fma_rz_ftz_f:
632 return true;
633
634 case Intrinsic::nvvm_fma_rm_f:
635 case Intrinsic::nvvm_fma_rn_f:
636 case Intrinsic::nvvm_fma_rp_f:
637 case Intrinsic::nvvm_fma_rz_f:
638 case Intrinsic::nvvm_fma_rm_d:
639 case Intrinsic::nvvm_fma_rn_d:
640 case Intrinsic::nvvm_fma_rp_d:
641 case Intrinsic::nvvm_fma_rz_d:
642 return false;
643 }
644 llvm_unreachable("Checking FTZ flag for invalid NVVM fma intrinsic");
645}
646
648 switch (IntrinsicID) {
649 case Intrinsic::nvvm_fma_rm_f:
650 case Intrinsic::nvvm_fma_rm_d:
651 case Intrinsic::nvvm_fma_rm_ftz_f:
653 case Intrinsic::nvvm_fma_rn_f:
654 case Intrinsic::nvvm_fma_rn_d:
655 case Intrinsic::nvvm_fma_rn_ftz_f:
657 case Intrinsic::nvvm_fma_rp_f:
658 case Intrinsic::nvvm_fma_rp_d:
659 case Intrinsic::nvvm_fma_rp_ftz_f:
661 case Intrinsic::nvvm_fma_rz_f:
662 case Intrinsic::nvvm_fma_rz_d:
663 case Intrinsic::nvvm_fma_rz_ftz_f:
665 }
666 llvm_unreachable("Invalid FP instrinsic rounding mode for NVVM fma");
667}
668
669}