@@ -23,19 +23,11 @@ entry:
2323}
2424
2525define <4 x i32 > @v4i32 (<4 x i32 > %a ) {
26- ; CHECK-SD-LABEL: v4i32:
27- ; CHECK-SD: // %bb.0: // %entry
28- ; CHECK-SD-NEXT: rev64 v0.4s, v0.4s
29- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
30- ; CHECK-SD-NEXT: ret
31- ;
32- ; CHECK-GI-LABEL: v4i32:
33- ; CHECK-GI: // %bb.0: // %entry
34- ; CHECK-GI-NEXT: adrp x8, .LCPI2_0
35- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 def $q0_q1
36- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI2_0]
37- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
38- ; CHECK-GI-NEXT: ret
26+ ; CHECK-LABEL: v4i32:
27+ ; CHECK: // %bb.0: // %entry
28+ ; CHECK-NEXT: rev64 v0.4s, v0.4s
29+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
30+ ; CHECK-NEXT: ret
3931entry:
4032 %V128 = shufflevector <4 x i32 > %a , <4 x i32 > undef , <4 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 >
4133 ret <4 x i32 > %V128
@@ -52,19 +44,11 @@ entry:
5244}
5345
5446define <8 x i16 > @v8i16 (<8 x i16 > %a ) {
55- ; CHECK-SD-LABEL: v8i16:
56- ; CHECK-SD: // %bb.0: // %entry
57- ; CHECK-SD-NEXT: rev64 v0.8h, v0.8h
58- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
59- ; CHECK-SD-NEXT: ret
60- ;
61- ; CHECK-GI-LABEL: v8i16:
62- ; CHECK-GI: // %bb.0: // %entry
63- ; CHECK-GI-NEXT: adrp x8, .LCPI4_0
64- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 def $q0_q1
65- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI4_0]
66- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
67- ; CHECK-GI-NEXT: ret
47+ ; CHECK-LABEL: v8i16:
48+ ; CHECK: // %bb.0: // %entry
49+ ; CHECK-NEXT: rev64 v0.8h, v0.8h
50+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
51+ ; CHECK-NEXT: ret
6852entry:
6953 %V128 = shufflevector <8 x i16 > %a , <8 x i16 > undef , <8 x i32 > <i32 7 , i32 6 , i32 5 , i32 4 , i32 3 , i32 2 , i32 1 , i32 0 >
7054 ret <8 x i16 > %V128
@@ -93,6 +77,22 @@ entry:
9377 ret <8 x i16 > %V128
9478}
9579
80+ define <4 x i16 > @v8i16_3 (<8 x i16 > %a ) {
81+ ; CHECK-SD-LABEL: v8i16_3:
82+ ; CHECK-SD: // %bb.0: // %entry
83+ ; CHECK-SD-NEXT: rev64 v0.4h, v0.4h
84+ ; CHECK-SD-NEXT: ret
85+ ;
86+ ; CHECK-GI-LABEL: v8i16_3:
87+ ; CHECK-GI: // %bb.0: // %entry
88+ ; CHECK-GI-NEXT: rev64 v0.8h, v0.8h
89+ ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0
90+ ; CHECK-GI-NEXT: ret
91+ entry:
92+ %V128 = shufflevector <8 x i16 > %a , <8 x i16 > poison, <4 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 >
93+ ret <4 x i16 > %V128
94+ }
95+
9696define <4 x i16 > @v4i16 (<4 x i16 > %a ) {
9797; CHECK-LABEL: v4i16:
9898; CHECK: // %bb.0: // %entry
@@ -104,19 +104,11 @@ entry:
104104}
105105
106106define <16 x i8 > @v16i8 (<16 x i8 > %a ) {
107- ; CHECK-SD-LABEL: v16i8:
108- ; CHECK-SD: // %bb.0: // %entry
109- ; CHECK-SD-NEXT: rev64 v0.16b, v0.16b
110- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
111- ; CHECK-SD-NEXT: ret
112- ;
113- ; CHECK-GI-LABEL: v16i8:
114- ; CHECK-GI: // %bb.0: // %entry
115- ; CHECK-GI-NEXT: adrp x8, .LCPI7_0
116- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 def $q0_q1
117- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI7_0]
118- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
119- ; CHECK-GI-NEXT: ret
107+ ; CHECK-LABEL: v16i8:
108+ ; CHECK: // %bb.0: // %entry
109+ ; CHECK-NEXT: rev64 v0.16b, v0.16b
110+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
111+ ; CHECK-NEXT: ret
120112entry:
121113 %V128 = shufflevector <16 x i8 > %a , <16 x i8 > undef , <16 x i32 > <i32 15 , i32 14 , i32 13 , i32 12 , i32 11 , i32 10 , i32 9 , i32 8 , i32 7 , i32 6 , i32 5 , i32 4 , i32 3 , i32 2 , i32 1 , i32 0 >
122114 ret <16 x i8 > %V128
@@ -125,18 +117,18 @@ entry:
125117define <16 x i8 > @v16i8_2 (<8 x i8 > %a , <8 x i8 > %b ) {
126118; CHECK-SD-LABEL: v16i8_2:
127119; CHECK-SD: // %bb.0: // %entry
128- ; CHECK-SD-NEXT: adrp x8, .LCPI8_0
120+ ; CHECK-SD-NEXT: adrp x8, .LCPI9_0
129121; CHECK-SD-NEXT: // kill: def $d1 killed $d1 killed $q0_q1 def $q0_q1
130- ; CHECK-SD-NEXT: ldr q2, [x8, :lo12:.LCPI8_0 ]
122+ ; CHECK-SD-NEXT: ldr q2, [x8, :lo12:.LCPI9_0 ]
131123; CHECK-SD-NEXT: // kill: def $d0 killed $d0 killed $q0_q1 def $q0_q1
132124; CHECK-SD-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
133125; CHECK-SD-NEXT: ret
134126;
135127; CHECK-GI-LABEL: v16i8_2:
136128; CHECK-GI: // %bb.0: // %entry
137- ; CHECK-GI-NEXT: adrp x8, .LCPI8_0
129+ ; CHECK-GI-NEXT: adrp x8, .LCPI9_0
138130; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0_q1 def $q0_q1
139- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI8_0 ]
131+ ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI9_0 ]
140132; CHECK-GI-NEXT: // kill: def $d1 killed $d1 killed $q0_q1 def $q0_q1
141133; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
142134; CHECK-GI-NEXT: ret
@@ -166,19 +158,11 @@ entry:
166158}
167159
168160define <4 x float > @v4f32 (<4 x float > %a ) {
169- ; CHECK-SD-LABEL: v4f32:
170- ; CHECK-SD: // %bb.0: // %entry
171- ; CHECK-SD-NEXT: rev64 v0.4s, v0.4s
172- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
173- ; CHECK-SD-NEXT: ret
174- ;
175- ; CHECK-GI-LABEL: v4f32:
176- ; CHECK-GI: // %bb.0: // %entry
177- ; CHECK-GI-NEXT: adrp x8, .LCPI11_0
178- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 def $q0_q1
179- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI11_0]
180- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
181- ; CHECK-GI-NEXT: ret
161+ ; CHECK-LABEL: v4f32:
162+ ; CHECK: // %bb.0: // %entry
163+ ; CHECK-NEXT: rev64 v0.4s, v0.4s
164+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
165+ ; CHECK-NEXT: ret
182166entry:
183167 %V128 = shufflevector <4 x float > %a , <4 x float > undef , <4 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 >
184168 ret <4 x float > %V128
@@ -195,19 +179,11 @@ entry:
195179}
196180
197181define <8 x half > @v8f16 (<8 x half > %a ) {
198- ; CHECK-SD-LABEL: v8f16:
199- ; CHECK-SD: // %bb.0: // %entry
200- ; CHECK-SD-NEXT: rev64 v0.8h, v0.8h
201- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
202- ; CHECK-SD-NEXT: ret
203- ;
204- ; CHECK-GI-LABEL: v8f16:
205- ; CHECK-GI: // %bb.0: // %entry
206- ; CHECK-GI-NEXT: adrp x8, .LCPI13_0
207- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 def $q0_q1
208- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI13_0]
209- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
210- ; CHECK-GI-NEXT: ret
182+ ; CHECK-LABEL: v8f16:
183+ ; CHECK: // %bb.0: // %entry
184+ ; CHECK-NEXT: rev64 v0.8h, v0.8h
185+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
186+ ; CHECK-NEXT: ret
211187entry:
212188 %V128 = shufflevector <8 x half > %a , <8 x half > undef , <8 x i32 > <i32 7 , i32 6 , i32 5 , i32 4 , i32 3 , i32 2 , i32 1 , i32 0 >
213189 ret <8 x half > %V128
0 commit comments