Skip to content

Commit c67353e

Browse files
committed
[RISCV] Pre-commit test
1 parent 950d281 commit c67353e

File tree

1 file changed

+178
-0
lines changed

1 file changed

+178
-0
lines changed

llvm/test/CodeGen/RISCV/rv32xandesperf.ll

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,184 @@
22
; RUN: llc -O0 -mtriple=riscv32 -mattr=+xandesperf -verify-machineinstrs < %s \
33
; RUN: | FileCheck %s
44

5+
; NDS.BBC
6+
7+
define i32 @bbc(i32 %a) nounwind {
8+
; CHECK-LABEL: bbc:
9+
; CHECK: # %bb.0:
10+
; CHECK-NEXT: slli a0, a0, 15
11+
; CHECK-NEXT: bgez a0, .LBB0_2
12+
; CHECK-NEXT: j .LBB0_1
13+
; CHECK-NEXT: .LBB0_1: # %f
14+
; CHECK-NEXT: li a0, 0
15+
; CHECK-NEXT: ret
16+
; CHECK-NEXT: .LBB0_2: # %t
17+
; CHECK-NEXT: li a0, 1
18+
; CHECK-NEXT: ret
19+
%mask = shl i32 1, 16
20+
%and = and i32 %a, %mask
21+
%tst = icmp eq i32 %and, 0
22+
br i1 %tst, label %t, label %f
23+
f:
24+
ret i32 0
25+
t:
26+
ret i32 1
27+
}
28+
29+
define i32 @select_bbc(i32 %a, i32 %b, i32 %c) nounwind {
30+
; CHECK-LABEL: select_bbc:
31+
; CHECK: # %bb.0:
32+
; CHECK-NEXT: addi sp, sp, -16
33+
; CHECK-NEXT: sw a2, 8(sp) # 4-byte Folded Spill
34+
; CHECK-NEXT: slli a0, a0, 15
35+
; CHECK-NEXT: sw a1, 12(sp) # 4-byte Folded Spill
36+
; CHECK-NEXT: bgez a0, .LBB1_2
37+
; CHECK-NEXT: # %bb.1:
38+
; CHECK-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
39+
; CHECK-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
40+
; CHECK-NEXT: .LBB1_2:
41+
; CHECK-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
42+
; CHECK-NEXT: addi sp, sp, 16
43+
; CHECK-NEXT: ret
44+
%mask = shl i32 1, 16
45+
%and = and i32 %a, %mask
46+
%tst = icmp eq i32 %and, 0
47+
%ret = select i1 %tst, i32 %b, i32 %c
48+
ret i32 %ret
49+
}
50+
51+
; NDS.BBS
52+
53+
define i32 @bbs(i32 %a) nounwind {
54+
; CHECK-LABEL: bbs:
55+
; CHECK: # %bb.0:
56+
; CHECK-NEXT: slli a0, a0, 15
57+
; CHECK-NEXT: bltz a0, .LBB2_2
58+
; CHECK-NEXT: j .LBB2_1
59+
; CHECK-NEXT: .LBB2_1: # %f
60+
; CHECK-NEXT: li a0, 0
61+
; CHECK-NEXT: ret
62+
; CHECK-NEXT: .LBB2_2: # %t
63+
; CHECK-NEXT: li a0, 1
64+
; CHECK-NEXT: ret
65+
%mask = shl i32 1, 16
66+
%and = and i32 %a, %mask
67+
%tst = icmp ne i32 %and, 0
68+
br i1 %tst, label %t, label %f
69+
f:
70+
ret i32 0
71+
t:
72+
ret i32 1
73+
}
74+
75+
define i32 @select_bbs(i32 %a, i32 %b, i32 %c) nounwind {
76+
; CHECK-LABEL: select_bbs:
77+
; CHECK: # %bb.0:
78+
; CHECK-NEXT: addi sp, sp, -16
79+
; CHECK-NEXT: sw a2, 8(sp) # 4-byte Folded Spill
80+
; CHECK-NEXT: slli a0, a0, 15
81+
; CHECK-NEXT: sw a1, 12(sp) # 4-byte Folded Spill
82+
; CHECK-NEXT: bltz a0, .LBB3_2
83+
; CHECK-NEXT: # %bb.1:
84+
; CHECK-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
85+
; CHECK-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
86+
; CHECK-NEXT: .LBB3_2:
87+
; CHECK-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
88+
; CHECK-NEXT: addi sp, sp, 16
89+
; CHECK-NEXT: ret
90+
%mask = shl i32 1, 16
91+
%and = and i32 %a, %mask
92+
%tst = icmp ne i32 %and, 0
93+
%ret = select i1 %tst, i32 %b, i32 %c
94+
ret i32 %ret
95+
}
96+
97+
; NDS.BEQC
98+
99+
define i32 @beqc(i32 %a) nounwind {
100+
; CHECK-LABEL: beqc:
101+
; CHECK: # %bb.0:
102+
; CHECK-NEXT: li a1, 5
103+
; CHECK-NEXT: beq a0, a1, .LBB4_2
104+
; CHECK-NEXT: j .LBB4_1
105+
; CHECK-NEXT: .LBB4_1: # %f
106+
; CHECK-NEXT: li a0, 0
107+
; CHECK-NEXT: ret
108+
; CHECK-NEXT: .LBB4_2: # %t
109+
; CHECK-NEXT: li a0, 1
110+
; CHECK-NEXT: ret
111+
%tst = icmp eq i32 %a, 5
112+
br i1 %tst, label %t, label %f
113+
f:
114+
ret i32 0
115+
t:
116+
ret i32 1
117+
}
118+
119+
define i32 @select_beqc(i32 %a, i32 %b, i32 %c) nounwind {
120+
; CHECK-LABEL: select_beqc:
121+
; CHECK: # %bb.0:
122+
; CHECK-NEXT: addi sp, sp, -16
123+
; CHECK-NEXT: sw a2, 8(sp) # 4-byte Folded Spill
124+
; CHECK-NEXT: mv a2, a1
125+
; CHECK-NEXT: li a1, 5
126+
; CHECK-NEXT: sw a2, 12(sp) # 4-byte Folded Spill
127+
; CHECK-NEXT: beq a0, a1, .LBB5_2
128+
; CHECK-NEXT: # %bb.1:
129+
; CHECK-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
130+
; CHECK-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
131+
; CHECK-NEXT: .LBB5_2:
132+
; CHECK-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
133+
; CHECK-NEXT: addi sp, sp, 16
134+
; CHECK-NEXT: ret
135+
%tst = icmp eq i32 %a, 5
136+
%ret = select i1 %tst, i32 %b, i32 %c
137+
ret i32 %ret
138+
}
139+
140+
; NDS.BNEC
141+
142+
define i32 @bnec(i32 %a) nounwind {
143+
; CHECK-LABEL: bnec:
144+
; CHECK: # %bb.0:
145+
; CHECK-NEXT: li a1, 5
146+
; CHECK-NEXT: bne a0, a1, .LBB6_2
147+
; CHECK-NEXT: j .LBB6_1
148+
; CHECK-NEXT: .LBB6_1: # %f
149+
; CHECK-NEXT: li a0, 0
150+
; CHECK-NEXT: ret
151+
; CHECK-NEXT: .LBB6_2: # %t
152+
; CHECK-NEXT: li a0, 1
153+
; CHECK-NEXT: ret
154+
%tst = icmp ne i32 %a, 5
155+
br i1 %tst, label %t, label %f
156+
f:
157+
ret i32 0
158+
t:
159+
ret i32 1
160+
}
161+
162+
define i32 @select_bnec(i32 %a, i32 %b, i32 %c) nounwind {
163+
; CHECK-LABEL: select_bnec:
164+
; CHECK: # %bb.0:
165+
; CHECK-NEXT: addi sp, sp, -16
166+
; CHECK-NEXT: sw a2, 8(sp) # 4-byte Folded Spill
167+
; CHECK-NEXT: mv a2, a1
168+
; CHECK-NEXT: li a1, 5
169+
; CHECK-NEXT: sw a2, 12(sp) # 4-byte Folded Spill
170+
; CHECK-NEXT: bne a0, a1, .LBB7_2
171+
; CHECK-NEXT: # %bb.1:
172+
; CHECK-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
173+
; CHECK-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
174+
; CHECK-NEXT: .LBB7_2:
175+
; CHECK-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
176+
; CHECK-NEXT: addi sp, sp, 16
177+
; CHECK-NEXT: ret
178+
%tst = icmp ne i32 %a, 5
179+
%ret = select i1 %tst, i32 %b, i32 %c
180+
ret i32 %ret
181+
}
182+
5183
; NDS.BFOZ
6184

7185
; MSB >= LSB

0 commit comments

Comments
 (0)