@@ -12,16 +12,14 @@ define void @v4xi8_concat_vector_insert_idx0(ptr %a, ptr %b, i8 %x) {
12
12
; CHECK-NEXT: vle8.v v9, (a1)
13
13
; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
14
14
; CHECK-NEXT: vslideup.vi v8, v9, 2
15
- ; CHECK-NEXT: vmv.s.x v9, a2
16
- ; CHECK-NEXT: vsetivli zero, 2, e8, mf4, tu, ma
17
- ; CHECK-NEXT: vslideup.vi v8, v9, 1
18
- ; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
15
+ ; CHECK-NEXT: vsetvli zero, zero, e8, mf4, tu, ma
16
+ ; CHECK-NEXT: vmv.s.x v8, a2
19
17
; CHECK-NEXT: vse8.v v8, (a0)
20
18
; CHECK-NEXT: ret
21
19
%v1 = load <2 x i8 >, ptr %a
22
20
%v2 = load <2 x i8 >, ptr %b
23
21
%concat = shufflevector <2 x i8 > %v1 , <2 x i8 > %v2 , <4 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 >
24
- %ins = insertelement <4 x i8 > %concat , i8 %x , i32 1
22
+ %ins = insertelement <4 x i8 > %concat , i8 %x , i32 0
25
23
store <4 x i8 > %ins , ptr %a
26
24
ret void
27
25
}
@@ -98,11 +96,9 @@ define void @v4xi64_concat_vector_insert_idx0(ptr %a, ptr %b, i64 %x) {
98
96
; RV32-NEXT: vle64.v v10, (a1)
99
97
; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
100
98
; RV32-NEXT: vslideup.vi v8, v10, 2
101
- ; RV32-NEXT: vsetivli zero, 2, e32, m1, ta, ma
102
- ; RV32-NEXT: vslide1down.vx v10, v8, a2
103
- ; RV32-NEXT: vslide1down.vx v10, v10, a3
104
- ; RV32-NEXT: vsetivli zero, 2, e64, m1, tu, ma
105
- ; RV32-NEXT: vslideup.vi v8, v10, 1
99
+ ; RV32-NEXT: vsetivli zero, 2, e32, m1, tu, ma
100
+ ; RV32-NEXT: vslide1down.vx v8, v8, a2
101
+ ; RV32-NEXT: vslide1down.vx v8, v8, a3
106
102
; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
107
103
; RV32-NEXT: vse64.v v8, (a0)
108
104
; RV32-NEXT: ret
@@ -114,16 +110,14 @@ define void @v4xi64_concat_vector_insert_idx0(ptr %a, ptr %b, i64 %x) {
114
110
; RV64-NEXT: vle64.v v10, (a1)
115
111
; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, ma
116
112
; RV64-NEXT: vslideup.vi v8, v10, 2
117
- ; RV64-NEXT: vmv.s.x v10, a2
118
- ; RV64-NEXT: vsetivli zero, 2, e64, m1, tu, ma
119
- ; RV64-NEXT: vslideup.vi v8, v10, 1
120
- ; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, ma
113
+ ; RV64-NEXT: vsetvli zero, zero, e64, m2, tu, ma
114
+ ; RV64-NEXT: vmv.s.x v8, a2
121
115
; RV64-NEXT: vse64.v v8, (a0)
122
116
; RV64-NEXT: ret
123
117
%v1 = load <2 x i64 >, ptr %a
124
118
%v2 = load <2 x i64 >, ptr %b
125
119
%concat = shufflevector <2 x i64 > %v1 , <2 x i64 > %v2 , <4 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 >
126
- %ins = insertelement <4 x i64 > %concat , i64 %x , i32 1
120
+ %ins = insertelement <4 x i64 > %concat , i64 %x , i32 0
127
121
store <4 x i64 > %ins , ptr %a
128
122
ret void
129
123
}
0 commit comments