@@ -5,9 +5,7 @@ define void @bswap_v16i16(ptr %src, ptr %dst) nounwind {
55; CHECK-LABEL: bswap_v16i16:
66; CHECK: # %bb.0:
77; CHECK-NEXT: xvld $xr0, $a0, 0
8- ; CHECK-NEXT: xvsrli.h $xr1, $xr0, 8
9- ; CHECK-NEXT: xvslli.h $xr0, $xr0, 8
10- ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1
8+ ; CHECK-NEXT: xvshuf4i.b $xr0, $xr0, 177
119; CHECK-NEXT: xvst $xr0, $a1, 0
1210; CHECK-NEXT: ret
1311 %v = load <16 x i16 >, ptr %src
@@ -20,18 +18,7 @@ define void @bswap_v8i32(ptr %src, ptr %dst) nounwind {
2018; CHECK-LABEL: bswap_v8i32:
2119; CHECK: # %bb.0:
2220; CHECK-NEXT: xvld $xr0, $a0, 0
23- ; CHECK-NEXT: lu12i.w $a0, 15
24- ; CHECK-NEXT: ori $a0, $a0, 3840
25- ; CHECK-NEXT: xvreplgr2vr.w $xr1, $a0
26- ; CHECK-NEXT: xvsrli.w $xr2, $xr0, 8
27- ; CHECK-NEXT: xvand.v $xr2, $xr2, $xr1
28- ; CHECK-NEXT: xvsrli.w $xr3, $xr0, 24
29- ; CHECK-NEXT: xvor.v $xr2, $xr2, $xr3
30- ; CHECK-NEXT: xvand.v $xr1, $xr0, $xr1
31- ; CHECK-NEXT: xvslli.w $xr1, $xr1, 8
32- ; CHECK-NEXT: xvslli.w $xr0, $xr0, 24
33- ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1
34- ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr2
21+ ; CHECK-NEXT: xvshuf4i.b $xr0, $xr0, 27
3522; CHECK-NEXT: xvst $xr0, $a1, 0
3623; CHECK-NEXT: ret
3724 %v = load <8 x i32 >, ptr %src
@@ -44,35 +31,8 @@ define void @bswap_v4i64(ptr %src, ptr %dst) nounwind {
4431; CHECK-LABEL: bswap_v4i64:
4532; CHECK: # %bb.0:
4633; CHECK-NEXT: xvld $xr0, $a0, 0
47- ; CHECK-NEXT: lu12i.w $a0, 4080
48- ; CHECK-NEXT: xvreplgr2vr.d $xr1, $a0
49- ; CHECK-NEXT: xvsrli.d $xr2, $xr0, 24
50- ; CHECK-NEXT: xvand.v $xr2, $xr2, $xr1
51- ; CHECK-NEXT: lu12i.w $a0, -4096
52- ; CHECK-NEXT: lu32i.d $a0, 0
53- ; CHECK-NEXT: xvreplgr2vr.d $xr3, $a0
54- ; CHECK-NEXT: xvsrli.d $xr4, $xr0, 8
55- ; CHECK-NEXT: xvand.v $xr4, $xr4, $xr3
56- ; CHECK-NEXT: xvor.v $xr2, $xr4, $xr2
57- ; CHECK-NEXT: lu12i.w $a0, 15
58- ; CHECK-NEXT: ori $a0, $a0, 3840
59- ; CHECK-NEXT: xvreplgr2vr.d $xr4, $a0
60- ; CHECK-NEXT: xvsrli.d $xr5, $xr0, 40
61- ; CHECK-NEXT: xvand.v $xr5, $xr5, $xr4
62- ; CHECK-NEXT: xvsrli.d $xr6, $xr0, 56
63- ; CHECK-NEXT: xvor.v $xr5, $xr5, $xr6
64- ; CHECK-NEXT: xvor.v $xr2, $xr2, $xr5
65- ; CHECK-NEXT: xvand.v $xr1, $xr0, $xr1
66- ; CHECK-NEXT: xvslli.d $xr1, $xr1, 24
67- ; CHECK-NEXT: xvand.v $xr3, $xr0, $xr3
68- ; CHECK-NEXT: xvslli.d $xr3, $xr3, 8
69- ; CHECK-NEXT: xvor.v $xr1, $xr1, $xr3
70- ; CHECK-NEXT: xvand.v $xr3, $xr0, $xr4
71- ; CHECK-NEXT: xvslli.d $xr3, $xr3, 40
72- ; CHECK-NEXT: xvslli.d $xr0, $xr0, 56
73- ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr3
74- ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1
75- ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr2
34+ ; CHECK-NEXT: xvshuf4i.b $xr0, $xr0, 27
35+ ; CHECK-NEXT: xvshuf4i.w $xr0, $xr0, 177
7636; CHECK-NEXT: xvst $xr0, $a1, 0
7737; CHECK-NEXT: ret
7838 %v = load <4 x i64 >, ptr %src
0 commit comments