@@ -7,18 +7,19 @@ declare <32 x i8> @llvm.bitreverse.v32i8(<32 x i8>)
7
7
define <32 x i8 > @test_bitreverse_v32i8 (<32 x i8 > %a ) nounwind {
8
8
; CHECK-LABEL: test_bitreverse_v32i8:
9
9
; 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
16
10
; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 2
17
11
; CHECK-NEXT: bitrev.8b $a0, $a0
18
- ; CHECK-NEXT: xvinsgr2vr .d $xr1 , $a0, 2
12
+ ; CHECK-NEXT: vinsgr2vr .d $vr2 , $a0, 0
19
13
; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 3
20
14
; 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
22
23
; CHECK-NEXT: xvori.b $xr0, $xr1, 0
23
24
; CHECK-NEXT: ret
24
25
%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>)
30
31
define <16 x i16 > @test_bitreverse_v16i16 (<16 x i16 > %a ) nounwind {
31
32
; CHECK-LABEL: test_bitreverse_v16i16:
32
33
; 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
39
34
; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 2
40
35
; CHECK-NEXT: bitrev.d $a0, $a0
41
- ; CHECK-NEXT: xvinsgr2vr .d $xr1 , $a0, 2
36
+ ; CHECK-NEXT: vinsgr2vr .d $vr1 , $a0, 0
42
37
; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 3
43
38
; 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
46
48
; CHECK-NEXT: ret
47
49
%b = call <16 x i16 > @llvm.bitreverse.v16i16 (<16 x i16 > %a )
48
50
ret <16 x i16 > %b
@@ -53,19 +55,20 @@ declare <8 x i32> @llvm.bitreverse.v8i32(<8 x i32>)
53
55
define <8 x i32 > @test_bitreverse_v8i32 (<8 x i32 > %a ) nounwind {
54
56
; CHECK-LABEL: test_bitreverse_v8i32:
55
57
; 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
62
58
; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 2
63
59
; CHECK-NEXT: bitrev.d $a0, $a0
64
- ; CHECK-NEXT: xvinsgr2vr .d $xr1 , $a0, 2
60
+ ; CHECK-NEXT: vinsgr2vr .d $vr1 , $a0, 0
65
61
; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 3
66
62
; 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
69
72
; CHECK-NEXT: ret
70
73
%b = call <8 x i32 > @llvm.bitreverse.v8i32 (<8 x i32 > %a )
71
74
ret <8 x i32 > %b
@@ -76,18 +79,19 @@ declare <4 x i64> @llvm.bitreverse.v4i64(<4 x i64>)
76
79
define <4 x i64 > @test_bitreverse_v4i64 (<4 x i64 > %a ) nounwind {
77
80
; CHECK-LABEL: test_bitreverse_v4i64:
78
81
; 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
85
82
; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 2
86
83
; CHECK-NEXT: bitrev.d $a0, $a0
87
- ; CHECK-NEXT: xvinsgr2vr .d $xr1 , $a0, 2
84
+ ; CHECK-NEXT: vinsgr2vr .d $vr2 , $a0, 0
88
85
; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 3
89
86
; 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
91
95
; CHECK-NEXT: xvori.b $xr0, $xr1, 0
92
96
; CHECK-NEXT: ret
93
97
%b = call <4 x i64 > @llvm.bitreverse.v4i64 (<4 x i64 > %a )
0 commit comments