@@ -6,7 +6,8 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_v16i16(<32 x i8> %a, <32 x i8> %b)
6
6
; CHECK: # %bb.0:
7
7
; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI0_0)
8
8
; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI0_0)
9
- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
9
+ ; CHECK-NEXT: xvshuf.h $xr2, $xr1, $xr0
10
+ ; CHECK-NEXT: xvori.b $xr0, $xr2, 0
10
11
; CHECK-NEXT: ret
11
12
%r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <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 32 , i32 33 , i32 34 , i32 35 , i32 24 , i32 25 , i32 26 , i32 27 , i32 48 , i32 49 , i32 50 , i32 51 , i32 52 , i32 53 , i32 54 , i32 55 , i32 60 , i32 61 , i32 30 , i32 31 >
12
13
ret <32 x i8 > %r
@@ -17,7 +18,8 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_v8i32(<32 x i8> %a, <32 x i8> %b)
17
18
; CHECK: # %bb.0:
18
19
; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI1_0)
19
20
; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI1_0)
20
- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
21
+ ; CHECK-NEXT: xvshuf.w $xr2, $xr1, $xr0
22
+ ; CHECK-NEXT: xvori.b $xr0, $xr2, 0
21
23
; CHECK-NEXT: ret
22
24
%r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <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 32 , i32 33 , i32 34 , i32 35 , i32 24 , i32 25 , i32 26 , i32 27 , i32 48 , i32 49 , i32 50 , i32 51 , i32 52 , i32 53 , i32 54 , i32 55 , i32 60 , i32 61 , i32 62 , i32 63 >
23
25
ret <32 x i8 > %r
@@ -28,7 +30,8 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_v4i64(<32 x i8> %a, <32 x i8> %b)
28
30
; CHECK: # %bb.0:
29
31
; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI2_0)
30
32
; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI2_0)
31
- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
33
+ ; CHECK-NEXT: xvshuf.d $xr2, $xr1, $xr0
34
+ ; CHECK-NEXT: xvori.b $xr0, $xr2, 0
32
35
; CHECK-NEXT: ret
33
36
%r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <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 13 , i32 14 , i32 15 , i32 24 , i32 25 , i32 26 , i32 27 , i32 28 , i32 29 , i32 30 , i32 31 , i32 48 , i32 49 , i32 50 , i32 51 , i32 52 , i32 53 , i32 54 , i32 55 >
34
37
ret <32 x i8 > %r
@@ -39,7 +42,7 @@ define <16 x i16> @widen_shuffle_mask_v16i16_to_v8i32(<16 x i16> %a, <16 x i16>
39
42
; CHECK: # %bb.0:
40
43
; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI3_0)
41
44
; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI3_0)
42
- ; CHECK-NEXT: xvshuf.h $xr2, $xr1, $xr0
45
+ ; CHECK-NEXT: xvshuf.w $xr2, $xr1, $xr0
43
46
; CHECK-NEXT: xvori.b $xr0, $xr2, 0
44
47
; CHECK-NEXT: ret
45
48
%r = shufflevector <16 x i16 > %a , <16 x i16 > %b , <16 x i32 > <i32 0 , i32 1 , i32 6 , i32 7 , i32 16 , i32 17 , i32 2 , i32 3 , i32 10 , i32 11 , i32 12 , i32 13 , i32 24 , i32 25 , i32 26 , i32 27 >
@@ -51,7 +54,7 @@ define <16 x i16> @widen_shuffle_mask_v16i16_to_v4i64(<16 x i16> %a, <16 x i16>
51
54
; CHECK: # %bb.0:
52
55
; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI4_0)
53
56
; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI4_0)
54
- ; CHECK-NEXT: xvshuf.h $xr2, $xr1, $xr0
57
+ ; CHECK-NEXT: xvshuf.d $xr2, $xr1, $xr0
55
58
; CHECK-NEXT: xvori.b $xr0, $xr2, 0
56
59
; CHECK-NEXT: ret
57
60
%r = shufflevector <16 x i16 > %a , <16 x i16 > %b , <16 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 20 , i32 21 , i32 22 , i32 23 , i32 12 , i32 13 , i32 14 , i32 15 , i32 28 , i32 29 , i32 30 , i32 31 >
@@ -63,7 +66,7 @@ define <8 x i32> @widen_shuffle_mask_v8i32_to_v4i64(<8 x i32> %a, <8 x i32> %b)
63
66
; CHECK: # %bb.0:
64
67
; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI5_0)
65
68
; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI5_0)
66
- ; CHECK-NEXT: xvshuf.w $xr2, $xr1, $xr0
69
+ ; CHECK-NEXT: xvshuf.d $xr2, $xr1, $xr0
67
70
; CHECK-NEXT: xvori.b $xr0, $xr2, 0
68
71
; CHECK-NEXT: ret
69
72
%r = shufflevector <8 x i32 > %a , <8 x i32 > %b , <8 x i32 > <i32 0 , i32 1 , i32 8 , i32 9 , i32 14 , i32 15 , i32 6 , i32 7 >
@@ -73,9 +76,7 @@ define <8 x i32> @widen_shuffle_mask_v8i32_to_v4i64(<8 x i32> %a, <8 x i32> %b)
73
76
define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvpackev_h (<32 x i8 > %a , <32 x i8 > %b ) {
74
77
; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvpackev_h:
75
78
; CHECK: # %bb.0:
76
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI6_0)
77
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI6_0)
78
- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
79
+ ; CHECK-NEXT: xvpackev.h $xr0, $xr1, $xr0
79
80
; CHECK-NEXT: ret
80
81
%r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 0 , i32 1 , i32 32 , i32 33 , i32 4 , i32 5 , i32 36 , i32 37 , i32 8 , i32 9 , i32 40 , i32 41 , i32 12 , i32 13 , i32 44 , i32 45 , i32 16 , i32 17 , i32 48 , i32 49 , i32 20 , i32 21 , i32 52 , i32 53 , i32 24 , i32 25 , i32 56 , i32 57 , i32 28 , i32 29 , i32 60 , i32 61 >
81
82
ret <32 x i8 > %r
@@ -84,9 +85,7 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_xvpackev_h(<32 x i8> %a, <32 x i8>
84
85
define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvpackod_h (<32 x i8 > %a , <32 x i8 > %b ) {
85
86
; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvpackod_h:
86
87
; CHECK: # %bb.0:
87
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI7_0)
88
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI7_0)
89
- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
88
+ ; CHECK-NEXT: xvpackod.h $xr0, $xr1, $xr0
90
89
; CHECK-NEXT: ret
91
90
%r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 2 , i32 3 , i32 34 , i32 35 , i32 6 , i32 7 , i32 38 , i32 39 , i32 10 , i32 11 , i32 42 , i32 43 , i32 14 , i32 15 , i32 46 , i32 47 , i32 18 , i32 19 , i32 50 , i32 51 , i32 22 , i32 23 , i32 54 , i32 55 , i32 26 , i32 27 , i32 58 , i32 59 , i32 30 , i32 31 , i32 62 , i32 63 >
92
91
ret <32 x i8 > %r
@@ -95,9 +94,7 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_xvpackod_h(<32 x i8> %a, <32 x i8>
95
94
define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvpickev_h (<32 x i8 > %a , <32 x i8 > %b ) {
96
95
; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvpickev_h:
97
96
; CHECK: # %bb.0:
98
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI8_0)
99
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI8_0)
100
- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
97
+ ; CHECK-NEXT: xvpickev.h $xr0, $xr1, $xr0
101
98
; CHECK-NEXT: ret
102
99
%r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 0 , i32 1 , i32 4 , i32 5 , i32 8 , i32 9 , i32 12 , i32 13 , i32 32 , i32 33 , i32 36 , i32 37 , i32 40 , i32 41 , i32 44 , i32 45 , i32 16 , i32 17 , i32 20 , i32 21 , i32 24 , i32 25 , i32 28 , i32 29 , i32 48 , i32 49 , i32 52 , i32 53 , i32 56 , i32 57 , i32 60 , i32 61 >
103
100
ret <32 x i8 > %r
@@ -106,9 +103,7 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_xvpickev_h(<32 x i8> %a, <32 x i8>
106
103
define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvpickod_h (<32 x i8 > %a , <32 x i8 > %b ) {
107
104
; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvpickod_h:
108
105
; CHECK: # %bb.0:
109
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI9_0)
110
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI9_0)
111
- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
106
+ ; CHECK-NEXT: xvpickod.h $xr0, $xr1, $xr0
112
107
; CHECK-NEXT: ret
113
108
%r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 2 , i32 3 , i32 6 , i32 7 , i32 10 , i32 11 , i32 14 , i32 15 , i32 34 , i32 35 , i32 38 , i32 39 , i32 42 , i32 43 , i32 46 , i32 47 , i32 18 , i32 19 , i32 22 , i32 23 , i32 26 , i32 27 , i32 30 , i32 31 , i32 50 , i32 51 , i32 54 , i32 55 , i32 58 , i32 59 , i32 62 , i32 63 >
114
109
ret <32 x i8 > %r
@@ -117,9 +112,7 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_xvpickod_h(<32 x i8> %a, <32 x i8>
117
112
define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvilvl_h (<32 x i8 > %a , <32 x i8 > %b ) {
118
113
; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvilvl_h:
119
114
; CHECK: # %bb.0:
120
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI10_0)
121
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI10_0)
122
- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
115
+ ; CHECK-NEXT: xvilvl.h $xr0, $xr1, $xr0
123
116
; CHECK-NEXT: ret
124
117
%r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 0 , i32 1 , i32 32 , i32 33 , i32 2 , i32 3 , i32 34 , i32 35 , i32 4 , i32 5 , i32 36 , i32 37 , i32 6 , i32 7 , i32 38 , i32 39 , i32 16 , i32 17 , i32 48 , i32 49 , i32 18 , i32 19 , i32 50 , i32 51 , i32 20 , i32 21 , i32 52 , i32 53 , i32 22 , i32 23 , i32 54 , i32 55 >
125
118
ret <32 x i8 > %r
@@ -128,9 +121,7 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_xvilvl_h(<32 x i8> %a, <32 x i8> %
128
121
define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvilvh_h (<32 x i8 > %a , <32 x i8 > %b ) {
129
122
; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvilvh_h:
130
123
; CHECK: # %bb.0:
131
- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI11_0)
132
- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI11_0)
133
- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
124
+ ; CHECK-NEXT: xvilvh.h $xr0, $xr1, $xr0
134
125
; CHECK-NEXT: ret
135
126
%r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 8 , i32 9 , i32 40 , i32 41 , i32 10 , i32 11 , i32 42 , i32 43 , i32 12 , i32 13 , i32 44 , i32 45 , i32 14 , i32 15 , i32 46 , i32 47 , i32 24 , i32 25 , i32 56 , i32 57 , i32 26 , i32 27 , i32 58 , i32 59 , i32 28 , i32 29 , i32 60 , i32 61 , i32 30 , i32 31 , i32 62 , i32 63 >
136
127
ret <32 x i8 > %r
0 commit comments