@@ -7,18 +7,19 @@ declare <32 x i8> @llvm.bitreverse.v32i8(<32 x i8>)
77define <32 x i8 > @test_bitreverse_v32i8 (<32 x i8 > %a ) nounwind {
88; CHECK-LABEL: test_bitreverse_v32i8:
99; CHECK: # %bb.0:
10- ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 0
11- ; CHECK-NEXT: bitrev.8b $a0, $a0
12- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 0
13- ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 1
14- ; CHECK-NEXT: bitrev.8b $a0, $a0
15- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 1
1610; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 2
1711; CHECK-NEXT: bitrev.8b $a0, $a0
18- ; CHECK-NEXT: xvinsgr2vr .d $xr1 , $a0, 2
12+ ; CHECK-NEXT: vinsgr2vr .d $vr2 , $a0, 0
1913; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 3
2014; CHECK-NEXT: bitrev.8b $a0, $a0
21- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 3
15+ ; CHECK-NEXT: vinsgr2vr.d $vr2, $a0, 1
16+ ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 0
17+ ; CHECK-NEXT: bitrev.8b $a0, $a0
18+ ; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 0
19+ ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 1
20+ ; CHECK-NEXT: bitrev.8b $a0, $a0
21+ ; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 1
22+ ; CHECK-NEXT: xvpermi.q $xr1, $xr2, 2
2223; CHECK-NEXT: xvori.b $xr0, $xr1, 0
2324; CHECK-NEXT: ret
2425 %b = call <32 x i8 > @llvm.bitreverse.v32i8 (<32 x i8 > %a )
@@ -30,19 +31,20 @@ declare <16 x i16> @llvm.bitreverse.v16i16(<16 x i16>)
3031define <16 x i16 > @test_bitreverse_v16i16 (<16 x i16 > %a ) nounwind {
3132; CHECK-LABEL: test_bitreverse_v16i16:
3233; CHECK: # %bb.0:
33- ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 0
34- ; CHECK-NEXT: bitrev.d $a0, $a0
35- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 0
36- ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 1
37- ; CHECK-NEXT: bitrev.d $a0, $a0
38- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 1
3934; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 2
4035; CHECK-NEXT: bitrev.d $a0, $a0
41- ; CHECK-NEXT: xvinsgr2vr .d $xr1 , $a0, 2
36+ ; CHECK-NEXT: vinsgr2vr .d $vr1 , $a0, 0
4237; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 3
4338; CHECK-NEXT: bitrev.d $a0, $a0
44- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 3
45- ; CHECK-NEXT: xvshuf4i.h $xr0, $xr1, 27
39+ ; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 1
40+ ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 0
41+ ; CHECK-NEXT: bitrev.d $a0, $a0
42+ ; CHECK-NEXT: vinsgr2vr.d $vr2, $a0, 0
43+ ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 1
44+ ; CHECK-NEXT: bitrev.d $a0, $a0
45+ ; CHECK-NEXT: vinsgr2vr.d $vr2, $a0, 1
46+ ; CHECK-NEXT: xvpermi.q $xr2, $xr1, 2
47+ ; CHECK-NEXT: xvshuf4i.h $xr0, $xr2, 27
4648; CHECK-NEXT: ret
4749 %b = call <16 x i16 > @llvm.bitreverse.v16i16 (<16 x i16 > %a )
4850 ret <16 x i16 > %b
@@ -53,19 +55,20 @@ declare <8 x i32> @llvm.bitreverse.v8i32(<8 x i32>)
5355define <8 x i32 > @test_bitreverse_v8i32 (<8 x i32 > %a ) nounwind {
5456; CHECK-LABEL: test_bitreverse_v8i32:
5557; CHECK: # %bb.0:
56- ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 0
57- ; CHECK-NEXT: bitrev.d $a0, $a0
58- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 0
59- ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 1
60- ; CHECK-NEXT: bitrev.d $a0, $a0
61- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 1
6258; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 2
6359; CHECK-NEXT: bitrev.d $a0, $a0
64- ; CHECK-NEXT: xvinsgr2vr .d $xr1 , $a0, 2
60+ ; CHECK-NEXT: vinsgr2vr .d $vr1 , $a0, 0
6561; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 3
6662; CHECK-NEXT: bitrev.d $a0, $a0
67- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 3
68- ; CHECK-NEXT: xvshuf4i.w $xr0, $xr1, 177
63+ ; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 1
64+ ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 0
65+ ; CHECK-NEXT: bitrev.d $a0, $a0
66+ ; CHECK-NEXT: vinsgr2vr.d $vr2, $a0, 0
67+ ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 1
68+ ; CHECK-NEXT: bitrev.d $a0, $a0
69+ ; CHECK-NEXT: vinsgr2vr.d $vr2, $a0, 1
70+ ; CHECK-NEXT: xvpermi.q $xr2, $xr1, 2
71+ ; CHECK-NEXT: xvshuf4i.w $xr0, $xr2, 177
6972; CHECK-NEXT: ret
7073 %b = call <8 x i32 > @llvm.bitreverse.v8i32 (<8 x i32 > %a )
7174 ret <8 x i32 > %b
@@ -76,18 +79,19 @@ declare <4 x i64> @llvm.bitreverse.v4i64(<4 x i64>)
7679define <4 x i64 > @test_bitreverse_v4i64 (<4 x i64 > %a ) nounwind {
7780; CHECK-LABEL: test_bitreverse_v4i64:
7881; CHECK: # %bb.0:
79- ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 0
80- ; CHECK-NEXT: bitrev.d $a0, $a0
81- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 0
82- ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 1
83- ; CHECK-NEXT: bitrev.d $a0, $a0
84- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 1
8582; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 2
8683; CHECK-NEXT: bitrev.d $a0, $a0
87- ; CHECK-NEXT: xvinsgr2vr .d $xr1 , $a0, 2
84+ ; CHECK-NEXT: vinsgr2vr .d $vr2 , $a0, 0
8885; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 3
8986; CHECK-NEXT: bitrev.d $a0, $a0
90- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 3
87+ ; CHECK-NEXT: vinsgr2vr.d $vr2, $a0, 1
88+ ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 0
89+ ; CHECK-NEXT: bitrev.d $a0, $a0
90+ ; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 0
91+ ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 1
92+ ; CHECK-NEXT: bitrev.d $a0, $a0
93+ ; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 1
94+ ; CHECK-NEXT: xvpermi.q $xr1, $xr2, 2
9195; CHECK-NEXT: xvori.b $xr0, $xr1, 0
9296; CHECK-NEXT: ret
9397 %b = call <4 x i64 > @llvm.bitreverse.v4i64 (<4 x i64 > %a )
0 commit comments