xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/vector-shuffle-128-v8.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSE2
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mattr=+ssse3 | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSSE3
4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mattr=+sse4.1 | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSE41
5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mattr=+avx | FileCheck %s --check-prefix=ALL --check-prefix=AVX --check-prefix=AVX1
6*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mattr=+avx2 | FileCheck %s --check-prefix=ALL --check-prefix=AVX --check-prefix=AVX2
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
9*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-unknown"
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_01012323(<8 x i16> %a, <8 x i16> %b) {
12*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_01012323:
13*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
14*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
15*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
16*9880d681SAndroid Build Coastguard Worker;
17*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_01012323:
18*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
19*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
20*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
21*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 2, i32 3, i32 2, i32 3>
22*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
23*9880d681SAndroid Build Coastguard Worker}
24*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_67452301(<8 x i16> %a, <8 x i16> %b) {
25*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_67452301:
26*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
27*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,2,1,0]
28*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
29*9880d681SAndroid Build Coastguard Worker;
30*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_67452301:
31*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
32*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[3,2,1,0]
33*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
34*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 6, i32 7, i32 4, i32 5, i32 2, i32 3, i32 0, i32 1>
35*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
36*9880d681SAndroid Build Coastguard Worker}
37*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_456789AB(<8 x i16> %a, <8 x i16> %b) {
38*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_456789AB:
39*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
40*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shufpd {{.*#+}} xmm0 = xmm0[1],xmm1[0]
41*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
42*9880d681SAndroid Build Coastguard Worker;
43*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_456789AB:
44*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
45*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm1 = xmm0[8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4,5,6,7]
46*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
47*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
48*9880d681SAndroid Build Coastguard Worker;
49*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_456789AB:
50*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
51*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm1 = xmm0[8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4,5,6,7]
52*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm1, %xmm0
53*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
54*9880d681SAndroid Build Coastguard Worker;
55*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_456789AB:
56*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
57*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4,5,6,7]
58*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
59*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11>
60*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
61*9880d681SAndroid Build Coastguard Worker}
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_00000000(<8 x i16> %a, <8 x i16> %b) {
64*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_00000000:
65*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
66*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
67*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
68*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
69*9880d681SAndroid Build Coastguard Worker;
70*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v8i16_00000000:
71*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
72*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
73*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
74*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
75*9880d681SAndroid Build Coastguard Worker;
76*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v8i16_00000000:
77*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
78*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %xmm0
79*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
80*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
81*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
82*9880d681SAndroid Build Coastguard Worker}
83*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_00004444(<8 x i16> %a, <8 x i16> %b) {
84*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_00004444:
85*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
86*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
87*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
88*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
89*9880d681SAndroid Build Coastguard Worker;
90*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_00004444:
91*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
92*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
93*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
94*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
95*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
96*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
97*9880d681SAndroid Build Coastguard Worker}
98*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_u0u1u2u3(<8 x i16> %a, <8 x i16> %b) {
99*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_u0u1u2u3:
100*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
101*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
102*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
103*9880d681SAndroid Build Coastguard Worker;
104*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_u0u1u2u3:
105*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
106*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
107*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
108*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 0, i32 undef, i32 1, i32 undef, i32 2, i32 undef, i32 3>
109*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
110*9880d681SAndroid Build Coastguard Worker}
111*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_u4u5u6u7(<8 x i16> %a, <8 x i16> %b) {
112*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_u4u5u6u7:
113*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
114*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]
115*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
116*9880d681SAndroid Build Coastguard Worker;
117*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_u4u5u6u7:
118*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
119*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]
120*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
121*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 4, i32 undef, i32 5, i32 undef, i32 6, i32 undef, i32 7>
122*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
123*9880d681SAndroid Build Coastguard Worker}
124*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_31206745(<8 x i16> %a, <8 x i16> %b) {
125*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_31206745:
126*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
127*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,0,4,5,6,7]
128*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,3,2]
129*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
130*9880d681SAndroid Build Coastguard Worker;
131*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_31206745:
132*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
133*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[3,1,2,0,4,5,6,7]
134*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,3,2]
135*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
136*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 3, i32 1, i32 2, i32 0, i32 6, i32 7, i32 4, i32 5>
137*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
138*9880d681SAndroid Build Coastguard Worker}
139*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_44440000(<8 x i16> %a, <8 x i16> %b) {
140*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_44440000:
141*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
142*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,0,3]
143*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
144*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
145*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
146*9880d681SAndroid Build Coastguard Worker;
147*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_44440000:
148*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
149*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,8,9,0,1,0,1,0,1,0,1]
150*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
151*9880d681SAndroid Build Coastguard Worker;
152*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_44440000:
153*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
154*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,8,9,0,1,0,1,0,1,0,1]
155*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
156*9880d681SAndroid Build Coastguard Worker;
157*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_44440000:
158*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
159*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,8,9,0,1,0,1,0,1,0,1]
160*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
161*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 4, i32 4, i32 4, i32 0, i32 0, i32 0, i32 0>
162*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
163*9880d681SAndroid Build Coastguard Worker}
164*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_23016745(<8 x i16> %a, <8 x i16> %b) {
165*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_23016745:
166*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
167*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,0,3,2]
168*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
169*9880d681SAndroid Build Coastguard Worker;
170*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_23016745:
171*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
172*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,0,3,2]
173*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
174*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 2, i32 3, i32 0, i32 1, i32 6, i32 7, i32 4, i32 5>
175*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
176*9880d681SAndroid Build Coastguard Worker}
177*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_23026745(<8 x i16> %a, <8 x i16> %b) {
178*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_23026745:
179*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
180*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,3,0,2,4,5,6,7]
181*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,3,2]
182*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
183*9880d681SAndroid Build Coastguard Worker;
184*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_23026745:
185*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
186*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[2,3,0,2,4,5,6,7]
187*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,3,2]
188*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
189*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 2, i32 3, i32 0, i32 2, i32 6, i32 7, i32 4, i32 5>
190*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
191*9880d681SAndroid Build Coastguard Worker}
192*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_23016747(<8 x i16> %a, <8 x i16> %b) {
193*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_23016747:
194*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
195*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,0,2,3]
196*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,7,4,7]
197*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
198*9880d681SAndroid Build Coastguard Worker;
199*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_23016747:
200*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
201*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,0,2,3]
202*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,7,4,7]
203*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
204*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 2, i32 3, i32 0, i32 1, i32 6, i32 7, i32 4, i32 7>
205*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
206*9880d681SAndroid Build Coastguard Worker}
207*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_75643120(<8 x i16> %a, <8 x i16> %b) {
208*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_75643120:
209*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
210*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
211*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,0,4,5,6,7]
212*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,6,4]
213*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
214*9880d681SAndroid Build Coastguard Worker;
215*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_75643120:
216*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
217*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[14,15,10,11,12,13,8,9,6,7,2,3,4,5,0,1]
218*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
219*9880d681SAndroid Build Coastguard Worker;
220*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_75643120:
221*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
222*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[14,15,10,11,12,13,8,9,6,7,2,3,4,5,0,1]
223*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
224*9880d681SAndroid Build Coastguard Worker;
225*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_75643120:
226*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
227*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[14,15,10,11,12,13,8,9,6,7,2,3,4,5,0,1]
228*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
229*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 7, i32 5, i32 6, i32 4, i32 3, i32 1, i32 2, i32 0>
230*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
231*9880d681SAndroid Build Coastguard Worker}
232*9880d681SAndroid Build Coastguard Worker
233*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_10545410(<8 x i16> %a, <8 x i16> %b) {
234*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_10545410:
235*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
236*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,0]
237*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,0,3,2,4,5,6,7]
238*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,4,7,6]
239*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
240*9880d681SAndroid Build Coastguard Worker;
241*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_10545410:
242*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
243*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[2,3,0,1,10,11,8,9,10,11,8,9,2,3,0,1]
244*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
245*9880d681SAndroid Build Coastguard Worker;
246*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_10545410:
247*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
248*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[2,3,0,1,10,11,8,9,10,11,8,9,2,3,0,1]
249*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
250*9880d681SAndroid Build Coastguard Worker;
251*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_10545410:
252*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
253*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[2,3,0,1,10,11,8,9,10,11,8,9,2,3,0,1]
254*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
255*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 0, i32 5, i32 4, i32 5, i32 4, i32 1, i32 0>
256*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
257*9880d681SAndroid Build Coastguard Worker}
258*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_54105410(<8 x i16> %a, <8 x i16> %b) {
259*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_54105410:
260*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
261*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,0]
262*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,2,1,0,4,5,6,7]
263*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,4,7,6]
264*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
265*9880d681SAndroid Build Coastguard Worker;
266*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_54105410:
267*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
268*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,10,11,8,9,2,3,0,1]
269*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
270*9880d681SAndroid Build Coastguard Worker;
271*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_54105410:
272*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
273*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,10,11,8,9,2,3,0,1]
274*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
275*9880d681SAndroid Build Coastguard Worker;
276*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_54105410:
277*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
278*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,10,11,8,9,2,3,0,1]
279*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
280*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 5, i32 4, i32 1, i32 0, i32 5, i32 4, i32 1, i32 0>
281*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
282*9880d681SAndroid Build Coastguard Worker}
283*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_54101054(<8 x i16> %a, <8 x i16> %b) {
284*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_54101054:
285*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
286*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,0]
287*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,2,1,0,4,5,6,7]
288*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,6,5,4]
289*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
290*9880d681SAndroid Build Coastguard Worker;
291*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_54101054:
292*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
293*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,2,3,0,1,10,11,8,9]
294*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
295*9880d681SAndroid Build Coastguard Worker;
296*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_54101054:
297*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
298*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,2,3,0,1,10,11,8,9]
299*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
300*9880d681SAndroid Build Coastguard Worker;
301*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_54101054:
302*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
303*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,2,3,0,1,10,11,8,9]
304*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
305*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 5, i32 4, i32 1, i32 0, i32 1, i32 0, i32 5, i32 4>
306*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
307*9880d681SAndroid Build Coastguard Worker}
308*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_04400440(<8 x i16> %a, <8 x i16> %b) {
309*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_04400440:
310*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
311*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,0]
312*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,0,4,5,6,7]
313*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,4,4,6]
314*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
315*9880d681SAndroid Build Coastguard Worker;
316*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_04400440:
317*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
318*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,8,9,8,9,0,1]
319*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
320*9880d681SAndroid Build Coastguard Worker;
321*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_04400440:
322*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
323*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,8,9,8,9,0,1]
324*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
325*9880d681SAndroid Build Coastguard Worker;
326*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_04400440:
327*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
328*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,8,9,8,9,0,1]
329*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
330*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 4, i32 4, i32 0, i32 0, i32 4, i32 4, i32 0>
331*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
332*9880d681SAndroid Build Coastguard Worker}
333*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_40044004(<8 x i16> %a, <8 x i16> %b) {
334*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_40044004:
335*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
336*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,0]
337*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,0,0,2,4,5,6,7]
338*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,4]
339*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
340*9880d681SAndroid Build Coastguard Worker;
341*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_40044004:
342*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
343*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,0,1,0,1,8,9,8,9,0,1,0,1,8,9]
344*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
345*9880d681SAndroid Build Coastguard Worker;
346*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_40044004:
347*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
348*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,0,1,0,1,8,9,8,9,0,1,0,1,8,9]
349*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
350*9880d681SAndroid Build Coastguard Worker;
351*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_40044004:
352*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
353*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,0,1,0,1,8,9,8,9,0,1,0,1,8,9]
354*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
355*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 0, i32 0, i32 4, i32 4, i32 0, i32 0, i32 4>
356*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
357*9880d681SAndroid Build Coastguard Worker}
358*9880d681SAndroid Build Coastguard Worker
359*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_26405173(<8 x i16> %a, <8 x i16> %b) {
360*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_26405173:
361*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
362*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,1,3,4,5,6,7]
363*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,6,4]
364*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,1]
365*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,2,3,0,4,5,6,7]
366*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,6,4,7]
367*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
368*9880d681SAndroid Build Coastguard Worker;
369*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_26405173:
370*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
371*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[4,5,12,13,8,9,0,1,10,11,2,3,14,15,6,7]
372*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
373*9880d681SAndroid Build Coastguard Worker;
374*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_26405173:
375*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
376*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[4,5,12,13,8,9,0,1,10,11,2,3,14,15,6,7]
377*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
378*9880d681SAndroid Build Coastguard Worker;
379*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_26405173:
380*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
381*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[4,5,12,13,8,9,0,1,10,11,2,3,14,15,6,7]
382*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
383*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 2, i32 6, i32 4, i32 0, i32 5, i32 1, i32 7, i32 3>
384*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
385*9880d681SAndroid Build Coastguard Worker}
386*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_20645173(<8 x i16> %a, <8 x i16> %b) {
387*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_20645173:
388*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
389*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,1,3,4,5,6,7]
390*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,6,4]
391*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,1]
392*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,0,2,3,4,5,6,7]
393*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,6,4,7]
394*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
395*9880d681SAndroid Build Coastguard Worker;
396*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_20645173:
397*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
398*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[4,5,0,1,12,13,8,9,10,11,2,3,14,15,6,7]
399*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
400*9880d681SAndroid Build Coastguard Worker;
401*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_20645173:
402*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
403*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[4,5,0,1,12,13,8,9,10,11,2,3,14,15,6,7]
404*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
405*9880d681SAndroid Build Coastguard Worker;
406*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_20645173:
407*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
408*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[4,5,0,1,12,13,8,9,10,11,2,3,14,15,6,7]
409*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
410*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 2, i32 0, i32 6, i32 4, i32 5, i32 1, i32 7, i32 3>
411*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
412*9880d681SAndroid Build Coastguard Worker}
413*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_26401375(<8 x i16> %a, <8 x i16> %b) {
414*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_26401375:
415*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
416*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,1,3,4,5,6,7]
417*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,6,4]
418*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,1,2]
419*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,2,3,0,4,5,6,7]
420*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
421*9880d681SAndroid Build Coastguard Worker;
422*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_26401375:
423*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
424*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[4,5,12,13,8,9,0,1,2,3,6,7,14,15,10,11]
425*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
426*9880d681SAndroid Build Coastguard Worker;
427*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_26401375:
428*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
429*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[4,5,12,13,8,9,0,1,2,3,6,7,14,15,10,11]
430*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
431*9880d681SAndroid Build Coastguard Worker;
432*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_26401375:
433*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
434*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[4,5,12,13,8,9,0,1,2,3,6,7,14,15,10,11]
435*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
436*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 2, i32 6, i32 4, i32 0, i32 1, i32 3, i32 7, i32 5>
437*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
438*9880d681SAndroid Build Coastguard Worker}
439*9880d681SAndroid Build Coastguard Worker
440*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_66751643(<8 x i16> %a, <8 x i16> %b) {
441*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_66751643:
442*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
443*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]
444*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,5,7]
445*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,2,0]
446*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,1,3,2,4,5,6,7]
447*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,4,6]
448*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
449*9880d681SAndroid Build Coastguard Worker;
450*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_66751643:
451*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
452*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[12,13,12,13,14,15,10,11,2,3,12,13,8,9,6,7]
453*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
454*9880d681SAndroid Build Coastguard Worker;
455*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_66751643:
456*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
457*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[12,13,12,13,14,15,10,11,2,3,12,13,8,9,6,7]
458*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
459*9880d681SAndroid Build Coastguard Worker;
460*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_66751643:
461*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
462*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12,13,12,13,14,15,10,11,2,3,12,13,8,9,6,7]
463*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
464*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 6, i32 6, i32 7, i32 5, i32 1, i32 6, i32 4, i32 3>
465*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
466*9880d681SAndroid Build Coastguard Worker}
467*9880d681SAndroid Build Coastguard Worker
468*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_60514754(<8 x i16> %a, <8 x i16> %b) {
469*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_60514754:
470*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
471*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,4,7]
472*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
473*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,0,3,1,4,5,6,7]
474*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,7,5,6]
475*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
476*9880d681SAndroid Build Coastguard Worker;
477*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_60514754:
478*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
479*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[12,13,0,1,10,11,2,3,8,9,14,15,10,11,8,9]
480*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
481*9880d681SAndroid Build Coastguard Worker;
482*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_60514754:
483*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
484*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[12,13,0,1,10,11,2,3,8,9,14,15,10,11,8,9]
485*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
486*9880d681SAndroid Build Coastguard Worker;
487*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_60514754:
488*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
489*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12,13,0,1,10,11,2,3,8,9,14,15,10,11,8,9]
490*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
491*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 6, i32 0, i32 5, i32 1, i32 4, i32 7, i32 5, i32 4>
492*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
493*9880d681SAndroid Build Coastguard Worker}
494*9880d681SAndroid Build Coastguard Worker
495*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_00444444(<8 x i16> %a, <8 x i16> %b) {
496*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_00444444:
497*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
498*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
499*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7]
500*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
501*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
502*9880d681SAndroid Build Coastguard Worker;
503*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_00444444:
504*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
505*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,8,9,8,9,8,9,8,9,8,9,8,9]
506*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
507*9880d681SAndroid Build Coastguard Worker;
508*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_00444444:
509*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
510*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,8,9,8,9,8,9,8,9,8,9,8,9]
511*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
512*9880d681SAndroid Build Coastguard Worker;
513*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_00444444:
514*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
515*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,8,9,8,9,8,9,8,9,8,9,8,9]
516*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
517*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 0, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4>
518*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
519*9880d681SAndroid Build Coastguard Worker}
520*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_44004444(<8 x i16> %a, <8 x i16> %b) {
521*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_44004444:
522*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
523*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
524*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,2,0,0,4,5,6,7]
525*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
526*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
527*9880d681SAndroid Build Coastguard Worker;
528*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_44004444:
529*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
530*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,0,1,0,1,8,9,8,9,8,9,8,9]
531*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
532*9880d681SAndroid Build Coastguard Worker;
533*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_44004444:
534*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
535*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,0,1,0,1,8,9,8,9,8,9,8,9]
536*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
537*9880d681SAndroid Build Coastguard Worker;
538*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_44004444:
539*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
540*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,0,1,0,1,8,9,8,9,8,9,8,9]
541*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
542*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 4, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
543*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
544*9880d681SAndroid Build Coastguard Worker}
545*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_04404444(<8 x i16> %a, <8 x i16> %b) {
546*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_04404444:
547*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
548*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
549*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,0,4,5,6,7]
550*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
551*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
552*9880d681SAndroid Build Coastguard Worker;
553*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_04404444:
554*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
555*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
556*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
557*9880d681SAndroid Build Coastguard Worker;
558*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_04404444:
559*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
560*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
561*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
562*9880d681SAndroid Build Coastguard Worker;
563*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_04404444:
564*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
565*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
566*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
567*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 4, i32 4, i32 0, i32 4, i32 4, i32 4, i32 4>
568*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
569*9880d681SAndroid Build Coastguard Worker}
570*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_04400000(<8 x i16> %a, <8 x i16> %b) {
571*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_04400000:
572*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
573*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,0,3]
574*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,0,4,5,6,7]
575*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
576*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
577*9880d681SAndroid Build Coastguard Worker;
578*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_04400000:
579*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
580*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,0,1,0,1,0,1]
581*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
582*9880d681SAndroid Build Coastguard Worker;
583*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_04400000:
584*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
585*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,0,1,0,1,0,1]
586*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
587*9880d681SAndroid Build Coastguard Worker;
588*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_04400000:
589*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
590*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,0,1,0,1,0,1]
591*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
592*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 4, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0>
593*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
594*9880d681SAndroid Build Coastguard Worker}
595*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_04404567(<8 x i16> %a, <8 x i16> %b) {
596*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_04404567:
597*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
598*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
599*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,0,4,5,6,7]
600*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
601*9880d681SAndroid Build Coastguard Worker;
602*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_04404567:
603*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
604*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
605*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,2,2,0,4,5,6,7]
606*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
607*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 4, i32 4, i32 0, i32 4, i32 5, i32 6, i32 7>
608*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
609*9880d681SAndroid Build Coastguard Worker}
610*9880d681SAndroid Build Coastguard Worker
611*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0X444444(<8 x i16> %a, <8 x i16> %b) {
612*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_0X444444:
613*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
614*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
615*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]
616*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
617*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
618*9880d681SAndroid Build Coastguard Worker;
619*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_0X444444:
620*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
621*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,8,9,8,9,8,9,8,9,8,9,8,9]
622*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
623*9880d681SAndroid Build Coastguard Worker;
624*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_0X444444:
625*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
626*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,8,9,8,9,8,9,8,9,8,9,8,9]
627*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
628*9880d681SAndroid Build Coastguard Worker;
629*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0X444444:
630*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
631*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,8,9,8,9,8,9,8,9,8,9,8,9]
632*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
633*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 undef, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4>
634*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
635*9880d681SAndroid Build Coastguard Worker}
636*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_44X04444(<8 x i16> %a, <8 x i16> %b) {
637*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_44X04444:
638*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
639*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
640*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,2,2,0,4,5,6,7]
641*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
642*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
643*9880d681SAndroid Build Coastguard Worker;
644*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_44X04444:
645*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
646*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
647*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
648*9880d681SAndroid Build Coastguard Worker;
649*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_44X04444:
650*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
651*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
652*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
653*9880d681SAndroid Build Coastguard Worker;
654*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_44X04444:
655*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
656*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
657*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
658*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 4, i32 undef, i32 0, i32 4, i32 4, i32 4, i32 4>
659*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
660*9880d681SAndroid Build Coastguard Worker}
661*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_X4404444(<8 x i16> %a, <8 x i16> %b) {
662*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_X4404444:
663*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
664*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
665*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,0,4,5,6,7]
666*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
667*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
668*9880d681SAndroid Build Coastguard Worker;
669*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_X4404444:
670*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
671*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
672*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
673*9880d681SAndroid Build Coastguard Worker;
674*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_X4404444:
675*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
676*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
677*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
678*9880d681SAndroid Build Coastguard Worker;
679*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_X4404444:
680*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
681*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
682*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
683*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 4, i32 4, i32 0, i32 4, i32 4, i32 4, i32 4>
684*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
685*9880d681SAndroid Build Coastguard Worker}
686*9880d681SAndroid Build Coastguard Worker
687*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0127XXXX(<8 x i16> %a, <8 x i16> %b) {
688*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_0127XXXX:
689*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
690*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
691*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
692*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
693*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
694*9880d681SAndroid Build Coastguard Worker;
695*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_0127XXXX:
696*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
697*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,14,15,4,5,14,15,12,13,14,15]
698*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
699*9880d681SAndroid Build Coastguard Worker;
700*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_0127XXXX:
701*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
702*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,14,15,4,5,14,15,12,13,14,15]
703*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
704*9880d681SAndroid Build Coastguard Worker;
705*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0127XXXX:
706*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
707*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,14,15,4,5,14,15,12,13,14,15]
708*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
709*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 7, i32 undef, i32 undef, i32 undef, i32 undef>
710*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
711*9880d681SAndroid Build Coastguard Worker}
712*9880d681SAndroid Build Coastguard Worker
713*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_XXXX4563(<8 x i16> %a, <8 x i16> %b) {
714*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_XXXX4563:
715*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
716*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
717*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
718*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,0]
719*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
720*9880d681SAndroid Build Coastguard Worker;
721*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_XXXX4563:
722*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
723*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[12,13,6,7,4,5,6,7,8,9,10,11,12,13,6,7]
724*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
725*9880d681SAndroid Build Coastguard Worker;
726*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_XXXX4563:
727*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
728*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[12,13,6,7,4,5,6,7,8,9,10,11,12,13,6,7]
729*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
730*9880d681SAndroid Build Coastguard Worker;
731*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_XXXX4563:
732*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
733*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12,13,6,7,4,5,6,7,8,9,10,11,12,13,6,7]
734*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
735*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 4, i32 5, i32 6, i32 3>
736*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
737*9880d681SAndroid Build Coastguard Worker}
738*9880d681SAndroid Build Coastguard Worker
739*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_4563XXXX(<8 x i16> %a, <8 x i16> %b) {
740*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_4563XXXX:
741*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
742*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
743*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
744*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,0,2,3]
745*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
746*9880d681SAndroid Build Coastguard Worker;
747*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_4563XXXX:
748*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
749*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,6,7,8,9,10,11,0,1,2,3]
750*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
751*9880d681SAndroid Build Coastguard Worker;
752*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_4563XXXX:
753*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
754*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,6,7,8,9,10,11,0,1,2,3]
755*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
756*9880d681SAndroid Build Coastguard Worker;
757*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_4563XXXX:
758*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
759*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,6,7,8,9,10,11,0,1,2,3]
760*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
761*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 5, i32 6, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
762*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
763*9880d681SAndroid Build Coastguard Worker}
764*9880d681SAndroid Build Coastguard Worker
765*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_01274563(<8 x i16> %a, <8 x i16> %b) {
766*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_01274563:
767*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
768*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
769*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,4,7]
770*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,1,2]
771*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
772*9880d681SAndroid Build Coastguard Worker;
773*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_01274563:
774*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
775*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,14,15,8,9,10,11,12,13,6,7]
776*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
777*9880d681SAndroid Build Coastguard Worker;
778*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_01274563:
779*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
780*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,14,15,8,9,10,11,12,13,6,7]
781*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
782*9880d681SAndroid Build Coastguard Worker;
783*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_01274563:
784*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
785*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,14,15,8,9,10,11,12,13,6,7]
786*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
787*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 7, i32 4, i32 5, i32 6, i32 3>
788*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
789*9880d681SAndroid Build Coastguard Worker}
790*9880d681SAndroid Build Coastguard Worker
791*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_45630127(<8 x i16> %a, <8 x i16> %b) {
792*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_45630127:
793*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
794*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
795*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,1,4,5,6,7]
796*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,0,3,1]
797*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
798*9880d681SAndroid Build Coastguard Worker;
799*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_45630127:
800*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
801*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,6,7,0,1,2,3,4,5,14,15]
802*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
803*9880d681SAndroid Build Coastguard Worker;
804*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_45630127:
805*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
806*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,6,7,0,1,2,3,4,5,14,15]
807*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
808*9880d681SAndroid Build Coastguard Worker;
809*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_45630127:
810*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
811*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,6,7,0,1,2,3,4,5,14,15]
812*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
813*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 5, i32 6, i32 3, i32 0, i32 1, i32 2, i32 7>
814*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
815*9880d681SAndroid Build Coastguard Worker}
816*9880d681SAndroid Build Coastguard Worker
817*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_37102735(<8 x i16> %a, <8 x i16> %b) {
818*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_37102735:
819*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
820*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,5,7]
821*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
822*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,6,4]
823*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
824*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,2,1,0,4,5,6,7]
825*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,4,5,6]
826*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
827*9880d681SAndroid Build Coastguard Worker;
828*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_37102735:
829*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
830*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[6,7,14,15,2,3,0,1,4,5,14,15,6,7,10,11]
831*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
832*9880d681SAndroid Build Coastguard Worker;
833*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_37102735:
834*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
835*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[6,7,14,15,2,3,0,1,4,5,14,15,6,7,10,11]
836*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
837*9880d681SAndroid Build Coastguard Worker;
838*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_37102735:
839*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
840*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,7,14,15,2,3,0,1,4,5,14,15,6,7,10,11]
841*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
842*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 3, i32 7, i32 1, i32 0, i32 2, i32 7, i32 3, i32 5>
843*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
844*9880d681SAndroid Build Coastguard Worker}
845*9880d681SAndroid Build Coastguard Worker
846*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_08192a3b(<8 x i16> %a, <8 x i16> %b) {
847*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_08192a3b:
848*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
849*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
850*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
851*9880d681SAndroid Build Coastguard Worker;
852*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_08192a3b:
853*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
854*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
855*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
856*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
857*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
858*9880d681SAndroid Build Coastguard Worker}
859*9880d681SAndroid Build Coastguard Worker
860*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0c1d2e3f(<8 x i16> %a, <8 x i16> %b) {
861*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_0c1d2e3f:
862*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
863*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
864*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
865*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
866*9880d681SAndroid Build Coastguard Worker;
867*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0c1d2e3f:
868*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
869*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
870*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
871*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
872*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 12, i32 1, i32 13, i32 2, i32 14, i32 3, i32 15>
873*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
874*9880d681SAndroid Build Coastguard Worker}
875*9880d681SAndroid Build Coastguard Worker
876*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_4c5d6e7f(<8 x i16> %a, <8 x i16> %b) {
877*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_4c5d6e7f:
878*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
879*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
880*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
881*9880d681SAndroid Build Coastguard Worker;
882*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_4c5d6e7f:
883*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
884*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
885*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
886*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
887*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
888*9880d681SAndroid Build Coastguard Worker}
889*9880d681SAndroid Build Coastguard Worker
890*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_48596a7b(<8 x i16> %a, <8 x i16> %b) {
891*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_48596a7b:
892*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
893*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
894*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
895*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
896*9880d681SAndroid Build Coastguard Worker;
897*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_48596a7b:
898*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
899*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
900*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
901*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
902*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 8, i32 5, i32 9, i32 6, i32 10, i32 7, i32 11>
903*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
904*9880d681SAndroid Build Coastguard Worker}
905*9880d681SAndroid Build Coastguard Worker
906*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_08196e7f(<8 x i16> %a, <8 x i16> %b) {
907*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_08196e7f:
908*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
909*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
910*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
911*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
912*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
913*9880d681SAndroid Build Coastguard Worker;
914*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_08196e7f:
915*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
916*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
917*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
918*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
919*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
920*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 6, i32 14, i32 7, i32 15>
921*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
922*9880d681SAndroid Build Coastguard Worker}
923*9880d681SAndroid Build Coastguard Worker
924*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0c1d6879(<8 x i16> %a, <8 x i16> %b) {
925*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_0c1d6879:
926*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
927*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,0,2,3]
928*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
929*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
930*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
931*9880d681SAndroid Build Coastguard Worker;
932*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0c1d6879:
933*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
934*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,0,2,3]
935*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
936*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
937*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
938*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 12, i32 1, i32 13, i32 6, i32 8, i32 7, i32 9>
939*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
940*9880d681SAndroid Build Coastguard Worker}
941*9880d681SAndroid Build Coastguard Worker
942*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_109832ba(<8 x i16> %a, <8 x i16> %b) {
943*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_109832ba:
944*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
945*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
946*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,0,3,1,4,5,6,7]
947*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,4,7,5]
948*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
949*9880d681SAndroid Build Coastguard Worker;
950*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_109832ba:
951*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
952*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
953*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[2,0,3,1,4,5,6,7]
954*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,4,7,5]
955*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
956*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 0, i32 9, i32 8, i32 3, i32 2, i32 11, i32 10>
957*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
958*9880d681SAndroid Build Coastguard Worker}
959*9880d681SAndroid Build Coastguard Worker
960*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_8091a2b3(<8 x i16> %a, <8 x i16> %b) {
961*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_8091a2b3:
962*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
963*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
964*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movdqa %xmm1, %xmm0
965*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
966*9880d681SAndroid Build Coastguard Worker;
967*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_8091a2b3:
968*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
969*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
970*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
971*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 8, i32 0, i32 9, i32 1, i32 10, i32 2, i32 11, i32 3>
972*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
973*9880d681SAndroid Build Coastguard Worker}
974*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_c4d5e6f7(<8 x i16> %a, <8 x i16> %b) {
975*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_c4d5e6f7:
976*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
977*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
978*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movdqa %xmm1, %xmm0
979*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
980*9880d681SAndroid Build Coastguard Worker;
981*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_c4d5e6f7:
982*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
983*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
984*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
985*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 12, i32 4, i32 13, i32 5, i32 14, i32 6, i32 15, i32 7>
986*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
987*9880d681SAndroid Build Coastguard Worker}
988*9880d681SAndroid Build Coastguard Worker
989*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0213cedf(<8 x i16> %a, <8 x i16> %b) {
990*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_0213cedf:
991*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
992*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,1,3,4,5,6,7]
993*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]
994*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,2,1,3,4,5,6,7]
995*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
996*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
997*9880d681SAndroid Build Coastguard Worker;
998*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0213cedf:
999*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1000*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,2,1,3,4,5,6,7]
1001*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]
1002*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,2,1,3,4,5,6,7]
1003*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1004*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1005*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 1, i32 3, i32 12, i32 14, i32 13, i32 15>
1006*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1007*9880d681SAndroid Build Coastguard Worker}
1008*9880d681SAndroid Build Coastguard Worker
1009*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_443aXXXX(<8 x i16> %a, <8 x i16> %b) {
1010*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_443aXXXX:
1011*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1012*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,0,65535,65535,65535,65535,65535]
1013*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand %xmm2, %xmm0
1014*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pandn %xmm1, %xmm2
1015*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm0, %xmm2
1016*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[2,1,2,3]
1017*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,3,2,4,5,6,7]
1018*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1019*9880d681SAndroid Build Coastguard Worker;
1020*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_443aXXXX:
1021*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1022*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[4,5,u,u,u,u,u,u,u,u]
1023*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,6,7],zero,zero,xmm0[u,u,u,u,u,u,u,u]
1024*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    por %xmm1, %xmm0
1025*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1026*9880d681SAndroid Build Coastguard Worker;
1027*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_443aXXXX:
1028*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1029*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7]
1030*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
1031*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,3,2,4,5,6,7]
1032*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1033*9880d681SAndroid Build Coastguard Worker;
1034*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_443aXXXX:
1035*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1036*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7]
1037*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
1038*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,3,2,4,5,6,7]
1039*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1040*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 4, i32 3, i32 10, i32 undef, i32 undef, i32 undef, i32 undef>
1041*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1042*9880d681SAndroid Build Coastguard Worker}
1043*9880d681SAndroid Build Coastguard Worker
1044*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_032dXXXX(<8 x i16> %a, <8 x i16> %b) {
1045*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_032dXXXX:
1046*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1047*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1048*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[3,1,2,0]
1049*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
1050*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
1051*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,1,4,5,6,7]
1052*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1053*9880d681SAndroid Build Coastguard Worker;
1054*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_032dXXXX:
1055*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1056*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[10,11,u,u,u,u,u,u,u,u]
1057*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,6,7,4,5],zero,zero,xmm0[u,u,u,u,u,u,u,u]
1058*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    por %xmm1, %xmm0
1059*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1060*9880d681SAndroid Build Coastguard Worker;
1061*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_032dXXXX:
1062*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1063*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
1064*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,6,7,4,5,10,11,0,1,10,11,0,1,2,3]
1065*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1066*9880d681SAndroid Build Coastguard Worker;
1067*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v8i16_032dXXXX:
1068*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1069*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
1070*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,6,7,4,5,10,11,0,1,10,11,0,1,2,3]
1071*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1072*9880d681SAndroid Build Coastguard Worker;
1073*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v8i16_032dXXXX:
1074*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1075*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3]
1076*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,6,7,4,5,10,11,0,1,10,11,0,1,2,3]
1077*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1078*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 3, i32 2, i32 13, i32 undef, i32 undef, i32 undef, i32 undef>
1079*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1080*9880d681SAndroid Build Coastguard Worker}
1081*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_XXXdXXXX(<8 x i16> %a, <8 x i16> %b) {
1082*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_XXXdXXXX:
1083*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1084*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[2,2,3,3]
1085*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1086*9880d681SAndroid Build Coastguard Worker;
1087*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_XXXdXXXX:
1088*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1089*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm0 = xmm1[2,2,3,3]
1090*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1091*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 undef, i32 undef, i32 13, i32 undef, i32 undef, i32 undef, i32 undef>
1092*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1093*9880d681SAndroid Build Coastguard Worker}
1094*9880d681SAndroid Build Coastguard Worker
1095*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_012dXXXX(<8 x i16> %a, <8 x i16> %b) {
1096*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_012dXXXX:
1097*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1098*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,65535,65535,65535,65535]
1099*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand %xmm2, %xmm0
1100*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1101*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pandn %xmm1, %xmm2
1102*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm2, %xmm0
1103*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1104*9880d681SAndroid Build Coastguard Worker;
1105*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_012dXXXX:
1106*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1107*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[10,11,u,u,u,u,u,u,u,u]
1108*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5],zero,zero,xmm0[u,u,u,u,u,u,u,u]
1109*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    por %xmm1, %xmm0
1110*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1111*9880d681SAndroid Build Coastguard Worker;
1112*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_012dXXXX:
1113*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1114*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1115*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
1116*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1117*9880d681SAndroid Build Coastguard Worker;
1118*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_012dXXXX:
1119*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1120*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1121*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
1122*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1123*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 13, i32 undef, i32 undef, i32 undef, i32 undef>
1124*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1125*9880d681SAndroid Build Coastguard Worker}
1126*9880d681SAndroid Build Coastguard Worker
1127*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_XXXXcde3(<8 x i16> %a, <8 x i16> %b) {
1128*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_XXXXcde3:
1129*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1130*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,65535,65535,65535,65535,65535,0]
1131*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand %xmm2, %xmm1
1132*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
1133*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pandn %xmm0, %xmm2
1134*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm2
1135*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm2, %xmm0
1136*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1137*9880d681SAndroid Build Coastguard Worker;
1138*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_XXXXcde3:
1139*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1140*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,u,u],zero,zero,zero,zero,zero,zero,xmm0[6,7]
1141*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,u,u,u,u,8,9,10,11,12,13],zero,zero
1142*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    por %xmm1, %xmm0
1143*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1144*9880d681SAndroid Build Coastguard Worker;
1145*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_XXXXcde3:
1146*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1147*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
1148*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm1[0,1,2,3,4,5,6],xmm0[7]
1149*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1150*9880d681SAndroid Build Coastguard Worker;
1151*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v8i16_XXXXcde3:
1152*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1153*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
1154*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3,4,5,6],xmm0[7]
1155*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1156*9880d681SAndroid Build Coastguard Worker;
1157*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v8i16_XXXXcde3:
1158*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1159*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastq %xmm0, %xmm0
1160*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3,4,5,6],xmm0[7]
1161*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1162*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 12, i32 13, i32 14, i32 3>
1163*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1164*9880d681SAndroid Build Coastguard Worker}
1165*9880d681SAndroid Build Coastguard Worker
1166*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_cde3XXXX(<8 x i16> %a, <8 x i16> %b) {
1167*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_cde3XXXX:
1168*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1169*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,65535,65535,65535,65535]
1170*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
1171*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand %xmm2, %xmm1
1172*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pandn %xmm0, %xmm2
1173*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm2
1174*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm2, %xmm0
1175*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1176*9880d681SAndroid Build Coastguard Worker;
1177*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_cde3XXXX:
1178*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1179*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[6,7,u,u,u,u,u,u,u,u]
1180*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = xmm1[8,9,10,11,12,13],zero,zero,xmm1[u,u,u,u,u,u,u,u]
1181*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    por %xmm1, %xmm0
1182*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1183*9880d681SAndroid Build Coastguard Worker;
1184*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_cde3XXXX:
1185*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1186*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
1187*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3],xmm1[4,5,6,7]
1188*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1189*9880d681SAndroid Build Coastguard Worker;
1190*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_cde3XXXX:
1191*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1192*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
1193*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3],xmm1[4,5,6,7]
1194*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1195*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 12, i32 13, i32 14, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
1196*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1197*9880d681SAndroid Build Coastguard Worker}
1198*9880d681SAndroid Build Coastguard Worker
1199*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_012dcde3(<8 x i16> %a, <8 x i16> %b) {
1200*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_012dcde3:
1201*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1202*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1203*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[0,3,2,1]
1204*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,0,4,5,6,7]
1205*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
1206*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,1,4,5,6,7]
1207*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,5,7]
1208*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,1]
1209*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,3,0,2,4,5,6,7]
1210*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1211*9880d681SAndroid Build Coastguard Worker;
1212*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_012dcde3:
1213*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1214*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[10,11,8,9,10,11,12,13],zero,zero
1215*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5],zero,zero,zero,zero,zero,zero,zero,zero,xmm0[6,7]
1216*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    por %xmm1, %xmm0
1217*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1218*9880d681SAndroid Build Coastguard Worker;
1219*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_012dcde3:
1220*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1221*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
1222*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,10,11,8,9,10,11,12,13,6,7]
1223*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1224*9880d681SAndroid Build Coastguard Worker;
1225*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v8i16_012dcde3:
1226*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1227*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
1228*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,10,11,8,9,10,11,12,13,6,7]
1229*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1230*9880d681SAndroid Build Coastguard Worker;
1231*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v8i16_012dcde3:
1232*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1233*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3]
1234*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,10,11,8,9,10,11,12,13,6,7]
1235*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1236*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 13, i32 12, i32 13, i32 14, i32 3>
1237*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1238*9880d681SAndroid Build Coastguard Worker}
1239*9880d681SAndroid Build Coastguard Worker
1240*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0923cde7(<8 x i16> %a, <8 x i16> %b) {
1241*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_0923cde7:
1242*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1243*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movaps {{.*#+}} xmm2 = [65535,0,65535,65535,0,0,0,65535]
1244*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andps %xmm2, %xmm0
1245*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andnps %xmm1, %xmm2
1246*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    orps %xmm2, %xmm0
1247*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1248*9880d681SAndroid Build Coastguard Worker;
1249*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_0923cde7:
1250*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1251*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movaps {{.*#+}} xmm2 = [65535,0,65535,65535,0,0,0,65535]
1252*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andps %xmm2, %xmm0
1253*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andnps %xmm1, %xmm2
1254*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    orps %xmm2, %xmm0
1255*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1256*9880d681SAndroid Build Coastguard Worker;
1257*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_0923cde7:
1258*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1259*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4,5,6],xmm0[7]
1260*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1261*9880d681SAndroid Build Coastguard Worker;
1262*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0923cde7:
1263*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1264*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4,5,6],xmm0[7]
1265*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1266*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 9, i32 2, i32 3, i32 12, i32 13, i32 14, i32 7>
1267*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1268*9880d681SAndroid Build Coastguard Worker}
1269*9880d681SAndroid Build Coastguard Worker
1270*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_XXX1X579(<8 x i16> %a, <8 x i16> %b) {
1271*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_XXX1X579:
1272*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1273*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[0,1,2,0]
1274*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,65535,65535,65535,0]
1275*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]
1276*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,7]
1277*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand %xmm1, %xmm0
1278*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pandn %xmm2, %xmm1
1279*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm0, %xmm1
1280*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
1281*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1282*9880d681SAndroid Build Coastguard Worker;
1283*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_XXX1X579:
1284*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1285*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,u,u],zero,zero,xmm1[u,u],zero,zero,zero,zero,xmm1[2,3]
1286*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,2,3,u,u,10,11,14,15],zero,zero
1287*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    por %xmm1, %xmm0
1288*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1289*9880d681SAndroid Build Coastguard Worker;
1290*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_XXX1X579:
1291*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1292*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
1293*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]
1294*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,7]
1295*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7]
1296*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1297*9880d681SAndroid Build Coastguard Worker;
1298*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v8i16_XXX1X579:
1299*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1300*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
1301*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]
1302*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,7]
1303*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7]
1304*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1305*9880d681SAndroid Build Coastguard Worker;
1306*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v8i16_XXX1X579:
1307*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1308*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastd %xmm1, %xmm1
1309*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]
1310*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,7]
1311*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7]
1312*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1313*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 undef, i32 undef, i32 1, i32 undef, i32 5, i32 7, i32 9>
1314*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1315*9880d681SAndroid Build Coastguard Worker}
1316*9880d681SAndroid Build Coastguard Worker
1317*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_XX4X8acX(<8 x i16> %a, <8 x i16> %b) {
1318*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_XX4X8acX:
1319*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1320*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[2,2,3,3]
1321*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm1[0,2,2,3,4,5,6,7]
1322*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,0]
1323*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,7,4,7]
1324*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsd {{.*#+}} xmm0 = xmm2[0],xmm0[1]
1325*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1326*9880d681SAndroid Build Coastguard Worker;
1327*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_XX4X8acX:
1328*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1329*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,8,9,u,u],zero,zero,zero,zero,zero,zero,xmm0[u,u]
1330*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = xmm1[u,u,u,u],zero,zero,xmm1[u,u,0,1,4,5,8,9,u,u]
1331*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    por %xmm1, %xmm0
1332*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1333*9880d681SAndroid Build Coastguard Worker;
1334*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_XX4X8acX:
1335*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1336*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm1 = xmm1[0,1,4,5,4,5,6,7,0,1,4,5,8,9,4,5]
1337*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,2,3,3]
1338*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
1339*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1340*9880d681SAndroid Build Coastguard Worker;
1341*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v8i16_XX4X8acX:
1342*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1343*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,4,5,4,5,6,7,0,1,4,5,8,9,4,5]
1344*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,2,3,3]
1345*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
1346*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1347*9880d681SAndroid Build Coastguard Worker;
1348*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v8i16_XX4X8acX:
1349*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1350*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,4,5,4,5,6,7,0,1,4,5,8,9,4,5]
1351*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,2,3,3]
1352*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3]
1353*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1354*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 undef, i32 4, i32 undef, i32 8, i32 10, i32 12, i32 undef>
1355*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1356*9880d681SAndroid Build Coastguard Worker}
1357*9880d681SAndroid Build Coastguard Worker
1358*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_8zzzzzzz(i16 %i) {
1359*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_8zzzzzzz:
1360*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1361*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movzwl %di, %eax
1362*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movd %eax, %xmm0
1363*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1364*9880d681SAndroid Build Coastguard Worker;
1365*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_8zzzzzzz:
1366*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1367*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movzwl %di, %eax
1368*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovd %eax, %xmm0
1369*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1370*9880d681SAndroid Build Coastguard Worker  %a = insertelement <8 x i16> undef, i16 %i, i32 0
1371*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> zeroinitializer, <8 x i16> %a, <8 x i32> <i32 8, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1372*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1373*9880d681SAndroid Build Coastguard Worker}
1374*9880d681SAndroid Build Coastguard Worker
1375*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_z8zzzzzz(i16 %i) {
1376*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_z8zzzzzz:
1377*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1378*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pxor %xmm0, %xmm0
1379*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pinsrw $1, %edi, %xmm0
1380*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1381*9880d681SAndroid Build Coastguard Worker;
1382*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_z8zzzzzz:
1383*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1384*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpxor %xmm0, %xmm0, %xmm0
1385*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpinsrw $1, %edi, %xmm0, %xmm0
1386*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1387*9880d681SAndroid Build Coastguard Worker  %a = insertelement <8 x i16> undef, i16 %i, i32 0
1388*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> zeroinitializer, <8 x i16> %a, <8 x i32> <i32 2, i32 8, i32 3, i32 7, i32 6, i32 5, i32 4, i32 3>
1389*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1390*9880d681SAndroid Build Coastguard Worker}
1391*9880d681SAndroid Build Coastguard Worker
1392*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_zzzzz8zz(i16 %i) {
1393*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_zzzzz8zz:
1394*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1395*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pxor %xmm0, %xmm0
1396*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pinsrw $5, %edi, %xmm0
1397*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1398*9880d681SAndroid Build Coastguard Worker;
1399*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_zzzzz8zz:
1400*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1401*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpxor %xmm0, %xmm0, %xmm0
1402*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpinsrw $5, %edi, %xmm0, %xmm0
1403*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1404*9880d681SAndroid Build Coastguard Worker  %a = insertelement <8 x i16> undef, i16 %i, i32 0
1405*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> zeroinitializer, <8 x i16> %a, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 0, i32 0>
1406*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1407*9880d681SAndroid Build Coastguard Worker}
1408*9880d681SAndroid Build Coastguard Worker
1409*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_zuuzuuz8(i16 %i) {
1410*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_zuuzuuz8:
1411*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1412*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pxor %xmm0, %xmm0
1413*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pinsrw $7, %edi, %xmm0
1414*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1415*9880d681SAndroid Build Coastguard Worker;
1416*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_zuuzuuz8:
1417*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1418*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpxor %xmm0, %xmm0, %xmm0
1419*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpinsrw $7, %edi, %xmm0, %xmm0
1420*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1421*9880d681SAndroid Build Coastguard Worker  %a = insertelement <8 x i16> undef, i16 %i, i32 0
1422*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> zeroinitializer, <8 x i16> %a, <8 x i32> <i32 0, i32 undef, i32 undef, i32 3, i32 undef, i32 undef, i32 6, i32 8>
1423*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1424*9880d681SAndroid Build Coastguard Worker}
1425*9880d681SAndroid Build Coastguard Worker
1426*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_zzBzzzzz(i16 %i) {
1427*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_zzBzzzzz:
1428*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1429*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pxor %xmm0, %xmm0
1430*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pinsrw $2, %edi, %xmm0
1431*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1432*9880d681SAndroid Build Coastguard Worker;
1433*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_zzBzzzzz:
1434*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1435*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpxor %xmm0, %xmm0, %xmm0
1436*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpinsrw $2, %edi, %xmm0, %xmm0
1437*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1438*9880d681SAndroid Build Coastguard Worker  %a = insertelement <8 x i16> undef, i16 %i, i32 3
1439*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> zeroinitializer, <8 x i16> %a, <8 x i32> <i32 0, i32 1, i32 11, i32 3, i32 4, i32 5, i32 6, i32 7>
1440*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1441*9880d681SAndroid Build Coastguard Worker}
1442*9880d681SAndroid Build Coastguard Worker
1443*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_def01234(<8 x i16> %a, <8 x i16> %b) {
1444*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_def01234:
1445*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1446*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1447*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]
1448*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm0
1449*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1450*9880d681SAndroid Build Coastguard Worker;
1451*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_def01234:
1452*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1453*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm0 = xmm1[10,11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9]
1454*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1455*9880d681SAndroid Build Coastguard Worker;
1456*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_def01234:
1457*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1458*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm0 = xmm1[10,11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9]
1459*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1460*9880d681SAndroid Build Coastguard Worker;
1461*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_def01234:
1462*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1463*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[10,11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9]
1464*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1465*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 13, i32 14, i32 15, i32 0, i32 1, i32 2, i32 3, i32 4>
1466*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1467*9880d681SAndroid Build Coastguard Worker}
1468*9880d681SAndroid Build Coastguard Worker
1469*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_ueuu123u(<8 x i16> %a, <8 x i16> %b) {
1470*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_ueuu123u:
1471*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1472*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1473*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]
1474*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm0
1475*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1476*9880d681SAndroid Build Coastguard Worker;
1477*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_ueuu123u:
1478*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1479*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm0 = xmm1[10,11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9]
1480*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1481*9880d681SAndroid Build Coastguard Worker;
1482*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_ueuu123u:
1483*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1484*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm0 = xmm1[10,11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9]
1485*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1486*9880d681SAndroid Build Coastguard Worker;
1487*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_ueuu123u:
1488*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1489*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[10,11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9]
1490*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1491*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 14, i32 undef, i32 undef, i32 1, i32 2, i32 3, i32 undef>
1492*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1493*9880d681SAndroid Build Coastguard Worker}
1494*9880d681SAndroid Build Coastguard Worker
1495*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_56701234(<8 x i16> %a, <8 x i16> %b) {
1496*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_56701234:
1497*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1498*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
1499*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1500*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]
1501*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm0
1502*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1503*9880d681SAndroid Build Coastguard Worker;
1504*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_56701234:
1505*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1506*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
1507*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1508*9880d681SAndroid Build Coastguard Worker;
1509*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_56701234:
1510*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1511*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
1512*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1513*9880d681SAndroid Build Coastguard Worker;
1514*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_56701234:
1515*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1516*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
1517*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1518*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4>
1519*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1520*9880d681SAndroid Build Coastguard Worker}
1521*9880d681SAndroid Build Coastguard Worker
1522*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_u6uu123u(<8 x i16> %a, <8 x i16> %b) {
1523*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_u6uu123u:
1524*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1525*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
1526*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1527*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]
1528*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm0
1529*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1530*9880d681SAndroid Build Coastguard Worker;
1531*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_u6uu123u:
1532*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1533*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
1534*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1535*9880d681SAndroid Build Coastguard Worker;
1536*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_u6uu123u:
1537*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1538*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
1539*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1540*9880d681SAndroid Build Coastguard Worker;
1541*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_u6uu123u:
1542*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1543*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
1544*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1545*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 6, i32 undef, i32 undef, i32 1, i32 2, i32 3, i32 undef>
1546*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1547*9880d681SAndroid Build Coastguard Worker}
1548*9880d681SAndroid Build Coastguard Worker
1549*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_uuuu123u(<8 x i16> %a, <8 x i16> %b) {
1550*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_uuuu123u:
1551*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1552*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]
1553*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1554*9880d681SAndroid Build Coastguard Worker;
1555*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_uuuu123u:
1556*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1557*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]
1558*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1559*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 1, i32 2, i32 3, i32 undef>
1560*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1561*9880d681SAndroid Build Coastguard Worker}
1562*9880d681SAndroid Build Coastguard Worker
1563*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_bcdef012(<8 x i16> %a, <8 x i16> %b) {
1564*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_bcdef012:
1565*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1566*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1567*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5]
1568*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm0
1569*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1570*9880d681SAndroid Build Coastguard Worker;
1571*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_bcdef012:
1572*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1573*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm0 = xmm1[6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4,5]
1574*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1575*9880d681SAndroid Build Coastguard Worker;
1576*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_bcdef012:
1577*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1578*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm0 = xmm1[6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4,5]
1579*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1580*9880d681SAndroid Build Coastguard Worker;
1581*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_bcdef012:
1582*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1583*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4,5]
1584*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1585*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 11, i32 12, i32 13, i32 14, i32 15, i32 0, i32 1, i32 2>
1586*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1587*9880d681SAndroid Build Coastguard Worker}
1588*9880d681SAndroid Build Coastguard Worker
1589*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_ucdeuu1u(<8 x i16> %a, <8 x i16> %b) {
1590*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_ucdeuu1u:
1591*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1592*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1593*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5]
1594*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm0
1595*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1596*9880d681SAndroid Build Coastguard Worker;
1597*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_ucdeuu1u:
1598*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1599*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm0 = xmm1[6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4,5]
1600*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1601*9880d681SAndroid Build Coastguard Worker;
1602*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_ucdeuu1u:
1603*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1604*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm0 = xmm1[6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4,5]
1605*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1606*9880d681SAndroid Build Coastguard Worker;
1607*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_ucdeuu1u:
1608*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1609*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4,5]
1610*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1611*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 12, i32 13, i32 14, i32 undef, i32 undef, i32 1, i32 undef>
1612*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1613*9880d681SAndroid Build Coastguard Worker}
1614*9880d681SAndroid Build Coastguard Worker
1615*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_34567012(<8 x i16> %a, <8 x i16> %b) {
1616*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_34567012:
1617*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1618*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
1619*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1620*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5]
1621*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm0
1622*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1623*9880d681SAndroid Build Coastguard Worker;
1624*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_34567012:
1625*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1626*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
1627*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1628*9880d681SAndroid Build Coastguard Worker;
1629*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_34567012:
1630*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1631*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
1632*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1633*9880d681SAndroid Build Coastguard Worker;
1634*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_34567012:
1635*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1636*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
1637*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1638*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2>
1639*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1640*9880d681SAndroid Build Coastguard Worker}
1641*9880d681SAndroid Build Coastguard Worker
1642*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_u456uu1u(<8 x i16> %a, <8 x i16> %b) {
1643*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_u456uu1u:
1644*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1645*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
1646*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1647*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5]
1648*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm0
1649*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1650*9880d681SAndroid Build Coastguard Worker;
1651*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_u456uu1u:
1652*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1653*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
1654*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1655*9880d681SAndroid Build Coastguard Worker;
1656*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_u456uu1u:
1657*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1658*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
1659*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1660*9880d681SAndroid Build Coastguard Worker;
1661*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_u456uu1u:
1662*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1663*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
1664*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1665*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 4, i32 5, i32 6, i32 undef, i32 undef, i32 1, i32 undef>
1666*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1667*9880d681SAndroid Build Coastguard Worker}
1668*9880d681SAndroid Build Coastguard Worker
1669*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_u456uuuu(<8 x i16> %a, <8 x i16> %b) {
1670*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_u456uuuu:
1671*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1672*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1673*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1674*9880d681SAndroid Build Coastguard Worker;
1675*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_u456uuuu:
1676*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1677*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1678*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1679*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 4, i32 5, i32 6, i32 undef, i32 undef, i32 undef, i32 undef>
1680*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1681*9880d681SAndroid Build Coastguard Worker}
1682*9880d681SAndroid Build Coastguard Worker
1683*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_3456789a(<8 x i16> %a, <8 x i16> %b) {
1684*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_3456789a:
1685*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1686*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1687*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5]
1688*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm0
1689*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1690*9880d681SAndroid Build Coastguard Worker;
1691*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_3456789a:
1692*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1693*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm1 = xmm0[6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4,5]
1694*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
1695*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1696*9880d681SAndroid Build Coastguard Worker;
1697*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_3456789a:
1698*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1699*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm1 = xmm0[6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4,5]
1700*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm1, %xmm0
1701*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1702*9880d681SAndroid Build Coastguard Worker;
1703*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_3456789a:
1704*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1705*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4,5]
1706*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1707*9880d681SAndroid Build Coastguard Worker  %shuffle = 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>
1708*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1709*9880d681SAndroid Build Coastguard Worker}
1710*9880d681SAndroid Build Coastguard Worker
1711*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_u456uu9u(<8 x i16> %a, <8 x i16> %b) {
1712*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_u456uu9u:
1713*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1714*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1715*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5]
1716*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm0
1717*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1718*9880d681SAndroid Build Coastguard Worker;
1719*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_u456uu9u:
1720*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1721*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm1 = xmm0[6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4,5]
1722*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
1723*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1724*9880d681SAndroid Build Coastguard Worker;
1725*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_u456uu9u:
1726*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1727*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm1 = xmm0[6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4,5]
1728*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm1, %xmm0
1729*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1730*9880d681SAndroid Build Coastguard Worker;
1731*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_u456uu9u:
1732*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1733*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4,5]
1734*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1735*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 4, i32 5, i32 6, i32 undef, i32 undef, i32 9, i32 undef>
1736*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1737*9880d681SAndroid Build Coastguard Worker}
1738*9880d681SAndroid Build Coastguard Worker
1739*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_56789abc(<8 x i16> %a, <8 x i16> %b) {
1740*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_56789abc:
1741*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1742*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1743*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9]
1744*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm0
1745*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1746*9880d681SAndroid Build Coastguard Worker;
1747*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_56789abc:
1748*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1749*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm1 = xmm0[10,11,12,13,14,15],xmm1[0,1,2,3,4,5,6,7,8,9]
1750*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
1751*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1752*9880d681SAndroid Build Coastguard Worker;
1753*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_56789abc:
1754*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1755*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm1 = xmm0[10,11,12,13,14,15],xmm1[0,1,2,3,4,5,6,7,8,9]
1756*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm1, %xmm0
1757*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1758*9880d681SAndroid Build Coastguard Worker;
1759*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_56789abc:
1760*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1761*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],xmm1[0,1,2,3,4,5,6,7,8,9]
1762*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1763*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12>
1764*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1765*9880d681SAndroid Build Coastguard Worker}
1766*9880d681SAndroid Build Coastguard Worker
1767*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_u6uu9abu(<8 x i16> %a, <8 x i16> %b) {
1768*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_u6uu9abu:
1769*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1770*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1771*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9]
1772*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    por %xmm1, %xmm0
1773*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1774*9880d681SAndroid Build Coastguard Worker;
1775*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_u6uu9abu:
1776*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1777*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    palignr {{.*#+}} xmm1 = xmm0[10,11,12,13,14,15],xmm1[0,1,2,3,4,5,6,7,8,9]
1778*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
1779*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1780*9880d681SAndroid Build Coastguard Worker;
1781*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_u6uu9abu:
1782*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1783*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    palignr {{.*#+}} xmm1 = xmm0[10,11,12,13,14,15],xmm1[0,1,2,3,4,5,6,7,8,9]
1784*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm1, %xmm0
1785*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1786*9880d681SAndroid Build Coastguard Worker;
1787*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_u6uu9abu:
1788*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1789*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],xmm1[0,1,2,3,4,5,6,7,8,9]
1790*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1791*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 undef, i32 6, i32 undef, i32 undef, i32 9, i32 10, i32 11, i32 undef>
1792*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1793*9880d681SAndroid Build Coastguard Worker}
1794*9880d681SAndroid Build Coastguard Worker
1795*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0uuu1uuu(<8 x i16> %a) {
1796*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_0uuu1uuu:
1797*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1798*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
1799*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,6,7]
1800*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1801*9880d681SAndroid Build Coastguard Worker;
1802*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_0uuu1uuu:
1803*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1804*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
1805*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,6,7]
1806*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1807*9880d681SAndroid Build Coastguard Worker;
1808*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_0uuu1uuu:
1809*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1810*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
1811*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1812*9880d681SAndroid Build Coastguard Worker;
1813*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0uuu1uuu:
1814*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1815*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
1816*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1817*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 1, i32 undef, i32 undef, i32 undef>
1818*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1819*9880d681SAndroid Build Coastguard Worker}
1820*9880d681SAndroid Build Coastguard Worker
1821*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0zzz1zzz(<8 x i16> %a) {
1822*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_0zzz1zzz:
1823*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1824*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
1825*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1826*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1827*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1828*9880d681SAndroid Build Coastguard Worker;
1829*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_0zzz1zzz:
1830*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1831*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm1, %xmm1
1832*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1833*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1834*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1835*9880d681SAndroid Build Coastguard Worker;
1836*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_0zzz1zzz:
1837*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1838*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
1839*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1840*9880d681SAndroid Build Coastguard Worker;
1841*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0zzz1zzz:
1842*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1843*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
1844*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1845*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 9, i32 10, i32 11, i32 1, i32 13, i32 14, i32 15>
1846*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1847*9880d681SAndroid Build Coastguard Worker}
1848*9880d681SAndroid Build Coastguard Worker
1849*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0u1u2u3u(<8 x i16> %a) {
1850*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_0u1u2u3u:
1851*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1852*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1853*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1854*9880d681SAndroid Build Coastguard Worker;
1855*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_0u1u2u3u:
1856*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1857*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1858*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1859*9880d681SAndroid Build Coastguard Worker;
1860*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_0u1u2u3u:
1861*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1862*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
1863*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1864*9880d681SAndroid Build Coastguard Worker;
1865*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0u1u2u3u:
1866*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1867*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
1868*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1869*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 undef, i32 1, i32 undef, i32 2, i32 undef, i32 3, i32 undef>
1870*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1871*9880d681SAndroid Build Coastguard Worker}
1872*9880d681SAndroid Build Coastguard Worker
1873*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0z1z2z3z(<8 x i16> %a) {
1874*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_0z1z2z3z:
1875*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
1876*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
1877*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1878*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1879*9880d681SAndroid Build Coastguard Worker;
1880*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_0z1z2z3z:
1881*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
1882*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm1, %xmm1
1883*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1884*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1885*9880d681SAndroid Build Coastguard Worker;
1886*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_0z1z2z3z:
1887*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
1888*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
1889*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1890*9880d681SAndroid Build Coastguard Worker;
1891*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0z1z2z3z:
1892*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1893*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
1894*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1895*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 9, i32 1, i32 11, i32 2, i32 13, i32 3, i32 15>
1896*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1897*9880d681SAndroid Build Coastguard Worker}
1898*9880d681SAndroid Build Coastguard Worker
1899*9880d681SAndroid Build Coastguard Worker;
1900*9880d681SAndroid Build Coastguard Worker; Shuffle to logical bit shifts
1901*9880d681SAndroid Build Coastguard Worker;
1902*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_z0z2z4z6(<8 x i16> %a) {
1903*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_z0z2z4z6:
1904*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1905*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pslld $16, %xmm0
1906*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1907*9880d681SAndroid Build Coastguard Worker;
1908*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_z0z2z4z6:
1909*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1910*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpslld $16, %xmm0, %xmm0
1911*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1912*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32><i32 8, i32 0, i32 8, i32 2, i32 8, i32 4, i32 8, i32 6>
1913*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1914*9880d681SAndroid Build Coastguard Worker}
1915*9880d681SAndroid Build Coastguard Worker
1916*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_zzz0zzz4(<8 x i16> %a) {
1917*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_zzz0zzz4:
1918*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1919*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psllq $48, %xmm0
1920*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1921*9880d681SAndroid Build Coastguard Worker;
1922*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_zzz0zzz4:
1923*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1924*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsllq $48, %xmm0, %xmm0
1925*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1926*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32><i32 8, i32 8, i32 8, i32 0, i32 8, i32 8, i32 8, i32 4>
1927*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1928*9880d681SAndroid Build Coastguard Worker}
1929*9880d681SAndroid Build Coastguard Worker
1930*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_zz01zX4X(<8 x i16> %a) {
1931*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_zz01zX4X:
1932*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1933*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psllq $32, %xmm0
1934*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1935*9880d681SAndroid Build Coastguard Worker;
1936*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_zz01zX4X:
1937*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1938*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsllq $32, %xmm0, %xmm0
1939*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1940*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32><i32 8, i32 8, i32 0, i32 1, i32 8, i32 undef, i32 4, i32 undef>
1941*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1942*9880d681SAndroid Build Coastguard Worker}
1943*9880d681SAndroid Build Coastguard Worker
1944*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_z0X2z456(<8 x i16> %a) {
1945*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_z0X2z456:
1946*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1947*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psllq $16, %xmm0
1948*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1949*9880d681SAndroid Build Coastguard Worker;
1950*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_z0X2z456:
1951*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1952*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsllq $16, %xmm0, %xmm0
1953*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1954*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32><i32 8, i32 0, i32 undef, i32 2, i32 8, i32 4, i32 5, i32 6>
1955*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1956*9880d681SAndroid Build Coastguard Worker}
1957*9880d681SAndroid Build Coastguard Worker
1958*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_1z3zXz7z(<8 x i16> %a) {
1959*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_1z3zXz7z:
1960*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1961*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrld $16, %xmm0
1962*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1963*9880d681SAndroid Build Coastguard Worker;
1964*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_1z3zXz7z:
1965*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1966*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrld $16, %xmm0, %xmm0
1967*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1968*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32><i32 1, i32 8, i32 3, i32 8, i32 undef, i32 8, i32 7, i32 8>
1969*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1970*9880d681SAndroid Build Coastguard Worker}
1971*9880d681SAndroid Build Coastguard Worker
1972*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_1X3z567z(<8 x i16> %a) {
1973*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_1X3z567z:
1974*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1975*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrlq $16, %xmm0
1976*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1977*9880d681SAndroid Build Coastguard Worker;
1978*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_1X3z567z:
1979*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1980*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrlq $16, %xmm0, %xmm0
1981*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1982*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32><i32 1, i32 undef, i32 3, i32 8, i32 5, i32 6, i32 7, i32 8>
1983*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1984*9880d681SAndroid Build Coastguard Worker}
1985*9880d681SAndroid Build Coastguard Worker
1986*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_23zz67zz(<8 x i16> %a) {
1987*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_23zz67zz:
1988*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
1989*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrlq $32, %xmm0
1990*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1991*9880d681SAndroid Build Coastguard Worker;
1992*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_23zz67zz:
1993*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
1994*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrlq $32, %xmm0, %xmm0
1995*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1996*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32><i32 2, i32 3, i32 8, i32 8, i32 6, i32 7, i32 8, i32 8>
1997*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
1998*9880d681SAndroid Build Coastguard Worker}
1999*9880d681SAndroid Build Coastguard Worker
2000*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_3zXXXzzz(<8 x i16> %a) {
2001*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_3zXXXzzz:
2002*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
2003*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrlq $48, %xmm0
2004*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
2005*9880d681SAndroid Build Coastguard Worker;
2006*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_3zXXXzzz:
2007*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
2008*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrlq $48, %xmm0, %xmm0
2009*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
2010*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32><i32 3, i32 8, i32 undef, i32 undef, i32 undef, i32 8, i32 8, i32 8>
2011*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
2012*9880d681SAndroid Build Coastguard Worker}
2013*9880d681SAndroid Build Coastguard Worker
2014*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_01u3zzuz(<8 x i16> %a) {
2015*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_01u3zzuz:
2016*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
2017*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movq {{.*#+}} xmm0 = xmm0[0],zero
2018*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
2019*9880d681SAndroid Build Coastguard Worker;
2020*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_01u3zzuz:
2021*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
2022*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero
2023*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
2024*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 undef, i32 3, i32 8, i32 8, i32 undef, i32 8>
2025*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
2026*9880d681SAndroid Build Coastguard Worker}
2027*9880d681SAndroid Build Coastguard Worker
2028*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0z234567(<8 x i16> %a) {
2029*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_0z234567:
2030*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
2031*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andps {{.*}}(%rip), %xmm0
2032*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
2033*9880d681SAndroid Build Coastguard Worker;
2034*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_0z234567:
2035*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
2036*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andps {{.*}}(%rip), %xmm0
2037*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
2038*9880d681SAndroid Build Coastguard Worker;
2039*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_0z234567:
2040*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
2041*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm1, %xmm1
2042*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6,7]
2043*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
2044*9880d681SAndroid Build Coastguard Worker;
2045*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0z234567:
2046*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
2047*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpxor %xmm1, %xmm1, %xmm1
2048*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6,7]
2049*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
2050*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 9, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
2051*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
2052*9880d681SAndroid Build Coastguard Worker}
2053*9880d681SAndroid Build Coastguard Worker
2054*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0zzzz5z7(<8 x i16> %a) {
2055*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_0zzzz5z7:
2056*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
2057*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andps {{.*}}(%rip), %xmm0
2058*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
2059*9880d681SAndroid Build Coastguard Worker;
2060*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_0zzzz5z7:
2061*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
2062*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andps {{.*}}(%rip), %xmm0
2063*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
2064*9880d681SAndroid Build Coastguard Worker;
2065*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_0zzzz5z7:
2066*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
2067*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm1, %xmm1
2068*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4],xmm0[5],xmm1[6],xmm0[7]
2069*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
2070*9880d681SAndroid Build Coastguard Worker;
2071*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0zzzz5z7:
2072*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
2073*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpxor %xmm1, %xmm1, %xmm1
2074*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4],xmm0[5],xmm1[6],xmm0[7]
2075*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
2076*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 8, i32 8, i32 8, i32 8, i32 5, i32 8, i32 7>
2077*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
2078*9880d681SAndroid Build Coastguard Worker}
2079*9880d681SAndroid Build Coastguard Worker
2080*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_0123456z(<8 x i16> %a) {
2081*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuffle_v8i16_0123456z:
2082*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
2083*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andps {{.*}}(%rip), %xmm0
2084*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
2085*9880d681SAndroid Build Coastguard Worker;
2086*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuffle_v8i16_0123456z:
2087*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
2088*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andps {{.*}}(%rip), %xmm0
2089*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
2090*9880d681SAndroid Build Coastguard Worker;
2091*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuffle_v8i16_0123456z:
2092*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
2093*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm1, %xmm1
2094*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6],xmm1[7]
2095*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
2096*9880d681SAndroid Build Coastguard Worker;
2097*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_0123456z:
2098*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
2099*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpxor %xmm1, %xmm1, %xmm1
2100*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6],xmm1[7]
2101*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
2102*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 9, i32 2, i32 3, i32 4, i32 5, i32 6, i32 15>
2103*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
2104*9880d681SAndroid Build Coastguard Worker}
2105*9880d681SAndroid Build Coastguard Worker
2106*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_fu3ucc5u(<8 x i16> %a, <8 x i16> %b) {
2107*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_fu3ucc5u:
2108*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
2109*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
2110*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,5,4,4]
2111*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]
2112*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movdqa %xmm1, %xmm0
2113*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
2114*9880d681SAndroid Build Coastguard Worker;
2115*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_fu3ucc5u:
2116*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
2117*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
2118*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,5,4,4]
2119*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpckhdq {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]
2120*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
2121*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 15, i32 undef, i32 3, i32 undef, i32 12, i32 12, i32 5, i32 undef>
2122*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
2123*9880d681SAndroid Build Coastguard Worker}
2124*9880d681SAndroid Build Coastguard Worker
2125*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shuffle_v8i16_8012345u(<8 x i16> %a) {
2126*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuffle_v8i16_8012345u:
2127*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
2128*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
2129*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
2130*9880d681SAndroid Build Coastguard Worker;
2131*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuffle_v8i16_8012345u:
2132*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
2133*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
2134*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
2135*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 8, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 undef>
2136*9880d681SAndroid Build Coastguard Worker
2137*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle
2138*9880d681SAndroid Build Coastguard Worker}
2139*9880d681SAndroid Build Coastguard Worker
2140*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @mask_v8i16_012345ef(<8 x i16> %a, <8 x i16> %b) {
2141*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: mask_v8i16_012345ef:
2142*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
2143*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,0],xmm1[2,0]
2144*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,1],xmm0[2,0]
2145*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movaps %xmm1, %xmm0
2146*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
2147*9880d681SAndroid Build Coastguard Worker;
2148*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: mask_v8i16_012345ef:
2149*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
2150*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,0],xmm1[2,0]
2151*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,1],xmm0[2,0]
2152*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movaps %xmm1, %xmm0
2153*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
2154*9880d681SAndroid Build Coastguard Worker;
2155*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: mask_v8i16_012345ef:
2156*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
2157*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm1[0,1,2,3,4,5],xmm0[6,7]
2158*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
2159*9880d681SAndroid Build Coastguard Worker;
2160*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: mask_v8i16_012345ef:
2161*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2162*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3,4,5],xmm0[6,7]
2163*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2164*9880d681SAndroid Build Coastguard Worker;
2165*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: mask_v8i16_012345ef:
2166*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2167*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3]
2168*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2169*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <8 x i16> %a to <2 x i64>
2170*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <8 x i16> %b to <2 x i64>
2171*9880d681SAndroid Build Coastguard Worker  %3 = and <2 x i64> %1, <i64 0, i64 -4294967296>
2172*9880d681SAndroid Build Coastguard Worker  %4 = and <2 x i64> %2, <i64 -1, i64 4294967295>
2173*9880d681SAndroid Build Coastguard Worker  %5 = or <2 x i64> %4, %3
2174*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <2 x i64> %5 to <8 x i16>
2175*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %6
2176*9880d681SAndroid Build Coastguard Worker}
2177*9880d681SAndroid Build Coastguard Worker
2178*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @insert_dup_mem_v8i16_i32(i32* %ptr) {
2179*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_dup_mem_v8i16_i32:
2180*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
2181*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2182*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
2183*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2184*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
2185*9880d681SAndroid Build Coastguard Worker;
2186*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_dup_mem_v8i16_i32:
2187*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
2188*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2189*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
2190*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
2191*9880d681SAndroid Build Coastguard Worker;
2192*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_dup_mem_v8i16_i32:
2193*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
2194*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2195*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
2196*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
2197*9880d681SAndroid Build Coastguard Worker;
2198*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_mem_v8i16_i32:
2199*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2200*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2201*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
2202*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2203*9880d681SAndroid Build Coastguard Worker;
2204*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_mem_v8i16_i32:
2205*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2206*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw (%rdi), %xmm0
2207*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2208*9880d681SAndroid Build Coastguard Worker  %tmp = load i32, i32* %ptr, align 4
2209*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 0
2210*9880d681SAndroid Build Coastguard Worker  %tmp2 = bitcast <4 x i32> %tmp1 to <8 x i16>
2211*9880d681SAndroid Build Coastguard Worker  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> undef, <8 x i32> zeroinitializer
2212*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %tmp3
2213*9880d681SAndroid Build Coastguard Worker}
2214*9880d681SAndroid Build Coastguard Worker
2215*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @insert_dup_mem_v8i16_sext_i16(i16* %ptr) {
2216*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_dup_mem_v8i16_sext_i16:
2217*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
2218*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movswl (%rdi), %eax
2219*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm0
2220*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
2221*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2222*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
2223*9880d681SAndroid Build Coastguard Worker;
2224*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_dup_mem_v8i16_sext_i16:
2225*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
2226*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movswl (%rdi), %eax
2227*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm0
2228*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
2229*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
2230*9880d681SAndroid Build Coastguard Worker;
2231*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_dup_mem_v8i16_sext_i16:
2232*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
2233*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movswl (%rdi), %eax
2234*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %eax, %xmm0
2235*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
2236*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
2237*9880d681SAndroid Build Coastguard Worker;
2238*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_mem_v8i16_sext_i16:
2239*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2240*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movswl (%rdi), %eax
2241*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %eax, %xmm0
2242*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
2243*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2244*9880d681SAndroid Build Coastguard Worker;
2245*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_mem_v8i16_sext_i16:
2246*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2247*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movswl (%rdi), %eax
2248*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %eax, %xmm0
2249*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %xmm0
2250*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2251*9880d681SAndroid Build Coastguard Worker  %tmp = load i16, i16* %ptr, align 2
2252*9880d681SAndroid Build Coastguard Worker  %tmp1 = sext i16 %tmp to i32
2253*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <4 x i32> zeroinitializer, i32 %tmp1, i32 0
2254*9880d681SAndroid Build Coastguard Worker  %tmp3 = bitcast <4 x i32> %tmp2 to <8 x i16>
2255*9880d681SAndroid Build Coastguard Worker  %tmp4 = shufflevector <8 x i16> %tmp3, <8 x i16> undef, <8 x i32> zeroinitializer
2256*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %tmp4
2257*9880d681SAndroid Build Coastguard Worker}
2258*9880d681SAndroid Build Coastguard Worker
2259*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @insert_dup_elt1_mem_v8i16_i32(i32* %ptr) {
2260*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_dup_elt1_mem_v8i16_i32:
2261*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
2262*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2263*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,1,1,1,4,5,6,7]
2264*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2265*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
2266*9880d681SAndroid Build Coastguard Worker;
2267*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_dup_elt1_mem_v8i16_i32:
2268*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
2269*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2270*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
2271*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
2272*9880d681SAndroid Build Coastguard Worker;
2273*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_dup_elt1_mem_v8i16_i32:
2274*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
2275*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2276*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
2277*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
2278*9880d681SAndroid Build Coastguard Worker;
2279*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_elt1_mem_v8i16_i32:
2280*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2281*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2282*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
2283*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2284*9880d681SAndroid Build Coastguard Worker;
2285*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_elt1_mem_v8i16_i32:
2286*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2287*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw 2(%rdi), %xmm0
2288*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2289*9880d681SAndroid Build Coastguard Worker  %tmp = load i32, i32* %ptr, align 4
2290*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 0
2291*9880d681SAndroid Build Coastguard Worker  %tmp2 = bitcast <4 x i32> %tmp1 to <8 x i16>
2292*9880d681SAndroid Build Coastguard Worker  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> undef, <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
2293*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %tmp3
2294*9880d681SAndroid Build Coastguard Worker}
2295*9880d681SAndroid Build Coastguard Worker
2296*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @insert_dup_elt3_mem_v8i16_i32(i32* %ptr) {
2297*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_dup_elt3_mem_v8i16_i32:
2298*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
2299*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2300*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,0,1,1]
2301*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
2302*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2303*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
2304*9880d681SAndroid Build Coastguard Worker;
2305*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_dup_elt3_mem_v8i16_i32:
2306*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
2307*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2308*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
2309*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
2310*9880d681SAndroid Build Coastguard Worker;
2311*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_dup_elt3_mem_v8i16_i32:
2312*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
2313*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2314*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
2315*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
2316*9880d681SAndroid Build Coastguard Worker;
2317*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_elt3_mem_v8i16_i32:
2318*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2319*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2320*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
2321*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2322*9880d681SAndroid Build Coastguard Worker;
2323*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_elt3_mem_v8i16_i32:
2324*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2325*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw 2(%rdi), %xmm0
2326*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2327*9880d681SAndroid Build Coastguard Worker  %tmp = load i32, i32* %ptr, align 4
2328*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 1
2329*9880d681SAndroid Build Coastguard Worker  %tmp2 = bitcast <4 x i32> %tmp1 to <8 x i16>
2330*9880d681SAndroid Build Coastguard Worker  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> undef, <8 x i32> <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
2331*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %tmp3
2332*9880d681SAndroid Build Coastguard Worker}
2333*9880d681SAndroid Build Coastguard Worker
2334*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @insert_dup_elt1_mem_v8i16_sext_i16(i16* %ptr) {
2335*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_dup_elt1_mem_v8i16_sext_i16:
2336*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
2337*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movswl (%rdi), %eax
2338*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm0
2339*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,1,1,1,4,5,6,7]
2340*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2341*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
2342*9880d681SAndroid Build Coastguard Worker;
2343*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_dup_elt1_mem_v8i16_sext_i16:
2344*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
2345*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movswl (%rdi), %eax
2346*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm0
2347*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
2348*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
2349*9880d681SAndroid Build Coastguard Worker;
2350*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_dup_elt1_mem_v8i16_sext_i16:
2351*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
2352*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movswl (%rdi), %eax
2353*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %eax, %xmm0
2354*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
2355*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
2356*9880d681SAndroid Build Coastguard Worker;
2357*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_elt1_mem_v8i16_sext_i16:
2358*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2359*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movswl (%rdi), %eax
2360*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %eax, %xmm0
2361*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
2362*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2363*9880d681SAndroid Build Coastguard Worker;
2364*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_elt1_mem_v8i16_sext_i16:
2365*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2366*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movswl (%rdi), %eax
2367*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shrl $16, %eax
2368*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %eax, %xmm0
2369*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %xmm0
2370*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2371*9880d681SAndroid Build Coastguard Worker  %tmp = load i16, i16* %ptr, align 2
2372*9880d681SAndroid Build Coastguard Worker  %tmp1 = sext i16 %tmp to i32
2373*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <4 x i32> zeroinitializer, i32 %tmp1, i32 0
2374*9880d681SAndroid Build Coastguard Worker  %tmp3 = bitcast <4 x i32> %tmp2 to <8 x i16>
2375*9880d681SAndroid Build Coastguard Worker  %tmp4 = shufflevector <8 x i16> %tmp3, <8 x i16> undef, <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
2376*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %tmp4
2377*9880d681SAndroid Build Coastguard Worker}
2378*9880d681SAndroid Build Coastguard Worker
2379*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @insert_dup_elt3_mem_v8i16_sext_i16(i16* %ptr) {
2380*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_dup_elt3_mem_v8i16_sext_i16:
2381*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
2382*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movswl (%rdi), %eax
2383*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm0
2384*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,0,1,1]
2385*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
2386*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2387*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
2388*9880d681SAndroid Build Coastguard Worker;
2389*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_dup_elt3_mem_v8i16_sext_i16:
2390*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
2391*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movswl (%rdi), %eax
2392*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm0
2393*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
2394*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
2395*9880d681SAndroid Build Coastguard Worker;
2396*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_dup_elt3_mem_v8i16_sext_i16:
2397*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
2398*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movswl (%rdi), %eax
2399*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %eax, %xmm0
2400*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
2401*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
2402*9880d681SAndroid Build Coastguard Worker;
2403*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_elt3_mem_v8i16_sext_i16:
2404*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2405*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movswl (%rdi), %eax
2406*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %eax, %xmm0
2407*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
2408*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2409*9880d681SAndroid Build Coastguard Worker;
2410*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_elt3_mem_v8i16_sext_i16:
2411*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2412*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movswl (%rdi), %eax
2413*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shrl $16, %eax
2414*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %eax, %xmm0
2415*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %xmm0
2416*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2417*9880d681SAndroid Build Coastguard Worker  %tmp = load i16, i16* %ptr, align 2
2418*9880d681SAndroid Build Coastguard Worker  %tmp1 = sext i16 %tmp to i32
2419*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <4 x i32> zeroinitializer, i32 %tmp1, i32 1
2420*9880d681SAndroid Build Coastguard Worker  %tmp3 = bitcast <4 x i32> %tmp2 to <8 x i16>
2421*9880d681SAndroid Build Coastguard Worker  %tmp4 = shufflevector <8 x i16> %tmp3, <8 x i16> undef, <8 x i32> <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
2422*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %tmp4
2423*9880d681SAndroid Build Coastguard Worker}
2424