@@ -7,19 +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: xvslli.b $xr1 , $xr0, 4
11- ; CHECK-NEXT: xvsrli.b $xr0 , $xr0, 4
12- ; CHECK-NEXT: xvor.v $xr0 , $xr0, $xr1
13- ; CHECK-NEXT: xvandi.b $xr1 , $xr0, 51
14- ; CHECK-NEXT: xvslli.b $xr1 , $xr1, 2
15- ; CHECK-NEXT: xvsrli.b $xr0 , $xr0, 2
16- ; CHECK-NEXT: xvandi.b $xr0 , $xr0, 51
17- ; CHECK-NEXT: xvor.v $xr0 , $xr0, $xr1
18- ; CHECK-NEXT: xvandi.b $xr1, $xr0, 85
19- ; CHECK-NEXT: xvslli.b $xr1 , $xr1, 1
20- ; CHECK-NEXT: xvsrli.b $xr0 , $xr0, 1
21- ; CHECK-NEXT: xvandi.b $xr0 , $xr0, 85
22- ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1
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
16+ ; CHECK-NEXT: xvpickve2gr.d $a0 , $xr0, 2
17+ ; CHECK-NEXT: bitrev.8b $a0 , $a0
18+ ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 2
19+ ; CHECK-NEXT: xvpickve2gr.d $a0 , $xr0, 3
20+ ; CHECK-NEXT: bitrev.8b $a0 , $a0
21+ ; CHECK-NEXT: xvinsgr2vr.d $xr1 , $a0, 3
22+ ; CHECK-NEXT: xvori.b $xr0, $xr1, 0
2323; CHECK-NEXT: ret
2424 %b = call <32 x i8 > @llvm.bitreverse.v32i8 (<32 x i8 > %a )
2525 ret <32 x i8 > %b
@@ -30,25 +30,19 @@ declare <16 x i16> @llvm.bitreverse.v16i16(<16 x i16>)
3030define <16 x i16 > @test_bitreverse_v16i16 (<16 x i16 > %a ) nounwind {
3131; CHECK-LABEL: test_bitreverse_v16i16:
3232; CHECK: # %bb.0:
33- ; CHECK-NEXT: xvshuf4i.b $xr0, $xr0, 177
34- ; CHECK-NEXT: xvsrli.h $xr1, $xr0, 4
35- ; CHECK-NEXT: xvrepli.b $xr2, 15
36- ; CHECK-NEXT: xvand.v $xr1, $xr1, $xr2
37- ; CHECK-NEXT: xvand.v $xr0, $xr0, $xr2
38- ; CHECK-NEXT: xvslli.h $xr0, $xr0, 4
39- ; CHECK-NEXT: xvor.v $xr0, $xr1, $xr0
40- ; CHECK-NEXT: xvsrli.h $xr1, $xr0, 2
41- ; CHECK-NEXT: xvrepli.b $xr2, 51
42- ; CHECK-NEXT: xvand.v $xr1, $xr1, $xr2
43- ; CHECK-NEXT: xvand.v $xr0, $xr0, $xr2
44- ; CHECK-NEXT: xvslli.h $xr0, $xr0, 2
45- ; CHECK-NEXT: xvor.v $xr0, $xr1, $xr0
46- ; CHECK-NEXT: xvsrli.h $xr1, $xr0, 1
47- ; CHECK-NEXT: xvrepli.b $xr2, 85
48- ; CHECK-NEXT: xvand.v $xr1, $xr1, $xr2
49- ; CHECK-NEXT: xvand.v $xr0, $xr0, $xr2
50- ; CHECK-NEXT: xvslli.h $xr0, $xr0, 1
51- ; CHECK-NEXT: xvor.v $xr0, $xr1, $xr0
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
39+ ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 2
40+ ; CHECK-NEXT: bitrev.d $a0, $a0
41+ ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 2
42+ ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 3
43+ ; CHECK-NEXT: bitrev.d $a0, $a0
44+ ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 3
45+ ; CHECK-NEXT: xvshuf4i.h $xr0, $xr1, 27
5246; CHECK-NEXT: ret
5347 %b = call <16 x i16 > @llvm.bitreverse.v16i16 (<16 x i16 > %a )
5448 ret <16 x i16 > %b
@@ -59,25 +53,19 @@ declare <8 x i32> @llvm.bitreverse.v8i32(<8 x i32>)
5953define <8 x i32 > @test_bitreverse_v8i32 (<8 x i32 > %a ) nounwind {
6054; CHECK-LABEL: test_bitreverse_v8i32:
6155; CHECK: # %bb.0:
62- ; CHECK-NEXT: xvshuf4i.b $xr0, $xr0, 27
63- ; CHECK-NEXT: xvsrli.w $xr1, $xr0, 4
64- ; CHECK-NEXT: xvrepli.b $xr2, 15
65- ; CHECK-NEXT: xvand.v $xr1, $xr1, $xr2
66- ; CHECK-NEXT: xvand.v $xr0, $xr0, $xr2
67- ; CHECK-NEXT: xvslli.w $xr0, $xr0, 4
68- ; CHECK-NEXT: xvor.v $xr0, $xr1, $xr0
69- ; CHECK-NEXT: xvsrli.w $xr1, $xr0, 2
70- ; CHECK-NEXT: xvrepli.b $xr2, 51
71- ; CHECK-NEXT: xvand.v $xr1, $xr1, $xr2
72- ; CHECK-NEXT: xvand.v $xr0, $xr0, $xr2
73- ; CHECK-NEXT: xvslli.w $xr0, $xr0, 2
74- ; CHECK-NEXT: xvor.v $xr0, $xr1, $xr0
75- ; CHECK-NEXT: xvsrli.w $xr1, $xr0, 1
76- ; CHECK-NEXT: xvrepli.b $xr2, 85
77- ; CHECK-NEXT: xvand.v $xr1, $xr1, $xr2
78- ; CHECK-NEXT: xvand.v $xr0, $xr0, $xr2
79- ; CHECK-NEXT: xvslli.w $xr0, $xr0, 1
80- ; CHECK-NEXT: xvor.v $xr0, $xr1, $xr0
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
62+ ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 2
63+ ; CHECK-NEXT: bitrev.d $a0, $a0
64+ ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 2
65+ ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 3
66+ ; CHECK-NEXT: bitrev.d $a0, $a0
67+ ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a0, 3
68+ ; CHECK-NEXT: xvshuf4i.w $xr0, $xr1, 177
8169; CHECK-NEXT: ret
8270 %b = call <8 x i32 > @llvm.bitreverse.v8i32 (<8 x i32 > %a )
8371 ret <8 x i32 > %b
0 commit comments