xref: /llvm-project/llvm/test/CodeGen/LoongArch/float-br-fcmp.ll (revision 25ecfbf892ae736d92cd5c88b979b45f42f1e467)
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 void @abort()
6
7define void @br_fcmp_oeq_bcnez_float(float %a, float %b) nounwind {
8; LA32-LABEL: br_fcmp_oeq_bcnez_float:
9; LA32:       # %bb.0:
10; LA32-NEXT:    fcmp.ceq.s $fcc0, $fa0, $fa1
11; LA32-NEXT:    bcnez $fcc0, .LBB0_2
12; LA32-NEXT:  # %bb.1: # %if.else
13; LA32-NEXT:    ret
14; LA32-NEXT:  .LBB0_2: # %if.then
15; LA32-NEXT:    addi.w $sp, $sp, -16
16; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
17; LA32-NEXT:    bl %plt(abort)
18;
19; LA64-LABEL: br_fcmp_oeq_bcnez_float:
20; LA64:       # %bb.0:
21; LA64-NEXT:    fcmp.ceq.s $fcc0, $fa0, $fa1
22; LA64-NEXT:    bcnez $fcc0, .LBB0_2
23; LA64-NEXT:  # %bb.1: # %if.else
24; LA64-NEXT:    ret
25; LA64-NEXT:  .LBB0_2: # %if.then
26; LA64-NEXT:    addi.d $sp, $sp, -16
27; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
28; LA64-NEXT:    bl %plt(abort)
29  %1 = fcmp oeq float %a, %b
30  br i1 %1, label %if.then, label %if.else
31if.else:
32  ret void
33if.then:
34  tail call void @abort()
35  unreachable
36}
37
38define void @br_fcmp_oeq_bceqz_float(float %a, float %b) nounwind {
39; LA32-LABEL: br_fcmp_oeq_bceqz_float:
40; LA32:       # %bb.0:
41; LA32-NEXT:    fcmp.cune.s $fcc0, $fa0, $fa1
42; LA32-NEXT:    bceqz $fcc0, .LBB1_2
43; LA32-NEXT:  # %bb.1: # %if.else
44; LA32-NEXT:    ret
45; LA32-NEXT:  .LBB1_2: # %if.then
46; LA32-NEXT:    addi.w $sp, $sp, -16
47; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
48; LA32-NEXT:    bl %plt(abort)
49;
50; LA64-LABEL: br_fcmp_oeq_bceqz_float:
51; LA64:       # %bb.0:
52; LA64-NEXT:    fcmp.cune.s $fcc0, $fa0, $fa1
53; LA64-NEXT:    bceqz $fcc0, .LBB1_2
54; LA64-NEXT:  # %bb.1: # %if.else
55; LA64-NEXT:    ret
56; LA64-NEXT:  .LBB1_2: # %if.then
57; LA64-NEXT:    addi.d $sp, $sp, -16
58; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
59; LA64-NEXT:    bl %plt(abort)
60  %1 = fcmp oeq float %a, %b
61  br i1 %1, label %if.then, label %if.else
62if.then:
63  tail call void @abort()
64  unreachable
65if.else:
66  ret void
67}
68
69define void @br_fcmp_ogt_bcnez_float(float %a, float %b) nounwind {
70; LA32-LABEL: br_fcmp_ogt_bcnez_float:
71; LA32:       # %bb.0:
72; LA32-NEXT:    fcmp.clt.s $fcc0, $fa1, $fa0
73; LA32-NEXT:    bcnez $fcc0, .LBB2_2
74; LA32-NEXT:  # %bb.1: # %if.else
75; LA32-NEXT:    ret
76; LA32-NEXT:  .LBB2_2: # %if.then
77; LA32-NEXT:    addi.w $sp, $sp, -16
78; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
79; LA32-NEXT:    bl %plt(abort)
80;
81; LA64-LABEL: br_fcmp_ogt_bcnez_float:
82; LA64:       # %bb.0:
83; LA64-NEXT:    fcmp.clt.s $fcc0, $fa1, $fa0
84; LA64-NEXT:    bcnez $fcc0, .LBB2_2
85; LA64-NEXT:  # %bb.1: # %if.else
86; LA64-NEXT:    ret
87; LA64-NEXT:  .LBB2_2: # %if.then
88; LA64-NEXT:    addi.d $sp, $sp, -16
89; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
90; LA64-NEXT:    bl %plt(abort)
91  %1 = fcmp ogt float %a, %b
92  br i1 %1, label %if.then, label %if.else
93if.else:
94  ret void
95if.then:
96  tail call void @abort()
97  unreachable
98}
99
100define void @br_fcmp_ogt_bceqz_float(float %a, float %b) nounwind {
101; LA32-LABEL: br_fcmp_ogt_bceqz_float:
102; LA32:       # %bb.0:
103; LA32-NEXT:    fcmp.cule.s $fcc0, $fa0, $fa1
104; LA32-NEXT:    bceqz $fcc0, .LBB3_2
105; LA32-NEXT:  # %bb.1: # %if.else
106; LA32-NEXT:    ret
107; LA32-NEXT:  .LBB3_2: # %if.then
108; LA32-NEXT:    addi.w $sp, $sp, -16
109; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
110; LA32-NEXT:    bl %plt(abort)
111;
112; LA64-LABEL: br_fcmp_ogt_bceqz_float:
113; LA64:       # %bb.0:
114; LA64-NEXT:    fcmp.cule.s $fcc0, $fa0, $fa1
115; LA64-NEXT:    bceqz $fcc0, .LBB3_2
116; LA64-NEXT:  # %bb.1: # %if.else
117; LA64-NEXT:    ret
118; LA64-NEXT:  .LBB3_2: # %if.then
119; LA64-NEXT:    addi.d $sp, $sp, -16
120; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
121; LA64-NEXT:    bl %plt(abort)
122  %1 = fcmp ogt float %a, %b
123  br i1 %1, label %if.then, label %if.else
124if.then:
125  tail call void @abort()
126  unreachable
127if.else:
128  ret void
129}
130
131define void @br_fcmp_oge_bcnez_float(float %a, float %b) nounwind {
132; LA32-LABEL: br_fcmp_oge_bcnez_float:
133; LA32:       # %bb.0:
134; LA32-NEXT:    fcmp.cle.s $fcc0, $fa1, $fa0
135; LA32-NEXT:    bcnez $fcc0, .LBB4_2
136; LA32-NEXT:  # %bb.1: # %if.else
137; LA32-NEXT:    ret
138; LA32-NEXT:  .LBB4_2: # %if.then
139; LA32-NEXT:    addi.w $sp, $sp, -16
140; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
141; LA32-NEXT:    bl %plt(abort)
142;
143; LA64-LABEL: br_fcmp_oge_bcnez_float:
144; LA64:       # %bb.0:
145; LA64-NEXT:    fcmp.cle.s $fcc0, $fa1, $fa0
146; LA64-NEXT:    bcnez $fcc0, .LBB4_2
147; LA64-NEXT:  # %bb.1: # %if.else
148; LA64-NEXT:    ret
149; LA64-NEXT:  .LBB4_2: # %if.then
150; LA64-NEXT:    addi.d $sp, $sp, -16
151; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
152; LA64-NEXT:    bl %plt(abort)
153  %1 = fcmp oge float %a, %b
154  br i1 %1, label %if.then, label %if.else
155if.else:
156  ret void
157if.then:
158  tail call void @abort()
159  unreachable
160}
161
162define void @br_fcmp_oge_bceqz_float(float %a, float %b) nounwind {
163; LA32-LABEL: br_fcmp_oge_bceqz_float:
164; LA32:       # %bb.0:
165; LA32-NEXT:    fcmp.cult.s $fcc0, $fa0, $fa1
166; LA32-NEXT:    bceqz $fcc0, .LBB5_2
167; LA32-NEXT:  # %bb.1: # %if.else
168; LA32-NEXT:    ret
169; LA32-NEXT:  .LBB5_2: # %if.then
170; LA32-NEXT:    addi.w $sp, $sp, -16
171; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
172; LA32-NEXT:    bl %plt(abort)
173;
174; LA64-LABEL: br_fcmp_oge_bceqz_float:
175; LA64:       # %bb.0:
176; LA64-NEXT:    fcmp.cult.s $fcc0, $fa0, $fa1
177; LA64-NEXT:    bceqz $fcc0, .LBB5_2
178; LA64-NEXT:  # %bb.1: # %if.else
179; LA64-NEXT:    ret
180; LA64-NEXT:  .LBB5_2: # %if.then
181; LA64-NEXT:    addi.d $sp, $sp, -16
182; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
183; LA64-NEXT:    bl %plt(abort)
184  %1 = fcmp oge float %a, %b
185  br i1 %1, label %if.then, label %if.else
186if.then:
187  tail call void @abort()
188  unreachable
189if.else:
190  ret void
191}
192
193define void @br_fcmp_olt_bcnez_float(float %a, float %b) nounwind {
194; LA32-LABEL: br_fcmp_olt_bcnez_float:
195; LA32:       # %bb.0:
196; LA32-NEXT:    fcmp.clt.s $fcc0, $fa0, $fa1
197; LA32-NEXT:    bcnez $fcc0, .LBB6_2
198; LA32-NEXT:  # %bb.1: # %if.else
199; LA32-NEXT:    ret
200; LA32-NEXT:  .LBB6_2: # %if.then
201; LA32-NEXT:    addi.w $sp, $sp, -16
202; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
203; LA32-NEXT:    bl %plt(abort)
204;
205; LA64-LABEL: br_fcmp_olt_bcnez_float:
206; LA64:       # %bb.0:
207; LA64-NEXT:    fcmp.clt.s $fcc0, $fa0, $fa1
208; LA64-NEXT:    bcnez $fcc0, .LBB6_2
209; LA64-NEXT:  # %bb.1: # %if.else
210; LA64-NEXT:    ret
211; LA64-NEXT:  .LBB6_2: # %if.then
212; LA64-NEXT:    addi.d $sp, $sp, -16
213; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
214; LA64-NEXT:    bl %plt(abort)
215  %1 = fcmp olt float %a, %b
216  br i1 %1, label %if.then, label %if.else
217if.else:
218  ret void
219if.then:
220  tail call void @abort()
221  unreachable
222}
223
224define void @br_fcmp_olt_bceqz_float(float %a, float %b) nounwind {
225; LA32-LABEL: br_fcmp_olt_bceqz_float:
226; LA32:       # %bb.0:
227; LA32-NEXT:    fcmp.cule.s $fcc0, $fa1, $fa0
228; LA32-NEXT:    bceqz $fcc0, .LBB7_2
229; LA32-NEXT:  # %bb.1: # %if.else
230; LA32-NEXT:    ret
231; LA32-NEXT:  .LBB7_2: # %if.then
232; LA32-NEXT:    addi.w $sp, $sp, -16
233; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
234; LA32-NEXT:    bl %plt(abort)
235;
236; LA64-LABEL: br_fcmp_olt_bceqz_float:
237; LA64:       # %bb.0:
238; LA64-NEXT:    fcmp.cule.s $fcc0, $fa1, $fa0
239; LA64-NEXT:    bceqz $fcc0, .LBB7_2
240; LA64-NEXT:  # %bb.1: # %if.else
241; LA64-NEXT:    ret
242; LA64-NEXT:  .LBB7_2: # %if.then
243; LA64-NEXT:    addi.d $sp, $sp, -16
244; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
245; LA64-NEXT:    bl %plt(abort)
246  %1 = fcmp olt float %a, %b
247  br i1 %1, label %if.then, label %if.else
248if.then:
249  tail call void @abort()
250  unreachable
251if.else:
252  ret void
253}
254
255define void @br_fcmp_ole_bcnez_float(float %a, float %b) nounwind {
256; LA32-LABEL: br_fcmp_ole_bcnez_float:
257; LA32:       # %bb.0:
258; LA32-NEXT:    fcmp.cle.s $fcc0, $fa0, $fa1
259; LA32-NEXT:    bcnez $fcc0, .LBB8_2
260; LA32-NEXT:  # %bb.1: # %if.else
261; LA32-NEXT:    ret
262; LA32-NEXT:  .LBB8_2: # %if.then
263; LA32-NEXT:    addi.w $sp, $sp, -16
264; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
265; LA32-NEXT:    bl %plt(abort)
266;
267; LA64-LABEL: br_fcmp_ole_bcnez_float:
268; LA64:       # %bb.0:
269; LA64-NEXT:    fcmp.cle.s $fcc0, $fa0, $fa1
270; LA64-NEXT:    bcnez $fcc0, .LBB8_2
271; LA64-NEXT:  # %bb.1: # %if.else
272; LA64-NEXT:    ret
273; LA64-NEXT:  .LBB8_2: # %if.then
274; LA64-NEXT:    addi.d $sp, $sp, -16
275; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
276; LA64-NEXT:    bl %plt(abort)
277  %1 = fcmp ole float %a, %b
278  br i1 %1, label %if.then, label %if.else
279if.else:
280  ret void
281if.then:
282  tail call void @abort()
283  unreachable
284}
285
286define void @br_fcmp_ole_bceqz_float(float %a, float %b) nounwind {
287; LA32-LABEL: br_fcmp_ole_bceqz_float:
288; LA32:       # %bb.0:
289; LA32-NEXT:    fcmp.cult.s $fcc0, $fa1, $fa0
290; LA32-NEXT:    bceqz $fcc0, .LBB9_2
291; LA32-NEXT:  # %bb.1: # %if.else
292; LA32-NEXT:    ret
293; LA32-NEXT:  .LBB9_2: # %if.then
294; LA32-NEXT:    addi.w $sp, $sp, -16
295; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
296; LA32-NEXT:    bl %plt(abort)
297;
298; LA64-LABEL: br_fcmp_ole_bceqz_float:
299; LA64:       # %bb.0:
300; LA64-NEXT:    fcmp.cult.s $fcc0, $fa1, $fa0
301; LA64-NEXT:    bceqz $fcc0, .LBB9_2
302; LA64-NEXT:  # %bb.1: # %if.else
303; LA64-NEXT:    ret
304; LA64-NEXT:  .LBB9_2: # %if.then
305; LA64-NEXT:    addi.d $sp, $sp, -16
306; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
307; LA64-NEXT:    bl %plt(abort)
308  %1 = fcmp ole float %a, %b
309  br i1 %1, label %if.then, label %if.else
310if.then:
311  tail call void @abort()
312  unreachable
313if.else:
314  ret void
315}
316
317define void @br_fcmp_one_bcnez_float(float %a, float %b) nounwind {
318; LA32-LABEL: br_fcmp_one_bcnez_float:
319; LA32:       # %bb.0:
320; LA32-NEXT:    fcmp.cne.s $fcc0, $fa0, $fa1
321; LA32-NEXT:    bcnez $fcc0, .LBB10_2
322; LA32-NEXT:  # %bb.1: # %if.else
323; LA32-NEXT:    ret
324; LA32-NEXT:  .LBB10_2: # %if.then
325; LA32-NEXT:    addi.w $sp, $sp, -16
326; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
327; LA32-NEXT:    bl %plt(abort)
328;
329; LA64-LABEL: br_fcmp_one_bcnez_float:
330; LA64:       # %bb.0:
331; LA64-NEXT:    fcmp.cne.s $fcc0, $fa0, $fa1
332; LA64-NEXT:    bcnez $fcc0, .LBB10_2
333; LA64-NEXT:  # %bb.1: # %if.else
334; LA64-NEXT:    ret
335; LA64-NEXT:  .LBB10_2: # %if.then
336; LA64-NEXT:    addi.d $sp, $sp, -16
337; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
338; LA64-NEXT:    bl %plt(abort)
339  %1 = fcmp one float %a, %b
340  br i1 %1, label %if.then, label %if.else
341if.else:
342  ret void
343if.then:
344  tail call void @abort()
345  unreachable
346}
347
348define void @br_fcmp_one_bceqz_float(float %a, float %b) nounwind {
349; LA32-LABEL: br_fcmp_one_bceqz_float:
350; LA32:       # %bb.0:
351; LA32-NEXT:    fcmp.cueq.s $fcc0, $fa0, $fa1
352; LA32-NEXT:    bceqz $fcc0, .LBB11_2
353; LA32-NEXT:  # %bb.1: # %if.else
354; LA32-NEXT:    ret
355; LA32-NEXT:  .LBB11_2: # %if.then
356; LA32-NEXT:    addi.w $sp, $sp, -16
357; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
358; LA32-NEXT:    bl %plt(abort)
359;
360; LA64-LABEL: br_fcmp_one_bceqz_float:
361; LA64:       # %bb.0:
362; LA64-NEXT:    fcmp.cueq.s $fcc0, $fa0, $fa1
363; LA64-NEXT:    bceqz $fcc0, .LBB11_2
364; LA64-NEXT:  # %bb.1: # %if.else
365; LA64-NEXT:    ret
366; LA64-NEXT:  .LBB11_2: # %if.then
367; LA64-NEXT:    addi.d $sp, $sp, -16
368; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
369; LA64-NEXT:    bl %plt(abort)
370  %1 = fcmp one float %a, %b
371  br i1 %1, label %if.then, label %if.else
372if.then:
373  tail call void @abort()
374  unreachable
375if.else:
376  ret void
377}
378
379define void @br_fcmp_ord_bcnez_float(float %a, float %b) nounwind {
380; LA32-LABEL: br_fcmp_ord_bcnez_float:
381; LA32:       # %bb.0:
382; LA32-NEXT:    fcmp.cor.s $fcc0, $fa0, $fa1
383; LA32-NEXT:    bcnez $fcc0, .LBB12_2
384; LA32-NEXT:  # %bb.1: # %if.else
385; LA32-NEXT:    ret
386; LA32-NEXT:  .LBB12_2: # %if.then
387; LA32-NEXT:    addi.w $sp, $sp, -16
388; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
389; LA32-NEXT:    bl %plt(abort)
390;
391; LA64-LABEL: br_fcmp_ord_bcnez_float:
392; LA64:       # %bb.0:
393; LA64-NEXT:    fcmp.cor.s $fcc0, $fa0, $fa1
394; LA64-NEXT:    bcnez $fcc0, .LBB12_2
395; LA64-NEXT:  # %bb.1: # %if.else
396; LA64-NEXT:    ret
397; LA64-NEXT:  .LBB12_2: # %if.then
398; LA64-NEXT:    addi.d $sp, $sp, -16
399; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
400; LA64-NEXT:    bl %plt(abort)
401  %1 = fcmp ord float %a, %b
402  br i1 %1, label %if.then, label %if.else
403if.else:
404  ret void
405if.then:
406  tail call void @abort()
407  unreachable
408}
409
410define void @br_fcmp_ord_bceqz_float(float %a, float %b) nounwind {
411; LA32-LABEL: br_fcmp_ord_bceqz_float:
412; LA32:       # %bb.0:
413; LA32-NEXT:    fcmp.cun.s $fcc0, $fa0, $fa1
414; LA32-NEXT:    bceqz $fcc0, .LBB13_2
415; LA32-NEXT:  # %bb.1: # %if.else
416; LA32-NEXT:    ret
417; LA32-NEXT:  .LBB13_2: # %if.then
418; LA32-NEXT:    addi.w $sp, $sp, -16
419; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
420; LA32-NEXT:    bl %plt(abort)
421;
422; LA64-LABEL: br_fcmp_ord_bceqz_float:
423; LA64:       # %bb.0:
424; LA64-NEXT:    fcmp.cun.s $fcc0, $fa0, $fa1
425; LA64-NEXT:    bceqz $fcc0, .LBB13_2
426; LA64-NEXT:  # %bb.1: # %if.else
427; LA64-NEXT:    ret
428; LA64-NEXT:  .LBB13_2: # %if.then
429; LA64-NEXT:    addi.d $sp, $sp, -16
430; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
431; LA64-NEXT:    bl %plt(abort)
432  %1 = fcmp ord float %a, %b
433  br i1 %1, label %if.then, label %if.else
434if.then:
435  tail call void @abort()
436  unreachable
437if.else:
438  ret void
439}
440
441define void @br_fcmp_ueq_bcnez_float(float %a, float %b) nounwind {
442; LA32-LABEL: br_fcmp_ueq_bcnez_float:
443; LA32:       # %bb.0:
444; LA32-NEXT:    fcmp.cueq.s $fcc0, $fa0, $fa1
445; LA32-NEXT:    bcnez $fcc0, .LBB14_2
446; LA32-NEXT:  # %bb.1: # %if.else
447; LA32-NEXT:    ret
448; LA32-NEXT:  .LBB14_2: # %if.then
449; LA32-NEXT:    addi.w $sp, $sp, -16
450; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
451; LA32-NEXT:    bl %plt(abort)
452;
453; LA64-LABEL: br_fcmp_ueq_bcnez_float:
454; LA64:       # %bb.0:
455; LA64-NEXT:    fcmp.cueq.s $fcc0, $fa0, $fa1
456; LA64-NEXT:    bcnez $fcc0, .LBB14_2
457; LA64-NEXT:  # %bb.1: # %if.else
458; LA64-NEXT:    ret
459; LA64-NEXT:  .LBB14_2: # %if.then
460; LA64-NEXT:    addi.d $sp, $sp, -16
461; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
462; LA64-NEXT:    bl %plt(abort)
463  %1 = fcmp ueq float %a, %b
464  br i1 %1, label %if.then, label %if.else
465if.else:
466  ret void
467if.then:
468  tail call void @abort()
469  unreachable
470}
471
472define void @br_fcmp_ueq_bceqz_float(float %a, float %b) nounwind {
473; LA32-LABEL: br_fcmp_ueq_bceqz_float:
474; LA32:       # %bb.0:
475; LA32-NEXT:    fcmp.cne.s $fcc0, $fa0, $fa1
476; LA32-NEXT:    bceqz $fcc0, .LBB15_2
477; LA32-NEXT:  # %bb.1: # %if.else
478; LA32-NEXT:    ret
479; LA32-NEXT:  .LBB15_2: # %if.then
480; LA32-NEXT:    addi.w $sp, $sp, -16
481; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
482; LA32-NEXT:    bl %plt(abort)
483;
484; LA64-LABEL: br_fcmp_ueq_bceqz_float:
485; LA64:       # %bb.0:
486; LA64-NEXT:    fcmp.cne.s $fcc0, $fa0, $fa1
487; LA64-NEXT:    bceqz $fcc0, .LBB15_2
488; LA64-NEXT:  # %bb.1: # %if.else
489; LA64-NEXT:    ret
490; LA64-NEXT:  .LBB15_2: # %if.then
491; LA64-NEXT:    addi.d $sp, $sp, -16
492; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
493; LA64-NEXT:    bl %plt(abort)
494  %1 = fcmp ueq float %a, %b
495  br i1 %1, label %if.then, label %if.else
496if.then:
497  tail call void @abort()
498  unreachable
499if.else:
500  ret void
501}
502
503define void @br_fcmp_ugt_bcnez_float(float %a, float %b) nounwind {
504; LA32-LABEL: br_fcmp_ugt_bcnez_float:
505; LA32:       # %bb.0:
506; LA32-NEXT:    fcmp.cult.s $fcc0, $fa1, $fa0
507; LA32-NEXT:    bcnez $fcc0, .LBB16_2
508; LA32-NEXT:  # %bb.1: # %if.else
509; LA32-NEXT:    ret
510; LA32-NEXT:  .LBB16_2: # %if.then
511; LA32-NEXT:    addi.w $sp, $sp, -16
512; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
513; LA32-NEXT:    bl %plt(abort)
514;
515; LA64-LABEL: br_fcmp_ugt_bcnez_float:
516; LA64:       # %bb.0:
517; LA64-NEXT:    fcmp.cult.s $fcc0, $fa1, $fa0
518; LA64-NEXT:    bcnez $fcc0, .LBB16_2
519; LA64-NEXT:  # %bb.1: # %if.else
520; LA64-NEXT:    ret
521; LA64-NEXT:  .LBB16_2: # %if.then
522; LA64-NEXT:    addi.d $sp, $sp, -16
523; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
524; LA64-NEXT:    bl %plt(abort)
525  %1 = fcmp ugt float %a, %b
526  br i1 %1, label %if.then, label %if.else
527if.else:
528  ret void
529if.then:
530  tail call void @abort()
531  unreachable
532}
533
534define void @br_fcmp_ugt_bceqz_float(float %a, float %b) nounwind {
535; LA32-LABEL: br_fcmp_ugt_bceqz_float:
536; LA32:       # %bb.0:
537; LA32-NEXT:    fcmp.cle.s $fcc0, $fa0, $fa1
538; LA32-NEXT:    bceqz $fcc0, .LBB17_2
539; LA32-NEXT:  # %bb.1: # %if.else
540; LA32-NEXT:    ret
541; LA32-NEXT:  .LBB17_2: # %if.then
542; LA32-NEXT:    addi.w $sp, $sp, -16
543; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
544; LA32-NEXT:    bl %plt(abort)
545;
546; LA64-LABEL: br_fcmp_ugt_bceqz_float:
547; LA64:       # %bb.0:
548; LA64-NEXT:    fcmp.cle.s $fcc0, $fa0, $fa1
549; LA64-NEXT:    bceqz $fcc0, .LBB17_2
550; LA64-NEXT:  # %bb.1: # %if.else
551; LA64-NEXT:    ret
552; LA64-NEXT:  .LBB17_2: # %if.then
553; LA64-NEXT:    addi.d $sp, $sp, -16
554; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
555; LA64-NEXT:    bl %plt(abort)
556  %1 = fcmp ugt float %a, %b
557  br i1 %1, label %if.then, label %if.else
558if.then:
559  tail call void @abort()
560  unreachable
561if.else:
562  ret void
563}
564
565define void @br_fcmp_uge_bcnez_float(float %a, float %b) nounwind {
566; LA32-LABEL: br_fcmp_uge_bcnez_float:
567; LA32:       # %bb.0:
568; LA32-NEXT:    fcmp.cule.s $fcc0, $fa1, $fa0
569; LA32-NEXT:    bcnez $fcc0, .LBB18_2
570; LA32-NEXT:  # %bb.1: # %if.else
571; LA32-NEXT:    ret
572; LA32-NEXT:  .LBB18_2: # %if.then
573; LA32-NEXT:    addi.w $sp, $sp, -16
574; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
575; LA32-NEXT:    bl %plt(abort)
576;
577; LA64-LABEL: br_fcmp_uge_bcnez_float:
578; LA64:       # %bb.0:
579; LA64-NEXT:    fcmp.cule.s $fcc0, $fa1, $fa0
580; LA64-NEXT:    bcnez $fcc0, .LBB18_2
581; LA64-NEXT:  # %bb.1: # %if.else
582; LA64-NEXT:    ret
583; LA64-NEXT:  .LBB18_2: # %if.then
584; LA64-NEXT:    addi.d $sp, $sp, -16
585; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
586; LA64-NEXT:    bl %plt(abort)
587  %1 = fcmp uge float %a, %b
588  br i1 %1, label %if.then, label %if.else
589if.else:
590  ret void
591if.then:
592  tail call void @abort()
593  unreachable
594}
595
596define void @br_fcmp_uge_bceqz_float(float %a, float %b) nounwind {
597; LA32-LABEL: br_fcmp_uge_bceqz_float:
598; LA32:       # %bb.0:
599; LA32-NEXT:    fcmp.clt.s $fcc0, $fa0, $fa1
600; LA32-NEXT:    bceqz $fcc0, .LBB19_2
601; LA32-NEXT:  # %bb.1: # %if.else
602; LA32-NEXT:    ret
603; LA32-NEXT:  .LBB19_2: # %if.then
604; LA32-NEXT:    addi.w $sp, $sp, -16
605; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
606; LA32-NEXT:    bl %plt(abort)
607;
608; LA64-LABEL: br_fcmp_uge_bceqz_float:
609; LA64:       # %bb.0:
610; LA64-NEXT:    fcmp.clt.s $fcc0, $fa0, $fa1
611; LA64-NEXT:    bceqz $fcc0, .LBB19_2
612; LA64-NEXT:  # %bb.1: # %if.else
613; LA64-NEXT:    ret
614; LA64-NEXT:  .LBB19_2: # %if.then
615; LA64-NEXT:    addi.d $sp, $sp, -16
616; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
617; LA64-NEXT:    bl %plt(abort)
618  %1 = fcmp uge float %a, %b
619  br i1 %1, label %if.then, label %if.else
620if.then:
621  tail call void @abort()
622  unreachable
623if.else:
624  ret void
625}
626
627define void @br_fcmp_ult_bcnez_float(float %a, float %b) nounwind {
628; LA32-LABEL: br_fcmp_ult_bcnez_float:
629; LA32:       # %bb.0:
630; LA32-NEXT:    fcmp.cult.s $fcc0, $fa0, $fa1
631; LA32-NEXT:    bcnez $fcc0, .LBB20_2
632; LA32-NEXT:  # %bb.1: # %if.else
633; LA32-NEXT:    ret
634; LA32-NEXT:  .LBB20_2: # %if.then
635; LA32-NEXT:    addi.w $sp, $sp, -16
636; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
637; LA32-NEXT:    bl %plt(abort)
638;
639; LA64-LABEL: br_fcmp_ult_bcnez_float:
640; LA64:       # %bb.0:
641; LA64-NEXT:    fcmp.cult.s $fcc0, $fa0, $fa1
642; LA64-NEXT:    bcnez $fcc0, .LBB20_2
643; LA64-NEXT:  # %bb.1: # %if.else
644; LA64-NEXT:    ret
645; LA64-NEXT:  .LBB20_2: # %if.then
646; LA64-NEXT:    addi.d $sp, $sp, -16
647; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
648; LA64-NEXT:    bl %plt(abort)
649  %1 = fcmp ult float %a, %b
650  br i1 %1, label %if.then, label %if.else
651if.else:
652  ret void
653if.then:
654  tail call void @abort()
655  unreachable
656}
657
658define void @br_fcmp_ult_bceqz_float(float %a, float %b) nounwind {
659; LA32-LABEL: br_fcmp_ult_bceqz_float:
660; LA32:       # %bb.0:
661; LA32-NEXT:    fcmp.cle.s $fcc0, $fa1, $fa0
662; LA32-NEXT:    bceqz $fcc0, .LBB21_2
663; LA32-NEXT:  # %bb.1: # %if.else
664; LA32-NEXT:    ret
665; LA32-NEXT:  .LBB21_2: # %if.then
666; LA32-NEXT:    addi.w $sp, $sp, -16
667; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
668; LA32-NEXT:    bl %plt(abort)
669;
670; LA64-LABEL: br_fcmp_ult_bceqz_float:
671; LA64:       # %bb.0:
672; LA64-NEXT:    fcmp.cle.s $fcc0, $fa1, $fa0
673; LA64-NEXT:    bceqz $fcc0, .LBB21_2
674; LA64-NEXT:  # %bb.1: # %if.else
675; LA64-NEXT:    ret
676; LA64-NEXT:  .LBB21_2: # %if.then
677; LA64-NEXT:    addi.d $sp, $sp, -16
678; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
679; LA64-NEXT:    bl %plt(abort)
680  %1 = fcmp ult float %a, %b
681  br i1 %1, label %if.then, label %if.else
682if.then:
683  tail call void @abort()
684  unreachable
685if.else:
686  ret void
687}
688
689define void @br_fcmp_ule_bcnez_float(float %a, float %b) nounwind {
690; LA32-LABEL: br_fcmp_ule_bcnez_float:
691; LA32:       # %bb.0:
692; LA32-NEXT:    fcmp.cule.s $fcc0, $fa0, $fa1
693; LA32-NEXT:    bcnez $fcc0, .LBB22_2
694; LA32-NEXT:  # %bb.1: # %if.else
695; LA32-NEXT:    ret
696; LA32-NEXT:  .LBB22_2: # %if.then
697; LA32-NEXT:    addi.w $sp, $sp, -16
698; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
699; LA32-NEXT:    bl %plt(abort)
700;
701; LA64-LABEL: br_fcmp_ule_bcnez_float:
702; LA64:       # %bb.0:
703; LA64-NEXT:    fcmp.cule.s $fcc0, $fa0, $fa1
704; LA64-NEXT:    bcnez $fcc0, .LBB22_2
705; LA64-NEXT:  # %bb.1: # %if.else
706; LA64-NEXT:    ret
707; LA64-NEXT:  .LBB22_2: # %if.then
708; LA64-NEXT:    addi.d $sp, $sp, -16
709; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
710; LA64-NEXT:    bl %plt(abort)
711  %1 = fcmp ule float %a, %b
712  br i1 %1, label %if.then, label %if.else
713if.else:
714  ret void
715if.then:
716  tail call void @abort()
717  unreachable
718}
719
720define void @br_fcmp_ule_bceqz_float(float %a, float %b) nounwind {
721; LA32-LABEL: br_fcmp_ule_bceqz_float:
722; LA32:       # %bb.0:
723; LA32-NEXT:    fcmp.clt.s $fcc0, $fa1, $fa0
724; LA32-NEXT:    bceqz $fcc0, .LBB23_2
725; LA32-NEXT:  # %bb.1: # %if.else
726; LA32-NEXT:    ret
727; LA32-NEXT:  .LBB23_2: # %if.then
728; LA32-NEXT:    addi.w $sp, $sp, -16
729; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
730; LA32-NEXT:    bl %plt(abort)
731;
732; LA64-LABEL: br_fcmp_ule_bceqz_float:
733; LA64:       # %bb.0:
734; LA64-NEXT:    fcmp.clt.s $fcc0, $fa1, $fa0
735; LA64-NEXT:    bceqz $fcc0, .LBB23_2
736; LA64-NEXT:  # %bb.1: # %if.else
737; LA64-NEXT:    ret
738; LA64-NEXT:  .LBB23_2: # %if.then
739; LA64-NEXT:    addi.d $sp, $sp, -16
740; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
741; LA64-NEXT:    bl %plt(abort)
742  %1 = fcmp ule float %a, %b
743  br i1 %1, label %if.then, label %if.else
744if.then:
745  tail call void @abort()
746  unreachable
747if.else:
748  ret void
749}
750
751define void @br_fcmp_une_bcnez_float(float %a, float %b) nounwind {
752; LA32-LABEL: br_fcmp_une_bcnez_float:
753; LA32:       # %bb.0:
754; LA32-NEXT:    fcmp.cune.s $fcc0, $fa0, $fa1
755; LA32-NEXT:    bcnez $fcc0, .LBB24_2
756; LA32-NEXT:  # %bb.1: # %if.else
757; LA32-NEXT:    ret
758; LA32-NEXT:  .LBB24_2: # %if.then
759; LA32-NEXT:    addi.w $sp, $sp, -16
760; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
761; LA32-NEXT:    bl %plt(abort)
762;
763; LA64-LABEL: br_fcmp_une_bcnez_float:
764; LA64:       # %bb.0:
765; LA64-NEXT:    fcmp.cune.s $fcc0, $fa0, $fa1
766; LA64-NEXT:    bcnez $fcc0, .LBB24_2
767; LA64-NEXT:  # %bb.1: # %if.else
768; LA64-NEXT:    ret
769; LA64-NEXT:  .LBB24_2: # %if.then
770; LA64-NEXT:    addi.d $sp, $sp, -16
771; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
772; LA64-NEXT:    bl %plt(abort)
773  %1 = fcmp une float %a, %b
774  br i1 %1, label %if.then, label %if.else
775if.else:
776  ret void
777if.then:
778  tail call void @abort()
779  unreachable
780}
781
782define void @br_fcmp_une_bceqz_float(float %a, float %b) nounwind {
783; LA32-LABEL: br_fcmp_une_bceqz_float:
784; LA32:       # %bb.0:
785; LA32-NEXT:    fcmp.ceq.s $fcc0, $fa0, $fa1
786; LA32-NEXT:    bceqz $fcc0, .LBB25_2
787; LA32-NEXT:  # %bb.1: # %if.else
788; LA32-NEXT:    ret
789; LA32-NEXT:  .LBB25_2: # %if.then
790; LA32-NEXT:    addi.w $sp, $sp, -16
791; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
792; LA32-NEXT:    bl %plt(abort)
793;
794; LA64-LABEL: br_fcmp_une_bceqz_float:
795; LA64:       # %bb.0:
796; LA64-NEXT:    fcmp.ceq.s $fcc0, $fa0, $fa1
797; LA64-NEXT:    bceqz $fcc0, .LBB25_2
798; LA64-NEXT:  # %bb.1: # %if.else
799; LA64-NEXT:    ret
800; LA64-NEXT:  .LBB25_2: # %if.then
801; LA64-NEXT:    addi.d $sp, $sp, -16
802; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
803; LA64-NEXT:    bl %plt(abort)
804  %1 = fcmp une float %a, %b
805  br i1 %1, label %if.then, label %if.else
806if.then:
807  tail call void @abort()
808  unreachable
809if.else:
810  ret void
811}
812
813define void @br_fcmp_uno_bcnez_float(float %a, float %b) nounwind {
814; LA32-LABEL: br_fcmp_uno_bcnez_float:
815; LA32:       # %bb.0:
816; LA32-NEXT:    fcmp.cun.s $fcc0, $fa0, $fa1
817; LA32-NEXT:    bcnez $fcc0, .LBB26_2
818; LA32-NEXT:  # %bb.1: # %if.else
819; LA32-NEXT:    ret
820; LA32-NEXT:  .LBB26_2: # %if.then
821; LA32-NEXT:    addi.w $sp, $sp, -16
822; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
823; LA32-NEXT:    bl %plt(abort)
824;
825; LA64-LABEL: br_fcmp_uno_bcnez_float:
826; LA64:       # %bb.0:
827; LA64-NEXT:    fcmp.cun.s $fcc0, $fa0, $fa1
828; LA64-NEXT:    bcnez $fcc0, .LBB26_2
829; LA64-NEXT:  # %bb.1: # %if.else
830; LA64-NEXT:    ret
831; LA64-NEXT:  .LBB26_2: # %if.then
832; LA64-NEXT:    addi.d $sp, $sp, -16
833; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
834; LA64-NEXT:    bl %plt(abort)
835  %1 = fcmp uno float %a, %b
836  br i1 %1, label %if.then, label %if.else
837if.else:
838  ret void
839if.then:
840  tail call void @abort()
841  unreachable
842}
843
844define void @br_fcmp_uno_bceqz_float(float %a, float %b) nounwind {
845; LA32-LABEL: br_fcmp_uno_bceqz_float:
846; LA32:       # %bb.0:
847; LA32-NEXT:    fcmp.cor.s $fcc0, $fa0, $fa1
848; LA32-NEXT:    bceqz $fcc0, .LBB27_2
849; LA32-NEXT:  # %bb.1: # %if.else
850; LA32-NEXT:    ret
851; LA32-NEXT:  .LBB27_2: # %if.then
852; LA32-NEXT:    addi.w $sp, $sp, -16
853; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
854; LA32-NEXT:    bl %plt(abort)
855;
856; LA64-LABEL: br_fcmp_uno_bceqz_float:
857; LA64:       # %bb.0:
858; LA64-NEXT:    fcmp.cor.s $fcc0, $fa0, $fa1
859; LA64-NEXT:    bceqz $fcc0, .LBB27_2
860; LA64-NEXT:  # %bb.1: # %if.else
861; LA64-NEXT:    ret
862; LA64-NEXT:  .LBB27_2: # %if.then
863; LA64-NEXT:    addi.d $sp, $sp, -16
864; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
865; LA64-NEXT:    bl %plt(abort)
866  %1 = fcmp uno float %a, %b
867  br i1 %1, label %if.then, label %if.else
868if.then:
869  tail call void @abort()
870  unreachable
871if.else:
872  ret void
873}
874