Skip to content

Commit 0ca5720

Browse files
committed
Precommit test
1 parent e379b4b commit 0ca5720

File tree

1 file changed

+227
-0
lines changed

1 file changed

+227
-0
lines changed
Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc < %s -mtriple=aarch64 | FileCheck %s
3+
4+
5+
define i1 @lt8_u8(i8 %0) {
6+
; CHECK-LABEL: lt8_u8:
7+
; CHECK: // %bb.0:
8+
; CHECK-NEXT: and w8, w0, #0xff
9+
; CHECK-NEXT: cmp w8, #8
10+
; CHECK-NEXT: cset w0, lo
11+
; CHECK-NEXT: ret
12+
%2 = icmp ult i8 %0, 8
13+
ret i1 %2
14+
}
15+
16+
define i1 @lt32_u8(i8 %0) {
17+
; CHECK-LABEL: lt32_u8:
18+
; CHECK: // %bb.0:
19+
; CHECK-NEXT: and w8, w0, #0xff
20+
; CHECK-NEXT: cmp w8, #32
21+
; CHECK-NEXT: cset w0, lo
22+
; CHECK-NEXT: ret
23+
%2 = icmp ult i8 %0, 32
24+
ret i1 %2
25+
}
26+
27+
define i1 @lt64_u8(i8 %0) {
28+
; CHECK-LABEL: lt64_u8:
29+
; CHECK: // %bb.0:
30+
; CHECK-NEXT: and w8, w0, #0xff
31+
; CHECK-NEXT: cmp w8, #64
32+
; CHECK-NEXT: cset w0, lo
33+
; CHECK-NEXT: ret
34+
%2 = icmp ult i8 %0, 64
35+
ret i1 %2
36+
}
37+
38+
define i1 @lt8_u32(i32 %0) {
39+
; CHECK-LABEL: lt8_u32:
40+
; CHECK: // %bb.0:
41+
; CHECK-NEXT: cmp w0, #8
42+
; CHECK-NEXT: cset w0, lo
43+
; CHECK-NEXT: ret
44+
%2 = icmp ult i32 %0, 8
45+
ret i1 %2
46+
}
47+
48+
define i1 @lt32_u32(i32 %0) {
49+
; CHECK-LABEL: lt32_u32:
50+
; CHECK: // %bb.0:
51+
; CHECK-NEXT: cmp w0, #32
52+
; CHECK-NEXT: cset w0, lo
53+
; CHECK-NEXT: ret
54+
%2 = icmp ult i32 %0, 32
55+
ret i1 %2
56+
}
57+
58+
define i1 @lt64_u32(i32 %0) {
59+
; CHECK-LABEL: lt64_u32:
60+
; CHECK: // %bb.0:
61+
; CHECK-NEXT: cmp w0, #64
62+
; CHECK-NEXT: cset w0, lo
63+
; CHECK-NEXT: ret
64+
%2 = icmp ult i32 %0, 64
65+
ret i1 %2
66+
}
67+
68+
define i1 @lt8_u64(i64 %0) {
69+
; CHECK-LABEL: lt8_u64:
70+
; CHECK: // %bb.0:
71+
; CHECK-NEXT: cmp x0, #8
72+
; CHECK-NEXT: cset w0, lo
73+
; CHECK-NEXT: ret
74+
%2 = icmp ult i64 %0, 8
75+
ret i1 %2
76+
}
77+
78+
define i1 @lt32_u64(i64 %0) {
79+
; CHECK-LABEL: lt32_u64:
80+
; CHECK: // %bb.0:
81+
; CHECK-NEXT: cmp x0, #32
82+
; CHECK-NEXT: cset w0, lo
83+
; CHECK-NEXT: ret
84+
%2 = icmp ult i64 %0, 32
85+
ret i1 %2
86+
}
87+
88+
define i1 @lt64_u64(i64 %0) {
89+
; CHECK-LABEL: lt64_u64:
90+
; CHECK: // %bb.0:
91+
; CHECK-NEXT: cmp x0, #64
92+
; CHECK-NEXT: cset w0, lo
93+
; CHECK-NEXT: ret
94+
%2 = icmp ult i64 %0, 64
95+
ret i1 %2
96+
}
97+
98+
define i1 @lt8_u16_and_5(i8 %0) {
99+
; CHECK-LABEL: lt8_u16_and_5:
100+
; CHECK: // %bb.0:
101+
; CHECK-NEXT: mov w8, #5 // =0x5
102+
; CHECK-NEXT: and w8, w0, w8
103+
; CHECK-NEXT: cmp w8, #16
104+
; CHECK-NEXT: cset w0, lo
105+
; CHECK-NEXT: ret
106+
%2 = and i8 %0, 5
107+
%3 = icmp ult i8 %2, 16
108+
ret i1 %3
109+
}
110+
111+
define i1 @lt8_u16_and_19(i8 %0) {
112+
; CHECK-LABEL: lt8_u16_and_19:
113+
; CHECK: // %bb.0:
114+
; CHECK-NEXT: mov w8, #19 // =0x13
115+
; CHECK-NEXT: and w8, w0, w8
116+
; CHECK-NEXT: cmp w8, #16
117+
; CHECK-NEXT: cset w0, lo
118+
; CHECK-NEXT: ret
119+
%2 = and i8 %0, 19
120+
%3 = icmp ult i8 %2, 16
121+
ret i1 %3
122+
}
123+
124+
define i1 @lt32_u16_and_7(i32 %0) {
125+
; CHECK-LABEL: lt32_u16_and_7:
126+
; CHECK: // %bb.0:
127+
; CHECK-NEXT: and w8, w0, #0x7
128+
; CHECK-NEXT: cmp w8, #16
129+
; CHECK-NEXT: cset w0, lo
130+
; CHECK-NEXT: ret
131+
%2 = and i32 %0, 7
132+
%3 = icmp ult i32 %2, 16
133+
ret i1 %3
134+
}
135+
136+
define i1 @lt32_u16_and_21(i32 %0) {
137+
; CHECK-LABEL: lt32_u16_and_21:
138+
; CHECK: // %bb.0:
139+
; CHECK-NEXT: mov w8, #21 // =0x15
140+
; CHECK-NEXT: and w8, w0, w8
141+
; CHECK-NEXT: cmp w8, #16
142+
; CHECK-NEXT: cset w0, lo
143+
; CHECK-NEXT: ret
144+
%2 = and i32 %0, 21
145+
%3 = icmp ult i32 %2, 16
146+
ret i1 %3
147+
}
148+
149+
define i1 @lt64_u16_and_9(i64 %0) {
150+
; CHECK-LABEL: lt64_u16_and_9:
151+
; CHECK: // %bb.0:
152+
; CHECK-NEXT: mov w8, #9 // =0x9
153+
; CHECK-NEXT: and x8, x0, x8
154+
; CHECK-NEXT: cmp x8, #16
155+
; CHECK-NEXT: cset w0, lo
156+
; CHECK-NEXT: ret
157+
%2 = and i64 %0, 9
158+
%3 = icmp ult i64 %2, 16
159+
ret i1 %3
160+
}
161+
162+
define i1 @lt64_u16_and_23(i64 %0) {
163+
; CHECK-LABEL: lt64_u16_and_23:
164+
; CHECK: // %bb.0:
165+
; CHECK-NEXT: mov w8, #23 // =0x17
166+
; CHECK-NEXT: and x8, x0, x8
167+
; CHECK-NEXT: cmp x8, #16
168+
; CHECK-NEXT: cset w0, lo
169+
; CHECK-NEXT: ret
170+
%2 = and i64 %0, 23
171+
%3 = icmp ult i64 %2, 16
172+
ret i1 %3
173+
}
174+
175+
; negative test
176+
define i1 @lt3_u8(i8 %0) {
177+
; CHECK-LABEL: lt3_u8:
178+
; CHECK: // %bb.0:
179+
; CHECK-NEXT: and w8, w0, #0xff
180+
; CHECK-NEXT: cmp w8, #3
181+
; CHECK-NEXT: cset w0, lo
182+
; CHECK-NEXT: ret
183+
%2 = icmp ult i8 %0, 3
184+
ret i1 %2
185+
}
186+
187+
; negative test
188+
define i1 @lt3_u32(i32 %0) {
189+
; CHECK-LABEL: lt3_u32:
190+
; CHECK: // %bb.0:
191+
; CHECK-NEXT: cmp w0, #3
192+
; CHECK-NEXT: cset w0, lo
193+
; CHECK-NEXT: ret
194+
%2 = icmp ult i32 %0, 3
195+
ret i1 %2
196+
}
197+
198+
; negative test
199+
define i1 @lt3_u64(i64 %0) {
200+
; CHECK-LABEL: lt3_u64:
201+
; CHECK: // %bb.0:
202+
; CHECK-NEXT: cmp x0, #3
203+
; CHECK-NEXT: cset w0, lo
204+
; CHECK-NEXT: ret
205+
%2 = icmp ult i64 %0, 3
206+
ret i1 %2
207+
}
208+
209+
; negative test
210+
define i32 @lt32_u16_multiple_use(i32 %0) {
211+
; CHECK-LABEL: lt32_u16_multiple_use:
212+
; CHECK: // %bb.0:
213+
; CHECK-NEXT: mov w8, #21 // =0x15
214+
; CHECK-NEXT: mov w9, #10 // =0xa
215+
; CHECK-NEXT: and w8, w0, w8
216+
; CHECK-NEXT: cmp w8, #16
217+
; CHECK-NEXT: orr w8, w8, w9
218+
; CHECK-NEXT: cset w10, lo
219+
; CHECK-NEXT: mul w0, w8, w10
220+
; CHECK-NEXT: ret
221+
%2 = and i32 %0, 21
222+
%3 = icmp ult i32 %2, 16
223+
%4 = add i32 %2, 10
224+
%5 = zext i1 %3 to i32
225+
%6 = mul i32 %4, %5
226+
ret i32 %6
227+
}

0 commit comments

Comments
 (0)