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