xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/fast-isel-cmp-branch3.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_oeq1(float %x) {
4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_oeq1
5*9880d681SAndroid Build Coastguard Worker; CHECK:       ucomiss  %xmm0, %xmm0
6*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jp {{LBB.+_1}}
7*9880d681SAndroid Build Coastguard Worker  %1 = fcmp oeq float %x, %x
8*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
9*9880d681SAndroid Build Coastguard Workerbb2:
10*9880d681SAndroid Build Coastguard Worker  ret i32 1
11*9880d681SAndroid Build Coastguard Workerbb1:
12*9880d681SAndroid Build Coastguard Worker  ret i32 0
13*9880d681SAndroid Build Coastguard Worker}
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_oeq2(float %x) {
16*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_oeq2
17*9880d681SAndroid Build Coastguard Worker; CHECK:       xorps    %xmm1, %xmm1
18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ucomiss  %xmm1, %xmm0
19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jne {{LBB.+_1}}
20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jp {{LBB.+_1}}
21*9880d681SAndroid Build Coastguard Worker  %1 = fcmp oeq float %x, 0.000000e+00
22*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
23*9880d681SAndroid Build Coastguard Workerbb2:
24*9880d681SAndroid Build Coastguard Worker  ret i32 1
25*9880d681SAndroid Build Coastguard Workerbb1:
26*9880d681SAndroid Build Coastguard Worker  ret i32 0
27*9880d681SAndroid Build Coastguard Worker}
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ogt1(float %x) {
30*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ogt1
31*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   ucomiss
32*9880d681SAndroid Build Coastguard Worker; CHECK:       movl $1, %eax
33*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ogt float %x, %x
34*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
35*9880d681SAndroid Build Coastguard Workerbb2:
36*9880d681SAndroid Build Coastguard Worker  ret i32 1
37*9880d681SAndroid Build Coastguard Workerbb1:
38*9880d681SAndroid Build Coastguard Worker  ret i32 0
39*9880d681SAndroid Build Coastguard Worker}
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ogt2(float %x) {
42*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ogt2
43*9880d681SAndroid Build Coastguard Worker; CHECK:       xorps    %xmm1, %xmm1
44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ucomiss  %xmm1, %xmm0
45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jbe {{LBB.+_1}}
46*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ogt float %x, 0.000000e+00
47*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
48*9880d681SAndroid Build Coastguard Workerbb2:
49*9880d681SAndroid Build Coastguard Worker  ret i32 1
50*9880d681SAndroid Build Coastguard Workerbb1:
51*9880d681SAndroid Build Coastguard Worker  ret i32 0
52*9880d681SAndroid Build Coastguard Worker}
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_oge1(float %x) {
55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_oge1
56*9880d681SAndroid Build Coastguard Worker; CHECK:       ucomiss  %xmm0, %xmm0
57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jp {{LBB.+_1}}
58*9880d681SAndroid Build Coastguard Worker  %1 = fcmp oge float %x, %x
59*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
60*9880d681SAndroid Build Coastguard Workerbb2:
61*9880d681SAndroid Build Coastguard Worker  ret i32 1
62*9880d681SAndroid Build Coastguard Workerbb1:
63*9880d681SAndroid Build Coastguard Worker  ret i32 0
64*9880d681SAndroid Build Coastguard Worker}
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_oge2(float %x) {
67*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_oge2
68*9880d681SAndroid Build Coastguard Worker; CHECK:       xorps    %xmm1, %xmm1
69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ucomiss  %xmm1, %xmm0
70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jb {{LBB.+_1}}
71*9880d681SAndroid Build Coastguard Worker  %1 = fcmp oge float %x, 0.000000e+00
72*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
73*9880d681SAndroid Build Coastguard Workerbb2:
74*9880d681SAndroid Build Coastguard Worker  ret i32 1
75*9880d681SAndroid Build Coastguard Workerbb1:
76*9880d681SAndroid Build Coastguard Worker  ret i32 0
77*9880d681SAndroid Build Coastguard Worker}
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_olt1(float %x) {
80*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_olt1
81*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   ucomiss
82*9880d681SAndroid Build Coastguard Worker; CHECK:       movl $1, %eax
83*9880d681SAndroid Build Coastguard Worker  %1 = fcmp olt float %x, %x
84*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
85*9880d681SAndroid Build Coastguard Workerbb2:
86*9880d681SAndroid Build Coastguard Worker  ret i32 1
87*9880d681SAndroid Build Coastguard Workerbb1:
88*9880d681SAndroid Build Coastguard Worker  ret i32 0
89*9880d681SAndroid Build Coastguard Worker}
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_olt2(float %x) {
92*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_olt2
93*9880d681SAndroid Build Coastguard Worker; CHECK:       xorps    %xmm1, %xmm1
94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ucomiss  %xmm0, %xmm1
95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jbe {{LBB.+_1}}
96*9880d681SAndroid Build Coastguard Worker  %1 = fcmp olt float %x, 0.000000e+00
97*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
98*9880d681SAndroid Build Coastguard Workerbb2:
99*9880d681SAndroid Build Coastguard Worker  ret i32 1
100*9880d681SAndroid Build Coastguard Workerbb1:
101*9880d681SAndroid Build Coastguard Worker  ret i32 0
102*9880d681SAndroid Build Coastguard Worker}
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ole1(float %x) {
105*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ole1
106*9880d681SAndroid Build Coastguard Worker; CHECK:       ucomiss  %xmm0, %xmm0
107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jp {{LBB.+_1}}
108*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ole float %x, %x
109*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
110*9880d681SAndroid Build Coastguard Workerbb2:
111*9880d681SAndroid Build Coastguard Worker  ret i32 1
112*9880d681SAndroid Build Coastguard Workerbb1:
113*9880d681SAndroid Build Coastguard Worker  ret i32 0
114*9880d681SAndroid Build Coastguard Worker}
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ole2(float %x) {
117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ole2
118*9880d681SAndroid Build Coastguard Worker; CHECK:       xorps    %xmm1, %xmm1
119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ucomiss  %xmm0, %xmm1
120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jb {{LBB.+_1}}
121*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ole float %x, 0.000000e+00
122*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
123*9880d681SAndroid Build Coastguard Workerbb2:
124*9880d681SAndroid Build Coastguard Worker  ret i32 1
125*9880d681SAndroid Build Coastguard Workerbb1:
126*9880d681SAndroid Build Coastguard Worker  ret i32 0
127*9880d681SAndroid Build Coastguard Worker}
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_one1(float %x) {
130*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_one1
131*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   ucomiss
132*9880d681SAndroid Build Coastguard Worker; CHECK:       movl $1, %eax
133*9880d681SAndroid Build Coastguard Worker  %1 = fcmp one float %x, %x
134*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
135*9880d681SAndroid Build Coastguard Workerbb2:
136*9880d681SAndroid Build Coastguard Worker  ret i32 1
137*9880d681SAndroid Build Coastguard Workerbb1:
138*9880d681SAndroid Build Coastguard Worker  ret i32 0
139*9880d681SAndroid Build Coastguard Worker}
140*9880d681SAndroid Build Coastguard Worker
141*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_one2(float %x) {
142*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_one2
143*9880d681SAndroid Build Coastguard Worker; CHECK:       xorps    %xmm1, %xmm1
144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ucomiss  %xmm1, %xmm0
145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  je {{LBB.+_1}}
146*9880d681SAndroid Build Coastguard Worker  %1 = fcmp one float %x, 0.000000e+00
147*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
148*9880d681SAndroid Build Coastguard Workerbb2:
149*9880d681SAndroid Build Coastguard Worker  ret i32 1
150*9880d681SAndroid Build Coastguard Workerbb1:
151*9880d681SAndroid Build Coastguard Worker  ret i32 0
152*9880d681SAndroid Build Coastguard Worker}
153*9880d681SAndroid Build Coastguard Worker
154*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ord1(float %x) {
155*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ord1
156*9880d681SAndroid Build Coastguard Worker; CHECK:       ucomiss  %xmm0, %xmm0
157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jp {{LBB.+_1}}
158*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ord float %x, %x
159*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
160*9880d681SAndroid Build Coastguard Workerbb2:
161*9880d681SAndroid Build Coastguard Worker  ret i32 1
162*9880d681SAndroid Build Coastguard Workerbb1:
163*9880d681SAndroid Build Coastguard Worker  ret i32 0
164*9880d681SAndroid Build Coastguard Worker}
165*9880d681SAndroid Build Coastguard Worker
166*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ord2(float %x) {
167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ord2
168*9880d681SAndroid Build Coastguard Worker; CHECK:       ucomiss  %xmm0, %xmm0
169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jp {{LBB.+_1}}
170*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ord float %x, 0.000000e+00
171*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
172*9880d681SAndroid Build Coastguard Workerbb2:
173*9880d681SAndroid Build Coastguard Worker  ret i32 1
174*9880d681SAndroid Build Coastguard Workerbb1:
175*9880d681SAndroid Build Coastguard Worker  ret i32 0
176*9880d681SAndroid Build Coastguard Worker}
177*9880d681SAndroid Build Coastguard Worker
178*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_uno1(float %x) {
179*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_uno1
180*9880d681SAndroid Build Coastguard Worker; CHECK:       ucomiss  %xmm0, %xmm0
181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jp {{LBB.+_2}}
182*9880d681SAndroid Build Coastguard Worker  %1 = fcmp uno float %x, %x
183*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
184*9880d681SAndroid Build Coastguard Workerbb2:
185*9880d681SAndroid Build Coastguard Worker  ret i32 1
186*9880d681SAndroid Build Coastguard Workerbb1:
187*9880d681SAndroid Build Coastguard Worker  ret i32 0
188*9880d681SAndroid Build Coastguard Worker}
189*9880d681SAndroid Build Coastguard Worker
190*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_uno2(float %x) {
191*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_uno2
192*9880d681SAndroid Build Coastguard Worker; CHECK:       ucomiss  %xmm0, %xmm0
193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jp {{LBB.+_2}}
194*9880d681SAndroid Build Coastguard Worker  %1 = fcmp uno float %x, 0.000000e+00
195*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
196*9880d681SAndroid Build Coastguard Workerbb2:
197*9880d681SAndroid Build Coastguard Worker  ret i32 1
198*9880d681SAndroid Build Coastguard Workerbb1:
199*9880d681SAndroid Build Coastguard Worker  ret i32 0
200*9880d681SAndroid Build Coastguard Worker}
201*9880d681SAndroid Build Coastguard Worker
202*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ueq1(float %x) {
203*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ueq1
204*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   ucomiss
205*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ueq float %x, %x
206*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
207*9880d681SAndroid Build Coastguard Workerbb2:
208*9880d681SAndroid Build Coastguard Worker  ret i32 1
209*9880d681SAndroid Build Coastguard Workerbb1:
210*9880d681SAndroid Build Coastguard Worker  ret i32 0
211*9880d681SAndroid Build Coastguard Worker}
212*9880d681SAndroid Build Coastguard Worker
213*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ueq2(float %x) {
214*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ueq2
215*9880d681SAndroid Build Coastguard Worker; CHECK:       xorps    %xmm1, %xmm1
216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ucomiss  %xmm1, %xmm0
217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  je {{LBB.+_2}}
218*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ueq float %x, 0.000000e+00
219*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
220*9880d681SAndroid Build Coastguard Workerbb2:
221*9880d681SAndroid Build Coastguard Worker  ret i32 1
222*9880d681SAndroid Build Coastguard Workerbb1:
223*9880d681SAndroid Build Coastguard Worker  ret i32 0
224*9880d681SAndroid Build Coastguard Worker}
225*9880d681SAndroid Build Coastguard Worker
226*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ugt1(float %x) {
227*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ugt1
228*9880d681SAndroid Build Coastguard Worker; CHECK:       ucomiss  %xmm0, %xmm0
229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jnp {{LBB.+_1}}
230*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ugt float %x, %x
231*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
232*9880d681SAndroid Build Coastguard Workerbb2:
233*9880d681SAndroid Build Coastguard Worker  ret i32 1
234*9880d681SAndroid Build Coastguard Workerbb1:
235*9880d681SAndroid Build Coastguard Worker  ret i32 0
236*9880d681SAndroid Build Coastguard Worker}
237*9880d681SAndroid Build Coastguard Worker
238*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ugt2(float %x) {
239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ugt2
240*9880d681SAndroid Build Coastguard Worker; CHECK:       xorps    %xmm1, %xmm1
241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ucomiss  %xmm0, %xmm1
242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jae {{LBB.+_1}}
243*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ugt float %x, 0.000000e+00
244*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
245*9880d681SAndroid Build Coastguard Workerbb2:
246*9880d681SAndroid Build Coastguard Worker  ret i32 1
247*9880d681SAndroid Build Coastguard Workerbb1:
248*9880d681SAndroid Build Coastguard Worker  ret i32 0
249*9880d681SAndroid Build Coastguard Worker}
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_uge1(float %x) {
252*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_uge1
253*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   ucomiss
254*9880d681SAndroid Build Coastguard Worker  %1 = fcmp uge float %x, %x
255*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
256*9880d681SAndroid Build Coastguard Workerbb2:
257*9880d681SAndroid Build Coastguard Worker  ret i32 1
258*9880d681SAndroid Build Coastguard Workerbb1:
259*9880d681SAndroid Build Coastguard Worker  ret i32 0
260*9880d681SAndroid Build Coastguard Worker}
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_uge2(float %x) {
263*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_uge2
264*9880d681SAndroid Build Coastguard Worker; CHECK:       xorps    %xmm1, %xmm1
265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ucomiss  %xmm0, %xmm1
266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ja {{LBB.+_1}}
267*9880d681SAndroid Build Coastguard Worker  %1 = fcmp uge float %x, 0.000000e+00
268*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
269*9880d681SAndroid Build Coastguard Workerbb2:
270*9880d681SAndroid Build Coastguard Worker  ret i32 1
271*9880d681SAndroid Build Coastguard Workerbb1:
272*9880d681SAndroid Build Coastguard Worker  ret i32 0
273*9880d681SAndroid Build Coastguard Worker}
274*9880d681SAndroid Build Coastguard Worker
275*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ult1(float %x) {
276*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ult1
277*9880d681SAndroid Build Coastguard Worker; CHECK:       ucomiss  %xmm0, %xmm0
278*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jnp {{LBB.+_1}}
279*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ult float %x, %x
280*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
281*9880d681SAndroid Build Coastguard Workerbb2:
282*9880d681SAndroid Build Coastguard Worker  ret i32 1
283*9880d681SAndroid Build Coastguard Workerbb1:
284*9880d681SAndroid Build Coastguard Worker  ret i32 0
285*9880d681SAndroid Build Coastguard Worker}
286*9880d681SAndroid Build Coastguard Worker
287*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ult2(float %x) {
288*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ult2
289*9880d681SAndroid Build Coastguard Worker; CHECK:       xorps    %xmm1, %xmm1
290*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ucomiss  %xmm1, %xmm0
291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jae {{LBB.+_1}}
292*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ult float %x, 0.000000e+00
293*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
294*9880d681SAndroid Build Coastguard Workerbb2:
295*9880d681SAndroid Build Coastguard Worker  ret i32 1
296*9880d681SAndroid Build Coastguard Workerbb1:
297*9880d681SAndroid Build Coastguard Worker  ret i32 0
298*9880d681SAndroid Build Coastguard Worker}
299*9880d681SAndroid Build Coastguard Worker
300*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ule1(float %x) {
301*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ule1
302*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   ucomiss
303*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ule float %x, %x
304*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
305*9880d681SAndroid Build Coastguard Workerbb2:
306*9880d681SAndroid Build Coastguard Worker  ret i32 1
307*9880d681SAndroid Build Coastguard Workerbb1:
308*9880d681SAndroid Build Coastguard Worker  ret i32 0
309*9880d681SAndroid Build Coastguard Worker}
310*9880d681SAndroid Build Coastguard Worker
311*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ule2(float %x) {
312*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ule2
313*9880d681SAndroid Build Coastguard Worker; CHECK:       xorps    %xmm1, %xmm1
314*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ucomiss  %xmm1, %xmm0
315*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ja {{LBB.+_1}}
316*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ule float %x, 0.000000e+00
317*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
318*9880d681SAndroid Build Coastguard Workerbb2:
319*9880d681SAndroid Build Coastguard Worker  ret i32 1
320*9880d681SAndroid Build Coastguard Workerbb1:
321*9880d681SAndroid Build Coastguard Worker  ret i32 0
322*9880d681SAndroid Build Coastguard Worker}
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_une1(float %x) {
325*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_une1
326*9880d681SAndroid Build Coastguard Worker; CHECK:       ucomiss  %xmm0, %xmm0
327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jnp {{LBB.+_1}}
328*9880d681SAndroid Build Coastguard Worker  %1 = fcmp une float %x, %x
329*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
330*9880d681SAndroid Build Coastguard Workerbb2:
331*9880d681SAndroid Build Coastguard Worker  ret i32 1
332*9880d681SAndroid Build Coastguard Workerbb1:
333*9880d681SAndroid Build Coastguard Worker  ret i32 0
334*9880d681SAndroid Build Coastguard Worker}
335*9880d681SAndroid Build Coastguard Worker
336*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_une2(float %x) {
337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_une2
338*9880d681SAndroid Build Coastguard Worker; CHECK:       xorps    %xmm1, %xmm1
339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ucomiss  %xmm1, %xmm0
340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jne {{LBB.+_2}}
341*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  jnp {{LBB.+_1}}
342*9880d681SAndroid Build Coastguard Worker  %1 = fcmp une float %x, 0.000000e+00
343*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
344*9880d681SAndroid Build Coastguard Workerbb2:
345*9880d681SAndroid Build Coastguard Worker  ret i32 1
346*9880d681SAndroid Build Coastguard Workerbb1:
347*9880d681SAndroid Build Coastguard Worker  ret i32 0
348*9880d681SAndroid Build Coastguard Worker}
349*9880d681SAndroid Build Coastguard Worker
350*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_eq(i32 %x) {
351*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_eq
352*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   cmpl
353*9880d681SAndroid Build Coastguard Worker; CHECK:       xorl %eax, %eax
354*9880d681SAndroid Build Coastguard Worker  %1 = icmp eq i32 %x, %x
355*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
356*9880d681SAndroid Build Coastguard Workerbb2:
357*9880d681SAndroid Build Coastguard Worker  ret i32 1
358*9880d681SAndroid Build Coastguard Workerbb1:
359*9880d681SAndroid Build Coastguard Worker  ret i32 0
360*9880d681SAndroid Build Coastguard Worker}
361*9880d681SAndroid Build Coastguard Worker
362*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_ne(i32 %x) {
363*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_ne
364*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   cmpl
365*9880d681SAndroid Build Coastguard Worker; CHECK:       movl $1, %eax
366*9880d681SAndroid Build Coastguard Worker  %1 = icmp ne i32 %x, %x
367*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
368*9880d681SAndroid Build Coastguard Workerbb2:
369*9880d681SAndroid Build Coastguard Worker  ret i32 1
370*9880d681SAndroid Build Coastguard Workerbb1:
371*9880d681SAndroid Build Coastguard Worker  ret i32 0
372*9880d681SAndroid Build Coastguard Worker}
373*9880d681SAndroid Build Coastguard Worker
374*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_ugt(i32 %x) {
375*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_ugt
376*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   cmpl
377*9880d681SAndroid Build Coastguard Worker; CHECK:       movl $1, %eax
378*9880d681SAndroid Build Coastguard Worker  %1 = icmp ugt i32 %x, %x
379*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
380*9880d681SAndroid Build Coastguard Workerbb2:
381*9880d681SAndroid Build Coastguard Worker  ret i32 1
382*9880d681SAndroid Build Coastguard Workerbb1:
383*9880d681SAndroid Build Coastguard Worker  ret i32 0
384*9880d681SAndroid Build Coastguard Worker}
385*9880d681SAndroid Build Coastguard Worker
386*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_uge(i32 %x) {
387*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_uge
388*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   cmpl
389*9880d681SAndroid Build Coastguard Worker; CHECK:       xorl %eax, %eax
390*9880d681SAndroid Build Coastguard Worker  %1 = icmp uge i32 %x, %x
391*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
392*9880d681SAndroid Build Coastguard Workerbb2:
393*9880d681SAndroid Build Coastguard Worker  ret i32 1
394*9880d681SAndroid Build Coastguard Workerbb1:
395*9880d681SAndroid Build Coastguard Worker  ret i32 0
396*9880d681SAndroid Build Coastguard Worker}
397*9880d681SAndroid Build Coastguard Worker
398*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_ult(i32 %x) {
399*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_ult
400*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   cmpl
401*9880d681SAndroid Build Coastguard Worker; CHECK:       movl $1, %eax
402*9880d681SAndroid Build Coastguard Worker  %1 = icmp ult i32 %x, %x
403*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
404*9880d681SAndroid Build Coastguard Workerbb2:
405*9880d681SAndroid Build Coastguard Worker  ret i32 1
406*9880d681SAndroid Build Coastguard Workerbb1:
407*9880d681SAndroid Build Coastguard Worker  ret i32 0
408*9880d681SAndroid Build Coastguard Worker}
409*9880d681SAndroid Build Coastguard Worker
410*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_ule(i32 %x) {
411*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_ule
412*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   cmpl
413*9880d681SAndroid Build Coastguard Worker; CHECK:       xorl %eax, %eax
414*9880d681SAndroid Build Coastguard Worker  %1 = icmp ule i32 %x, %x
415*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
416*9880d681SAndroid Build Coastguard Workerbb2:
417*9880d681SAndroid Build Coastguard Worker  ret i32 1
418*9880d681SAndroid Build Coastguard Workerbb1:
419*9880d681SAndroid Build Coastguard Worker  ret i32 0
420*9880d681SAndroid Build Coastguard Worker}
421*9880d681SAndroid Build Coastguard Worker
422*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_sgt(i32 %x) {
423*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_sgt
424*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   cmpl
425*9880d681SAndroid Build Coastguard Worker; CHECK:       movl $1, %eax
426*9880d681SAndroid Build Coastguard Worker  %1 = icmp sgt i32 %x, %x
427*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
428*9880d681SAndroid Build Coastguard Workerbb2:
429*9880d681SAndroid Build Coastguard Worker  ret i32 1
430*9880d681SAndroid Build Coastguard Workerbb1:
431*9880d681SAndroid Build Coastguard Worker  ret i32 0
432*9880d681SAndroid Build Coastguard Worker}
433*9880d681SAndroid Build Coastguard Worker
434*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_sge(i32 %x) {
435*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_sge
436*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   cmpl
437*9880d681SAndroid Build Coastguard Worker; CHECK:       xorl %eax, %eax
438*9880d681SAndroid Build Coastguard Worker  %1 = icmp sge i32 %x, %x
439*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
440*9880d681SAndroid Build Coastguard Workerbb2:
441*9880d681SAndroid Build Coastguard Worker  ret i32 1
442*9880d681SAndroid Build Coastguard Workerbb1:
443*9880d681SAndroid Build Coastguard Worker  ret i32 0
444*9880d681SAndroid Build Coastguard Worker}
445*9880d681SAndroid Build Coastguard Worker
446*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_slt(i32 %x) {
447*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_slt
448*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   cmpl
449*9880d681SAndroid Build Coastguard Worker; CHECK:       movl $1, %eax
450*9880d681SAndroid Build Coastguard Worker  %1 = icmp slt i32 %x, %x
451*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
452*9880d681SAndroid Build Coastguard Workerbb2:
453*9880d681SAndroid Build Coastguard Worker  ret i32 1
454*9880d681SAndroid Build Coastguard Workerbb1:
455*9880d681SAndroid Build Coastguard Worker  ret i32 0
456*9880d681SAndroid Build Coastguard Worker}
457*9880d681SAndroid Build Coastguard Worker
458*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_sle(i32 %x) {
459*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_sle
460*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:   cmpl
461*9880d681SAndroid Build Coastguard Worker; CHECK:       xorl %eax, %eax
462*9880d681SAndroid Build Coastguard Worker  %1 = icmp sle i32 %x, %x
463*9880d681SAndroid Build Coastguard Worker  br i1 %1, label %bb1, label %bb2
464*9880d681SAndroid Build Coastguard Workerbb2:
465*9880d681SAndroid Build Coastguard Worker  ret i32 1
466*9880d681SAndroid Build Coastguard Workerbb1:
467*9880d681SAndroid Build Coastguard Worker  ret i32 0
468*9880d681SAndroid Build Coastguard Worker}
469*9880d681SAndroid Build Coastguard Worker
470