xref: /llvm-project/llvm/test/CodeGen/CSKY/fpu/br-d.ll (revision 7ca6b7693433955ab28cbc5225bcb16a19fd53f4)
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
4
5;OEQ
6define i32 @brRR_oeq(double %x, double %y) {
7;
8;
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
19;
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
30entry:
31  %fcmp = fcmp oeq double %y, %x
32  br i1 %fcmp, label %label1, label %label2
33label1:
34  ret i32 1
35label2:
36  ret i32 0
37}
38
39define i32 @brRI_oeq(double %x) {
40;
41;
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
59;
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
76entry:
77  %fcmp = fcmp oeq double %x, 10.0
78  br i1 %fcmp, label %label1, label %label2
79label1:
80  ret i32 1
81label2:
82  ret i32 0
83}
84
85define i32 @brR0_oeq(double %x) {
86;
87;
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
105;
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
122entry:
123  %fcmp = fcmp oeq double %x, 0.0
124  br i1 %fcmp, label %label1, label %label2
125label1:
126  ret i32 1
127label2:
128  ret i32 0
129}
130
131;NE
132define i32 @brRR_one(double %x, double %y) {
133;
134;
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
150;
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
166entry:
167  %fcmp = fcmp one double %y, %x
168  br i1 %fcmp, label %label1, label %label2
169label1:
170  ret i32 1
171label2:
172  ret i32 0
173}
174
175define i32 @brRI_one(double %x) {
176;
177;
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
200;
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
222entry:
223  %fcmp = fcmp one double %x, 10.0
224  br i1 %fcmp, label %label1, label %label2
225label1:
226  ret i32 1
227label2:
228  ret i32 0
229}
230
231define i32 @brR0_one(double %x) {
232;
233;
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
256;
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
278entry:
279  %fcmp = fcmp one double %x, 0.0
280  br i1 %fcmp, label %label1, label %label2
281label1:
282  ret i32 1
283label2:
284  ret i32 0
285}
286
287;UGT
288define i32 @brRR_ugt(double %x, double %y) {
289;
290;
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
301;
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
312entry:
313  %fcmp = fcmp ugt double %y, %x
314  br i1 %fcmp, label %label1, label %label2
315label1:
316  ret i32 1
317label2:
318  ret i32 0
319}
320
321define i32 @brRI_ugt(double %x) {
322;
323;
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
341;
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
358entry:
359  %fcmp = fcmp ugt double %x, 10.0
360  br i1 %fcmp, label %label1, label %label2
361label1:
362  ret i32 1
363label2:
364  ret i32 0
365}
366
367define i32 @brR0_ugt(double %x) {
368;
369;
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
387;
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
404entry:
405  %fcmp = fcmp ugt double %x, 0.0
406  br i1 %fcmp, label %label1, label %label2
407label1:
408  ret i32 1
409label2:
410  ret i32 0
411}
412
413;UGE
414define i32 @brRR_uge(double %x, double %y) {
415;
416;
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
427;
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
438entry:
439  %fcmp = fcmp uge double %y, %x
440  br i1 %fcmp, label %label1, label %label2
441label1:
442  ret i32 1
443label2:
444  ret i32 0
445}
446
447define i32 @brRI_uge(double %x) {
448;
449;
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
467;
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
484entry:
485  %fcmp = fcmp uge double %x, 10.0
486  br i1 %fcmp, label %label1, label %label2
487label1:
488  ret i32 1
489label2:
490  ret i32 0
491}
492
493define i32 @brR0_uge(double %x) {
494;
495;
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
513;
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
530entry:
531  %fcmp = fcmp uge double %x, 0.0
532  br i1 %fcmp, label %label1, label %label2
533label1:
534  ret i32 1
535label2:
536  ret i32 0
537}
538
539;ULT
540define i32 @brRR_ult(double %x, double %y) {
541;
542;
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
553;
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
564entry:
565  %fcmp = fcmp ult double %y, %x
566  br i1 %fcmp, label %label1, label %label2
567label1:
568  ret i32 1
569label2:
570  ret i32 0
571}
572
573define i32 @brRI_ult(double %x) {
574;
575;
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
593;
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
610entry:
611  %fcmp = fcmp ult double %x, 10.0
612  br i1 %fcmp, label %label1, label %label2
613label1:
614  ret i32 1
615label2:
616  ret i32 0
617}
618
619define i32 @brR0_ult(double %x) {
620;
621;
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
639;
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
656entry:
657  %fcmp = fcmp ult double %x, 0.0
658  br i1 %fcmp, label %label1, label %label2
659label1:
660  ret i32 1
661label2:
662  ret i32 0
663}
664
665;ULE
666define i32 @brRR_ule(double %x, double %y) {
667;
668;
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
679;
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
690entry:
691  %fcmp = fcmp ule double %y, %x
692  br i1 %fcmp, label %label1, label %label2
693label1:
694  ret i32 1
695label2:
696  ret i32 0
697}
698
699define i32 @brRI_ule(double %x) {
700;
701;
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
719;
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
736entry:
737  %fcmp = fcmp ule double %x, 10.0
738  br i1 %fcmp, label %label1, label %label2
739label1:
740  ret i32 1
741label2:
742  ret i32 0
743}
744
745define i32 @brR0_ule(double %x) {
746;
747;
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
765;
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
782entry:
783  %fcmp = fcmp ule double %x, 0.0
784  br i1 %fcmp, label %label1, label %label2
785label1:
786  ret i32 1
787label2:
788  ret i32 0
789}
790
791;SGT
792define i32 @brRR_ogt(double %x, double %y) {
793;
794;
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
805;
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
816entry:
817  %fcmp = fcmp ogt double %y, %x
818  br i1 %fcmp, label %label1, label %label2
819label1:
820  ret i32 1
821label2:
822  ret i32 0
823}
824
825define i32 @brRI_ogt(double %x) {
826;
827;
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
845;
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
862entry:
863  %fcmp = fcmp ogt double %x, 10.0
864  br i1 %fcmp, label %label1, label %label2
865label1:
866  ret i32 1
867label2:
868  ret i32 0
869}
870
871define i32 @brR0_ogt(double %x) {
872;
873;
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
891;
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
908entry:
909  %fcmp = fcmp ogt double %x, 0.0
910  br i1 %fcmp, label %label1, label %label2
911label1:
912  ret i32 1
913label2:
914  ret i32 0
915}
916
917;SGE
918define i32 @brRR_oge(double %x, double %y) {
919;
920;
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
931;
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
942entry:
943  %fcmp = fcmp oge double %y, %x
944  br i1 %fcmp, label %label1, label %label2
945label1:
946  ret i32 1
947label2:
948  ret i32 0
949}
950
951define i32 @brRI_oge(double %x) {
952;
953;
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
971;
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
988entry:
989  %fcmp = fcmp oge double %x, 10.0
990  br i1 %fcmp, label %label1, label %label2
991label1:
992  ret i32 1
993label2:
994  ret i32 0
995}
996
997define i32 @brR0_oge(double %x) {
998;
999;
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
1017;
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
1034entry:
1035  %fcmp = fcmp oge double %x, 0.0
1036  br i1 %fcmp, label %label1, label %label2
1037label1:
1038  ret i32 1
1039label2:
1040  ret i32 0
1041}
1042
1043;SLT
1044define i32 @brRR_olt(double %x, double %y) {
1045;
1046;
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
1057;
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
1068entry:
1069  %fcmp = fcmp olt double %y, %x
1070  br i1 %fcmp, label %label1, label %label2
1071label1:
1072  ret i32 1
1073label2:
1074  ret i32 0
1075}
1076
1077define i32 @brRI_olt(double %x) {
1078;
1079;
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
1097;
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
1114entry:
1115  %fcmp = fcmp olt double %x, 10.0
1116  br i1 %fcmp, label %label1, label %label2
1117label1:
1118  ret i32 1
1119label2:
1120  ret i32 0
1121}
1122
1123define i32 @brR0_olt(double %x) {
1124;
1125;
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
1143;
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
1160entry:
1161  %fcmp = fcmp olt double %x, 0.0
1162  br i1 %fcmp, label %label1, label %label2
1163label1:
1164  ret i32 1
1165label2:
1166  ret i32 0
1167}
1168
1169;SLE
1170define i32 @brRR_ole(double %x, double %y) {
1171;
1172;
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
1183;
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
1194entry:
1195  %fcmp = fcmp ole double %y, %x
1196  br i1 %fcmp, label %label1, label %label2
1197label1:
1198  ret i32 1
1199label2:
1200  ret i32 0
1201}
1202
1203define i32 @brRI_ole(double %x) {
1204;
1205;
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
1223;
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
1240entry:
1241  %fcmp = fcmp ole double %x, 10.0
1242  br i1 %fcmp, label %label1, label %label2
1243label1:
1244  ret i32 1
1245label2:
1246  ret i32 0
1247}
1248
1249define i32 @brR0_ole(double %x) {
1250;
1251;
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
1269;
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
1286entry:
1287  %fcmp = fcmp ole double %x, 0.0
1288  br i1 %fcmp, label %label1, label %label2
1289label1:
1290  ret i32 1
1291label2:
1292  ret i32 0
1293}
1294
1295;False
1296define i32 @brRR_false(double %x, double %y) {
1297;
1298;
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
1309;
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
1320entry:
1321  %fcmp = fcmp false double %y, %x
1322  br i1 %fcmp, label %label1, label %label2
1323label1:
1324  ret i32 1
1325label2:
1326  ret i32 0
1327}
1328
1329define i32 @brRI_false(double %x) {
1330;
1331;
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
1342;
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
1353entry:
1354  %fcmp = fcmp false double %x, 10.0
1355  br i1 %fcmp, label %label1, label %label2
1356label1:
1357  ret i32 1
1358label2:
1359  ret i32 0
1360}
1361
1362define i32 @brR0_false(double %x) {
1363;
1364;
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
1375;
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
1386entry:
1387  %fcmp = fcmp false double %x, 0.0
1388  br i1 %fcmp, label %label1, label %label2
1389label1:
1390  ret i32 1
1391label2:
1392  ret i32 0
1393}
1394
1395
1396;ORD
1397define i32 @brRR_ord(double %x, double %y) {
1398;
1399;
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
1410;
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
1421entry:
1422  %fcmp = fcmp ord double %y, %x
1423  br i1 %fcmp, label %label1, label %label2
1424label1:
1425  ret i32 1
1426label2:
1427  ret i32 0
1428}
1429
1430define i32 @brRI_ord(double %x) {
1431;
1432;
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
1443;
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
1454entry:
1455  %fcmp = fcmp ord double %x, 10.0
1456  br i1 %fcmp, label %label1, label %label2
1457label1:
1458  ret i32 1
1459label2:
1460  ret i32 0
1461}
1462
1463define i32 @brR0_ord(double %x) {
1464;
1465;
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
1476;
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
1487entry:
1488  %fcmp = fcmp ord double %x, 0.0
1489  br i1 %fcmp, label %label1, label %label2
1490label1:
1491  ret i32 1
1492label2:
1493  ret i32 0
1494}
1495
1496
1497;UEQ
1498define i32 @brRR_ueq(double %x, double %y) {
1499;
1500;
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
1516;
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
1532entry:
1533  %fcmp = fcmp ueq double %y, %x
1534  br i1 %fcmp, label %label1, label %label2
1535label1:
1536  ret i32 1
1537label2:
1538  ret i32 0
1539}
1540
1541define i32 @brRI_ueq(double %x) {
1542;
1543;
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
1566;
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
1588entry:
1589  %fcmp = fcmp ueq double %x, 10.0
1590  br i1 %fcmp, label %label1, label %label2
1591label1:
1592  ret i32 1
1593label2:
1594  ret i32 0
1595}
1596
1597define i32 @brR0_ueq(double %x) {
1598;
1599;
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
1622;
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
1644entry:
1645  %fcmp = fcmp ueq double %x, 0.0
1646  br i1 %fcmp, label %label1, label %label2
1647label1:
1648  ret i32 1
1649label2:
1650  ret i32 0
1651}
1652
1653;UNE
1654define i32 @brRR_une(double %x, double %y) {
1655;
1656;
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
1667;
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
1678entry:
1679  %fcmp = fcmp une double %y, %x
1680  br i1 %fcmp, label %label1, label %label2
1681label1:
1682  ret i32 1
1683label2:
1684  ret i32 0
1685}
1686
1687define i32 @brRI_une(double %x) {
1688;
1689;
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
1707;
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
1724entry:
1725  %fcmp = fcmp une double %x, 10.0
1726  br i1 %fcmp, label %label1, label %label2
1727label1:
1728  ret i32 1
1729label2:
1730  ret i32 0
1731}
1732
1733define i32 @brR0_une(double %x) {
1734;
1735;
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
1753;
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
1770entry:
1771  %fcmp = fcmp une double %x, 0.0
1772  br i1 %fcmp, label %label1, label %label2
1773label1:
1774  ret i32 1
1775label2:
1776  ret i32 0
1777}
1778
1779;UNO
1780define i32 @brRR_uno(double %x, double %y) {
1781;
1782;
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
1793;
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
1804entry:
1805  %fcmp = fcmp uno double %y, %x
1806  br i1 %fcmp, label %label1, label %label2
1807label1:
1808  ret i32 1
1809label2:
1810  ret i32 0
1811}
1812
1813define i32 @brRI_uno(double %x) {
1814;
1815;
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
1826;
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
1837entry:
1838  %fcmp = fcmp uno double %x, 10.0
1839  br i1 %fcmp, label %label1, label %label2
1840label1:
1841  ret i32 1
1842label2:
1843  ret i32 0
1844}
1845
1846define i32 @brR0_uno(double %x) {
1847;
1848;
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
1859;
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
1870entry:
1871  %fcmp = fcmp uno double %x, 0.0
1872  br i1 %fcmp, label %label1, label %label2
1873label1:
1874  ret i32 1
1875label2:
1876  ret i32 0
1877}
1878
1879;True
1880define i32 @brRR_true(double %x, double %y) {
1881;
1882;
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
1892;
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
1902entry:
1903  %fcmp = fcmp true double %y, %x
1904  br i1 %fcmp, label %label1, label %label2
1905label1:
1906  ret i32 1
1907label2:
1908  ret i32 0
1909}
1910
1911define i32 @brRI_true(double %x) {
1912;
1913;
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
1923;
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
1933entry:
1934  %fcmp = fcmp true double %x, 10.0
1935  br i1 %fcmp, label %label1, label %label2
1936label1:
1937  ret i32 1
1938label2:
1939  ret i32 0
1940}
1941
1942define i32 @brR0_true(double %x) {
1943;
1944;
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
1954;
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
1964entry:
1965  %fcmp = fcmp true double %x, 0.0
1966  br i1 %fcmp, label %label1, label %label2
1967label1:
1968  ret i32 1
1969label2:
1970  ret i32 0
1971}
1972