blob: 1ac358f37aa8f8fbd6acb06baf3c0cd71e5c0113 [file] [log] [blame]
Juergen Ributzkafb3e1432014-09-17 17:46:47 +00001; RUN: llc -aarch64-atomic-cfg-tidy=0 -mtriple=aarch64-apple-darwin < %s | FileCheck %s
Mehdi Amini945a6602015-02-27 18:32:11 +00002; RUN: llc -fast-isel -fast-isel-abort=1 -aarch64-atomic-cfg-tidy=0 -mtriple=aarch64-apple-darwin < %s | FileCheck %s
Juergen Ributzkafb3e1432014-09-17 17:46:47 +00003
4define i32 @fcmp_oeq(float %x, float %y) {
5; CHECK-LABEL: fcmp_oeq
6; CHECK: fcmp s0, s1
7; CHECK-NEXT: b.ne {{LBB.+_2}}
8 %1 = fcmp oeq float %x, %y
9 br i1 %1, label %bb1, label %bb2
10bb2:
11 ret i32 1
12bb1:
13 ret i32 0
14}
15
16define i32 @fcmp_ogt(float %x, float %y) {
17; CHECK-LABEL: fcmp_ogt
18; CHECK: fcmp s0, s1
19; CHECK-NEXT: b.le {{LBB.+_2}}
20 %1 = fcmp ogt float %x, %y
21 br i1 %1, label %bb1, label %bb2
22bb2:
23 ret i32 1
24bb1:
25 ret i32 0
26}
27
28define i32 @fcmp_oge(float %x, float %y) {
29; CHECK-LABEL: fcmp_oge
30; CHECK: fcmp s0, s1
31; CHECK-NEXT: b.lt {{LBB.+_2}}
32 %1 = fcmp oge float %x, %y
33 br i1 %1, label %bb1, label %bb2
34bb2:
35 ret i32 1
36bb1:
37 ret i32 0
38}
39
40define i32 @fcmp_olt(float %x, float %y) {
41; CHECK-LABEL: fcmp_olt
42; CHECK: fcmp s0, s1
43; CHECK-NEXT: b.pl {{LBB.+_2}}
44 %1 = fcmp olt float %x, %y
45 br i1 %1, label %bb1, label %bb2
46bb2:
47 ret i32 1
48bb1:
49 ret i32 0
50}
51
52define i32 @fcmp_ole(float %x, float %y) {
53; CHECK-LABEL: fcmp_ole
54; CHECK: fcmp s0, s1
55; CHECK-NEXT: b.hi {{LBB.+_2}}
56 %1 = fcmp ole float %x, %y
57 br i1 %1, label %bb1, label %bb2
58bb2:
59 ret i32 1
60bb1:
61 ret i32 0
62}
63
64define i32 @fcmp_one(float %x, float %y) {
65; CHECK-LABEL: fcmp_one
66; CHECK: fcmp s0, s1
67; CHECK-NEXT: b.mi
68; CHECK-NEXT: b.gt
69 %1 = fcmp one float %x, %y
70 br i1 %1, label %bb1, label %bb2
71bb2:
72 ret i32 1
73bb1:
74 ret i32 0
75}
76
77define i32 @fcmp_ord(float %x, float %y) {
78; CHECK-LABEL: fcmp_ord
79; CHECK: fcmp s0, s1
80; CHECK-NEXT: b.vs {{LBB.+_2}}
81 %1 = fcmp ord float %x, %y
82 br i1 %1, label %bb1, label %bb2
83bb2:
84 ret i32 1
85bb1:
86 ret i32 0
87}
88
89define i32 @fcmp_uno(float %x, float %y) {
90; CHECK-LABEL: fcmp_uno
91; CHECK: fcmp s0, s1
92; CHECK-NEXT: b.vs {{LBB.+_2}}
93 %1 = fcmp uno float %x, %y
94 br i1 %1, label %bb1, label %bb2
95bb2:
96 ret i32 1
97bb1:
98 ret i32 0
99}
100
101define i32 @fcmp_ueq(float %x, float %y) {
102; CHECK-LABEL: fcmp_ueq
103; CHECK: fcmp s0, s1
104; CHECK-NEXT: b.eq {{LBB.+_2}}
105; CHECK-NEXT: b.vs {{LBB.+_2}}
106 %1 = fcmp ueq float %x, %y
107 br i1 %1, label %bb1, label %bb2
108bb2:
109 ret i32 1
110bb1:
111 ret i32 0
112}
113
114define i32 @fcmp_ugt(float %x, float %y) {
115; CHECK-LABEL: fcmp_ugt
116; CHECK: fcmp s0, s1
117; CHECK-NEXT: b.ls {{LBB.+_2}}
118 %1 = fcmp ugt float %x, %y
119 br i1 %1, label %bb1, label %bb2
120bb2:
121 ret i32 1
122bb1:
123 ret i32 0
124}
125
126define i32 @fcmp_uge(float %x, float %y) {
127; CHECK-LABEL: fcmp_uge
128; CHECK: fcmp s0, s1
129; CHECK-NEXT: b.mi {{LBB.+_2}}
130 %1 = fcmp uge float %x, %y
131 br i1 %1, label %bb1, label %bb2
132bb2:
133 ret i32 1
134bb1:
135 ret i32 0
136}
137
138define i32 @fcmp_ult(float %x, float %y) {
139; CHECK-LABEL: fcmp_ult
140; CHECK: fcmp s0, s1
141; CHECK-NEXT: b.ge {{LBB.+_2}}
142 %1 = fcmp ult float %x, %y
143 br i1 %1, label %bb1, label %bb2
144bb2:
145 ret i32 1
146bb1:
147 ret i32 0
148}
149
150define i32 @fcmp_ule(float %x, float %y) {
151; CHECK-LABEL: fcmp_ule
152; CHECK: fcmp s0, s1
153; CHECK-NEXT: b.gt {{LBB.+_2}}
154 %1 = fcmp ule float %x, %y
155 br i1 %1, label %bb1, label %bb2
156bb2:
157 ret i32 1
158bb1:
159 ret i32 0
160}
161
162define i32 @fcmp_une(float %x, float %y) {
163; CHECK-LABEL: fcmp_une
164; CHECK: fcmp s0, s1
165; CHECK-NEXT: b.eq {{LBB.+_2}}
166 %1 = fcmp une float %x, %y
167 br i1 %1, label %bb1, label %bb2
168bb2:
169 ret i32 1
170bb1:
171 ret i32 0
172}
173
174define i32 @icmp_eq(i32 %x, i32 %y) {
175; CHECK-LABEL: icmp_eq
176; CHECK: cmp w0, w1
177; CHECK-NEXT: b.ne {{LBB.+_2}}
178 %1 = icmp eq i32 %x, %y
179 br i1 %1, label %bb1, label %bb2
180bb2:
181 ret i32 1
182bb1:
183 ret i32 0
184}
185
186define i32 @icmp_ne(i32 %x, i32 %y) {
187; CHECK-LABEL: icmp_ne
188; CHECK: cmp w0, w1
189; CHECK-NEXT: b.eq {{LBB.+_2}}
190 %1 = icmp ne i32 %x, %y
191 br i1 %1, label %bb1, label %bb2
192bb2:
193 ret i32 1
194bb1:
195 ret i32 0
196}
197
198define i32 @icmp_ugt(i32 %x, i32 %y) {
199; CHECK-LABEL: icmp_ugt
200; CHECK: cmp w0, w1
201; CHECK-NEXT: b.ls {{LBB.+_2}}
202 %1 = icmp ugt i32 %x, %y
203 br i1 %1, label %bb1, label %bb2
204bb2:
205 ret i32 1
206bb1:
207 ret i32 0
208}
209
210define i32 @icmp_uge(i32 %x, i32 %y) {
211; CHECK-LABEL: icmp_uge
212; CHECK: cmp w0, w1
213; CHECK-NEXT: b.lo {{LBB.+_2}}
214 %1 = icmp uge i32 %x, %y
215 br i1 %1, label %bb1, label %bb2
216bb2:
217 ret i32 1
218bb1:
219 ret i32 0
220}
221
222define i32 @icmp_ult(i32 %x, i32 %y) {
223; CHECK-LABEL: icmp_ult
224; CHECK: cmp w0, w1
225; CHECK-NEXT: b.hs {{LBB.+_2}}
226 %1 = icmp ult i32 %x, %y
227 br i1 %1, label %bb1, label %bb2
228bb2:
229 ret i32 1
230bb1:
231 ret i32 0
232}
233
234define i32 @icmp_ule(i32 %x, i32 %y) {
235; CHECK-LABEL: icmp_ule
236; CHECK: cmp w0, w1
237; CHECK-NEXT: b.hi {{LBB.+_2}}
238 %1 = icmp ule i32 %x, %y
239 br i1 %1, label %bb1, label %bb2
240bb2:
241 ret i32 1
242bb1:
243 ret i32 0
244}
245
246define i32 @icmp_sgt(i32 %x, i32 %y) {
247; CHECK-LABEL: icmp_sgt
248; CHECK: cmp w0, w1
249; CHECK-NEXT: b.le {{LBB.+_2}}
250 %1 = icmp sgt i32 %x, %y
251 br i1 %1, label %bb1, label %bb2
252bb2:
253 ret i32 1
254bb1:
255 ret i32 0
256}
257
258define i32 @icmp_sge(i32 %x, i32 %y) {
259; CHECK-LABEL: icmp_sge
260; CHECK: cmp w0, w1
261; CHECK-NEXT: b.lt {{LBB.+_2}}
262 %1 = icmp sge i32 %x, %y
263 br i1 %1, label %bb1, label %bb2
264bb2:
265 ret i32 1
266bb1:
267 ret i32 0
268}
269
270define i32 @icmp_slt(i32 %x, i32 %y) {
271; CHECK-LABEL: icmp_slt
272; CHECK: cmp w0, w1
273; CHECK-NEXT: b.ge {{LBB.+_2}}
274 %1 = icmp slt i32 %x, %y
275 br i1 %1, label %bb1, label %bb2
276bb2:
277 ret i32 1
278bb1:
279 ret i32 0
280}
281
282define i32 @icmp_sle(i32 %x, i32 %y) {
283; CHECK-LABEL: icmp_sle
284; CHECK: cmp w0, w1
285; CHECK-NEXT: b.gt {{LBB.+_2}}
286 %1 = icmp sle i32 %x, %y
287 br i1 %1, label %bb1, label %bb2
288bb2:
289 ret i32 1
290bb1:
291 ret i32 0
292}
293