blob: 61cc67a244e4b1017252ee591f284a31d97a5d45 [file] [log] [blame]
Juergen Ributzka2da1bbc2014-06-16 23:58:24 +00001; RUN: llc < %s -mtriple=x86_64-apple-darwin10 | FileCheck %s --check-prefix=SDAG
2; RUN: llc < %s -fast-isel -fast-isel-abort -mtriple=x86_64-apple-darwin10 | FileCheck %s --check-prefix=FAST
3
4define zeroext i1 @fcmp_oeq(float %x, float %y) {
5; SDAG-LABEL: fcmp_oeq
6; SDAG: cmpeqss %xmm1, %xmm0
7; SDAG-NEXT: movd %xmm0, %eax
8; SDAG-NEXT: andl $1, %eax
9; FAST-LABEL: fcmp_oeq
10; FAST: ucomiss %xmm1, %xmm0
11; FAST-NEXT: sete %al
12; FAST-NEXT: setnp %cl
13; FAST-NEXT: andb %al, %cl
14 %1 = fcmp oeq float %x, %y
15 ret i1 %1
16}
17
18define zeroext i1 @fcmp_ogt(float %x, float %y) {
19; SDAG-LABEL: fcmp_ogt
20; SDAG: ucomiss %xmm1, %xmm0
21; SDAG-NEXT: seta %al
22; FAST: ucomiss %xmm1, %xmm0
23; FAST-NEXT: seta %al
24 %1 = fcmp ogt float %x, %y
25 ret i1 %1
26}
27
28define zeroext i1 @fcmp_oge(float %x, float %y) {
29; SDAG-LABEL: fcmp_oge
30; SDAG: ucomiss %xmm1, %xmm0
31; SDAG-NEXT: setae %al
32; FAST-LABEL: fcmp_oge
33; FAST: ucomiss %xmm1, %xmm0
34; FAST-NEXT: setae %al
35 %1 = fcmp oge float %x, %y
36 ret i1 %1
37}
38
39define zeroext i1 @fcmp_olt(float %x, float %y) {
40; SDAG-LABEL: fcmp_olt
41; SDAG: ucomiss %xmm0, %xmm1
42; SDAG-NEXT: seta %al
43; FAST-LABEL: fcmp_olt
44; FAST: ucomiss %xmm0, %xmm1
45; FAST-NEXT: seta %al
46 %1 = fcmp olt float %x, %y
47 ret i1 %1
48}
49
50define zeroext i1 @fcmp_ole(float %x, float %y) {
51; SDAG-LABEL: fcmp_ole
52; SDAG: ucomiss %xmm0, %xmm1
53; SDAG-NEXT: setae %al
54; FAST-LABEL: fcmp_ole
55; FAST: ucomiss %xmm0, %xmm1
56; FAST-NEXT: setae %al
57 %1 = fcmp ole float %x, %y
58 ret i1 %1
59}
60
61define zeroext i1 @fcmp_one(float %x, float %y) {
62; SDAG-LABEL: fcmp_one
63; SDAG: ucomiss %xmm1, %xmm0
64; SDAG-NEXT: setne %al
65; FAST-LABEL: fcmp_one
66; FAST: ucomiss %xmm1, %xmm0
67; FAST-NEXT: setne %al
68 %1 = fcmp one float %x, %y
69 ret i1 %1
70}
71
72define zeroext i1 @fcmp_ord(float %x, float %y) {
73; SDAG-LABEL: fcmp_ord
74; SDAG: ucomiss %xmm1, %xmm0
75; SDAG-NEXT: setnp %al
76; FAST-LABEL: fcmp_ord
77; FAST: ucomiss %xmm1, %xmm0
78; FAST-NEXT: setnp %al
79 %1 = fcmp ord float %x, %y
80 ret i1 %1
81}
82
83define zeroext i1 @fcmp_uno(float %x, float %y) {
84; SDAG-LABEL: fcmp_uno
85; SDAG: ucomiss %xmm1, %xmm0
86; SDAG-NEXT: setp %al
87; FAST-LABEL: fcmp_uno
88; FAST: ucomiss %xmm1, %xmm0
89; FAST-NEXT: setp %al
90 %1 = fcmp uno float %x, %y
91 ret i1 %1
92}
93
94define zeroext i1 @fcmp_ueq(float %x, float %y) {
95; SDAG-LABEL: fcmp_ueq
96; SDAG: ucomiss %xmm1, %xmm0
97; SDAG-NEXT: sete %al
98; FAST-LABEL: fcmp_ueq
99; FAST: ucomiss %xmm1, %xmm0
100; FAST-NEXT: sete %al
101 %1 = fcmp ueq float %x, %y
102 ret i1 %1
103}
104
105define zeroext i1 @fcmp_ugt(float %x, float %y) {
106; SDAG-LABEL: fcmp_ugt
107; SDAG: ucomiss %xmm0, %xmm1
108; SDAG-NEXT: setb %al
109; FAST-LABEL: fcmp_ugt
110; FAST: ucomiss %xmm0, %xmm1
111; FAST-NEXT: setb %al
112 %1 = fcmp ugt float %x, %y
113 ret i1 %1
114}
115
116define zeroext i1 @fcmp_uge(float %x, float %y) {
117; SDAG-LABEL: fcmp_uge
118; SDAG: ucomiss %xmm0, %xmm1
119; SDAG-NEXT: setbe %al
120; FAST-LABEL: fcmp_uge
121; FAST: ucomiss %xmm0, %xmm1
122; FAST-NEXT: setbe %al
123 %1 = fcmp uge float %x, %y
124 ret i1 %1
125}
126
127define zeroext i1 @fcmp_ult(float %x, float %y) {
128; SDAG-LABEL: fcmp_ult
129; SDAG: ucomiss %xmm1, %xmm0
130; SDAG-NEXT: setb %al
131; FAST-LABEL: fcmp_ult
132; FAST: ucomiss %xmm1, %xmm0
133; FAST-NEXT: setb %al
134 %1 = fcmp ult float %x, %y
135 ret i1 %1
136}
137
138define zeroext i1 @fcmp_ule(float %x, float %y) {
139; SDAG-LABEL: fcmp_ule
140; SDAG: ucomiss %xmm1, %xmm0
141; SDAG-NEXT: setbe %al
142; FAST-LABEL: fcmp_ule
143; FAST: ucomiss %xmm1, %xmm0
144; FAST-NEXT: setbe %al
145 %1 = fcmp ule float %x, %y
146 ret i1 %1
147}
148
149define zeroext i1 @fcmp_une(float %x, float %y) {
150; SDAG-LABEL: fcmp_une
151; SDAG: cmpneqss %xmm1, %xmm0
152; SDAG-NEXT: movd %xmm0, %eax
153; SDAG-NEXT: andl $1, %eax
154; FAST-LABEL: fcmp_une
155; FAST: ucomiss %xmm1, %xmm0
156; FAST-NEXT: setne %al
157; FAST-NEXT: setp %cl
Juergen Ributzkae3570562014-06-17 14:47:45 +0000158; FAST-NEXT: orb %al, %cl
Juergen Ributzka2da1bbc2014-06-16 23:58:24 +0000159 %1 = fcmp une float %x, %y
160 ret i1 %1
161}
162
163define zeroext i1 @icmp_eq(i32 %x, i32 %y) {
164; SDAG-LABEL: icmp_eq
165; SDAG: cmpl %esi, %edi
166; SDAG-NEXT: sete %al
167; FAST-LABEL: icmp_eq
168; FAST: cmpl %esi, %edi
169; FAST-NEXT: sete %al
170 %1 = icmp eq i32 %x, %y
171 ret i1 %1
172}
173
174define zeroext i1 @icmp_ne(i32 %x, i32 %y) {
175; SDAG-LABEL: icmp_ne
176; SDAG: cmpl %esi, %edi
177; SDAG-NEXT: setne %al
178; FAST-LABEL: icmp_ne
179; FAST: cmpl %esi, %edi
180; FAST-NEXT: setne %al
181 %1 = icmp ne i32 %x, %y
182 ret i1 %1
183}
184
185define zeroext i1 @icmp_ugt(i32 %x, i32 %y) {
186; SDAG-LABEL: icmp_ugt
187; SDAG: cmpl %edi, %esi
188; SDAG-NEXT: setb %al
189; FAST-LABEL: icmp_ugt
190; FAST: cmpl %esi, %edi
191; FAST-NEXT: seta %al
192 %1 = icmp ugt i32 %x, %y
193 ret i1 %1
194}
195
196define zeroext i1 @icmp_uge(i32 %x, i32 %y) {
197; SDAG-LABEL: icmp_uge
198; SDAG: cmpl %esi, %edi
199; SDAG-NEXT: setae %al
200; FAST-LABEL: icmp_uge
201; FAST: cmpl %esi, %edi
202; FAST-NEXT: setae %al
203 %1 = icmp uge i32 %x, %y
204 ret i1 %1
205}
206
207define zeroext i1 @icmp_ult(i32 %x, i32 %y) {
208; SDAG-LABEL: icmp_ult
209; SDAG: cmpl %esi, %edi
210; SDAG-NEXT: setb %al
211; FAST-LABEL: icmp_ult
212; FAST: cmpl %esi, %edi
213; FAST-NEXT: setb %al
214 %1 = icmp ult i32 %x, %y
215 ret i1 %1
216}
217
218define zeroext i1 @icmp_ule(i32 %x, i32 %y) {
219; SDAG-LABEL: icmp_ule
220; SDAG: cmpl %esi, %edi
221; SDAG-NEXT: setbe %al
222; FAST-LABEL: icmp_ule
223; FAST: cmpl %esi, %edi
224; FAST-NEXT: setbe %al
225 %1 = icmp ule i32 %x, %y
226 ret i1 %1
227}
228
229define zeroext i1 @icmp_sgt(i32 %x, i32 %y) {
230; SDAG-LABEL: icmp_sgt
231; SDAG: cmpl %esi, %edi
232; SDAG-NEXT: setg %al
233; FAST-LABEL: icmp_sgt
234; FAST: cmpl %esi, %edi
235; FAST-NEXT: setg %al
236 %1 = icmp sgt i32 %x, %y
237 ret i1 %1
238}
239
240define zeroext i1 @icmp_sge(i32 %x, i32 %y) {
241; SDAG-LABEL: icmp_sge
242; SDAG: cmpl %esi, %edi
243; SDAG-NEXT: setge %al
244; FAST-LABEL: icmp_sge
245; FAST: cmpl %esi, %edi
246; FAST-NEXT: setge %al
247 %1 = icmp sge i32 %x, %y
248 ret i1 %1
249}
250
251define zeroext i1 @icmp_slt(i32 %x, i32 %y) {
252; SDAG-LABEL: icmp_slt
253; SDAG: cmpl %esi, %edi
254; SDAG-NEXT: setl %al
255; FAST-LABEL: icmp_slt
256; FAST: cmpl %esi, %edi
257; FAST-NEXT: setl %al
258 %1 = icmp slt i32 %x, %y
259 ret i1 %1
260}
261
262define zeroext i1 @icmp_sle(i32 %x, i32 %y) {
263; SDAG-LABEL: icmp_sle
264; SDAG: cmpl %esi, %edi
265; SDAG-NEXT: setle %al
266; FAST-LABEL: icmp_sle
267; FAST: cmpl %esi, %edi
268; FAST-NEXT: setle %al
269 %1 = icmp sle i32 %x, %y
270 ret i1 %1
271}
272