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