@@ -96,24 +96,25 @@ define void @deinterleave4_8_i8(ptr %in, ptr %out) {
96
96
; CHECK: # %bb.0: # %entry
97
97
; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
98
98
; CHECK-NEXT: vle8.v v8, (a0)
99
- ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
100
- ; CHECK-NEXT: vmv.v.i v9, -9
101
- ; CHECK-NEXT: vid.v v10
102
- ; CHECK-NEXT: li a0, 5
103
- ; CHECK-NEXT: vmadd.vx v10, a0, v9
99
+ ; CHECK-NEXT: li a0, -1
100
+ ; CHECK-NEXT: vsetivli zero, 8, e8, m1, ta, ma
101
+ ; CHECK-NEXT: vslidedown.vi v9, v8, 8
102
+ ; CHECK-NEXT: vsetivli zero, 4, e8, mf2, ta, ma
103
+ ; CHECK-NEXT: vslidedown.vi v10, v9, 4
104
+ ; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
105
+ ; CHECK-NEXT: vwaddu.vv v11, v9, v10
106
+ ; CHECK-NEXT: vwmaccu.vx v11, a0, v10
104
107
; CHECK-NEXT: li a0, 34
105
108
; CHECK-NEXT: vmv.v.i v0, 12
106
109
; CHECK-NEXT: vmv.s.x v9, a0
107
- ; CHECK-NEXT: vcompress.vm v11, v8, v9
108
- ; CHECK-NEXT: vsetivli zero, 8, e8, m1, ta, ma
109
- ; CHECK-NEXT: vslidedown.vi v8, v8, 8
110
- ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, mu
111
- ; CHECK-NEXT: vrgather.vv v11, v8, v10, v0.t
112
- ; CHECK-NEXT: vse8.v v11, (a1)
110
+ ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
111
+ ; CHECK-NEXT: vcompress.vm v10, v8, v9
112
+ ; CHECK-NEXT: vmerge.vvm v8, v10, v11, v0
113
+ ; CHECK-NEXT: vse8.v v8, (a1)
113
114
; CHECK-NEXT: ret
114
115
entry:
115
116
%0 = load <16 x i8 >, ptr %in , align 1
116
- %shuffle.i5 = shufflevector <16 x i8 > %0 , <16 x i8 > poison, <8 x i32 > <i32 1 , i32 5 , i32 9 , i32 14 , i32 undef , i32 undef , i32 undef , i32 undef >
117
+ %shuffle.i5 = shufflevector <16 x i8 > %0 , <16 x i8 > poison, <8 x i32 > <i32 1 , i32 5 , i32 9 , i32 13 , i32 undef , i32 undef , i32 undef , i32 undef >
117
118
store <8 x i8 > %shuffle.i5 , ptr %out , align 1
118
119
ret void
119
120
}
0 commit comments