xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/neon-extract.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vext_s8(<8 x i8> %a, <8 x i8> %b) {
4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vext_s8:
5*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x2|2}}
6*9880d681SAndroid Build Coastguard Workerentry:
7*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
8*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %vext
9*9880d681SAndroid Build Coastguard Worker}
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vext_s16(<4 x i16> %a, <4 x i16> %b) {
12*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vext_s16:
13*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x6|6}}
14*9880d681SAndroid Build Coastguard Workerentry:
15*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 3, i32 4, i32 5, i32 6>
16*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %vext
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vext_s32(<2 x i32> %a, <2 x i32> %b) {
20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vext_s32:
21*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x4|4}}
22*9880d681SAndroid Build Coastguard Workerentry:
23*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 2>
24*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %vext
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @test_vext_s64(<1 x i64> %a, <1 x i64> %b) {
28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vext_s64:
29*9880d681SAndroid Build Coastguard Workerentry:
30*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <1 x i64> %a, <1 x i64> %b, <1 x i32> <i32 0>
31*9880d681SAndroid Build Coastguard Worker  ret <1 x i64> %vext
32*9880d681SAndroid Build Coastguard Worker}
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vextq_s8(<16 x i8> %a, <16 x i8> %b) {
35*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextq_s8:
36*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x2|2}}
37*9880d681SAndroid Build Coastguard Workerentry:
38*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <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 16, i32 17>
39*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %vext
40*9880d681SAndroid Build Coastguard Worker}
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vextq_s16(<8 x i16> %a, <8 x i16> %b) {
43*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextq_s16:
44*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x6|6}}
45*9880d681SAndroid Build Coastguard Workerentry:
46*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10>
47*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vext
48*9880d681SAndroid Build Coastguard Worker}
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vextq_s32(<4 x i32> %a, <4 x i32> %b) {
51*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextq_s32:
52*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x4|4}}
53*9880d681SAndroid Build Coastguard Workerentry:
54*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
55*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %vext
56*9880d681SAndroid Build Coastguard Worker}
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vextq_s64(<2 x i64> %a, <2 x i64> %b) {
59*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextq_s64:
60*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x8|8}}
61*9880d681SAndroid Build Coastguard Workerentry:
62*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 2>
63*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %vext
64*9880d681SAndroid Build Coastguard Worker}
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vext_u8(<8 x i8> %a, <8 x i8> %b) {
67*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vext_u8:
68*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x2|2}}
69*9880d681SAndroid Build Coastguard Workerentry:
70*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
71*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %vext
72*9880d681SAndroid Build Coastguard Worker}
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vext_u16(<4 x i16> %a, <4 x i16> %b) {
75*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vext_u16:
76*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x6|6}}
77*9880d681SAndroid Build Coastguard Workerentry:
78*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 3, i32 4, i32 5, i32 6>
79*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %vext
80*9880d681SAndroid Build Coastguard Worker}
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vext_u32(<2 x i32> %a, <2 x i32> %b) {
83*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vext_u32:
84*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x4|4}}
85*9880d681SAndroid Build Coastguard Workerentry:
86*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 2>
87*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %vext
88*9880d681SAndroid Build Coastguard Worker}
89*9880d681SAndroid Build Coastguard Worker
90*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @test_vext_u64(<1 x i64> %a, <1 x i64> %b) {
91*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vext_u64:
92*9880d681SAndroid Build Coastguard Workerentry:
93*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <1 x i64> %a, <1 x i64> %b, <1 x i32> <i32 0>
94*9880d681SAndroid Build Coastguard Worker  ret <1 x i64> %vext
95*9880d681SAndroid Build Coastguard Worker}
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vextq_u8(<16 x i8> %a, <16 x i8> %b) {
98*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextq_u8:
99*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x2|2}}
100*9880d681SAndroid Build Coastguard Workerentry:
101*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <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 16, i32 17>
102*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %vext
103*9880d681SAndroid Build Coastguard Worker}
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vextq_u16(<8 x i16> %a, <8 x i16> %b) {
106*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextq_u16:
107*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x6|6}}
108*9880d681SAndroid Build Coastguard Workerentry:
109*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10>
110*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vext
111*9880d681SAndroid Build Coastguard Worker}
112*9880d681SAndroid Build Coastguard Worker
113*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vextq_u32(<4 x i32> %a, <4 x i32> %b) {
114*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextq_u32:
115*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x4|4}}
116*9880d681SAndroid Build Coastguard Workerentry:
117*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
118*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %vext
119*9880d681SAndroid Build Coastguard Worker}
120*9880d681SAndroid Build Coastguard Worker
121*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vextq_u64(<2 x i64> %a, <2 x i64> %b) {
122*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextq_u64:
123*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x8|8}}
124*9880d681SAndroid Build Coastguard Workerentry:
125*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 2>
126*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %vext
127*9880d681SAndroid Build Coastguard Worker}
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_vext_f32(<2 x float> %a, <2 x float> %b) {
130*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vext_f32:
131*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x4|4}}
132*9880d681SAndroid Build Coastguard Workerentry:
133*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 2>
134*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %vext
135*9880d681SAndroid Build Coastguard Worker}
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Workerdefine <1 x double> @test_vext_f64(<1 x double> %a, <1 x double> %b) {
138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vext_f64:
139*9880d681SAndroid Build Coastguard Workerentry:
140*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <1 x double> %a, <1 x double> %b, <1 x i32> <i32 0>
141*9880d681SAndroid Build Coastguard Worker  ret <1 x double> %vext
142*9880d681SAndroid Build Coastguard Worker}
143*9880d681SAndroid Build Coastguard Worker
144*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_vextq_f32(<4 x float> %a, <4 x float> %b) {
145*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextq_f32:
146*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x4|4}}
147*9880d681SAndroid Build Coastguard Workerentry:
148*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
149*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %vext
150*9880d681SAndroid Build Coastguard Worker}
151*9880d681SAndroid Build Coastguard Worker
152*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_vextq_f64(<2 x double> %a, <2 x double> %b) {
153*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextq_f64:
154*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x8|8}}
155*9880d681SAndroid Build Coastguard Workerentry:
156*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 1, i32 2>
157*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %vext
158*9880d681SAndroid Build Coastguard Worker}
159*9880d681SAndroid Build Coastguard Worker
160*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vext_p8(<8 x i8> %a, <8 x i8> %b) {
161*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vext_p8:
162*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x2|2}}
163*9880d681SAndroid Build Coastguard Workerentry:
164*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
165*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %vext
166*9880d681SAndroid Build Coastguard Worker}
167*9880d681SAndroid Build Coastguard Worker
168*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vext_p16(<4 x i16> %a, <4 x i16> %b) {
169*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vext_p16:
170*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x6|6}}
171*9880d681SAndroid Build Coastguard Workerentry:
172*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 3, i32 4, i32 5, i32 6>
173*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %vext
174*9880d681SAndroid Build Coastguard Worker}
175*9880d681SAndroid Build Coastguard Worker
176*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vextq_p8(<16 x i8> %a, <16 x i8> %b) {
177*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextq_p8:
178*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x2|2}}
179*9880d681SAndroid Build Coastguard Workerentry:
180*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <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 16, i32 17>
181*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %vext
182*9880d681SAndroid Build Coastguard Worker}
183*9880d681SAndroid Build Coastguard Worker
184*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vextq_p16(<8 x i16> %a, <8 x i16> %b) {
185*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextq_p16:
186*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x6|6}}
187*9880d681SAndroid Build Coastguard Workerentry:
188*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10>
189*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vext
190*9880d681SAndroid Build Coastguard Worker}
191*9880d681SAndroid Build Coastguard Worker
192*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vext_s8(<8 x i8> %a) {
193*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vext_s8:
194*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x2|2}}
195*9880d681SAndroid Build Coastguard Workerentry:
196*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 10, i32 10, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
197*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %vext
198*9880d681SAndroid Build Coastguard Worker}
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vextq_s8(<16 x i8> %a) {
201*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vextq_s8:
202*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x6|6}}
203*9880d681SAndroid Build Coastguard Workerentry:
204*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 20, i32 20, i32 20, i32 20, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 20, i32 20, i32 20, i32 20, i32 20>
205*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %vext
206*9880d681SAndroid Build Coastguard Worker}
207*9880d681SAndroid Build Coastguard Worker
208*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vext_s16(<4 x i16> %a) {
209*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vext_s16:
210*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x4|4}}
211*9880d681SAndroid Build Coastguard Workerentry:
212*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 2, i32 3, i32 4, i32 5>
213*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %vext
214*9880d681SAndroid Build Coastguard Worker}
215*9880d681SAndroid Build Coastguard Worker
216*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vextq_s16(<8 x i16> %a) {
217*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vextq_s16:
218*9880d681SAndroid Build Coastguard Worker; CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x6|6}}
219*9880d681SAndroid Build Coastguard Workerentry:
220*9880d681SAndroid Build Coastguard Worker  %vext = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 10, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10>
221*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vext
222*9880d681SAndroid Build Coastguard Worker}
223