Skip to content

Commit 0ccd57e

Browse files
committed
[RISCV] Add basic coverage of vector.partial.reduce.add [nfc]
1 parent 4964d98 commit 0ccd57e

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2+
; RUN: llc -mtriple=riscv32 -mattr=+v -o - %s | FileCheck %s
3+
; RUN: llc -mtriple=riscv64 -mattr=+v -o - %s | FileCheck %s
4+
5+
define <4 x i32> @partial_reduce_add_v4i32_v4i32(<4 x i32> %accumulator, <4 x i32> %0) {
6+
; CHECK-LABEL: partial_reduce_add_v4i32_v4i32:
7+
; CHECK: # %bb.0: # %entry
8+
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
9+
; CHECK-NEXT: vadd.vv v8, v8, v9
10+
; CHECK-NEXT: ret
11+
entry:
12+
%partial.reduce = call <4 x i32> @llvm.experimental.vector.partial.reduce.add(<4 x i32> %accumulator, <4 x i32> %0)
13+
ret <4 x i32> %partial.reduce
14+
}
15+
16+
define <4 x i32> @partial_reduce_add_v4i32_v8i32(<4 x i32> %accumulator, <8 x i32> %0) {
17+
; CHECK-LABEL: partial_reduce_add_v4i32_v8i32:
18+
; CHECK: # %bb.0: # %entry
19+
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
20+
; CHECK-NEXT: vadd.vv v12, v8, v10
21+
; CHECK-NEXT: vsetivli zero, 4, e32, m2, ta, ma
22+
; CHECK-NEXT: vslidedown.vi v8, v10, 4
23+
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
24+
; CHECK-NEXT: vadd.vv v8, v8, v12
25+
; CHECK-NEXT: ret
26+
entry:
27+
%partial.reduce = call <4 x i32> @llvm.experimental.vector.partial.reduce.add(<4 x i32> %accumulator, <8 x i32> %0)
28+
ret <4 x i32> %partial.reduce
29+
}
30+
31+
define <vscale x 4 x i32> @partial_reduce_add_nvx4i32_nvx4i32(<vscale x 4 x i32> %accumulator, <vscale x 4 x i32> %0) {
32+
; CHECK-LABEL: partial_reduce_add_nvx4i32_nvx4i32:
33+
; CHECK: # %bb.0: # %entry
34+
; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
35+
; CHECK-NEXT: vadd.vv v8, v8, v10
36+
; CHECK-NEXT: ret
37+
entry:
38+
%partial.reduce = call <vscale x 4 x i32> @llvm.experimental.vector.partial.reduce.add(<vscale x 4 x i32> %accumulator, <vscale x 4 x i32> %0)
39+
ret <vscale x 4 x i32> %partial.reduce
40+
}
41+
42+
define <vscale x 4 x i32> @partial_reduce_add_nvx4i32_nvx8i32(<vscale x 4 x i32> %accumulator, <vscale x 8 x i32> %0) {
43+
; CHECK-LABEL: partial_reduce_add_nvx4i32_nvx8i32:
44+
; CHECK: # %bb.0: # %entry
45+
; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
46+
; CHECK-NEXT: vadd.vv v8, v8, v12
47+
; CHECK-NEXT: vadd.vv v8, v14, v8
48+
; CHECK-NEXT: ret
49+
entry:
50+
%partial.reduce = call <vscale x 4 x i32> @llvm.experimental.vector.partial.reduce.add(<vscale x 4 x i32> %accumulator, <vscale x 8 x i32> %0)
51+
ret <vscale x 4 x i32> %partial.reduce
52+
}
53+
54+
define <vscale x 4 x i32> @partial_reduce_add_nvx4i32_nvx16i32(<vscale x 4 x i32> %accumulator, <vscale x 16 x i32> %0) {
55+
; CHECK-LABEL: partial_reduce_add_nvx4i32_nvx16i32:
56+
; CHECK: # %bb.0: # %entry
57+
; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
58+
; CHECK-NEXT: vadd.vv v10, v18, v20
59+
; CHECK-NEXT: vadd.vv v8, v8, v16
60+
; CHECK-NEXT: vadd.vv v8, v22, v8
61+
; CHECK-NEXT: vadd.vv v8, v10, v8
62+
; CHECK-NEXT: ret
63+
entry:
64+
%partial.reduce = call <vscale x 4 x i32> @llvm.experimental.vector.partial.reduce.add(<vscale x 4 x i32> %accumulator, <vscale x 16 x i32> %0)
65+
ret <vscale x 4 x i32> %partial.reduce
66+
}
67+
68+
define <vscale x 8 x i32> @partial_reduce_add_nvx8i32_nvx16i32(<vscale x 8 x i32> %accumulator, <vscale x 16 x i32> %0) {
69+
; CHECK-LABEL: partial_reduce_add_nvx8i32_nvx16i32:
70+
; CHECK: # %bb.0: # %entry
71+
; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
72+
; CHECK-NEXT: vadd.vv v8, v8, v16
73+
; CHECK-NEXT: vadd.vv v8, v20, v8
74+
; CHECK-NEXT: ret
75+
entry:
76+
%partial.reduce = call <vscale x 8 x i32> @llvm.experimental.vector.partial.reduce.add(<vscale x 8 x i32> %accumulator, <vscale x 16 x i32> %0)
77+
ret <vscale x 8 x i32> %partial.reduce
78+
}
79+

0 commit comments

Comments
 (0)