[AMDGPU] Add True16 register classes.
[llvm-project.git] / llvm / test / Transforms / Inline / AMDGPU / inline-denormal-fp-math.ll
blobe58f09e5edc3400fc3244cb6156de3341e3de78a
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -mtriple=amdgcn-amd-amdhsa -S -passes=inline < %s | FileCheck %s
3 ; RUN: opt -mtriple=amdgcn-amd-amdhsa -S -passes='cgscc(inline)' < %s | FileCheck %s
5 define i32 @func_default() {
6 ; CHECK-LABEL: @func_default(
7 ; CHECK-NEXT:    ret i32 0
9   ret i32 0
12 define i32 @func_ieee_ieee() #0 {
13 ; CHECK-LABEL: @func_ieee_ieee(
14 ; CHECK-NEXT:    ret i32 1
16   ret i32 1
19 define i32 @func_psz_psz() #1 {
20 ; CHECK-LABEL: @func_psz_psz(
21 ; CHECK-NEXT:    ret i32 2
23   ret i32 2
26 define i32 @func_psz_ieee() #2 {
27 ; CHECK-LABEL: @func_psz_ieee(
28 ; CHECK-NEXT:    ret i32 3
30   ret i32 3
33 define i32 @func_ieee_psz() #3 {
34 ; CHECK-LABEL: @func_ieee_psz(
35 ; CHECK-NEXT:    ret i32 4
37   ret i32 4
40 define i32 @func_dynamic_dynamic() #4 {
41 ; CHECK-LABEL: @func_dynamic_dynamic(
42 ; CHECK-NEXT:    ret i32 5
44   ret i32 5
47 define i32 @func_dynamic_ieee() #5 {
48 ; CHECK-LABEL: @func_dynamic_ieee(
49 ; CHECK-NEXT:    ret i32 6
51   ret i32 6
54 define i32 @func_ieee_dynamic() #6 {
55 ; CHECK-LABEL: @func_ieee_dynamic(
56 ; CHECK-NEXT:    ret i32 7
58   ret i32 7
61 define i32 @func_psz_dynamic() #7 {
62 ; CHECK-LABEL: @func_psz_dynamic(
63 ; CHECK-NEXT:    ret i32 8
65   ret i32 8
68 define i32 @func_dynamic_psz() #8 {
69 ; CHECK-LABEL: @func_dynamic_psz(
70 ; CHECK-NEXT:    ret i32 9
72   ret i32 9
75 define i32 @call_default_from_psz_psz() #1 {
76 ; CHECK-LABEL: @call_default_from_psz_psz(
77 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_default()
78 ; CHECK-NEXT:    ret i32 [[CALL]]
80   %call = call i32 @func_default()
81   ret i32 %call
84 define i32 @call_ieee_ieee_from_ieee_ieee() #0 {
85 ; CHECK-LABEL: @call_ieee_ieee_from_ieee_ieee(
86 ; CHECK-NEXT:    ret i32 1
88   %call = call i32 @func_ieee_ieee()
89   ret i32 %call
92 define i32 @call_ieee_ieee_from_psz_psz() #1 {
93 ; CHECK-LABEL: @call_ieee_ieee_from_psz_psz(
94 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_ieee()
95 ; CHECK-NEXT:    ret i32 [[CALL]]
97   %call = call i32 @func_ieee_ieee()
98   ret i32 %call
101 define i32 @call_psz_psz_from_ieee_ieee() #0 {
102 ; CHECK-LABEL: @call_psz_psz_from_ieee_ieee(
103 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_psz()
104 ; CHECK-NEXT:    ret i32 [[CALL]]
106   %call = call i32 @func_psz_psz()
107   ret i32 %call
110 define i32 @call_psz_psz_from_psz_psz() #1 {
111 ; CHECK-LABEL: @call_psz_psz_from_psz_psz(
112 ; CHECK-NEXT:    ret i32 2
114   %call = call i32 @func_psz_psz()
115   ret i32 %call
118 define i32 @call_psz_ieee_from_psz_psz() #1 {
119 ; CHECK-LABEL: @call_psz_ieee_from_psz_psz(
120 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_ieee()
121 ; CHECK-NEXT:    ret i32 [[CALL]]
123   %call = call i32 @func_psz_ieee()
124   ret i32 %call
127 define i32 @call_ieee_psz_from_psz_psz() #1 {
128 ; CHECK-LABEL: @call_ieee_psz_from_psz_psz(
129 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_psz()
130 ; CHECK-NEXT:    ret i32 [[CALL]]
132   %call = call i32 @func_ieee_psz()
133   ret i32 %call
136 define i32 @call_psz_ieee_from_ieee_ieee() #0 {
137 ; CHECK-LABEL: @call_psz_ieee_from_ieee_ieee(
138 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_ieee()
139 ; CHECK-NEXT:    ret i32 [[CALL]]
141   %call = call i32 @func_psz_ieee()
142   ret i32 %call
145 define i32 @call_ieee_psz_from_ieee_ieee() #0 {
146 ; CHECK-LABEL: @call_ieee_psz_from_ieee_ieee(
147 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_psz()
148 ; CHECK-NEXT:    ret i32 [[CALL]]
150   %call = call i32 @func_ieee_psz()
151   ret i32 %call
154 define i32 @call_ieee_ieee_from_psz_ieee() #2 {
155 ; CHECK-LABEL: @call_ieee_ieee_from_psz_ieee(
156 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_ieee()
157 ; CHECK-NEXT:    ret i32 [[CALL]]
159   %call = call i32 @func_ieee_ieee()
160   ret i32 %call
163 define i32 @call_psz_ieee_from_psz_ieee() #2 {
164 ; CHECK-LABEL: @call_psz_ieee_from_psz_ieee(
165 ; CHECK-NEXT:    ret i32 3
167   %call = call i32 @func_psz_ieee()
168   ret i32 %call
171 define i32 @call_ieee_psz_from_psz_ieee() #2 {
172 ; CHECK-LABEL: @call_ieee_psz_from_psz_ieee(
173 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_psz()
174 ; CHECK-NEXT:    ret i32 [[CALL]]
176   %call = call i32 @func_ieee_psz()
177   ret i32 %call
180 define i32 @call_psz_psz_from_psz_ieee() #2 {
181 ; CHECK-LABEL: @call_psz_psz_from_psz_ieee(
182 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_psz()
183 ; CHECK-NEXT:    ret i32 [[CALL]]
185   %call = call i32 @func_psz_psz()
186   ret i32 %call
189 define i32 @call_ieee_ieee_from_ieee_psz() #3 {
190 ; CHECK-LABEL: @call_ieee_ieee_from_ieee_psz(
191 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_ieee()
192 ; CHECK-NEXT:    ret i32 [[CALL]]
194   %call = call i32 @func_ieee_ieee()
195   ret i32 %call
198 define i32 @call_psz_ieee_from_ieee_psz() #3 {
199 ; CHECK-LABEL: @call_psz_ieee_from_ieee_psz(
200 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_ieee()
201 ; CHECK-NEXT:    ret i32 [[CALL]]
203   %call = call i32 @func_psz_ieee()
204   ret i32 %call
207 define i32 @call_ieee_psz_from_ieee_psz() #3 {
208 ; CHECK-LABEL: @call_ieee_psz_from_ieee_psz(
209 ; CHECK-NEXT:    ret i32 4
211   %call = call i32 @func_ieee_psz()
212   ret i32 %call
215 define i32 @call_psz_psz_from_ieee_psz() #3 {
216 ; CHECK-LABEL: @call_psz_psz_from_ieee_psz(
217 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_psz()
218 ; CHECK-NEXT:    ret i32 [[CALL]]
220   %call = call i32 @func_psz_psz()
221   ret i32 %call
224 define i32 @call_dynamic_dynamic_from_ieee_ieee() #0 {
225 ; CHECK-LABEL: @call_dynamic_dynamic_from_ieee_ieee(
226 ; CHECK-NEXT:    ret i32 5
228   %call = call i32 @func_dynamic_dynamic()
229   ret i32 %call
232 define i32 @call_dynamic_ieee_from_ieee_ieee() #0 {
233 ; CHECK-LABEL: @call_dynamic_ieee_from_ieee_ieee(
234 ; CHECK-NEXT:    ret i32 6
236   %call = call i32 @func_dynamic_ieee()
237   ret i32 %call
240 define i32 @call_ieee_dynamic_from_ieee_ieee() #0 {
241 ; CHECK-LABEL: @call_ieee_dynamic_from_ieee_ieee(
242 ; CHECK-NEXT:    ret i32 7
244   %call = call i32 @func_ieee_dynamic()
245   ret i32 %call
248 define i32 @call_dynamic_psz_from_ieee_ieee() #0 {
249 ; CHECK-LABEL: @call_dynamic_psz_from_ieee_ieee(
250 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_dynamic_psz()
251 ; CHECK-NEXT:    ret i32 [[CALL]]
253   %call = call i32 @func_dynamic_psz()
254   ret i32 %call
257 define i32 @call_psz_dynamic_from_ieee_ieee() #0 {
258 ; CHECK-LABEL: @call_psz_dynamic_from_ieee_ieee(
259 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_dynamic()
260 ; CHECK-NEXT:    ret i32 [[CALL]]
262   %call = call i32 @func_psz_dynamic()
263   ret i32 %call
266 define i32 @call_dynamic_dynamic_from_psz_psz() #1 {
267 ; CHECK-LABEL: @call_dynamic_dynamic_from_psz_psz(
268 ; CHECK-NEXT:    ret i32 5
270   %call = call i32 @func_dynamic_dynamic()
271   ret i32 %call
274 define i32 @call_ieee_dynamic_from_psz_psz() #1 {
275 ; CHECK-LABEL: @call_ieee_dynamic_from_psz_psz(
276 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_dynamic()
277 ; CHECK-NEXT:    ret i32 [[CALL]]
279   %call = call i32 @func_ieee_dynamic()
280   ret i32 %call
283 define i32 @call_dynamic_ieee_from_psz_psz() #1 {
284 ; CHECK-LABEL: @call_dynamic_ieee_from_psz_psz(
285 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_dynamic_ieee()
286 ; CHECK-NEXT:    ret i32 [[CALL]]
288   %call = call i32 @func_dynamic_ieee()
289   ret i32 %call
292 define i32 @call_psz_dynamic_from_psz_psz() #1 {
293 ; CHECK-LABEL: @call_psz_dynamic_from_psz_psz(
294 ; CHECK-NEXT:    ret i32 8
296   %call = call i32 @func_psz_dynamic()
297   ret i32 %call
300 define i32 @call_dynamic_psz_from_psz_psz() #1 {
301 ; CHECK-LABEL: @call_dynamic_psz_from_psz_psz(
302 ; CHECK-NEXT:    ret i32 9
304   %call = call i32 @func_dynamic_psz()
305   ret i32 %call
308 define i32 @call_dynamic_dynamic_from_psz_ieee() #2 {
309 ; CHECK-LABEL: @call_dynamic_dynamic_from_psz_ieee(
310 ; CHECK-NEXT:    ret i32 5
312   %call = call i32 @func_dynamic_dynamic()
313   ret i32 %call
316 define i32 @call_dynamic_ieee_from_psz_ieee() #2 {
317 ; CHECK-LABEL: @call_dynamic_ieee_from_psz_ieee(
318 ; CHECK-NEXT:    ret i32 6
320   %call = call i32 @func_dynamic_ieee()
321   ret i32 %call
324 define i32 @call_ieee_dynamic_from_psz_ieee() #2 {
325 ; CHECK-LABEL: @call_ieee_dynamic_from_psz_ieee(
326 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_dynamic()
327 ; CHECK-NEXT:    ret i32 [[CALL]]
329   %call = call i32 @func_ieee_dynamic()
330   ret i32 %call
333 define i32 @call_dynamic_psz_from_psz_ieee() #2 {
334 ; CHECK-LABEL: @call_dynamic_psz_from_psz_ieee(
335 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_dynamic_psz()
336 ; CHECK-NEXT:    ret i32 [[CALL]]
338   %call = call i32 @func_dynamic_psz()
339   ret i32 %call
342 define i32 @call_psz_dynamic_from_psz_ieee() #2 {
343 ; CHECK-LABEL: @call_psz_dynamic_from_psz_ieee(
344 ; CHECK-NEXT:    ret i32 8
346   %call = call i32 @func_psz_dynamic()
347   ret i32 %call
350 define i32 @call_dynamic_dynamic_from_ieee_psz() #3 {
351 ; CHECK-LABEL: @call_dynamic_dynamic_from_ieee_psz(
352 ; CHECK-NEXT:    ret i32 5
354   %call = call i32 @func_dynamic_dynamic()
355   ret i32 %call
358 define i32 @call_ieee_dynamic_from_ieee_psz() #3 {
359 ; CHECK-LABEL: @call_ieee_dynamic_from_ieee_psz(
360 ; CHECK-NEXT:    ret i32 7
362   %call = call i32 @func_ieee_dynamic()
363   ret i32 %call
366 define i32 @call_dynamic_ieee_from_ieee_psz() #3 {
367 ; CHECK-LABEL: @call_dynamic_ieee_from_ieee_psz(
368 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_dynamic_ieee()
369 ; CHECK-NEXT:    ret i32 [[CALL]]
371   %call = call i32 @func_dynamic_ieee()
372   ret i32 %call
375 define i32 @call_dynamic_psz_from_ieee_psz() #3 {
376 ; CHECK-LABEL: @call_dynamic_psz_from_ieee_psz(
377 ; CHECK-NEXT:    ret i32 9
379   %call = call i32 @func_dynamic_psz()
380   ret i32 %call
383 define i32 @call_psz_dynamic_from_ieee_psz() #3 {
384 ; CHECK-LABEL: @call_psz_dynamic_from_ieee_psz(
385 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_dynamic()
386 ; CHECK-NEXT:    ret i32 [[CALL]]
388   %call = call i32 @func_psz_dynamic()
389   ret i32 %call
392 define i32 @call_dynamic_dynamic_from_dynamic_dynamic() #4 {
393 ; CHECK-LABEL: @call_dynamic_dynamic_from_dynamic_dynamic(
394 ; CHECK-NEXT:    ret i32 5
396   %call = call i32 @func_dynamic_dynamic()
397   ret i32 %call
400 define i32 @call_ieee_ieee_from_dynamic_dynamic() #4 {
401 ; CHECK-LABEL: @call_ieee_ieee_from_dynamic_dynamic(
402 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_ieee()
403 ; CHECK-NEXT:    ret i32 [[CALL]]
405   %call = call i32 @func_ieee_ieee()
406   ret i32 %call
409 define i32 @call_ieee_dynamic_from_dynamic_dynamic() #4 {
410 ; CHECK-LABEL: @call_ieee_dynamic_from_dynamic_dynamic(
411 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_dynamic()
412 ; CHECK-NEXT:    ret i32 [[CALL]]
414   %call = call i32 @func_ieee_dynamic()
415   ret i32 %call
418 define i32 @call_dynamic_ieee_from_dynamic_dynamic() #4 {
419 ; CHECK-LABEL: @call_dynamic_ieee_from_dynamic_dynamic(
420 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_dynamic_ieee()
421 ; CHECK-NEXT:    ret i32 [[CALL]]
423   %call = call i32 @func_dynamic_ieee()
424   ret i32 %call
427 define i32 @call_psz_dynamic_from_dynamic_dynamic() #4 {
428 ; CHECK-LABEL: @call_psz_dynamic_from_dynamic_dynamic(
429 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_dynamic()
430 ; CHECK-NEXT:    ret i32 [[CALL]]
432   %call = call i32 @func_psz_dynamic()
433   ret i32 %call
436 define i32 @call_dynamic_psz_from_dynamic_dynamic() #4 {
437 ; CHECK-LABEL: @call_dynamic_psz_from_dynamic_dynamic(
438 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_dynamic_psz()
439 ; CHECK-NEXT:    ret i32 [[CALL]]
441   %call = call i32 @func_dynamic_psz()
442   ret i32 %call
445 define i32 @call_psz_psz_from_dynamic_dynamic() #4 {
446 ; CHECK-LABEL: @call_psz_psz_from_dynamic_dynamic(
447 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_psz()
448 ; CHECK-NEXT:    ret i32 [[CALL]]
450   %call = call i32 @func_psz_psz()
451   ret i32 %call
454 define i32 @call_psz_ieee_from_dynamic_dynamic() #4 {
455 ; CHECK-LABEL: @call_psz_ieee_from_dynamic_dynamic(
456 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_ieee()
457 ; CHECK-NEXT:    ret i32 [[CALL]]
459   %call = call i32 @func_psz_ieee()
460   ret i32 %call
463 define i32 @call_ieee_psz_from_dynamic_dynamic() #4 {
464 ; CHECK-LABEL: @call_ieee_psz_from_dynamic_dynamic(
465 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_psz()
466 ; CHECK-NEXT:    ret i32 [[CALL]]
468   %call = call i32 @func_ieee_psz()
469   ret i32 %call
472 define i32 @call_ieee_ieee_from_dynamic_ieee() #5 {
473 ; CHECK-LABEL: @call_ieee_ieee_from_dynamic_ieee(
474 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_ieee()
475 ; CHECK-NEXT:    ret i32 [[CALL]]
477   %call = call i32 @func_ieee_ieee()
478   ret i32 %call
481 define i32 @call_ieee_dynamic_from_dynamic_ieee() #5 {
482 ; CHECK-LABEL: @call_ieee_dynamic_from_dynamic_ieee(
483 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_dynamic()
484 ; CHECK-NEXT:    ret i32 [[CALL]]
486   %call = call i32 @func_ieee_dynamic()
487   ret i32 %call
490 define i32 @call_dynamic_ieee_from_dynamic_ieee() #5 {
491 ; CHECK-LABEL: @call_dynamic_ieee_from_dynamic_ieee(
492 ; CHECK-NEXT:    ret i32 6
494   %call = call i32 @func_dynamic_ieee()
495   ret i32 %call
498 define i32 @call_psz_dynamic_from_dynamic_ieee() #5 {
499 ; CHECK-LABEL: @call_psz_dynamic_from_dynamic_ieee(
500 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_dynamic()
501 ; CHECK-NEXT:    ret i32 [[CALL]]
503   %call = call i32 @func_psz_dynamic()
504   ret i32 %call
507 define i32 @call_dynamic_psz_from_dynamic_ieee() #5 {
508 ; CHECK-LABEL: @call_dynamic_psz_from_dynamic_ieee(
509 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_dynamic_psz()
510 ; CHECK-NEXT:    ret i32 [[CALL]]
512   %call = call i32 @func_dynamic_psz()
513   ret i32 %call
516 define i32 @call_psz_psz_from_dynamic_ieee() #5 {
517 ; CHECK-LABEL: @call_psz_psz_from_dynamic_ieee(
518 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_psz()
519 ; CHECK-NEXT:    ret i32 [[CALL]]
521   %call = call i32 @func_psz_psz()
522   ret i32 %call
525 define i32 @call_psz_ieee_from_dynamic_ieee() #5 {
526 ; CHECK-LABEL: @call_psz_ieee_from_dynamic_ieee(
527 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_ieee()
528 ; CHECK-NEXT:    ret i32 [[CALL]]
530   %call = call i32 @func_psz_ieee()
531   ret i32 %call
534 define i32 @call_ieee_psz_from_dynamic_ieee() #5 {
535 ; CHECK-LABEL: @call_ieee_psz_from_dynamic_ieee(
536 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_psz()
537 ; CHECK-NEXT:    ret i32 [[CALL]]
539   %call = call i32 @func_ieee_psz()
540   ret i32 %call
543 define i32 @call_ieee_ieee_from_ieee_dynamic() #6 {
544 ; CHECK-LABEL: @call_ieee_ieee_from_ieee_dynamic(
545 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_ieee()
546 ; CHECK-NEXT:    ret i32 [[CALL]]
548   %call = call i32 @func_ieee_ieee()
549   ret i32 %call
552 define i32 @call_ieee_dynamic_from_ieee_dynamic() #6 {
553 ; CHECK-LABEL: @call_ieee_dynamic_from_ieee_dynamic(
554 ; CHECK-NEXT:    ret i32 7
556   %call = call i32 @func_ieee_dynamic()
557   ret i32 %call
560 define i32 @call_dynamic_ieee_from_ieee_dynamic() #6 {
561 ; CHECK-LABEL: @call_dynamic_ieee_from_ieee_dynamic(
562 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_dynamic_ieee()
563 ; CHECK-NEXT:    ret i32 [[CALL]]
565   %call = call i32 @func_dynamic_ieee()
566   ret i32 %call
569 define i32 @call_dynamic_dynamic_from_ieee_dynamic() #6 {
570 ; CHECK-LABEL: @call_dynamic_dynamic_from_ieee_dynamic(
571 ; CHECK-NEXT:    ret i32 5
573   %call = call i32 @func_dynamic_dynamic()
574   ret i32 %call
577 define i32 @call_dynamic_psz_from_ieee_dynamic() #6 {
578 ; CHECK-LABEL: @call_dynamic_psz_from_ieee_dynamic(
579 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_dynamic_psz()
580 ; CHECK-NEXT:    ret i32 [[CALL]]
582   %call = call i32 @func_dynamic_psz()
583   ret i32 %call
586 define i32 @call_psz_dynamic_from_ieee_dynamic() #6 {
587 ; CHECK-LABEL: @call_psz_dynamic_from_ieee_dynamic(
588 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_dynamic()
589 ; CHECK-NEXT:    ret i32 [[CALL]]
591   %call = call i32 @func_psz_dynamic()
592   ret i32 %call
595 define i32 @call_psz_psz_from_ieee_dynamic() #6 {
596 ; CHECK-LABEL: @call_psz_psz_from_ieee_dynamic(
597 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_psz()
598 ; CHECK-NEXT:    ret i32 [[CALL]]
600   %call = call i32 @func_psz_psz()
601   ret i32 %call
604 define i32 @call_psz_ieee_from_ieee_dynamic() #6 {
605 ; CHECK-LABEL: @call_psz_ieee_from_ieee_dynamic(
606 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_ieee()
607 ; CHECK-NEXT:    ret i32 [[CALL]]
609   %call = call i32 @func_psz_ieee()
610   ret i32 %call
613 define i32 @call_ieee_psz_from_ieee_dynamic() #6 {
614 ; CHECK-LABEL: @call_ieee_psz_from_ieee_dynamic(
615 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_psz()
616 ; CHECK-NEXT:    ret i32 [[CALL]]
618   %call = call i32 @func_ieee_psz()
619   ret i32 %call
622 define i32 @call_ieee_ieee_from_psz_dynamic() #7 {
623 ; CHECK-LABEL: @call_ieee_ieee_from_psz_dynamic(
624 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_ieee()
625 ; CHECK-NEXT:    ret i32 [[CALL]]
627   %call = call i32 @func_ieee_ieee()
628   ret i32 %call
631 define i32 @call_ieee_dynamic_from_psz_dynamic() #7 {
632 ; CHECK-LABEL: @call_ieee_dynamic_from_psz_dynamic(
633 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_dynamic()
634 ; CHECK-NEXT:    ret i32 [[CALL]]
636   %call = call i32 @func_ieee_dynamic()
637   ret i32 %call
640 define i32 @call_dynamic_ieee_from_psz_dynamic() #7 {
641 ; CHECK-LABEL: @call_dynamic_ieee_from_psz_dynamic(
642 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_dynamic_ieee()
643 ; CHECK-NEXT:    ret i32 [[CALL]]
645   %call = call i32 @func_dynamic_ieee()
646   ret i32 %call
649 define i32 @call_dynamic_psz_from_psz_dynamic() #7 {
650 ; CHECK-LABEL: @call_dynamic_psz_from_psz_dynamic(
651 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_dynamic_psz()
652 ; CHECK-NEXT:    ret i32 [[CALL]]
654   %call = call i32 @func_dynamic_psz()
655   ret i32 %call
658 define i32 @call_psz_dynamic_from_psz_dynamic() #7 {
659 ; CHECK-LABEL: @call_psz_dynamic_from_psz_dynamic(
660 ; CHECK-NEXT:    ret i32 8
662   %call = call i32 @func_psz_dynamic()
663   ret i32 %call
666 define i32 @call_dynamic_dynamic_from_psz_dynamic() #7 {
667 ; CHECK-LABEL: @call_dynamic_dynamic_from_psz_dynamic(
668 ; CHECK-NEXT:    ret i32 5
670   %call = call i32 @func_dynamic_dynamic()
671   ret i32 %call
674 define i32 @call_psz_ieee_from_psz_dynamic() #7 {
675 ; CHECK-LABEL: @call_psz_ieee_from_psz_dynamic(
676 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_ieee()
677 ; CHECK-NEXT:    ret i32 [[CALL]]
679   %call = call i32 @func_psz_ieee()
680   ret i32 %call
683 define i32 @call_ieee_psz_from_psz_dynamic() #7 {
684 ; CHECK-LABEL: @call_ieee_psz_from_psz_dynamic(
685 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_psz()
686 ; CHECK-NEXT:    ret i32 [[CALL]]
688   %call = call i32 @func_ieee_psz()
689   ret i32 %call
692 define i32 @call_psz_psz_from_psz_dynamic() #7 {
693 ; CHECK-LABEL: @call_psz_psz_from_psz_dynamic(
694 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_psz()
695 ; CHECK-NEXT:    ret i32 [[CALL]]
697   %call = call i32 @func_psz_psz()
698   ret i32 %call
701 define i32 @call_ieee_ieee_from_dynamic_psz() #8 {
702 ; CHECK-LABEL: @call_ieee_ieee_from_dynamic_psz(
703 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_ieee()
704 ; CHECK-NEXT:    ret i32 [[CALL]]
706   %call = call i32 @func_ieee_ieee()
707   ret i32 %call
710 define i32 @call_ieee_psz_from_dynamic_psz() #8 {
711 ; CHECK-LABEL: @call_ieee_psz_from_dynamic_psz(
712 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_psz()
713 ; CHECK-NEXT:    ret i32 [[CALL]]
715   %call = call i32 @func_ieee_psz()
716   ret i32 %call
719 define i32 @call_psz_ieee_from_dynamic_psz() #8 {
720 ; CHECK-LABEL: @call_psz_ieee_from_dynamic_psz(
721 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_ieee()
722 ; CHECK-NEXT:    ret i32 [[CALL]]
724   %call = call i32 @func_psz_ieee()
725   ret i32 %call
728 define i32 @call_dynamic_dynamic_from_dynamic_psz() #8 {
729 ; CHECK-LABEL: @call_dynamic_dynamic_from_dynamic_psz(
730 ; CHECK-NEXT:    ret i32 5
732   %call = call i32 @func_dynamic_dynamic()
733   ret i32 %call
736 define i32 @call_dynamic_psz_from_dynamic_psz() #8 {
737 ; CHECK-LABEL: @call_dynamic_psz_from_dynamic_psz(
738 ; CHECK-NEXT:    ret i32 9
740   %call = call i32 @func_dynamic_psz()
741   ret i32 %call
744 define i32 @call_psz_dynamic_from_dynamic_psz() #8 {
745 ; CHECK-LABEL: @call_psz_dynamic_from_dynamic_psz(
746 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_dynamic()
747 ; CHECK-NEXT:    ret i32 [[CALL]]
749   %call = call i32 @func_psz_dynamic()
750   ret i32 %call
753 define i32 @call_dynamic_ieee_from_dynamic_psz() #8 {
754 ; CHECK-LABEL: @call_dynamic_ieee_from_dynamic_psz(
755 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_dynamic_ieee()
756 ; CHECK-NEXT:    ret i32 [[CALL]]
758   %call = call i32 @func_dynamic_ieee()
759   ret i32 %call
762 define i32 @call_ieee_dynamic_from_dynamic_psz() #8 {
763 ; CHECK-LABEL: @call_ieee_dynamic_from_dynamic_psz(
764 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_ieee_dynamic()
765 ; CHECK-NEXT:    ret i32 [[CALL]]
767   %call = call i32 @func_ieee_dynamic()
768   ret i32 %call
771 define i32 @call_psz_psz_from_dynamic_psz() #8 {
772 ; CHECK-LABEL: @call_psz_psz_from_dynamic_psz(
773 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @func_psz_psz()
774 ; CHECK-NEXT:    ret i32 [[CALL]]
776   %call = call i32 @func_psz_psz()
777   ret i32 %call
780 ; --------------------------------------------------------------------
781 ; denormal-fp-math-f32
782 ; --------------------------------------------------------------------
784 define i32 @func_dynamic_dynamic_f32() #9 {
785 ; CHECK-LABEL: @func_dynamic_dynamic_f32(
786 ; CHECK-NEXT:    ret i32 10
788   ret i32 10
791 define i32 @func_psz_psz_f32() #10 {
792 ; CHECK-LABEL: @func_psz_psz_f32(
793 ; CHECK-NEXT:    ret i32 11
795   ret i32 11
798 define i32 @func_dynamic_dynamic_psz_psz_f32() #12 {
799 ; CHECK-LABEL: @func_dynamic_dynamic_psz_psz_f32(
800 ; CHECK-NEXT:    ret i32 12
802   ret i32 12
805 define i32 @call_dynamic_dynamic_f32_from_psz_psz_f32() #10 {
806 ; CHECK-LABEL: @call_dynamic_dynamic_f32_from_psz_psz_f32(
807 ; CHECK-NEXT:    ret i32 10
809   %result = call i32 @func_dynamic_dynamic_f32()
810   ret i32 %result
813 define i32 @call_psz_psz_from_psz_psz_f32() #10 {
814 ; CHECK-LABEL: @call_psz_psz_from_psz_psz_f32(
815 ; CHECK-NEXT:    ret i32 10
817   %result = call i32 @func_dynamic_dynamic_f32()
818   ret i32 %result
821 define i32 @call_psz_psz_from_ieee_ieee_f32() #11 {
822 ; CHECK-LABEL: @call_psz_psz_from_ieee_ieee_f32(
823 ; CHECK-NEXT:    [[RESULT:%.*]] = call i32 @func_psz_psz_f32()
824 ; CHECK-NEXT:    ret i32 [[RESULT]]
826   %result = call i32 @func_psz_psz_f32()
827   ret i32 %result
830 define i32 @call_dynamic_dynamic_from_psz_psz_f32() #10 {
831 ; CHECK-LABEL: @call_dynamic_dynamic_from_psz_psz_f32(
832 ; CHECK-NEXT:    ret i32 5
834   %result = call i32 @func_dynamic_dynamic()
835   ret i32 %result
838 define i32 @call_dynamic_dynamic_f32_from_psz_psz() #1 {
839 ; CHECK-LABEL: @call_dynamic_dynamic_f32_from_psz_psz(
840 ; CHECK-NEXT:    [[RESULT:%.*]] = call i32 @func_dynamic_dynamic_f32()
841 ; CHECK-NEXT:    ret i32 [[RESULT]]
843   %result = call i32 @func_dynamic_dynamic_f32()
844   ret i32 %result
847 define i32 @call_psz_psz_f32_from_psz_psz() #1 {
848 ; CHECK-LABEL: @call_psz_psz_f32_from_psz_psz(
849 ; CHECK-NEXT:    [[RESULT:%.*]] = call i32 @func_psz_psz_f32()
850 ; CHECK-NEXT:    ret i32 [[RESULT]]
852   %result = call i32 @func_psz_psz_f32()
853   ret i32 %result
856 define i32 @call_dynamic_dynamic_psz_psz_f32_from_psz_psz() #1 {
857 ; CHECK-LABEL: @call_dynamic_dynamic_psz_psz_f32_from_psz_psz(
858 ; CHECK-NEXT:    ret i32 12
860   %result = call i32 @func_dynamic_dynamic_psz_psz_f32()
861   ret i32 %result
864 attributes #0 = { "denormal-fp-math"="ieee,ieee" }
865 attributes #1 = { "denormal-fp-math"="preserve-sign,preserve-sign" }
866 attributes #2 = { "denormal-fp-math"="preserve-sign,ieee" }
867 attributes #3 = { "denormal-fp-math"="ieee,preserve-sign" }
868 attributes #4 = { "denormal-fp-math"="dynamic,dynamic" }
869 attributes #5 = { "denormal-fp-math"="dynamic,ieee" }
870 attributes #6 = { "denormal-fp-math"="ieee,dynamic" }
871 attributes #7 = { "denormal-fp-math"="preserve-sign,dynamic" }
872 attributes #8 = { "denormal-fp-math"="dynamic,preserve-sign" }
873 attributes #9 = { "denormal-fp-math-f32"="dynamic,dynamic" }
874 attributes #10 = { "denormal-fp-math-f32"="preserve-sign,preserve-sign" }
875 attributes #11 = { "denormal-fp-math-f32"="ieee,ieee" "denormal-fp-math"="preserve-sign,preserve-sign" }
876 attributes #12 = { "denormal-fp-math"="dynamic,dynamic" "denormal-fp-math-f32"="preserve-sign,preserve-sign" }