@@ -6,11 +6,8 @@ define <32 x i8> @shuffle_v32i8(<32 x i8> %a) {
6
6
; CHECK-LABEL: shuffle_v32i8:
7
7
; CHECK: # %bb.0:
8
8
; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI0_0)
9
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI0_0)
10
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI0_1)
11
- ; CHECK-NEXT: xvld $xr1, $a0, %pc_lo12(.LCPI0_1)
12
- ; CHECK-NEXT: xvpermi.d $xr3, $xr0, 78
13
- ; CHECK-NEXT: xvshuf.d $xr2, $xr0, $xr3
9
+ ; CHECK-NEXT: xvld $xr1, $a0, %pc_lo12(.LCPI0_0)
10
+ ; CHECK-NEXT: xvpermi.d $xr2, $xr0, 78
14
11
; CHECK-NEXT: xvshuf.h $xr1, $xr2, $xr0
15
12
; CHECK-NEXT: xvori.b $xr0, $xr1, 0
16
13
; CHECK-NEXT: ret
@@ -34,11 +31,8 @@ define <16 x i16> @shuffle_v16i16(<16 x i16> %a) {
34
31
; CHECK-LABEL: shuffle_v16i16:
35
32
; CHECK: # %bb.0:
36
33
; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI2_0)
37
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI2_0)
38
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI2_1)
39
- ; CHECK-NEXT: xvld $xr1, $a0, %pc_lo12(.LCPI2_1)
40
- ; CHECK-NEXT: xvpermi.d $xr3, $xr0, 78
41
- ; CHECK-NEXT: xvshuf.d $xr2, $xr0, $xr3
34
+ ; CHECK-NEXT: xvld $xr1, $a0, %pc_lo12(.LCPI2_0)
35
+ ; CHECK-NEXT: xvpermi.d $xr2, $xr0, 78
42
36
; CHECK-NEXT: xvshuf.w $xr1, $xr2, $xr0
43
37
; CHECK-NEXT: xvori.b $xr0, $xr1, 0
44
38
; CHECK-NEXT: ret
@@ -72,10 +66,7 @@ define <8 x i32> @shuffle_v8i32(<8 x i32> %a) {
72
66
define <8 x i32 > @shuffle_v8i32_same_lane (<8 x i32 > %a ) {
73
67
; CHECK-LABEL: shuffle_v8i32_same_lane:
74
68
; CHECK: # %bb.0:
75
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI5_0)
76
- ; CHECK-NEXT: xvld $xr1, $a0, %pc_lo12(.LCPI5_0)
77
- ; CHECK-NEXT: xvshuf.d $xr1, $xr0, $xr0
78
- ; CHECK-NEXT: xvori.b $xr0, $xr1, 0
69
+ ; CHECK-NEXT: xvpermi.d $xr0, $xr0, 225
79
70
; CHECK-NEXT: ret
80
71
%shuffle = shufflevector <8 x i32 > %a , <8 x i32 > poison, <8 x i32 > <i32 2 , i32 3 , i32 0 , i32 1 , i32 4 , i32 5 , i32 6 , i32 7 >
81
72
ret <8 x i32 > %shuffle
@@ -84,14 +75,7 @@ define <8 x i32> @shuffle_v8i32_same_lane(<8 x i32> %a) {
84
75
define <4 x i64 > @shuffle_v4i64 (<4 x i64 > %a ) {
85
76
; CHECK-LABEL: shuffle_v4i64:
86
77
; CHECK: # %bb.0:
87
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI6_0)
88
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI6_0)
89
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI6_1)
90
- ; CHECK-NEXT: xvld $xr1, $a0, %pc_lo12(.LCPI6_1)
91
- ; CHECK-NEXT: xvpermi.d $xr3, $xr0, 78
92
- ; CHECK-NEXT: xvshuf.d $xr2, $xr0, $xr3
93
- ; CHECK-NEXT: xvshuf.d $xr1, $xr2, $xr0
94
- ; CHECK-NEXT: xvori.b $xr0, $xr1, 0
78
+ ; CHECK-NEXT: xvpermi.d $xr0, $xr0, 39
95
79
; CHECK-NEXT: ret
96
80
%shuffle = shufflevector <4 x i64 > %a , <4 x i64 > poison, <4 x i32 > <i32 3 , i32 1 , i32 2 , i32 0 >
97
81
ret <4 x i64 > %shuffle
@@ -100,10 +84,7 @@ define <4 x i64> @shuffle_v4i64(<4 x i64> %a) {
100
84
define <4 x i64 > @shuffle_v4i64_same_lane (<4 x i64 > %a ) {
101
85
; CHECK-LABEL: shuffle_v4i64_same_lane:
102
86
; CHECK: # %bb.0:
103
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI7_0)
104
- ; CHECK-NEXT: xvld $xr1, $a0, %pc_lo12(.LCPI7_0)
105
- ; CHECK-NEXT: xvshuf.d $xr1, $xr0, $xr0
106
- ; CHECK-NEXT: xvori.b $xr0, $xr1, 0
87
+ ; CHECK-NEXT: xvpermi.d $xr0, $xr0, 225
107
88
; CHECK-NEXT: ret
108
89
%shuffle = shufflevector <4 x i64 > %a , <4 x i64 > poison, <4 x i32 > <i32 1 , i32 0 , i32 2 , i32 3 >
109
90
ret <4 x i64 > %shuffle
@@ -136,14 +117,7 @@ define <8 x float> @shuffle_v8f32_same_lane(<8 x float> %a) {
136
117
define <4 x double > @shuffle_v4f64 (<4 x double > %a ) {
137
118
; CHECK-LABEL: shuffle_v4f64:
138
119
; CHECK: # %bb.0:
139
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI10_0)
140
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI10_0)
141
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI10_1)
142
- ; CHECK-NEXT: xvld $xr1, $a0, %pc_lo12(.LCPI10_1)
143
- ; CHECK-NEXT: xvpermi.d $xr3, $xr0, 78
144
- ; CHECK-NEXT: xvshuf.d $xr2, $xr0, $xr3
145
- ; CHECK-NEXT: xvshuf.d $xr1, $xr2, $xr0
146
- ; CHECK-NEXT: xvori.b $xr0, $xr1, 0
120
+ ; CHECK-NEXT: xvpermi.d $xr0, $xr0, 39
147
121
; CHECK-NEXT: ret
148
122
%shuffle = shufflevector <4 x double > %a , <4 x double > poison, <4 x i32 > <i32 3 , i32 1 , i32 2 , i32 0 >
149
123
ret <4 x double > %shuffle
@@ -152,11 +126,7 @@ define <4 x double> @shuffle_v4f64(<4 x double> %a) {
152
126
define <4 x double > @shuffle_v4f64_same_lane (<4 x double > %a ) {
153
127
; CHECK-LABEL: shuffle_v4f64_same_lane:
154
128
; CHECK: # %bb.0:
155
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI11_0)
156
- ; CHECK-NEXT: xvld $xr1, $a0, %pc_lo12(.LCPI11_0)
157
- ; CHECK-NEXT: xvpermi.d $xr0, $xr0, 78
158
- ; CHECK-NEXT: xvshuf.d $xr1, $xr0, $xr0
159
- ; CHECK-NEXT: xvori.b $xr0, $xr1, 0
129
+ ; CHECK-NEXT: xvpermi.d $xr0, $xr0, 75
160
130
; CHECK-NEXT: ret
161
131
%shuffle = shufflevector <4 x double > %a , <4 x double > poison, <4 x i32 > <i32 3 , i32 2 , i32 0 , i32 1 >
162
132
ret <4 x double > %shuffle
0 commit comments