@@ -25,14 +25,14 @@ define float @fmul_f32(<4 x float> %a, <4 x float> %b) {
2525; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
2626; CHECK-NEXT: vslidedown.vi v10, v8, 2
2727; CHECK-NEXT: vfmul.vv v8, v8, v10
28+ ; CHECK-NEXT: vslidedown.vi v10, v9, 2
29+ ; CHECK-NEXT: vfmul.vv v9, v9, v10
2830; CHECK-NEXT: vrgather.vi v10, v8, 1
2931; CHECK-NEXT: vfmul.vv v8, v8, v10
32+ ; CHECK-NEXT: vrgather.vi v10, v9, 1
33+ ; CHECK-NEXT: vfmul.vv v9, v9, v10
3034; CHECK-NEXT: vfmv.f.s fa5, v8
31- ; CHECK-NEXT: vslidedown.vi v8, v9, 2
32- ; CHECK-NEXT: vfmul.vv v8, v9, v8
33- ; CHECK-NEXT: vrgather.vi v9, v8, 1
34- ; CHECK-NEXT: vfmul.vv v8, v8, v9
35- ; CHECK-NEXT: vfmv.f.s fa4, v8
35+ ; CHECK-NEXT: vfmv.f.s fa4, v9
3636; CHECK-NEXT: fmul.s fa0, fa5, fa4
3737; CHECK-NEXT: ret
3838 %r1 = call fast float @llvm.vector.reduce.fmul.f32.v4f32 (float 1 .0 , <4 x float > %a )
@@ -130,14 +130,14 @@ define i32 @mul_i32(<4 x i32> %a, <4 x i32> %b) {
130130; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
131131; RV32-NEXT: vslidedown.vi v10, v8, 2
132132; RV32-NEXT: vmul.vv v8, v8, v10
133+ ; RV32-NEXT: vslidedown.vi v10, v9, 2
134+ ; RV32-NEXT: vmul.vv v9, v9, v10
133135; RV32-NEXT: vrgather.vi v10, v8, 1
134136; RV32-NEXT: vmul.vv v8, v8, v10
137+ ; RV32-NEXT: vrgather.vi v10, v9, 1
138+ ; RV32-NEXT: vmul.vv v9, v9, v10
135139; RV32-NEXT: vmv.x.s a0, v8
136- ; RV32-NEXT: vslidedown.vi v8, v9, 2
137- ; RV32-NEXT: vmul.vv v8, v9, v8
138- ; RV32-NEXT: vrgather.vi v9, v8, 1
139- ; RV32-NEXT: vmul.vv v8, v8, v9
140- ; RV32-NEXT: vmv.x.s a1, v8
140+ ; RV32-NEXT: vmv.x.s a1, v9
141141; RV32-NEXT: mul a0, a0, a1
142142; RV32-NEXT: ret
143143;
@@ -146,14 +146,14 @@ define i32 @mul_i32(<4 x i32> %a, <4 x i32> %b) {
146146; RV64-NEXT: vsetivli zero, 4, e32, m1, ta, ma
147147; RV64-NEXT: vslidedown.vi v10, v8, 2
148148; RV64-NEXT: vmul.vv v8, v8, v10
149+ ; RV64-NEXT: vslidedown.vi v10, v9, 2
150+ ; RV64-NEXT: vmul.vv v9, v9, v10
149151; RV64-NEXT: vrgather.vi v10, v8, 1
150152; RV64-NEXT: vmul.vv v8, v8, v10
153+ ; RV64-NEXT: vrgather.vi v10, v9, 1
154+ ; RV64-NEXT: vmul.vv v9, v9, v10
151155; RV64-NEXT: vmv.x.s a0, v8
152- ; RV64-NEXT: vslidedown.vi v8, v9, 2
153- ; RV64-NEXT: vmul.vv v8, v9, v8
154- ; RV64-NEXT: vrgather.vi v9, v8, 1
155- ; RV64-NEXT: vmul.vv v8, v8, v9
156- ; RV64-NEXT: vmv.x.s a1, v8
156+ ; RV64-NEXT: vmv.x.s a1, v9
157157; RV64-NEXT: mulw a0, a0, a1
158158; RV64-NEXT: ret
159159 %r1 = call i32 @llvm.vector.reduce.mul.i32.v4i32 (<4 x i32 > %a )
@@ -165,8 +165,9 @@ define i32 @mul_i32(<4 x i32> %a, <4 x i32> %b) {
165165define i32 @and_i32 (<4 x i32 > %a , <4 x i32 > %b ) {
166166; CHECK-LABEL: and_i32:
167167; CHECK: # %bb.0:
168- ; CHECK-NEXT: vsetivli zero, 4 , e32, m1, ta, ma
168+ ; CHECK-NEXT: vsetivli zero, 1 , e32, m1, ta, ma
169169; CHECK-NEXT: vand.vv v8, v8, v9
170+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
170171; CHECK-NEXT: vredand.vs v8, v8, v8
171172; CHECK-NEXT: vmv.x.s a0, v8
172173; CHECK-NEXT: ret
@@ -179,8 +180,9 @@ define i32 @and_i32(<4 x i32> %a, <4 x i32> %b) {
179180define i32 @or_i32 (<4 x i32 > %a , <4 x i32 > %b ) {
180181; CHECK-LABEL: or_i32:
181182; CHECK: # %bb.0:
182- ; CHECK-NEXT: vsetivli zero, 4 , e32, m1, ta, ma
183+ ; CHECK-NEXT: vsetivli zero, 1 , e32, m1, ta, ma
183184; CHECK-NEXT: vor.vv v8, v8, v9
185+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
184186; CHECK-NEXT: vredor.vs v8, v8, v8
185187; CHECK-NEXT: vmv.x.s a0, v8
186188; CHECK-NEXT: ret
@@ -208,8 +210,9 @@ define i32 @xor_i32(<4 x i32> %a, <4 x i32> %b) {
208210define i32 @umin_i32 (<4 x i32 > %a , <4 x i32 > %b ) {
209211; CHECK-LABEL: umin_i32:
210212; CHECK: # %bb.0:
211- ; CHECK-NEXT: vsetivli zero, 4 , e32, m1, ta, ma
213+ ; CHECK-NEXT: vsetivli zero, 1 , e32, m1, ta, ma
212214; CHECK-NEXT: vminu.vv v8, v8, v9
215+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
213216; CHECK-NEXT: vredminu.vs v8, v8, v8
214217; CHECK-NEXT: vmv.x.s a0, v8
215218; CHECK-NEXT: ret
@@ -222,8 +225,9 @@ define i32 @umin_i32(<4 x i32> %a, <4 x i32> %b) {
222225define i32 @umax_i32 (<4 x i32 > %a , <4 x i32 > %b ) {
223226; CHECK-LABEL: umax_i32:
224227; CHECK: # %bb.0:
225- ; CHECK-NEXT: vsetivli zero, 4 , e32, m1, ta, ma
228+ ; CHECK-NEXT: vsetivli zero, 1 , e32, m1, ta, ma
226229; CHECK-NEXT: vmaxu.vv v8, v8, v9
230+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
227231; CHECK-NEXT: vredmaxu.vs v8, v8, v8
228232; CHECK-NEXT: vmv.x.s a0, v8
229233; CHECK-NEXT: ret
@@ -236,8 +240,9 @@ define i32 @umax_i32(<4 x i32> %a, <4 x i32> %b) {
236240define i32 @smin_i32 (<4 x i32 > %a , <4 x i32 > %b ) {
237241; CHECK-LABEL: smin_i32:
238242; CHECK: # %bb.0:
239- ; CHECK-NEXT: vsetivli zero, 4 , e32, m1, ta, ma
243+ ; CHECK-NEXT: vsetivli zero, 1 , e32, m1, ta, ma
240244; CHECK-NEXT: vmin.vv v8, v8, v9
245+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
241246; CHECK-NEXT: vredmin.vs v8, v8, v8
242247; CHECK-NEXT: vmv.x.s a0, v8
243248; CHECK-NEXT: ret
@@ -250,8 +255,9 @@ define i32 @smin_i32(<4 x i32> %a, <4 x i32> %b) {
250255define i32 @smax_i32 (<4 x i32 > %a , <4 x i32 > %b ) {
251256; CHECK-LABEL: smax_i32:
252257; CHECK: # %bb.0:
253- ; CHECK-NEXT: vsetivli zero, 4 , e32, m1, ta, ma
258+ ; CHECK-NEXT: vsetivli zero, 1 , e32, m1, ta, ma
254259; CHECK-NEXT: vmax.vv v8, v8, v9
260+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
255261; CHECK-NEXT: vredmax.vs v8, v8, v8
256262; CHECK-NEXT: vmv.x.s a0, v8
257263; CHECK-NEXT: ret
0 commit comments