@@ -6,11 +6,8 @@ define <32 x i8> @shuffle_v32i8(<32 x i8> %a) {
66; CHECK-LABEL: shuffle_v32i8:
77; CHECK: # %bb.0:
88; 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
1411; CHECK-NEXT: xvshuf.h $xr1, $xr2, $xr0
1512; CHECK-NEXT: xvori.b $xr0, $xr1, 0
1613; CHECK-NEXT: ret
@@ -34,11 +31,8 @@ define <16 x i16> @shuffle_v16i16(<16 x i16> %a) {
3431; CHECK-LABEL: shuffle_v16i16:
3532; CHECK: # %bb.0:
3633; 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
4236; CHECK-NEXT: xvshuf.w $xr1, $xr2, $xr0
4337; CHECK-NEXT: xvori.b $xr0, $xr1, 0
4438; CHECK-NEXT: ret
@@ -72,10 +66,7 @@ define <8 x i32> @shuffle_v8i32(<8 x i32> %a) {
7266define <8 x i32 > @shuffle_v8i32_same_lane (<8 x i32 > %a ) {
7367; CHECK-LABEL: shuffle_v8i32_same_lane:
7468; 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
7970; CHECK-NEXT: ret
8071 %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 >
8172 ret <8 x i32 > %shuffle
@@ -84,14 +75,7 @@ define <8 x i32> @shuffle_v8i32_same_lane(<8 x i32> %a) {
8475define <4 x i64 > @shuffle_v4i64 (<4 x i64 > %a ) {
8576; CHECK-LABEL: shuffle_v4i64:
8677; 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
9579; CHECK-NEXT: ret
9680 %shuffle = shufflevector <4 x i64 > %a , <4 x i64 > poison, <4 x i32 > <i32 3 , i32 1 , i32 2 , i32 0 >
9781 ret <4 x i64 > %shuffle
@@ -100,10 +84,7 @@ define <4 x i64> @shuffle_v4i64(<4 x i64> %a) {
10084define <4 x i64 > @shuffle_v4i64_same_lane (<4 x i64 > %a ) {
10185; CHECK-LABEL: shuffle_v4i64_same_lane:
10286; 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
10788; CHECK-NEXT: ret
10889 %shuffle = shufflevector <4 x i64 > %a , <4 x i64 > poison, <4 x i32 > <i32 1 , i32 0 , i32 2 , i32 3 >
10990 ret <4 x i64 > %shuffle
@@ -136,14 +117,7 @@ define <8 x float> @shuffle_v8f32_same_lane(<8 x float> %a) {
136117define <4 x double > @shuffle_v4f64 (<4 x double > %a ) {
137118; CHECK-LABEL: shuffle_v4f64:
138119; 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
147121; CHECK-NEXT: ret
148122 %shuffle = shufflevector <4 x double > %a , <4 x double > poison, <4 x i32 > <i32 3 , i32 1 , i32 2 , i32 0 >
149123 ret <4 x double > %shuffle
@@ -152,11 +126,7 @@ define <4 x double> @shuffle_v4f64(<4 x double> %a) {
152126define <4 x double > @shuffle_v4f64_same_lane (<4 x double > %a ) {
153127; CHECK-LABEL: shuffle_v4f64_same_lane:
154128; 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
160130; CHECK-NEXT: ret
161131 %shuffle = shufflevector <4 x double > %a , <4 x double > poison, <4 x i32 > <i32 3 , i32 2 , i32 0 , i32 1 >
162132 ret <4 x double > %shuffle
0 commit comments