Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / Attributor / nofpclass-fdiv.ll
blob82a10f60e838e148a4a544a1e5fd862975c38c47
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_fdiv_ieee(float %arg0, float %arg1) #0 {
5 ; CHECK-LABEL: define float @ret_fdiv_ieee
6 ; CHECK-SAME: (float [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR0:[0-9]+]] {
7 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
8 ; CHECK-NEXT:    ret float [[FDIV]]
10   %fdiv = fdiv float %arg0, %arg1
11   ret float %fdiv
14 define float @ret_fdiv_daz(float %arg0, float %arg1) #1 {
15 ; CHECK-LABEL: define float @ret_fdiv_daz
16 ; CHECK-SAME: (float [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1:[0-9]+]] {
17 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
18 ; CHECK-NEXT:    ret float [[FDIV]]
20   %fdiv = fdiv float %arg0, %arg1
21   ret float %fdiv
24 define float @ret_fdiv_ieee_noinf_nozero__all(float nofpclass(inf zero) %arg0, float %arg1) #0 {
25 ; CHECK-LABEL: define float @ret_fdiv_ieee_noinf_nozero__all
26 ; CHECK-SAME: (float nofpclass(inf zero) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR0]] {
27 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
28 ; CHECK-NEXT:    ret float [[FDIV]]
30   %fdiv = fdiv float %arg0, %arg1
31   ret float %fdiv
34 define float @ret_fdiv_ieee_nonan_noinf_nozero__all(float nofpclass(nan inf zero) %arg0, float %arg1) #0 {
35 ; CHECK-LABEL: define float @ret_fdiv_ieee_nonan_noinf_nozero__all
36 ; CHECK-SAME: (float nofpclass(nan inf zero) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR0]] {
37 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
38 ; CHECK-NEXT:    ret float [[FDIV]]
40   %fdiv = fdiv float %arg0, %arg1
41   ret float %fdiv
44 define float @ret_fdiv_ieee_all__nonan_noinf_nozero(float %arg0, float nofpclass(nan inf zero) %arg1) #0 {
45 ; CHECK-LABEL: define float @ret_fdiv_ieee_all__nonan_noinf_nozero
46 ; CHECK-SAME: (float [[ARG0:%.*]], float nofpclass(nan inf zero) [[ARG1:%.*]]) #[[ATTR0]] {
47 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
48 ; CHECK-NEXT:    ret float [[FDIV]]
50   %fdiv = fdiv float %arg0, %arg1
51   ret float %fdiv
54 define float @ret_fdiv_ieee_nonan_noinf_nozero__nonan(float nofpclass(nan inf zero) %arg0, float nofpclass(nan) %arg1) #0 {
55 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_ieee_nonan_noinf_nozero__nonan
56 ; CHECK-SAME: (float nofpclass(nan inf zero) [[ARG0:%.*]], float nofpclass(nan) [[ARG1:%.*]]) #[[ATTR0]] {
57 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
58 ; CHECK-NEXT:    ret float [[FDIV]]
60   %fdiv = fdiv float %arg0, %arg1
61   ret float %fdiv
64 define float @ret_fdiv_ieee_nonan__nonan_noinf_nozero(float nofpclass(nan) %arg0, float nofpclass(nan inf zero) %arg1) #0 {
65 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_ieee_nonan__nonan_noinf_nozero
66 ; CHECK-SAME: (float nofpclass(nan) [[ARG0:%.*]], float nofpclass(nan inf zero) [[ARG1:%.*]]) #[[ATTR0]] {
67 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
68 ; CHECK-NEXT:    ret float [[FDIV]]
70   %fdiv = fdiv float %arg0, %arg1
71   ret float %fdiv
74 define float @ret_fdiv_ieee_nonan_nozero__nonan_noinf(float nofpclass(nan zero) %arg0, float nofpclass(nan inf) %arg1) #0 {
75 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_ieee_nonan_nozero__nonan_noinf
76 ; CHECK-SAME: (float nofpclass(nan zero) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR0]] {
77 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
78 ; CHECK-NEXT:    ret float [[FDIV]]
80   %fdiv = fdiv float %arg0, %arg1
81   ret float %fdiv
84 define float @ret_fdiv_ieee_nonan_noinf__nonan_nozero(float nofpclass(nan inf) %arg0, float nofpclass(nan zero) %arg1) #0 {
85 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_ieee_nonan_noinf__nonan_nozero
86 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(nan zero) [[ARG1:%.*]]) #[[ATTR0]] {
87 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
88 ; CHECK-NEXT:    ret float [[FDIV]]
90   %fdiv = fdiv float %arg0, %arg1
91   ret float %fdiv
94 define float @ret_fdiv_daz_nonan_nozero__nonan_noinf(float nofpclass(nan zero) %arg0, float nofpclass(nan inf) %arg1) #1 {
95 ; CHECK-LABEL: define float @ret_fdiv_daz_nonan_nozero__nonan_noinf
96 ; CHECK-SAME: (float nofpclass(nan zero) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR1]] {
97 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
98 ; CHECK-NEXT:    ret float [[FDIV]]
100   %fdiv = fdiv float %arg0, %arg1
101   ret float %fdiv
104 define float @ret_fdiv_daz_nonan_noinf__nonan_nozero(float nofpclass(nan inf) %arg0, float nofpclass(nan zero) %arg1) #1 {
105 ; CHECK-LABEL: define float @ret_fdiv_daz_nonan_noinf__nonan_nozero
106 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(nan zero) [[ARG1:%.*]]) #[[ATTR1]] {
107 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
108 ; CHECK-NEXT:    ret float [[FDIV]]
110   %fdiv = fdiv float %arg0, %arg1
111   ret float %fdiv
114 define float @ret_fdiv_daz_nonan_nozero_nosub__nonan_noinf(float nofpclass(nan zero sub) %arg0, float nofpclass(nan inf) %arg1) #1 {
115 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_daz_nonan_nozero_nosub__nonan_noinf
116 ; CHECK-SAME: (float nofpclass(nan zero sub) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR1]] {
117 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
118 ; CHECK-NEXT:    ret float [[FDIV]]
120   %fdiv = fdiv float %arg0, %arg1
121   ret float %fdiv
124 define float @ret_fdiv_daz_nonan_noinf__nonan_nozero_nosub(float nofpclass(nan inf) %arg0, float nofpclass(nan zero sub) %arg1) #1 {
125 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_daz_nonan_noinf__nonan_nozero_nosub
126 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(nan zero sub) [[ARG1:%.*]]) #[[ATTR1]] {
127 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
128 ; CHECK-NEXT:    ret float [[FDIV]]
130   %fdiv = fdiv float %arg0, %arg1
131   ret float %fdiv
134 define float @ret_fdiv_ieee_nonan_noinf__nonan_noinf(float nofpclass(nan) %arg0, float nofpclass(nan) %arg1) #0 {
135 ; CHECK-LABEL: define float @ret_fdiv_ieee_nonan_noinf__nonan_noinf
136 ; CHECK-SAME: (float nofpclass(nan) [[ARG0:%.*]], float nofpclass(nan) [[ARG1:%.*]]) #[[ATTR0]] {
137 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
138 ; CHECK-NEXT:    ret float [[FDIV]]
140   %fdiv = fdiv float %arg0, %arg1
141   ret float %fdiv
144 define float @ret_fdiv_ieee_nonan_noinf_nozero__nonan_noinf_nozero(float nofpclass(nan inf zero) %arg0, float nofpclass(nan inf zero) %arg1) #0 {
145 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_ieee_nonan_noinf_nozero__nonan_noinf_nozero
146 ; CHECK-SAME: (float nofpclass(nan inf zero) [[ARG0:%.*]], float nofpclass(nan inf zero) [[ARG1:%.*]]) #[[ATTR0]] {
147 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
148 ; CHECK-NEXT:    ret float [[FDIV]]
150   %fdiv = fdiv float %arg0, %arg1
151   ret float %fdiv
154 define float @ret_fdiv_daz_nonan_noinf_nozero__nonan_noinf_nozero(float nofpclass(nan inf zero) %arg0, float nofpclass(nan inf zero) %arg1) #1 {
155 ; CHECK-LABEL: define float @ret_fdiv_daz_nonan_noinf_nozero__nonan_noinf_nozero
156 ; CHECK-SAME: (float nofpclass(nan inf zero) [[ARG0:%.*]], float nofpclass(nan inf zero) [[ARG1:%.*]]) #[[ATTR1]] {
157 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
158 ; CHECK-NEXT:    ret float [[FDIV]]
160   %fdiv = fdiv float %arg0, %arg1
161   ret float %fdiv
164 define float @ret_fdiv_dapz_nonan_noinf_nozero__nonan_noinf_nozero(float nofpclass(nan inf zero) %arg0, float nofpclass(nan inf zero) %arg1) #2 {
165 ; CHECK-LABEL: define float @ret_fdiv_dapz_nonan_noinf_nozero__nonan_noinf_nozero
166 ; CHECK-SAME: (float nofpclass(nan inf zero) [[ARG0:%.*]], float nofpclass(nan inf zero) [[ARG1:%.*]]) #[[ATTR2:[0-9]+]] {
167 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
168 ; CHECK-NEXT:    ret float [[FDIV]]
170   %fdiv = fdiv float %arg0, %arg1
171   ret float %fdiv
174 define float @ret_fdiv_dynamic_nonan_noinf_nozero__nonan_noinf_nozero(float nofpclass(nan inf zero) %arg0, float nofpclass(nan inf zero) %arg1) #3 {
175 ; CHECK-LABEL: define float @ret_fdiv_dynamic_nonan_noinf_nozero__nonan_noinf_nozero
176 ; CHECK-SAME: (float nofpclass(nan inf zero) [[ARG0:%.*]], float nofpclass(nan inf zero) [[ARG1:%.*]]) #[[ATTR3:[0-9]+]] {
177 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
178 ; CHECK-NEXT:    ret float [[FDIV]]
180   %fdiv = fdiv float %arg0, %arg1
181   ret float %fdiv
184 define float @ret_fdiv_ieee_nonan_noinf_noinf__nonan_noinf_noinf(float nofpclass(nan inf) %arg0, float nofpclass(nan inf) %arg1) #0 {
185 ; CHECK-LABEL: define float @ret_fdiv_ieee_nonan_noinf_noinf__nonan_noinf_noinf
186 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR0]] {
187 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
188 ; CHECK-NEXT:    ret float [[FDIV]]
190   %fdiv = fdiv float %arg0, %arg1
191   ret float %fdiv
194 define float @ret_fdiv_ieee_nonan_noinf_nozero__nonan_noinf_noinf(float nofpclass(nan inf zero) %arg0, float nofpclass(nan inf) %arg1) #0 {
195 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_ieee_nonan_noinf_nozero__nonan_noinf_noinf
196 ; CHECK-SAME: (float nofpclass(nan inf zero) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR0]] {
197 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
198 ; CHECK-NEXT:    ret float [[FDIV]]
200   %fdiv = fdiv float %arg0, %arg1
201   ret float %fdiv
204 define float @ret_fdiv_ieee_nonan_noinf_noinf__nonan_noinf_nozero(float nofpclass(nan inf) %arg0, float nofpclass(nan inf zero) %arg1) #0 {
205 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_ieee_nonan_noinf_noinf__nonan_noinf_nozero
206 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(nan inf zero) [[ARG1:%.*]]) #[[ATTR0]] {
207 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
208 ; CHECK-NEXT:    ret float [[FDIV]]
210   %fdiv = fdiv float %arg0, %arg1
211   ret float %fdiv
214 define float @ret_fdiv_ieee_nonan_noinf_noinf__nonan_noinf_noposzero(float nofpclass(nan inf) %arg0, float nofpclass(nan pzero) %arg1) #0 {
215 ; CHECK-LABEL: define float @ret_fdiv_ieee_nonan_noinf_noinf__nonan_noinf_noposzero
216 ; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]], float nofpclass(nan pzero) [[ARG1:%.*]]) #[[ATTR0]] {
217 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
218 ; CHECK-NEXT:    ret float [[FDIV]]
220   %fdiv = fdiv float %arg0, %arg1
221   ret float %fdiv
224 define float @ret_fdiv_ieee_nonan_noinf_noposzero__nonan_noinf_noinf(float nofpclass(nan pzero) %arg0, float nofpclass(nan inf) %arg1) #0 {
225 ; CHECK-LABEL: define float @ret_fdiv_ieee_nonan_noinf_noposzero__nonan_noinf_noinf
226 ; CHECK-SAME: (float nofpclass(nan pzero) [[ARG0:%.*]], float nofpclass(nan inf) [[ARG1:%.*]]) #[[ATTR0]] {
227 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
228 ; CHECK-NEXT:    ret float [[FDIV]]
230   %fdiv = fdiv float %arg0, %arg1
231   ret float %fdiv
234 define float @ret_fdiv_ieee_nonan_noinf_nozero_nosub__nonan_noinf_nozero_nosub(float nofpclass(nan inf zero sub) %arg0, float nofpclass(nan inf zero sub) %arg1) #0 {
235 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_ieee_nonan_noinf_nozero_nosub__nonan_noinf_nozero_nosub
236 ; CHECK-SAME: (float nofpclass(nan inf zero sub) [[ARG0:%.*]], float nofpclass(nan inf zero sub) [[ARG1:%.*]]) #[[ATTR0]] {
237 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
238 ; CHECK-NEXT:    ret float [[FDIV]]
240   %fdiv = fdiv float %arg0, %arg1
241   ret float %fdiv
244 ; Denormal mode doesn't matter because sources are nofpclass(sub)
245 define float @ret_fdiv_daz_nonan_noinf_nozero_nosub__nonan_noinf_nozero_nosub(float nofpclass(nan inf zero sub) %arg0, float nofpclass(nan inf zero sub) %arg1) #1 {
246 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_daz_nonan_noinf_nozero_nosub__nonan_noinf_nozero_nosub
247 ; CHECK-SAME: (float nofpclass(nan inf zero sub) [[ARG0:%.*]], float nofpclass(nan inf zero sub) [[ARG1:%.*]]) #[[ATTR1]] {
248 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
249 ; CHECK-NEXT:    ret float [[FDIV]]
251   %fdiv = fdiv float %arg0, %arg1
252   ret float %fdiv
255 define float @ret_fdiv_dapz_nonan_noinf_nozero_nosub__nonan_noinf_nozero_nosub(float nofpclass(nan inf zero sub) %arg0, float nofpclass(nan inf zero sub) %arg1) #2 {
256 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_dapz_nonan_noinf_nozero_nosub__nonan_noinf_nozero_nosub
257 ; CHECK-SAME: (float nofpclass(nan inf zero sub) [[ARG0:%.*]], float nofpclass(nan inf zero sub) [[ARG1:%.*]]) #[[ATTR2]] {
258 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
259 ; CHECK-NEXT:    ret float [[FDIV]]
261   %fdiv = fdiv float %arg0, %arg1
262   ret float %fdiv
265 define float @ret_fdiv_dynamic_nonan_noinf_nozero_nosub__nonan_noinf_nozero_nosub(float nofpclass(nan inf zero sub) %arg0, float nofpclass(nan inf zero sub) %arg1) #3 {
266 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_dynamic_nonan_noinf_nozero_nosub__nonan_noinf_nozero_nosub
267 ; CHECK-SAME: (float nofpclass(nan inf zero sub) [[ARG0:%.*]], float nofpclass(nan inf zero sub) [[ARG1:%.*]]) #[[ATTR3]] {
268 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
269 ; CHECK-NEXT:    ret float [[FDIV]]
271   %fdiv = fdiv float %arg0, %arg1
272   ret float %fdiv
275 ; Missing no-subnormal on lhs
276 define float @ret_fdiv_daz_nonan_noinf_nozero__nonan_noinf_nozero_nosub(float nofpclass(nan inf zero) %arg0, float nofpclass(nan inf zero sub) %arg1) #1 {
277 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_daz_nonan_noinf_nozero__nonan_noinf_nozero_nosub
278 ; CHECK-SAME: (float nofpclass(nan inf zero) [[ARG0:%.*]], float nofpclass(nan inf zero sub) [[ARG1:%.*]]) #[[ATTR1]] {
279 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
280 ; CHECK-NEXT:    ret float [[FDIV]]
282   %fdiv = fdiv float %arg0, %arg1
283   ret float %fdiv
286 ; Missing no-subnormal on lhs
287 define float @ret_fdiv_daz_nonan_noinf_nozero_nosub__nonan_noinf_nozero(float nofpclass(nan inf zero sub) %arg0, float nofpclass(nan inf zero) %arg1) #1 {
288 ; CHECK-LABEL: define nofpclass(nan) float @ret_fdiv_daz_nonan_noinf_nozero_nosub__nonan_noinf_nozero
289 ; CHECK-SAME: (float nofpclass(nan inf zero sub) [[ARG0:%.*]], float nofpclass(nan inf zero) [[ARG1:%.*]]) #[[ATTR1]] {
290 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
291 ; CHECK-NEXT:    ret float [[FDIV]]
293   %fdiv = fdiv float %arg0, %arg1
294   ret float %fdiv
297 ; should be able to infer noinf
298 define float @ret_fdiv_ieee_noinf__nozero(float nofpclass(inf) %arg0, float nofpclass(zero) %arg1) #0 {
299 ; CHECK-LABEL: define float @ret_fdiv_ieee_noinf__nozero
300 ; CHECK-SAME: (float nofpclass(inf) [[ARG0:%.*]], float nofpclass(zero) [[ARG1:%.*]]) #[[ATTR0]] {
301 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
302 ; CHECK-NEXT:    ret float [[FDIV]]
304   %fdiv = fdiv float %arg0, %arg1
305   ret float %fdiv
308 define float @ret_fdiv_ieee_all__nozero(float %arg0, float nofpclass(zero) %arg1) #0 {
309 ; CHECK-LABEL: define float @ret_fdiv_ieee_all__nozero
310 ; CHECK-SAME: (float [[ARG0:%.*]], float nofpclass(zero) [[ARG1:%.*]]) #[[ATTR0]] {
311 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
312 ; CHECK-NEXT:    ret float [[FDIV]]
314   %fdiv = fdiv float %arg0, %arg1
315   ret float %fdiv
318 define float @ret_fdiv_ieee_noinf__all(float nofpclass(inf) %arg0, float %arg1) #0 {
319 ; CHECK-LABEL: define float @ret_fdiv_ieee_noinf__all
320 ; CHECK-SAME: (float nofpclass(inf) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR0]] {
321 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
322 ; CHECK-NEXT:    ret float [[FDIV]]
324   %fdiv = fdiv float %arg0, %arg1
325   ret float %fdiv
328 define float @ret_fdiv_ieee_nozero__noinf(float nofpclass(zero) %arg0, float nofpclass(inf) %arg1) #0 {
329 ; CHECK-LABEL: define float @ret_fdiv_ieee_nozero__noinf
330 ; CHECK-SAME: (float nofpclass(zero) [[ARG0:%.*]], float nofpclass(inf) [[ARG1:%.*]]) #[[ATTR0]] {
331 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
332 ; CHECK-NEXT:    ret float [[FDIV]]
334   %fdiv = fdiv float %arg0, %arg1
335   ret float %fdiv
338 define float @ret_fdiv_daz_noinf__nozero(float nofpclass(inf) %arg0, float nofpclass(zero) %arg1) #1 {
339 ; CHECK-LABEL: define float @ret_fdiv_daz_noinf__nozero
340 ; CHECK-SAME: (float nofpclass(inf) [[ARG0:%.*]], float nofpclass(zero) [[ARG1:%.*]]) #[[ATTR1]] {
341 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
342 ; CHECK-NEXT:    ret float [[FDIV]]
344   %fdiv = fdiv float %arg0, %arg1
345   ret float %fdiv
348 define float @ret_fdiv_daz_noinf__nozero_nosub(float nofpclass(inf) %arg0, float nofpclass(zero sub) %arg1) #1 {
349 ; CHECK-LABEL: define float @ret_fdiv_daz_noinf__nozero_nosub
350 ; CHECK-SAME: (float nofpclass(inf) [[ARG0:%.*]], float nofpclass(zero sub) [[ARG1:%.*]]) #[[ATTR1]] {
351 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
352 ; CHECK-NEXT:    ret float [[FDIV]]
354   %fdiv = fdiv float %arg0, %arg1
355   ret float %fdiv
358 define float @ret_fdiv_same_operands(float %arg) #0 {
359 ; CHECK-LABEL: define nofpclass(inf zero sub nnorm) float @ret_fdiv_same_operands
360 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR0]] {
361 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG]], [[ARG]]
362 ; CHECK-NEXT:    ret float [[FDIV]]
364   %fdiv = fdiv float %arg, %arg
365   ret float %fdiv
368 define float @ret_fdiv_same_operands_nosnan(float nofpclass(snan) %arg) #0 {
369 ; CHECK-LABEL: define nofpclass(inf zero sub nnorm) float @ret_fdiv_same_operands_nosnan
370 ; CHECK-SAME: (float nofpclass(snan) [[ARG:%.*]]) #[[ATTR0]] {
371 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG]], [[ARG]]
372 ; CHECK-NEXT:    ret float [[FDIV]]
374   %fdiv = fdiv float %arg, %arg
375   ret float %fdiv
378 define float @ret_fdiv_same_operands_noqnan(float nofpclass(qnan) %arg) #0 {
379 ; CHECK-LABEL: define nofpclass(inf zero sub nnorm) float @ret_fdiv_same_operands_noqnan
380 ; CHECK-SAME: (float nofpclass(qnan) [[ARG:%.*]]) #[[ATTR0]] {
381 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG]], [[ARG]]
382 ; CHECK-NEXT:    ret float [[FDIV]]
384   %fdiv = fdiv float %arg, %arg
385   ret float %fdiv
388 define float @ret_fdiv_same_operands_nonan(float nofpclass(nan) %arg) #0 {
389 ; CHECK-LABEL: define nofpclass(inf zero sub nnorm) float @ret_fdiv_same_operands_nonan
390 ; CHECK-SAME: (float nofpclass(nan) [[ARG:%.*]]) #[[ATTR0]] {
391 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG]], [[ARG]]
392 ; CHECK-NEXT:    ret float [[FDIV]]
394   %fdiv = fdiv float %arg, %arg
395   ret float %fdiv
398 define float @ret_fdiv_no_neg_lhs(float nofpclass(ninf nsub nnorm) %arg0, float %arg1) #0 {
399 ; CHECK-LABEL: define float @ret_fdiv_no_neg_lhs
400 ; CHECK-SAME: (float nofpclass(ninf nsub nnorm) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR0]] {
401 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
402 ; CHECK-NEXT:    ret float [[FDIV]]
404   %fdiv = fdiv float %arg0, %arg1
405   ret float %fdiv
408 define float @ret_fdiv_no_neg_rhs(float %arg0, float nofpclass(ninf nsub nnorm) %arg1) #0 {
409 ; CHECK-LABEL: define float @ret_fdiv_no_neg_rhs
410 ; CHECK-SAME: (float [[ARG0:%.*]], float nofpclass(ninf nsub nnorm) [[ARG1:%.*]]) #[[ATTR0]] {
411 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
412 ; CHECK-NEXT:    ret float [[FDIV]]
414   %fdiv = fdiv float %arg0, %arg1
415   ret float %fdiv
418 define float @ret_fdiv_no_neg_nzero_rhs(float %arg0, float nofpclass(ninf nsub nnorm nzero) %arg1) #0 {
419 ; CHECK-LABEL: define float @ret_fdiv_no_neg_nzero_rhs
420 ; CHECK-SAME: (float [[ARG0:%.*]], float nofpclass(ninf nzero nsub nnorm) [[ARG1:%.*]]) #[[ATTR0]] {
421 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
422 ; CHECK-NEXT:    ret float [[FDIV]]
424   %fdiv = fdiv float %arg0, %arg1
425   ret float %fdiv
428 define float @ret_fdiv_no_neg(float nofpclass(ninf nsub nnorm) %arg0, float nofpclass(ninf nsub nnorm) %arg1) #0 {
429 ; CHECK-LABEL: define float @ret_fdiv_no_neg
430 ; CHECK-SAME: (float nofpclass(ninf nsub nnorm) [[ARG0:%.*]], float nofpclass(ninf nsub nnorm) [[ARG1:%.*]]) #[[ATTR0]] {
431 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
432 ; CHECK-NEXT:    ret float [[FDIV]]
434   %fdiv = fdiv float %arg0, %arg1
435   ret float %fdiv
438 define float @ret_fdiv_no_neg_nzero(float nofpclass(ninf nsub nnorm nzero) %arg0, float nofpclass(ninf nsub nnorm nzero) %arg1) #0 {
439 ; CHECK-LABEL: define nofpclass(ninf nzero nsub nnorm) float @ret_fdiv_no_neg_nzero
440 ; CHECK-SAME: (float nofpclass(ninf nzero nsub nnorm) [[ARG0:%.*]], float nofpclass(ninf nzero nsub nnorm) [[ARG1:%.*]]) #[[ATTR0]] {
441 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
442 ; CHECK-NEXT:    ret float [[FDIV]]
444   %fdiv = fdiv float %arg0, %arg1
445   ret float %fdiv
448 define float @ret_fdiv_no_neg_rhs_no_nzero(float nofpclass(ninf nsub nnorm) %arg0, float nofpclass(ninf nsub nnorm nzero) %arg1) #0 {
449 ; CHECK-LABEL: define float @ret_fdiv_no_neg_rhs_no_nzero
450 ; CHECK-SAME: (float nofpclass(ninf nsub nnorm) [[ARG0:%.*]], float nofpclass(ninf nzero nsub nnorm) [[ARG1:%.*]]) #[[ATTR0]] {
451 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
452 ; CHECK-NEXT:    ret float [[FDIV]]
454   %fdiv = fdiv float %arg0, %arg1
455   ret float %fdiv
458 define float @ret_fdiv_no_neg_no_zero_rhs(float nofpclass(ninf nsub nnorm nzero) %arg0, float nofpclass(ninf nsub nnorm zero) %arg1) #0 {
459 ; CHECK-LABEL: define nofpclass(ninf nzero nsub nnorm) float @ret_fdiv_no_neg_no_zero_rhs
460 ; CHECK-SAME: (float nofpclass(ninf nzero nsub nnorm) [[ARG0:%.*]], float nofpclass(ninf zero nsub nnorm) [[ARG1:%.*]]) #[[ATTR0]] {
461 ; CHECK-NEXT:    [[FDIV:%.*]] = fdiv float [[ARG0]], [[ARG1]]
462 ; CHECK-NEXT:    ret float [[FDIV]]
464   %fdiv = fdiv float %arg0, %arg1
465   ret float %fdiv
468 attributes #0 = { "denormal-fp-math"="ieee,ieee" }
469 attributes #1 = { "denormal-fp-math"="ieee,preserve-sign" }
470 attributes #2 = { "denormal-fp-math"="ieee,positive-zero" }
471 attributes #3 = { "denormal-fp-math"="ieee,dynamic" }
472 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
473 ; TUNIT: {{.*}}