Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / LoongArch / double-br-fcmp.ll
blob50cbb11be2ef63dbdd02f5b28252a88756f9d251
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 void @abort()
7 define void @br_fcmp_oeq_bcnez(double %a, double %b) nounwind {
8 ; LA32-LABEL: br_fcmp_oeq_bcnez:
9 ; LA32:       # %bb.0:
10 ; LA32-NEXT:    fcmp.ceq.d $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)
19 ; LA64-LABEL: br_fcmp_oeq_bcnez:
20 ; LA64:       # %bb.0:
21 ; LA64-NEXT:    fcmp.ceq.d $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 double %a, %b
30   br i1 %1, label %if.then, label %if.else
31 if.else:
32   ret void
33 if.then:
34   tail call void @abort()
35   unreachable
38 define void @br_fcmp_oeq_bceqz(double %a, double %b) nounwind {
39 ; LA32-LABEL: br_fcmp_oeq_bceqz:
40 ; LA32:       # %bb.0:
41 ; LA32-NEXT:    fcmp.cune.d $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)
50 ; LA64-LABEL: br_fcmp_oeq_bceqz:
51 ; LA64:       # %bb.0:
52 ; LA64-NEXT:    fcmp.cune.d $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 double %a, %b
61   br i1 %1, label %if.then, label %if.else
62 if.then:
63   tail call void @abort()
64   unreachable
65 if.else:
66   ret void
69 define void @br_fcmp_ogt_bcnez(double %a, double %b) nounwind {
70 ; LA32-LABEL: br_fcmp_ogt_bcnez:
71 ; LA32:       # %bb.0:
72 ; LA32-NEXT:    fcmp.clt.d $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)
81 ; LA64-LABEL: br_fcmp_ogt_bcnez:
82 ; LA64:       # %bb.0:
83 ; LA64-NEXT:    fcmp.clt.d $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 double %a, %b
92   br i1 %1, label %if.then, label %if.else
93 if.else:
94   ret void
95 if.then:
96   tail call void @abort()
97   unreachable
100 define void @br_fcmp_ogt_bceqz(double %a, double %b) nounwind {
101 ; LA32-LABEL: br_fcmp_ogt_bceqz:
102 ; LA32:       # %bb.0:
103 ; LA32-NEXT:    fcmp.cule.d $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)
112 ; LA64-LABEL: br_fcmp_ogt_bceqz:
113 ; LA64:       # %bb.0:
114 ; LA64-NEXT:    fcmp.cule.d $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 double %a, %b
123   br i1 %1, label %if.then, label %if.else
124 if.then:
125   tail call void @abort()
126   unreachable
127 if.else:
128   ret void
131 define void @br_fcmp_oge_bcnez(double %a, double %b) nounwind {
132 ; LA32-LABEL: br_fcmp_oge_bcnez:
133 ; LA32:       # %bb.0:
134 ; LA32-NEXT:    fcmp.cle.d $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)
143 ; LA64-LABEL: br_fcmp_oge_bcnez:
144 ; LA64:       # %bb.0:
145 ; LA64-NEXT:    fcmp.cle.d $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 double %a, %b
154   br i1 %1, label %if.then, label %if.else
155 if.else:
156   ret void
157 if.then:
158   tail call void @abort()
159   unreachable
162 define void @br_fcmp_oge_bceqz(double %a, double %b) nounwind {
163 ; LA32-LABEL: br_fcmp_oge_bceqz:
164 ; LA32:       # %bb.0:
165 ; LA32-NEXT:    fcmp.cult.d $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)
174 ; LA64-LABEL: br_fcmp_oge_bceqz:
175 ; LA64:       # %bb.0:
176 ; LA64-NEXT:    fcmp.cult.d $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 double %a, %b
185   br i1 %1, label %if.then, label %if.else
186 if.then:
187   tail call void @abort()
188   unreachable
189 if.else:
190   ret void
193 define void @br_fcmp_olt_bcnez(double %a, double %b) nounwind {
194 ; LA32-LABEL: br_fcmp_olt_bcnez:
195 ; LA32:       # %bb.0:
196 ; LA32-NEXT:    fcmp.clt.d $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)
205 ; LA64-LABEL: br_fcmp_olt_bcnez:
206 ; LA64:       # %bb.0:
207 ; LA64-NEXT:    fcmp.clt.d $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 double %a, %b
216   br i1 %1, label %if.then, label %if.else
217 if.else:
218   ret void
219 if.then:
220   tail call void @abort()
221   unreachable
224 define void @br_fcmp_olt_bceqz(double %a, double %b) nounwind {
225 ; LA32-LABEL: br_fcmp_olt_bceqz:
226 ; LA32:       # %bb.0:
227 ; LA32-NEXT:    fcmp.cule.d $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)
236 ; LA64-LABEL: br_fcmp_olt_bceqz:
237 ; LA64:       # %bb.0:
238 ; LA64-NEXT:    fcmp.cule.d $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 double %a, %b
247   br i1 %1, label %if.then, label %if.else
248 if.then:
249   tail call void @abort()
250   unreachable
251 if.else:
252   ret void
255 define void @br_fcmp_ole_bcnez(double %a, double %b) nounwind {
256 ; LA32-LABEL: br_fcmp_ole_bcnez:
257 ; LA32:       # %bb.0:
258 ; LA32-NEXT:    fcmp.cle.d $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)
267 ; LA64-LABEL: br_fcmp_ole_bcnez:
268 ; LA64:       # %bb.0:
269 ; LA64-NEXT:    fcmp.cle.d $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 double %a, %b
278   br i1 %1, label %if.then, label %if.else
279 if.else:
280   ret void
281 if.then:
282   tail call void @abort()
283   unreachable
286 define void @br_fcmp_ole_bceqz(double %a, double %b) nounwind {
287 ; LA32-LABEL: br_fcmp_ole_bceqz:
288 ; LA32:       # %bb.0:
289 ; LA32-NEXT:    fcmp.cult.d $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)
298 ; LA64-LABEL: br_fcmp_ole_bceqz:
299 ; LA64:       # %bb.0:
300 ; LA64-NEXT:    fcmp.cult.d $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 double %a, %b
309   br i1 %1, label %if.then, label %if.else
310 if.then:
311   tail call void @abort()
312   unreachable
313 if.else:
314   ret void
317 define void @br_fcmp_one_bcnez(double %a, double %b) nounwind {
318 ; LA32-LABEL: br_fcmp_one_bcnez:
319 ; LA32:       # %bb.0:
320 ; LA32-NEXT:    fcmp.cne.d $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)
329 ; LA64-LABEL: br_fcmp_one_bcnez:
330 ; LA64:       # %bb.0:
331 ; LA64-NEXT:    fcmp.cne.d $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 double %a, %b
340   br i1 %1, label %if.then, label %if.else
341 if.else:
342   ret void
343 if.then:
344   tail call void @abort()
345   unreachable
348 define void @br_fcmp_one_bceqz(double %a, double %b) nounwind {
349 ; LA32-LABEL: br_fcmp_one_bceqz:
350 ; LA32:       # %bb.0:
351 ; LA32-NEXT:    fcmp.cueq.d $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)
360 ; LA64-LABEL: br_fcmp_one_bceqz:
361 ; LA64:       # %bb.0:
362 ; LA64-NEXT:    fcmp.cueq.d $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 double %a, %b
371   br i1 %1, label %if.then, label %if.else
372 if.then:
373   tail call void @abort()
374   unreachable
375 if.else:
376   ret void
379 define void @br_fcmp_ord_bcnez(double %a, double %b) nounwind {
380 ; LA32-LABEL: br_fcmp_ord_bcnez:
381 ; LA32:       # %bb.0:
382 ; LA32-NEXT:    fcmp.cor.d $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)
391 ; LA64-LABEL: br_fcmp_ord_bcnez:
392 ; LA64:       # %bb.0:
393 ; LA64-NEXT:    fcmp.cor.d $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 double %a, %b
402   br i1 %1, label %if.then, label %if.else
403 if.else:
404   ret void
405 if.then:
406   tail call void @abort()
407   unreachable
410 define void @br_fcmp_ord_bceqz(double %a, double %b) nounwind {
411 ; LA32-LABEL: br_fcmp_ord_bceqz:
412 ; LA32:       # %bb.0:
413 ; LA32-NEXT:    fcmp.cun.d $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)
422 ; LA64-LABEL: br_fcmp_ord_bceqz:
423 ; LA64:       # %bb.0:
424 ; LA64-NEXT:    fcmp.cun.d $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 double %a, %b
433   br i1 %1, label %if.then, label %if.else
434 if.then:
435   tail call void @abort()
436   unreachable
437 if.else:
438   ret void
441 define void @br_fcmp_ueq_bcnez(double %a, double %b) nounwind {
442 ; LA32-LABEL: br_fcmp_ueq_bcnez:
443 ; LA32:       # %bb.0:
444 ; LA32-NEXT:    fcmp.cueq.d $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)
453 ; LA64-LABEL: br_fcmp_ueq_bcnez:
454 ; LA64:       # %bb.0:
455 ; LA64-NEXT:    fcmp.cueq.d $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 double %a, %b
464   br i1 %1, label %if.then, label %if.else
465 if.else:
466   ret void
467 if.then:
468   tail call void @abort()
469   unreachable
472 define void @br_fcmp_ueq_bceqz(double %a, double %b) nounwind {
473 ; LA32-LABEL: br_fcmp_ueq_bceqz:
474 ; LA32:       # %bb.0:
475 ; LA32-NEXT:    fcmp.cne.d $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)
484 ; LA64-LABEL: br_fcmp_ueq_bceqz:
485 ; LA64:       # %bb.0:
486 ; LA64-NEXT:    fcmp.cne.d $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 double %a, %b
495   br i1 %1, label %if.then, label %if.else
496 if.then:
497   tail call void @abort()
498   unreachable
499 if.else:
500   ret void
503 define void @br_fcmp_ugt_bcnez(double %a, double %b) nounwind {
504 ; LA32-LABEL: br_fcmp_ugt_bcnez:
505 ; LA32:       # %bb.0:
506 ; LA32-NEXT:    fcmp.cult.d $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)
515 ; LA64-LABEL: br_fcmp_ugt_bcnez:
516 ; LA64:       # %bb.0:
517 ; LA64-NEXT:    fcmp.cult.d $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 double %a, %b
526   br i1 %1, label %if.then, label %if.else
527 if.else:
528   ret void
529 if.then:
530   tail call void @abort()
531   unreachable
534 define void @br_fcmp_ugt_bceqz(double %a, double %b) nounwind {
535 ; LA32-LABEL: br_fcmp_ugt_bceqz:
536 ; LA32:       # %bb.0:
537 ; LA32-NEXT:    fcmp.cle.d $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)
546 ; LA64-LABEL: br_fcmp_ugt_bceqz:
547 ; LA64:       # %bb.0:
548 ; LA64-NEXT:    fcmp.cle.d $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 double %a, %b
557   br i1 %1, label %if.then, label %if.else
558 if.then:
559   tail call void @abort()
560   unreachable
561 if.else:
562   ret void
565 define void @br_fcmp_uge_bcnez(double %a, double %b) nounwind {
566 ; LA32-LABEL: br_fcmp_uge_bcnez:
567 ; LA32:       # %bb.0:
568 ; LA32-NEXT:    fcmp.cule.d $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)
577 ; LA64-LABEL: br_fcmp_uge_bcnez:
578 ; LA64:       # %bb.0:
579 ; LA64-NEXT:    fcmp.cule.d $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 double %a, %b
588   br i1 %1, label %if.then, label %if.else
589 if.else:
590   ret void
591 if.then:
592   tail call void @abort()
593   unreachable
596 define void @br_fcmp_uge_bceqz(double %a, double %b) nounwind {
597 ; LA32-LABEL: br_fcmp_uge_bceqz:
598 ; LA32:       # %bb.0:
599 ; LA32-NEXT:    fcmp.clt.d $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)
608 ; LA64-LABEL: br_fcmp_uge_bceqz:
609 ; LA64:       # %bb.0:
610 ; LA64-NEXT:    fcmp.clt.d $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 double %a, %b
619   br i1 %1, label %if.then, label %if.else
620 if.then:
621   tail call void @abort()
622   unreachable
623 if.else:
624   ret void
627 define void @br_fcmp_ult_bcnez(double %a, double %b) nounwind {
628 ; LA32-LABEL: br_fcmp_ult_bcnez:
629 ; LA32:       # %bb.0:
630 ; LA32-NEXT:    fcmp.cult.d $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)
639 ; LA64-LABEL: br_fcmp_ult_bcnez:
640 ; LA64:       # %bb.0:
641 ; LA64-NEXT:    fcmp.cult.d $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 double %a, %b
650   br i1 %1, label %if.then, label %if.else
651 if.else:
652   ret void
653 if.then:
654   tail call void @abort()
655   unreachable
658 define void @br_fcmp_ult_bceqz(double %a, double %b) nounwind {
659 ; LA32-LABEL: br_fcmp_ult_bceqz:
660 ; LA32:       # %bb.0:
661 ; LA32-NEXT:    fcmp.cle.d $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)
670 ; LA64-LABEL: br_fcmp_ult_bceqz:
671 ; LA64:       # %bb.0:
672 ; LA64-NEXT:    fcmp.cle.d $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 double %a, %b
681   br i1 %1, label %if.then, label %if.else
682 if.then:
683   tail call void @abort()
684   unreachable
685 if.else:
686   ret void
689 define void @br_fcmp_ule_bcnez(double %a, double %b) nounwind {
690 ; LA32-LABEL: br_fcmp_ule_bcnez:
691 ; LA32:       # %bb.0:
692 ; LA32-NEXT:    fcmp.cule.d $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)
701 ; LA64-LABEL: br_fcmp_ule_bcnez:
702 ; LA64:       # %bb.0:
703 ; LA64-NEXT:    fcmp.cule.d $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 double %a, %b
712   br i1 %1, label %if.then, label %if.else
713 if.else:
714   ret void
715 if.then:
716   tail call void @abort()
717   unreachable
720 define void @br_fcmp_ule_bceqz(double %a, double %b) nounwind {
721 ; LA32-LABEL: br_fcmp_ule_bceqz:
722 ; LA32:       # %bb.0:
723 ; LA32-NEXT:    fcmp.clt.d $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)
732 ; LA64-LABEL: br_fcmp_ule_bceqz:
733 ; LA64:       # %bb.0:
734 ; LA64-NEXT:    fcmp.clt.d $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 double %a, %b
743   br i1 %1, label %if.then, label %if.else
744 if.then:
745   tail call void @abort()
746   unreachable
747 if.else:
748   ret void
751 define void @br_fcmp_une_bcnez(double %a, double %b) nounwind {
752 ; LA32-LABEL: br_fcmp_une_bcnez:
753 ; LA32:       # %bb.0:
754 ; LA32-NEXT:    fcmp.cune.d $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)
763 ; LA64-LABEL: br_fcmp_une_bcnez:
764 ; LA64:       # %bb.0:
765 ; LA64-NEXT:    fcmp.cune.d $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 double %a, %b
774   br i1 %1, label %if.then, label %if.else
775 if.else:
776   ret void
777 if.then:
778   tail call void @abort()
779   unreachable
782 define void @br_fcmp_une_bceqz(double %a, double %b) nounwind {
783 ; LA32-LABEL: br_fcmp_une_bceqz:
784 ; LA32:       # %bb.0:
785 ; LA32-NEXT:    fcmp.ceq.d $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)
794 ; LA64-LABEL: br_fcmp_une_bceqz:
795 ; LA64:       # %bb.0:
796 ; LA64-NEXT:    fcmp.ceq.d $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 double %a, %b
805   br i1 %1, label %if.then, label %if.else
806 if.then:
807   tail call void @abort()
808   unreachable
809 if.else:
810   ret void
813 define void @br_fcmp_uno_bcnez(double %a, double %b) nounwind {
814 ; LA32-LABEL: br_fcmp_uno_bcnez:
815 ; LA32:       # %bb.0:
816 ; LA32-NEXT:    fcmp.cun.d $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)
825 ; LA64-LABEL: br_fcmp_uno_bcnez:
826 ; LA64:       # %bb.0:
827 ; LA64-NEXT:    fcmp.cun.d $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 double %a, %b
836   br i1 %1, label %if.then, label %if.else
837 if.else:
838   ret void
839 if.then:
840   tail call void @abort()
841   unreachable
844 define void @br_fcmp_uno_bceqz(double %a, double %b) nounwind {
845 ; LA32-LABEL: br_fcmp_uno_bceqz:
846 ; LA32:       # %bb.0:
847 ; LA32-NEXT:    fcmp.cor.d $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)
856 ; LA64-LABEL: br_fcmp_uno_bceqz:
857 ; LA64:       # %bb.0:
858 ; LA64-NEXT:    fcmp.cor.d $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 double %a, %b
867   br i1 %1, label %if.then, label %if.else
868 if.then:
869   tail call void @abort()
870   unreachable
871 if.else:
872   ret void