Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / Transforms / Attributor / nofpclass-nan-fmul.ll
blobd3a46331bac45b437e67f3d78e58131fd189214d
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
2 ; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -S < %s | FileCheck %s --check-prefixes=CHECK,TUNIT
4 define float @ret_fmul_ieee_nonan__nonan(float nofpclass(nan) %arg0, float nofpclass(nan) %arg1) #0 {
5 ; CHECK-LABEL: define float @ret_fmul_ieee_nonan__nonan
6 ; CHECK-SAME: (float nofpclass(nan) [[ARG0:%.*]], float nofpclass(nan) [[ARG1:%.*]]) #[[ATTR0:[0-9]+]] {
7 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
8 ; CHECK-NEXT:    ret float [[FMUL]]
10   %fmul = fmul float %arg0, %arg1
11   ret float %fmul
14 define float @ret_fmul_ieee_nonan_nozero__nonan_nozero(float nofpclass(nan zero) %arg0, float nofpclass(nan zero) %arg1) #0 {
15 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_ieee_nonan_nozero__nonan_nozero
16 ; CHECK-SAME: (float nofpclass(nan zero) [[ARG0:%.*]], float nofpclass(nan zero) [[ARG1:%.*]]) #[[ATTR0]] {
17 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
18 ; CHECK-NEXT:    ret float [[FMUL]]
20   %fmul = fmul float %arg0, %arg1
21   ret float %fmul
24 define float @ret_fmul_daz_nonan_nozero__nonan_nozero(float nofpclass(nan zero) %arg0, float nofpclass(nan zero) %arg1) #1 {
25 ; CHECK-LABEL: define float @ret_fmul_daz_nonan_nozero__nonan_nozero
26 ; CHECK-SAME: (float nofpclass(nan zero) [[ARG0:%.*]], float nofpclass(nan zero) [[ARG1:%.*]]) #[[ATTR1:[0-9]+]] {
27 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
28 ; CHECK-NEXT:    ret float [[FMUL]]
30   %fmul = fmul float %arg0, %arg1
31   ret float %fmul
34 define float @ret_fmul_dapz_nonan_nozero__nonan_nozero(float nofpclass(nan zero) %arg0, float nofpclass(nan zero) %arg1) #2 {
35 ; CHECK-LABEL: define float @ret_fmul_dapz_nonan_nozero__nonan_nozero
36 ; CHECK-SAME: (float nofpclass(nan zero) [[ARG0:%.*]], float nofpclass(nan zero) [[ARG1:%.*]]) #[[ATTR2:[0-9]+]] {
37 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
38 ; CHECK-NEXT:    ret float [[FMUL]]
40   %fmul = fmul float %arg0, %arg1
41   ret float %fmul
44 define float @ret_fmul_dynamic_nonan_nozero__nonan_nozero(float nofpclass(nan zero) %arg0, float nofpclass(nan zero) %arg1) #3 {
45 ; CHECK-LABEL: define float @ret_fmul_dynamic_nonan_nozero__nonan_nozero
46 ; CHECK-SAME: (float nofpclass(nan zero) [[ARG0:%.*]], float nofpclass(nan zero) [[ARG1:%.*]]) #[[ATTR3:[0-9]+]] {
47 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
48 ; CHECK-NEXT:    ret float [[FMUL]]
50   %fmul = fmul float %arg0, %arg1
51   ret float %fmul
54 define float @ret_fmul_ieee_nonan_noinf__nonan_noinf(float nofpclass(nan inf) %arg0, float nofpclass(nan inf) %arg1) #0 {
55 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_ieee_nonan_noinf__nonan_noinf
56 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR0]] {
57 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
58 ; CHECK-NEXT:    ret float [[FMUL]]
60   %fmul = fmul float %arg0, %arg1
61   ret float %fmul
64 define float @ret_fmul_ieee_nonan_nozero__nonan_noinf(float nofpclass(nan zero) %arg0, float nofpclass(nan inf) %arg1) #0 {
65 ; CHECK-LABEL: define float @ret_fmul_ieee_nonan_nozero__nonan_noinf
66 ; CHECK-SAME: (float nofpclass(nan zero) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR0]] {
67 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
68 ; CHECK-NEXT:    ret float [[FMUL]]
70   %fmul = fmul float %arg0, %arg1
71   ret float %fmul
74 define float @ret_fmul_ieee_nonan_noinf__nonan_nozero(float nofpclass(nan inf) %arg0, float nofpclass(nan zero) %arg1) #0 {
75 ; CHECK-LABEL: define float @ret_fmul_ieee_nonan_noinf__nonan_nozero
76 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(nan zero) [[ARG1:%.*]]) #[[ATTR0]] {
77 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
78 ; CHECK-NEXT:    ret float [[FMUL]]
80   %fmul = fmul float %arg0, %arg1
81   ret float %fmul
84 define float @ret_fmul_ieee_nonan_noinf__nonan_noposzero(float nofpclass(nan inf) %arg0, float nofpclass(nan pzero) %arg1) #0 {
85 ; CHECK-LABEL: define float @ret_fmul_ieee_nonan_noinf__nonan_noposzero
86 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(nan pzero) [[ARG1:%.*]]) #[[ATTR0]] {
87 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
88 ; CHECK-NEXT:    ret float [[FMUL]]
90   %fmul = fmul float %arg0, %arg1
91   ret float %fmul
94 define float @ret_fmul_ieee_nonan_noposzero__nonan_noinf(float nofpclass(nan pzero) %arg0, float nofpclass(nan inf) %arg1) #0 {
95 ; CHECK-LABEL: define float @ret_fmul_ieee_nonan_noposzero__nonan_noinf
96 ; CHECK-SAME: (float nofpclass(nan pzero) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR0]] {
97 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
98 ; CHECK-NEXT:    ret float [[FMUL]]
100   %fmul = fmul float %arg0, %arg1
101   ret float %fmul
104 define float @ret_fmul_ieee_nonan_nozero_nosub__nonan_nozero_nosub(float nofpclass(nan zero sub) %arg0, float nofpclass(nan zero sub) %arg1) #0 {
105 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_ieee_nonan_nozero_nosub__nonan_nozero_nosub
106 ; CHECK-SAME: (float nofpclass(nan zero sub) [[ARG0:%.*]], float nofpclass(nan zero sub) [[ARG1:%.*]]) #[[ATTR0]] {
107 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
108 ; CHECK-NEXT:    ret float [[FMUL]]
110   %fmul = fmul float %arg0, %arg1
111   ret float %fmul
114 ; Denormal mode doesn't matter because sources are nofpclass(sub)
115 define float @ret_fmul_daz_nonan_nozero_nosub__nonan_nozero_nosub(float nofpclass(nan zero sub) %arg0, float nofpclass(nan zero sub) %arg1) #1 {
116 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_daz_nonan_nozero_nosub__nonan_nozero_nosub
117 ; CHECK-SAME: (float nofpclass(nan zero sub) [[ARG0:%.*]], float nofpclass(nan zero sub) [[ARG1:%.*]]) #[[ATTR1]] {
118 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
119 ; CHECK-NEXT:    ret float [[FMUL]]
121   %fmul = fmul float %arg0, %arg1
122   ret float %fmul
125 define float @ret_fmul_dapz_nonan_nozero_nosub__nonan_nozero_nosub(float nofpclass(nan zero sub) %arg0, float nofpclass(nan zero sub) %arg1) #2 {
126 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_dapz_nonan_nozero_nosub__nonan_nozero_nosub
127 ; CHECK-SAME: (float nofpclass(nan zero sub) [[ARG0:%.*]], float nofpclass(nan zero sub) [[ARG1:%.*]]) #[[ATTR2]] {
128 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
129 ; CHECK-NEXT:    ret float [[FMUL]]
131   %fmul = fmul float %arg0, %arg1
132   ret float %fmul
135 define float @ret_fmul_dynamic_nonan_nozero_nosub__nonan_nozero_nosub(float nofpclass(nan zero sub) %arg0, float nofpclass(nan zero sub) %arg1) #3 {
136 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_dynamic_nonan_nozero_nosub__nonan_nozero_nosub
137 ; CHECK-SAME: (float nofpclass(nan zero sub) [[ARG0:%.*]], float nofpclass(nan zero sub) [[ARG1:%.*]]) #[[ATTR3]] {
138 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
139 ; CHECK-NEXT:    ret float [[FMUL]]
141   %fmul = fmul float %arg0, %arg1
142   ret float %fmul
145 ; Missing no-subnormal on lhs
146 define float @ret_fmul_daz_nonan_nozero__nonan_nozero_nosub(float nofpclass(nan zero) %arg0, float nofpclass(nan zero sub) %arg1) #1 {
147 ; CHECK-LABEL: define float @ret_fmul_daz_nonan_nozero__nonan_nozero_nosub
148 ; CHECK-SAME: (float nofpclass(nan zero) [[ARG0:%.*]], float nofpclass(nan zero sub) [[ARG1:%.*]]) #[[ATTR1]] {
149 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
150 ; CHECK-NEXT:    ret float [[FMUL]]
152   %fmul = fmul float %arg0, %arg1
153   ret float %fmul
156 ; Missing no-subnormal on lhs
157 define float @ret_fmul_daz_nonan_nozero_nosub__nonan_nozero(float nofpclass(nan zero sub) %arg0, float nofpclass(nan zero) %arg1) #1 {
158 ; CHECK-LABEL: define float @ret_fmul_daz_nonan_nozero_nosub__nonan_nozero
159 ; CHECK-SAME: (float nofpclass(nan zero sub) [[ARG0:%.*]], float nofpclass(nan zero) [[ARG1:%.*]]) #[[ATTR1]] {
160 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
161 ; CHECK-NEXT:    ret float [[FMUL]]
163   %fmul = fmul float %arg0, %arg1
164   ret float %fmul
167 define float @ret_fmul_square(float %arg) #0 {
168 ; CHECK-LABEL: define nofpclass(ninf nzero nsub nnorm) float @ret_fmul_square
169 ; CHECK-SAME: (float nofpclass(ninf nzero nsub nnorm) [[ARG:%.*]]) #[[ATTR0]] {
170 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG]], [[ARG]]
171 ; CHECK-NEXT:    ret float [[FMUL]]
173   %fmul = fmul float %arg, %arg
174   ret float %fmul
177 define float @ret_fmul_square_nnan(float nofpclass(nan) %arg) #0 {
178 ; CHECK-LABEL: define nofpclass(ninf nzero nsub nnorm) float @ret_fmul_square_nnan
179 ; CHECK-SAME: (float nofpclass(nan ninf nzero nsub nnorm) [[ARG:%.*]]) #[[ATTR0]] {
180 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG]], [[ARG]]
181 ; CHECK-NEXT:    ret float [[FMUL]]
183   %fmul = fmul float %arg, %arg
184   ret float %fmul
187 define float @ret_fmul_square_nnan_nzero(float nofpclass(nan zero) %arg) #0 {
188 ; CHECK-LABEL: define nofpclass(nan ninf nzero nsub nnorm) float @ret_fmul_square_nnan_nzero
189 ; CHECK-SAME: (float nofpclass(nan ninf zero nsub nnorm) [[ARG:%.*]]) #[[ATTR0]] {
190 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG]], [[ARG]]
191 ; CHECK-NEXT:    ret float [[FMUL]]
193   %fmul = fmul float %arg, %arg
194   ret float %fmul
197 define float @ret_fmul_ieee_inf(float %arg) {
198 ; CHECK-LABEL: define float @ret_fmul_ieee_inf
199 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR4:[0-9]+]] {
200 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG]], 0x7FF0000000000000
201 ; CHECK-NEXT:    ret float [[FMUL]]
203   %fmul = fmul float %arg, 0x7FF0000000000000
204   ret float %fmul
207 define float @ret_fmul_ieee_any__noinf(float %arg0, float nofpclass(inf) %arg1) {
208 ; CHECK-LABEL: define float @ret_fmul_ieee_any__noinf
209 ; CHECK-SAME: (float [[ARG0:%.*]], float nofpclass(inf) [[ARG1:%.*]]) #[[ATTR4]] {
210 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
211 ; CHECK-NEXT:    ret float [[FMUL]]
213   %fmul = fmul float %arg0, %arg1
214   ret float %fmul
217 define float @ret_fmul_ieee_noinf__any(float nofpclass(inf) %arg0, float %arg1) {
218 ; CHECK-LABEL: define float @ret_fmul_ieee_noinf__any
219 ; CHECK-SAME: (float nofpclass(inf) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR4]] {
220 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
221 ; CHECK-NEXT:    ret float [[FMUL]]
223   %fmul = fmul float %arg0, %arg1
224   ret float %fmul
227 define float @ret_fmul_ieee_noinf__noinf(float nofpclass(inf) %arg0, float nofpclass(inf) %arg1) {
228 ; CHECK-LABEL: define float @ret_fmul_ieee_noinf__noinf
229 ; CHECK-SAME: (float nofpclass(inf) [[ARG0:%.*]], float nofpclass(inf) [[ARG1:%.*]]) #[[ATTR4]] {
230 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
231 ; CHECK-NEXT:    ret float [[FMUL]]
233   %fmul = fmul float %arg0, %arg1
234   ret float %fmul
237 define float @ret_fmul_ieee_any__noinf_nonan(float %arg0, float nofpclass(inf nan) %arg1) {
238 ; CHECK-LABEL: define float @ret_fmul_ieee_any__noinf_nonan
239 ; CHECK-SAME: (float [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR4]] {
240 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
241 ; CHECK-NEXT:    ret float [[FMUL]]
243   %fmul = fmul float %arg0, %arg1
244   ret float %fmul
247 define float @ret_fmul_ieee_noinf_nonan__any(float nofpclass(inf nan) %arg0, float %arg1) {
248 ; CHECK-LABEL: define float @ret_fmul_ieee_noinf_nonan__any
249 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR4]] {
250 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
251 ; CHECK-NEXT:    ret float [[FMUL]]
253   %fmul = fmul float %arg0, %arg1
254   ret float %fmul
257 define float @ret_fmul_ieee_noinf_nonan__noinf_noann(float nofpclass(inf nan) %arg0, float nofpclass(inf nan) %arg1) {
258 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_ieee_noinf_nonan__noinf_noann
259 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR4]] {
260 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
261 ; CHECK-NEXT:    ret float [[FMUL]]
263   %fmul = fmul float %arg0, %arg1
264   ret float %fmul
267 define float @ret_fmul_ieee_nozero__noinf_nonan(float nofpclass(zero) %arg0, float nofpclass(inf nan) %arg1) {
268 ; CHECK-LABEL: define float @ret_fmul_ieee_nozero__noinf_nonan
269 ; CHECK-SAME: (float nofpclass(zero) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR4]] {
270 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
271 ; CHECK-NEXT:    ret float [[FMUL]]
273   %fmul = fmul float %arg0, %arg1
274   ret float %fmul
277 define float @ret_fmul_ieee_noinf_nonan__nozero(float nofpclass(inf nan) %arg0, float nofpclass(zero) %arg1) {
278 ; CHECK-LABEL: define float @ret_fmul_ieee_noinf_nonan__nozero
279 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(zero) [[ARG1:%.*]]) #[[ATTR4]] {
280 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
281 ; CHECK-NEXT:    ret float [[FMUL]]
283   %fmul = fmul float %arg0, %arg1
284   ret float %fmul
287 define float @ret_fmul_ieee_nozero_nonan__noinf_nonan(float nofpclass(zero nan) %arg0, float nofpclass(inf nan) %arg1) {
288 ; CHECK-LABEL: define float @ret_fmul_ieee_nozero_nonan__noinf_nonan
289 ; CHECK-SAME: (float nofpclass(nan zero) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR4]] {
290 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
291 ; CHECK-NEXT:    ret float [[FMUL]]
293   %fmul = fmul float %arg0, %arg1
294   ret float %fmul
297 define float @ret_fmul_ieee_noinf_nonan__nozero_nonan(float nofpclass(inf nan) %arg0, float nofpclass(zero nan) %arg1) {
298 ; CHECK-LABEL: define float @ret_fmul_ieee_noinf_nonan__nozero_nonan
299 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(nan zero) [[ARG1:%.*]]) #[[ATTR4]] {
300 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
301 ; CHECK-NEXT:    ret float [[FMUL]]
303   %fmul = fmul float %arg0, %arg1
304   ret float %fmul
307 define float @ret_fmul_ieee_nozero_nonan_noinf__noinf_nonan(float nofpclass(zero nan inf) %arg0, float nofpclass(inf nan) %arg1) {
308 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_ieee_nozero_nonan_noinf__noinf_nonan
309 ; CHECK-SAME: (float nofpclass(nan inf zero) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR4]] {
310 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
311 ; CHECK-NEXT:    ret float [[FMUL]]
313   %fmul = fmul float %arg0, %arg1
314   ret float %fmul
317 define float @ret_fmul_ieee_noinf_nonan__nozero_nonan_noinf(float nofpclass(inf nan) %arg0, float nofpclass(zero nan inf) %arg1) {
318 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_ieee_noinf_nonan__nozero_nonan_noinf
319 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(nan inf zero) [[ARG1:%.*]]) #[[ATTR4]] {
320 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
321 ; CHECK-NEXT:    ret float [[FMUL]]
323   %fmul = fmul float %arg0, %arg1
324   ret float %fmul
327 define float @ret_fmul_ieee_nozero_nonan_noinf__nozero_nonan(float nofpclass(zero nan inf) %arg0, float nofpclass(zero nan) %arg1) {
328 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_ieee_nozero_nonan_noinf__nozero_nonan
329 ; CHECK-SAME: (float nofpclass(nan inf zero) [[ARG0:%.*]], float nofpclass(nan zero) [[ARG1:%.*]]) #[[ATTR4]] {
330 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
331 ; CHECK-NEXT:    ret float [[FMUL]]
333   %fmul = fmul float %arg0, %arg1
334   ret float %fmul
337 define float @ret_fmul_ieee_nozero_nonan__nozero_nonan_noinf(float nofpclass(zero nan) %arg0, float nofpclass(zero nan inf) %arg1) {
338 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_ieee_nozero_nonan__nozero_nonan_noinf
339 ; CHECK-SAME: (float nofpclass(nan zero) [[ARG0:%.*]], float nofpclass(nan inf zero) [[ARG1:%.*]]) #[[ATTR4]] {
340 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
341 ; CHECK-NEXT:    ret float [[FMUL]]
343   %fmul = fmul float %arg0, %arg1
344   ret float %fmul
347 define float @ret_fmul_ieee_nozero_nonan_noinf__nonan(float nofpclass(zero nan inf) %arg0, float nofpclass(nan) %arg1) {
348 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_ieee_nozero_nonan_noinf__nonan
349 ; CHECK-SAME: (float nofpclass(nan inf zero) [[ARG0:%.*]], float nofpclass(nan) [[ARG1:%.*]]) #[[ATTR4]] {
350 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
351 ; CHECK-NEXT:    ret float [[FMUL]]
353   %fmul = fmul float %arg0, %arg1
354   ret float %fmul
357 define float @ret_fmul_ieee_nonan__nozero_nonan_noinf(float nofpclass(nan) %arg0, float nofpclass(zero nan inf) %arg1) {
358 ; CHECK-LABEL: define nofpclass(nan) float @ret_fmul_ieee_nonan__nozero_nonan_noinf
359 ; CHECK-SAME: (float nofpclass(nan) [[ARG0:%.*]], float nofpclass(nan inf zero) [[ARG1:%.*]]) #[[ATTR4]] {
360 ; CHECK-NEXT:    [[FMUL:%.*]] = fmul float [[ARG0]], [[ARG1]]
361 ; CHECK-NEXT:    ret float [[FMUL]]
363   %fmul = fmul float %arg0, %arg1
364   ret float %fmul
367 attributes #0 = { "denormal-fp-math"="ieee,ieee" }
368 attributes #1 = { "denormal-fp-math"="ieee,preserve-sign" }
369 attributes #2 = { "denormal-fp-math"="ieee,positive-zero" }
370 attributes #3 = { "denormal-fp-math"="ieee,dynamic" }
371 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
372 ; TUNIT: {{.*}}