Skip to content

Commit 7326501

Browse files
committed
Precommit tests for new targets
1 parent 66cd2e0 commit 7326501

File tree

12 files changed

+2005
-0
lines changed

12 files changed

+2005
-0
lines changed

llvm/test/CodeGen/ARM/scmp.ll

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -mtriple=thumbv7-apple-darwin %s -o - | FileCheck %s
3+
4+
define i8 @scmp_8_8(i8 %x, i8 %y) nounwind {
5+
; CHECK-LABEL: scmp_8_8:
6+
; CHECK: @ %bb.0:
7+
; CHECK-NEXT: sxtb r2, r0
8+
; CHECK-NEXT: movs r0, #0
9+
; CHECK-NEXT: sxtb r1, r1
10+
; CHECK-NEXT: cmp r2, r1
11+
; CHECK-NEXT: it gt
12+
; CHECK-NEXT: movgt r0, #1
13+
; CHECK-NEXT: cmp r0, #0
14+
; CHECK-NEXT: it ne
15+
; CHECK-NEXT: movne r0, #1
16+
; CHECK-NEXT: cmp r2, r1
17+
; CHECK-NEXT: it lt
18+
; CHECK-NEXT: movlt.w r0, #-1
19+
; CHECK-NEXT: bx lr
20+
%1 = call i8 @llvm.scmp(i8 %x, i8 %y)
21+
ret i8 %1
22+
}
23+
24+
define i8 @scmp_8_16(i16 %x, i16 %y) nounwind {
25+
; CHECK-LABEL: scmp_8_16:
26+
; CHECK: @ %bb.0:
27+
; CHECK-NEXT: sxth r2, r0
28+
; CHECK-NEXT: movs r0, #0
29+
; CHECK-NEXT: sxth r1, r1
30+
; CHECK-NEXT: cmp r2, r1
31+
; CHECK-NEXT: it gt
32+
; CHECK-NEXT: movgt r0, #1
33+
; CHECK-NEXT: cmp r0, #0
34+
; CHECK-NEXT: it ne
35+
; CHECK-NEXT: movne r0, #1
36+
; CHECK-NEXT: cmp r2, r1
37+
; CHECK-NEXT: it lt
38+
; CHECK-NEXT: movlt.w r0, #-1
39+
; CHECK-NEXT: bx lr
40+
%1 = call i8 @llvm.scmp(i16 %x, i16 %y)
41+
ret i8 %1
42+
}
43+
44+
define i8 @scmp_8_32(i32 %x, i32 %y) nounwind {
45+
; CHECK-LABEL: scmp_8_32:
46+
; CHECK: @ %bb.0:
47+
; CHECK-NEXT: movs r2, #0
48+
; CHECK-NEXT: cmp r0, r1
49+
; CHECK-NEXT: it gt
50+
; CHECK-NEXT: movgt r2, #1
51+
; CHECK-NEXT: cmp r2, #0
52+
; CHECK-NEXT: it ne
53+
; CHECK-NEXT: movne r2, #1
54+
; CHECK-NEXT: cmp r0, r1
55+
; CHECK-NEXT: it lt
56+
; CHECK-NEXT: movlt.w r2, #-1
57+
; CHECK-NEXT: mov r0, r2
58+
; CHECK-NEXT: bx lr
59+
%1 = call i8 @llvm.scmp(i32 %x, i32 %y)
60+
ret i8 %1
61+
}
62+
63+
define i8 @scmp_8_64(i64 %x, i64 %y) nounwind {
64+
; CHECK-LABEL: scmp_8_64:
65+
; CHECK: @ %bb.0:
66+
; CHECK-NEXT: subs.w r12, r2, r0
67+
; CHECK-NEXT: mov.w r9, #0
68+
; CHECK-NEXT: sbcs.w r12, r3, r1
69+
; CHECK-NEXT: it lt
70+
; CHECK-NEXT: movlt.w r9, #1
71+
; CHECK-NEXT: cmp.w r9, #0
72+
; CHECK-NEXT: it ne
73+
; CHECK-NEXT: movne.w r9, #1
74+
; CHECK-NEXT: subs r0, r0, r2
75+
; CHECK-NEXT: sbcs.w r0, r1, r3
76+
; CHECK-NEXT: it lt
77+
; CHECK-NEXT: movlt.w r9, #-1
78+
; CHECK-NEXT: mov r0, r9
79+
; CHECK-NEXT: bx lr
80+
%1 = call i8 @llvm.scmp(i64 %x, i64 %y)
81+
ret i8 %1
82+
}
83+
84+
define i8 @scmp_8_128(i128 %x, i128 %y) nounwind {
85+
; CHECK-LABEL: scmp_8_128:
86+
; CHECK: @ %bb.0:
87+
; CHECK-NEXT: push {r4, r5, r6, lr}
88+
; CHECK-NEXT: ldrd r12, lr, [sp, #16]
89+
; CHECK-NEXT: mov.w r9, #0
90+
; CHECK-NEXT: ldrd r4, r5, [sp, #24]
91+
; CHECK-NEXT: subs.w r6, r12, r0
92+
; CHECK-NEXT: sbcs.w r6, lr, r1
93+
; CHECK-NEXT: sbcs.w r6, r4, r2
94+
; CHECK-NEXT: sbcs.w r6, r5, r3
95+
; CHECK-NEXT: it lt
96+
; CHECK-NEXT: movlt.w r9, #1
97+
; CHECK-NEXT: cmp.w r9, #0
98+
; CHECK-NEXT: it ne
99+
; CHECK-NEXT: movne.w r9, #1
100+
; CHECK-NEXT: subs.w r0, r0, r12
101+
; CHECK-NEXT: sbcs.w r0, r1, lr
102+
; CHECK-NEXT: sbcs.w r0, r2, r4
103+
; CHECK-NEXT: sbcs.w r0, r3, r5
104+
; CHECK-NEXT: it lt
105+
; CHECK-NEXT: movlt.w r9, #-1
106+
; CHECK-NEXT: mov r0, r9
107+
; CHECK-NEXT: pop {r4, r5, r6, pc}
108+
%1 = call i8 @llvm.scmp(i128 %x, i128 %y)
109+
ret i8 %1
110+
}
111+
112+
define i32 @scmp_32_32(i32 %x, i32 %y) nounwind {
113+
; CHECK-LABEL: scmp_32_32:
114+
; CHECK: @ %bb.0:
115+
; CHECK-NEXT: movs r2, #0
116+
; CHECK-NEXT: cmp r0, r1
117+
; CHECK-NEXT: it gt
118+
; CHECK-NEXT: movgt r2, #1
119+
; CHECK-NEXT: cmp r2, #0
120+
; CHECK-NEXT: it ne
121+
; CHECK-NEXT: movne r2, #1
122+
; CHECK-NEXT: cmp r0, r1
123+
; CHECK-NEXT: it lt
124+
; CHECK-NEXT: movlt.w r2, #-1
125+
; CHECK-NEXT: mov r0, r2
126+
; CHECK-NEXT: bx lr
127+
%1 = call i32 @llvm.scmp(i32 %x, i32 %y)
128+
ret i32 %1
129+
}
130+
131+
define i32 @scmp_32_64(i64 %x, i64 %y) nounwind {
132+
; CHECK-LABEL: scmp_32_64:
133+
; CHECK: @ %bb.0:
134+
; CHECK-NEXT: subs.w r12, r2, r0
135+
; CHECK-NEXT: mov.w r9, #0
136+
; CHECK-NEXT: sbcs.w r12, r3, r1
137+
; CHECK-NEXT: it lt
138+
; CHECK-NEXT: movlt.w r9, #1
139+
; CHECK-NEXT: cmp.w r9, #0
140+
; CHECK-NEXT: it ne
141+
; CHECK-NEXT: movne.w r9, #1
142+
; CHECK-NEXT: subs r0, r0, r2
143+
; CHECK-NEXT: sbcs.w r0, r1, r3
144+
; CHECK-NEXT: it lt
145+
; CHECK-NEXT: movlt.w r9, #-1
146+
; CHECK-NEXT: mov r0, r9
147+
; CHECK-NEXT: bx lr
148+
%1 = call i32 @llvm.scmp(i64 %x, i64 %y)
149+
ret i32 %1
150+
}
151+
152+
define i64 @scmp_64_64(i64 %x, i64 %y) nounwind {
153+
; CHECK-LABEL: scmp_64_64:
154+
; CHECK: @ %bb.0:
155+
; CHECK-NEXT: subs.w r12, r0, r2
156+
; CHECK-NEXT: mov.w r9, #0
157+
; CHECK-NEXT: sbcs.w r12, r1, r3
158+
; CHECK-NEXT: mov.w r12, #0
159+
; CHECK-NEXT: it lt
160+
; CHECK-NEXT: movlt.w r12, #1
161+
; CHECK-NEXT: subs r0, r2, r0
162+
; CHECK-NEXT: sbcs.w r0, r3, r1
163+
; CHECK-NEXT: it lt
164+
; CHECK-NEXT: movlt.w r9, #1
165+
; CHECK-NEXT: cmp.w r9, #0
166+
; CHECK-NEXT: it ne
167+
; CHECK-NEXT: movne.w r9, #1
168+
; CHECK-NEXT: cmp.w r12, #0
169+
; CHECK-NEXT: itt ne
170+
; CHECK-NEXT: movne.w r9, #-1
171+
; CHECK-NEXT: movne.w r12, #-1
172+
; CHECK-NEXT: mov r0, r9
173+
; CHECK-NEXT: mov r1, r12
174+
; CHECK-NEXT: bx lr
175+
%1 = call i64 @llvm.scmp(i64 %x, i64 %y)
176+
ret i64 %1
177+
}

llvm/test/CodeGen/ARM/ucmp.ll

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -mtriple=thumbv7-apple-darwin %s -o - | FileCheck %s
3+
4+
define i8 @ucmp_8_8(i8 %x, i8 %y) nounwind {
5+
; CHECK-LABEL: ucmp_8_8:
6+
; CHECK: @ %bb.0:
7+
; CHECK-NEXT: uxtb r2, r0
8+
; CHECK-NEXT: movs r0, #0
9+
; CHECK-NEXT: uxtb r1, r1
10+
; CHECK-NEXT: cmp r2, r1
11+
; CHECK-NEXT: it hi
12+
; CHECK-NEXT: movhi r0, #1
13+
; CHECK-NEXT: cmp r0, #0
14+
; CHECK-NEXT: it ne
15+
; CHECK-NEXT: movne r0, #1
16+
; CHECK-NEXT: cmp r2, r1
17+
; CHECK-NEXT: it lo
18+
; CHECK-NEXT: movlo.w r0, #-1
19+
; CHECK-NEXT: bx lr
20+
%1 = call i8 @llvm.ucmp(i8 %x, i8 %y)
21+
ret i8 %1
22+
}
23+
24+
define i8 @ucmp_8_16(i16 %x, i16 %y) nounwind {
25+
; CHECK-LABEL: ucmp_8_16:
26+
; CHECK: @ %bb.0:
27+
; CHECK-NEXT: uxth r2, r0
28+
; CHECK-NEXT: movs r0, #0
29+
; CHECK-NEXT: uxth r1, r1
30+
; CHECK-NEXT: cmp r2, r1
31+
; CHECK-NEXT: it hi
32+
; CHECK-NEXT: movhi r0, #1
33+
; CHECK-NEXT: cmp r0, #0
34+
; CHECK-NEXT: it ne
35+
; CHECK-NEXT: movne r0, #1
36+
; CHECK-NEXT: cmp r2, r1
37+
; CHECK-NEXT: it lo
38+
; CHECK-NEXT: movlo.w r0, #-1
39+
; CHECK-NEXT: bx lr
40+
%1 = call i8 @llvm.ucmp(i16 %x, i16 %y)
41+
ret i8 %1
42+
}
43+
44+
define i8 @ucmp_8_32(i32 %x, i32 %y) nounwind {
45+
; CHECK-LABEL: ucmp_8_32:
46+
; CHECK: @ %bb.0:
47+
; CHECK-NEXT: movs r2, #0
48+
; CHECK-NEXT: cmp r0, r1
49+
; CHECK-NEXT: it hi
50+
; CHECK-NEXT: movhi r2, #1
51+
; CHECK-NEXT: cmp r2, #0
52+
; CHECK-NEXT: it ne
53+
; CHECK-NEXT: movne r2, #1
54+
; CHECK-NEXT: cmp r0, r1
55+
; CHECK-NEXT: it lo
56+
; CHECK-NEXT: movlo.w r2, #-1
57+
; CHECK-NEXT: mov r0, r2
58+
; CHECK-NEXT: bx lr
59+
%1 = call i8 @llvm.ucmp(i32 %x, i32 %y)
60+
ret i8 %1
61+
}
62+
63+
define i8 @ucmp_8_64(i64 %x, i64 %y) nounwind {
64+
; CHECK-LABEL: ucmp_8_64:
65+
; CHECK: @ %bb.0:
66+
; CHECK-NEXT: subs.w r12, r2, r0
67+
; CHECK-NEXT: mov.w r9, #0
68+
; CHECK-NEXT: sbcs.w r12, r3, r1
69+
; CHECK-NEXT: it lo
70+
; CHECK-NEXT: movlo.w r9, #1
71+
; CHECK-NEXT: cmp.w r9, #0
72+
; CHECK-NEXT: it ne
73+
; CHECK-NEXT: movne.w r9, #1
74+
; CHECK-NEXT: subs r0, r0, r2
75+
; CHECK-NEXT: sbcs.w r0, r1, r3
76+
; CHECK-NEXT: it lo
77+
; CHECK-NEXT: movlo.w r9, #-1
78+
; CHECK-NEXT: mov r0, r9
79+
; CHECK-NEXT: bx lr
80+
%1 = call i8 @llvm.ucmp(i64 %x, i64 %y)
81+
ret i8 %1
82+
}
83+
84+
define i8 @ucmp_8_128(i128 %x, i128 %y) nounwind {
85+
; CHECK-LABEL: ucmp_8_128:
86+
; CHECK: @ %bb.0:
87+
; CHECK-NEXT: push {r4, r5, r6, lr}
88+
; CHECK-NEXT: ldrd r12, lr, [sp, #16]
89+
; CHECK-NEXT: mov.w r9, #0
90+
; CHECK-NEXT: ldrd r4, r5, [sp, #24]
91+
; CHECK-NEXT: subs.w r6, r12, r0
92+
; CHECK-NEXT: sbcs.w r6, lr, r1
93+
; CHECK-NEXT: sbcs.w r6, r4, r2
94+
; CHECK-NEXT: sbcs.w r6, r5, r3
95+
; CHECK-NEXT: it lo
96+
; CHECK-NEXT: movlo.w r9, #1
97+
; CHECK-NEXT: cmp.w r9, #0
98+
; CHECK-NEXT: it ne
99+
; CHECK-NEXT: movne.w r9, #1
100+
; CHECK-NEXT: subs.w r0, r0, r12
101+
; CHECK-NEXT: sbcs.w r0, r1, lr
102+
; CHECK-NEXT: sbcs.w r0, r2, r4
103+
; CHECK-NEXT: sbcs.w r0, r3, r5
104+
; CHECK-NEXT: it lo
105+
; CHECK-NEXT: movlo.w r9, #-1
106+
; CHECK-NEXT: mov r0, r9
107+
; CHECK-NEXT: pop {r4, r5, r6, pc}
108+
%1 = call i8 @llvm.ucmp(i128 %x, i128 %y)
109+
ret i8 %1
110+
}
111+
112+
define i32 @ucmp_32_32(i32 %x, i32 %y) nounwind {
113+
; CHECK-LABEL: ucmp_32_32:
114+
; CHECK: @ %bb.0:
115+
; CHECK-NEXT: movs r2, #0
116+
; CHECK-NEXT: cmp r0, r1
117+
; CHECK-NEXT: it hi
118+
; CHECK-NEXT: movhi r2, #1
119+
; CHECK-NEXT: cmp r2, #0
120+
; CHECK-NEXT: it ne
121+
; CHECK-NEXT: movne r2, #1
122+
; CHECK-NEXT: cmp r0, r1
123+
; CHECK-NEXT: it lo
124+
; CHECK-NEXT: movlo.w r2, #-1
125+
; CHECK-NEXT: mov r0, r2
126+
; CHECK-NEXT: bx lr
127+
%1 = call i32 @llvm.ucmp(i32 %x, i32 %y)
128+
ret i32 %1
129+
}
130+
131+
define i32 @ucmp_32_64(i64 %x, i64 %y) nounwind {
132+
; CHECK-LABEL: ucmp_32_64:
133+
; CHECK: @ %bb.0:
134+
; CHECK-NEXT: subs.w r12, r2, r0
135+
; CHECK-NEXT: mov.w r9, #0
136+
; CHECK-NEXT: sbcs.w r12, r3, r1
137+
; CHECK-NEXT: it lo
138+
; CHECK-NEXT: movlo.w r9, #1
139+
; CHECK-NEXT: cmp.w r9, #0
140+
; CHECK-NEXT: it ne
141+
; CHECK-NEXT: movne.w r9, #1
142+
; CHECK-NEXT: subs r0, r0, r2
143+
; CHECK-NEXT: sbcs.w r0, r1, r3
144+
; CHECK-NEXT: it lo
145+
; CHECK-NEXT: movlo.w r9, #-1
146+
; CHECK-NEXT: mov r0, r9
147+
; CHECK-NEXT: bx lr
148+
%1 = call i32 @llvm.ucmp(i64 %x, i64 %y)
149+
ret i32 %1
150+
}
151+
152+
define i64 @ucmp_64_64(i64 %x, i64 %y) nounwind {
153+
; CHECK-LABEL: ucmp_64_64:
154+
; CHECK: @ %bb.0:
155+
; CHECK-NEXT: subs.w r12, r0, r2
156+
; CHECK-NEXT: mov.w r9, #0
157+
; CHECK-NEXT: sbcs.w r12, r1, r3
158+
; CHECK-NEXT: mov.w r12, #0
159+
; CHECK-NEXT: it lo
160+
; CHECK-NEXT: movlo.w r12, #1
161+
; CHECK-NEXT: subs r0, r2, r0
162+
; CHECK-NEXT: sbcs.w r0, r3, r1
163+
; CHECK-NEXT: it lo
164+
; CHECK-NEXT: movlo.w r9, #1
165+
; CHECK-NEXT: cmp.w r9, #0
166+
; CHECK-NEXT: it ne
167+
; CHECK-NEXT: movne.w r9, #1
168+
; CHECK-NEXT: cmp.w r12, #0
169+
; CHECK-NEXT: itt ne
170+
; CHECK-NEXT: movne.w r9, #-1
171+
; CHECK-NEXT: movne.w r12, #-1
172+
; CHECK-NEXT: mov r0, r9
173+
; CHECK-NEXT: mov r1, r12
174+
; CHECK-NEXT: bx lr
175+
%1 = call i64 @llvm.ucmp(i64 %x, i64 %y)
176+
ret i64 %1
177+
}

0 commit comments

Comments
 (0)