77define void @constant_forward_stride (ptr %s , ptr %d ) {
88; CHECK-LABEL: constant_forward_stride:
99; CHECK: # %bb.0:
10- ; CHECK-NEXT: addi a2, a0, 16
11- ; CHECK-NEXT: addi a3, a0, 32
12- ; CHECK-NEXT: addi a4, a0, 48
13- ; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
14- ; CHECK-NEXT: vle8.v v8, (a0)
15- ; CHECK-NEXT: vle8.v v9, (a2)
16- ; CHECK-NEXT: vle8.v v10, (a3)
17- ; CHECK-NEXT: vle8.v v11, (a4)
18- ; CHECK-NEXT: vsetivli zero, 4, e8, mf2, tu, ma
19- ; CHECK-NEXT: vslideup.vi v8, v9, 2
20- ; CHECK-NEXT: vsetivli zero, 6, e8, mf2, tu, ma
21- ; CHECK-NEXT: vslideup.vi v8, v10, 4
22- ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
23- ; CHECK-NEXT: vslideup.vi v8, v11, 6
24- ; CHECK-NEXT: vse8.v v8, (a1)
10+ ; CHECK-NEXT: li a2, 16
11+ ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
12+ ; CHECK-NEXT: vlse16.v v8, (a0), a2
13+ ; CHECK-NEXT: vse16.v v8, (a1)
2514; CHECK-NEXT: ret
2615 %1 = getelementptr inbounds i8 , ptr %s , i64 16
2716 %2 = getelementptr inbounds i8 , ptr %s , i64 32
@@ -40,21 +29,11 @@ define void @constant_forward_stride(ptr %s, ptr %d) {
4029define void @constant_forward_stride2 (ptr %s , ptr %d ) {
4130; CHECK-LABEL: constant_forward_stride2:
4231; CHECK: # %bb.0:
43- ; CHECK-NEXT: addi a2, a0, -16
44- ; CHECK-NEXT: addi a3, a0, -32
45- ; CHECK-NEXT: addi a4, a0, -48
46- ; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
47- ; CHECK-NEXT: vle8.v v8, (a4)
48- ; CHECK-NEXT: vle8.v v9, (a3)
49- ; CHECK-NEXT: vle8.v v10, (a2)
50- ; CHECK-NEXT: vle8.v v11, (a0)
51- ; CHECK-NEXT: vsetivli zero, 4, e8, mf2, tu, ma
52- ; CHECK-NEXT: vslideup.vi v8, v9, 2
53- ; CHECK-NEXT: vsetivli zero, 6, e8, mf2, tu, ma
54- ; CHECK-NEXT: vslideup.vi v8, v10, 4
55- ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
56- ; CHECK-NEXT: vslideup.vi v8, v11, 6
57- ; CHECK-NEXT: vse8.v v8, (a1)
32+ ; CHECK-NEXT: addi a0, a0, -48
33+ ; CHECK-NEXT: li a2, 16
34+ ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
35+ ; CHECK-NEXT: vlse16.v v8, (a0), a2
36+ ; CHECK-NEXT: vse16.v v8, (a1)
5837; CHECK-NEXT: ret
5938 %1 = getelementptr inbounds i8 , ptr %s , i64 -16
6039 %2 = getelementptr inbounds i8 , ptr %s , i64 -32
@@ -73,21 +52,10 @@ define void @constant_forward_stride2(ptr %s, ptr %d) {
7352define void @constant_forward_stride3 (ptr %s , ptr %d ) {
7453; CHECK-LABEL: constant_forward_stride3:
7554; CHECK: # %bb.0:
76- ; CHECK-NEXT: addi a2, a0, 16
77- ; CHECK-NEXT: addi a3, a0, 32
78- ; CHECK-NEXT: addi a4, a0, 48
79- ; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
80- ; CHECK-NEXT: vle8.v v8, (a0)
81- ; CHECK-NEXT: vle8.v v9, (a2)
82- ; CHECK-NEXT: vle8.v v10, (a3)
83- ; CHECK-NEXT: vle8.v v11, (a4)
84- ; CHECK-NEXT: vsetivli zero, 4, e8, mf2, tu, ma
85- ; CHECK-NEXT: vslideup.vi v8, v9, 2
86- ; CHECK-NEXT: vsetivli zero, 6, e8, mf2, tu, ma
87- ; CHECK-NEXT: vslideup.vi v8, v10, 4
88- ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
89- ; CHECK-NEXT: vslideup.vi v8, v11, 6
90- ; CHECK-NEXT: vse8.v v8, (a1)
55+ ; CHECK-NEXT: li a2, 16
56+ ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
57+ ; CHECK-NEXT: vlse16.v v8, (a0), a2
58+ ; CHECK-NEXT: vse16.v v8, (a1)
9159; CHECK-NEXT: ret
9260 %1 = getelementptr inbounds i8 , ptr %s , i64 16
9361 %2 = getelementptr inbounds i8 , ptr %s , i64 32
@@ -109,21 +77,10 @@ define void @constant_forward_stride3(ptr %s, ptr %d) {
10977define void @constant_back_stride (ptr %s , ptr %d ) {
11078; CHECK-LABEL: constant_back_stride:
11179; CHECK: # %bb.0:
112- ; CHECK-NEXT: addi a2, a0, -16
113- ; CHECK-NEXT: addi a3, a0, -32
114- ; CHECK-NEXT: addi a4, a0, -48
115- ; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
116- ; CHECK-NEXT: vle8.v v8, (a0)
117- ; CHECK-NEXT: vle8.v v9, (a2)
118- ; CHECK-NEXT: vle8.v v10, (a3)
119- ; CHECK-NEXT: vle8.v v11, (a4)
120- ; CHECK-NEXT: vsetivli zero, 4, e8, mf2, tu, ma
121- ; CHECK-NEXT: vslideup.vi v8, v9, 2
122- ; CHECK-NEXT: vsetivli zero, 6, e8, mf2, tu, ma
123- ; CHECK-NEXT: vslideup.vi v8, v10, 4
124- ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
125- ; CHECK-NEXT: vslideup.vi v8, v11, 6
126- ; CHECK-NEXT: vse8.v v8, (a1)
80+ ; CHECK-NEXT: li a2, -16
81+ ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
82+ ; CHECK-NEXT: vlse16.v v8, (a0), a2
83+ ; CHECK-NEXT: vse16.v v8, (a1)
12784; CHECK-NEXT: ret
12885 %1 = getelementptr inbounds i8 , ptr %s , i64 -16
12986 %2 = getelementptr inbounds i8 , ptr %s , i64 -32
@@ -142,21 +99,11 @@ define void @constant_back_stride(ptr %s, ptr %d) {
14299define void @constant_back_stride2 (ptr %s , ptr %d ) {
143100; CHECK-LABEL: constant_back_stride2:
144101; CHECK: # %bb.0:
145- ; CHECK-NEXT: addi a2, a0, 16
146- ; CHECK-NEXT: addi a3, a0, 32
147- ; CHECK-NEXT: addi a4, a0, 48
148- ; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
149- ; CHECK-NEXT: vle8.v v8, (a4)
150- ; CHECK-NEXT: vle8.v v9, (a3)
151- ; CHECK-NEXT: vle8.v v10, (a2)
152- ; CHECK-NEXT: vle8.v v11, (a0)
153- ; CHECK-NEXT: vsetivli zero, 4, e8, mf2, tu, ma
154- ; CHECK-NEXT: vslideup.vi v8, v9, 2
155- ; CHECK-NEXT: vsetivli zero, 6, e8, mf2, tu, ma
156- ; CHECK-NEXT: vslideup.vi v8, v10, 4
157- ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
158- ; CHECK-NEXT: vslideup.vi v8, v11, 6
159- ; CHECK-NEXT: vse8.v v8, (a1)
102+ ; CHECK-NEXT: addi a0, a0, 48
103+ ; CHECK-NEXT: li a2, -16
104+ ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
105+ ; CHECK-NEXT: vlse16.v v8, (a0), a2
106+ ; CHECK-NEXT: vse16.v v8, (a1)
160107; CHECK-NEXT: ret
161108 %1 = getelementptr inbounds i8 , ptr %s , i64 16
162109 %2 = getelementptr inbounds i8 , ptr %s , i64 32
@@ -175,21 +122,10 @@ define void @constant_back_stride2(ptr %s, ptr %d) {
175122define void @constant_back_stride3 (ptr %s , ptr %d ) {
176123; CHECK-LABEL: constant_back_stride3:
177124; CHECK: # %bb.0:
178- ; CHECK-NEXT: addi a2, a0, -16
179- ; CHECK-NEXT: addi a3, a0, -32
180- ; CHECK-NEXT: addi a4, a0, -48
181- ; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
182- ; CHECK-NEXT: vle8.v v8, (a0)
183- ; CHECK-NEXT: vle8.v v9, (a2)
184- ; CHECK-NEXT: vle8.v v10, (a3)
185- ; CHECK-NEXT: vle8.v v11, (a4)
186- ; CHECK-NEXT: vsetivli zero, 4, e8, mf2, tu, ma
187- ; CHECK-NEXT: vslideup.vi v8, v9, 2
188- ; CHECK-NEXT: vsetivli zero, 6, e8, mf2, tu, ma
189- ; CHECK-NEXT: vslideup.vi v8, v10, 4
190- ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
191- ; CHECK-NEXT: vslideup.vi v8, v11, 6
192- ; CHECK-NEXT: vse8.v v8, (a1)
125+ ; CHECK-NEXT: li a2, -16
126+ ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
127+ ; CHECK-NEXT: vlse16.v v8, (a0), a2
128+ ; CHECK-NEXT: vse16.v v8, (a1)
193129; CHECK-NEXT: ret
194130 %1 = getelementptr inbounds i8 , ptr %s , i64 -16
195131 %2 = getelementptr inbounds i8 , ptr %s , i64 -32
0 commit comments