Skip to content

Commit 6ff8794

Browse files
committed
fixup! Add truncate tests.
1 parent d651e77 commit 6ff8794

File tree

1 file changed

+76
-2
lines changed

1 file changed

+76
-2
lines changed

llvm/test/CodeGen/RISCV/rvv/combine-ctpop-to-vcpop.ll

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,20 @@ entry:
109109
ret i128 %b
110110
}
111111

112+
define i32 @test_trunc_v128i1(<128 x i1> %x) {
113+
; CHECK-LABEL: test_trunc_v128i1:
114+
; CHECK: # %bb.0: # %entry
115+
; CHECK-NEXT: li a0, 128
116+
; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
117+
; CHECK-NEXT: vcpop.m a0, v0
118+
; CHECK-NEXT: ret
119+
entry:
120+
%a = bitcast <128 x i1> %x to i128
121+
%b = call i128 @llvm.ctpop.i128(i128 %a)
122+
%c = trunc i128 %b to i32
123+
ret i32 %c
124+
}
125+
112126
define i256 @test_v256i1(<256 x i1> %x) {
113127
; RV32-LABEL: test_v256i1:
114128
; RV32: # %bb.0: # %entry
@@ -148,10 +162,10 @@ define i256 @test_v256i1(<256 x i1> %x) {
148162
; RV32-NEXT: sltu a2, a1, a6
149163
; RV32-NEXT: add a3, a4, a3
150164
; RV32-NEXT: add a3, a3, a2
151-
; RV32-NEXT: beq a3, a4, .LBB7_2
165+
; RV32-NEXT: beq a3, a4, .LBB8_2
152166
; RV32-NEXT: # %bb.1: # %entry
153167
; RV32-NEXT: sltu a2, a3, a4
154-
; RV32-NEXT: .LBB7_2: # %entry
168+
; RV32-NEXT: .LBB8_2: # %entry
155169
; RV32-NEXT: sw zero, 16(a0)
156170
; RV32-NEXT: sw zero, 20(a0)
157171
; RV32-NEXT: sw zero, 24(a0)
@@ -189,3 +203,63 @@ entry:
189203
%b = call i256 @llvm.ctpop.i256(i256 %a)
190204
ret i256 %b
191205
}
206+
207+
define i32 @test_trunc_v256i1(<256 x i1> %x) {
208+
; RV32-LABEL: test_trunc_v256i1:
209+
; RV32: # %bb.0: # %entry
210+
; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma
211+
; RV32-NEXT: vslidedown.vi v9, v0, 1
212+
; RV32-NEXT: li a0, 32
213+
; RV32-NEXT: vslidedown.vi v10, v8, 1
214+
; RV32-NEXT: vmv.x.s a1, v0
215+
; RV32-NEXT: vmv.x.s a2, v8
216+
; RV32-NEXT: vsrl.vx v11, v9, a0
217+
; RV32-NEXT: vsrl.vx v12, v0, a0
218+
; RV32-NEXT: vmv.x.s a3, v9
219+
; RV32-NEXT: vsrl.vx v9, v10, a0
220+
; RV32-NEXT: vsrl.vx v8, v8, a0
221+
; RV32-NEXT: vmv.x.s a0, v10
222+
; RV32-NEXT: cpop a2, a2
223+
; RV32-NEXT: cpop a1, a1
224+
; RV32-NEXT: vmv.x.s a4, v11
225+
; RV32-NEXT: vmv.x.s a5, v12
226+
; RV32-NEXT: vmv.x.s a6, v9
227+
; RV32-NEXT: vmv.x.s a7, v8
228+
; RV32-NEXT: cpop a0, a0
229+
; RV32-NEXT: cpop a3, a3
230+
; RV32-NEXT: cpop a7, a7
231+
; RV32-NEXT: cpop a6, a6
232+
; RV32-NEXT: cpop a5, a5
233+
; RV32-NEXT: cpop a4, a4
234+
; RV32-NEXT: add a2, a2, a7
235+
; RV32-NEXT: add a0, a0, a6
236+
; RV32-NEXT: add a1, a1, a5
237+
; RV32-NEXT: add a3, a3, a4
238+
; RV32-NEXT: add a0, a2, a0
239+
; RV32-NEXT: add a1, a1, a3
240+
; RV32-NEXT: add a0, a1, a0
241+
; RV32-NEXT: ret
242+
;
243+
; RV64-LABEL: test_trunc_v256i1:
244+
; RV64: # %bb.0: # %entry
245+
; RV64-NEXT: vsetivli zero, 1, e64, m1, ta, ma
246+
; RV64-NEXT: vslidedown.vi v9, v0, 1
247+
; RV64-NEXT: vmv.x.s a0, v0
248+
; RV64-NEXT: vslidedown.vi v10, v8, 1
249+
; RV64-NEXT: vmv.x.s a1, v8
250+
; RV64-NEXT: vmv.x.s a2, v9
251+
; RV64-NEXT: vmv.x.s a3, v10
252+
; RV64-NEXT: cpop a1, a1
253+
; RV64-NEXT: cpop a0, a0
254+
; RV64-NEXT: cpop a3, a3
255+
; RV64-NEXT: cpop a2, a2
256+
; RV64-NEXT: add a1, a1, a3
257+
; RV64-NEXT: add a0, a0, a2
258+
; RV64-NEXT: add a0, a0, a1
259+
; RV64-NEXT: ret
260+
entry:
261+
%a = bitcast <256 x i1> %x to i256
262+
%b = call i256 @llvm.ctpop.i256(i256 %a)
263+
%c = trunc i256 %b to i32
264+
ret i32 %c
265+
}

0 commit comments

Comments
 (0)