Skip to content

Commit 7963347

Browse files
committed
fixup! Add end to end tests.
1 parent 5036d7f commit 7963347

File tree

2 files changed

+661
-0
lines changed

2 files changed

+661
-0
lines changed
Lines changed: 291 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,291 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc < %s -mtriple=riscv32 -global-isel | FileCheck %s --check-prefix=RV32I
3+
; RUN: llc < %s -mtriple=riscv64 -global-isel | FileCheck %s --check-prefix=RV64I
4+
5+
define i8 @scmp.8.8(i8 signext %x, i8 signext %y) nounwind {
6+
; RV32I-LABEL: scmp.8.8:
7+
; RV32I: # %bb.0:
8+
; RV32I-NEXT: mv a2, a0
9+
; RV32I-NEXT: blt a1, a0, .LBB0_2
10+
; RV32I-NEXT: # %bb.1:
11+
; RV32I-NEXT: li a0, 0
12+
; RV32I-NEXT: blt a2, a1, .LBB0_3
13+
; RV32I-NEXT: j .LBB0_4
14+
; RV32I-NEXT: .LBB0_2:
15+
; RV32I-NEXT: li a0, 1
16+
; RV32I-NEXT: bge a2, a1, .LBB0_4
17+
; RV32I-NEXT: .LBB0_3:
18+
; RV32I-NEXT: li a0, -1
19+
; RV32I-NEXT: .LBB0_4:
20+
; RV32I-NEXT: ret
21+
;
22+
; RV64I-LABEL: scmp.8.8:
23+
; RV64I: # %bb.0:
24+
; RV64I-NEXT: mv a2, a0
25+
; RV64I-NEXT: blt a1, a0, .LBB0_2
26+
; RV64I-NEXT: # %bb.1:
27+
; RV64I-NEXT: li a0, 0
28+
; RV64I-NEXT: blt a2, a1, .LBB0_3
29+
; RV64I-NEXT: j .LBB0_4
30+
; RV64I-NEXT: .LBB0_2:
31+
; RV64I-NEXT: li a0, 1
32+
; RV64I-NEXT: bge a2, a1, .LBB0_4
33+
; RV64I-NEXT: .LBB0_3:
34+
; RV64I-NEXT: li a0, -1
35+
; RV64I-NEXT: .LBB0_4:
36+
; RV64I-NEXT: ret
37+
%1 = call i8 @llvm.scmp(i8 %x, i8 %y)
38+
ret i8 %1
39+
}
40+
41+
define i8 @scmp.8.16(i16 signext %x, i16 signext %y) nounwind {
42+
; RV32I-LABEL: scmp.8.16:
43+
; RV32I: # %bb.0:
44+
; RV32I-NEXT: mv a2, a0
45+
; RV32I-NEXT: blt a1, a0, .LBB1_2
46+
; RV32I-NEXT: # %bb.1:
47+
; RV32I-NEXT: li a0, 0
48+
; RV32I-NEXT: blt a2, a1, .LBB1_3
49+
; RV32I-NEXT: j .LBB1_4
50+
; RV32I-NEXT: .LBB1_2:
51+
; RV32I-NEXT: li a0, 1
52+
; RV32I-NEXT: bge a2, a1, .LBB1_4
53+
; RV32I-NEXT: .LBB1_3:
54+
; RV32I-NEXT: li a0, -1
55+
; RV32I-NEXT: .LBB1_4:
56+
; RV32I-NEXT: ret
57+
;
58+
; RV64I-LABEL: scmp.8.16:
59+
; RV64I: # %bb.0:
60+
; RV64I-NEXT: mv a2, a0
61+
; RV64I-NEXT: blt a1, a0, .LBB1_2
62+
; RV64I-NEXT: # %bb.1:
63+
; RV64I-NEXT: li a0, 0
64+
; RV64I-NEXT: blt a2, a1, .LBB1_3
65+
; RV64I-NEXT: j .LBB1_4
66+
; RV64I-NEXT: .LBB1_2:
67+
; RV64I-NEXT: li a0, 1
68+
; RV64I-NEXT: bge a2, a1, .LBB1_4
69+
; RV64I-NEXT: .LBB1_3:
70+
; RV64I-NEXT: li a0, -1
71+
; RV64I-NEXT: .LBB1_4:
72+
; RV64I-NEXT: ret
73+
%1 = call i8 @llvm.scmp(i16 %x, i16 %y)
74+
ret i8 %1
75+
}
76+
77+
define i8 @scmp.8.32(i32 %x, i32 %y) nounwind {
78+
; RV32I-LABEL: scmp.8.32:
79+
; RV32I: # %bb.0:
80+
; RV32I-NEXT: mv a2, a0
81+
; RV32I-NEXT: blt a1, a0, .LBB2_2
82+
; RV32I-NEXT: # %bb.1:
83+
; RV32I-NEXT: li a0, 0
84+
; RV32I-NEXT: blt a2, a1, .LBB2_3
85+
; RV32I-NEXT: j .LBB2_4
86+
; RV32I-NEXT: .LBB2_2:
87+
; RV32I-NEXT: li a0, 1
88+
; RV32I-NEXT: bge a2, a1, .LBB2_4
89+
; RV32I-NEXT: .LBB2_3:
90+
; RV32I-NEXT: li a0, -1
91+
; RV32I-NEXT: .LBB2_4:
92+
; RV32I-NEXT: ret
93+
;
94+
; RV64I-LABEL: scmp.8.32:
95+
; RV64I: # %bb.0:
96+
; RV64I-NEXT: sext.w a2, a0
97+
; RV64I-NEXT: sext.w a1, a1
98+
; RV64I-NEXT: blt a1, a2, .LBB2_2
99+
; RV64I-NEXT: # %bb.1:
100+
; RV64I-NEXT: li a0, 0
101+
; RV64I-NEXT: blt a2, a1, .LBB2_3
102+
; RV64I-NEXT: j .LBB2_4
103+
; RV64I-NEXT: .LBB2_2:
104+
; RV64I-NEXT: li a0, 1
105+
; RV64I-NEXT: bge a2, a1, .LBB2_4
106+
; RV64I-NEXT: .LBB2_3:
107+
; RV64I-NEXT: li a0, -1
108+
; RV64I-NEXT: .LBB2_4:
109+
; RV64I-NEXT: ret
110+
%1 = call i8 @llvm.scmp(i32 %x, i32 %y)
111+
ret i8 %1
112+
}
113+
114+
define i8 @scmp.8.64(i64 %x, i64 %y) nounwind {
115+
; RV32I-LABEL: scmp.8.64:
116+
; RV32I: # %bb.0:
117+
; RV32I-NEXT: beq a1, a3, .LBB3_2
118+
; RV32I-NEXT: # %bb.1:
119+
; RV32I-NEXT: slt a4, a3, a1
120+
; RV32I-NEXT: bnez a4, .LBB3_3
121+
; RV32I-NEXT: j .LBB3_4
122+
; RV32I-NEXT: .LBB3_2:
123+
; RV32I-NEXT: sltu a4, a2, a0
124+
; RV32I-NEXT: beqz a4, .LBB3_4
125+
; RV32I-NEXT: .LBB3_3:
126+
; RV32I-NEXT: li a4, 1
127+
; RV32I-NEXT: .LBB3_4:
128+
; RV32I-NEXT: beq a1, a3, .LBB3_6
129+
; RV32I-NEXT: # %bb.5:
130+
; RV32I-NEXT: slt a0, a1, a3
131+
; RV32I-NEXT: bnez a0, .LBB3_7
132+
; RV32I-NEXT: j .LBB3_8
133+
; RV32I-NEXT: .LBB3_6:
134+
; RV32I-NEXT: sltu a0, a0, a2
135+
; RV32I-NEXT: beqz a0, .LBB3_8
136+
; RV32I-NEXT: .LBB3_7:
137+
; RV32I-NEXT: li a4, -1
138+
; RV32I-NEXT: .LBB3_8:
139+
; RV32I-NEXT: mv a0, a4
140+
; RV32I-NEXT: ret
141+
;
142+
; RV64I-LABEL: scmp.8.64:
143+
; RV64I: # %bb.0:
144+
; RV64I-NEXT: mv a2, a0
145+
; RV64I-NEXT: blt a1, a0, .LBB3_2
146+
; RV64I-NEXT: # %bb.1:
147+
; RV64I-NEXT: li a0, 0
148+
; RV64I-NEXT: blt a2, a1, .LBB3_3
149+
; RV64I-NEXT: j .LBB3_4
150+
; RV64I-NEXT: .LBB3_2:
151+
; RV64I-NEXT: li a0, 1
152+
; RV64I-NEXT: bge a2, a1, .LBB3_4
153+
; RV64I-NEXT: .LBB3_3:
154+
; RV64I-NEXT: li a0, -1
155+
; RV64I-NEXT: .LBB3_4:
156+
; RV64I-NEXT: ret
157+
%1 = call i8 @llvm.scmp(i64 %x, i64 %y)
158+
ret i8 %1
159+
}
160+
161+
define i32 @scmp.32.32(i32 %x, i32 %y) nounwind {
162+
; RV32I-LABEL: scmp.32.32:
163+
; RV32I: # %bb.0:
164+
; RV32I-NEXT: mv a2, a0
165+
; RV32I-NEXT: blt a1, a0, .LBB4_2
166+
; RV32I-NEXT: # %bb.1:
167+
; RV32I-NEXT: li a0, 0
168+
; RV32I-NEXT: blt a2, a1, .LBB4_3
169+
; RV32I-NEXT: j .LBB4_4
170+
; RV32I-NEXT: .LBB4_2:
171+
; RV32I-NEXT: li a0, 1
172+
; RV32I-NEXT: bge a2, a1, .LBB4_4
173+
; RV32I-NEXT: .LBB4_3:
174+
; RV32I-NEXT: li a0, -1
175+
; RV32I-NEXT: .LBB4_4:
176+
; RV32I-NEXT: ret
177+
;
178+
; RV64I-LABEL: scmp.32.32:
179+
; RV64I: # %bb.0:
180+
; RV64I-NEXT: sext.w a2, a0
181+
; RV64I-NEXT: sext.w a1, a1
182+
; RV64I-NEXT: blt a1, a2, .LBB4_2
183+
; RV64I-NEXT: # %bb.1:
184+
; RV64I-NEXT: li a0, 0
185+
; RV64I-NEXT: blt a2, a1, .LBB4_3
186+
; RV64I-NEXT: j .LBB4_4
187+
; RV64I-NEXT: .LBB4_2:
188+
; RV64I-NEXT: li a0, 1
189+
; RV64I-NEXT: bge a2, a1, .LBB4_4
190+
; RV64I-NEXT: .LBB4_3:
191+
; RV64I-NEXT: li a0, -1
192+
; RV64I-NEXT: .LBB4_4:
193+
; RV64I-NEXT: ret
194+
%1 = call i32 @llvm.scmp(i32 %x, i32 %y)
195+
ret i32 %1
196+
}
197+
198+
define i32 @scmp.32.64(i64 %x, i64 %y) nounwind {
199+
; RV32I-LABEL: scmp.32.64:
200+
; RV32I: # %bb.0:
201+
; RV32I-NEXT: beq a1, a3, .LBB5_2
202+
; RV32I-NEXT: # %bb.1:
203+
; RV32I-NEXT: slt a4, a3, a1
204+
; RV32I-NEXT: bnez a4, .LBB5_3
205+
; RV32I-NEXT: j .LBB5_4
206+
; RV32I-NEXT: .LBB5_2:
207+
; RV32I-NEXT: sltu a4, a2, a0
208+
; RV32I-NEXT: beqz a4, .LBB5_4
209+
; RV32I-NEXT: .LBB5_3:
210+
; RV32I-NEXT: li a4, 1
211+
; RV32I-NEXT: .LBB5_4:
212+
; RV32I-NEXT: beq a1, a3, .LBB5_6
213+
; RV32I-NEXT: # %bb.5:
214+
; RV32I-NEXT: slt a0, a1, a3
215+
; RV32I-NEXT: bnez a0, .LBB5_7
216+
; RV32I-NEXT: j .LBB5_8
217+
; RV32I-NEXT: .LBB5_6:
218+
; RV32I-NEXT: sltu a0, a0, a2
219+
; RV32I-NEXT: beqz a0, .LBB5_8
220+
; RV32I-NEXT: .LBB5_7:
221+
; RV32I-NEXT: li a4, -1
222+
; RV32I-NEXT: .LBB5_8:
223+
; RV32I-NEXT: mv a0, a4
224+
; RV32I-NEXT: ret
225+
;
226+
; RV64I-LABEL: scmp.32.64:
227+
; RV64I: # %bb.0:
228+
; RV64I-NEXT: mv a2, a0
229+
; RV64I-NEXT: blt a1, a0, .LBB5_2
230+
; RV64I-NEXT: # %bb.1:
231+
; RV64I-NEXT: li a0, 0
232+
; RV64I-NEXT: blt a2, a1, .LBB5_3
233+
; RV64I-NEXT: j .LBB5_4
234+
; RV64I-NEXT: .LBB5_2:
235+
; RV64I-NEXT: li a0, 1
236+
; RV64I-NEXT: bge a2, a1, .LBB5_4
237+
; RV64I-NEXT: .LBB5_3:
238+
; RV64I-NEXT: li a0, -1
239+
; RV64I-NEXT: .LBB5_4:
240+
; RV64I-NEXT: ret
241+
%1 = call i32 @llvm.scmp(i64 %x, i64 %y)
242+
ret i32 %1
243+
}
244+
245+
define i64 @scmp.64.64(i64 %x, i64 %y) nounwind {
246+
; RV32I-LABEL: scmp.64.64:
247+
; RV32I: # %bb.0:
248+
; RV32I-NEXT: mv a4, a0
249+
; RV32I-NEXT: beq a1, a3, .LBB6_2
250+
; RV32I-NEXT: # %bb.1:
251+
; RV32I-NEXT: slt a0, a3, a1
252+
; RV32I-NEXT: bnez a0, .LBB6_3
253+
; RV32I-NEXT: j .LBB6_4
254+
; RV32I-NEXT: .LBB6_2:
255+
; RV32I-NEXT: sltu a0, a2, a4
256+
; RV32I-NEXT: beqz a0, .LBB6_4
257+
; RV32I-NEXT: .LBB6_3:
258+
; RV32I-NEXT: li a0, 1
259+
; RV32I-NEXT: .LBB6_4:
260+
; RV32I-NEXT: beq a1, a3, .LBB6_6
261+
; RV32I-NEXT: # %bb.5:
262+
; RV32I-NEXT: slt a1, a1, a3
263+
; RV32I-NEXT: bnez a1, .LBB6_7
264+
; RV32I-NEXT: j .LBB6_8
265+
; RV32I-NEXT: .LBB6_6:
266+
; RV32I-NEXT: sltu a1, a4, a2
267+
; RV32I-NEXT: beqz a1, .LBB6_8
268+
; RV32I-NEXT: .LBB6_7:
269+
; RV32I-NEXT: li a0, -1
270+
; RV32I-NEXT: li a1, -1
271+
; RV32I-NEXT: .LBB6_8:
272+
; RV32I-NEXT: ret
273+
;
274+
; RV64I-LABEL: scmp.64.64:
275+
; RV64I: # %bb.0:
276+
; RV64I-NEXT: mv a2, a0
277+
; RV64I-NEXT: blt a1, a0, .LBB6_2
278+
; RV64I-NEXT: # %bb.1:
279+
; RV64I-NEXT: li a0, 0
280+
; RV64I-NEXT: blt a2, a1, .LBB6_3
281+
; RV64I-NEXT: j .LBB6_4
282+
; RV64I-NEXT: .LBB6_2:
283+
; RV64I-NEXT: li a0, 1
284+
; RV64I-NEXT: bge a2, a1, .LBB6_4
285+
; RV64I-NEXT: .LBB6_3:
286+
; RV64I-NEXT: li a0, -1
287+
; RV64I-NEXT: .LBB6_4:
288+
; RV64I-NEXT: ret
289+
%1 = call i64 @llvm.scmp(i64 %x, i64 %y)
290+
ret i64 %1
291+
}

0 commit comments

Comments
 (0)