6
6
define <32 x i8 > @byte_rotate_v32_i8_1 (<32 x i8 > %a , <32 x i8 > %b ) {
7
7
; CHECK-LABEL: byte_rotate_v32_i8_1:
8
8
; CHECK: # %bb.0:
9
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI0_0)
10
- ; CHECK-NEXT: xvld $xr2 , $a0, %pc_lo12(.LCPI0_0)
11
- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
9
+ ; CHECK-NEXT: xvbsrl.v $xr0, $xr0, 1
10
+ ; CHECK-NEXT: xvbsll.v $xr1 , $xr1, 15
11
+ ; CHECK-NEXT: xvor.v $xr0, $xr1, $xr0
12
12
; CHECK-NEXT: ret
13
13
%shuffle = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 , i32 32 , i32 17 , i32 18 , i32 19 , i32 20 , i32 21 , i32 22 , i32 23 , i32 24 , i32 25 , i32 26 , i32 27 , i32 28 , i32 29 , i32 30 , i32 31 , i32 48 >
14
14
ret <32 x i8 > %shuffle
@@ -17,9 +17,9 @@ define <32 x i8> @byte_rotate_v32_i8_1(<32 x i8> %a, <32 x i8> %b) {
17
17
define <32 x i8 > @byte_rotate_v32_i8_2 (<32 x i8 > %a , <32 x i8 > %b ) {
18
18
; CHECK-LABEL: byte_rotate_v32_i8_2:
19
19
; CHECK: # %bb.0:
20
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI1_0)
21
- ; CHECK-NEXT: xvld $xr2 , $a0, %pc_lo12(.LCPI1_0)
22
- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $ xr0, $xr2
20
+ ; CHECK-NEXT: xvbsrl.v $xr1, $xr1, 13
21
+ ; CHECK-NEXT: xvbsll.v $xr0 , $xr0, 3
22
+ ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1
23
23
; CHECK-NEXT: ret
24
24
%shuffle = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 45 , i32 46 , i32 47 , i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 61 , i32 62 , i32 63 , i32 16 , i32 17 , i32 18 , i32 19 , i32 20 , i32 21 , i32 22 , i32 23 , i32 24 , i32 25 , i32 26 , i32 27 , i32 28 >
25
25
ret <32 x i8 > %shuffle
@@ -28,9 +28,9 @@ define <32 x i8> @byte_rotate_v32_i8_2(<32 x i8> %a, <32 x i8> %b) {
28
28
define <32 x i8 > @byte_rotate_v32_i8_3 (<32 x i8 > %a ) {
29
29
; CHECK-LABEL: byte_rotate_v32_i8_3:
30
30
; CHECK: # %bb.0:
31
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI2_0)
32
- ; CHECK-NEXT: xvld $xr1 , $a0, %pc_lo12(.LCPI2_0)
33
- ; CHECK-NEXT: xvshuf.b $xr0, $xr0, $xr0, $xr1
31
+ ; CHECK-NEXT: xvbsrl.v $xr1, $xr0, 1
32
+ ; CHECK-NEXT: xvbsll.v $xr0 , $xr0, 15
33
+ ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1
34
34
; CHECK-NEXT: ret
35
35
%shuffle = shufflevector <32 x i8 > %a , <32 x i8 > poison, <32 x i32 > <i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 , i32 0 , i32 17 , i32 18 , i32 19 , i32 20 , i32 21 , i32 22 , i32 23 , i32 24 , i32 25 , i32 26 , i32 27 , i32 28 , i32 29 , i32 30 , i32 31 , i32 16 >
36
36
ret <32 x i8 > %shuffle
@@ -40,10 +40,9 @@ define <32 x i8> @byte_rotate_v32_i8_3(<32 x i8> %a) {
40
40
define <16 x i16 > @byte_rotate_v16i16_1 (<16 x i16 > %a , <16 x i16 > %b ) nounwind {
41
41
; CHECK-LABEL: byte_rotate_v16i16_1:
42
42
; CHECK: # %bb.0:
43
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI3_0)
44
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI3_0)
45
- ; CHECK-NEXT: xvshuf.h $xr2, $xr1, $xr0
46
- ; CHECK-NEXT: xvori.b $xr0, $xr2, 0
43
+ ; CHECK-NEXT: xvbsrl.v $xr0, $xr0, 6
44
+ ; CHECK-NEXT: xvbsll.v $xr1, $xr1, 10
45
+ ; CHECK-NEXT: xvor.v $xr0, $xr1, $xr0
47
46
; CHECK-NEXT: ret
48
47
%shuffle = shufflevector <16 x i16 > %a , <16 x i16 > %b , <16 x i32 > <i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 16 , i32 17 , i32 18 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 , i32 24 , i32 25 , i32 26 >
49
48
ret <16 x i16 > %shuffle
@@ -52,10 +51,9 @@ define <16 x i16> @byte_rotate_v16i16_1(<16 x i16> %a, <16 x i16> %b) nounwind {
52
51
define <16 x i16 > @byte_rotate_v16i16_2 (<16 x i16 > %a , <16 x i16 > %b ) nounwind {
53
52
; CHECK-LABEL: byte_rotate_v16i16_2:
54
53
; CHECK: # %bb.0:
55
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI4_0)
56
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI4_0)
57
- ; CHECK-NEXT: xvshuf.h $xr2, $xr1, $xr0
58
- ; CHECK-NEXT: xvori.b $xr0, $xr2, 0
54
+ ; CHECK-NEXT: xvbsrl.v $xr1, $xr1, 10
55
+ ; CHECK-NEXT: xvbsll.v $xr0, $xr0, 6
56
+ ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1
59
57
; CHECK-NEXT: ret
60
58
%shuffle = shufflevector <16 x i16 > %a , <16 x i16 > %b , <16 x i32 > <i32 21 , i32 22 , i32 23 , i32 0 , i32 1 , i32 2 ,i32 3 , i32 4 , i32 29 , i32 30 , i32 31 , i32 8 , i32 9 , i32 10 , i32 11 , i32 12 >
61
59
ret <16 x i16 > %shuffle
@@ -64,10 +62,9 @@ define <16 x i16> @byte_rotate_v16i16_2(<16 x i16> %a, <16 x i16> %b) nounwind {
64
62
define <16 x i16 > @byte_rotate_v16i16_3 (<16 x i16 > %a ) nounwind {
65
63
; CHECK-LABEL: byte_rotate_v16i16_3:
66
64
; CHECK: # %bb.0:
67
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI5_0)
68
- ; CHECK-NEXT: xvld $xr1, $a0, %pc_lo12(.LCPI5_0)
69
- ; CHECK-NEXT: xvshuf.h $xr1, $xr0, $xr0
70
- ; CHECK-NEXT: xvori.b $xr0, $xr1, 0
65
+ ; CHECK-NEXT: xvbsrl.v $xr1, $xr0, 6
66
+ ; CHECK-NEXT: xvbsll.v $xr0, $xr0, 10
67
+ ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1
71
68
; CHECK-NEXT: ret
72
69
%shuffle = shufflevector <16 x i16 > %a , <16 x i16 > poison, <16 x i32 > <i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 0 , i32 1 , i32 2 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 , i32 8 , i32 9 , i32 10 >
73
70
ret <16 x i16 > %shuffle
@@ -76,10 +73,9 @@ define <16 x i16> @byte_rotate_v16i16_3(<16 x i16> %a) nounwind {
76
73
define <8 x i32 > @byte_rotate_v8i32_1 (<8 x i32 > %a , <8 x i32 > %b ) nounwind {
77
74
; CHECK-LABEL: byte_rotate_v8i32_1:
78
75
; CHECK: # %bb.0:
79
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI6_0)
80
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI6_0)
81
- ; CHECK-NEXT: xvshuf.w $xr2, $xr1, $xr0
82
- ; CHECK-NEXT: xvori.b $xr0, $xr2, 0
76
+ ; CHECK-NEXT: xvbsrl.v $xr0, $xr0, 4
77
+ ; CHECK-NEXT: xvbsll.v $xr1, $xr1, 12
78
+ ; CHECK-NEXT: xvor.v $xr0, $xr1, $xr0
83
79
; CHECK-NEXT: ret
84
80
%shuffle = shufflevector <8 x i32 > %a , <8 x i32 > %b , <8 x i32 > <i32 1 , i32 2 , i32 3 , i32 8 , i32 5 , i32 6 , i32 7 , i32 12 >
85
81
ret <8 x i32 > %shuffle
@@ -88,10 +84,9 @@ define <8 x i32> @byte_rotate_v8i32_1(<8 x i32> %a, <8 x i32> %b) nounwind {
88
84
define <8 x i32 > @byte_rotate_v8i32_2 (<8 x i32 > %a , <8 x i32 > %b ) nounwind {
89
85
; CHECK-LABEL: byte_rotate_v8i32_2:
90
86
; CHECK: # %bb.0:
91
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI7_0)
92
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI7_0)
93
- ; CHECK-NEXT: xvshuf.w $xr2, $xr1, $xr0
94
- ; CHECK-NEXT: xvori.b $xr0, $xr2, 0
87
+ ; CHECK-NEXT: xvbsrl.v $xr1, $xr1, 12
88
+ ; CHECK-NEXT: xvbsll.v $xr0, $xr0, 4
89
+ ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1
95
90
; CHECK-NEXT: ret
96
91
%shuffle = shufflevector <8 x i32 > %a , <8 x i32 > %b , <8 x i32 > <i32 11 , i32 0 , i32 1 , i32 2 , i32 15 , i32 4 , i32 5 , i32 6 >
97
92
ret <8 x i32 > %shuffle
@@ -109,10 +104,9 @@ define <8 x i32> @byte_rotate_v8i32_3(<8 x i32> %a) nounwind {
109
104
define <4 x i64 > @byte_rotate_v4i64_1 (<4 x i64 > %a , <4 x i64 > %b ) nounwind {
110
105
; CHECK-LABEL: byte_rotate_v4i64_1:
111
106
; CHECK: # %bb.0:
112
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI9_0)
113
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI9_0)
114
- ; CHECK-NEXT: xvshuf.d $xr2, $xr1, $xr0
115
- ; CHECK-NEXT: xvori.b $xr0, $xr2, 0
107
+ ; CHECK-NEXT: xvbsrl.v $xr0, $xr0, 8
108
+ ; CHECK-NEXT: xvbsll.v $xr1, $xr1, 8
109
+ ; CHECK-NEXT: xvor.v $xr0, $xr1, $xr0
116
110
; CHECK-NEXT: ret
117
111
%shuffle = shufflevector <4 x i64 > %a , <4 x i64 > %b , <4 x i32 > <i32 1 , i32 4 , i32 3 , i32 6 >
118
112
ret <4 x i64 > %shuffle
@@ -121,10 +115,9 @@ define <4 x i64> @byte_rotate_v4i64_1(<4 x i64> %a, <4 x i64> %b) nounwind {
121
115
define <4 x i64 > @byte_rotate_v4i64_2 (<4 x i64 > %a , <4 x i64 > %b ) nounwind {
122
116
; CHECK-LABEL: byte_rotate_v4i64_2:
123
117
; CHECK: # %bb.0:
124
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI10_0)
125
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI10_0)
126
- ; CHECK-NEXT: xvshuf.d $xr2, $xr1, $xr0
127
- ; CHECK-NEXT: xvori.b $xr0, $xr2, 0
118
+ ; CHECK-NEXT: xvbsrl.v $xr1, $xr1, 8
119
+ ; CHECK-NEXT: xvbsll.v $xr0, $xr0, 8
120
+ ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1
128
121
; CHECK-NEXT: ret
129
122
%shuffle = shufflevector <4 x i64 > %a , <4 x i64 > %b , <4 x i32 > <i32 5 , i32 0 , i32 7 , i32 2 >
130
123
ret <4 x i64 > %shuffle
@@ -133,10 +126,9 @@ define <4 x i64> @byte_rotate_v4i64_2(<4 x i64> %a, <4 x i64> %b) nounwind {
133
126
define <4 x i64 > @byte_rotate_v4i64_3 (<4 x i64 > %a ) nounwind {
134
127
; CHECK-LABEL: byte_rotate_v4i64_3:
135
128
; CHECK: # %bb.0:
136
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI11_0)
137
- ; CHECK-NEXT: xvld $xr1, $a0, %pc_lo12(.LCPI11_0)
138
- ; CHECK-NEXT: xvshuf.d $xr1, $xr0, $xr0
139
- ; CHECK-NEXT: xvori.b $xr0, $xr1, 0
129
+ ; CHECK-NEXT: xvbsrl.v $xr1, $xr0, 8
130
+ ; CHECK-NEXT: xvbsll.v $xr0, $xr0, 8
131
+ ; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1
140
132
; CHECK-NEXT: ret
141
133
%shuffle = shufflevector <4 x i64 > %a , <4 x i64 > poison, <4 x i32 > <i32 1 , i32 0 , i32 3 , i32 2 >
142
134
ret <4 x i64 > %shuffle
0 commit comments