1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -float-abi=hard -mattr=+hard-float -mattr=+2e3 -mattr=+fpuv2_sf -mattr=+fpuv2_df | FileCheck %s --check-prefix=CHECK-DF
3 ; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -float-abi=hard -mattr=+hard-float -mattr=+2e3 -mattr=+fpuv3_sf -mattr=+fpuv3_df | FileCheck %s --check-prefix=CHECK-DF2
6 define i32 @brRR_oeq(double %x, double %y) {
9 ; CHECK-DF-LABEL: brRR_oeq:
10 ; CHECK-DF: # %bb.0: # %entry
11 ; CHECK-DF-NEXT: fcmpned vr1, vr0
12 ; CHECK-DF-NEXT: bt32 .LBB0_2
13 ; CHECK-DF-NEXT: # %bb.1: # %label1
14 ; CHECK-DF-NEXT: movi16 a0, 1
15 ; CHECK-DF-NEXT: rts16
16 ; CHECK-DF-NEXT: .LBB0_2: # %label2
17 ; CHECK-DF-NEXT: movi16 a0, 0
18 ; CHECK-DF-NEXT: rts16
20 ; CHECK-DF2-LABEL: brRR_oeq:
21 ; CHECK-DF2: # %bb.0: # %entry
22 ; CHECK-DF2-NEXT: fcmpne.64 vr1, vr0
23 ; CHECK-DF2-NEXT: bt32 .LBB0_2
24 ; CHECK-DF2-NEXT: # %bb.1: # %label1
25 ; CHECK-DF2-NEXT: movi16 a0, 1
26 ; CHECK-DF2-NEXT: rts16
27 ; CHECK-DF2-NEXT: .LBB0_2: # %label2
28 ; CHECK-DF2-NEXT: movi16 a0, 0
29 ; CHECK-DF2-NEXT: rts16
31 %fcmp = fcmp oeq double %y, %x
32 br i1 %fcmp, label %label1, label %label2
39 define i32 @brRI_oeq(double %x) {
42 ; CHECK-DF-LABEL: brRI_oeq:
43 ; CHECK-DF: # %bb.0: # %entry
44 ; CHECK-DF-NEXT: grs32 a0, .LCPI1_0
45 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
46 ; CHECK-DF-NEXT: fcmpned vr0, vr1
47 ; CHECK-DF-NEXT: bt32 .LBB1_2
48 ; CHECK-DF-NEXT: # %bb.1: # %label1
49 ; CHECK-DF-NEXT: movi16 a0, 1
50 ; CHECK-DF-NEXT: rts16
51 ; CHECK-DF-NEXT: .LBB1_2: # %label2
52 ; CHECK-DF-NEXT: movi16 a0, 0
53 ; CHECK-DF-NEXT: rts16
54 ; CHECK-DF-NEXT: .p2align 1
55 ; CHECK-DF-NEXT: # %bb.3:
56 ; CHECK-DF-NEXT: .p2align 2, 0x0
57 ; CHECK-DF-NEXT: .LCPI1_0:
58 ; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10
60 ; CHECK-DF2-LABEL: brRI_oeq:
61 ; CHECK-DF2: # %bb.0: # %entry
62 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI1_0]
63 ; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1
64 ; CHECK-DF2-NEXT: bt32 .LBB1_2
65 ; CHECK-DF2-NEXT: # %bb.1: # %label1
66 ; CHECK-DF2-NEXT: movi16 a0, 1
67 ; CHECK-DF2-NEXT: rts16
68 ; CHECK-DF2-NEXT: .LBB1_2: # %label2
69 ; CHECK-DF2-NEXT: movi16 a0, 0
70 ; CHECK-DF2-NEXT: rts16
71 ; CHECK-DF2-NEXT: .p2align 1
72 ; CHECK-DF2-NEXT: # %bb.3:
73 ; CHECK-DF2-NEXT: .p2align 2, 0x0
74 ; CHECK-DF2-NEXT: .LCPI1_0:
75 ; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10
77 %fcmp = fcmp oeq double %x, 10.0
78 br i1 %fcmp, label %label1, label %label2
85 define i32 @brR0_oeq(double %x) {
88 ; CHECK-DF-LABEL: brR0_oeq:
89 ; CHECK-DF: # %bb.0: # %entry
90 ; CHECK-DF-NEXT: grs32 a0, .LCPI2_0
91 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
92 ; CHECK-DF-NEXT: fcmpned vr0, vr1
93 ; CHECK-DF-NEXT: bt32 .LBB2_2
94 ; CHECK-DF-NEXT: # %bb.1: # %label1
95 ; CHECK-DF-NEXT: movi16 a0, 1
96 ; CHECK-DF-NEXT: rts16
97 ; CHECK-DF-NEXT: .LBB2_2: # %label2
98 ; CHECK-DF-NEXT: movi16 a0, 0
99 ; CHECK-DF-NEXT: rts16
100 ; CHECK-DF-NEXT: .p2align 1
101 ; CHECK-DF-NEXT: # %bb.3:
102 ; CHECK-DF-NEXT: .p2align 2, 0x0
103 ; CHECK-DF-NEXT: .LCPI2_0:
104 ; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0
106 ; CHECK-DF2-LABEL: brR0_oeq:
107 ; CHECK-DF2: # %bb.0: # %entry
108 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI2_0]
109 ; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1
110 ; CHECK-DF2-NEXT: bt32 .LBB2_2
111 ; CHECK-DF2-NEXT: # %bb.1: # %label1
112 ; CHECK-DF2-NEXT: movi16 a0, 1
113 ; CHECK-DF2-NEXT: rts16
114 ; CHECK-DF2-NEXT: .LBB2_2: # %label2
115 ; CHECK-DF2-NEXT: movi16 a0, 0
116 ; CHECK-DF2-NEXT: rts16
117 ; CHECK-DF2-NEXT: .p2align 1
118 ; CHECK-DF2-NEXT: # %bb.3:
119 ; CHECK-DF2-NEXT: .p2align 2, 0x0
120 ; CHECK-DF2-NEXT: .LCPI2_0:
121 ; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0
123 %fcmp = fcmp oeq double %x, 0.0
124 br i1 %fcmp, label %label1, label %label2
132 define i32 @brRR_one(double %x, double %y) {
135 ; CHECK-DF-LABEL: brRR_one:
136 ; CHECK-DF: # %bb.0: # %entry
137 ; CHECK-DF-NEXT: fcmpuod vr1, vr0
138 ; CHECK-DF-NEXT: mvc32 a0
139 ; CHECK-DF-NEXT: fcmpned vr1, vr0
140 ; CHECK-DF-NEXT: mvcv16 a1
141 ; CHECK-DF-NEXT: or16 a0, a1
142 ; CHECK-DF-NEXT: btsti16 a0, 0
143 ; CHECK-DF-NEXT: bt32 .LBB3_2
144 ; CHECK-DF-NEXT: # %bb.1: # %label1
145 ; CHECK-DF-NEXT: movi16 a0, 1
146 ; CHECK-DF-NEXT: rts16
147 ; CHECK-DF-NEXT: .LBB3_2: # %label2
148 ; CHECK-DF-NEXT: movi16 a0, 0
149 ; CHECK-DF-NEXT: rts16
151 ; CHECK-DF2-LABEL: brRR_one:
152 ; CHECK-DF2: # %bb.0: # %entry
153 ; CHECK-DF2-NEXT: fcmpuo.64 vr1, vr0
154 ; CHECK-DF2-NEXT: mvc32 a0
155 ; CHECK-DF2-NEXT: fcmpne.64 vr1, vr0
156 ; CHECK-DF2-NEXT: mvcv16 a1
157 ; CHECK-DF2-NEXT: or16 a0, a1
158 ; CHECK-DF2-NEXT: btsti16 a0, 0
159 ; CHECK-DF2-NEXT: bt32 .LBB3_2
160 ; CHECK-DF2-NEXT: # %bb.1: # %label1
161 ; CHECK-DF2-NEXT: movi16 a0, 1
162 ; CHECK-DF2-NEXT: rts16
163 ; CHECK-DF2-NEXT: .LBB3_2: # %label2
164 ; CHECK-DF2-NEXT: movi16 a0, 0
165 ; CHECK-DF2-NEXT: rts16
167 %fcmp = fcmp one double %y, %x
168 br i1 %fcmp, label %label1, label %label2
175 define i32 @brRI_one(double %x) {
178 ; CHECK-DF-LABEL: brRI_one:
179 ; CHECK-DF: # %bb.0: # %entry
180 ; CHECK-DF-NEXT: grs32 a0, .LCPI4_0
181 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
182 ; CHECK-DF-NEXT: fcmpuod vr0, vr1
183 ; CHECK-DF-NEXT: mvc32 a0
184 ; CHECK-DF-NEXT: fcmpned vr0, vr1
185 ; CHECK-DF-NEXT: mvcv16 a1
186 ; CHECK-DF-NEXT: or16 a0, a1
187 ; CHECK-DF-NEXT: btsti16 a0, 0
188 ; CHECK-DF-NEXT: bt32 .LBB4_2
189 ; CHECK-DF-NEXT: # %bb.1: # %label1
190 ; CHECK-DF-NEXT: movi16 a0, 1
191 ; CHECK-DF-NEXT: rts16
192 ; CHECK-DF-NEXT: .LBB4_2: # %label2
193 ; CHECK-DF-NEXT: movi16 a0, 0
194 ; CHECK-DF-NEXT: rts16
195 ; CHECK-DF-NEXT: .p2align 1
196 ; CHECK-DF-NEXT: # %bb.3:
197 ; CHECK-DF-NEXT: .p2align 2, 0x0
198 ; CHECK-DF-NEXT: .LCPI4_0:
199 ; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10
201 ; CHECK-DF2-LABEL: brRI_one:
202 ; CHECK-DF2: # %bb.0: # %entry
203 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI4_0]
204 ; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr1
205 ; CHECK-DF2-NEXT: mvc32 a0
206 ; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1
207 ; CHECK-DF2-NEXT: mvcv16 a1
208 ; CHECK-DF2-NEXT: or16 a0, a1
209 ; CHECK-DF2-NEXT: btsti16 a0, 0
210 ; CHECK-DF2-NEXT: bt32 .LBB4_2
211 ; CHECK-DF2-NEXT: # %bb.1: # %label1
212 ; CHECK-DF2-NEXT: movi16 a0, 1
213 ; CHECK-DF2-NEXT: rts16
214 ; CHECK-DF2-NEXT: .LBB4_2: # %label2
215 ; CHECK-DF2-NEXT: movi16 a0, 0
216 ; CHECK-DF2-NEXT: rts16
217 ; CHECK-DF2-NEXT: .p2align 1
218 ; CHECK-DF2-NEXT: # %bb.3:
219 ; CHECK-DF2-NEXT: .p2align 2, 0x0
220 ; CHECK-DF2-NEXT: .LCPI4_0:
221 ; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10
223 %fcmp = fcmp one double %x, 10.0
224 br i1 %fcmp, label %label1, label %label2
231 define i32 @brR0_one(double %x) {
234 ; CHECK-DF-LABEL: brR0_one:
235 ; CHECK-DF: # %bb.0: # %entry
236 ; CHECK-DF-NEXT: grs32 a0, .LCPI5_0
237 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
238 ; CHECK-DF-NEXT: fcmpuod vr0, vr1
239 ; CHECK-DF-NEXT: mvc32 a0
240 ; CHECK-DF-NEXT: fcmpned vr0, vr1
241 ; CHECK-DF-NEXT: mvcv16 a1
242 ; CHECK-DF-NEXT: or16 a0, a1
243 ; CHECK-DF-NEXT: btsti16 a0, 0
244 ; CHECK-DF-NEXT: bt32 .LBB5_2
245 ; CHECK-DF-NEXT: # %bb.1: # %label1
246 ; CHECK-DF-NEXT: movi16 a0, 1
247 ; CHECK-DF-NEXT: rts16
248 ; CHECK-DF-NEXT: .LBB5_2: # %label2
249 ; CHECK-DF-NEXT: movi16 a0, 0
250 ; CHECK-DF-NEXT: rts16
251 ; CHECK-DF-NEXT: .p2align 1
252 ; CHECK-DF-NEXT: # %bb.3:
253 ; CHECK-DF-NEXT: .p2align 2, 0x0
254 ; CHECK-DF-NEXT: .LCPI5_0:
255 ; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0
257 ; CHECK-DF2-LABEL: brR0_one:
258 ; CHECK-DF2: # %bb.0: # %entry
259 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI5_0]
260 ; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr1
261 ; CHECK-DF2-NEXT: mvc32 a0
262 ; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1
263 ; CHECK-DF2-NEXT: mvcv16 a1
264 ; CHECK-DF2-NEXT: or16 a0, a1
265 ; CHECK-DF2-NEXT: btsti16 a0, 0
266 ; CHECK-DF2-NEXT: bt32 .LBB5_2
267 ; CHECK-DF2-NEXT: # %bb.1: # %label1
268 ; CHECK-DF2-NEXT: movi16 a0, 1
269 ; CHECK-DF2-NEXT: rts16
270 ; CHECK-DF2-NEXT: .LBB5_2: # %label2
271 ; CHECK-DF2-NEXT: movi16 a0, 0
272 ; CHECK-DF2-NEXT: rts16
273 ; CHECK-DF2-NEXT: .p2align 1
274 ; CHECK-DF2-NEXT: # %bb.3:
275 ; CHECK-DF2-NEXT: .p2align 2, 0x0
276 ; CHECK-DF2-NEXT: .LCPI5_0:
277 ; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0
279 %fcmp = fcmp one double %x, 0.0
280 br i1 %fcmp, label %label1, label %label2
288 define i32 @brRR_ugt(double %x, double %y) {
291 ; CHECK-DF-LABEL: brRR_ugt:
292 ; CHECK-DF: # %bb.0: # %entry
293 ; CHECK-DF-NEXT: fcmphsd vr0, vr1
294 ; CHECK-DF-NEXT: bt32 .LBB6_2
295 ; CHECK-DF-NEXT: # %bb.1: # %label1
296 ; CHECK-DF-NEXT: movi16 a0, 1
297 ; CHECK-DF-NEXT: rts16
298 ; CHECK-DF-NEXT: .LBB6_2: # %label2
299 ; CHECK-DF-NEXT: movi16 a0, 0
300 ; CHECK-DF-NEXT: rts16
302 ; CHECK-DF2-LABEL: brRR_ugt:
303 ; CHECK-DF2: # %bb.0: # %entry
304 ; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1
305 ; CHECK-DF2-NEXT: bt32 .LBB6_2
306 ; CHECK-DF2-NEXT: # %bb.1: # %label1
307 ; CHECK-DF2-NEXT: movi16 a0, 1
308 ; CHECK-DF2-NEXT: rts16
309 ; CHECK-DF2-NEXT: .LBB6_2: # %label2
310 ; CHECK-DF2-NEXT: movi16 a0, 0
311 ; CHECK-DF2-NEXT: rts16
313 %fcmp = fcmp ugt double %y, %x
314 br i1 %fcmp, label %label1, label %label2
321 define i32 @brRI_ugt(double %x) {
324 ; CHECK-DF-LABEL: brRI_ugt:
325 ; CHECK-DF: # %bb.0: # %entry
326 ; CHECK-DF-NEXT: grs32 a0, .LCPI7_0
327 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
328 ; CHECK-DF-NEXT: fcmphsd vr1, vr0
329 ; CHECK-DF-NEXT: bt32 .LBB7_2
330 ; CHECK-DF-NEXT: # %bb.1: # %label1
331 ; CHECK-DF-NEXT: movi16 a0, 1
332 ; CHECK-DF-NEXT: rts16
333 ; CHECK-DF-NEXT: .LBB7_2: # %label2
334 ; CHECK-DF-NEXT: movi16 a0, 0
335 ; CHECK-DF-NEXT: rts16
336 ; CHECK-DF-NEXT: .p2align 1
337 ; CHECK-DF-NEXT: # %bb.3:
338 ; CHECK-DF-NEXT: .p2align 2, 0x0
339 ; CHECK-DF-NEXT: .LCPI7_0:
340 ; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10
342 ; CHECK-DF2-LABEL: brRI_ugt:
343 ; CHECK-DF2: # %bb.0: # %entry
344 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI7_0]
345 ; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0
346 ; CHECK-DF2-NEXT: bt32 .LBB7_2
347 ; CHECK-DF2-NEXT: # %bb.1: # %label1
348 ; CHECK-DF2-NEXT: movi16 a0, 1
349 ; CHECK-DF2-NEXT: rts16
350 ; CHECK-DF2-NEXT: .LBB7_2: # %label2
351 ; CHECK-DF2-NEXT: movi16 a0, 0
352 ; CHECK-DF2-NEXT: rts16
353 ; CHECK-DF2-NEXT: .p2align 1
354 ; CHECK-DF2-NEXT: # %bb.3:
355 ; CHECK-DF2-NEXT: .p2align 2, 0x0
356 ; CHECK-DF2-NEXT: .LCPI7_0:
357 ; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10
359 %fcmp = fcmp ugt double %x, 10.0
360 br i1 %fcmp, label %label1, label %label2
367 define i32 @brR0_ugt(double %x) {
370 ; CHECK-DF-LABEL: brR0_ugt:
371 ; CHECK-DF: # %bb.0: # %entry
372 ; CHECK-DF-NEXT: grs32 a0, .LCPI8_0
373 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
374 ; CHECK-DF-NEXT: fcmphsd vr1, vr0
375 ; CHECK-DF-NEXT: bt32 .LBB8_2
376 ; CHECK-DF-NEXT: # %bb.1: # %label1
377 ; CHECK-DF-NEXT: movi16 a0, 1
378 ; CHECK-DF-NEXT: rts16
379 ; CHECK-DF-NEXT: .LBB8_2: # %label2
380 ; CHECK-DF-NEXT: movi16 a0, 0
381 ; CHECK-DF-NEXT: rts16
382 ; CHECK-DF-NEXT: .p2align 1
383 ; CHECK-DF-NEXT: # %bb.3:
384 ; CHECK-DF-NEXT: .p2align 2, 0x0
385 ; CHECK-DF-NEXT: .LCPI8_0:
386 ; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0
388 ; CHECK-DF2-LABEL: brR0_ugt:
389 ; CHECK-DF2: # %bb.0: # %entry
390 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI8_0]
391 ; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0
392 ; CHECK-DF2-NEXT: bt32 .LBB8_2
393 ; CHECK-DF2-NEXT: # %bb.1: # %label1
394 ; CHECK-DF2-NEXT: movi16 a0, 1
395 ; CHECK-DF2-NEXT: rts16
396 ; CHECK-DF2-NEXT: .LBB8_2: # %label2
397 ; CHECK-DF2-NEXT: movi16 a0, 0
398 ; CHECK-DF2-NEXT: rts16
399 ; CHECK-DF2-NEXT: .p2align 1
400 ; CHECK-DF2-NEXT: # %bb.3:
401 ; CHECK-DF2-NEXT: .p2align 2, 0x0
402 ; CHECK-DF2-NEXT: .LCPI8_0:
403 ; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0
405 %fcmp = fcmp ugt double %x, 0.0
406 br i1 %fcmp, label %label1, label %label2
414 define i32 @brRR_uge(double %x, double %y) {
417 ; CHECK-DF-LABEL: brRR_uge:
418 ; CHECK-DF: # %bb.0: # %entry
419 ; CHECK-DF-NEXT: fcmpltd vr1, vr0
420 ; CHECK-DF-NEXT: bt32 .LBB9_2
421 ; CHECK-DF-NEXT: # %bb.1: # %label1
422 ; CHECK-DF-NEXT: movi16 a0, 1
423 ; CHECK-DF-NEXT: rts16
424 ; CHECK-DF-NEXT: .LBB9_2: # %label2
425 ; CHECK-DF-NEXT: movi16 a0, 0
426 ; CHECK-DF-NEXT: rts16
428 ; CHECK-DF2-LABEL: brRR_uge:
429 ; CHECK-DF2: # %bb.0: # %entry
430 ; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0
431 ; CHECK-DF2-NEXT: bt32 .LBB9_2
432 ; CHECK-DF2-NEXT: # %bb.1: # %label1
433 ; CHECK-DF2-NEXT: movi16 a0, 1
434 ; CHECK-DF2-NEXT: rts16
435 ; CHECK-DF2-NEXT: .LBB9_2: # %label2
436 ; CHECK-DF2-NEXT: movi16 a0, 0
437 ; CHECK-DF2-NEXT: rts16
439 %fcmp = fcmp uge double %y, %x
440 br i1 %fcmp, label %label1, label %label2
447 define i32 @brRI_uge(double %x) {
450 ; CHECK-DF-LABEL: brRI_uge:
451 ; CHECK-DF: # %bb.0: # %entry
452 ; CHECK-DF-NEXT: grs32 a0, .LCPI10_0
453 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
454 ; CHECK-DF-NEXT: fcmpltd vr0, vr1
455 ; CHECK-DF-NEXT: bt32 .LBB10_2
456 ; CHECK-DF-NEXT: # %bb.1: # %label1
457 ; CHECK-DF-NEXT: movi16 a0, 1
458 ; CHECK-DF-NEXT: rts16
459 ; CHECK-DF-NEXT: .LBB10_2: # %label2
460 ; CHECK-DF-NEXT: movi16 a0, 0
461 ; CHECK-DF-NEXT: rts16
462 ; CHECK-DF-NEXT: .p2align 1
463 ; CHECK-DF-NEXT: # %bb.3:
464 ; CHECK-DF-NEXT: .p2align 2, 0x0
465 ; CHECK-DF-NEXT: .LCPI10_0:
466 ; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10
468 ; CHECK-DF2-LABEL: brRI_uge:
469 ; CHECK-DF2: # %bb.0: # %entry
470 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI10_0]
471 ; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1
472 ; CHECK-DF2-NEXT: bt32 .LBB10_2
473 ; CHECK-DF2-NEXT: # %bb.1: # %label1
474 ; CHECK-DF2-NEXT: movi16 a0, 1
475 ; CHECK-DF2-NEXT: rts16
476 ; CHECK-DF2-NEXT: .LBB10_2: # %label2
477 ; CHECK-DF2-NEXT: movi16 a0, 0
478 ; CHECK-DF2-NEXT: rts16
479 ; CHECK-DF2-NEXT: .p2align 1
480 ; CHECK-DF2-NEXT: # %bb.3:
481 ; CHECK-DF2-NEXT: .p2align 2, 0x0
482 ; CHECK-DF2-NEXT: .LCPI10_0:
483 ; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10
485 %fcmp = fcmp uge double %x, 10.0
486 br i1 %fcmp, label %label1, label %label2
493 define i32 @brR0_uge(double %x) {
496 ; CHECK-DF-LABEL: brR0_uge:
497 ; CHECK-DF: # %bb.0: # %entry
498 ; CHECK-DF-NEXT: grs32 a0, .LCPI11_0
499 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
500 ; CHECK-DF-NEXT: fcmpltd vr0, vr1
501 ; CHECK-DF-NEXT: bt32 .LBB11_2
502 ; CHECK-DF-NEXT: # %bb.1: # %label1
503 ; CHECK-DF-NEXT: movi16 a0, 1
504 ; CHECK-DF-NEXT: rts16
505 ; CHECK-DF-NEXT: .LBB11_2: # %label2
506 ; CHECK-DF-NEXT: movi16 a0, 0
507 ; CHECK-DF-NEXT: rts16
508 ; CHECK-DF-NEXT: .p2align 1
509 ; CHECK-DF-NEXT: # %bb.3:
510 ; CHECK-DF-NEXT: .p2align 2, 0x0
511 ; CHECK-DF-NEXT: .LCPI11_0:
512 ; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0
514 ; CHECK-DF2-LABEL: brR0_uge:
515 ; CHECK-DF2: # %bb.0: # %entry
516 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI11_0]
517 ; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1
518 ; CHECK-DF2-NEXT: bt32 .LBB11_2
519 ; CHECK-DF2-NEXT: # %bb.1: # %label1
520 ; CHECK-DF2-NEXT: movi16 a0, 1
521 ; CHECK-DF2-NEXT: rts16
522 ; CHECK-DF2-NEXT: .LBB11_2: # %label2
523 ; CHECK-DF2-NEXT: movi16 a0, 0
524 ; CHECK-DF2-NEXT: rts16
525 ; CHECK-DF2-NEXT: .p2align 1
526 ; CHECK-DF2-NEXT: # %bb.3:
527 ; CHECK-DF2-NEXT: .p2align 2, 0x0
528 ; CHECK-DF2-NEXT: .LCPI11_0:
529 ; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0
531 %fcmp = fcmp uge double %x, 0.0
532 br i1 %fcmp, label %label1, label %label2
540 define i32 @brRR_ult(double %x, double %y) {
543 ; CHECK-DF-LABEL: brRR_ult:
544 ; CHECK-DF: # %bb.0: # %entry
545 ; CHECK-DF-NEXT: fcmphsd vr1, vr0
546 ; CHECK-DF-NEXT: bt32 .LBB12_2
547 ; CHECK-DF-NEXT: # %bb.1: # %label1
548 ; CHECK-DF-NEXT: movi16 a0, 1
549 ; CHECK-DF-NEXT: rts16
550 ; CHECK-DF-NEXT: .LBB12_2: # %label2
551 ; CHECK-DF-NEXT: movi16 a0, 0
552 ; CHECK-DF-NEXT: rts16
554 ; CHECK-DF2-LABEL: brRR_ult:
555 ; CHECK-DF2: # %bb.0: # %entry
556 ; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0
557 ; CHECK-DF2-NEXT: bt32 .LBB12_2
558 ; CHECK-DF2-NEXT: # %bb.1: # %label1
559 ; CHECK-DF2-NEXT: movi16 a0, 1
560 ; CHECK-DF2-NEXT: rts16
561 ; CHECK-DF2-NEXT: .LBB12_2: # %label2
562 ; CHECK-DF2-NEXT: movi16 a0, 0
563 ; CHECK-DF2-NEXT: rts16
565 %fcmp = fcmp ult double %y, %x
566 br i1 %fcmp, label %label1, label %label2
573 define i32 @brRI_ult(double %x) {
576 ; CHECK-DF-LABEL: brRI_ult:
577 ; CHECK-DF: # %bb.0: # %entry
578 ; CHECK-DF-NEXT: grs32 a0, .LCPI13_0
579 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
580 ; CHECK-DF-NEXT: fcmphsd vr0, vr1
581 ; CHECK-DF-NEXT: bt32 .LBB13_2
582 ; CHECK-DF-NEXT: # %bb.1: # %label1
583 ; CHECK-DF-NEXT: movi16 a0, 1
584 ; CHECK-DF-NEXT: rts16
585 ; CHECK-DF-NEXT: .LBB13_2: # %label2
586 ; CHECK-DF-NEXT: movi16 a0, 0
587 ; CHECK-DF-NEXT: rts16
588 ; CHECK-DF-NEXT: .p2align 1
589 ; CHECK-DF-NEXT: # %bb.3:
590 ; CHECK-DF-NEXT: .p2align 2, 0x0
591 ; CHECK-DF-NEXT: .LCPI13_0:
592 ; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10
594 ; CHECK-DF2-LABEL: brRI_ult:
595 ; CHECK-DF2: # %bb.0: # %entry
596 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI13_0]
597 ; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1
598 ; CHECK-DF2-NEXT: bt32 .LBB13_2
599 ; CHECK-DF2-NEXT: # %bb.1: # %label1
600 ; CHECK-DF2-NEXT: movi16 a0, 1
601 ; CHECK-DF2-NEXT: rts16
602 ; CHECK-DF2-NEXT: .LBB13_2: # %label2
603 ; CHECK-DF2-NEXT: movi16 a0, 0
604 ; CHECK-DF2-NEXT: rts16
605 ; CHECK-DF2-NEXT: .p2align 1
606 ; CHECK-DF2-NEXT: # %bb.3:
607 ; CHECK-DF2-NEXT: .p2align 2, 0x0
608 ; CHECK-DF2-NEXT: .LCPI13_0:
609 ; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10
611 %fcmp = fcmp ult double %x, 10.0
612 br i1 %fcmp, label %label1, label %label2
619 define i32 @brR0_ult(double %x) {
622 ; CHECK-DF-LABEL: brR0_ult:
623 ; CHECK-DF: # %bb.0: # %entry
624 ; CHECK-DF-NEXT: grs32 a0, .LCPI14_0
625 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
626 ; CHECK-DF-NEXT: fcmphsd vr0, vr1
627 ; CHECK-DF-NEXT: bt32 .LBB14_2
628 ; CHECK-DF-NEXT: # %bb.1: # %label1
629 ; CHECK-DF-NEXT: movi16 a0, 1
630 ; CHECK-DF-NEXT: rts16
631 ; CHECK-DF-NEXT: .LBB14_2: # %label2
632 ; CHECK-DF-NEXT: movi16 a0, 0
633 ; CHECK-DF-NEXT: rts16
634 ; CHECK-DF-NEXT: .p2align 1
635 ; CHECK-DF-NEXT: # %bb.3:
636 ; CHECK-DF-NEXT: .p2align 2, 0x0
637 ; CHECK-DF-NEXT: .LCPI14_0:
638 ; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0
640 ; CHECK-DF2-LABEL: brR0_ult:
641 ; CHECK-DF2: # %bb.0: # %entry
642 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI14_0]
643 ; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1
644 ; CHECK-DF2-NEXT: bt32 .LBB14_2
645 ; CHECK-DF2-NEXT: # %bb.1: # %label1
646 ; CHECK-DF2-NEXT: movi16 a0, 1
647 ; CHECK-DF2-NEXT: rts16
648 ; CHECK-DF2-NEXT: .LBB14_2: # %label2
649 ; CHECK-DF2-NEXT: movi16 a0, 0
650 ; CHECK-DF2-NEXT: rts16
651 ; CHECK-DF2-NEXT: .p2align 1
652 ; CHECK-DF2-NEXT: # %bb.3:
653 ; CHECK-DF2-NEXT: .p2align 2, 0x0
654 ; CHECK-DF2-NEXT: .LCPI14_0:
655 ; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0
657 %fcmp = fcmp ult double %x, 0.0
658 br i1 %fcmp, label %label1, label %label2
666 define i32 @brRR_ule(double %x, double %y) {
669 ; CHECK-DF-LABEL: brRR_ule:
670 ; CHECK-DF: # %bb.0: # %entry
671 ; CHECK-DF-NEXT: fcmpltd vr0, vr1
672 ; CHECK-DF-NEXT: bt32 .LBB15_2
673 ; CHECK-DF-NEXT: # %bb.1: # %label1
674 ; CHECK-DF-NEXT: movi16 a0, 1
675 ; CHECK-DF-NEXT: rts16
676 ; CHECK-DF-NEXT: .LBB15_2: # %label2
677 ; CHECK-DF-NEXT: movi16 a0, 0
678 ; CHECK-DF-NEXT: rts16
680 ; CHECK-DF2-LABEL: brRR_ule:
681 ; CHECK-DF2: # %bb.0: # %entry
682 ; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1
683 ; CHECK-DF2-NEXT: bt32 .LBB15_2
684 ; CHECK-DF2-NEXT: # %bb.1: # %label1
685 ; CHECK-DF2-NEXT: movi16 a0, 1
686 ; CHECK-DF2-NEXT: rts16
687 ; CHECK-DF2-NEXT: .LBB15_2: # %label2
688 ; CHECK-DF2-NEXT: movi16 a0, 0
689 ; CHECK-DF2-NEXT: rts16
691 %fcmp = fcmp ule double %y, %x
692 br i1 %fcmp, label %label1, label %label2
699 define i32 @brRI_ule(double %x) {
702 ; CHECK-DF-LABEL: brRI_ule:
703 ; CHECK-DF: # %bb.0: # %entry
704 ; CHECK-DF-NEXT: grs32 a0, .LCPI16_0
705 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
706 ; CHECK-DF-NEXT: fcmpltd vr1, vr0
707 ; CHECK-DF-NEXT: bt32 .LBB16_2
708 ; CHECK-DF-NEXT: # %bb.1: # %label1
709 ; CHECK-DF-NEXT: movi16 a0, 1
710 ; CHECK-DF-NEXT: rts16
711 ; CHECK-DF-NEXT: .LBB16_2: # %label2
712 ; CHECK-DF-NEXT: movi16 a0, 0
713 ; CHECK-DF-NEXT: rts16
714 ; CHECK-DF-NEXT: .p2align 1
715 ; CHECK-DF-NEXT: # %bb.3:
716 ; CHECK-DF-NEXT: .p2align 2, 0x0
717 ; CHECK-DF-NEXT: .LCPI16_0:
718 ; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10
720 ; CHECK-DF2-LABEL: brRI_ule:
721 ; CHECK-DF2: # %bb.0: # %entry
722 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI16_0]
723 ; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0
724 ; CHECK-DF2-NEXT: bt32 .LBB16_2
725 ; CHECK-DF2-NEXT: # %bb.1: # %label1
726 ; CHECK-DF2-NEXT: movi16 a0, 1
727 ; CHECK-DF2-NEXT: rts16
728 ; CHECK-DF2-NEXT: .LBB16_2: # %label2
729 ; CHECK-DF2-NEXT: movi16 a0, 0
730 ; CHECK-DF2-NEXT: rts16
731 ; CHECK-DF2-NEXT: .p2align 1
732 ; CHECK-DF2-NEXT: # %bb.3:
733 ; CHECK-DF2-NEXT: .p2align 2, 0x0
734 ; CHECK-DF2-NEXT: .LCPI16_0:
735 ; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10
737 %fcmp = fcmp ule double %x, 10.0
738 br i1 %fcmp, label %label1, label %label2
745 define i32 @brR0_ule(double %x) {
748 ; CHECK-DF-LABEL: brR0_ule:
749 ; CHECK-DF: # %bb.0: # %entry
750 ; CHECK-DF-NEXT: grs32 a0, .LCPI17_0
751 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
752 ; CHECK-DF-NEXT: fcmpltd vr1, vr0
753 ; CHECK-DF-NEXT: bt32 .LBB17_2
754 ; CHECK-DF-NEXT: # %bb.1: # %label1
755 ; CHECK-DF-NEXT: movi16 a0, 1
756 ; CHECK-DF-NEXT: rts16
757 ; CHECK-DF-NEXT: .LBB17_2: # %label2
758 ; CHECK-DF-NEXT: movi16 a0, 0
759 ; CHECK-DF-NEXT: rts16
760 ; CHECK-DF-NEXT: .p2align 1
761 ; CHECK-DF-NEXT: # %bb.3:
762 ; CHECK-DF-NEXT: .p2align 2, 0x0
763 ; CHECK-DF-NEXT: .LCPI17_0:
764 ; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0
766 ; CHECK-DF2-LABEL: brR0_ule:
767 ; CHECK-DF2: # %bb.0: # %entry
768 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI17_0]
769 ; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0
770 ; CHECK-DF2-NEXT: bt32 .LBB17_2
771 ; CHECK-DF2-NEXT: # %bb.1: # %label1
772 ; CHECK-DF2-NEXT: movi16 a0, 1
773 ; CHECK-DF2-NEXT: rts16
774 ; CHECK-DF2-NEXT: .LBB17_2: # %label2
775 ; CHECK-DF2-NEXT: movi16 a0, 0
776 ; CHECK-DF2-NEXT: rts16
777 ; CHECK-DF2-NEXT: .p2align 1
778 ; CHECK-DF2-NEXT: # %bb.3:
779 ; CHECK-DF2-NEXT: .p2align 2, 0x0
780 ; CHECK-DF2-NEXT: .LCPI17_0:
781 ; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0
783 %fcmp = fcmp ule double %x, 0.0
784 br i1 %fcmp, label %label1, label %label2
792 define i32 @brRR_ogt(double %x, double %y) {
795 ; CHECK-DF-LABEL: brRR_ogt:
796 ; CHECK-DF: # %bb.0: # %entry
797 ; CHECK-DF-NEXT: fcmpltd vr0, vr1
798 ; CHECK-DF-NEXT: bf32 .LBB18_2
799 ; CHECK-DF-NEXT: # %bb.1: # %label1
800 ; CHECK-DF-NEXT: movi16 a0, 1
801 ; CHECK-DF-NEXT: rts16
802 ; CHECK-DF-NEXT: .LBB18_2: # %label2
803 ; CHECK-DF-NEXT: movi16 a0, 0
804 ; CHECK-DF-NEXT: rts16
806 ; CHECK-DF2-LABEL: brRR_ogt:
807 ; CHECK-DF2: # %bb.0: # %entry
808 ; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1
809 ; CHECK-DF2-NEXT: bf32 .LBB18_2
810 ; CHECK-DF2-NEXT: # %bb.1: # %label1
811 ; CHECK-DF2-NEXT: movi16 a0, 1
812 ; CHECK-DF2-NEXT: rts16
813 ; CHECK-DF2-NEXT: .LBB18_2: # %label2
814 ; CHECK-DF2-NEXT: movi16 a0, 0
815 ; CHECK-DF2-NEXT: rts16
817 %fcmp = fcmp ogt double %y, %x
818 br i1 %fcmp, label %label1, label %label2
825 define i32 @brRI_ogt(double %x) {
828 ; CHECK-DF-LABEL: brRI_ogt:
829 ; CHECK-DF: # %bb.0: # %entry
830 ; CHECK-DF-NEXT: grs32 a0, .LCPI19_0
831 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
832 ; CHECK-DF-NEXT: fcmpltd vr1, vr0
833 ; CHECK-DF-NEXT: bf32 .LBB19_2
834 ; CHECK-DF-NEXT: # %bb.1: # %label1
835 ; CHECK-DF-NEXT: movi16 a0, 1
836 ; CHECK-DF-NEXT: rts16
837 ; CHECK-DF-NEXT: .LBB19_2: # %label2
838 ; CHECK-DF-NEXT: movi16 a0, 0
839 ; CHECK-DF-NEXT: rts16
840 ; CHECK-DF-NEXT: .p2align 1
841 ; CHECK-DF-NEXT: # %bb.3:
842 ; CHECK-DF-NEXT: .p2align 2, 0x0
843 ; CHECK-DF-NEXT: .LCPI19_0:
844 ; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10
846 ; CHECK-DF2-LABEL: brRI_ogt:
847 ; CHECK-DF2: # %bb.0: # %entry
848 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI19_0]
849 ; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0
850 ; CHECK-DF2-NEXT: bf32 .LBB19_2
851 ; CHECK-DF2-NEXT: # %bb.1: # %label1
852 ; CHECK-DF2-NEXT: movi16 a0, 1
853 ; CHECK-DF2-NEXT: rts16
854 ; CHECK-DF2-NEXT: .LBB19_2: # %label2
855 ; CHECK-DF2-NEXT: movi16 a0, 0
856 ; CHECK-DF2-NEXT: rts16
857 ; CHECK-DF2-NEXT: .p2align 1
858 ; CHECK-DF2-NEXT: # %bb.3:
859 ; CHECK-DF2-NEXT: .p2align 2, 0x0
860 ; CHECK-DF2-NEXT: .LCPI19_0:
861 ; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10
863 %fcmp = fcmp ogt double %x, 10.0
864 br i1 %fcmp, label %label1, label %label2
871 define i32 @brR0_ogt(double %x) {
874 ; CHECK-DF-LABEL: brR0_ogt:
875 ; CHECK-DF: # %bb.0: # %entry
876 ; CHECK-DF-NEXT: grs32 a0, .LCPI20_0
877 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
878 ; CHECK-DF-NEXT: fcmpltd vr1, vr0
879 ; CHECK-DF-NEXT: bf32 .LBB20_2
880 ; CHECK-DF-NEXT: # %bb.1: # %label1
881 ; CHECK-DF-NEXT: movi16 a0, 1
882 ; CHECK-DF-NEXT: rts16
883 ; CHECK-DF-NEXT: .LBB20_2: # %label2
884 ; CHECK-DF-NEXT: movi16 a0, 0
885 ; CHECK-DF-NEXT: rts16
886 ; CHECK-DF-NEXT: .p2align 1
887 ; CHECK-DF-NEXT: # %bb.3:
888 ; CHECK-DF-NEXT: .p2align 2, 0x0
889 ; CHECK-DF-NEXT: .LCPI20_0:
890 ; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0
892 ; CHECK-DF2-LABEL: brR0_ogt:
893 ; CHECK-DF2: # %bb.0: # %entry
894 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI20_0]
895 ; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0
896 ; CHECK-DF2-NEXT: bf32 .LBB20_2
897 ; CHECK-DF2-NEXT: # %bb.1: # %label1
898 ; CHECK-DF2-NEXT: movi16 a0, 1
899 ; CHECK-DF2-NEXT: rts16
900 ; CHECK-DF2-NEXT: .LBB20_2: # %label2
901 ; CHECK-DF2-NEXT: movi16 a0, 0
902 ; CHECK-DF2-NEXT: rts16
903 ; CHECK-DF2-NEXT: .p2align 1
904 ; CHECK-DF2-NEXT: # %bb.3:
905 ; CHECK-DF2-NEXT: .p2align 2, 0x0
906 ; CHECK-DF2-NEXT: .LCPI20_0:
907 ; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0
909 %fcmp = fcmp ogt double %x, 0.0
910 br i1 %fcmp, label %label1, label %label2
918 define i32 @brRR_oge(double %x, double %y) {
921 ; CHECK-DF-LABEL: brRR_oge:
922 ; CHECK-DF: # %bb.0: # %entry
923 ; CHECK-DF-NEXT: fcmphsd vr1, vr0
924 ; CHECK-DF-NEXT: bf32 .LBB21_2
925 ; CHECK-DF-NEXT: # %bb.1: # %label1
926 ; CHECK-DF-NEXT: movi16 a0, 1
927 ; CHECK-DF-NEXT: rts16
928 ; CHECK-DF-NEXT: .LBB21_2: # %label2
929 ; CHECK-DF-NEXT: movi16 a0, 0
930 ; CHECK-DF-NEXT: rts16
932 ; CHECK-DF2-LABEL: brRR_oge:
933 ; CHECK-DF2: # %bb.0: # %entry
934 ; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0
935 ; CHECK-DF2-NEXT: bf32 .LBB21_2
936 ; CHECK-DF2-NEXT: # %bb.1: # %label1
937 ; CHECK-DF2-NEXT: movi16 a0, 1
938 ; CHECK-DF2-NEXT: rts16
939 ; CHECK-DF2-NEXT: .LBB21_2: # %label2
940 ; CHECK-DF2-NEXT: movi16 a0, 0
941 ; CHECK-DF2-NEXT: rts16
943 %fcmp = fcmp oge double %y, %x
944 br i1 %fcmp, label %label1, label %label2
951 define i32 @brRI_oge(double %x) {
954 ; CHECK-DF-LABEL: brRI_oge:
955 ; CHECK-DF: # %bb.0: # %entry
956 ; CHECK-DF-NEXT: grs32 a0, .LCPI22_0
957 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
958 ; CHECK-DF-NEXT: fcmphsd vr0, vr1
959 ; CHECK-DF-NEXT: bf32 .LBB22_2
960 ; CHECK-DF-NEXT: # %bb.1: # %label1
961 ; CHECK-DF-NEXT: movi16 a0, 1
962 ; CHECK-DF-NEXT: rts16
963 ; CHECK-DF-NEXT: .LBB22_2: # %label2
964 ; CHECK-DF-NEXT: movi16 a0, 0
965 ; CHECK-DF-NEXT: rts16
966 ; CHECK-DF-NEXT: .p2align 1
967 ; CHECK-DF-NEXT: # %bb.3:
968 ; CHECK-DF-NEXT: .p2align 2, 0x0
969 ; CHECK-DF-NEXT: .LCPI22_0:
970 ; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10
972 ; CHECK-DF2-LABEL: brRI_oge:
973 ; CHECK-DF2: # %bb.0: # %entry
974 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI22_0]
975 ; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1
976 ; CHECK-DF2-NEXT: bf32 .LBB22_2
977 ; CHECK-DF2-NEXT: # %bb.1: # %label1
978 ; CHECK-DF2-NEXT: movi16 a0, 1
979 ; CHECK-DF2-NEXT: rts16
980 ; CHECK-DF2-NEXT: .LBB22_2: # %label2
981 ; CHECK-DF2-NEXT: movi16 a0, 0
982 ; CHECK-DF2-NEXT: rts16
983 ; CHECK-DF2-NEXT: .p2align 1
984 ; CHECK-DF2-NEXT: # %bb.3:
985 ; CHECK-DF2-NEXT: .p2align 2, 0x0
986 ; CHECK-DF2-NEXT: .LCPI22_0:
987 ; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10
989 %fcmp = fcmp oge double %x, 10.0
990 br i1 %fcmp, label %label1, label %label2
997 define i32 @brR0_oge(double %x) {
1000 ; CHECK-DF-LABEL: brR0_oge:
1001 ; CHECK-DF: # %bb.0: # %entry
1002 ; CHECK-DF-NEXT: grs32 a0, .LCPI23_0
1003 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
1004 ; CHECK-DF-NEXT: fcmphsd vr0, vr1
1005 ; CHECK-DF-NEXT: bf32 .LBB23_2
1006 ; CHECK-DF-NEXT: # %bb.1: # %label1
1007 ; CHECK-DF-NEXT: movi16 a0, 1
1008 ; CHECK-DF-NEXT: rts16
1009 ; CHECK-DF-NEXT: .LBB23_2: # %label2
1010 ; CHECK-DF-NEXT: movi16 a0, 0
1011 ; CHECK-DF-NEXT: rts16
1012 ; CHECK-DF-NEXT: .p2align 1
1013 ; CHECK-DF-NEXT: # %bb.3:
1014 ; CHECK-DF-NEXT: .p2align 2, 0x0
1015 ; CHECK-DF-NEXT: .LCPI23_0:
1016 ; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0
1018 ; CHECK-DF2-LABEL: brR0_oge:
1019 ; CHECK-DF2: # %bb.0: # %entry
1020 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI23_0]
1021 ; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1
1022 ; CHECK-DF2-NEXT: bf32 .LBB23_2
1023 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1024 ; CHECK-DF2-NEXT: movi16 a0, 1
1025 ; CHECK-DF2-NEXT: rts16
1026 ; CHECK-DF2-NEXT: .LBB23_2: # %label2
1027 ; CHECK-DF2-NEXT: movi16 a0, 0
1028 ; CHECK-DF2-NEXT: rts16
1029 ; CHECK-DF2-NEXT: .p2align 1
1030 ; CHECK-DF2-NEXT: # %bb.3:
1031 ; CHECK-DF2-NEXT: .p2align 2, 0x0
1032 ; CHECK-DF2-NEXT: .LCPI23_0:
1033 ; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0
1035 %fcmp = fcmp oge double %x, 0.0
1036 br i1 %fcmp, label %label1, label %label2
1044 define i32 @brRR_olt(double %x, double %y) {
1047 ; CHECK-DF-LABEL: brRR_olt:
1048 ; CHECK-DF: # %bb.0: # %entry
1049 ; CHECK-DF-NEXT: fcmpltd vr1, vr0
1050 ; CHECK-DF-NEXT: bf32 .LBB24_2
1051 ; CHECK-DF-NEXT: # %bb.1: # %label1
1052 ; CHECK-DF-NEXT: movi16 a0, 1
1053 ; CHECK-DF-NEXT: rts16
1054 ; CHECK-DF-NEXT: .LBB24_2: # %label2
1055 ; CHECK-DF-NEXT: movi16 a0, 0
1056 ; CHECK-DF-NEXT: rts16
1058 ; CHECK-DF2-LABEL: brRR_olt:
1059 ; CHECK-DF2: # %bb.0: # %entry
1060 ; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0
1061 ; CHECK-DF2-NEXT: bf32 .LBB24_2
1062 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1063 ; CHECK-DF2-NEXT: movi16 a0, 1
1064 ; CHECK-DF2-NEXT: rts16
1065 ; CHECK-DF2-NEXT: .LBB24_2: # %label2
1066 ; CHECK-DF2-NEXT: movi16 a0, 0
1067 ; CHECK-DF2-NEXT: rts16
1069 %fcmp = fcmp olt double %y, %x
1070 br i1 %fcmp, label %label1, label %label2
1077 define i32 @brRI_olt(double %x) {
1080 ; CHECK-DF-LABEL: brRI_olt:
1081 ; CHECK-DF: # %bb.0: # %entry
1082 ; CHECK-DF-NEXT: grs32 a0, .LCPI25_0
1083 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
1084 ; CHECK-DF-NEXT: fcmpltd vr0, vr1
1085 ; CHECK-DF-NEXT: bf32 .LBB25_2
1086 ; CHECK-DF-NEXT: # %bb.1: # %label1
1087 ; CHECK-DF-NEXT: movi16 a0, 1
1088 ; CHECK-DF-NEXT: rts16
1089 ; CHECK-DF-NEXT: .LBB25_2: # %label2
1090 ; CHECK-DF-NEXT: movi16 a0, 0
1091 ; CHECK-DF-NEXT: rts16
1092 ; CHECK-DF-NEXT: .p2align 1
1093 ; CHECK-DF-NEXT: # %bb.3:
1094 ; CHECK-DF-NEXT: .p2align 2, 0x0
1095 ; CHECK-DF-NEXT: .LCPI25_0:
1096 ; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10
1098 ; CHECK-DF2-LABEL: brRI_olt:
1099 ; CHECK-DF2: # %bb.0: # %entry
1100 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI25_0]
1101 ; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1
1102 ; CHECK-DF2-NEXT: bf32 .LBB25_2
1103 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1104 ; CHECK-DF2-NEXT: movi16 a0, 1
1105 ; CHECK-DF2-NEXT: rts16
1106 ; CHECK-DF2-NEXT: .LBB25_2: # %label2
1107 ; CHECK-DF2-NEXT: movi16 a0, 0
1108 ; CHECK-DF2-NEXT: rts16
1109 ; CHECK-DF2-NEXT: .p2align 1
1110 ; CHECK-DF2-NEXT: # %bb.3:
1111 ; CHECK-DF2-NEXT: .p2align 2, 0x0
1112 ; CHECK-DF2-NEXT: .LCPI25_0:
1113 ; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10
1115 %fcmp = fcmp olt double %x, 10.0
1116 br i1 %fcmp, label %label1, label %label2
1123 define i32 @brR0_olt(double %x) {
1126 ; CHECK-DF-LABEL: brR0_olt:
1127 ; CHECK-DF: # %bb.0: # %entry
1128 ; CHECK-DF-NEXT: grs32 a0, .LCPI26_0
1129 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
1130 ; CHECK-DF-NEXT: fcmpltd vr0, vr1
1131 ; CHECK-DF-NEXT: bf32 .LBB26_2
1132 ; CHECK-DF-NEXT: # %bb.1: # %label1
1133 ; CHECK-DF-NEXT: movi16 a0, 1
1134 ; CHECK-DF-NEXT: rts16
1135 ; CHECK-DF-NEXT: .LBB26_2: # %label2
1136 ; CHECK-DF-NEXT: movi16 a0, 0
1137 ; CHECK-DF-NEXT: rts16
1138 ; CHECK-DF-NEXT: .p2align 1
1139 ; CHECK-DF-NEXT: # %bb.3:
1140 ; CHECK-DF-NEXT: .p2align 2, 0x0
1141 ; CHECK-DF-NEXT: .LCPI26_0:
1142 ; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0
1144 ; CHECK-DF2-LABEL: brR0_olt:
1145 ; CHECK-DF2: # %bb.0: # %entry
1146 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI26_0]
1147 ; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1
1148 ; CHECK-DF2-NEXT: bf32 .LBB26_2
1149 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1150 ; CHECK-DF2-NEXT: movi16 a0, 1
1151 ; CHECK-DF2-NEXT: rts16
1152 ; CHECK-DF2-NEXT: .LBB26_2: # %label2
1153 ; CHECK-DF2-NEXT: movi16 a0, 0
1154 ; CHECK-DF2-NEXT: rts16
1155 ; CHECK-DF2-NEXT: .p2align 1
1156 ; CHECK-DF2-NEXT: # %bb.3:
1157 ; CHECK-DF2-NEXT: .p2align 2, 0x0
1158 ; CHECK-DF2-NEXT: .LCPI26_0:
1159 ; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0
1161 %fcmp = fcmp olt double %x, 0.0
1162 br i1 %fcmp, label %label1, label %label2
1170 define i32 @brRR_ole(double %x, double %y) {
1173 ; CHECK-DF-LABEL: brRR_ole:
1174 ; CHECK-DF: # %bb.0: # %entry
1175 ; CHECK-DF-NEXT: fcmphsd vr0, vr1
1176 ; CHECK-DF-NEXT: bf32 .LBB27_2
1177 ; CHECK-DF-NEXT: # %bb.1: # %label1
1178 ; CHECK-DF-NEXT: movi16 a0, 1
1179 ; CHECK-DF-NEXT: rts16
1180 ; CHECK-DF-NEXT: .LBB27_2: # %label2
1181 ; CHECK-DF-NEXT: movi16 a0, 0
1182 ; CHECK-DF-NEXT: rts16
1184 ; CHECK-DF2-LABEL: brRR_ole:
1185 ; CHECK-DF2: # %bb.0: # %entry
1186 ; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1
1187 ; CHECK-DF2-NEXT: bf32 .LBB27_2
1188 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1189 ; CHECK-DF2-NEXT: movi16 a0, 1
1190 ; CHECK-DF2-NEXT: rts16
1191 ; CHECK-DF2-NEXT: .LBB27_2: # %label2
1192 ; CHECK-DF2-NEXT: movi16 a0, 0
1193 ; CHECK-DF2-NEXT: rts16
1195 %fcmp = fcmp ole double %y, %x
1196 br i1 %fcmp, label %label1, label %label2
1203 define i32 @brRI_ole(double %x) {
1206 ; CHECK-DF-LABEL: brRI_ole:
1207 ; CHECK-DF: # %bb.0: # %entry
1208 ; CHECK-DF-NEXT: grs32 a0, .LCPI28_0
1209 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
1210 ; CHECK-DF-NEXT: fcmphsd vr1, vr0
1211 ; CHECK-DF-NEXT: bf32 .LBB28_2
1212 ; CHECK-DF-NEXT: # %bb.1: # %label1
1213 ; CHECK-DF-NEXT: movi16 a0, 1
1214 ; CHECK-DF-NEXT: rts16
1215 ; CHECK-DF-NEXT: .LBB28_2: # %label2
1216 ; CHECK-DF-NEXT: movi16 a0, 0
1217 ; CHECK-DF-NEXT: rts16
1218 ; CHECK-DF-NEXT: .p2align 1
1219 ; CHECK-DF-NEXT: # %bb.3:
1220 ; CHECK-DF-NEXT: .p2align 2, 0x0
1221 ; CHECK-DF-NEXT: .LCPI28_0:
1222 ; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10
1224 ; CHECK-DF2-LABEL: brRI_ole:
1225 ; CHECK-DF2: # %bb.0: # %entry
1226 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI28_0]
1227 ; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0
1228 ; CHECK-DF2-NEXT: bf32 .LBB28_2
1229 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1230 ; CHECK-DF2-NEXT: movi16 a0, 1
1231 ; CHECK-DF2-NEXT: rts16
1232 ; CHECK-DF2-NEXT: .LBB28_2: # %label2
1233 ; CHECK-DF2-NEXT: movi16 a0, 0
1234 ; CHECK-DF2-NEXT: rts16
1235 ; CHECK-DF2-NEXT: .p2align 1
1236 ; CHECK-DF2-NEXT: # %bb.3:
1237 ; CHECK-DF2-NEXT: .p2align 2, 0x0
1238 ; CHECK-DF2-NEXT: .LCPI28_0:
1239 ; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10
1241 %fcmp = fcmp ole double %x, 10.0
1242 br i1 %fcmp, label %label1, label %label2
1249 define i32 @brR0_ole(double %x) {
1252 ; CHECK-DF-LABEL: brR0_ole:
1253 ; CHECK-DF: # %bb.0: # %entry
1254 ; CHECK-DF-NEXT: grs32 a0, .LCPI29_0
1255 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
1256 ; CHECK-DF-NEXT: fcmphsd vr1, vr0
1257 ; CHECK-DF-NEXT: bf32 .LBB29_2
1258 ; CHECK-DF-NEXT: # %bb.1: # %label1
1259 ; CHECK-DF-NEXT: movi16 a0, 1
1260 ; CHECK-DF-NEXT: rts16
1261 ; CHECK-DF-NEXT: .LBB29_2: # %label2
1262 ; CHECK-DF-NEXT: movi16 a0, 0
1263 ; CHECK-DF-NEXT: rts16
1264 ; CHECK-DF-NEXT: .p2align 1
1265 ; CHECK-DF-NEXT: # %bb.3:
1266 ; CHECK-DF-NEXT: .p2align 2, 0x0
1267 ; CHECK-DF-NEXT: .LCPI29_0:
1268 ; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0
1270 ; CHECK-DF2-LABEL: brR0_ole:
1271 ; CHECK-DF2: # %bb.0: # %entry
1272 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI29_0]
1273 ; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0
1274 ; CHECK-DF2-NEXT: bf32 .LBB29_2
1275 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1276 ; CHECK-DF2-NEXT: movi16 a0, 1
1277 ; CHECK-DF2-NEXT: rts16
1278 ; CHECK-DF2-NEXT: .LBB29_2: # %label2
1279 ; CHECK-DF2-NEXT: movi16 a0, 0
1280 ; CHECK-DF2-NEXT: rts16
1281 ; CHECK-DF2-NEXT: .p2align 1
1282 ; CHECK-DF2-NEXT: # %bb.3:
1283 ; CHECK-DF2-NEXT: .p2align 2, 0x0
1284 ; CHECK-DF2-NEXT: .LCPI29_0:
1285 ; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0
1287 %fcmp = fcmp ole double %x, 0.0
1288 br i1 %fcmp, label %label1, label %label2
1296 define i32 @brRR_false(double %x, double %y) {
1299 ; CHECK-DF-LABEL: brRR_false:
1300 ; CHECK-DF: # %bb.0: # %entry
1301 ; CHECK-DF-NEXT: movi16 a0, 1
1302 ; CHECK-DF-NEXT: btsti16 a0, 0
1303 ; CHECK-DF-NEXT: bt32 .LBB30_2
1304 ; CHECK-DF-NEXT: # %bb.1: # %label1
1305 ; CHECK-DF-NEXT: rts16
1306 ; CHECK-DF-NEXT: .LBB30_2: # %label2
1307 ; CHECK-DF-NEXT: movi16 a0, 0
1308 ; CHECK-DF-NEXT: rts16
1310 ; CHECK-DF2-LABEL: brRR_false:
1311 ; CHECK-DF2: # %bb.0: # %entry
1312 ; CHECK-DF2-NEXT: movi16 a0, 1
1313 ; CHECK-DF2-NEXT: btsti16 a0, 0
1314 ; CHECK-DF2-NEXT: bt32 .LBB30_2
1315 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1316 ; CHECK-DF2-NEXT: rts16
1317 ; CHECK-DF2-NEXT: .LBB30_2: # %label2
1318 ; CHECK-DF2-NEXT: movi16 a0, 0
1319 ; CHECK-DF2-NEXT: rts16
1321 %fcmp = fcmp false double %y, %x
1322 br i1 %fcmp, label %label1, label %label2
1329 define i32 @brRI_false(double %x) {
1332 ; CHECK-DF-LABEL: brRI_false:
1333 ; CHECK-DF: # %bb.0: # %entry
1334 ; CHECK-DF-NEXT: movi16 a0, 1
1335 ; CHECK-DF-NEXT: btsti16 a0, 0
1336 ; CHECK-DF-NEXT: bt32 .LBB31_2
1337 ; CHECK-DF-NEXT: # %bb.1: # %label1
1338 ; CHECK-DF-NEXT: rts16
1339 ; CHECK-DF-NEXT: .LBB31_2: # %label2
1340 ; CHECK-DF-NEXT: movi16 a0, 0
1341 ; CHECK-DF-NEXT: rts16
1343 ; CHECK-DF2-LABEL: brRI_false:
1344 ; CHECK-DF2: # %bb.0: # %entry
1345 ; CHECK-DF2-NEXT: movi16 a0, 1
1346 ; CHECK-DF2-NEXT: btsti16 a0, 0
1347 ; CHECK-DF2-NEXT: bt32 .LBB31_2
1348 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1349 ; CHECK-DF2-NEXT: rts16
1350 ; CHECK-DF2-NEXT: .LBB31_2: # %label2
1351 ; CHECK-DF2-NEXT: movi16 a0, 0
1352 ; CHECK-DF2-NEXT: rts16
1354 %fcmp = fcmp false double %x, 10.0
1355 br i1 %fcmp, label %label1, label %label2
1362 define i32 @brR0_false(double %x) {
1365 ; CHECK-DF-LABEL: brR0_false:
1366 ; CHECK-DF: # %bb.0: # %entry
1367 ; CHECK-DF-NEXT: movi16 a0, 1
1368 ; CHECK-DF-NEXT: btsti16 a0, 0
1369 ; CHECK-DF-NEXT: bt32 .LBB32_2
1370 ; CHECK-DF-NEXT: # %bb.1: # %label1
1371 ; CHECK-DF-NEXT: rts16
1372 ; CHECK-DF-NEXT: .LBB32_2: # %label2
1373 ; CHECK-DF-NEXT: movi16 a0, 0
1374 ; CHECK-DF-NEXT: rts16
1376 ; CHECK-DF2-LABEL: brR0_false:
1377 ; CHECK-DF2: # %bb.0: # %entry
1378 ; CHECK-DF2-NEXT: movi16 a0, 1
1379 ; CHECK-DF2-NEXT: btsti16 a0, 0
1380 ; CHECK-DF2-NEXT: bt32 .LBB32_2
1381 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1382 ; CHECK-DF2-NEXT: rts16
1383 ; CHECK-DF2-NEXT: .LBB32_2: # %label2
1384 ; CHECK-DF2-NEXT: movi16 a0, 0
1385 ; CHECK-DF2-NEXT: rts16
1387 %fcmp = fcmp false double %x, 0.0
1388 br i1 %fcmp, label %label1, label %label2
1397 define i32 @brRR_ord(double %x, double %y) {
1400 ; CHECK-DF-LABEL: brRR_ord:
1401 ; CHECK-DF: # %bb.0: # %entry
1402 ; CHECK-DF-NEXT: fcmpuod vr1, vr0
1403 ; CHECK-DF-NEXT: bt32 .LBB33_2
1404 ; CHECK-DF-NEXT: # %bb.1: # %label1
1405 ; CHECK-DF-NEXT: movi16 a0, 1
1406 ; CHECK-DF-NEXT: rts16
1407 ; CHECK-DF-NEXT: .LBB33_2: # %label2
1408 ; CHECK-DF-NEXT: movi16 a0, 0
1409 ; CHECK-DF-NEXT: rts16
1411 ; CHECK-DF2-LABEL: brRR_ord:
1412 ; CHECK-DF2: # %bb.0: # %entry
1413 ; CHECK-DF2-NEXT: fcmpuo.64 vr1, vr0
1414 ; CHECK-DF2-NEXT: bt32 .LBB33_2
1415 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1416 ; CHECK-DF2-NEXT: movi16 a0, 1
1417 ; CHECK-DF2-NEXT: rts16
1418 ; CHECK-DF2-NEXT: .LBB33_2: # %label2
1419 ; CHECK-DF2-NEXT: movi16 a0, 0
1420 ; CHECK-DF2-NEXT: rts16
1422 %fcmp = fcmp ord double %y, %x
1423 br i1 %fcmp, label %label1, label %label2
1430 define i32 @brRI_ord(double %x) {
1433 ; CHECK-DF-LABEL: brRI_ord:
1434 ; CHECK-DF: # %bb.0: # %entry
1435 ; CHECK-DF-NEXT: fcmpuod vr0, vr0
1436 ; CHECK-DF-NEXT: bt32 .LBB34_2
1437 ; CHECK-DF-NEXT: # %bb.1: # %label1
1438 ; CHECK-DF-NEXT: movi16 a0, 1
1439 ; CHECK-DF-NEXT: rts16
1440 ; CHECK-DF-NEXT: .LBB34_2: # %label2
1441 ; CHECK-DF-NEXT: movi16 a0, 0
1442 ; CHECK-DF-NEXT: rts16
1444 ; CHECK-DF2-LABEL: brRI_ord:
1445 ; CHECK-DF2: # %bb.0: # %entry
1446 ; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr0
1447 ; CHECK-DF2-NEXT: bt32 .LBB34_2
1448 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1449 ; CHECK-DF2-NEXT: movi16 a0, 1
1450 ; CHECK-DF2-NEXT: rts16
1451 ; CHECK-DF2-NEXT: .LBB34_2: # %label2
1452 ; CHECK-DF2-NEXT: movi16 a0, 0
1453 ; CHECK-DF2-NEXT: rts16
1455 %fcmp = fcmp ord double %x, 10.0
1456 br i1 %fcmp, label %label1, label %label2
1463 define i32 @brR0_ord(double %x) {
1466 ; CHECK-DF-LABEL: brR0_ord:
1467 ; CHECK-DF: # %bb.0: # %entry
1468 ; CHECK-DF-NEXT: fcmpuod vr0, vr0
1469 ; CHECK-DF-NEXT: bt32 .LBB35_2
1470 ; CHECK-DF-NEXT: # %bb.1: # %label1
1471 ; CHECK-DF-NEXT: movi16 a0, 1
1472 ; CHECK-DF-NEXT: rts16
1473 ; CHECK-DF-NEXT: .LBB35_2: # %label2
1474 ; CHECK-DF-NEXT: movi16 a0, 0
1475 ; CHECK-DF-NEXT: rts16
1477 ; CHECK-DF2-LABEL: brR0_ord:
1478 ; CHECK-DF2: # %bb.0: # %entry
1479 ; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr0
1480 ; CHECK-DF2-NEXT: bt32 .LBB35_2
1481 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1482 ; CHECK-DF2-NEXT: movi16 a0, 1
1483 ; CHECK-DF2-NEXT: rts16
1484 ; CHECK-DF2-NEXT: .LBB35_2: # %label2
1485 ; CHECK-DF2-NEXT: movi16 a0, 0
1486 ; CHECK-DF2-NEXT: rts16
1488 %fcmp = fcmp ord double %x, 0.0
1489 br i1 %fcmp, label %label1, label %label2
1498 define i32 @brRR_ueq(double %x, double %y) {
1501 ; CHECK-DF-LABEL: brRR_ueq:
1502 ; CHECK-DF: # %bb.0: # %entry
1503 ; CHECK-DF-NEXT: fcmpuod vr1, vr0
1504 ; CHECK-DF-NEXT: mvcv16 a0
1505 ; CHECK-DF-NEXT: fcmpned vr1, vr0
1506 ; CHECK-DF-NEXT: mvc32 a1
1507 ; CHECK-DF-NEXT: and16 a0, a1
1508 ; CHECK-DF-NEXT: btsti16 a0, 0
1509 ; CHECK-DF-NEXT: bf32 .LBB36_2
1510 ; CHECK-DF-NEXT: # %bb.1: # %label2
1511 ; CHECK-DF-NEXT: movi16 a0, 0
1512 ; CHECK-DF-NEXT: rts16
1513 ; CHECK-DF-NEXT: .LBB36_2: # %label1
1514 ; CHECK-DF-NEXT: movi16 a0, 1
1515 ; CHECK-DF-NEXT: rts16
1517 ; CHECK-DF2-LABEL: brRR_ueq:
1518 ; CHECK-DF2: # %bb.0: # %entry
1519 ; CHECK-DF2-NEXT: fcmpuo.64 vr1, vr0
1520 ; CHECK-DF2-NEXT: mvcv16 a0
1521 ; CHECK-DF2-NEXT: fcmpne.64 vr1, vr0
1522 ; CHECK-DF2-NEXT: mvc32 a1
1523 ; CHECK-DF2-NEXT: and16 a0, a1
1524 ; CHECK-DF2-NEXT: btsti16 a0, 0
1525 ; CHECK-DF2-NEXT: bf32 .LBB36_2
1526 ; CHECK-DF2-NEXT: # %bb.1: # %label2
1527 ; CHECK-DF2-NEXT: movi16 a0, 0
1528 ; CHECK-DF2-NEXT: rts16
1529 ; CHECK-DF2-NEXT: .LBB36_2: # %label1
1530 ; CHECK-DF2-NEXT: movi16 a0, 1
1531 ; CHECK-DF2-NEXT: rts16
1533 %fcmp = fcmp ueq double %y, %x
1534 br i1 %fcmp, label %label1, label %label2
1541 define i32 @brRI_ueq(double %x) {
1544 ; CHECK-DF-LABEL: brRI_ueq:
1545 ; CHECK-DF: # %bb.0: # %entry
1546 ; CHECK-DF-NEXT: grs32 a0, .LCPI37_0
1547 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
1548 ; CHECK-DF-NEXT: fcmpuod vr0, vr1
1549 ; CHECK-DF-NEXT: mvcv16 a0
1550 ; CHECK-DF-NEXT: fcmpned vr0, vr1
1551 ; CHECK-DF-NEXT: mvc32 a1
1552 ; CHECK-DF-NEXT: and16 a0, a1
1553 ; CHECK-DF-NEXT: btsti16 a0, 0
1554 ; CHECK-DF-NEXT: bf32 .LBB37_2
1555 ; CHECK-DF-NEXT: # %bb.1: # %label2
1556 ; CHECK-DF-NEXT: movi16 a0, 0
1557 ; CHECK-DF-NEXT: rts16
1558 ; CHECK-DF-NEXT: .LBB37_2: # %label1
1559 ; CHECK-DF-NEXT: movi16 a0, 1
1560 ; CHECK-DF-NEXT: rts16
1561 ; CHECK-DF-NEXT: .p2align 1
1562 ; CHECK-DF-NEXT: # %bb.3:
1563 ; CHECK-DF-NEXT: .p2align 2, 0x0
1564 ; CHECK-DF-NEXT: .LCPI37_0:
1565 ; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10
1567 ; CHECK-DF2-LABEL: brRI_ueq:
1568 ; CHECK-DF2: # %bb.0: # %entry
1569 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI37_0]
1570 ; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr1
1571 ; CHECK-DF2-NEXT: mvcv16 a0
1572 ; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1
1573 ; CHECK-DF2-NEXT: mvc32 a1
1574 ; CHECK-DF2-NEXT: and16 a0, a1
1575 ; CHECK-DF2-NEXT: btsti16 a0, 0
1576 ; CHECK-DF2-NEXT: bf32 .LBB37_2
1577 ; CHECK-DF2-NEXT: # %bb.1: # %label2
1578 ; CHECK-DF2-NEXT: movi16 a0, 0
1579 ; CHECK-DF2-NEXT: rts16
1580 ; CHECK-DF2-NEXT: .LBB37_2: # %label1
1581 ; CHECK-DF2-NEXT: movi16 a0, 1
1582 ; CHECK-DF2-NEXT: rts16
1583 ; CHECK-DF2-NEXT: .p2align 1
1584 ; CHECK-DF2-NEXT: # %bb.3:
1585 ; CHECK-DF2-NEXT: .p2align 2, 0x0
1586 ; CHECK-DF2-NEXT: .LCPI37_0:
1587 ; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10
1589 %fcmp = fcmp ueq double %x, 10.0
1590 br i1 %fcmp, label %label1, label %label2
1597 define i32 @brR0_ueq(double %x) {
1600 ; CHECK-DF-LABEL: brR0_ueq:
1601 ; CHECK-DF: # %bb.0: # %entry
1602 ; CHECK-DF-NEXT: grs32 a0, .LCPI38_0
1603 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
1604 ; CHECK-DF-NEXT: fcmpuod vr0, vr1
1605 ; CHECK-DF-NEXT: mvcv16 a0
1606 ; CHECK-DF-NEXT: fcmpned vr0, vr1
1607 ; CHECK-DF-NEXT: mvc32 a1
1608 ; CHECK-DF-NEXT: and16 a0, a1
1609 ; CHECK-DF-NEXT: btsti16 a0, 0
1610 ; CHECK-DF-NEXT: bf32 .LBB38_2
1611 ; CHECK-DF-NEXT: # %bb.1: # %label2
1612 ; CHECK-DF-NEXT: movi16 a0, 0
1613 ; CHECK-DF-NEXT: rts16
1614 ; CHECK-DF-NEXT: .LBB38_2: # %label1
1615 ; CHECK-DF-NEXT: movi16 a0, 1
1616 ; CHECK-DF-NEXT: rts16
1617 ; CHECK-DF-NEXT: .p2align 1
1618 ; CHECK-DF-NEXT: # %bb.3:
1619 ; CHECK-DF-NEXT: .p2align 2, 0x0
1620 ; CHECK-DF-NEXT: .LCPI38_0:
1621 ; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0
1623 ; CHECK-DF2-LABEL: brR0_ueq:
1624 ; CHECK-DF2: # %bb.0: # %entry
1625 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI38_0]
1626 ; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr1
1627 ; CHECK-DF2-NEXT: mvcv16 a0
1628 ; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1
1629 ; CHECK-DF2-NEXT: mvc32 a1
1630 ; CHECK-DF2-NEXT: and16 a0, a1
1631 ; CHECK-DF2-NEXT: btsti16 a0, 0
1632 ; CHECK-DF2-NEXT: bf32 .LBB38_2
1633 ; CHECK-DF2-NEXT: # %bb.1: # %label2
1634 ; CHECK-DF2-NEXT: movi16 a0, 0
1635 ; CHECK-DF2-NEXT: rts16
1636 ; CHECK-DF2-NEXT: .LBB38_2: # %label1
1637 ; CHECK-DF2-NEXT: movi16 a0, 1
1638 ; CHECK-DF2-NEXT: rts16
1639 ; CHECK-DF2-NEXT: .p2align 1
1640 ; CHECK-DF2-NEXT: # %bb.3:
1641 ; CHECK-DF2-NEXT: .p2align 2, 0x0
1642 ; CHECK-DF2-NEXT: .LCPI38_0:
1643 ; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0
1645 %fcmp = fcmp ueq double %x, 0.0
1646 br i1 %fcmp, label %label1, label %label2
1654 define i32 @brRR_une(double %x, double %y) {
1657 ; CHECK-DF-LABEL: brRR_une:
1658 ; CHECK-DF: # %bb.0: # %entry
1659 ; CHECK-DF-NEXT: fcmpned vr1, vr0
1660 ; CHECK-DF-NEXT: bf32 .LBB39_2
1661 ; CHECK-DF-NEXT: # %bb.1: # %label1
1662 ; CHECK-DF-NEXT: movi16 a0, 1
1663 ; CHECK-DF-NEXT: rts16
1664 ; CHECK-DF-NEXT: .LBB39_2: # %label2
1665 ; CHECK-DF-NEXT: movi16 a0, 0
1666 ; CHECK-DF-NEXT: rts16
1668 ; CHECK-DF2-LABEL: brRR_une:
1669 ; CHECK-DF2: # %bb.0: # %entry
1670 ; CHECK-DF2-NEXT: fcmpne.64 vr1, vr0
1671 ; CHECK-DF2-NEXT: bf32 .LBB39_2
1672 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1673 ; CHECK-DF2-NEXT: movi16 a0, 1
1674 ; CHECK-DF2-NEXT: rts16
1675 ; CHECK-DF2-NEXT: .LBB39_2: # %label2
1676 ; CHECK-DF2-NEXT: movi16 a0, 0
1677 ; CHECK-DF2-NEXT: rts16
1679 %fcmp = fcmp une double %y, %x
1680 br i1 %fcmp, label %label1, label %label2
1687 define i32 @brRI_une(double %x) {
1690 ; CHECK-DF-LABEL: brRI_une:
1691 ; CHECK-DF: # %bb.0: # %entry
1692 ; CHECK-DF-NEXT: grs32 a0, .LCPI40_0
1693 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
1694 ; CHECK-DF-NEXT: fcmpned vr0, vr1
1695 ; CHECK-DF-NEXT: bf32 .LBB40_2
1696 ; CHECK-DF-NEXT: # %bb.1: # %label1
1697 ; CHECK-DF-NEXT: movi16 a0, 1
1698 ; CHECK-DF-NEXT: rts16
1699 ; CHECK-DF-NEXT: .LBB40_2: # %label2
1700 ; CHECK-DF-NEXT: movi16 a0, 0
1701 ; CHECK-DF-NEXT: rts16
1702 ; CHECK-DF-NEXT: .p2align 1
1703 ; CHECK-DF-NEXT: # %bb.3:
1704 ; CHECK-DF-NEXT: .p2align 2, 0x0
1705 ; CHECK-DF-NEXT: .LCPI40_0:
1706 ; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10
1708 ; CHECK-DF2-LABEL: brRI_une:
1709 ; CHECK-DF2: # %bb.0: # %entry
1710 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI40_0]
1711 ; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1
1712 ; CHECK-DF2-NEXT: bf32 .LBB40_2
1713 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1714 ; CHECK-DF2-NEXT: movi16 a0, 1
1715 ; CHECK-DF2-NEXT: rts16
1716 ; CHECK-DF2-NEXT: .LBB40_2: # %label2
1717 ; CHECK-DF2-NEXT: movi16 a0, 0
1718 ; CHECK-DF2-NEXT: rts16
1719 ; CHECK-DF2-NEXT: .p2align 1
1720 ; CHECK-DF2-NEXT: # %bb.3:
1721 ; CHECK-DF2-NEXT: .p2align 2, 0x0
1722 ; CHECK-DF2-NEXT: .LCPI40_0:
1723 ; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10
1725 %fcmp = fcmp une double %x, 10.0
1726 br i1 %fcmp, label %label1, label %label2
1733 define i32 @brR0_une(double %x) {
1736 ; CHECK-DF-LABEL: brR0_une:
1737 ; CHECK-DF: # %bb.0: # %entry
1738 ; CHECK-DF-NEXT: grs32 a0, .LCPI41_0
1739 ; CHECK-DF-NEXT: fldd vr1, (a0, 0)
1740 ; CHECK-DF-NEXT: fcmpned vr0, vr1
1741 ; CHECK-DF-NEXT: bf32 .LBB41_2
1742 ; CHECK-DF-NEXT: # %bb.1: # %label1
1743 ; CHECK-DF-NEXT: movi16 a0, 1
1744 ; CHECK-DF-NEXT: rts16
1745 ; CHECK-DF-NEXT: .LBB41_2: # %label2
1746 ; CHECK-DF-NEXT: movi16 a0, 0
1747 ; CHECK-DF-NEXT: rts16
1748 ; CHECK-DF-NEXT: .p2align 1
1749 ; CHECK-DF-NEXT: # %bb.3:
1750 ; CHECK-DF-NEXT: .p2align 2, 0x0
1751 ; CHECK-DF-NEXT: .LCPI41_0:
1752 ; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0
1754 ; CHECK-DF2-LABEL: brR0_une:
1755 ; CHECK-DF2: # %bb.0: # %entry
1756 ; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI41_0]
1757 ; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1
1758 ; CHECK-DF2-NEXT: bf32 .LBB41_2
1759 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1760 ; CHECK-DF2-NEXT: movi16 a0, 1
1761 ; CHECK-DF2-NEXT: rts16
1762 ; CHECK-DF2-NEXT: .LBB41_2: # %label2
1763 ; CHECK-DF2-NEXT: movi16 a0, 0
1764 ; CHECK-DF2-NEXT: rts16
1765 ; CHECK-DF2-NEXT: .p2align 1
1766 ; CHECK-DF2-NEXT: # %bb.3:
1767 ; CHECK-DF2-NEXT: .p2align 2, 0x0
1768 ; CHECK-DF2-NEXT: .LCPI41_0:
1769 ; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0
1771 %fcmp = fcmp une double %x, 0.0
1772 br i1 %fcmp, label %label1, label %label2
1780 define i32 @brRR_uno(double %x, double %y) {
1783 ; CHECK-DF-LABEL: brRR_uno:
1784 ; CHECK-DF: # %bb.0: # %entry
1785 ; CHECK-DF-NEXT: fcmpuod vr1, vr0
1786 ; CHECK-DF-NEXT: bt32 .LBB42_2
1787 ; CHECK-DF-NEXT: # %bb.1: # %label2
1788 ; CHECK-DF-NEXT: movi16 a0, 0
1789 ; CHECK-DF-NEXT: rts16
1790 ; CHECK-DF-NEXT: .LBB42_2: # %label1
1791 ; CHECK-DF-NEXT: movi16 a0, 1
1792 ; CHECK-DF-NEXT: rts16
1794 ; CHECK-DF2-LABEL: brRR_uno:
1795 ; CHECK-DF2: # %bb.0: # %entry
1796 ; CHECK-DF2-NEXT: fcmpuo.64 vr1, vr0
1797 ; CHECK-DF2-NEXT: bt32 .LBB42_2
1798 ; CHECK-DF2-NEXT: # %bb.1: # %label2
1799 ; CHECK-DF2-NEXT: movi16 a0, 0
1800 ; CHECK-DF2-NEXT: rts16
1801 ; CHECK-DF2-NEXT: .LBB42_2: # %label1
1802 ; CHECK-DF2-NEXT: movi16 a0, 1
1803 ; CHECK-DF2-NEXT: rts16
1805 %fcmp = fcmp uno double %y, %x
1806 br i1 %fcmp, label %label1, label %label2
1813 define i32 @brRI_uno(double %x) {
1816 ; CHECK-DF-LABEL: brRI_uno:
1817 ; CHECK-DF: # %bb.0: # %entry
1818 ; CHECK-DF-NEXT: fcmpuod vr0, vr0
1819 ; CHECK-DF-NEXT: bt32 .LBB43_2
1820 ; CHECK-DF-NEXT: # %bb.1: # %label2
1821 ; CHECK-DF-NEXT: movi16 a0, 0
1822 ; CHECK-DF-NEXT: rts16
1823 ; CHECK-DF-NEXT: .LBB43_2: # %label1
1824 ; CHECK-DF-NEXT: movi16 a0, 1
1825 ; CHECK-DF-NEXT: rts16
1827 ; CHECK-DF2-LABEL: brRI_uno:
1828 ; CHECK-DF2: # %bb.0: # %entry
1829 ; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr0
1830 ; CHECK-DF2-NEXT: bt32 .LBB43_2
1831 ; CHECK-DF2-NEXT: # %bb.1: # %label2
1832 ; CHECK-DF2-NEXT: movi16 a0, 0
1833 ; CHECK-DF2-NEXT: rts16
1834 ; CHECK-DF2-NEXT: .LBB43_2: # %label1
1835 ; CHECK-DF2-NEXT: movi16 a0, 1
1836 ; CHECK-DF2-NEXT: rts16
1838 %fcmp = fcmp uno double %x, 10.0
1839 br i1 %fcmp, label %label1, label %label2
1846 define i32 @brR0_uno(double %x) {
1849 ; CHECK-DF-LABEL: brR0_uno:
1850 ; CHECK-DF: # %bb.0: # %entry
1851 ; CHECK-DF-NEXT: fcmpuod vr0, vr0
1852 ; CHECK-DF-NEXT: bt32 .LBB44_2
1853 ; CHECK-DF-NEXT: # %bb.1: # %label2
1854 ; CHECK-DF-NEXT: movi16 a0, 0
1855 ; CHECK-DF-NEXT: rts16
1856 ; CHECK-DF-NEXT: .LBB44_2: # %label1
1857 ; CHECK-DF-NEXT: movi16 a0, 1
1858 ; CHECK-DF-NEXT: rts16
1860 ; CHECK-DF2-LABEL: brR0_uno:
1861 ; CHECK-DF2: # %bb.0: # %entry
1862 ; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr0
1863 ; CHECK-DF2-NEXT: bt32 .LBB44_2
1864 ; CHECK-DF2-NEXT: # %bb.1: # %label2
1865 ; CHECK-DF2-NEXT: movi16 a0, 0
1866 ; CHECK-DF2-NEXT: rts16
1867 ; CHECK-DF2-NEXT: .LBB44_2: # %label1
1868 ; CHECK-DF2-NEXT: movi16 a0, 1
1869 ; CHECK-DF2-NEXT: rts16
1871 %fcmp = fcmp uno double %x, 0.0
1872 br i1 %fcmp, label %label1, label %label2
1880 define i32 @brRR_true(double %x, double %y) {
1883 ; CHECK-DF-LABEL: brRR_true:
1884 ; CHECK-DF: # %bb.0: # %entry
1885 ; CHECK-DF-NEXT: movi16 a0, 0
1886 ; CHECK-DF-NEXT: btsti16 a0, 0
1887 ; CHECK-DF-NEXT: bt32 .LBB45_2
1888 ; CHECK-DF-NEXT: # %bb.1: # %label1
1889 ; CHECK-DF-NEXT: movi16 a0, 1
1890 ; CHECK-DF-NEXT: .LBB45_2: # %label2
1891 ; CHECK-DF-NEXT: rts16
1893 ; CHECK-DF2-LABEL: brRR_true:
1894 ; CHECK-DF2: # %bb.0: # %entry
1895 ; CHECK-DF2-NEXT: movi16 a0, 0
1896 ; CHECK-DF2-NEXT: btsti16 a0, 0
1897 ; CHECK-DF2-NEXT: bt32 .LBB45_2
1898 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1899 ; CHECK-DF2-NEXT: movi16 a0, 1
1900 ; CHECK-DF2-NEXT: .LBB45_2: # %label2
1901 ; CHECK-DF2-NEXT: rts16
1903 %fcmp = fcmp true double %y, %x
1904 br i1 %fcmp, label %label1, label %label2
1911 define i32 @brRI_true(double %x) {
1914 ; CHECK-DF-LABEL: brRI_true:
1915 ; CHECK-DF: # %bb.0: # %entry
1916 ; CHECK-DF-NEXT: movi16 a0, 0
1917 ; CHECK-DF-NEXT: btsti16 a0, 0
1918 ; CHECK-DF-NEXT: bt32 .LBB46_2
1919 ; CHECK-DF-NEXT: # %bb.1: # %label1
1920 ; CHECK-DF-NEXT: movi16 a0, 1
1921 ; CHECK-DF-NEXT: .LBB46_2: # %label2
1922 ; CHECK-DF-NEXT: rts16
1924 ; CHECK-DF2-LABEL: brRI_true:
1925 ; CHECK-DF2: # %bb.0: # %entry
1926 ; CHECK-DF2-NEXT: movi16 a0, 0
1927 ; CHECK-DF2-NEXT: btsti16 a0, 0
1928 ; CHECK-DF2-NEXT: bt32 .LBB46_2
1929 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1930 ; CHECK-DF2-NEXT: movi16 a0, 1
1931 ; CHECK-DF2-NEXT: .LBB46_2: # %label2
1932 ; CHECK-DF2-NEXT: rts16
1934 %fcmp = fcmp true double %x, 10.0
1935 br i1 %fcmp, label %label1, label %label2
1942 define i32 @brR0_true(double %x) {
1945 ; CHECK-DF-LABEL: brR0_true:
1946 ; CHECK-DF: # %bb.0: # %entry
1947 ; CHECK-DF-NEXT: movi16 a0, 0
1948 ; CHECK-DF-NEXT: btsti16 a0, 0
1949 ; CHECK-DF-NEXT: bt32 .LBB47_2
1950 ; CHECK-DF-NEXT: # %bb.1: # %label1
1951 ; CHECK-DF-NEXT: movi16 a0, 1
1952 ; CHECK-DF-NEXT: .LBB47_2: # %label2
1953 ; CHECK-DF-NEXT: rts16
1955 ; CHECK-DF2-LABEL: brR0_true:
1956 ; CHECK-DF2: # %bb.0: # %entry
1957 ; CHECK-DF2-NEXT: movi16 a0, 0
1958 ; CHECK-DF2-NEXT: btsti16 a0, 0
1959 ; CHECK-DF2-NEXT: bt32 .LBB47_2
1960 ; CHECK-DF2-NEXT: # %bb.1: # %label1
1961 ; CHECK-DF2-NEXT: movi16 a0, 1
1962 ; CHECK-DF2-NEXT: .LBB47_2: # %label2
1963 ; CHECK-DF2-NEXT: rts16
1965 %fcmp = fcmp true double %x, 0.0
1966 br i1 %fcmp, label %label1, label %label2