@@ -19,11 +19,11 @@ define <8 x i8> @trn1.v8i8(<8 x i8> %v0, <8 x i8> %v1) {
19
19
define <8 x i8 > @trn2.v8i8 (<8 x i8 > %v0 , <8 x i8 > %v1 ) {
20
20
; CHECK-LABEL: trn2.v8i8:
21
21
; CHECK: # %bb.0:
22
- ; CHECK-NEXT: li a0, 170
23
- ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
22
+ ; CHECK-NEXT: li a0, 85
23
+ ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, mu
24
24
; CHECK-NEXT: vmv.s.x v0, a0
25
- ; CHECK-NEXT: vslidedown.vi v8 , v8, 1
26
- ; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
25
+ ; CHECK-NEXT: vslidedown.vi v9 , v8, 1, v0.t
26
+ ; CHECK-NEXT: vmv1r.v v8, v9
27
27
; CHECK-NEXT: ret
28
28
%tmp0 = shufflevector <8 x i8 > %v0 , <8 x i8 > %v1 , <8 x i32 > <i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 13 , i32 7 , i32 15 >
29
29
ret <8 x i8 > %tmp0
@@ -46,13 +46,13 @@ define <16 x i8> @trn1.v16i8(<16 x i8> %v0, <16 x i8> %v1) {
46
46
define <16 x i8 > @trn2.v16i8 (<16 x i8 > %v0 , <16 x i8 > %v1 ) {
47
47
; CHECK-LABEL: trn2.v16i8:
48
48
; CHECK: # %bb.0:
49
- ; CHECK-NEXT: lui a0, 11
50
- ; CHECK-NEXT: addi a0, a0, -1366
49
+ ; CHECK-NEXT: lui a0, 5
50
+ ; CHECK-NEXT: addi a0, a0, 1365
51
51
; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
52
52
; CHECK-NEXT: vmv.s.x v0, a0
53
- ; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
54
- ; CHECK-NEXT: vslidedown.vi v8 , v8, 1
55
- ; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
53
+ ; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, mu
54
+ ; CHECK-NEXT: vslidedown.vi v9 , v8, 1, v0.t
55
+ ; CHECK-NEXT: vmv.v.v v8, v9
56
56
; CHECK-NEXT: ret
57
57
%tmp0 = shufflevector <16 x i8 > %v0 , <16 x i8 > %v1 , <16 x i32 > <i32 1 , i32 17 , i32 3 , i32 19 , i32 5 , i32 21 , i32 7 , i32 23 , i32 9 , i32 25 , i32 11 , i32 27 , i32 13 , i32 29 , i32 15 , i32 31 >
58
58
ret <16 x i8 > %tmp0
@@ -72,10 +72,10 @@ define <4 x i16> @trn1.v4i16(<4 x i16> %v0, <4 x i16> %v1) {
72
72
define <4 x i16 > @trn2.v4i16 (<4 x i16 > %v0 , <4 x i16 > %v1 ) {
73
73
; CHECK-LABEL: trn2.v4i16:
74
74
; CHECK: # %bb.0:
75
- ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
76
- ; CHECK-NEXT: vmv.v.i v0, 10
77
- ; CHECK-NEXT: vslidedown.vi v8 , v8, 1
78
- ; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
75
+ ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu
76
+ ; CHECK-NEXT: vmv.v.i v0, 5
77
+ ; CHECK-NEXT: vslidedown.vi v9 , v8, 1, v0.t
78
+ ; CHECK-NEXT: vmv1r.v v8, v9
79
79
; CHECK-NEXT: ret
80
80
%tmp0 = shufflevector <4 x i16 > %v0 , <4 x i16 > %v1 , <4 x i32 > <i32 1 , i32 5 , i32 3 , i32 7 >
81
81
ret <4 x i16 > %tmp0
@@ -96,11 +96,11 @@ define <8 x i16> @trn1.v8i16(<8 x i16> %v0, <8 x i16> %v1) {
96
96
define <8 x i16 > @trn2.v8i16 (<8 x i16 > %v0 , <8 x i16 > %v1 ) {
97
97
; CHECK-LABEL: trn2.v8i16:
98
98
; CHECK: # %bb.0:
99
- ; CHECK-NEXT: li a0, 170
100
- ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
99
+ ; CHECK-NEXT: li a0, 85
100
+ ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu
101
101
; CHECK-NEXT: vmv.s.x v0, a0
102
- ; CHECK-NEXT: vslidedown.vi v8 , v8, 1
103
- ; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
102
+ ; CHECK-NEXT: vslidedown.vi v9 , v8, 1, v0.t
103
+ ; CHECK-NEXT: vmv.v.v v8, v9
104
104
; CHECK-NEXT: ret
105
105
%tmp0 = shufflevector <8 x i16 > %v0 , <8 x i16 > %v1 , <8 x i32 > <i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 13 , i32 7 , i32 15 >
106
106
ret <8 x i16 > %tmp0
@@ -119,10 +119,10 @@ define <2 x i32> @trn1.v2i32(<2 x i32> %v0, <2 x i32> %v1) {
119
119
define <2 x i32 > @trn2.v2i32 (<2 x i32 > %v0 , <2 x i32 > %v1 ) {
120
120
; CHECK-LABEL: trn2.v2i32:
121
121
; CHECK: # %bb.0:
122
- ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
123
- ; CHECK-NEXT: vmv.v.i v0, 2
124
- ; CHECK-NEXT: vrgather.vi v10 , v8, 1
125
- ; CHECK-NEXT: vmerge.vvm v8, v10, v9, v0
122
+ ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu
123
+ ; CHECK-NEXT: vmv.v.i v0, 1
124
+ ; CHECK-NEXT: vrgather.vi v9 , v8, 1, v0.t
125
+ ; CHECK-NEXT: vmv1r.v v8, v9
126
126
; CHECK-NEXT: ret
127
127
%tmp0 = shufflevector <2 x i32 > %v0 , <2 x i32 > %v1 , <2 x i32 > <i32 1 , i32 3 >
128
128
ret <2 x i32 > %tmp0
@@ -142,10 +142,10 @@ define <4 x i32> @trn1.v4i32(<4 x i32> %v0, <4 x i32> %v1) {
142
142
define <4 x i32 > @trn2.v4i32 (<4 x i32 > %v0 , <4 x i32 > %v1 ) {
143
143
; CHECK-LABEL: trn2.v4i32:
144
144
; CHECK: # %bb.0:
145
- ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
146
- ; CHECK-NEXT: vmv.v.i v0, 10
147
- ; CHECK-NEXT: vslidedown.vi v8 , v8, 1
148
- ; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
145
+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu
146
+ ; CHECK-NEXT: vmv.v.i v0, 5
147
+ ; CHECK-NEXT: vslidedown.vi v9 , v8, 1, v0.t
148
+ ; CHECK-NEXT: vmv.v.v v8, v9
149
149
; CHECK-NEXT: ret
150
150
%tmp0 = shufflevector <4 x i32 > %v0 , <4 x i32 > %v1 , <4 x i32 > <i32 1 , i32 5 , i32 3 , i32 7 >
151
151
ret <4 x i32 > %tmp0
@@ -164,10 +164,10 @@ define <2 x i64> @trn1.v2i64(<2 x i64> %v0, <2 x i64> %v1) {
164
164
define <2 x i64 > @trn2.v2i64 (<2 x i64 > %v0 , <2 x i64 > %v1 ) {
165
165
; CHECK-LABEL: trn2.v2i64:
166
166
; CHECK: # %bb.0:
167
- ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
168
- ; CHECK-NEXT: vmv.v.i v0, 2
169
- ; CHECK-NEXT: vrgather.vi v10 , v8, 1
170
- ; CHECK-NEXT: vmerge.vvm v8, v10, v9, v0
167
+ ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu
168
+ ; CHECK-NEXT: vmv.v.i v0, 1
169
+ ; CHECK-NEXT: vrgather.vi v9 , v8, 1, v0.t
170
+ ; CHECK-NEXT: vmv.v.v v8, v9
171
171
; CHECK-NEXT: ret
172
172
%tmp0 = shufflevector <2 x i64 > %v0 , <2 x i64 > %v1 , <2 x i32 > <i32 1 , i32 3 >
173
173
ret <2 x i64 > %tmp0
@@ -186,10 +186,10 @@ define <2 x float> @trn1.v2f32(<2 x float> %v0, <2 x float> %v1) {
186
186
define <2 x float > @trn2.v2f32 (<2 x float > %v0 , <2 x float > %v1 ) {
187
187
; CHECK-LABEL: trn2.v2f32:
188
188
; CHECK: # %bb.0:
189
- ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
190
- ; CHECK-NEXT: vmv.v.i v0, 2
191
- ; CHECK-NEXT: vrgather.vi v10 , v8, 1
192
- ; CHECK-NEXT: vmerge.vvm v8, v10, v9, v0
189
+ ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu
190
+ ; CHECK-NEXT: vmv.v.i v0, 1
191
+ ; CHECK-NEXT: vrgather.vi v9 , v8, 1, v0.t
192
+ ; CHECK-NEXT: vmv1r.v v8, v9
193
193
; CHECK-NEXT: ret
194
194
%tmp0 = shufflevector <2 x float > %v0 , <2 x float > %v1 , <2 x i32 > <i32 1 , i32 3 >
195
195
ret <2 x float > %tmp0
@@ -209,10 +209,10 @@ define <4 x float> @trn1.v4f32(<4 x float> %v0, <4 x float> %v1) {
209
209
define <4 x float > @trn2.v4f32 (<4 x float > %v0 , <4 x float > %v1 ) {
210
210
; CHECK-LABEL: trn2.v4f32:
211
211
; CHECK: # %bb.0:
212
- ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
213
- ; CHECK-NEXT: vmv.v.i v0, 10
214
- ; CHECK-NEXT: vslidedown.vi v8 , v8, 1
215
- ; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
212
+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu
213
+ ; CHECK-NEXT: vmv.v.i v0, 5
214
+ ; CHECK-NEXT: vslidedown.vi v9 , v8, 1, v0.t
215
+ ; CHECK-NEXT: vmv.v.v v8, v9
216
216
; CHECK-NEXT: ret
217
217
%tmp0 = shufflevector <4 x float > %v0 , <4 x float > %v1 , <4 x i32 > <i32 1 , i32 5 , i32 3 , i32 7 >
218
218
ret <4 x float > %tmp0
@@ -231,10 +231,10 @@ define <2 x double> @trn1.v2f64(<2 x double> %v0, <2 x double> %v1) {
231
231
define <2 x double > @trn2.v2f64 (<2 x double > %v0 , <2 x double > %v1 ) {
232
232
; CHECK-LABEL: trn2.v2f64:
233
233
; CHECK: # %bb.0:
234
- ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
235
- ; CHECK-NEXT: vmv.v.i v0, 2
236
- ; CHECK-NEXT: vrgather.vi v10 , v8, 1
237
- ; CHECK-NEXT: vmerge.vvm v8, v10, v9, v0
234
+ ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu
235
+ ; CHECK-NEXT: vmv.v.i v0, 1
236
+ ; CHECK-NEXT: vrgather.vi v9 , v8, 1, v0.t
237
+ ; CHECK-NEXT: vmv.v.v v8, v9
238
238
; CHECK-NEXT: ret
239
239
%tmp0 = shufflevector <2 x double > %v0 , <2 x double > %v1 , <2 x i32 > <i32 1 , i32 3 >
240
240
ret <2 x double > %tmp0
@@ -254,10 +254,10 @@ define <4 x half> @trn1.v4f16(<4 x half> %v0, <4 x half> %v1) {
254
254
define <4 x half > @trn2.v4f16 (<4 x half > %v0 , <4 x half > %v1 ) {
255
255
; CHECK-LABEL: trn2.v4f16:
256
256
; CHECK: # %bb.0:
257
- ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
258
- ; CHECK-NEXT: vmv.v.i v0, 10
259
- ; CHECK-NEXT: vslidedown.vi v8 , v8, 1
260
- ; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
257
+ ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu
258
+ ; CHECK-NEXT: vmv.v.i v0, 5
259
+ ; CHECK-NEXT: vslidedown.vi v9 , v8, 1, v0.t
260
+ ; CHECK-NEXT: vmv1r.v v8, v9
261
261
; CHECK-NEXT: ret
262
262
%tmp0 = shufflevector <4 x half > %v0 , <4 x half > %v1 , <4 x i32 > <i32 1 , i32 5 , i32 3 , i32 7 >
263
263
ret <4 x half > %tmp0
@@ -278,11 +278,11 @@ define <8 x half> @trn1.v8f16(<8 x half> %v0, <8 x half> %v1) {
278
278
define <8 x half > @trn2.v8f16 (<8 x half > %v0 , <8 x half > %v1 ) {
279
279
; CHECK-LABEL: trn2.v8f16:
280
280
; CHECK: # %bb.0:
281
- ; CHECK-NEXT: li a0, 170
282
- ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
281
+ ; CHECK-NEXT: li a0, 85
282
+ ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu
283
283
; CHECK-NEXT: vmv.s.x v0, a0
284
- ; CHECK-NEXT: vslidedown.vi v8 , v8, 1
285
- ; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
284
+ ; CHECK-NEXT: vslidedown.vi v9 , v8, 1, v0.t
285
+ ; CHECK-NEXT: vmv.v.v v8, v9
286
286
; CHECK-NEXT: ret
287
287
%tmp0 = shufflevector <8 x half > %v0 , <8 x half > %v1 , <8 x i32 > <i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 13 , i32 7 , i32 15 >
288
288
ret <8 x half > %tmp0
0 commit comments