Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / LoongArch / double-fcmps-strict.ll
blobc8974fb946222a8c930180bf707e1f7864f120d8
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA32
3 ; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA64
5 declare i1 @llvm.experimental.constrained.fcmps.f64(double, double, metadata, metadata)
6 declare i1 @llvm.experimental.constrained.fcmp.f64(double, double, metadata, metadata)
8 define i32 @fcmps_oeq(double %a, double %b) nounwind strictfp {
9 ; LA32-LABEL: fcmps_oeq:
10 ; LA32:       # %bb.0:
11 ; LA32-NEXT:    fcmp.seq.d $fcc0, $fa0, $fa1
12 ; LA32-NEXT:    movcf2gr $a0, $fcc0
13 ; LA32-NEXT:    ret
15 ; LA64-LABEL: fcmps_oeq:
16 ; LA64:       # %bb.0:
17 ; LA64-NEXT:    fcmp.seq.d $fcc0, $fa0, $fa1
18 ; LA64-NEXT:    movcf2gr $a0, $fcc0
19 ; LA64-NEXT:    ret
20   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"oeq", metadata !"fpexcept.strict") strictfp
21   %2 = zext i1 %1 to i32
22   ret i32 %2
25 define i32 @fcmps_ogt(double %a, double %b) nounwind strictfp {
26 ; LA32-LABEL: fcmps_ogt:
27 ; LA32:       # %bb.0:
28 ; LA32-NEXT:    fcmp.slt.d $fcc0, $fa1, $fa0
29 ; LA32-NEXT:    movcf2gr $a0, $fcc0
30 ; LA32-NEXT:    ret
32 ; LA64-LABEL: fcmps_ogt:
33 ; LA64:       # %bb.0:
34 ; LA64-NEXT:    fcmp.slt.d $fcc0, $fa1, $fa0
35 ; LA64-NEXT:    movcf2gr $a0, $fcc0
36 ; LA64-NEXT:    ret
37   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ogt", metadata !"fpexcept.strict") strictfp
38   %2 = zext i1 %1 to i32
39   ret i32 %2
42 define i32 @fcmps_oge(double %a, double %b) nounwind strictfp {
43 ; LA32-LABEL: fcmps_oge:
44 ; LA32:       # %bb.0:
45 ; LA32-NEXT:    fcmp.sle.d $fcc0, $fa1, $fa0
46 ; LA32-NEXT:    movcf2gr $a0, $fcc0
47 ; LA32-NEXT:    ret
49 ; LA64-LABEL: fcmps_oge:
50 ; LA64:       # %bb.0:
51 ; LA64-NEXT:    fcmp.sle.d $fcc0, $fa1, $fa0
52 ; LA64-NEXT:    movcf2gr $a0, $fcc0
53 ; LA64-NEXT:    ret
54   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"oge", metadata !"fpexcept.strict") strictfp
55   %2 = zext i1 %1 to i32
56   ret i32 %2
59 define i32 @fcmps_olt(double %a, double %b) nounwind strictfp {
60 ; LA32-LABEL: fcmps_olt:
61 ; LA32:       # %bb.0:
62 ; LA32-NEXT:    fcmp.slt.d $fcc0, $fa0, $fa1
63 ; LA32-NEXT:    movcf2gr $a0, $fcc0
64 ; LA32-NEXT:    ret
66 ; LA64-LABEL: fcmps_olt:
67 ; LA64:       # %bb.0:
68 ; LA64-NEXT:    fcmp.slt.d $fcc0, $fa0, $fa1
69 ; LA64-NEXT:    movcf2gr $a0, $fcc0
70 ; LA64-NEXT:    ret
71   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"olt", metadata !"fpexcept.strict") strictfp
72   %2 = zext i1 %1 to i32
73   ret i32 %2
76 define i32 @fcmps_ole(double %a, double %b) nounwind strictfp {
77 ; LA32-LABEL: fcmps_ole:
78 ; LA32:       # %bb.0:
79 ; LA32-NEXT:    fcmp.sle.d $fcc0, $fa0, $fa1
80 ; LA32-NEXT:    movcf2gr $a0, $fcc0
81 ; LA32-NEXT:    ret
83 ; LA64-LABEL: fcmps_ole:
84 ; LA64:       # %bb.0:
85 ; LA64-NEXT:    fcmp.sle.d $fcc0, $fa0, $fa1
86 ; LA64-NEXT:    movcf2gr $a0, $fcc0
87 ; LA64-NEXT:    ret
88   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ole", metadata !"fpexcept.strict") strictfp
89   %2 = zext i1 %1 to i32
90   ret i32 %2
93 define i32 @fcmps_one(double %a, double %b) nounwind strictfp {
94 ; LA32-LABEL: fcmps_one:
95 ; LA32:       # %bb.0:
96 ; LA32-NEXT:    fcmp.sne.d $fcc0, $fa0, $fa1
97 ; LA32-NEXT:    movcf2gr $a0, $fcc0
98 ; LA32-NEXT:    ret
100 ; LA64-LABEL: fcmps_one:
101 ; LA64:       # %bb.0:
102 ; LA64-NEXT:    fcmp.sne.d $fcc0, $fa0, $fa1
103 ; LA64-NEXT:    movcf2gr $a0, $fcc0
104 ; LA64-NEXT:    ret
105   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"one", metadata !"fpexcept.strict") strictfp
106   %2 = zext i1 %1 to i32
107   ret i32 %2
110 define i32 @fcmps_ord(double %a, double %b) nounwind strictfp {
111 ; LA32-LABEL: fcmps_ord:
112 ; LA32:       # %bb.0:
113 ; LA32-NEXT:    fcmp.sor.d $fcc0, $fa0, $fa1
114 ; LA32-NEXT:    movcf2gr $a0, $fcc0
115 ; LA32-NEXT:    ret
117 ; LA64-LABEL: fcmps_ord:
118 ; LA64:       # %bb.0:
119 ; LA64-NEXT:    fcmp.sor.d $fcc0, $fa0, $fa1
120 ; LA64-NEXT:    movcf2gr $a0, $fcc0
121 ; LA64-NEXT:    ret
122   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ord", metadata !"fpexcept.strict") strictfp
123   %2 = zext i1 %1 to i32
124   ret i32 %2
127 define i32 @fcmps_ueq(double %a, double %b) nounwind strictfp {
128 ; LA32-LABEL: fcmps_ueq:
129 ; LA32:       # %bb.0:
130 ; LA32-NEXT:    fcmp.sueq.d $fcc0, $fa0, $fa1
131 ; LA32-NEXT:    movcf2gr $a0, $fcc0
132 ; LA32-NEXT:    ret
134 ; LA64-LABEL: fcmps_ueq:
135 ; LA64:       # %bb.0:
136 ; LA64-NEXT:    fcmp.sueq.d $fcc0, $fa0, $fa1
137 ; LA64-NEXT:    movcf2gr $a0, $fcc0
138 ; LA64-NEXT:    ret
139   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ueq", metadata !"fpexcept.strict") strictfp
140   %2 = zext i1 %1 to i32
141   ret i32 %2
144 define i32 @fcmps_ugt(double %a, double %b) nounwind strictfp {
145 ; LA32-LABEL: fcmps_ugt:
146 ; LA32:       # %bb.0:
147 ; LA32-NEXT:    fcmp.sult.d $fcc0, $fa1, $fa0
148 ; LA32-NEXT:    movcf2gr $a0, $fcc0
149 ; LA32-NEXT:    ret
151 ; LA64-LABEL: fcmps_ugt:
152 ; LA64:       # %bb.0:
153 ; LA64-NEXT:    fcmp.sult.d $fcc0, $fa1, $fa0
154 ; LA64-NEXT:    movcf2gr $a0, $fcc0
155 ; LA64-NEXT:    ret
156   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ugt", metadata !"fpexcept.strict") strictfp
157   %2 = zext i1 %1 to i32
158   ret i32 %2
161 define i32 @fcmps_uge(double %a, double %b) nounwind strictfp {
162 ; LA32-LABEL: fcmps_uge:
163 ; LA32:       # %bb.0:
164 ; LA32-NEXT:    fcmp.sule.d $fcc0, $fa1, $fa0
165 ; LA32-NEXT:    movcf2gr $a0, $fcc0
166 ; LA32-NEXT:    ret
168 ; LA64-LABEL: fcmps_uge:
169 ; LA64:       # %bb.0:
170 ; LA64-NEXT:    fcmp.sule.d $fcc0, $fa1, $fa0
171 ; LA64-NEXT:    movcf2gr $a0, $fcc0
172 ; LA64-NEXT:    ret
173   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"uge", metadata !"fpexcept.strict") strictfp
174   %2 = zext i1 %1 to i32
175   ret i32 %2
178 define i32 @fcmps_ult(double %a, double %b) nounwind strictfp {
179 ; LA32-LABEL: fcmps_ult:
180 ; LA32:       # %bb.0:
181 ; LA32-NEXT:    fcmp.sult.d $fcc0, $fa0, $fa1
182 ; LA32-NEXT:    movcf2gr $a0, $fcc0
183 ; LA32-NEXT:    ret
185 ; LA64-LABEL: fcmps_ult:
186 ; LA64:       # %bb.0:
187 ; LA64-NEXT:    fcmp.sult.d $fcc0, $fa0, $fa1
188 ; LA64-NEXT:    movcf2gr $a0, $fcc0
189 ; LA64-NEXT:    ret
190   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ult", metadata !"fpexcept.strict") strictfp
191   %2 = zext i1 %1 to i32
192   ret i32 %2
195 define i32 @fcmps_ule(double %a, double %b) nounwind strictfp {
196 ; LA32-LABEL: fcmps_ule:
197 ; LA32:       # %bb.0:
198 ; LA32-NEXT:    fcmp.sule.d $fcc0, $fa0, $fa1
199 ; LA32-NEXT:    movcf2gr $a0, $fcc0
200 ; LA32-NEXT:    ret
202 ; LA64-LABEL: fcmps_ule:
203 ; LA64:       # %bb.0:
204 ; LA64-NEXT:    fcmp.sule.d $fcc0, $fa0, $fa1
205 ; LA64-NEXT:    movcf2gr $a0, $fcc0
206 ; LA64-NEXT:    ret
207   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ule", metadata !"fpexcept.strict") strictfp
208   %2 = zext i1 %1 to i32
209   ret i32 %2
212 define i32 @fcmps_une(double %a, double %b) nounwind strictfp {
213 ; LA32-LABEL: fcmps_une:
214 ; LA32:       # %bb.0:
215 ; LA32-NEXT:    fcmp.sune.d $fcc0, $fa0, $fa1
216 ; LA32-NEXT:    movcf2gr $a0, $fcc0
217 ; LA32-NEXT:    ret
219 ; LA64-LABEL: fcmps_une:
220 ; LA64:       # %bb.0:
221 ; LA64-NEXT:    fcmp.sune.d $fcc0, $fa0, $fa1
222 ; LA64-NEXT:    movcf2gr $a0, $fcc0
223 ; LA64-NEXT:    ret
224   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"une", metadata !"fpexcept.strict") strictfp
225   %2 = zext i1 %1 to i32
226   ret i32 %2
229 define i32 @fcmps_uno(double %a, double %b) nounwind strictfp {
230 ; LA32-LABEL: fcmps_uno:
231 ; LA32:       # %bb.0:
232 ; LA32-NEXT:    fcmp.sun.d $fcc0, $fa0, $fa1
233 ; LA32-NEXT:    movcf2gr $a0, $fcc0
234 ; LA32-NEXT:    ret
236 ; LA64-LABEL: fcmps_uno:
237 ; LA64:       # %bb.0:
238 ; LA64-NEXT:    fcmp.sun.d $fcc0, $fa0, $fa1
239 ; LA64-NEXT:    movcf2gr $a0, $fcc0
240 ; LA64-NEXT:    ret
241   %1 = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"uno", metadata !"fpexcept.strict") strictfp
242   %2 = zext i1 %1 to i32
243   ret i32 %2
246 define i32 @fcmp_oeq(double %a, double %b) nounwind strictfp {
247 ; LA32-LABEL: fcmp_oeq:
248 ; LA32:       # %bb.0:
249 ; LA32-NEXT:    fcmp.ceq.d $fcc0, $fa0, $fa1
250 ; LA32-NEXT:    movcf2gr $a0, $fcc0
251 ; LA32-NEXT:    ret
253 ; LA64-LABEL: fcmp_oeq:
254 ; LA64:       # %bb.0:
255 ; LA64-NEXT:    fcmp.ceq.d $fcc0, $fa0, $fa1
256 ; LA64-NEXT:    movcf2gr $a0, $fcc0
257 ; LA64-NEXT:    ret
258   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"oeq", metadata !"fpexcept.strict") strictfp
259   %2 = zext i1 %1 to i32
260   ret i32 %2
263 define i32 @fcmp_ogt(double %a, double %b) nounwind strictfp {
264 ; LA32-LABEL: fcmp_ogt:
265 ; LA32:       # %bb.0:
266 ; LA32-NEXT:    fcmp.clt.d $fcc0, $fa1, $fa0
267 ; LA32-NEXT:    movcf2gr $a0, $fcc0
268 ; LA32-NEXT:    ret
270 ; LA64-LABEL: fcmp_ogt:
271 ; LA64:       # %bb.0:
272 ; LA64-NEXT:    fcmp.clt.d $fcc0, $fa1, $fa0
273 ; LA64-NEXT:    movcf2gr $a0, $fcc0
274 ; LA64-NEXT:    ret
275   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ogt", metadata !"fpexcept.strict") strictfp
276   %2 = zext i1 %1 to i32
277   ret i32 %2
280 define i32 @fcmp_oge(double %a, double %b) nounwind strictfp {
281 ; LA32-LABEL: fcmp_oge:
282 ; LA32:       # %bb.0:
283 ; LA32-NEXT:    fcmp.cle.d $fcc0, $fa1, $fa0
284 ; LA32-NEXT:    movcf2gr $a0, $fcc0
285 ; LA32-NEXT:    ret
287 ; LA64-LABEL: fcmp_oge:
288 ; LA64:       # %bb.0:
289 ; LA64-NEXT:    fcmp.cle.d $fcc0, $fa1, $fa0
290 ; LA64-NEXT:    movcf2gr $a0, $fcc0
291 ; LA64-NEXT:    ret
292   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"oge", metadata !"fpexcept.strict") strictfp
293   %2 = zext i1 %1 to i32
294   ret i32 %2
297 define i32 @fcmp_olt(double %a, double %b) nounwind strictfp {
298 ; LA32-LABEL: fcmp_olt:
299 ; LA32:       # %bb.0:
300 ; LA32-NEXT:    fcmp.clt.d $fcc0, $fa0, $fa1
301 ; LA32-NEXT:    movcf2gr $a0, $fcc0
302 ; LA32-NEXT:    ret
304 ; LA64-LABEL: fcmp_olt:
305 ; LA64:       # %bb.0:
306 ; LA64-NEXT:    fcmp.clt.d $fcc0, $fa0, $fa1
307 ; LA64-NEXT:    movcf2gr $a0, $fcc0
308 ; LA64-NEXT:    ret
309   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"olt", metadata !"fpexcept.strict") strictfp
310   %2 = zext i1 %1 to i32
311   ret i32 %2
314 define i32 @fcmp_ole(double %a, double %b) nounwind strictfp {
315 ; LA32-LABEL: fcmp_ole:
316 ; LA32:       # %bb.0:
317 ; LA32-NEXT:    fcmp.cle.d $fcc0, $fa0, $fa1
318 ; LA32-NEXT:    movcf2gr $a0, $fcc0
319 ; LA32-NEXT:    ret
321 ; LA64-LABEL: fcmp_ole:
322 ; LA64:       # %bb.0:
323 ; LA64-NEXT:    fcmp.cle.d $fcc0, $fa0, $fa1
324 ; LA64-NEXT:    movcf2gr $a0, $fcc0
325 ; LA64-NEXT:    ret
326   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ole", metadata !"fpexcept.strict") strictfp
327   %2 = zext i1 %1 to i32
328   ret i32 %2
331 define i32 @fcmp_one(double %a, double %b) nounwind strictfp {
332 ; LA32-LABEL: fcmp_one:
333 ; LA32:       # %bb.0:
334 ; LA32-NEXT:    fcmp.cne.d $fcc0, $fa0, $fa1
335 ; LA32-NEXT:    movcf2gr $a0, $fcc0
336 ; LA32-NEXT:    ret
338 ; LA64-LABEL: fcmp_one:
339 ; LA64:       # %bb.0:
340 ; LA64-NEXT:    fcmp.cne.d $fcc0, $fa0, $fa1
341 ; LA64-NEXT:    movcf2gr $a0, $fcc0
342 ; LA64-NEXT:    ret
343   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"one", metadata !"fpexcept.strict") strictfp
344   %2 = zext i1 %1 to i32
345   ret i32 %2
348 define i32 @fcmp_ord(double %a, double %b) nounwind strictfp {
349 ; LA32-LABEL: fcmp_ord:
350 ; LA32:       # %bb.0:
351 ; LA32-NEXT:    fcmp.cor.d $fcc0, $fa0, $fa1
352 ; LA32-NEXT:    movcf2gr $a0, $fcc0
353 ; LA32-NEXT:    ret
355 ; LA64-LABEL: fcmp_ord:
356 ; LA64:       # %bb.0:
357 ; LA64-NEXT:    fcmp.cor.d $fcc0, $fa0, $fa1
358 ; LA64-NEXT:    movcf2gr $a0, $fcc0
359 ; LA64-NEXT:    ret
360   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ord", metadata !"fpexcept.strict") strictfp
361   %2 = zext i1 %1 to i32
362   ret i32 %2
365 define i32 @fcmp_ueq(double %a, double %b) nounwind strictfp {
366 ; LA32-LABEL: fcmp_ueq:
367 ; LA32:       # %bb.0:
368 ; LA32-NEXT:    fcmp.cueq.d $fcc0, $fa0, $fa1
369 ; LA32-NEXT:    movcf2gr $a0, $fcc0
370 ; LA32-NEXT:    ret
372 ; LA64-LABEL: fcmp_ueq:
373 ; LA64:       # %bb.0:
374 ; LA64-NEXT:    fcmp.cueq.d $fcc0, $fa0, $fa1
375 ; LA64-NEXT:    movcf2gr $a0, $fcc0
376 ; LA64-NEXT:    ret
377   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ueq", metadata !"fpexcept.strict") strictfp
378   %2 = zext i1 %1 to i32
379   ret i32 %2
382 define i32 @fcmp_ugt(double %a, double %b) nounwind strictfp {
383 ; LA32-LABEL: fcmp_ugt:
384 ; LA32:       # %bb.0:
385 ; LA32-NEXT:    fcmp.cult.d $fcc0, $fa1, $fa0
386 ; LA32-NEXT:    movcf2gr $a0, $fcc0
387 ; LA32-NEXT:    ret
389 ; LA64-LABEL: fcmp_ugt:
390 ; LA64:       # %bb.0:
391 ; LA64-NEXT:    fcmp.cult.d $fcc0, $fa1, $fa0
392 ; LA64-NEXT:    movcf2gr $a0, $fcc0
393 ; LA64-NEXT:    ret
394   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ugt", metadata !"fpexcept.strict") strictfp
395   %2 = zext i1 %1 to i32
396   ret i32 %2
399 define i32 @fcmp_uge(double %a, double %b) nounwind strictfp {
400 ; LA32-LABEL: fcmp_uge:
401 ; LA32:       # %bb.0:
402 ; LA32-NEXT:    fcmp.cule.d $fcc0, $fa1, $fa0
403 ; LA32-NEXT:    movcf2gr $a0, $fcc0
404 ; LA32-NEXT:    ret
406 ; LA64-LABEL: fcmp_uge:
407 ; LA64:       # %bb.0:
408 ; LA64-NEXT:    fcmp.cule.d $fcc0, $fa1, $fa0
409 ; LA64-NEXT:    movcf2gr $a0, $fcc0
410 ; LA64-NEXT:    ret
411   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"uge", metadata !"fpexcept.strict") strictfp
412   %2 = zext i1 %1 to i32
413   ret i32 %2
416 define i32 @fcmp_ult(double %a, double %b) nounwind strictfp {
417 ; LA32-LABEL: fcmp_ult:
418 ; LA32:       # %bb.0:
419 ; LA32-NEXT:    fcmp.cult.d $fcc0, $fa0, $fa1
420 ; LA32-NEXT:    movcf2gr $a0, $fcc0
421 ; LA32-NEXT:    ret
423 ; LA64-LABEL: fcmp_ult:
424 ; LA64:       # %bb.0:
425 ; LA64-NEXT:    fcmp.cult.d $fcc0, $fa0, $fa1
426 ; LA64-NEXT:    movcf2gr $a0, $fcc0
427 ; LA64-NEXT:    ret
428   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ult", metadata !"fpexcept.strict") strictfp
429   %2 = zext i1 %1 to i32
430   ret i32 %2
433 define i32 @fcmp_ule(double %a, double %b) nounwind strictfp {
434 ; LA32-LABEL: fcmp_ule:
435 ; LA32:       # %bb.0:
436 ; LA32-NEXT:    fcmp.cule.d $fcc0, $fa0, $fa1
437 ; LA32-NEXT:    movcf2gr $a0, $fcc0
438 ; LA32-NEXT:    ret
440 ; LA64-LABEL: fcmp_ule:
441 ; LA64:       # %bb.0:
442 ; LA64-NEXT:    fcmp.cule.d $fcc0, $fa0, $fa1
443 ; LA64-NEXT:    movcf2gr $a0, $fcc0
444 ; LA64-NEXT:    ret
445   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ule", metadata !"fpexcept.strict") strictfp
446   %2 = zext i1 %1 to i32
447   ret i32 %2
450 define i32 @fcmp_une(double %a, double %b) nounwind strictfp {
451 ; LA32-LABEL: fcmp_une:
452 ; LA32:       # %bb.0:
453 ; LA32-NEXT:    fcmp.cune.d $fcc0, $fa0, $fa1
454 ; LA32-NEXT:    movcf2gr $a0, $fcc0
455 ; LA32-NEXT:    ret
457 ; LA64-LABEL: fcmp_une:
458 ; LA64:       # %bb.0:
459 ; LA64-NEXT:    fcmp.cune.d $fcc0, $fa0, $fa1
460 ; LA64-NEXT:    movcf2gr $a0, $fcc0
461 ; LA64-NEXT:    ret
462   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"une", metadata !"fpexcept.strict") strictfp
463   %2 = zext i1 %1 to i32
464   ret i32 %2
467 define i32 @fcmp_uno(double %a, double %b) nounwind strictfp {
468 ; LA32-LABEL: fcmp_uno:
469 ; LA32:       # %bb.0:
470 ; LA32-NEXT:    fcmp.cun.d $fcc0, $fa0, $fa1
471 ; LA32-NEXT:    movcf2gr $a0, $fcc0
472 ; LA32-NEXT:    ret
474 ; LA64-LABEL: fcmp_uno:
475 ; LA64:       # %bb.0:
476 ; LA64-NEXT:    fcmp.cun.d $fcc0, $fa0, $fa1
477 ; LA64-NEXT:    movcf2gr $a0, $fcc0
478 ; LA64-NEXT:    ret
479   %1 = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"uno", metadata !"fpexcept.strict") strictfp
480   %2 = zext i1 %1 to i32
481   ret i32 %2