xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/vector-shuffle-256-v16.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 -mcpu=x86-64 -mattr=+avx | FileCheck %s --check-prefix=ALL --check-prefix=AVX1
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=x86-64 -mattr=+avx2 | FileCheck %s --check-prefix=ALL --check-prefix=AVX2
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-unknown"
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
8*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:
9*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
10*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
11*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
12*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
13*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
14*9880d681SAndroid Build Coastguard Worker;
15*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:
16*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
17*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %ymm0
18*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
19*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
20*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
21*9880d681SAndroid Build Coastguard Worker}
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00(<16 x i16> %a, <16 x i16> %b) {
24*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:
25*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
26*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7]
27*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
28*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1]
29*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
30*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
31*9880d681SAndroid Build Coastguard Worker;
32*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_00_01_00:
33*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
34*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %xmm1
35*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1]
36*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0
37*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
38*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0>
39*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
40*9880d681SAndroid Build Coastguard Worker}
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00(<16 x i16> %a, <16 x i16> %b) {
43*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:
44*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
45*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7]
46*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
47*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1]
48*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
49*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
50*9880d681SAndroid Build Coastguard Worker;
51*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_00_02_00_00:
52*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
53*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %xmm1
54*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1]
55*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0
56*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
57*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0>
58*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
59*9880d681SAndroid Build Coastguard Worker}
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00(<16 x i16> %a, <16 x i16> %b) {
62*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00:
63*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
64*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7]
65*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
66*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1]
67*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
68*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
69*9880d681SAndroid Build Coastguard Worker;
70*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_00_03_00_00_00:
71*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
72*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %xmm1
73*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1]
74*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0
75*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
76*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0>
77*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
78*9880d681SAndroid Build Coastguard Worker}
79*9880d681SAndroid Build Coastguard Worker
80*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
81*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00:
82*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
83*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7]
84*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
85*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1]
86*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
87*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
88*9880d681SAndroid Build Coastguard Worker;
89*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_00_04_00_00_00_00:
90*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
91*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %xmm1
92*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1]
93*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0
94*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
95*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0>
96*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
97*9880d681SAndroid Build Coastguard Worker}
98*9880d681SAndroid Build Coastguard Worker
99*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
100*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00:
101*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
102*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7]
103*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
104*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1]
105*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
106*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
107*9880d681SAndroid Build Coastguard Worker;
108*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_00_05_00_00_00_00_00:
109*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
110*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %xmm1
111*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1]
112*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0
113*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
114*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0>
115*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
116*9880d681SAndroid Build Coastguard Worker}
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
119*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00:
120*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
121*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7]
122*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
123*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1]
124*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
125*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
126*9880d681SAndroid Build Coastguard Worker;
127*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_00_06_00_00_00_00_00_00:
128*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
129*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %xmm1
130*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1]
131*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0
132*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
133*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
134*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
135*9880d681SAndroid Build Coastguard Worker}
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
138*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:
139*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
140*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7]
141*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
142*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
143*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
144*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
145*9880d681SAndroid Build Coastguard Worker;
146*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:
147*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
148*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %xmm1
149*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
150*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0
151*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
152*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
153*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
154*9880d681SAndroid Build Coastguard Worker}
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
157*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:
158*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
159*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
160*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
161*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3]
162*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
163*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
164*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
165*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
166*9880d681SAndroid Build Coastguard Worker;
167*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_08_00_00_00_00_00_00_00_00:
168*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
169*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %xmm1
170*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3,0,1]
171*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]
172*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,0,1,1,4,4,5,5]
173*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
174*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm0
175*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
176*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
177*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
178*9880d681SAndroid Build Coastguard Worker}
179*9880d681SAndroid Build Coastguard Worker
180*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
181*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00:
182*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
183*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
184*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
185*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,0,1,0,1,0,1,0,1,6,7,0,1]
186*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
187*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
188*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
189*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
190*9880d681SAndroid Build Coastguard Worker;
191*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_09_00_00_00_00_00_00_00_00_00:
192*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
193*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1]
194*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} ymm2 = <0,0,255,255,u,u,u,u,u,u,u,u,u,u,u,u,255,255,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
195*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm0
196*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17]
197*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
198*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
199*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
200*9880d681SAndroid Build Coastguard Worker}
201*9880d681SAndroid Build Coastguard Worker
202*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
203*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00:
204*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
205*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
206*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
207*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,0,1,0,1,0,1,10,11,0,1,0,1]
208*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
209*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
210*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
211*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
212*9880d681SAndroid Build Coastguard Worker;
213*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_10_00_00_00_00_00_00_00_00_00_00:
214*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
215*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1]
216*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0],ymm1[1,2,3,4,5,6,7]
217*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17]
218*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
219*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 10, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
220*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
221*9880d681SAndroid Build Coastguard Worker}
222*9880d681SAndroid Build Coastguard Worker
223*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
224*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00:
225*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
226*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
227*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
228*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,0,1,0,1,14,15,0,1,0,1,0,1]
229*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
230*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
231*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
232*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
233*9880d681SAndroid Build Coastguard Worker;
234*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_11_00_00_00_00_00_00_00_00_00_00_00:
235*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
236*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1]
237*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0],ymm1[1,2,3,4,5,6,7]
238*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17]
239*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
240*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 11, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
241*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
242*9880d681SAndroid Build Coastguard Worker}
243*9880d681SAndroid Build Coastguard Worker
244*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
245*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00:
246*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
247*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
248*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm1[4,5,6,7]
249*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1]
250*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
251*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
252*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
253*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
254*9880d681SAndroid Build Coastguard Worker;
255*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_12_00_00_00_00_00_00_00_00_00_00_00_00:
256*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
257*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1]
258*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3,4,5,6,7]
259*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17]
260*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
261*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 12, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
262*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
263*9880d681SAndroid Build Coastguard Worker}
264*9880d681SAndroid Build Coastguard Worker
265*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
266*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00:
267*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
268*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
269*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm1[4,5,6,7]
270*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1]
271*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
272*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
273*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
274*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
275*9880d681SAndroid Build Coastguard Worker;
276*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_13_00_00_00_00_00_00_00_00_00_00_00_00_00:
277*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
278*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1]
279*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3,4,5,6,7]
280*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17]
281*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
282*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 13, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
283*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
284*9880d681SAndroid Build Coastguard Worker}
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
287*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:
288*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
289*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
290*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm1[4,5,6,7]
291*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1]
292*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
293*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
294*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
295*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
296*9880d681SAndroid Build Coastguard Worker;
297*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_14_00_00_00_00_00_00_00_00_00_00_00_00_00_00:
298*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
299*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1]
300*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3,4,5,6,7]
301*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17]
302*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
303*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 14, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
304*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
305*9880d681SAndroid Build Coastguard Worker}
306*9880d681SAndroid Build Coastguard Worker
307*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
308*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:
309*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
310*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
311*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm1[4,5,6,7]
312*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
313*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
314*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
315*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
316*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
317*9880d681SAndroid Build Coastguard Worker;
318*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_15_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:
319*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
320*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1]
321*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3,4,5,6,7]
322*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,16,17]
323*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
324*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
325*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
326*9880d681SAndroid Build Coastguard Worker}
327*9880d681SAndroid Build Coastguard Worker
328*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) {
329*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08:
330*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
331*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7]
332*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
333*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
334*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
335*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
336*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
337*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
338*9880d681SAndroid Build Coastguard Worker;
339*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08:
340*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
341*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]
342*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,0,1,1,4,4,5,5]
343*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
344*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>
345*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
346*9880d681SAndroid Build Coastguard Worker}
347*9880d681SAndroid Build Coastguard Worker
348*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_07_07_07_07_07_07_07_15_15_15_15_15_15_15_15(<16 x i16> %a, <16 x i16> %b) {
349*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_07_07_07_07_07_07_07_15_15_15_15_15_15_15_15:
350*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
351*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm0[0,1,2,3,7,7,7,7]
352*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
353*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
354*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,7,7,7]
355*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,2,3,3]
356*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
357*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
358*9880d681SAndroid Build Coastguard Worker;
359*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_07_07_07_07_07_07_07_15_15_15_15_15_15_15_15:
360*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
361*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15]
362*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,2,3,3,6,6,7,7]
363*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
364*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
365*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
366*9880d681SAndroid Build Coastguard Worker}
367*9880d681SAndroid Build Coastguard Worker
368*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) {
369*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12:
370*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
371*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7]
372*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
373*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
374*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
375*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
376*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
377*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
378*9880d681SAndroid Build Coastguard Worker;
379*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_04_08_08_08_08_12_12_12_12:
380*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
381*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]
382*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]
383*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
384*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4, i32 8, i32 8, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12>
385*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
386*9880d681SAndroid Build Coastguard Worker}
387*9880d681SAndroid Build Coastguard Worker
388*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_03_03_03_03_07_07_07_07_11_11_11_11_15_15_15_15(<16 x i16> %a, <16 x i16> %b) {
389*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_03_03_03_03_07_07_07_07_11_11_11_11_15_15_15_15:
390*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
391*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[3,3,3,3,4,5,6,7]
392*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,7,7,7]
393*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
394*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
395*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,7,7,7]
396*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
397*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
398*9880d681SAndroid Build Coastguard Worker;
399*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_03_03_03_03_07_07_07_07_11_11_11_11_15_15_15_15:
400*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
401*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[3,3,3,3,4,5,6,7,11,11,11,11,12,13,14,15]
402*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15]
403*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
404*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 3, i32 3, i32 3, i32 3, i32 7, i32 7, i32 7, i32 7, i32 11, i32 11, i32 11, i32 11, i32 15, i32 15, i32 15, i32 15>
405*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
406*9880d681SAndroid Build Coastguard Worker}
407*9880d681SAndroid Build Coastguard Worker
408*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_02_02_04_04_06_06_08_08_10_10_12_12_14_14(<16 x i16> %a, <16 x i16> %b) {
409*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_02_02_04_04_06_06_08_08_10_10_12_12_14_14:
410*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
411*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,2,2,4,5,6,7]
412*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,6,6]
413*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
414*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7]
415*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,6]
416*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
417*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
418*9880d681SAndroid Build Coastguard Worker;
419*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_02_02_04_04_06_06_08_08_10_10_12_12_14_14:
420*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
421*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,2,2,4,5,6,7,8,8,10,10,12,13,14,15]
422*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,4,6,6,8,9,10,11,12,12,14,14]
423*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
424*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
425*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
426*9880d681SAndroid Build Coastguard Worker}
427*9880d681SAndroid Build Coastguard Worker
428*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_01_03_03_05_05_07_07_09_09_11_11_13_13_15_15(<16 x i16> %a, <16 x i16> %b) {
429*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_01_03_03_05_05_07_07_09_09_11_11_13_13_15_15:
430*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
431*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[1,1,3,3,4,5,6,7]
432*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,7,7]
433*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
434*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[1,1,3,3,4,5,6,7]
435*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,7,7]
436*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
437*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
438*9880d681SAndroid Build Coastguard Worker;
439*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_01_03_03_05_05_07_07_09_09_11_11_13_13_15_15:
440*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
441*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[1,1,3,3,4,5,6,7,9,9,11,11,12,13,14,15]
442*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,5,7,7,8,9,10,11,13,13,15,15]
443*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
444*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
445*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
446*9880d681SAndroid Build Coastguard Worker}
447*9880d681SAndroid Build Coastguard Worker
448*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_01_00_00_00_00_00_00_00_01_00(<16 x i16> %a, <16 x i16> %b) {
449*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_01_00_00_00_00_00_00_00_01_00:
450*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
451*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1]
452*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
453*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
454*9880d681SAndroid Build Coastguard Worker;
455*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_01_00_00_00_00_00_00_00_01_00:
456*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
457*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1]
458*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
459*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
460*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0>
461*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
462*9880d681SAndroid Build Coastguard Worker}
463*9880d681SAndroid Build Coastguard Worker
464*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_02_00_00_00_00_00_00_00_02_00_00(<16 x i16> %a, <16 x i16> %b) {
465*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_02_00_00_00_00_00_00_00_02_00_00:
466*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
467*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1]
468*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
469*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
470*9880d681SAndroid Build Coastguard Worker;
471*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_02_00_00_00_00_00_00_00_02_00_00:
472*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
473*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1]
474*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
475*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
476*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0>
477*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
478*9880d681SAndroid Build Coastguard Worker}
479*9880d681SAndroid Build Coastguard Worker
480*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_03_00_00_00_00_00_00_00_03_00_00_00(<16 x i16> %a, <16 x i16> %b) {
481*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_03_00_00_00_00_00_00_00_03_00_00_00:
482*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
483*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1]
484*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
485*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
486*9880d681SAndroid Build Coastguard Worker;
487*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_03_00_00_00_00_00_00_00_03_00_00_00:
488*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
489*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1]
490*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
491*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
492*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0>
493*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
494*9880d681SAndroid Build Coastguard Worker}
495*9880d681SAndroid Build Coastguard Worker
496*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_04_00_00_00_00_00_00_00_04_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
497*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_04_00_00_00_00_00_00_00_04_00_00_00_00:
498*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
499*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1]
500*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
501*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
502*9880d681SAndroid Build Coastguard Worker;
503*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_04_00_00_00_00_00_00_00_04_00_00_00_00:
504*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
505*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1]
506*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
507*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
508*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0>
509*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
510*9880d681SAndroid Build Coastguard Worker}
511*9880d681SAndroid Build Coastguard Worker
512*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_05_00_00_00_00_00_00_00_05_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
513*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_05_00_00_00_00_00_00_00_05_00_00_00_00_00:
514*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
515*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1]
516*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
517*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
518*9880d681SAndroid Build Coastguard Worker;
519*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_05_00_00_00_00_00_00_00_05_00_00_00_00_00:
520*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
521*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1]
522*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
523*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
524*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0>
525*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
526*9880d681SAndroid Build Coastguard Worker}
527*9880d681SAndroid Build Coastguard Worker
528*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_06_00_00_00_00_00_00_00_06_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
529*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_06_00_00_00_00_00_00_00_06_00_00_00_00_00_00:
530*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
531*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1]
532*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
533*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
534*9880d681SAndroid Build Coastguard Worker;
535*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_06_00_00_00_00_00_00_00_06_00_00_00_00_00_00:
536*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
537*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1]
538*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
539*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
540*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
541*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
542*9880d681SAndroid Build Coastguard Worker}
543*9880d681SAndroid Build Coastguard Worker
544*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00(<16 x i16> %a, <16 x i16> %b) {
545*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:
546*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
547*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
548*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
549*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
550*9880d681SAndroid Build Coastguard Worker;
551*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_00_00_00_00_00_00_00_07_00_00_00_00_00_00_00:
552*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
553*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
554*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
555*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
556*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
557*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
558*9880d681SAndroid Build Coastguard Worker}
559*9880d681SAndroid Build Coastguard Worker
560*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_17_02_19_04_21_06_23_08_25_10_27_12_29_14_31(<16 x i16> %a, <16 x i16> %b) {
561*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_17_02_19_04_21_06_23_08_25_10_27_12_29_14_31:
562*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
563*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovaps {{.*#+}} ymm2 = [65535,0,65535,0,65535,0,65535,0,65535,0,65535,0,65535,0,65535,0]
564*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vandnps %ymm1, %ymm2, %ymm1
565*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vandps %ymm2, %ymm0, %ymm0
566*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vorps %ymm1, %ymm0, %ymm0
567*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
568*9880d681SAndroid Build Coastguard Worker;
569*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_17_02_19_04_21_06_23_08_25_10_27_12_29_14_31:
570*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
571*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]
572*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
573*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
574*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
575*9880d681SAndroid Build Coastguard Worker}
576*9880d681SAndroid Build Coastguard Worker
577*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_01_18_03_20_05_22_07_24_09_26_11_28_13_30_15(<16 x i16> %a, <16 x i16> %b) {
578*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_01_18_03_20_05_22_07_24_09_26_11_28_13_30_15:
579*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
580*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovaps {{.*#+}} ymm2 = [65535,0,65535,0,65535,0,65535,0,65535,0,65535,0,65535,0,65535,0]
581*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vandnps %ymm0, %ymm2, %ymm0
582*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vandps %ymm2, %ymm1, %ymm1
583*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vorps %ymm0, %ymm1, %ymm0
584*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
585*9880d681SAndroid Build Coastguard Worker;
586*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_01_18_03_20_05_22_07_24_09_26_11_28_13_30_15:
587*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
588*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4],ymm0[5],ymm1[6],ymm0[7],ymm1[8],ymm0[9],ymm1[10],ymm0[11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]
589*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
590*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 16, i32 1, i32 18, i32 3, i32 20, i32 5, i32 22, i32 7, i32 24, i32 9, i32 26, i32 11, i32 28, i32 13, i32 30, i32 15>
591*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
592*9880d681SAndroid Build Coastguard Worker}
593*9880d681SAndroid Build Coastguard Worker
594*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_18_19_04_05_22_23_08_09_26_27_12_13_30_31(<16 x i16> %a, <16 x i16> %b) {
595*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_18_19_04_05_22_23_08_09_26_27_12_13_30_31:
596*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
597*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7]
598*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
599*9880d681SAndroid Build Coastguard Worker;
600*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_18_19_04_05_22_23_08_09_26_27_12_13_30_31:
601*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
602*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7]
603*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
604*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 18, i32 19, i32 4, i32 5, i32 22, i32 23, i32 8, i32 9, i32 26, i32 27, i32 12, i32 13, i32 30, i32 31>
605*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
606*9880d681SAndroid Build Coastguard Worker}
607*9880d681SAndroid Build Coastguard Worker
608*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_17_18_19_04_05_06_07_24_25_26_27_12_13_14_15(<16 x i16> %a, <16 x i16> %b) {
609*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_17_18_19_04_05_06_07_24_25_26_27_12_13_14_15:
610*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
611*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
612*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
613*9880d681SAndroid Build Coastguard Worker;
614*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_17_18_19_04_05_06_07_24_25_26_27_12_13_14_15:
615*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
616*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
617*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
618*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 4, i32 5, i32 6, i32 7, i32 24, i32 25, i32 26, i32 27, i32 12, i32 13, i32 14, i32 15>
619*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
620*9880d681SAndroid Build Coastguard Worker}
621*9880d681SAndroid Build Coastguard Worker
622*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_31(<16 x i16> %a, <16 x i16> %b) {
623*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_31:
624*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
625*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovaps {{.*#+}} ymm2 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0]
626*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vandnps %ymm1, %ymm2, %ymm1
627*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vandps %ymm2, %ymm0, %ymm0
628*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vorps %ymm1, %ymm0, %ymm0
629*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
630*9880d681SAndroid Build Coastguard Worker;
631*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_31:
632*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
633*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} ymm2 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0]
634*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm0
635*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
636*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 31>
637*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
638*9880d681SAndroid Build Coastguard Worker}
639*9880d681SAndroid Build Coastguard Worker
640*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15(<16 x i16> %a, <16 x i16> %b) {
641*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15:
642*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
643*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovaps {{.*#+}} ymm2 = [0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535]
644*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vandnps %ymm1, %ymm2, %ymm1
645*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vandps %ymm2, %ymm0, %ymm0
646*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vorps %ymm1, %ymm0, %ymm0
647*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
648*9880d681SAndroid Build Coastguard Worker;
649*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_01_02_03_04_05_06_07_08_09_10_11_12_13_14_15:
650*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
651*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
652*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm0
653*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
654*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 16, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
655*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
656*9880d681SAndroid Build Coastguard Worker}
657*9880d681SAndroid Build Coastguard Worker
658*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_17_02_19_04_21_06_23_24_09_26_11_28_13_30_15(<16 x i16> %a, <16 x i16> %b) {
659*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_17_02_19_04_21_06_23_24_09_26_11_28_13_30_15:
660*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
661*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovaps {{.*#+}} ymm2 = [65535,0,65535,0,65535,0,65535,0,0,65535,0,65535,0,65535,0,65535]
662*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vandnps %ymm1, %ymm2, %ymm1
663*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vandps %ymm2, %ymm0, %ymm0
664*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vorps %ymm1, %ymm0, %ymm0
665*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
666*9880d681SAndroid Build Coastguard Worker;
667*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_17_02_19_04_21_06_23_24_09_26_11_28_13_30_15:
668*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
669*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} ymm2 = [255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255]
670*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm0
671*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
672*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 24, i32 9, i32 26, i32 11, i32 28, i32 13, i32 30, i32 15>
673*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
674*9880d681SAndroid Build Coastguard Worker}
675*9880d681SAndroid Build Coastguard Worker
676*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_01_18_03_20_05_22_07_08_25_10_27_12_29_14_31(<16 x i16> %a, <16 x i16> %b) {
677*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_01_18_03_20_05_22_07_08_25_10_27_12_29_14_31:
678*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
679*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovaps {{.*#+}} ymm2 = [0,65535,0,65535,0,65535,0,65535,65535,0,65535,0,65535,0,65535,0]
680*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vandnps %ymm1, %ymm2, %ymm1
681*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vandps %ymm2, %ymm0, %ymm0
682*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vorps %ymm1, %ymm0, %ymm0
683*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
684*9880d681SAndroid Build Coastguard Worker;
685*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_01_18_03_20_05_22_07_08_25_10_27_12_29_14_31:
686*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
687*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0]
688*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm0
689*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
690*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 16, i32 1, i32 18, i32 3, i32 20, i32 5, i32 22, i32 7, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
691*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
692*9880d681SAndroid Build Coastguard Worker}
693*9880d681SAndroid Build Coastguard Worker
694*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_18_19_20_21_06_07_08_09_26_27_12_13_30_31(<16 x i16> %a, <16 x i16> %b) {
695*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_18_19_20_21_06_07_08_09_26_27_12_13_30_31:
696*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
697*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0],ymm1[1,2],ymm0[3,4],ymm1[5],ymm0[6],ymm1[7]
698*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
699*9880d681SAndroid Build Coastguard Worker;
700*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_18_19_20_21_06_07_08_09_26_27_12_13_30_31:
701*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
702*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0],ymm1[1,2],ymm0[3,4],ymm1[5],ymm0[6],ymm1[7]
703*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
704*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 18, i32 19, i32 20, i32 21, i32 6, i32 7, i32 8, i32 9, i32 26, i32 27, i32 12, i32 13, i32 30, i32 31>
705*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
706*9880d681SAndroid Build Coastguard Worker}
707*9880d681SAndroid Build Coastguard Worker
708*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_00_16_00_16_00_16_00_16_00_16_00_16_00_16(<16 x i16> %a, <16 x i16> %b) {
709*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_00_16_00_16_00_16_00_16_00_16_00_16_00_16:
710*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
711*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
712*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
713*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
714*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
715*9880d681SAndroid Build Coastguard Worker;
716*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_00_16_00_16_00_16_00_16_00_16_00_16_00_16:
717*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
718*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
719*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastd %xmm0, %ymm0
720*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
721*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 0, i32 16>
722*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
723*9880d681SAndroid Build Coastguard Worker}
724*9880d681SAndroid Build Coastguard Worker
725*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_00_16_00_16_00_16_08_24_08_24_08_24_08_24(<16 x i16> %a, <16 x i16> %b) {
726*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_00_16_00_16_00_16_08_24_08_24_08_24_08_24:
727*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
728*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
729*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]
730*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm1
731*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
732*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
733*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
734*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm2, %ymm0
735*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
736*9880d681SAndroid Build Coastguard Worker;
737*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_00_16_00_16_00_16_08_24_08_24_08_24_08_24:
738*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
739*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4]
740*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm1 = ymm1[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]
741*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} ymm1 = ymm1[0,0,1,1,4,4,5,5]
742*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]
743*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
744*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 0, i32 16, i32 8, i32 24, i32 8, i32 24, i32 8, i32 24, i32 8, i32 24>
745*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
746*9880d681SAndroid Build Coastguard Worker}
747*9880d681SAndroid Build Coastguard Worker
748*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_16_16_16_04_05_06_07_24_24_24_24_12_13_14_15(<16 x i16> %a, <16 x i16> %b) {
749*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_16_16_16_04_05_06_07_24_24_24_24_12_13_14_15:
750*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
751*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
752*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[2,3,0,1]
753*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
754*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm3[0,0,0,0,4,5,6,7]
755*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]
756*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
757*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]
758*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
759*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
760*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
761*9880d681SAndroid Build Coastguard Worker;
762*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_16_16_16_04_05_06_07_24_24_24_24_12_13_14_15:
763*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
764*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm1 = ymm1[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]
765*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
766*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
767*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 16, i32 16, i32 16, i32 16, i32 4, i32 5, i32 6, i32 7, i32 24, i32 24, i32 24, i32 24, i32 12, i32 13, i32 14, i32 15>
768*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
769*9880d681SAndroid Build Coastguard Worker}
770*9880d681SAndroid Build Coastguard Worker
771*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_19_18_17_16_07_06_05_04_27_26_25_24_15_14_13_12(<16 x i16> %a, <16 x i16> %b) {
772*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_19_18_17_16_07_06_05_04_27_26_25_24_15_14_13_12:
773*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
774*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
775*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm2 = xmm2[3,2,1,0,4,5,6,7]
776*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
777*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,3,2,3]
778*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm3[3,2,1,0,4,5,6,7]
779*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
780*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[3,2,1,0,4,5,6,7]
781*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
782*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[3,2,1,0,4,5,6,7]
783*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
784*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
785*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
786*9880d681SAndroid Build Coastguard Worker;
787*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_19_18_17_16_07_06_05_04_27_26_25_24_15_14_13_12:
788*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
789*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
790*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[3,2,1,0,4,5,6,7,11,10,9,8,12,13,14,15]
791*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,7,6,5,4,8,9,10,11,15,14,13,12]
792*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
793*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 19, i32 18, i32 17, i32 16, i32 7, i32 6, i32 5, i32 4, i32 27, i32 26, i32 25, i32 24, i32 15, i32 14, i32 13, i32 12>
794*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
795*9880d681SAndroid Build Coastguard Worker}
796*9880d681SAndroid Build Coastguard Worker
797*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_19_18_17_16_03_02_01_00_27_26_25_24_11_10_09_08(<16 x i16> %a, <16 x i16> %b) {
798*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_19_18_17_16_03_02_01_00_27_26_25_24_11_10_09_08:
799*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
800*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
801*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
802*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
803*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm3 = [12,13,8,9,4,5,0,1,14,15,10,11,6,7,2,3]
804*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm3, %xmm2, %xmm2
805*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
806*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm3, %xmm0, %xmm0
807*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
808*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
809*9880d681SAndroid Build Coastguard Worker;
810*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_19_18_17_16_03_02_01_00_27_26_25_24_11_10_09_08:
811*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
812*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm1 = ymm1[3,2,1,0,4,5,6,7,11,10,9,8,12,13,14,15]
813*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,1,0,1,4,5,4,5]
814*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,7,6,5,4,8,9,10,11,15,14,13,12]
815*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
816*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
817*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 19, i32 18, i32 17, i32 16, i32 3, i32 2, i32 1, i32 0, i32 27, i32 26, i32 25, i32 24, i32 11, i32 10, i32 9, i32 8>
818*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
819*9880d681SAndroid Build Coastguard Worker}
820*9880d681SAndroid Build Coastguard Worker
821*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_01_00_08_08_08_08_08_08_09_08(<16 x i16> %a, <16 x i16> %b) {
822*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_01_00_08_08_08_08_08_08_09_08:
823*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
824*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
825*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1]
826*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
827*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
828*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
829*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
830*9880d681SAndroid Build Coastguard Worker;
831*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_01_00_08_08_08_08_08_08_09_08:
832*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
833*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1,16,17,16,17,16,17,16,17,16,17,16,17,18,19,16,17]
834*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
835*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 9, i32 8>
836*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
837*9880d681SAndroid Build Coastguard Worker}
838*9880d681SAndroid Build Coastguard Worker
839*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_02_00_00_08_08_08_08_08_10_08_08(<16 x i16> %a, <16 x i16> %b) {
840*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_02_00_00_08_08_08_08_08_10_08_08:
841*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
842*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
843*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1]
844*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
845*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
846*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
847*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
848*9880d681SAndroid Build Coastguard Worker;
849*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_02_00_00_08_08_08_08_08_10_08_08:
850*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
851*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1,16,17,16,17,16,17,16,17,16,17,20,21,16,17,16,17]
852*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
853*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 10, i32 8, i32 8>
854*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
855*9880d681SAndroid Build Coastguard Worker}
856*9880d681SAndroid Build Coastguard Worker
857*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_03_00_00_00_08_08_08_08_11_08_08_08(<16 x i16> %a, <16 x i16> %b) {
858*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_03_00_00_00_08_08_08_08_11_08_08_08:
859*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
860*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
861*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1]
862*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
863*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
864*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
865*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
866*9880d681SAndroid Build Coastguard Worker;
867*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_03_00_00_00_08_08_08_08_11_08_08_08:
868*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
869*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1,16,17,16,17,16,17,16,17,22,23,16,17,16,17,16,17]
870*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
871*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 11, i32 8, i32 8, i32 8>
872*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
873*9880d681SAndroid Build Coastguard Worker}
874*9880d681SAndroid Build Coastguard Worker
875*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_04_00_00_00_00_08_08_08_12_08_08_08_08(<16 x i16> %a, <16 x i16> %b) {
876*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_04_00_00_00_00_08_08_08_12_08_08_08_08:
877*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
878*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
879*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1]
880*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
881*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
882*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
883*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
884*9880d681SAndroid Build Coastguard Worker;
885*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_04_00_00_00_00_08_08_08_12_08_08_08_08:
886*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
887*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1,16,17,16,17,16,17,24,25,16,17,16,17,16,17,16,17]
888*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
889*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 12, i32 8, i32 8, i32 8, i32 8>
890*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
891*9880d681SAndroid Build Coastguard Worker}
892*9880d681SAndroid Build Coastguard Worker
893*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_05_00_00_00_00_00_08_08_13_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) {
894*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_05_00_00_00_00_00_08_08_13_08_08_08_08_08:
895*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
896*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
897*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1]
898*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
899*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
900*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
901*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
902*9880d681SAndroid Build Coastguard Worker;
903*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_05_00_00_00_00_00_08_08_13_08_08_08_08_08:
904*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
905*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1,16,17,16,17,26,27,16,17,16,17,16,17,16,17,16,17]
906*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
907*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 13, i32 8, i32 8, i32 8, i32 8, i32 8>
908*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
909*9880d681SAndroid Build Coastguard Worker}
910*9880d681SAndroid Build Coastguard Worker
911*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_06_00_00_00_00_00_00_08_14_08_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) {
912*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_06_00_00_00_00_00_00_08_14_08_08_08_08_08_08:
913*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
914*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
915*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1]
916*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
917*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
918*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
919*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
920*9880d681SAndroid Build Coastguard Worker;
921*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_06_00_00_00_00_00_00_08_14_08_08_08_08_08_08:
922*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
923*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1,16,17,28,29,16,17,16,17,16,17,16,17,16,17,16,17]
924*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
925*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 14, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>
926*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
927*9880d681SAndroid Build Coastguard Worker}
928*9880d681SAndroid Build Coastguard Worker
929*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_00_00_00_00_00_00_00_15_08_08_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) {
930*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_00_00_00_00_00_00_00_15_08_08_08_08_08_08_08:
931*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
932*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
933*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
934*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
935*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
936*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
937*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
938*9880d681SAndroid Build Coastguard Worker;
939*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_00_00_00_00_00_00_00_15_08_08_08_08_08_08_08:
940*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
941*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1,30,31,16,17,16,17,16,17,16,17,16,17,16,17,16,17]
942*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
943*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 15, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>
944*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
945*9880d681SAndroid Build Coastguard Worker}
946*9880d681SAndroid Build Coastguard Worker
947*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_01_17_02_18_03_19_08_24_09_25_10_26_11_27(<16 x i16> %a, <16 x i16> %b) {
948*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_19_08_24_09_25_10_26_11_27:
949*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
950*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
951*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
952*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
953*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
954*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
955*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
956*9880d681SAndroid Build Coastguard Worker;
957*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_19_08_24_09_25_10_26_11_27:
958*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
959*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11]
960*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
961*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27>
962*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
963*9880d681SAndroid Build Coastguard Worker}
964*9880d681SAndroid Build Coastguard Worker
965*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_20_05_21_06_22_07_23_12_28_13_29_14_30_15_31(<16 x i16> %a, <16 x i16> %b) {
966*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_20_05_21_06_22_07_23_12_28_13_29_14_30_15_31:
967*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
968*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
969*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
970*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm2 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
971*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
972*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
973*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
974*9880d681SAndroid Build Coastguard Worker;
975*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_20_05_21_06_22_07_23_12_28_13_29_14_30_15_31:
976*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
977*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpckhwd {{.*#+}} ymm0 = ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15]
978*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
979*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
980*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
981*9880d681SAndroid Build Coastguard Worker}
982*9880d681SAndroid Build Coastguard Worker
983*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_01_17_02_18_03_19_12_28_13_29_14_30_15_31(<16 x i16> %a, <16 x i16> %b) {
984*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_19_12_28_13_29_14_30_15_31:
985*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
986*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
987*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
988*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm2 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
989*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
990*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
991*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
992*9880d681SAndroid Build Coastguard Worker;
993*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_19_12_28_13_29_14_30_15_31:
994*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
995*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,0,1,u,u,2,3,u,u,4,5,u,u,6,7,u,u,24,25,u,u,26,27,u,u,28,29,u,u,30,31]
996*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,u,u,2,3,u,u,4,5,u,u,6,7,u,u,24,25,u,u,26,27,u,u,28,29,u,u,30,31,u,u]
997*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]
998*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
999*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1000*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1001*9880d681SAndroid Build Coastguard Worker}
1002*9880d681SAndroid Build Coastguard Worker
1003*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_20_05_21_06_22_07_23_08_24_09_25_10_26_11_27(<16 x i16> %a, <16 x i16> %b) {
1004*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_20_05_21_06_22_07_23_08_24_09_25_10_26_11_27:
1005*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1006*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
1007*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
1008*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
1009*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1010*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
1011*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1012*9880d681SAndroid Build Coastguard Worker;
1013*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_20_05_21_06_22_07_23_08_24_09_25_10_26_11_27:
1014*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1015*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,8,9,u,u,10,11,u,u,12,13,u,u,14,15,u,u,16,17,u,u,18,19,u,u,20,21,u,u,22,23]
1016*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[8,9,u,u,10,11,u,u,12,13,u,u,14,15,u,u,16,17,u,u,18,19,u,u,20,21,u,u,22,23,u,u]
1017*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]
1018*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1019*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27>
1020*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1021*9880d681SAndroid Build Coastguard Worker}
1022*9880d681SAndroid Build Coastguard Worker
1023*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_01_00_08_09_08_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) {
1024*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_01_00_08_09_08_08_08_08_08_08:
1025*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1026*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1]
1027*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1028*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,0,1,0,1,0,1,0,1,0,1,0,1]
1029*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1030*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1031*9880d681SAndroid Build Coastguard Worker;
1032*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_01_00_08_09_08_08_08_08_08_08:
1033*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1034*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,0,1,2,3,0,1,16,17,18,19,16,17,16,17,16,17,16,17,16,17,16,17]
1035*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1036*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 8, i32 9, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>
1037*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1038*9880d681SAndroid Build Coastguard Worker}
1039*9880d681SAndroid Build Coastguard Worker
1040*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_02_00_00_08_08_10_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) {
1041*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_02_00_00_08_08_10_08_08_08_08_08:
1042*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1043*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1]
1044*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1045*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,4,5,0,1,0,1,0,1,0,1,0,1]
1046*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1047*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1048*9880d681SAndroid Build Coastguard Worker;
1049*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_02_00_00_08_08_10_08_08_08_08_08:
1050*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1051*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,0,1,4,5,0,1,0,1,16,17,16,17,20,21,16,17,16,17,16,17,16,17,16,17]
1052*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1053*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 8, i32 8, i32 10, i32 8, i32 8, i32 8, i32 8, i32 8>
1054*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1055*9880d681SAndroid Build Coastguard Worker}
1056*9880d681SAndroid Build Coastguard Worker
1057*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_03_00_00_00_08_08_08_11_08_08_08_08(<16 x i16> %a, <16 x i16> %b) {
1058*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_03_00_00_00_08_08_08_11_08_08_08_08:
1059*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1060*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1]
1061*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1062*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,6,7,0,1,0,1,0,1,0,1]
1063*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1064*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1065*9880d681SAndroid Build Coastguard Worker;
1066*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_03_00_00_00_08_08_08_11_08_08_08_08:
1067*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1068*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,0,1,6,7,0,1,0,1,0,1,16,17,16,17,16,17,22,23,16,17,16,17,16,17,16,17]
1069*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1070*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 11, i32 8, i32 8, i32 8, i32 8>
1071*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1072*9880d681SAndroid Build Coastguard Worker}
1073*9880d681SAndroid Build Coastguard Worker
1074*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_04_00_00_00_00_08_08_08_08_12_08_08_08(<16 x i16> %a, <16 x i16> %b) {
1075*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_04_00_00_00_00_08_08_08_08_12_08_08_08:
1076*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1077*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1]
1078*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1079*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,8,9,0,1,0,1,0,1]
1080*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1081*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1082*9880d681SAndroid Build Coastguard Worker;
1083*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_04_00_00_00_00_08_08_08_08_12_08_08_08:
1084*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1085*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,0,1,8,9,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,24,25,16,17,16,17,16,17]
1086*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1087*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 12, i32 8, i32 8, i32 8>
1088*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1089*9880d681SAndroid Build Coastguard Worker}
1090*9880d681SAndroid Build Coastguard Worker
1091*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_05_00_00_00_00_00_08_08_08_08_08_13_08_08(<16 x i16> %a, <16 x i16> %b) {
1092*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_05_00_00_00_00_00_08_08_08_08_08_13_08_08:
1093*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1094*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1]
1095*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1096*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,10,11,0,1,0,1]
1097*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1098*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1099*9880d681SAndroid Build Coastguard Worker;
1100*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_05_00_00_00_00_00_08_08_08_08_08_13_08_08:
1101*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1102*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,10,11,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,26,27,16,17,16,17]
1103*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1104*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 13, i32 8, i32 8>
1105*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1106*9880d681SAndroid Build Coastguard Worker}
1107*9880d681SAndroid Build Coastguard Worker
1108*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_06_00_00_00_00_00_00_08_08_08_08_08_08_14_08(<16 x i16> %a, <16 x i16> %b) {
1109*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_06_00_00_00_00_00_00_08_08_08_08_08_08_14_08:
1110*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1111*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1]
1112*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1113*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,12,13,0,1]
1114*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1115*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1116*9880d681SAndroid Build Coastguard Worker;
1117*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_06_00_00_00_00_00_00_08_08_08_08_08_08_14_08:
1118*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1119*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,12,13,0,1,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,28,29,16,17]
1120*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1121*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 14, i32 8>
1122*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1123*9880d681SAndroid Build Coastguard Worker}
1124*9880d681SAndroid Build Coastguard Worker
1125*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_00_00_00_00_00_00_00_08_08_08_08_08_08_08_15(<16 x i16> %a, <16 x i16> %b) {
1126*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_00_00_00_00_00_00_00_08_08_08_08_08_08_08_15:
1127*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1128*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
1129*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1130*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,14,15]
1131*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1132*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1133*9880d681SAndroid Build Coastguard Worker;
1134*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_00_00_00_00_00_00_00_08_08_08_08_08_08_08_15:
1135*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1136*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[14,15,0,1,0,1,0,1,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,16,17,16,17,16,17,30,31]
1137*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1138*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 15>
1139*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1140*9880d681SAndroid Build Coastguard Worker}
1141*9880d681SAndroid Build Coastguard Worker
1142*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_02_02_04_04_06_06_14_14_12_12_10_10_08_08(<16 x i16> %a, <16 x i16> %b) {
1143*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_02_02_04_04_06_06_14_14_12_12_10_10_08_08:
1144*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1145*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,2,2,4,5,6,7]
1146*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,6,6]
1147*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1148*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12,13,12,13,8,9,8,9,4,5,4,5,0,1,0,1]
1149*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1150*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1151*9880d681SAndroid Build Coastguard Worker;
1152*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_02_02_04_04_06_06_14_14_12_12_10_10_08_08:
1153*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1154*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,0,1,4,5,4,5,8,9,8,9,12,13,12,13,28,29,28,29,24,25,24,25,20,21,20,21,16,17,16,17]
1155*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1156*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 14, i32 14, i32 12, i32 12, i32 10, i32 10, i32 8, i32 8>
1157*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1158*9880d681SAndroid Build Coastguard Worker}
1159*9880d681SAndroid Build Coastguard Worker
1160*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_04_04_04_00_00_00_00_08_08_08_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) {
1161*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_04_04_04_00_00_00_00_08_08_08_08_12_12_12_12:
1162*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1163*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[8,9,8,9,8,9,8,9,0,1,0,1,0,1,0,1]
1164*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1165*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
1166*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
1167*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1168*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1169*9880d681SAndroid Build Coastguard Worker;
1170*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_04_04_04_00_00_00_00_08_08_08_08_12_12_12_12:
1171*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1172*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[8,9,8,9,8,9,8,9,0,1,0,1,0,1,0,1,16,17,16,17,16,17,16,17,24,25,24,25,24,25,24,25]
1173*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1174*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 4, i32 4, i32 4, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12>
1175*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1176*9880d681SAndroid Build Coastguard Worker}
1177*9880d681SAndroid Build Coastguard Worker
1178*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_uu_uu_00_00_00_00_00_08_08_uu_uu_08_08_14_08(<16 x i16> %a, <16 x i16> %b) {
1179*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_uu_uu_00_00_00_00_00_08_08_uu_uu_08_08_14_08:
1180*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1181*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,0,0,0,4,5,6,7]
1182*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
1183*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1184*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,4,5,6,7,0,1,0,1,12,13,0,1]
1185*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1186*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1187*9880d681SAndroid Build Coastguard Worker;
1188*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_uu_uu_00_00_00_00_00_08_08_uu_uu_08_08_14_08:
1189*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1190*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,u,u,u,u,0,1,0,1,0,1,0,1,0,1,16,17,16,17,u,u,u,u,16,17,16,17,28,29,16,17]
1191*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1192*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 undef, i32 undef, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 undef, i32 undef, i32 8, i32 8, i32 14, i32 8>
1193*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1194*9880d681SAndroid Build Coastguard Worker}
1195*9880d681SAndroid Build Coastguard Worker
1196*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_uu_00_00_00_00_00_00_08_08_uu_uu_08_08_08_15(<16 x i16> %a, <16 x i16> %b) {
1197*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_uu_00_00_00_00_00_00_08_08_uu_uu_08_08_08_15:
1198*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1199*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[14,15,2,3,0,1,0,1,0,1,0,1,0,1,0,1]
1200*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1201*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,4,5,6,7,0,1,0,1,0,1,14,15]
1202*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1203*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1204*9880d681SAndroid Build Coastguard Worker;
1205*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_uu_00_00_00_00_00_00_08_08_uu_uu_08_08_08_15:
1206*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1207*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[14,15,u,u,0,1,0,1,0,1,0,1,0,1,0,1,16,17,16,17,u,u,u,u,16,17,16,17,16,17,30,31]
1208*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1209*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 undef, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 undef, i32 undef, i32 8, i32 8, i32 8, i32 15>
1210*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1211*9880d681SAndroid Build Coastguard Worker}
1212*9880d681SAndroid Build Coastguard Worker
1213*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_uu_uu_02_04_04_uu_06_14_14_uu_12_10_10_08_08(<16 x i16> %a, <16 x i16> %b) {
1214*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_uu_uu_02_04_04_uu_06_14_14_uu_12_10_10_08_08:
1215*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1216*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[0,1,2,2,4,5,6,7]
1217*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,6,6]
1218*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1219*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12,13,12,13,12,13,8,9,4,5,4,5,0,1,0,1]
1220*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1221*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1222*9880d681SAndroid Build Coastguard Worker;
1223*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_uu_uu_02_04_04_uu_06_14_14_uu_12_10_10_08_08:
1224*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1225*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,u,u,u,u,4,5,8,9,8,9,u,u,12,13,28,29,28,29,u,u,24,25,20,21,20,21,16,17,16,17]
1226*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1227*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 undef, i32 undef, i32 2, i32 4, i32 4, i32 undef, i32 6, i32 14, i32 14, i32 undef, i32 12, i32 10, i32 10, i32 8, i32 8>
1228*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1229*9880d681SAndroid Build Coastguard Worker}
1230*9880d681SAndroid Build Coastguard Worker
1231*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_04_04_04_uu_uu_uu_uu_08_08_08_uu_uu_12_12_12(<16 x i16> %a, <16 x i16> %b) {
1232*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_04_04_04_uu_uu_uu_uu_08_08_08_uu_uu_12_12_12:
1233*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1234*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,1,2,3]
1235*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]
1236*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1237*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,3,4,5,6,7]
1238*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
1239*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1240*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1241*9880d681SAndroid Build Coastguard Worker;
1242*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_04_04_04_uu_uu_uu_uu_08_08_08_uu_uu_12_12_12:
1243*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1244*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[8,9,8,9,8,9,8,9,u,u,u,u,u,u,u,u,16,17,16,17,16,17,u,u,u,u,24,25,24,25,24,25]
1245*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1246*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 4, i32 4, i32 4, i32 undef, i32 undef, i32 undef, i32 undef, i32 8, i32 8, i32 8, i32 undef, i32 undef, i32 12, i32 12, i32 12>
1247*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1248*9880d681SAndroid Build Coastguard Worker}
1249*9880d681SAndroid Build Coastguard Worker
1250*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_04_04_04_04_16_16_16_16_20_20_20_20(<16 x i16> %a, <16 x i16> %b) {
1251*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_04_16_16_16_16_20_20_20_20:
1252*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1253*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
1254*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
1255*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]
1256*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
1257*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1258*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1259*9880d681SAndroid Build Coastguard Worker;
1260*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_04_16_16_16_16_20_20_20_20:
1261*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1262*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1263*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]
1264*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]
1265*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1266*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4, i32 16, i32 16, i32 16, i32 16, i32 20, i32 20, i32 20, i32 20>
1267*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1268*9880d681SAndroid Build Coastguard Worker}
1269*9880d681SAndroid Build Coastguard Worker
1270*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_08_08_08_08_12_12_12_12_16_16_16_16_20_20_20_20(<16 x i16> %a, <16 x i16> %b) {
1271*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_08_08_08_08_12_12_12_12_16_16_16_16_20_20_20_20:
1272*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1273*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1274*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
1275*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
1276*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]
1277*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
1278*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1279*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1280*9880d681SAndroid Build Coastguard Worker;
1281*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_08_08_08_08_12_12_12_12_16_16_16_16_20_20_20_20:
1282*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1283*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[0,1]
1284*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]
1285*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]
1286*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1287*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 8, i32 8, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12, i32 16, i32 16, i32 16, i32 16, i32 20, i32 20, i32 20, i32 20>
1288*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1289*9880d681SAndroid Build Coastguard Worker}
1290*9880d681SAndroid Build Coastguard Worker
1291*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_08_08_08_08_12_12_12_12_24_24_24_24_28_28_28_28(<16 x i16> %a, <16 x i16> %b) {
1292*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_08_08_08_08_12_12_12_12_24_24_24_24_28_28_28_28:
1293*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1294*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1295*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
1296*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
1297*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm1
1298*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]
1299*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
1300*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1301*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1302*9880d681SAndroid Build Coastguard Worker;
1303*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_08_08_08_08_12_12_12_12_24_24_24_24_28_28_28_28:
1304*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1305*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3]
1306*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]
1307*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]
1308*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1309*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 8, i32 8, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12, i32 24, i32 24, i32 24, i32 24, i32 28, i32 28, i32 28, i32 28>
1310*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1311*9880d681SAndroid Build Coastguard Worker}
1312*9880d681SAndroid Build Coastguard Worker
1313*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_04_04_04_04_24_24_24_24_28_28_28_28(<16 x i16> %a, <16 x i16> %b) {
1314*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_04_24_24_24_24_28_28_28_28:
1315*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1316*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
1317*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
1318*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm1
1319*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]
1320*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
1321*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1322*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1323*9880d681SAndroid Build Coastguard Worker;
1324*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_04_24_24_24_24_28_28_28_28:
1325*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1326*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1327*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]
1328*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]
1329*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1330*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4, i32 24, i32 24, i32 24, i32 24, i32 28, i32 28, i32 28, i32 28>
1331*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1332*9880d681SAndroid Build Coastguard Worker}
1333*9880d681SAndroid Build Coastguard Worker
1334*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_01_17_02_18_03_19_04_20_05_21_06_22_07_23(<16 x i16> %a, <16 x i16> %b) {
1335*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_19_04_20_05_21_06_22_07_23:
1336*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1337*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm2 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1338*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1339*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
1340*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1341*9880d681SAndroid Build Coastguard Worker;
1342*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_19_04_20_05_21_06_22_07_23:
1343*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1344*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpckhwd {{.*#+}} xmm2 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1345*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1346*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm0
1347*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1348*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
1349*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1350*9880d681SAndroid Build Coastguard Worker}
1351*9880d681SAndroid Build Coastguard Worker
1352*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_zz_zz_zz_zz_zz_zz_zz_16_zz_zz_zz_zz_zz_zz_zz_24(<16 x i16> %a) {
1353*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_zz_zz_zz_zz_zz_zz_zz_16_zz_zz_zz_zz_zz_zz_zz_24:
1354*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1355*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1]
1356*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1357*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1]
1358*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1359*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1360*9880d681SAndroid Build Coastguard Worker;
1361*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_zz_zz_zz_zz_zz_zz_zz_16_zz_zz_zz_zz_zz_zz_zz_24:
1362*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1363*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpslldq {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[16,17]
1364*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1365*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> zeroinitializer, <16 x i16> %a, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 24>
1366*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1367*9880d681SAndroid Build Coastguard Worker}
1368*9880d681SAndroid Build Coastguard Worker
1369*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_17_18_19_20_21_22_23_zz_25_26_27_28_29_30_31_zz(<16 x i16> %a) {
1370*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_17_18_19_20_21_22_23_zz_25_26_27_28_29_30_31_zz:
1371*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1372*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrldq {{.*#+}} xmm1 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
1373*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1374*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
1375*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1376*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1377*9880d681SAndroid Build Coastguard Worker;
1378*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_17_18_19_20_21_22_23_zz_25_26_27_28_29_30_31_zz:
1379*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1380*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrldq {{.*#+}} ymm0 = ymm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero,ymm0[18,19,20,21,22,23,24,25,26,27,28,29,30,31],zero,zero
1381*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1382*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> zeroinitializer, <16 x i16> %a, <16 x i32> <i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 0, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 0>
1383*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1384*9880d681SAndroid Build Coastguard Worker}
1385*9880d681SAndroid Build Coastguard Worker
1386*9880d681SAndroid Build Coastguard Worker;
1387*9880d681SAndroid Build Coastguard Worker; Shuffle to logical bit shifts
1388*9880d681SAndroid Build Coastguard Worker;
1389*9880d681SAndroid Build Coastguard Worker
1390*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_zz_00_zz_02_zz_04_zz_06_zz_08_zz_10_zz_12_zz_14(<16 x i16> %a) {
1391*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_zz_00_zz_02_zz_04_zz_06_zz_08_zz_10_zz_12_zz_14:
1392*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1393*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslld $16, %xmm0, %xmm1
1394*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1395*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslld $16, %xmm0, %xmm0
1396*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1397*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1398*9880d681SAndroid Build Coastguard Worker;
1399*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_zz_00_zz_02_zz_04_zz_06_zz_08_zz_10_zz_12_zz_14:
1400*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1401*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpslld $16, %ymm0, %ymm0
1402*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1403*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> zeroinitializer, <16 x i32> <i32 16, i32 0, i32 16, i32 2, i32 16, i32 4, i32 16, i32 6, i32 16, i32 8, i32 16, i32 10, i32 16, i32 12, i32 16, i32 14>
1404*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1405*9880d681SAndroid Build Coastguard Worker}
1406*9880d681SAndroid Build Coastguard Worker
1407*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_zz_zz_zz_00_zz_zz_zz_04_zz_zz_zz_08_zz_zz_zz_12(<16 x i16> %a) {
1408*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_zz_zz_zz_00_zz_zz_zz_04_zz_zz_zz_08_zz_zz_zz_12:
1409*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1410*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $48, %xmm0, %xmm1
1411*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1412*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $48, %xmm0, %xmm0
1413*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1414*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1415*9880d681SAndroid Build Coastguard Worker;
1416*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_zz_zz_zz_00_zz_zz_zz_04_zz_zz_zz_08_zz_zz_zz_12:
1417*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1418*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllq $48, %ymm0, %ymm0
1419*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1420*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> zeroinitializer, <16 x i32> <i32 16, i32 16, i32 16, i32 0, i32 16, i32 16, i32 16, i32 4, i32 16, i32 16, i32 16, i32 8, i32 16, i32 16, i32 16, i32 12>
1421*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1422*9880d681SAndroid Build Coastguard Worker}
1423*9880d681SAndroid Build Coastguard Worker
1424*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz(<16 x i16> %a) {
1425*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz:
1426*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1427*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrld $16, %xmm0, %xmm1
1428*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1429*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrld $16, %xmm0, %xmm0
1430*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1431*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1432*9880d681SAndroid Build Coastguard Worker;
1433*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_zz_03_zz_05_zz_07_zz_09_zz_11_zz_13_zz_15_zz:
1434*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1435*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrld $16, %ymm0, %ymm0
1436*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1437*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> zeroinitializer, <16 x i32> <i32 1, i32 16, i32 3, i32 16, i32 5, i32 16, i32 7, i32 16, i32 9, i32 16, i32 11, i32 16, i32 13, i32 16, i32 15, i32 16>
1438*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1439*9880d681SAndroid Build Coastguard Worker}
1440*9880d681SAndroid Build Coastguard Worker
1441*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_03_zz_zz_06_07_zz_zz_10_11_zz_zz_14_15_zz_zz(<16 x i16> %a) {
1442*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_03_zz_zz_06_07_zz_zz_10_11_zz_zz_14_15_zz_zz:
1443*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1444*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vxorps %ymm1, %ymm1, %ymm1
1445*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]
1446*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpermilps {{.*#+}} ymm0 = ymm0[0,2,1,3,4,6,5,7]
1447*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1448*9880d681SAndroid Build Coastguard Worker;
1449*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_03_zz_zz_06_07_zz_zz_10_11_zz_zz_14_15_zz_zz:
1450*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1451*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrlq $32, %ymm0, %ymm0
1452*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1453*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> zeroinitializer, <16 x i32> <i32 2, i32 3, i32 16, i32 16, i32 6, i32 7, i32 16, i32 16, i32 10, i32 11, i32 16, i32 16, i32 14, i32 15, i32 16, i32 16>
1454*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1455*9880d681SAndroid Build Coastguard Worker}
1456*9880d681SAndroid Build Coastguard Worker
1457*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_zz_zz_zz_17_zz_zz_zz_18_zz_zz_zz_19_zz_zz_zz(<16 x i16> %a) {
1458*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_zz_zz_zz_17_zz_zz_zz_18_zz_zz_zz_19_zz_zz_zz:
1459*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1460*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
1461*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
1462*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
1463*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1464*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1465*9880d681SAndroid Build Coastguard Worker;
1466*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_zz_zz_zz_17_zz_zz_zz_18_zz_zz_zz_19_zz_zz_zz:
1467*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1468*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
1469*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1470*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> zeroinitializer, <16 x i16> %a, <16 x i32> <i32 16, i32 0, i32 0, i32 0, i32 17, i32 0, i32 0, i32 0, i32 18, i32 0, i32 0, i32 0, i32 19, i32 0, i32 0, i32 0>
1471*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1472*9880d681SAndroid Build Coastguard Worker}
1473*9880d681SAndroid Build Coastguard Worker
1474*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_zz_17_zz_18_zz_19_zz_20_zz_21_zz_22_zz_22_zz(<16 x i16> %a) {
1475*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_zz_17_zz_18_zz_19_zz_20_zz_21_zz_22_zz_22_zz:
1476*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1477*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1
1478*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1479*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
1480*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1481*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1482*9880d681SAndroid Build Coastguard Worker;
1483*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_zz_17_zz_18_zz_19_zz_20_zz_21_zz_22_zz_22_zz:
1484*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1485*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
1486*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1487*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> zeroinitializer, <16 x i16> %a, <16 x i32> <i32 16, i32 0, i32 17, i32 0, i32 18, i32 0, i32 19, i32 0, i32 20, i32 0, i32 21, i32 0, i32 22, i32 0, i32 23, i32 0>
1488*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1489*9880d681SAndroid Build Coastguard Worker}
1490*9880d681SAndroid Build Coastguard Worker
1491*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_23_00_01_02_03_04_05_06_31_08_09_10_11_12_13_14(<16 x i16> %a, <16 x i16> %b) {
1492*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_23_00_01_02_03_04_05_06_31_08_09_10_11_12_13_14:
1493*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1494*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
1495*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
1496*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[14,15],xmm3[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1497*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[14,15],xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1498*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
1499*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1500*9880d681SAndroid Build Coastguard Worker;
1501*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_23_00_01_02_03_04_05_06_31_08_09_10_11_12_13_14:
1502*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1503*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[14,15],ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13],ymm1[30,31],ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29]
1504*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1505*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 23, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 31, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14>
1506*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1507*9880d681SAndroid Build Coastguard Worker}
1508*9880d681SAndroid Build Coastguard Worker
1509*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_02_03_04_05_06_07_16_09_10_11_12_13_14_15_24(<16 x i16> %a, <16 x i16> %b) {
1510*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_02_03_04_05_06_07_16_09_10_11_12_13_14_15_24:
1511*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1512*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
1513*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
1514*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1]
1515*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1]
1516*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
1517*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1518*9880d681SAndroid Build Coastguard Worker;
1519*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_02_03_04_05_06_07_16_09_10_11_12_13_14_15_24:
1520*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1521*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1],ymm0[18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17]
1522*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1523*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 24>
1524*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1525*9880d681SAndroid Build Coastguard Worker}
1526*9880d681SAndroid Build Coastguard Worker
1527*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_17_18_19_20_21_22_23_00_25_26_27_28_29_30_31_8(<16 x i16> %a, <16 x i16> %b) {
1528*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_17_18_19_20_21_22_23_00_25_26_27_28_29_30_31_8:
1529*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1530*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
1531*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
1532*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1]
1533*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[2,3,4,5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1]
1534*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
1535*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1536*9880d681SAndroid Build Coastguard Worker;
1537*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_17_18_19_20_21_22_23_00_25_26_27_28_29_30_31_8:
1538*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1539*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1],ymm1[18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17]
1540*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1541*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 00, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 8>
1542*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1543*9880d681SAndroid Build Coastguard Worker}
1544*9880d681SAndroid Build Coastguard Worker
1545*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_16_17_18_19_20_21_22_15_24_25_26_27_28_29_30(<16 x i16> %a, <16 x i16> %b) {
1546*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_16_17_18_19_20_21_22_15_24_25_26_27_28_29_30:
1547*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1548*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
1549*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
1550*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[14,15],xmm3[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1551*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[14,15],xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1552*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
1553*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1554*9880d681SAndroid Build Coastguard Worker;
1555*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_16_17_18_19_20_21_22_15_24_25_26_27_28_29_30:
1556*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1557*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[14,15],ymm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13],ymm0[30,31],ymm1[16,17,18,19,20,21,22,23,24,25,26,27,28,29]
1558*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1559*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 15, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30>
1560*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1561*9880d681SAndroid Build Coastguard Worker}
1562*9880d681SAndroid Build Coastguard Worker
1563*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_02_03_04_05_06_07_00_17_18_19_20_21_22_23_16(<16 x i16> %a, <16 x i16> %b) {
1564*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_02_03_04_05_06_07_00_17_18_19_20_21_22_23_16:
1565*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1566*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1]
1567*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1]
1568*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1569*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1570*9880d681SAndroid Build Coastguard Worker;
1571*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_02_03_04_05_06_07_00_17_18_19_20_21_22_23_16:
1572*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1573*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1574*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,18,19,20,21,22,23,24,25,26,27,28,29,30,31,16,17]
1575*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1576*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 16>
1577*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1578*9880d681SAndroid Build Coastguard Worker}
1579*9880d681SAndroid Build Coastguard Worker
1580*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_00_01_02_03_04_05_06_23_16_17_18_19_20_21_22(<16 x i16> %a, <16 x i16> %b) {
1581*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_00_01_02_03_04_05_06_23_16_17_18_19_20_21_22:
1582*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1583*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1584*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1585*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1586*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1587*9880d681SAndroid Build Coastguard Worker;
1588*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_00_01_02_03_04_05_06_23_16_17_18_19_20_21_22:
1589*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1590*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1591*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,30,31,16,17,18,19,20,21,22,23,24,25,26,27,28,29]
1592*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1593*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 23, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22>
1594*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1595*9880d681SAndroid Build Coastguard Worker}
1596*9880d681SAndroid Build Coastguard Worker
1597*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_00_01_02_03_02_11_08_09_08_09_10_11_10_11(<16 x i16> %a, <16 x i16> %b) {
1598*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_00_01_02_03_02_11_08_09_08_09_10_11_10_11:
1599*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1600*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1601*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1602*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,2,0,2,4,5,6,7]
1603*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,4,7]
1604*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
1605*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1606*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1607*9880d681SAndroid Build Coastguard Worker;
1608*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_00_01_02_03_02_11_08_09_08_09_10_11_10_11:
1609*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1610*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1611*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1612*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,2,0,2,4,5,6,7]
1613*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,4,7]
1614*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
1615*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1616*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1617*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 2, i32 3, i32 2, i32 11, i32 8, i32 9, i32 8, i32 9, i32 10, i32 11, i32 10, i32 11>
1618*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1619*9880d681SAndroid Build Coastguard Worker}
1620*9880d681SAndroid Build Coastguard Worker
1621*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_06_07_04_05_02_03_00_09_14_15_12_13_10_11_08_09(<16 x i16> %a, <16 x i16> %b) {
1622*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_06_07_04_05_02_03_00_09_14_15_12_13_10_11_08_09:
1623*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1624*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1625*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6,7]
1626*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[3,2,1,0]
1627*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[3,2,1,0]
1628*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1629*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1630*9880d681SAndroid Build Coastguard Worker;
1631*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_06_07_04_05_02_03_00_09_14_15_12_13_10_11_08_09:
1632*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1633*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1634*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6,7]
1635*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[3,2,1,0]
1636*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[3,2,1,0]
1637*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1638*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1639*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 6, i32 7, i32 4, i32 5, i32 2, i32 3, i32 0, i32 9, i32 14, i32 15, i32 12, i32 13, i32 10, i32 11, i32 8, i32 9>
1640*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1641*9880d681SAndroid Build Coastguard Worker}
1642*9880d681SAndroid Build Coastguard Worker
1643*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_05_06_07_16_17_18_27_12_13_14_15_24_25_26_27(<16 x i16> %a, <16 x i16> %b) {
1644*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_05_06_07_16_17_18_27_12_13_14_15_24_25_26_27:
1645*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1646*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
1647*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
1648*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4,5,6,7]
1649*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]
1650*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,4,5,4,5,6,7,0,1,4,5,8,9,14,15]
1651*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]
1652*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
1653*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1654*9880d681SAndroid Build Coastguard Worker;
1655*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_05_06_07_16_17_18_27_12_13_14_15_24_25_26_27:
1656*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1657*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1658*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1659*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
1660*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
1661*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
1662*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1663*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1664*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 27, i32 12, i32 13, i32 14, i32 15, i32 24, i32 25, i32 26, i32 27>
1665*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1666*9880d681SAndroid Build Coastguard Worker}
1667*9880d681SAndroid Build Coastguard Worker
1668*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) {
1669*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_08:
1670*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1671*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1672*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1673*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3]
1674*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]
1675*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
1676*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1677*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1678*9880d681SAndroid Build Coastguard Worker;
1679*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_00_00_00_08_08_08_08_08_08_08_08_08:
1680*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1681*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1682*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1683*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3]
1684*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm1, %xmm1
1685*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1686*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1687*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>
1688*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1689*9880d681SAndroid Build Coastguard Worker}
1690*9880d681SAndroid Build Coastguard Worker
1691*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_00_00_04_04_04_12_08_08_08_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) {
1692*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_12_08_08_08_08_12_12_12_12:
1693*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1694*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1695*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $48, %xmm1, %xmm2
1696*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
1697*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,7]
1698*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
1699*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]
1700*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
1701*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1702*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1703*9880d681SAndroid Build Coastguard Worker;
1704*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_00_00_04_04_04_12_08_08_08_08_12_12_12_12:
1705*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1706*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1707*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllq $48, %xmm1, %xmm2
1708*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
1709*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,7]
1710*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
1711*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]
1712*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
1713*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1714*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1715*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 12, i32 8, i32 8, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12>
1716*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1717*9880d681SAndroid Build Coastguard Worker}
1718*9880d681SAndroid Build Coastguard Worker
1719*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_00_uu_01_uu_02_uu_11_uu_08_uu_09_uu_10_uu_11(<16 x i16> %a, <16 x i16> %b) {
1720*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_00_uu_01_uu_02_uu_11_uu_08_uu_09_uu_10_uu_11:
1721*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1722*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1723*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1724*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1725*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7]
1726*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,7]
1727*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
1728*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1729*9880d681SAndroid Build Coastguard Worker;
1730*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_00_uu_01_uu_02_uu_11_uu_08_uu_09_uu_10_uu_11:
1731*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1732*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1733*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1734*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1735*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7]
1736*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,7]
1737*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm0
1738*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1739*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 0, i32 undef, i32 1, i32 undef, i32 2, i32 undef, i32 11, i32 undef, i32 8, i32 undef, i32 9, i32 undef, i32 10, i32 undef, i32 11>
1740*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1741*9880d681SAndroid Build Coastguard Worker}
1742*9880d681SAndroid Build Coastguard Worker
1743*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_04_uu_05_uu_06_uu_15_uu_12_uu_13_uu_14_uu_15(<16 x i16> %a, <16 x i16> %b) {
1744*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_04_uu_05_uu_06_uu_15_uu_12_uu_13_uu_14_uu_15:
1745*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1746*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1747*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm2 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1748*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1749*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7]
1750*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,7]
1751*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
1752*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1753*9880d681SAndroid Build Coastguard Worker;
1754*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_04_uu_05_uu_06_uu_15_uu_12_uu_13_uu_14_uu_15:
1755*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1756*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1757*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpckhwd {{.*#+}} xmm2 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1758*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1759*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7]
1760*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,7]
1761*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm0
1762*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1763*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 4, i32 undef, i32 5, i32 undef, i32 6, i32 undef, i32 15, i32 undef, i32 12, i32 undef, i32 13, i32 undef, i32 14, i32 undef, i32 15>
1764*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1765*9880d681SAndroid Build Coastguard Worker}
1766*9880d681SAndroid Build Coastguard Worker
1767*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_03_01_02_00_06_07_04_13_11_09_10_08_14_15_12_13(<16 x i16> %a, <16 x i16> %b) {
1768*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_03_01_02_00_06_07_04_13_11_09_10_08_14_15_12_13:
1769*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1770*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1771*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7]
1772*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[3,1,2,0,4,5,6,7]
1773*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,3,2]
1774*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[3,1,2,0,4,5,6,7]
1775*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,1,3,2]
1776*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1777*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1778*9880d681SAndroid Build Coastguard Worker;
1779*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_03_01_02_00_06_07_04_13_11_09_10_08_14_15_12_13:
1780*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1781*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1782*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7]
1783*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[3,1,2,0,4,5,6,7]
1784*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,3,2]
1785*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[3,1,2,0,4,5,6,7]
1786*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,1,3,2]
1787*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1788*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1789*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 3, i32 1, i32 2, i32 0, i32 6, i32 7, i32 4, i32 13, i32 11, i32 9, i32 10, i32 8, i32 14, i32 15, i32 12, i32 13>
1790*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1791*9880d681SAndroid Build Coastguard Worker}
1792*9880d681SAndroid Build Coastguard Worker
1793*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_04_04_04_00_00_00_08_12_12_12_12_08_08_08_08(<16 x i16> %a, <16 x i16> %b) {
1794*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_04_04_04_00_00_00_08_12_12_12_12_08_08_08_08:
1795*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1796*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1797*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1]
1798*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,8,9,0,1,0,1,0,1,14,15]
1799*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
1800*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,8,9,8,9,8,9,0,1,0,1,0,1,0,1]
1801*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1802*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1803*9880d681SAndroid Build Coastguard Worker;
1804*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_04_04_04_00_00_00_08_12_12_12_12_08_08_08_08:
1805*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1806*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1807*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm1, %xmm2
1808*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,8,9,0,1,0,1,0,1,14,15]
1809*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
1810*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,8,9,8,9,8,9,0,1,0,1,0,1,0,1]
1811*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1812*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1813*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 4, i32 4, i32 4, i32 0, i32 0, i32 0, i32 8, i32 12, i32 12, i32 12, i32 12, i32 8, i32 8, i32 8, i32 8>
1814*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1815*9880d681SAndroid Build Coastguard Worker}
1816*9880d681SAndroid Build Coastguard Worker
1817*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_03_00_01_06_07_04_13_10_11_08_09_14_15_12_13(<16 x i16> %a, <16 x i16> %b) {
1818*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_03_00_01_06_07_04_13_10_11_08_09_14_15_12_13:
1819*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1820*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1821*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7]
1822*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,0,3,2]
1823*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,0,3,2]
1824*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1825*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1826*9880d681SAndroid Build Coastguard Worker;
1827*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_03_00_01_06_07_04_13_10_11_08_09_14_15_12_13:
1828*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1829*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1830*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7]
1831*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,0,3,2]
1832*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,0,3,2]
1833*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1834*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1835*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 2, i32 3, i32 0, i32 1, i32 6, i32 7, i32 4, i32 13, i32 10, i32 11, i32 8, i32 9, i32 14, i32 15, i32 12, i32 13>
1836*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1837*9880d681SAndroid Build Coastguard Worker}
1838*9880d681SAndroid Build Coastguard Worker
1839*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_03_00_02_06_07_04_13_10_11_08_10_14_15_12_13(<16 x i16> %a, <16 x i16> %b) {
1840*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_03_00_02_06_07_04_13_10_11_08_10_14_15_12_13:
1841*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1842*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1843*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7]
1844*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[2,3,0,2,4,5,6,7]
1845*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,3,2]
1846*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[2,3,0,2,4,5,6,7]
1847*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,1,3,2]
1848*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1849*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1850*9880d681SAndroid Build Coastguard Worker;
1851*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_03_00_02_06_07_04_13_10_11_08_10_14_15_12_13:
1852*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1853*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1854*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7]
1855*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[2,3,0,2,4,5,6,7]
1856*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,3,2]
1857*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[2,3,0,2,4,5,6,7]
1858*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,1,3,2]
1859*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1860*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1861*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 2, i32 3, i32 0, i32 2, i32 6, i32 7, i32 4, i32 13, i32 10, i32 11, i32 8, i32 10, i32 14, i32 15, i32 12, i32 13>
1862*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1863*9880d681SAndroid Build Coastguard Worker}
1864*9880d681SAndroid Build Coastguard Worker
1865*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_03_00_01_06_07_04_15_10_11_08_09_14_15_12_15(<16 x i16> %a, <16 x i16> %b) {
1866*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_03_00_01_06_07_04_15_10_11_08_09_14_15_12_15:
1867*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1868*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1869*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,0,3,2]
1870*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7]
1871*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,0,2,3]
1872*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,7,4,7]
1873*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1874*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1875*9880d681SAndroid Build Coastguard Worker;
1876*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_03_00_01_06_07_04_15_10_11_08_09_14_15_12_15:
1877*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1878*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1879*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,0,3,2]
1880*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7]
1881*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,0,2,3]
1882*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,7,4,7]
1883*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1884*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1885*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 2, i32 3, i32 0, i32 1, i32 6, i32 7, i32 4, i32 15, i32 10, i32 11, i32 8, i32 9, i32 14, i32 15, i32 12, i32 15>
1886*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1887*9880d681SAndroid Build Coastguard Worker}
1888*9880d681SAndroid Build Coastguard Worker
1889*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_07_05_06_04_03_01_02_08_15_13_14_12_11_09_10_08(<16 x i16> %a, <16 x i16> %b) {
1890*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_07_05_06_04_03_01_02_08_15_13_14_12_11_09_10_08:
1891*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1892*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1893*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [14,15,10,11,12,13,8,9,6,7,2,3,4,5,0,1]
1894*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
1895*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4,5,6,7]
1896*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
1897*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
1898*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1899*9880d681SAndroid Build Coastguard Worker;
1900*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_07_05_06_04_03_01_02_08_15_13_14_12_11_09_10_08:
1901*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1902*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1903*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [14,15,10,11,12,13,8,9,6,7,2,3,4,5,0,1]
1904*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
1905*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4,5,6,7]
1906*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
1907*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm0
1908*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1909*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 7, i32 5, i32 6, i32 4, i32 3, i32 1, i32 2, i32 8, i32 15, i32 13, i32 14, i32 12, i32 11, i32 9, i32 10, i32 8>
1910*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1911*9880d681SAndroid Build Coastguard Worker}
1912*9880d681SAndroid Build Coastguard Worker
1913*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_00_05_04_05_04_01_08_09_08_13_12_13_12_09_08(<16 x i16> %a, <16 x i16> %b) {
1914*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_00_05_04_05_04_01_08_09_08_13_12_13_12_09_08:
1915*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1916*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1917*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1]
1918*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[2,3,0,1,10,11,8,9,10,11,8,9,2,3,2,3]
1919*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
1920*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[2,3,0,1,10,11,8,9,10,11,8,9,2,3,0,1]
1921*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1922*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1923*9880d681SAndroid Build Coastguard Worker;
1924*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_00_05_04_05_04_01_08_09_08_13_12_13_12_09_08:
1925*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1926*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1927*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm1, %xmm2
1928*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[2,3,0,1,10,11,8,9,10,11,8,9,2,3,2,3]
1929*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
1930*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[2,3,0,1,10,11,8,9,10,11,8,9,2,3,0,1]
1931*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1932*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1933*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 1, i32 0, i32 5, i32 4, i32 5, i32 4, i32 1, i32 8, i32 9, i32 8, i32 13, i32 12, i32 13, i32 12, i32 9, i32 8>
1934*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1935*9880d681SAndroid Build Coastguard Worker}
1936*9880d681SAndroid Build Coastguard Worker
1937*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_05_04_01_00_05_04_01_08_13_12_09_08_13_12_09_08(<16 x i16> %a, <16 x i16> %b) {
1938*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_05_04_01_00_05_04_01_08_13_12_09_08_13_12_09_08:
1939*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1940*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1941*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1]
1942*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,10,11,8,9,2,3,2,3]
1943*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
1944*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[10,11,8,9,2,3,0,1,10,11,8,9,2,3,0,1]
1945*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1946*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1947*9880d681SAndroid Build Coastguard Worker;
1948*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_05_04_01_00_05_04_01_08_13_12_09_08_13_12_09_08:
1949*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1950*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1951*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm1, %xmm2
1952*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,10,11,8,9,2,3,2,3]
1953*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
1954*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[10,11,8,9,2,3,0,1,10,11,8,9,2,3,0,1]
1955*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1956*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1957*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 5, i32 4, i32 1, i32 0, i32 5, i32 4, i32 1, i32 8, i32 13, i32 12, i32 9, i32 8, i32 13, i32 12, i32 9, i32 8>
1958*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1959*9880d681SAndroid Build Coastguard Worker}
1960*9880d681SAndroid Build Coastguard Worker
1961*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_05_04_01_00_01_00_05_12_13_12_09_08_09_08_13_12(<16 x i16> %a, <16 x i16> %b) {
1962*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_05_04_01_00_01_00_05_12_13_12_09_08_09_08_13_12:
1963*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1964*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1965*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $48, %xmm1, %xmm2
1966*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,2,3,0,1,10,11,2,3]
1967*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
1968*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[10,11,8,9,2,3,0,1,2,3,0,1,10,11,8,9]
1969*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1970*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1971*9880d681SAndroid Build Coastguard Worker;
1972*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_05_04_01_00_01_00_05_12_13_12_09_08_09_08_13_12:
1973*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1974*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1975*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllq $48, %xmm1, %xmm2
1976*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[10,11,8,9,2,3,0,1,2,3,0,1,10,11,2,3]
1977*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
1978*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[10,11,8,9,2,3,0,1,2,3,0,1,10,11,8,9]
1979*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
1980*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1981*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 5, i32 4, i32 1, i32 0, i32 1, i32 0, i32 5, i32 12, i32 13, i32 12, i32 9, i32 8, i32 9, i32 8, i32 13, i32 12>
1982*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
1983*9880d681SAndroid Build Coastguard Worker}
1984*9880d681SAndroid Build Coastguard Worker
1985*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_04_04_00_00_04_04_08_08_12_12_08_08_12_12_08(<16 x i16> %a, <16 x i16> %b) {
1986*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_04_04_00_00_04_04_08_08_12_12_08_08_12_12_08:
1987*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
1988*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
1989*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1]
1990*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,8,9,8,9,2,3]
1991*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
1992*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,0,1,8,9,8,9,0,1]
1993*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1994*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1995*9880d681SAndroid Build Coastguard Worker;
1996*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_04_04_00_00_04_04_08_08_12_12_08_08_12_12_08:
1997*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
1998*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
1999*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm1, %xmm2
2000*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,8,9,8,9,2,3]
2001*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2002*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,0,1,8,9,8,9,0,1]
2003*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2004*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2005*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 4, i32 4, i32 0, i32 0, i32 4, i32 4, i32 8, i32 8, i32 12, i32 12, i32 8, i32 8, i32 12, i32 12, i32 8>
2006*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2007*9880d681SAndroid Build Coastguard Worker}
2008*9880d681SAndroid Build Coastguard Worker
2009*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_00_00_04_04_00_00_12_12_08_08_12_12_08_08_12(<16 x i16> %a, <16 x i16> %b) {
2010*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_00_00_04_04_00_00_12_12_08_08_12_12_08_08_12:
2011*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2012*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2013*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $48, %xmm1, %xmm2
2014*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,0,1,0,1,8,9,8,9,0,1,0,1,2,3]
2015*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2016*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,0,1,0,1,8,9,8,9,0,1,0,1,8,9]
2017*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2018*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2019*9880d681SAndroid Build Coastguard Worker;
2020*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_00_00_04_04_00_00_12_12_08_08_12_12_08_08_12:
2021*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2022*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2023*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllq $48, %xmm1, %xmm2
2024*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,0,1,0,1,8,9,8,9,0,1,0,1,2,3]
2025*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2026*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,0,1,0,1,8,9,8,9,0,1,0,1,8,9]
2027*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2028*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2029*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 0, i32 0, i32 4, i32 4, i32 0, i32 0, i32 12, i32 12, i32 8, i32 8, i32 12, i32 12, i32 8, i32 8, i32 12>
2030*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2031*9880d681SAndroid Build Coastguard Worker}
2032*9880d681SAndroid Build Coastguard Worker
2033*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_06_04_00_05_01_07_11_10_14_12_08_13_09_15_11(<16 x i16> %a, <16 x i16> %b) {
2034*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_06_04_00_05_01_07_11_10_14_12_08_13_09_15_11:
2035*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2036*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2037*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [4,5,12,13,8,9,0,1,10,11,2,3,14,15,6,7]
2038*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
2039*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
2040*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2041*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2042*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2043*9880d681SAndroid Build Coastguard Worker;
2044*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_06_04_00_05_01_07_11_10_14_12_08_13_09_15_11:
2045*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2046*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2047*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [4,5,12,13,8,9,0,1,10,11,2,3,14,15,6,7]
2048*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
2049*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
2050*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2051*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm0
2052*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2053*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 2, i32 6, i32 4, i32 0, i32 5, i32 1, i32 7, i32 11, i32 10, i32 14, i32 12, i32 8, i32 13, i32 9, i32 15, i32 11>
2054*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2055*9880d681SAndroid Build Coastguard Worker}
2056*9880d681SAndroid Build Coastguard Worker
2057*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_00_06_04_05_01_07_11_10_08_14_12_13_09_15_11(<16 x i16> %a, <16 x i16> %b) {
2058*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_00_06_04_05_01_07_11_10_08_14_12_13_09_15_11:
2059*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2060*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2061*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [4,5,0,1,12,13,8,9,10,11,2,3,14,15,6,7]
2062*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
2063*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
2064*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2065*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2066*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2067*9880d681SAndroid Build Coastguard Worker;
2068*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_00_06_04_05_01_07_11_10_08_14_12_13_09_15_11:
2069*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2070*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2071*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [4,5,0,1,12,13,8,9,10,11,2,3,14,15,6,7]
2072*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
2073*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
2074*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2075*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm0
2076*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2077*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 2, i32 0, i32 6, i32 4, i32 5, i32 1, i32 7, i32 11, i32 10, i32 8, i32 14, i32 12, i32 13, i32 9, i32 15, i32 11>
2078*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2079*9880d681SAndroid Build Coastguard Worker}
2080*9880d681SAndroid Build Coastguard Worker
2081*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_02_06_04_00_01_03_07_13_10_14_12_08_09_11_15_13(<16 x i16> %a, <16 x i16> %b) {
2082*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_02_06_04_00_01_03_07_13_10_14_12_08_09_11_15_13:
2083*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2084*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2085*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [4,5,12,13,8,9,0,1,2,3,6,7,14,15,10,11]
2086*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
2087*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7]
2088*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2089*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2090*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2091*9880d681SAndroid Build Coastguard Worker;
2092*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_02_06_04_00_01_03_07_13_10_14_12_08_09_11_15_13:
2093*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2094*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2095*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [4,5,12,13,8,9,0,1,2,3,6,7,14,15,10,11]
2096*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
2097*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7]
2098*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2099*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm0
2100*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2101*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 2, i32 6, i32 4, i32 0, i32 1, i32 3, i32 7, i32 13, i32 10, i32 14, i32 12, i32 8, i32 9, i32 11, i32 15, i32 13>
2102*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2103*9880d681SAndroid Build Coastguard Worker}
2104*9880d681SAndroid Build Coastguard Worker
2105*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_06_06_07_05_01_06_04_11_14_14_15_13_09_14_12_11(<16 x i16> %a, <16 x i16> %b) {
2106*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_06_06_07_05_01_06_04_11_14_14_15_13_09_14_12_11:
2107*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2108*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2109*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [12,13,12,13,14,15,10,11,2,3,12,13,8,9,6,7]
2110*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
2111*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5,6,7]
2112*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2113*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2114*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2115*9880d681SAndroid Build Coastguard Worker;
2116*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_06_06_07_05_01_06_04_11_14_14_15_13_09_14_12_11:
2117*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2118*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2119*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [12,13,12,13,14,15,10,11,2,3,12,13,8,9,6,7]
2120*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
2121*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3]
2122*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2123*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm0
2124*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2125*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 6, i32 6, i32 7, i32 5, i32 1, i32 6, i32 4, i32 11, i32 14, i32 14, i32 15, i32 13, i32 9, i32 14, i32 12, i32 11>
2126*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2127*9880d681SAndroid Build Coastguard Worker}
2128*9880d681SAndroid Build Coastguard Worker
2129*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_00_04_04_04_04_04_12_08_08_12_12_12_12_12_12(<16 x i16> %a, <16 x i16> %b) {
2130*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_00_04_04_04_04_04_12_08_08_12_12_12_12_12_12:
2131*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2132*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2133*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $48, %xmm1, %xmm2
2134*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,8,9,8,9,8,9,8,9,8,9,14,15]
2135*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2136*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,8,9,8,9,8,9,8,9,8,9,8,9]
2137*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2138*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2139*9880d681SAndroid Build Coastguard Worker;
2140*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_00_04_04_04_04_04_12_08_08_12_12_12_12_12_12:
2141*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2142*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2143*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllq $48, %xmm1, %xmm2
2144*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,8,9,8,9,8,9,8,9,8,9,14,15]
2145*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2146*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,0,1,8,9,8,9,8,9,8,9,8,9,8,9]
2147*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2148*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2149*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 0, i32 4, i32 4, i32 4, i32 4, i32 4, i32 12, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12>
2150*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2151*9880d681SAndroid Build Coastguard Worker}
2152*9880d681SAndroid Build Coastguard Worker
2153*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_04_00_00_04_04_04_12_12_12_08_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) {
2154*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_04_00_00_04_04_04_12_12_12_08_08_12_12_12_12:
2155*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2156*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2157*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $48, %xmm1, %xmm2
2158*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,0,1,0,1,8,9,8,9,8,9,14,15]
2159*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2160*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,8,9,0,1,0,1,8,9,8,9,8,9,8,9]
2161*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2162*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2163*9880d681SAndroid Build Coastguard Worker;
2164*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_04_00_00_04_04_04_12_12_12_08_08_12_12_12_12:
2165*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2166*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2167*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllq $48, %xmm1, %xmm2
2168*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,0,1,0,1,8,9,8,9,8,9,14,15]
2169*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2170*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,8,9,0,1,0,1,8,9,8,9,8,9,8,9]
2171*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2172*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2173*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 4, i32 0, i32 0, i32 4, i32 4, i32 4, i32 12, i32 12, i32 12, i32 8, i32 8, i32 12, i32 12, i32 12, i32 12>
2174*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2175*9880d681SAndroid Build Coastguard Worker}
2176*9880d681SAndroid Build Coastguard Worker
2177*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_04_04_00_04_04_04_12_08_12_12_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) {
2178*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_04_04_00_04_04_04_12_08_12_12_08_12_12_12_12:
2179*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2180*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2181*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $48, %xmm1, %xmm2
2182*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,14,15]
2183*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2184*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
2185*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2186*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2187*9880d681SAndroid Build Coastguard Worker;
2188*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_04_04_00_04_04_04_12_08_12_12_08_12_12_12_12:
2189*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2190*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2191*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllq $48, %xmm1, %xmm2
2192*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,14,15]
2193*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2194*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
2195*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2196*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2197*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 4, i32 4, i32 0, i32 4, i32 4, i32 4, i32 12, i32 8, i32 12, i32 12, i32 8, i32 12, i32 12, i32 12, i32 12>
2198*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2199*9880d681SAndroid Build Coastguard Worker}
2200*9880d681SAndroid Build Coastguard Worker
2201*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_04_04_00_00_00_00_08_08_12_12_08_08_08_08_08(<16 x i16> %a, <16 x i16> %b) {
2202*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_04_04_00_00_00_00_08_08_12_12_08_08_08_08_08:
2203*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2204*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2205*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1]
2206*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,0,1,0,1,14,15]
2207*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2208*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,0,1,0,1,0,1,0,1]
2209*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2210*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2211*9880d681SAndroid Build Coastguard Worker;
2212*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_04_04_00_00_00_00_08_08_12_12_08_08_08_08_08:
2213*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2214*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2215*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm1, %xmm2
2216*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,0,1,0,1,0,1,14,15]
2217*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2218*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,0,1,0,1,0,1,0,1]
2219*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2220*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2221*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 4, i32 4, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 12, i32 12, i32 8, i32 8, i32 8, i32 8, i32 8>
2222*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2223*9880d681SAndroid Build Coastguard Worker}
2224*9880d681SAndroid Build Coastguard Worker
2225*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_04_04_00_04_05_06_15_08_12_12_08_12_13_14_15(<16 x i16> %a, <16 x i16> %b) {
2226*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_04_04_00_04_05_06_15_08_12_12_08_12_13_14_15:
2227*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2228*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2229*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
2230*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,2,2,0,4,5,6,7]
2231*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7]
2232*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
2233*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,2,2,0,4,5,6,7]
2234*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2235*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2236*9880d681SAndroid Build Coastguard Worker;
2237*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_04_04_00_04_05_06_15_08_12_12_08_12_13_14_15:
2238*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2239*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2240*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
2241*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,2,2,0,4,5,6,7]
2242*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7]
2243*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
2244*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,2,2,0,4,5,6,7]
2245*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2246*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2247*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 4, i32 4, i32 0, i32 4, i32 5, i32 6, i32 15, i32 8, i32 12, i32 12, i32 8, i32 12, i32 13, i32 14, i32 15>
2248*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2249*9880d681SAndroid Build Coastguard Worker}
2250*9880d681SAndroid Build Coastguard Worker
2251*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_uu_04_04_04_04_04_12_08_uu_12_12_12_12_12_12(<16 x i16> %a, <16 x i16> %b) {
2252*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_uu_04_04_04_04_04_12_08_uu_12_12_12_12_12_12:
2253*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2254*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2255*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $48, %xmm1, %xmm2
2256*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,8,9,8,9,8,9,8,9,8,9,14,15]
2257*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2258*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,8,9,8,9,8,9,8,9,8,9,8,9]
2259*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2260*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2261*9880d681SAndroid Build Coastguard Worker;
2262*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_uu_04_04_04_04_04_12_08_uu_12_12_12_12_12_12:
2263*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2264*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2265*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllq $48, %xmm1, %xmm2
2266*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,8,9,8,9,8,9,8,9,8,9,14,15]
2267*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2268*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,8,9,8,9,8,9,8,9,8,9,8,9]
2269*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2270*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2271*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 undef, i32 4, i32 4, i32 4, i32 4, i32 4, i32 12, i32 8, i32 undef, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12>
2272*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2273*9880d681SAndroid Build Coastguard Worker}
2274*9880d681SAndroid Build Coastguard Worker
2275*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_04_uu_00_04_04_04_12_12_12_uu_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) {
2276*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_04_uu_00_04_04_04_12_12_12_uu_08_12_12_12_12:
2277*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2278*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2279*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $48, %xmm1, %xmm2
2280*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,0,1,8,9,8,9,8,9,14,15]
2281*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2282*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
2283*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2284*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2285*9880d681SAndroid Build Coastguard Worker;
2286*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_04_uu_00_04_04_04_12_12_12_uu_08_12_12_12_12:
2287*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2288*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2289*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllq $48, %xmm1, %xmm2
2290*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,8,9,8,9,0,1,8,9,8,9,8,9,14,15]
2291*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2292*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
2293*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2294*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2295*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 4, i32 undef, i32 0, i32 4, i32 4, i32 4, i32 12, i32 12, i32 12, i32 undef, i32 8, i32 12, i32 12, i32 12, i32 12>
2296*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2297*9880d681SAndroid Build Coastguard Worker}
2298*9880d681SAndroid Build Coastguard Worker
2299*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_04_04_00_04_04_04_12_uu_12_12_08_12_12_12_12(<16 x i16> %a, <16 x i16> %b) {
2300*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_04_04_00_04_04_04_12_uu_12_12_08_12_12_12_12:
2301*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2302*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2303*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $48, %xmm1, %xmm2
2304*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,14,15]
2305*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2306*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
2307*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2308*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2309*9880d681SAndroid Build Coastguard Worker;
2310*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_04_04_00_04_04_04_12_uu_12_12_08_12_12_12_12:
2311*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2312*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2313*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllq $48, %xmm1, %xmm2
2314*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,8,9,0,1,8,9,8,9,8,9,14,15]
2315*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2316*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,8,9,0,1,8,9,8,9,8,9,8,9]
2317*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2318*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2319*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 4, i32 4, i32 0, i32 4, i32 4, i32 4, i32 12, i32 undef, i32 12, i32 12, i32 8, i32 12, i32 12, i32 12, i32 12>
2320*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2321*9880d681SAndroid Build Coastguard Worker}
2322*9880d681SAndroid Build Coastguard Worker
2323*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_02_07_uu_uu_uu_uu_08_09_10_15_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) {
2324*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_02_07_uu_uu_uu_uu_08_09_10_15_uu_uu_uu_uu:
2325*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2326*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2327*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,2,3,4,5,14,15,4,5,14,15,12,13,14,15]
2328*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
2329*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2330*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2331*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2332*9880d681SAndroid Build Coastguard Worker;
2333*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_02_07_uu_uu_uu_uu_08_09_10_15_uu_uu_uu_uu:
2334*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2335*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,14,15,4,5,14,15,12,13,14,15,16,17,18,19,20,21,30,31,20,21,30,31,28,29,30,31]
2336*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2337*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 7, i32 undef, i32 undef, i32 undef, i32 undef, i32 8, i32 9, i32 10, i32 15, i32 undef, i32 undef, i32 undef, i32 undef>
2338*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2339*9880d681SAndroid Build Coastguard Worker}
2340*9880d681SAndroid Build Coastguard Worker
2341*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_uu_uu_uu_04_05_06_11_uu_uu_uu_uu_12_13_14_11(<16 x i16> %a, <16 x i16> %b) {
2342*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_uu_uu_uu_04_05_06_11_uu_uu_uu_uu_12_13_14_11:
2343*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2344*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2345*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm1[0,1,0,1]
2346*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2347*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[12,13,6,7,4,5,6,7,8,9,10,11,12,13,6,7]
2348*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2349*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2350*9880d681SAndroid Build Coastguard Worker;
2351*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_uu_uu_uu_04_05_06_11_uu_uu_uu_uu_12_13_14_11:
2352*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2353*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2354*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastq %xmm1, %xmm2
2355*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm2[7]
2356*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[12,13,6,7,4,5,6,7,8,9,10,11,12,13,6,7]
2357*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2358*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2359*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 4, i32 5, i32 6, i32 11, i32 undef, i32 undef, i32 undef, i32 undef, i32 12, i32 13, i32 14, i32 11>
2360*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2361*9880d681SAndroid Build Coastguard Worker}
2362*9880d681SAndroid Build Coastguard Worker
2363*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_05_06_03_uu_uu_uu_uu_12_13_14_11_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) {
2364*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_05_06_03_uu_uu_uu_uu_12_13_14_11_uu_uu_uu_uu:
2365*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2366*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2367*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [8,9,10,11,12,13,6,7,8,9,10,11,0,1,2,3]
2368*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
2369*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2370*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2371*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2372*9880d681SAndroid Build Coastguard Worker;
2373*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_05_06_03_uu_uu_uu_uu_12_13_14_11_uu_uu_uu_uu:
2374*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2375*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[8,9,10,11,12,13,6,7,8,9,10,11,0,1,2,3,24,25,26,27,28,29,22,23,24,25,26,27,16,17,18,19]
2376*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2377*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 5, i32 6, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 12, i32 13, i32 14, i32 11, i32 undef, i32 undef, i32 undef, i32 undef>
2378*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2379*9880d681SAndroid Build Coastguard Worker}
2380*9880d681SAndroid Build Coastguard Worker
2381*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_zz_02_zz_04_uu_06_07_08_09_10_11_12_13_14_15(<16 x i16> %a) {
2382*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_zz_02_zz_04_uu_06_07_08_09_10_11_12_13_14_15:
2383*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2384*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm0[1,1,2,3,4,5,6,7]
2385*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
2386*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3],xmm1[4,5,6,7]
2387*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
2388*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2389*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2390*9880d681SAndroid Build Coastguard Worker;
2391*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_zz_02_zz_04_uu_06_07_08_09_10_11_12_13_14_15:
2392*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2393*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[2,3],zero,zero,ymm0[4,5],zero,zero,ymm0[8,9,u,u,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
2394*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2395*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> zeroinitializer, <16 x i32> <i32 1, i32 16, i32 2, i32 16, i32 4, i32 undef, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
2396*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2397*9880d681SAndroid Build Coastguard Worker}
2398*9880d681SAndroid Build Coastguard Worker
2399*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_02_07_04_05_06_11_08_09_10_15_12_13_14_11(<16 x i16> %a, <16 x i16> %b) {
2400*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_02_07_04_05_06_11_08_09_10_15_12_13_14_11:
2401*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2402*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2403*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,2,3,4,5,14,15,8,9,10,11,12,13,6,7]
2404*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
2405*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
2406*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2407*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2408*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2409*9880d681SAndroid Build Coastguard Worker;
2410*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_02_07_04_05_06_11_08_09_10_15_12_13_14_11:
2411*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2412*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2413*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,2,3,4,5,14,15,8,9,10,11,12,13,6,7]
2414*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
2415*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
2416*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2417*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm0
2418*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2419*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 7, i32 4, i32 5, i32 6, i32 11, i32 8, i32 9, i32 10, i32 15, i32 12, i32 13, i32 14, i32 11>
2420*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2421*9880d681SAndroid Build Coastguard Worker}
2422*9880d681SAndroid Build Coastguard Worker
2423*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_05_06_03_00_01_02_15_12_13_14_11_08_09_10_15(<16 x i16> %a, <16 x i16> %b) {
2424*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_05_06_03_00_01_02_15_12_13_14_11_08_09_10_15:
2425*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2426*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2427*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,6,7,0,1,2,3,4,5,2,3]
2428*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7]
2429*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,10,11,12,13,6,7,0,1,2,3,4,5,14,15]
2430*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2431*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2432*9880d681SAndroid Build Coastguard Worker;
2433*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_05_06_03_00_01_02_15_12_13_14_11_08_09_10_15:
2434*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2435*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2436*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,6,7,0,1,2,3,4,5,2,3]
2437*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7]
2438*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,10,11,12,13,6,7,0,1,2,3,4,5,14,15]
2439*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2440*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2441*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 5, i32 6, i32 3, i32 0, i32 1, i32 2, i32 15, i32 12, i32 13, i32 14, i32 11, i32 8, i32 9, i32 10, i32 15>
2442*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2443*9880d681SAndroid Build Coastguard Worker}
2444*9880d681SAndroid Build Coastguard Worker
2445*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_03_07_01_00_02_07_03_13_11_15_09_08_10_15_11_13(<16 x i16> %a, <16 x i16> %b) {
2446*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_03_07_01_00_02_07_03_13_11_15_09_08_10_15_11_13:
2447*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2448*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
2449*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [6,7,14,15,2,3,0,1,4,5,14,15,6,7,10,11]
2450*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
2451*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5],xmm0[6,7]
2452*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2453*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2454*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2455*9880d681SAndroid Build Coastguard Worker;
2456*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_03_07_01_00_02_07_03_13_11_15_09_08_10_15_11_13:
2457*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2458*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2459*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [6,7,14,15,2,3,0,1,4,5,14,15,6,7,10,11]
2460*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm1, %xmm3
2461*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3]
2462*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2463*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm0
2464*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2465*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 3, i32 7, i32 1, i32 0, i32 2, i32 7, i32 3, i32 13, i32 11, i32 15, i32 9, i32 8, i32 10, i32 15, i32 11, i32 13>
2466*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2467*9880d681SAndroid Build Coastguard Worker}
2468*9880d681SAndroid Build Coastguard Worker
2469*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_01_17_02_18_03_27_08_24_09_25_10_26_11_27(<16 x i16> %a, <16 x i16> %b) {
2470*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_27_08_24_09_25_10_26_11_27:
2471*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2472*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
2473*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
2474*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
2475*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
2476*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,4,5,8,9,14,15,14,15,8,9,12,13,14,15]
2477*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
2478*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2479*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2480*9880d681SAndroid Build Coastguard Worker;
2481*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_01_17_02_18_03_27_08_24_09_25_10_26_11_27:
2482*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2483*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
2484*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
2485*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
2486*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,2,2,4,5,6,7]
2487*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,6,7]
2488*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
2489*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]
2490*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]
2491*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2492*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 27, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27>
2493*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2494*9880d681SAndroid Build Coastguard Worker}
2495*9880d681SAndroid Build Coastguard Worker
2496*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_20_01_21_02_22_03_31_08_28_09_29_10_30_11_31(<16 x i16> %a, <16 x i16> %b) {
2497*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_20_01_21_02_22_03_31_08_28_09_29_10_30_11_31:
2498*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2499*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
2500*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
2501*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm4 = xmm3[2,3,0,1]
2502*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3]
2503*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
2504*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,4,5,8,9,14,15,14,15,8,9,12,13,14,15]
2505*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
2506*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
2507*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2508*9880d681SAndroid Build Coastguard Worker;
2509*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_20_01_21_02_22_03_31_08_28_09_29_10_30_11_31:
2510*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2511*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]
2512*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm1 = [0,1,8,9,2,3,10,11,4,5,12,13,6,7,14,15]
2513*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm1, %xmm0, %xmm2
2514*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm0
2515*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6],xmm0[7]
2516*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
2517*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm2, %ymm0
2518*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2519*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 20, i32 1, i32 21, i32 2, i32 22, i32 3, i32 31, i32 8, i32 28, i32 9, i32 29, i32 10, i32 30, i32 11, i32 31>
2520*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2521*9880d681SAndroid Build Coastguard Worker}
2522*9880d681SAndroid Build Coastguard Worker
2523*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_20_05_21_06_22_07_31_12_28_13_29_14_30_15_31(<16 x i16> %a, <16 x i16> %b) {
2524*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_20_05_21_06_22_07_31_12_28_13_29_14_30_15_31:
2525*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2526*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
2527*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
2528*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2529*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
2530*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[4,5,0,1,4,5,4,5,0,1,4,5,8,9,14,15]
2531*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
2532*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2533*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2534*9880d681SAndroid Build Coastguard Worker;
2535*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_20_05_21_06_22_07_31_12_28_13_29_14_30_15_31:
2536*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2537*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
2538*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpckhwd {{.*#+}} xmm3 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
2539*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
2540*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,2,2,4,5,6,7]
2541*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,6,7]
2542*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm1
2543*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpckhwd {{.*#+}} ymm0 = ymm0[4,4,5,5,6,6,7,7,12,12,13,13,14,14,15,15]
2544*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]
2545*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2546*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 31, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
2547*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2548*9880d681SAndroid Build Coastguard Worker}
2549*9880d681SAndroid Build Coastguard Worker
2550*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_16_05_17_06_18_07_27_12_24_13_25_14_26_15_27(<16 x i16> %a, <16 x i16> %b) {
2551*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_16_05_17_06_18_07_27_12_24_13_25_14_26_15_27:
2552*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2553*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
2554*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
2555*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,3,0,1]
2556*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
2557*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
2558*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[4,5,0,1,4,5,4,5,0,1,4,5,8,9,14,15]
2559*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
2560*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2561*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2562*9880d681SAndroid Build Coastguard Worker;
2563*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_16_05_17_06_18_07_27_12_24_13_25_14_26_15_27:
2564*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2565*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
2566*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2567*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
2568*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [8,9,0,1,10,11,2,3,12,13,4,5,14,15,6,7]
2569*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2570*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
2571*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2572*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2573*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 16, i32 5, i32 17, i32 6, i32 18, i32 7, i32 27, i32 12, i32 24, i32 13, i32 25, i32 14, i32 26, i32 15, i32 27>
2574*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2575*9880d681SAndroid Build Coastguard Worker}
2576*9880d681SAndroid Build Coastguard Worker
2577*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_16_01_17_06_22_07_31_08_24_09_25_14_30_15_31(<16 x i16> %a, <16 x i16> %b) {
2578*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_16_01_17_06_22_07_31_08_24_09_25_14_30_15_31:
2579*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2580*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
2581*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm2[0,3,2,3]
2582*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
2583*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[0,3,2,3]
2584*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
2585*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,2,1,4,5,6,7]
2586*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
2587*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm2[6,7]
2588*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[2,3,6,7,10,11,14,15,14,15,10,11,12,13,14,15]
2589*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
2590*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
2591*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2592*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2593*9880d681SAndroid Build Coastguard Worker;
2594*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_16_01_17_06_22_07_31_08_24_09_25_14_30_15_31:
2595*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2596*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
2597*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,0,2,1,4,5,6,7]
2598*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
2599*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} xmm1 = xmm1[0,1,2],xmm2[3]
2600*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm2 = xmm2[0,0,2,1,4,5,6,7]
2601*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7]
2602*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
2603*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,1,1,3,4,5,6,7,8,9,9,11,12,13,14,15]
2604*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,6,5,7,7,8,9,10,11,14,13,15,15]
2605*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]
2606*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2607*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 6, i32 22, i32 7, i32 31, i32 8, i32 24, i32 9, i32 25, i32 14, i32 30, i32 15, i32 31>
2608*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2609*9880d681SAndroid Build Coastguard Worker}
2610*9880d681SAndroid Build Coastguard Worker
2611*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_20_01_21_06_16_07_25_08_28_09_29_14_24_15_25(<16 x i16> %a, <16 x i16> %b) {
2612*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_20_01_21_06_16_07_25_08_28_09_29_14_24_15_25:
2613*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2614*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
2615*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm2[2,0,2,3]
2616*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
2617*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[0,3,2,3]
2618*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
2619*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2,3,4,5,6,7]
2620*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,10,11,0,1,2,3,2,3,0,1,12,13,2,3]
2621*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
2622*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
2623*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2624*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2625*9880d681SAndroid Build Coastguard Worker;
2626*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_20_01_21_06_16_07_25_08_28_09_29_14_24_15_25:
2627*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2628*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
2629*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm3 = [8,9,8,9,4,5,10,11,0,1,0,1,12,13,2,3]
2630*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm3, %xmm2, %xmm4
2631*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2,3,4,5,6,7]
2632*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm3, %xmm1, %xmm1
2633*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm1, %ymm1
2634*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,1,1,3,4,5,6,7,8,9,9,11,12,13,14,15]
2635*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,6,5,7,7,8,9,10,11,14,13,15,15]
2636*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]
2637*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2638*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 20, i32 1, i32 21, i32 6, i32 16, i32 7, i32 25, i32 8, i32 28, i32 9, i32 29, i32 14, i32 24, i32 15, i32 25>
2639*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2640*9880d681SAndroid Build Coastguard Worker}
2641*9880d681SAndroid Build Coastguard Worker
2642*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_01_00_17_16_03_02_19_26_09_08_25_24_11_10_27_26(<16 x i16> %a, <16 x i16> %b) {
2643*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_01_00_17_16_03_02_19_26_09_08_25_24_11_10_27_26:
2644*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2645*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
2646*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
2647*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[4,5,0,1,12,13,10,11,8,9,10,11,12,13,10,11]
2648*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm0[1,0,3,2,4,5,6,7]
2649*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
2650*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
2651*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
2652*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[2,0,3,1,4,5,6,7]
2653*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,4,7,5]
2654*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2655*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2656*9880d681SAndroid Build Coastguard Worker;
2657*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_01_00_17_16_03_02_19_26_09_08_25_24_11_10_27_26:
2658*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2659*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
2660*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
2661*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,0,4,5,6,7]
2662*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,5]
2663*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[0,1,2,3,2,3,0,1,8,9,10,11,6,7,4,5]
2664*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm1
2665*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[2,3,0,1,4,5,6,7,6,7,4,5,4,5,6,7,18,19,16,17,20,21,22,23,22,23,20,21,20,21,22,23]
2666*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7]
2667*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2668*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 1, i32 0, i32 17, i32 16, i32 3, i32 2, i32 19, i32 26, i32 9, i32 8, i32 25, i32 24, i32 11, i32 10, i32 27, i32 26>
2669*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2670*9880d681SAndroid Build Coastguard Worker}
2671*9880d681SAndroid Build Coastguard Worker
2672*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_16_00_17_01_18_02_19_11_24_08_25_09_26_10_27_11(<16 x i16> %a, <16 x i16> %b) {
2673*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_16_00_17_01_18_02_19_11_24_08_25_09_26_10_27_11:
2674*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2675*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
2676*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
2677*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
2678*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
2679*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,4,5,8,9,14,15,14,15,8,9,12,13,14,15]
2680*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
2681*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2682*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2683*9880d681SAndroid Build Coastguard Worker;
2684*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_16_00_17_01_18_02_19_11_24_08_25_09_26_10_27_11:
2685*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2686*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
2687*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
2688*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
2689*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7]
2690*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,7]
2691*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm0
2692*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} ymm1 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[2],ymm0[2],ymm1[3],ymm0[3],ymm1[8],ymm0[8],ymm1[9],ymm0[9],ymm1[10],ymm0[10],ymm1[11],ymm0[11]
2693*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4],ymm0[5],ymm1[6],ymm0[7],ymm1[8],ymm0[9],ymm1[10],ymm0[11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]
2694*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2695*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 16, i32 0, i32 17, i32 1, i32 18, i32 2, i32 19, i32 11, i32 24, i32 8, i32 25, i32 9, i32 26, i32 10, i32 27, i32 11>
2696*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2697*9880d681SAndroid Build Coastguard Worker}
2698*9880d681SAndroid Build Coastguard Worker
2699*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_20_04_21_05_22_06_23_15_28_12_29_13_30_14_31_15(<16 x i16> %a, <16 x i16> %b) {
2700*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_20_04_21_05_22_06_23_15_28_12_29_13_30_14_31_15:
2701*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2702*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
2703*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
2704*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2705*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
2706*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[4,5,0,1,4,5,4,5,0,1,4,5,8,9,14,15]
2707*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2708*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm0
2709*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2710*9880d681SAndroid Build Coastguard Worker;
2711*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_20_04_21_05_22_06_23_15_28_12_29_13_30_14_31_15:
2712*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2713*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
2714*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpckhwd {{.*#+}} xmm3 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
2715*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
2716*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,2,4,5,6,7]
2717*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,6,7]
2718*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm0
2719*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpckhwd {{.*#+}} ymm1 = ymm1[4],ymm0[4],ymm1[5],ymm0[5],ymm1[6],ymm0[6],ymm1[7],ymm0[7],ymm1[12],ymm0[12],ymm1[13],ymm0[13],ymm1[14],ymm0[14],ymm1[15],ymm0[15]
2720*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4],ymm0[5],ymm1[6],ymm0[7],ymm1[8],ymm0[9],ymm1[10],ymm0[11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]
2721*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2722*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 20, i32 4, i32 21, i32 5, i32 22, i32 6, i32 23, i32 15, i32 28, i32 12, i32 29, i32 13, i32 30, i32 14, i32 31, i32 15>
2723*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2724*9880d681SAndroid Build Coastguard Worker}
2725*9880d681SAndroid Build Coastguard Worker
2726*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_02_01_03_20_22_21_31_08_10_09_11_28_30_29_31(<16 x i16> %a, <16 x i16> %b) {
2727*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_02_01_03_20_22_21_31_08_10_09_11_28_30_29_31:
2728*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2729*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
2730*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm2 = xmm2[0,2,1,3,4,5,6,7]
2731*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
2732*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm4 = xmm3[2,3,2,3]
2733*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm4 = xmm4[0,2,1,3,4,5,6,7]
2734*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0]
2735*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
2736*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,8,9,4,5,14,15,0,1,4,5,4,5,6,7]
2737*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,2,1,3,4,5,6,7]
2738*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
2739*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
2740*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2741*9880d681SAndroid Build Coastguard Worker;
2742*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_02_01_03_20_22_21_31_08_10_09_11_28_30_29_31:
2743*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2744*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]
2745*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2746*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,2,1,3,4,5,6,7]
2747*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,5,7]
2748*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7]
2749*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,2,1,3,4,5,6,7]
2750*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,5,7]
2751*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2752*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2753*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 2, i32 1, i32 3, i32 20, i32 22, i32 21, i32 31, i32 8, i32 10, i32 9, i32 11, i32 28, i32 30, i32 29, i32 31>
2754*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2755*9880d681SAndroid Build Coastguard Worker}
2756*9880d681SAndroid Build Coastguard Worker
2757*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_04_04_03_18_uu_uu_uu_uu_12_12_11_26_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) {
2758*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_04_04_03_18_uu_uu_uu_uu_12_12_11_26_uu_uu_uu_uu:
2759*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2760*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm2 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7]
2761*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[2,1,2,3]
2762*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm2 = xmm2[0,0,3,2,4,5,6,7]
2763*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm1
2764*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
2765*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7]
2766*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
2767*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,3,2,4,5,6,7]
2768*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm2, %ymm0
2769*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2770*9880d681SAndroid Build Coastguard Worker;
2771*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_04_04_03_18_uu_uu_uu_uu_12_12_11_26_uu_uu_uu_uu:
2772*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2773*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4,5,6,7,8,9],ymm1[10],ymm0[11,12,13,14,15]
2774*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,1,2,3,6,5,6,7]
2775*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,0,3,2,4,5,6,7,8,8,11,10,12,13,14,15]
2776*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2777*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 4, i32 3, i32 18, i32 undef, i32 undef, i32 undef, i32 undef, i32 12, i32 12, i32 11, i32 26, i32 undef, i32 undef, i32 undef, i32 undef>
2778*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2779*9880d681SAndroid Build Coastguard Worker}
2780*9880d681SAndroid Build Coastguard Worker
2781*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_03_02_21_uu_uu_uu_uu_08_11_10_29_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) {
2782*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_03_02_21_uu_uu_uu_uu_08_11_10_29_uu_uu_uu_uu:
2783*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2784*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
2785*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
2786*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm2 = xmm3[0,1,2,3],xmm2[4,5,6,7]
2787*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm3 = [0,1,6,7,4,5,10,11,0,1,10,11,0,1,2,3]
2788*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm3, %xmm2, %xmm2
2789*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
2790*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm3, %xmm0, %xmm0
2791*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
2792*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2793*9880d681SAndroid Build Coastguard Worker;
2794*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_03_02_21_uu_uu_uu_uu_08_11_10_29_uu_uu_uu_uu:
2795*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2796*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]
2797*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[0,1,6,7,4,5,10,11,0,1,10,11,0,1,2,3,16,17,22,23,20,21,26,27,16,17,26,27,16,17,18,19]
2798*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2799*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 3, i32 2, i32 21, i32 undef, i32 undef, i32 undef, i32 undef, i32 8, i32 11, i32 10, i32 29, i32 undef, i32 undef, i32 undef, i32 undef>
2800*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2801*9880d681SAndroid Build Coastguard Worker}
2802*9880d681SAndroid Build Coastguard Worker
2803*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_uu_uu_21_uu_uu_uu_uu_uu_uu_uu_29_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) {
2804*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_uu_uu_21_uu_uu_uu_uu_uu_uu_uu_29_uu_uu_uu_uu:
2805*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2806*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpermilps {{.*#+}} ymm0 = ymm1[0,2,2,3,4,6,6,7]
2807*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2808*9880d681SAndroid Build Coastguard Worker;
2809*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_uu_uu_21_uu_uu_uu_uu_uu_uu_uu_29_uu_uu_uu_uu:
2810*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2811*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} ymm0 = ymm1[0,2,2,3,4,6,6,7]
2812*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2813*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 21, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 29, i32 undef, i32 undef, i32 undef, i32 undef>
2814*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2815*9880d681SAndroid Build Coastguard Worker}
2816*9880d681SAndroid Build Coastguard Worker
2817*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_02_21_uu_uu_uu_uu_08_09_10_29_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) {
2818*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_02_21_uu_uu_uu_uu_08_09_10_29_uu_uu_uu_uu:
2819*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2820*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
2821*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
2822*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,2,3,3]
2823*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm3[3],xmm2[4,5,6,7]
2824*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
2825*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
2826*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
2827*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2828*9880d681SAndroid Build Coastguard Worker;
2829*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_02_21_uu_uu_uu_uu_08_09_10_29_uu_uu_uu_uu:
2830*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2831*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} ymm1 = ymm1[0,2,2,3,4,6,6,7]
2832*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3],ymm0[4,5,6,7,8,9,10],ymm1[11],ymm0[12,13,14,15]
2833*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2834*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 21, i32 undef, i32 undef, i32 undef, i32 undef, i32 8, i32 9, i32 10, i32 29, i32 undef, i32 undef, i32 undef, i32 undef>
2835*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2836*9880d681SAndroid Build Coastguard Worker}
2837*9880d681SAndroid Build Coastguard Worker
2838*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_uu_uu_uu_20_21_22_11_uu_uu_uu_uu_28_29_30_11(<16 x i16> %a, <16 x i16> %b) {
2839*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_uu_uu_uu_20_21_22_11_uu_uu_uu_uu_28_29_30_11:
2840*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2841*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
2842*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
2843*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
2844*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6],xmm0[7]
2845*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3,4,5,6],xmm0[7]
2846*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
2847*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2848*9880d681SAndroid Build Coastguard Worker;
2849*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_uu_uu_uu_20_21_22_11_uu_uu_uu_uu_28_29_30_11:
2850*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2851*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,2,2]
2852*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5,6],ymm0[7],ymm1[8,9,10,11,12,13,14],ymm0[15]
2853*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2854*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 20, i32 21, i32 22, i32 11, i32 undef, i32 undef, i32 undef, i32 undef, i32 28, i32 29, i32 30, i32 11>
2855*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2856*9880d681SAndroid Build Coastguard Worker}
2857*9880d681SAndroid Build Coastguard Worker
2858*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_20_21_22_03_uu_uu_uu_uu_28_29_30_11_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) {
2859*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_20_21_22_03_uu_uu_uu_uu_28_29_30_11_uu_uu_uu_uu:
2860*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2861*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
2862*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
2863*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,3,0,1]
2864*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm2 = xmm3[0,1,2],xmm2[3],xmm3[4,5,6,7]
2865*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
2866*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3],xmm1[4,5,6,7]
2867*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
2868*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2869*9880d681SAndroid Build Coastguard Worker;
2870*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_20_21_22_03_uu_uu_uu_uu_28_29_30_11_uu_uu_uu_uu:
2871*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2872*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} ymm1 = ymm1[2,3,2,3,6,7,6,7]
2873*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3],ymm1[4,5,6,7,8,9,10],ymm0[11],ymm1[12,13,14,15]
2874*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2875*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 20, i32 21, i32 22, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 28, i32 29, i32 30, i32 11, i32 undef, i32 undef, i32 undef, i32 undef>
2876*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2877*9880d681SAndroid Build Coastguard Worker}
2878*9880d681SAndroid Build Coastguard Worker
2879*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_01_02_21_20_21_22_11_08_09_10_29_28_29_30_11(<16 x i16> %a, <16 x i16> %b) {
2880*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_01_02_21_20_21_22_11_08_09_10_29_28_29_30_11:
2881*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2882*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
2883*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
2884*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm1[0,2,2,3]
2885*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3,4,5,6],xmm0[7]
2886*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm1
2887*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3],xmm1[4,5,6,7]
2888*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,10,11,8,9,10,11,12,13,6,7]
2889*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2890*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2891*9880d681SAndroid Build Coastguard Worker;
2892*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_01_02_21_20_21_22_11_08_09_10_29_28_29_30_11:
2893*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2894*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]
2895*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2896*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
2897*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,2,3,4,5,10,11,8,9,10,11,12,13,6,7]
2898*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
2899*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
2900*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2901*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2902*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 21, i32 20, i32 21, i32 22, i32 11, i32 8, i32 9, i32 10, i32 29, i32 28, i32 29, i32 30, i32 11>
2903*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2904*9880d681SAndroid Build Coastguard Worker}
2905*9880d681SAndroid Build Coastguard Worker
2906*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_00_17_02_03_20_21_22_15_08_25_10_11_28_29_30_15(<16 x i16> %a, <16 x i16> %b) {
2907*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_00_17_02_03_20_21_22_15_08_25_10_11_28_29_30_15:
2908*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2909*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
2910*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
2911*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm2 = xmm3[0],xmm2[1],xmm3[2,3],xmm2[4,5,6],xmm3[7]
2912*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm3[4,5,6,7]
2913*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4,5,6],xmm0[7]
2914*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
2915*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2916*9880d681SAndroid Build Coastguard Worker;
2917*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_00_17_02_03_20_21_22_15_08_25_10_11_28_29_30_15:
2918*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2919*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
2920*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4,5,6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12,13,14],ymm0[15]
2921*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2922*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 0, i32 17, i32 2, i32 3, i32 20, i32 21, i32 22, i32 15, i32 8, i32 25, i32 10, i32 11, i32 28, i32 29, i32 30, i32 15>
2923*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2924*9880d681SAndroid Build Coastguard Worker}
2925*9880d681SAndroid Build Coastguard Worker
2926*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_uu_uu_01_uu_05_07_25_uu_uu_uu_09_uu_13_15_25(<16 x i16> %a, <16 x i16> %b) {
2927*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_uu_uu_01_uu_05_07_25_uu_uu_uu_09_uu_13_15_25:
2928*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2929*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm1
2930*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
2931*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
2932*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm2 = xmm2[0,1,2,1,4,5,6,7]
2933*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,7]
2934*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6],xmm1[7]
2935*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]
2936*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,7]
2937*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6],xmm1[7]
2938*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
2939*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2940*9880d681SAndroid Build Coastguard Worker;
2941*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_uu_uu_01_uu_05_07_25_uu_uu_uu_09_uu_13_15_25:
2942*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2943*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm1
2944*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastd %xmm1, %ymm1
2945*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,1,2,1,4,5,6,7,8,9,10,9,12,13,14,15]
2946*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,7,7,8,9,10,11,12,13,15,15]
2947*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm1[7],ymm0[8,9,10,11,12,13,14],ymm1[15]
2948*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2949*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 1, i32 undef, i32 5, i32 7, i32 25, i32 undef, i32 undef, i32 undef, i32 9, i32 undef, i32 13, i32 15, i32 25>
2950*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2951*9880d681SAndroid Build Coastguard Worker}
2952*9880d681SAndroid Build Coastguard Worker
2953*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_uu_04_uu_16_18_20_uu_uu_uu_12_uu_24_26_28_uu(<16 x i16> %a, <16 x i16> %b) {
2954*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_uu_04_uu_16_18_20_uu_uu_uu_12_uu_24_26_28_uu:
2955*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2956*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
2957*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm3 = [0,1,4,5,4,5,6,7,0,1,4,5,8,9,4,5]
2958*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm3, %xmm2, %xmm2
2959*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
2960*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[2,2,3,3]
2961*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm2 = xmm4[0,1,2,3],xmm2[4,5,6,7]
2962*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm3, %xmm1, %xmm1
2963*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,2,3,3]
2964*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
2965*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
2966*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2967*9880d681SAndroid Build Coastguard Worker;
2968*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_uu_04_uu_16_18_20_uu_uu_uu_12_uu_24_26_28_uu:
2969*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2970*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[0,1,4,5,4,5,6,7,0,1,4,5,8,9,4,5,16,17,20,21,20,21,22,23,16,17,20,21,24,25,20,21]
2971*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,2,2,3,4,6,6,7]
2972*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]
2973*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2974*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 4, i32 undef, i32 16, i32 18, i32 20, i32 undef, i32 undef, i32 undef, i32 12, i32 undef, i32 24, i32 26, i32 28, i32 undef>
2975*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
2976*9880d681SAndroid Build Coastguard Worker}
2977*9880d681SAndroid Build Coastguard Worker
2978*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_21_22_23_00_01_02_03_12_29_30_31_08_09_10_11_12(<16 x i16> %a, <16 x i16> %b) {
2979*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_21_22_23_00_01_02_03_12_29_30_31_08_09_10_11_12:
2980*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
2981*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
2982*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
2983*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[10,11,12,13,14,15],xmm3[0,1,2,3,4,5,6,7,8,9]
2984*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm3[4,5,6,7]
2985*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]
2986*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrldq {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
2987*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4,5,6,7]
2988*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
2989*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2990*9880d681SAndroid Build Coastguard Worker;
2991*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_21_22_23_00_01_02_03_12_29_30_31_08_09_10_11_12:
2992*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
2993*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15]
2994*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
2995*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
2996*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
2997*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
2998*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
2999*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3000*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 21, i32 22, i32 23, i32 0, i32 1, i32 2, i32 3, i32 12, i32 29, i32 30, i32 31, i32 8, i32 9, i32 10, i32 11, i32 12>
3001*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3002*9880d681SAndroid Build Coastguard Worker}
3003*9880d681SAndroid Build Coastguard Worker
3004*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_22_uu_uu_01_02_03_uu_uu_30_uu_uu_09_10_11_uu(<16 x i16> %a, <16 x i16> %b) {
3005*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_22_uu_uu_01_02_03_uu_uu_30_uu_uu_09_10_11_uu:
3006*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3007*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
3008*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
3009*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[10,11,12,13,14,15],xmm3[0,1,2,3,4,5,6,7,8,9]
3010*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[10,11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9]
3011*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
3012*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3013*9880d681SAndroid Build Coastguard Worker;
3014*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_22_uu_uu_01_02_03_uu_uu_30_uu_uu_09_10_11_uu:
3015*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3016*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[10,11,12,13,14,15],ymm0[0,1,2,3,4,5,6,7,8,9],ymm1[26,27,28,29,30,31],ymm0[16,17,18,19,20,21,22,23,24,25]
3017*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3018*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 22, i32 undef, i32 undef, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 30, i32 undef, i32 undef, i32 9, i32 10, i32 11, i32 undef>
3019*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3020*9880d681SAndroid Build Coastguard Worker}
3021*9880d681SAndroid Build Coastguard Worker
3022*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_05_06_07_00_01_02_03_12_13_14_15_08_09_10_11_12(<16 x i16> %a, <16 x i16> %b) {
3023*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_05_06_07_00_01_02_03_12_13_14_15_08_09_10_11_12:
3024*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3025*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
3026*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
3027*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
3028*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
3029*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
3030*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3031*9880d681SAndroid Build Coastguard Worker;
3032*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_05_06_07_00_01_02_03_12_13_14_15_08_09_10_11_12:
3033*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3034*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
3035*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
3036*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
3037*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
3038*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
3039*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3040*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11, i32 12>
3041*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3042*9880d681SAndroid Build Coastguard Worker}
3043*9880d681SAndroid Build Coastguard Worker
3044*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_06_uu_uu_01_02_03_uu_uu_14_uu_uu_09_10_11_uu(<16 x i16> %a, <16 x i16> %b) {
3045*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_06_uu_uu_01_02_03_uu_uu_14_uu_uu_09_10_11_uu:
3046*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3047*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
3048*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
3049*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
3050*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
3051*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3052*9880d681SAndroid Build Coastguard Worker;
3053*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_06_uu_uu_01_02_03_uu_uu_14_uu_uu_09_10_11_uu:
3054*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3055*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,26,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25]
3056*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3057*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 6, i32 undef, i32 undef, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 14, i32 undef, i32 undef, i32 9, i32 10, i32 11, i32 undef>
3058*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3059*9880d681SAndroid Build Coastguard Worker}
3060*9880d681SAndroid Build Coastguard Worker
3061*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_uu_uu_uu_01_02_03_uu_uu_uu_uu_uu_09_10_11_uu(<16 x i16> %a, <16 x i16> %b) {
3062*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_uu_uu_uu_01_02_03_uu_uu_uu_uu_uu_09_10_11_uu:
3063*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3064*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]
3065*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
3066*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]
3067*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
3068*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3069*9880d681SAndroid Build Coastguard Worker;
3070*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_uu_uu_uu_01_02_03_uu_uu_uu_uu_uu_09_10_11_uu:
3071*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3072*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpslldq {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,ymm0[0,1,2,3,4,5,6,7,8,9],zero,zero,zero,zero,zero,zero,ymm0[16,17,18,19,20,21,22,23,24,25]
3073*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3074*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 9, i32 10, i32 11, i32 undef>
3075*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3076*9880d681SAndroid Build Coastguard Worker}
3077*9880d681SAndroid Build Coastguard Worker
3078*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_19_20_21_22_23_00_01_10_27_28_29_30_31_08_09_10(<16 x i16> %a, <16 x i16> %b) {
3079*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_19_20_21_22_23_00_01_10_27_28_29_30_31_08_09_10:
3080*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3081*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
3082*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
3083*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4,5]
3084*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
3085*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,4,5,4,5,6,7,8,9,0,1,4,5,10,11]
3086*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrldq {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
3087*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3,4],xmm0[5,6,7]
3088*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
3089*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3090*9880d681SAndroid Build Coastguard Worker;
3091*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_19_20_21_22_23_00_01_10_27_28_29_30_31_08_09_10:
3092*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3093*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3,4,5,6,7],ymm0[8,9,10],ymm1[11,12,13,14,15]
3094*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
3095*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7]
3096*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
3097*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
3098*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
3099*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3100*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 19, i32 20, i32 21, i32 22, i32 23, i32 0, i32 1, i32 10, i32 27, i32 28, i32 29, i32 30, i32 31, i32 8, i32 9, i32 10>
3101*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3102*9880d681SAndroid Build Coastguard Worker}
3103*9880d681SAndroid Build Coastguard Worker
3104*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_20_21_22_uu_uu_01_uu_uu_28_29_30_uu_uu_09_uu(<16 x i16> %a, <16 x i16> %b) {
3105*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_20_21_22_uu_uu_01_uu_uu_28_29_30_uu_uu_09_uu:
3106*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3107*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
3108*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
3109*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4,5]
3110*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm1[6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4,5]
3111*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
3112*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3113*9880d681SAndroid Build Coastguard Worker;
3114*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_20_21_22_uu_uu_01_uu_uu_28_29_30_uu_uu_09_uu:
3115*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3116*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm1[6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4,5],ymm1[22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20,21]
3117*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3118*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 20, i32 21, i32 22, i32 undef, i32 undef, i32 1, i32 undef, i32 undef, i32 28, i32 29, i32 30, i32 undef, i32 undef, i32 9, i32 undef>
3119*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3120*9880d681SAndroid Build Coastguard Worker}
3121*9880d681SAndroid Build Coastguard Worker
3122*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_10(<16 x i16> %a, <16 x i16> %b) {
3123*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_10:
3124*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3125*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
3126*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7]
3127*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
3128*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
3129*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
3130*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3131*9880d681SAndroid Build Coastguard Worker;
3132*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_03_04_05_06_07_00_01_10_11_12_13_14_15_08_09_10:
3133*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3134*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
3135*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7]
3136*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
3137*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
3138*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
3139*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3140*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10>
3141*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3142*9880d681SAndroid Build Coastguard Worker}
3143*9880d681SAndroid Build Coastguard Worker
3144*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_04_05_06_uu_uu_01_uu_uu_12_13_14_uu_uu_09_uu(<16 x i16> %a, <16 x i16> %b) {
3145*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_04_05_06_uu_uu_01_uu_uu_12_13_14_uu_uu_09_uu:
3146*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3147*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm1 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
3148*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
3149*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
3150*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
3151*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3152*9880d681SAndroid Build Coastguard Worker;
3153*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_04_05_06_uu_uu_01_uu_uu_12_13_14_uu_uu_09_uu:
3154*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3155*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]
3156*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3157*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 4, i32 5, i32 6, i32 undef, i32 undef, i32 1, i32 undef, i32 undef, i32 12, i32 13, i32 14, i32 undef, i32 undef, i32 9, i32 undef>
3158*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3159*9880d681SAndroid Build Coastguard Worker}
3160*9880d681SAndroid Build Coastguard Worker
3161*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_04_05_06_uu_uu_uu_uu_uu_12_13_14_uu_uu_uu_uu(<16 x i16> %a, <16 x i16> %b) {
3162*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_04_05_06_uu_uu_uu_uu_uu_12_13_14_uu_uu_uu_uu:
3163*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3164*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrldq {{.*#+}} xmm1 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
3165*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
3166*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
3167*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
3168*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3169*9880d681SAndroid Build Coastguard Worker;
3170*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_04_05_06_uu_uu_uu_uu_uu_12_13_14_uu_uu_uu_uu:
3171*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3172*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrldq {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,ymm0[22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero,zero
3173*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3174*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 4, i32 5, i32 6, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 12, i32 13, i32 14, i32 undef, i32 undef, i32 undef, i32 undef>
3175*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3176*9880d681SAndroid Build Coastguard Worker}
3177*9880d681SAndroid Build Coastguard Worker
3178*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_03_04_05_06_07_16_17_26_11_12_13_14_15_24_25_26(<16 x i16> %a, <16 x i16> %b) {
3179*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_03_04_05_06_07_16_17_26_11_12_13_14_15_24_25_26:
3180*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3181*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
3182*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
3183*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4,5]
3184*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]
3185*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,4,5,4,5,6,7,8,9,0,1,4,5,10,11]
3186*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
3187*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5,6,7]
3188*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
3189*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3190*9880d681SAndroid Build Coastguard Worker;
3191*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_03_04_05_06_07_16_17_26_11_12_13_14_15_24_25_26:
3192*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3193*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7],ymm1[8,9,10],ymm0[11,12,13,14,15]
3194*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
3195*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7]
3196*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
3197*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]
3198*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
3199*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3200*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 26, i32 11, i32 12, i32 13, i32 14, i32 15, i32 24, i32 25, i32 26>
3201*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3202*9880d681SAndroid Build Coastguard Worker}
3203*9880d681SAndroid Build Coastguard Worker
3204*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_04_05_06_uu_uu_17_uu_uu_12_13_14_uu_uu_25_uu(<16 x i16> %a, <16 x i16> %b) {
3205*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_04_05_06_uu_uu_17_uu_uu_12_13_14_uu_uu_25_uu:
3206*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3207*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
3208*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
3209*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4,5]
3210*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4,5]
3211*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
3212*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3213*9880d681SAndroid Build Coastguard Worker;
3214*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_04_05_06_uu_uu_17_uu_uu_12_13_14_uu_uu_25_uu:
3215*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3216*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4,5],ymm0[22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20,21]
3217*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3218*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 4, i32 5, i32 6, i32 undef, i32 undef, i32 17, i32 undef, i32 undef, i32 12, i32 13, i32 14, i32 undef, i32 undef, i32 25, i32 undef>
3219*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3220*9880d681SAndroid Build Coastguard Worker}
3221*9880d681SAndroid Build Coastguard Worker
3222*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_05_06_07_16_17_18_19_28_13_14_15_24_25_26_27_28(<16 x i16> %a, <16 x i16> %b) {
3223*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_05_06_07_16_17_18_19_28_13_14_15_24_25_26_27_28:
3224*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3225*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
3226*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
3227*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[10,11,12,13,14,15],xmm3[0,1,2,3,4,5,6,7,8,9]
3228*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3],xmm3[4,5,6,7]
3229*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9]
3230*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
3231*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3,4,5,6,7]
3232*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
3233*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3234*9880d681SAndroid Build Coastguard Worker;
3235*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_05_06_07_16_17_18_19_28_13_14_15_24_25_26_27_28:
3236*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3237*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0,1,2,3,4],ymm0[5,6,7],ymm1[8,9,10,11,12],ymm0[13,14,15]
3238*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
3239*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
3240*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
3241*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9]
3242*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
3243*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3244*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 28, i32 13, i32 14, i32 15, i32 24, i32 25, i32 26, i32 27, i32 28>
3245*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3246*9880d681SAndroid Build Coastguard Worker}
3247*9880d681SAndroid Build Coastguard Worker
3248*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_uu_06_uu_uu_17_18_19_uu_uu_14_uu_uu_25_26_27_uu(<16 x i16> %a, <16 x i16> %b) {
3249*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_uu_06_uu_uu_17_18_19_uu_uu_14_uu_uu_25_26_27_uu:
3250*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3251*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
3252*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
3253*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[10,11,12,13,14,15],xmm3[0,1,2,3,4,5,6,7,8,9]
3254*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],xmm1[0,1,2,3,4,5,6,7,8,9]
3255*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
3256*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3257*9880d681SAndroid Build Coastguard Worker;
3258*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_uu_06_uu_uu_17_18_19_uu_uu_14_uu_uu_25_26_27_uu:
3259*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3260*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpalignr {{.*#+}} ymm0 = ymm0[10,11,12,13,14,15],ymm1[0,1,2,3,4,5,6,7,8,9],ymm0[26,27,28,29,30,31],ymm1[16,17,18,19,20,21,22,23,24,25]
3261*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3262*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 6, i32 undef, i32 undef, i32 17, i32 18, i32 19, i32 undef, i32 undef, i32 14, i32 undef, i32 undef, i32 25, i32 26, i32 27, i32 undef>
3263*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3264*9880d681SAndroid Build Coastguard Worker}
3265*9880d681SAndroid Build Coastguard Worker
3266*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_23_uu_03_uu_20_20_05_uu_31_uu_11_uu_28_28_13_uu(<16 x i16> %a, <16 x i16> %b) {
3267*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_23_uu_03_uu_20_20_05_uu_31_uu_11_uu_28_28_13_uu:
3268*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3269*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
3270*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm2 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
3271*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
3272*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,5,4,4]
3273*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhdq {{.*#+}} xmm2 = xmm3[2],xmm2[2],xmm3[3],xmm2[3]
3274*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
3275*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,5,4,4]
3276*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhdq {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]
3277*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
3278*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3279*9880d681SAndroid Build Coastguard Worker;
3280*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_23_uu_03_uu_20_20_05_uu_31_uu_11_uu_28_28_13_uu:
3281*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3282*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4],ymm0[5,6],ymm1[7],ymm0[8,9,10,11],ymm1[12],ymm0[13,14],ymm1[15]
3283*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[14,15,14,15,6,7,6,7,8,9,8,9,10,11,14,15,30,31,30,31,22,23,22,23,24,25,24,25,26,27,30,31]
3284*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3285*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 23, i32 undef, i32 3, i32 undef, i32 20, i32 20, i32 5, i32 undef, i32 31, i32 undef, i32 11, i32 undef, i32 28, i32 28, i32 13, i32 undef>
3286*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3287*9880d681SAndroid Build Coastguard Worker}
3288*9880d681SAndroid Build Coastguard Worker
3289*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_u_u_u_u_u_u_u_u_0_16_1_17_2_18_3_19(<16 x i16> %a, <16 x i16> %b) {
3290*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_u_u_u_u_u_u_u_u_0_16_1_17_2_18_3_19:
3291*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3292*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
3293*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
3294*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3295*9880d681SAndroid Build Coastguard Worker;
3296*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_u_u_u_u_u_u_u_u_0_16_1_17_2_18_3_19:
3297*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3298*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
3299*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
3300*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3301*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19>
3302*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3303*9880d681SAndroid Build Coastguard Worker}
3304*9880d681SAndroid Build Coastguard Worker
3305*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_u_u_u_u_u_u_u_u_3_3_3_3_3_3_3_3(<16 x i16> %a, <16 x i16> %b) {
3306*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_u_u_u_u_u_u_u_u_3_3_3_3_3_3_3_3:
3307*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3308*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
3309*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
3310*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
3311*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3312*9880d681SAndroid Build Coastguard Worker;
3313*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_u_u_u_u_u_u_u_u_3_3_3_3_3_3_3_3:
3314*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3315*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
3316*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
3317*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
3318*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3319*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
3320*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3321*9880d681SAndroid Build Coastguard Worker}
3322*9880d681SAndroid Build Coastguard Worker
3323*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_8_8_8_8_8_8_8_8_8_8_8_8_8_8_8_8(<16 x i16> %a, <16 x i16> %b) {
3324*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_8_8_8_8_8_8_8_8_8_8_8_8_8_8_8_8:
3325*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3326*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
3327*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
3328*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
3329*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
3330*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3331*9880d681SAndroid Build Coastguard Worker;
3332*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_8_8_8_8_8_8_8_8_8_8_8_8_8_8_8_8:
3333*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3334*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm0
3335*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %ymm0
3336*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3337*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>
3338*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3339*9880d681SAndroid Build Coastguard Worker}
3340*9880d681SAndroid Build Coastguard Worker
3341*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_4_20_5_21_6_22_7_23_u_u_u_u_u_u_u_u(<16 x i16> %a, <16 x i16> %b) {
3342*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: shuffle_v16i16_4_20_5_21_6_22_7_23_u_u_u_u_u_u_u_u:
3343*9880d681SAndroid Build Coastguard Worker; ALL:       # BB#0:
3344*9880d681SAndroid Build Coastguard Worker; ALL-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
3345*9880d681SAndroid Build Coastguard Worker; ALL-NEXT:    retq
3346*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
3347*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3348*9880d681SAndroid Build Coastguard Worker}
3349*9880d681SAndroid Build Coastguard Worker
3350*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_3_3_3_3_3_3_3_3_u_u_u_u_u_u_u_u(<16 x i16> %a, <16 x i16> %b) {
3351*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: shuffle_v16i16_3_3_3_3_3_3_3_3_u_u_u_u_u_u_u_u:
3352*9880d681SAndroid Build Coastguard Worker; ALL:       # BB#0:
3353*9880d681SAndroid Build Coastguard Worker; ALL-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
3354*9880d681SAndroid Build Coastguard Worker; ALL-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
3355*9880d681SAndroid Build Coastguard Worker; ALL-NEXT:    retq
3356*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
3357*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3358*9880d681SAndroid Build Coastguard Worker}
3359*9880d681SAndroid Build Coastguard Worker
3360*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @shuffle_v16i16_9_9_9_9_9_9_9_9_u_u_u_u_u_u_u_u(<16 x i16> %a, <16 x i16> %b) {
3361*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuffle_v16i16_9_9_9_9_9_9_9_9_u_u_u_u_u_u_u_u:
3362*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3363*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
3364*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[1,1,1,1,4,5,6,7]
3365*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
3366*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3367*9880d681SAndroid Build Coastguard Worker;
3368*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuffle_v16i16_9_9_9_9_9_9_9_9_u_u_u_u_u_u_u_u:
3369*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3370*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm0
3371*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[1,1,1,1,4,5,6,7]
3372*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
3373*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3374*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
3375*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3376*9880d681SAndroid Build Coastguard Worker}
3377*9880d681SAndroid Build Coastguard Worker
3378*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @insert_v16i16_0elt_into_zero_vector(i16* %ptr) {
3379*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: insert_v16i16_0elt_into_zero_vector:
3380*9880d681SAndroid Build Coastguard Worker; ALL:       # BB#0:
3381*9880d681SAndroid Build Coastguard Worker; ALL-NEXT:    movzwl (%rdi), %eax
3382*9880d681SAndroid Build Coastguard Worker; ALL-NEXT:    vmovd %eax, %xmm0
3383*9880d681SAndroid Build Coastguard Worker; ALL-NEXT:    retq
3384*9880d681SAndroid Build Coastguard Worker  %val = load i16, i16* %ptr
3385*9880d681SAndroid Build Coastguard Worker  %i0 = insertelement <16 x i16> zeroinitializer, i16 %val, i32 0
3386*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %i0
3387*9880d681SAndroid Build Coastguard Worker}
3388*9880d681SAndroid Build Coastguard Worker
3389*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @concat_v16i16_0_1_2_3_4_5_6_7_24_25_26_27_28_29_30_31(<16 x i16> %a, <16 x i16> %b) {
3390*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: concat_v16i16_0_1_2_3_4_5_6_7_24_25_26_27_28_29_30_31:
3391*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3392*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3]
3393*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3394*9880d681SAndroid Build Coastguard Worker;
3395*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: concat_v16i16_0_1_2_3_4_5_6_7_24_25_26_27_28_29_30_31:
3396*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3397*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
3398*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3399*9880d681SAndroid Build Coastguard Worker  %alo = shufflevector <16 x i16> %a, <16 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
3400*9880d681SAndroid Build Coastguard Worker  %bhi = shufflevector <16 x i16> %b, <16 x i16> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
3401*9880d681SAndroid Build Coastguard Worker  %shuf = shufflevector <8 x i16> %alo, <8 x i16> %bhi, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
3402*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuf
3403*9880d681SAndroid Build Coastguard Worker}
3404*9880d681SAndroid Build Coastguard Worker
3405*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @concat_v16i16_8_9_10_11_12_13_14_15_24_25_26_27_28_29_30_31_bc(<16 x i16> %a, <16 x i16> %b) {
3406*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: concat_v16i16_8_9_10_11_12_13_14_15_24_25_26_27_28_29_30_31_bc:
3407*9880d681SAndroid Build Coastguard Worker; ALL:       # BB#0:
3408*9880d681SAndroid Build Coastguard Worker; ALL-NEXT:    vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3]
3409*9880d681SAndroid Build Coastguard Worker; ALL-NEXT:    retq
3410*9880d681SAndroid Build Coastguard Worker  %ahi = shufflevector <16 x i16> %a, <16 x i16> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
3411*9880d681SAndroid Build Coastguard Worker  %bhi = shufflevector <16 x i16> %b, <16 x i16> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
3412*9880d681SAndroid Build Coastguard Worker  %bc0hi = bitcast <8 x i16> %ahi to <16 x i8>
3413*9880d681SAndroid Build Coastguard Worker  %bc1hi = bitcast <8 x i16> %bhi to <16 x i8>
3414*9880d681SAndroid Build Coastguard Worker  %shuffle8 = shufflevector <16 x i8> %bc0hi, <16 x i8> %bc1hi, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
3415*9880d681SAndroid Build Coastguard Worker  %shuffle16 = bitcast <32 x i8> %shuffle8 to <16 x i16>
3416*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle16
3417*9880d681SAndroid Build Coastguard Worker}
3418*9880d681SAndroid Build Coastguard Worker
3419*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @PR24935(<16 x i16> %a, <16 x i16> %b) {
3420*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: PR24935:
3421*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3422*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm1[0,0,1,1]
3423*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3
3424*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpalignr {{.*#+}} xmm4 = xmm3[2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1]
3425*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm2 = xmm4[0,1],xmm2[2],xmm4[3,4,5,6,7]
3426*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
3427*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm5 = xmm4[0,1,2,3,5,5,6,7]
3428*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm6 = xmm0[2,3,2,3,4,5,6,7,8,9,8,9,0,1,2,3]
3429*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm5 = xmm6[0],xmm5[1],xmm6[2,3],xmm5[4],xmm6[5,6,7]
3430*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm2 = xmm5[0,1],xmm2[2,3],xmm5[4,5,6],xmm2[7]
3431*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3]
3432*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,7]
3433*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3,4,5],xmm1[6,7]
3434*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,7,4,5,4,5,10,11,4,5,14,15,12,13,0,1]
3435*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1],xmm0[2],xmm1[3,4,5],xmm0[6],xmm1[7]
3436*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
3437*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3438*9880d681SAndroid Build Coastguard Worker;
3439*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: PR24935:
3440*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3441*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm2 = ymm1[2,3,0,1]
3442*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[6,7,4,5,0,1,10,11,4,5,10,11,4,5,6,7,22,23,20,21,16,17,26,27,20,21,26,27,20,21,22,23]
3443*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[8,9,10,11,4,5,8,9,0,1,14,15,12,13,0,1,24,25,26,27,20,21,24,25,16,17,30,31,28,29,16,17]
3444*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} ymm3 = <255,255,255,255,u,u,255,255,255,255,0,0,u,u,0,0,u,u,u,u,255,255,0,0,u,u,u,u,u,u,0,0>
3445*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm3, %ymm2, %ymm1, %ymm1
3446*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vperm2i128 {{.*#+}} ymm2 = ymm0[2,3,0,1]
3447*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,6,7,u,u,18,19,u,u,u,u,u,u,u,u,24,25,16,17,u,u]
3448*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[0,1,1,3,4,5,6,7,8,9,9,11,12,13,14,15]
3449*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,5,6,7,8,9,10,11,13,13,14,15]
3450*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm2[0],ymm0[1,2],ymm2[3],ymm0[4],ymm2[5,6,7,8],ymm0[9,10],ymm2[11],ymm0[12],ymm2[13,14,15]
3451*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} ymm2 = [255,255,255,255,0,0,255,255,255,255,255,255,0,0,255,255,0,0,0,0,255,255,255,255,0,0,0,0,0,0,255,255]
3452*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm0
3453*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3454*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16 x i16> %a, <16 x i16> %b, <16 x i32> <i32 27, i32 26, i32 1, i32 29, i32 26, i32 23, i32 11, i32 16, i32 1, i32 9, i32 16, i32 28, i32 13, i32 4, i32 0, i32 24>
3455*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shuffle
3456*9880d681SAndroid Build Coastguard Worker}
3457*9880d681SAndroid Build Coastguard Worker
3458*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @insert_dup_mem_v16i16_i32(i32* %ptr) {
3459*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_mem_v16i16_i32:
3460*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3461*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
3462*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
3463*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
3464*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
3465*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3466*9880d681SAndroid Build Coastguard Worker;
3467*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_mem_v16i16_i32:
3468*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3469*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw (%rdi), %ymm0
3470*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3471*9880d681SAndroid Build Coastguard Worker  %tmp = load i32, i32* %ptr, align 4
3472*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 0
3473*9880d681SAndroid Build Coastguard Worker  %tmp2 = bitcast <4 x i32> %tmp1 to <8 x i16>
3474*9880d681SAndroid Build Coastguard Worker  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> undef, <16 x i32> zeroinitializer
3475*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %tmp3
3476*9880d681SAndroid Build Coastguard Worker}
3477*9880d681SAndroid Build Coastguard Worker
3478*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @insert_dup_mem_v16i16_sext_i16(i16* %ptr) {
3479*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_mem_v16i16_sext_i16:
3480*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3481*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movswl (%rdi), %eax
3482*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %eax, %xmm0
3483*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
3484*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
3485*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
3486*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3487*9880d681SAndroid Build Coastguard Worker;
3488*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_mem_v16i16_sext_i16:
3489*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3490*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movswl (%rdi), %eax
3491*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %eax, %xmm0
3492*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw %xmm0, %ymm0
3493*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3494*9880d681SAndroid Build Coastguard Worker  %tmp = load i16, i16* %ptr, align 2
3495*9880d681SAndroid Build Coastguard Worker  %tmp1 = sext i16 %tmp to i32
3496*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <4 x i32> zeroinitializer, i32 %tmp1, i32 0
3497*9880d681SAndroid Build Coastguard Worker  %tmp3 = bitcast <4 x i32> %tmp2 to <8 x i16>
3498*9880d681SAndroid Build Coastguard Worker  %tmp4 = shufflevector <8 x i16> %tmp3, <8 x i16> undef, <16 x i32> zeroinitializer
3499*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %tmp4
3500*9880d681SAndroid Build Coastguard Worker}
3501*9880d681SAndroid Build Coastguard Worker
3502*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @insert_dup_elt1_mem_v16i16_i32(i32* %ptr) #0 {
3503*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_elt1_mem_v16i16_i32:
3504*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3505*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
3506*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[1,1,1,1,4,5,6,7]
3507*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
3508*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
3509*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3510*9880d681SAndroid Build Coastguard Worker;
3511*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_elt1_mem_v16i16_i32:
3512*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3513*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw 2(%rdi), %ymm0
3514*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3515*9880d681SAndroid Build Coastguard Worker  %tmp = load i32, i32* %ptr, align 4
3516*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 0
3517*9880d681SAndroid Build Coastguard Worker  %tmp2 = bitcast <4 x i32> %tmp1 to <8 x i16>
3518*9880d681SAndroid Build Coastguard Worker  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> undef, <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
3519*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %tmp3
3520*9880d681SAndroid Build Coastguard Worker}
3521*9880d681SAndroid Build Coastguard Worker
3522*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @insert_dup_elt3_mem_v16i16_i32(i32* %ptr) #0 {
3523*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_dup_elt3_mem_v16i16_i32:
3524*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
3525*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
3526*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]
3527*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
3528*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3529*9880d681SAndroid Build Coastguard Worker;
3530*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_dup_elt3_mem_v16i16_i32:
3531*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
3532*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastw 2(%rdi), %ymm0
3533*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3534*9880d681SAndroid Build Coastguard Worker  %tmp = load i32, i32* %ptr, align 4
3535*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 1
3536*9880d681SAndroid Build Coastguard Worker  %tmp2 = bitcast <4 x i32> %tmp1 to <8 x i16>
3537*9880d681SAndroid Build Coastguard Worker  %tmp3 = shufflevector <8 x i16> %tmp2, <8 x i16> undef, <16 x i32> <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
3538*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %tmp3
3539*9880d681SAndroid Build Coastguard Worker}
3540