1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,FALLBACK0
3 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX1,AVX1-ONLY,FALLBACK1
4 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-SLOW,FALLBACK2
5 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-FAST,FALLBACK3
6 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-FAST-PERLANE,FALLBACK4
7 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-SLOW,AVX512F-SLOW,AVX512F-ONLY-SLOW,FALLBACK5
8 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-FAST,AVX512F-FAST,AVX512F-ONLY-FAST,FALLBACK6
9 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-SLOW,AVX512F-SLOW,AVX512DQ-SLOW,FALLBACK7
10 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-FAST,AVX512F-FAST,AVX512DQ-FAST,FALLBACK8
11 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-SLOW,AVX512BW-SLOW,AVX512BW-ONLY-SLOW,FALLBACK9
12 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-FAST,AVX512BW-FAST,AVX512BW-ONLY-FAST,FALLBACK10
13 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-SLOW,AVX512BW-SLOW,AVX512DQBW-SLOW,FALLBACK11
14 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-FAST,AVX512BW-FAST,AVX512DQBW-FAST,FALLBACK12
16 ; These patterns are produced by LoopVectorizer for interleaved loads.
18 define void @load_i64_stride2_vf2(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {
19 ; SSE-LABEL: load_i64_stride2_vf2:
21 ; SSE-NEXT: movaps (%rdi), %xmm0
22 ; SSE-NEXT: movaps 16(%rdi), %xmm1
23 ; SSE-NEXT: movaps %xmm0, %xmm2
24 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
25 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
26 ; SSE-NEXT: movaps %xmm2, (%rsi)
27 ; SSE-NEXT: movaps %xmm0, (%rdx)
30 ; AVX-LABEL: load_i64_stride2_vf2:
32 ; AVX-NEXT: vmovaps (%rdi), %xmm0
33 ; AVX-NEXT: vmovaps 16(%rdi), %xmm1
34 ; AVX-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]
35 ; AVX-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
36 ; AVX-NEXT: vmovaps %xmm2, (%rsi)
37 ; AVX-NEXT: vmovaps %xmm0, (%rdx)
39 %wide.vec = load <4 x i64>, ptr %in.vec, align 64
40 %strided.vec0 = shufflevector <4 x i64> %wide.vec, <4 x i64> poison, <2 x i32> <i32 0, i32 2>
41 %strided.vec1 = shufflevector <4 x i64> %wide.vec, <4 x i64> poison, <2 x i32> <i32 1, i32 3>
42 store <2 x i64> %strided.vec0, ptr %out.vec0, align 64
43 store <2 x i64> %strided.vec1, ptr %out.vec1, align 64
47 define void @load_i64_stride2_vf4(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {
48 ; SSE-LABEL: load_i64_stride2_vf4:
50 ; SSE-NEXT: movaps (%rdi), %xmm0
51 ; SSE-NEXT: movaps 16(%rdi), %xmm1
52 ; SSE-NEXT: movaps 32(%rdi), %xmm2
53 ; SSE-NEXT: movaps 48(%rdi), %xmm3
54 ; SSE-NEXT: movaps %xmm2, %xmm4
55 ; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm3[0]
56 ; SSE-NEXT: movaps %xmm0, %xmm5
57 ; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm1[0]
58 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm3[1]
59 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
60 ; SSE-NEXT: movaps %xmm5, (%rsi)
61 ; SSE-NEXT: movaps %xmm4, 16(%rsi)
62 ; SSE-NEXT: movaps %xmm0, (%rdx)
63 ; SSE-NEXT: movaps %xmm2, 16(%rdx)
66 ; AVX1-ONLY-LABEL: load_i64_stride2_vf4:
68 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %ymm0
69 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm0[2,3],mem[2,3]
70 ; AVX1-ONLY-NEXT: vinsertf128 $1, 32(%rdi), %ymm0, %ymm0
71 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
72 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
73 ; AVX1-ONLY-NEXT: vmovaps %ymm2, (%rsi)
74 ; AVX1-ONLY-NEXT: vmovaps %ymm0, (%rdx)
75 ; AVX1-ONLY-NEXT: vzeroupper
76 ; AVX1-ONLY-NEXT: retq
78 ; AVX2-ONLY-LABEL: load_i64_stride2_vf4:
80 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm0
81 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm1
82 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
83 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]
84 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
85 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]
86 ; AVX2-ONLY-NEXT: vmovaps %ymm2, (%rsi)
87 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%rdx)
88 ; AVX2-ONLY-NEXT: vzeroupper
89 ; AVX2-ONLY-NEXT: retq
91 ; AVX512-SLOW-LABEL: load_i64_stride2_vf4:
92 ; AVX512-SLOW: # %bb.0:
93 ; AVX512-SLOW-NEXT: vmovaps (%rdi), %ymm0
94 ; AVX512-SLOW-NEXT: vmovaps 32(%rdi), %ymm1
95 ; AVX512-SLOW-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
96 ; AVX512-SLOW-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]
97 ; AVX512-SLOW-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
98 ; AVX512-SLOW-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]
99 ; AVX512-SLOW-NEXT: vmovaps %ymm2, (%rsi)
100 ; AVX512-SLOW-NEXT: vmovaps %ymm0, (%rdx)
101 ; AVX512-SLOW-NEXT: vzeroupper
102 ; AVX512-SLOW-NEXT: retq
104 ; AVX512-FAST-LABEL: load_i64_stride2_vf4:
105 ; AVX512-FAST: # %bb.0:
106 ; AVX512-FAST-NEXT: vmovdqa {{.*#+}} ymm0 = [0,2,4,6]
107 ; AVX512-FAST-NEXT: vmovdqa (%rdi), %ymm1
108 ; AVX512-FAST-NEXT: vmovdqa 32(%rdi), %ymm2
109 ; AVX512-FAST-NEXT: vpermi2q %ymm2, %ymm1, %ymm0
110 ; AVX512-FAST-NEXT: vmovdqa {{.*#+}} ymm3 = [1,3,5,7]
111 ; AVX512-FAST-NEXT: vpermi2q %ymm2, %ymm1, %ymm3
112 ; AVX512-FAST-NEXT: vmovdqa %ymm0, (%rsi)
113 ; AVX512-FAST-NEXT: vmovdqa %ymm3, (%rdx)
114 ; AVX512-FAST-NEXT: vzeroupper
115 ; AVX512-FAST-NEXT: retq
116 %wide.vec = load <8 x i64>, ptr %in.vec, align 64
117 %strided.vec0 = shufflevector <8 x i64> %wide.vec, <8 x i64> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
118 %strided.vec1 = shufflevector <8 x i64> %wide.vec, <8 x i64> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
119 store <4 x i64> %strided.vec0, ptr %out.vec0, align 64
120 store <4 x i64> %strided.vec1, ptr %out.vec1, align 64
124 define void @load_i64_stride2_vf8(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {
125 ; SSE-LABEL: load_i64_stride2_vf8:
127 ; SSE-NEXT: movaps (%rdi), %xmm0
128 ; SSE-NEXT: movaps 16(%rdi), %xmm1
129 ; SSE-NEXT: movaps 32(%rdi), %xmm2
130 ; SSE-NEXT: movaps 48(%rdi), %xmm3
131 ; SSE-NEXT: movaps 80(%rdi), %xmm4
132 ; SSE-NEXT: movaps 64(%rdi), %xmm5
133 ; SSE-NEXT: movaps 112(%rdi), %xmm6
134 ; SSE-NEXT: movaps 96(%rdi), %xmm7
135 ; SSE-NEXT: movaps %xmm7, %xmm8
136 ; SSE-NEXT: movlhps {{.*#+}} xmm8 = xmm8[0],xmm6[0]
137 ; SSE-NEXT: movaps %xmm5, %xmm9
138 ; SSE-NEXT: movlhps {{.*#+}} xmm9 = xmm9[0],xmm4[0]
139 ; SSE-NEXT: movaps %xmm2, %xmm10
140 ; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm3[0]
141 ; SSE-NEXT: movaps %xmm0, %xmm11
142 ; SSE-NEXT: movlhps {{.*#+}} xmm11 = xmm11[0],xmm1[0]
143 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm6[1]
144 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm4[1]
145 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm3[1]
146 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
147 ; SSE-NEXT: movaps %xmm9, 32(%rsi)
148 ; SSE-NEXT: movaps %xmm8, 48(%rsi)
149 ; SSE-NEXT: movaps %xmm11, (%rsi)
150 ; SSE-NEXT: movaps %xmm10, 16(%rsi)
151 ; SSE-NEXT: movaps %xmm5, 32(%rdx)
152 ; SSE-NEXT: movaps %xmm7, 48(%rdx)
153 ; SSE-NEXT: movaps %xmm0, (%rdx)
154 ; SSE-NEXT: movaps %xmm2, 16(%rdx)
157 ; AVX1-ONLY-LABEL: load_i64_stride2_vf8:
158 ; AVX1-ONLY: # %bb.0:
159 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %ymm0
160 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %ymm1
161 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm1[2,3],mem[2,3]
162 ; AVX1-ONLY-NEXT: vinsertf128 $1, 96(%rdi), %ymm1, %ymm1
163 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm1[0],ymm2[0],ymm1[2],ymm2[2]
164 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm0[2,3],mem[2,3]
165 ; AVX1-ONLY-NEXT: vinsertf128 $1, 32(%rdi), %ymm0, %ymm0
166 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm4[0],ymm0[2],ymm4[2]
167 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm2[1],ymm1[3],ymm2[3]
168 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm4[1],ymm0[3],ymm4[3]
169 ; AVX1-ONLY-NEXT: vmovaps %ymm5, (%rsi)
170 ; AVX1-ONLY-NEXT: vmovaps %ymm3, 32(%rsi)
171 ; AVX1-ONLY-NEXT: vmovaps %ymm0, (%rdx)
172 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 32(%rdx)
173 ; AVX1-ONLY-NEXT: vzeroupper
174 ; AVX1-ONLY-NEXT: retq
176 ; AVX2-ONLY-LABEL: load_i64_stride2_vf8:
177 ; AVX2-ONLY: # %bb.0:
178 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm0
179 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm1
180 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm2
181 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm3
182 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
183 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]
184 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
185 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,2,1,3]
186 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
187 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]
188 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
189 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]
190 ; AVX2-ONLY-NEXT: vmovaps %ymm5, (%rsi)
191 ; AVX2-ONLY-NEXT: vmovaps %ymm4, 32(%rsi)
192 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%rdx)
193 ; AVX2-ONLY-NEXT: vmovaps %ymm2, 32(%rdx)
194 ; AVX2-ONLY-NEXT: vzeroupper
195 ; AVX2-ONLY-NEXT: retq
197 ; AVX512-LABEL: load_i64_stride2_vf8:
199 ; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0
200 ; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1
201 ; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14]
202 ; AVX512-NEXT: vpermi2q %zmm1, %zmm0, %zmm2
203 ; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15]
204 ; AVX512-NEXT: vpermi2q %zmm1, %zmm0, %zmm3
205 ; AVX512-NEXT: vmovdqa64 %zmm2, (%rsi)
206 ; AVX512-NEXT: vmovdqa64 %zmm3, (%rdx)
207 ; AVX512-NEXT: vzeroupper
209 %wide.vec = load <16 x i64>, ptr %in.vec, align 64
210 %strided.vec0 = shufflevector <16 x i64> %wide.vec, <16 x i64> poison, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
211 %strided.vec1 = shufflevector <16 x i64> %wide.vec, <16 x i64> poison, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
212 store <8 x i64> %strided.vec0, ptr %out.vec0, align 64
213 store <8 x i64> %strided.vec1, ptr %out.vec1, align 64
217 define void @load_i64_stride2_vf16(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {
218 ; SSE-LABEL: load_i64_stride2_vf16:
220 ; SSE-NEXT: movaps (%rdi), %xmm1
221 ; SSE-NEXT: movaps 16(%rdi), %xmm8
222 ; SSE-NEXT: movaps 32(%rdi), %xmm0
223 ; SSE-NEXT: movaps 208(%rdi), %xmm11
224 ; SSE-NEXT: movaps 192(%rdi), %xmm2
225 ; SSE-NEXT: movaps 240(%rdi), %xmm10
226 ; SSE-NEXT: movaps 224(%rdi), %xmm4
227 ; SSE-NEXT: movaps 144(%rdi), %xmm14
228 ; SSE-NEXT: movaps 128(%rdi), %xmm3
229 ; SSE-NEXT: movaps 176(%rdi), %xmm12
230 ; SSE-NEXT: movaps 160(%rdi), %xmm6
231 ; SSE-NEXT: movaps 80(%rdi), %xmm13
232 ; SSE-NEXT: movaps 64(%rdi), %xmm5
233 ; SSE-NEXT: movaps 112(%rdi), %xmm15
234 ; SSE-NEXT: movaps 96(%rdi), %xmm7
235 ; SSE-NEXT: movaps %xmm5, %xmm9
236 ; SSE-NEXT: movlhps {{.*#+}} xmm9 = xmm9[0],xmm13[0]
237 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm13[1]
238 ; SSE-NEXT: movaps %xmm7, %xmm13
239 ; SSE-NEXT: movlhps {{.*#+}} xmm13 = xmm13[0],xmm15[0]
240 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm15[1]
241 ; SSE-NEXT: movaps %xmm3, %xmm15
242 ; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm14[0]
243 ; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm14[1]
244 ; SSE-NEXT: movaps %xmm6, %xmm14
245 ; SSE-NEXT: movlhps {{.*#+}} xmm14 = xmm14[0],xmm12[0]
246 ; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm12[1]
247 ; SSE-NEXT: movaps %xmm2, %xmm12
248 ; SSE-NEXT: movlhps {{.*#+}} xmm12 = xmm12[0],xmm11[0]
249 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm11[1]
250 ; SSE-NEXT: movaps %xmm4, %xmm11
251 ; SSE-NEXT: movlhps {{.*#+}} xmm11 = xmm11[0],xmm10[0]
252 ; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm10[1]
253 ; SSE-NEXT: movaps %xmm1, %xmm10
254 ; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm8[0]
255 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm8[1]
256 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
257 ; SSE-NEXT: movaps 48(%rdi), %xmm8
258 ; SSE-NEXT: movaps %xmm0, %xmm1
259 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm8[0]
260 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm8[1]
261 ; SSE-NEXT: movaps %xmm12, 96(%rsi)
262 ; SSE-NEXT: movaps %xmm11, 112(%rsi)
263 ; SSE-NEXT: movaps %xmm15, 64(%rsi)
264 ; SSE-NEXT: movaps %xmm14, 80(%rsi)
265 ; SSE-NEXT: movaps %xmm9, 32(%rsi)
266 ; SSE-NEXT: movaps %xmm13, 48(%rsi)
267 ; SSE-NEXT: movaps %xmm10, (%rsi)
268 ; SSE-NEXT: movaps %xmm1, 16(%rsi)
269 ; SSE-NEXT: movaps %xmm4, 112(%rdx)
270 ; SSE-NEXT: movaps %xmm2, 96(%rdx)
271 ; SSE-NEXT: movaps %xmm6, 80(%rdx)
272 ; SSE-NEXT: movaps %xmm3, 64(%rdx)
273 ; SSE-NEXT: movaps %xmm7, 48(%rdx)
274 ; SSE-NEXT: movaps %xmm5, 32(%rdx)
275 ; SSE-NEXT: movaps %xmm0, 16(%rdx)
276 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
277 ; SSE-NEXT: movaps %xmm0, (%rdx)
280 ; AVX1-ONLY-LABEL: load_i64_stride2_vf16:
281 ; AVX1-ONLY: # %bb.0:
282 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %ymm0
283 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %ymm1
284 ; AVX1-ONLY-NEXT: vmovaps 128(%rdi), %ymm2
285 ; AVX1-ONLY-NEXT: vmovaps 192(%rdi), %ymm3
286 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm3[2,3],mem[2,3]
287 ; AVX1-ONLY-NEXT: vinsertf128 $1, 224(%rdi), %ymm3, %ymm3
288 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[2],ymm4[2]
289 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm6 = ymm1[2,3],mem[2,3]
290 ; AVX1-ONLY-NEXT: vinsertf128 $1, 96(%rdi), %ymm1, %ymm1
291 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm7 = ymm1[0],ymm6[0],ymm1[2],ymm6[2]
292 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm8 = ymm0[2,3],mem[2,3]
293 ; AVX1-ONLY-NEXT: vinsertf128 $1, 32(%rdi), %ymm0, %ymm0
294 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm9 = ymm0[0],ymm8[0],ymm0[2],ymm8[2]
295 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm10 = ymm2[2,3],mem[2,3]
296 ; AVX1-ONLY-NEXT: vinsertf128 $1, 160(%rdi), %ymm2, %ymm2
297 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm2[0],ymm10[0],ymm2[2],ymm10[2]
298 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm6[1],ymm1[3],ymm6[3]
299 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm4[1],ymm3[3],ymm4[3]
300 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm8[1],ymm0[3],ymm8[3]
301 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm10[1],ymm2[3],ymm10[3]
302 ; AVX1-ONLY-NEXT: vmovaps %ymm11, 64(%rsi)
303 ; AVX1-ONLY-NEXT: vmovaps %ymm9, (%rsi)
304 ; AVX1-ONLY-NEXT: vmovaps %ymm7, 32(%rsi)
305 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 96(%rsi)
306 ; AVX1-ONLY-NEXT: vmovaps %ymm2, 64(%rdx)
307 ; AVX1-ONLY-NEXT: vmovaps %ymm0, (%rdx)
308 ; AVX1-ONLY-NEXT: vmovaps %ymm3, 96(%rdx)
309 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 32(%rdx)
310 ; AVX1-ONLY-NEXT: vzeroupper
311 ; AVX1-ONLY-NEXT: retq
313 ; AVX2-ONLY-LABEL: load_i64_stride2_vf16:
314 ; AVX2-ONLY: # %bb.0:
315 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm0
316 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm1
317 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm2
318 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm3
319 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %ymm4
320 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %ymm5
321 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %ymm6
322 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %ymm7
323 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm8 = ymm7[0],ymm6[0],ymm7[2],ymm6[2]
324 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,2,1,3]
325 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm9 = ymm5[0],ymm4[0],ymm5[2],ymm4[2]
326 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,2,1,3]
327 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
328 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,2,1,3]
329 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
330 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,2,1,3]
331 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm7[1],ymm6[1],ymm7[3],ymm6[3]
332 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,2,1,3]
333 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm5[1],ymm4[1],ymm5[3],ymm4[3]
334 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]
335 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
336 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]
337 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
338 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]
339 ; AVX2-ONLY-NEXT: vmovaps %ymm9, 64(%rsi)
340 ; AVX2-ONLY-NEXT: vmovaps %ymm11, (%rsi)
341 ; AVX2-ONLY-NEXT: vmovaps %ymm8, 96(%rsi)
342 ; AVX2-ONLY-NEXT: vmovaps %ymm10, 32(%rsi)
343 ; AVX2-ONLY-NEXT: vmovaps %ymm4, 64(%rdx)
344 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%rdx)
345 ; AVX2-ONLY-NEXT: vmovaps %ymm6, 96(%rdx)
346 ; AVX2-ONLY-NEXT: vmovaps %ymm2, 32(%rdx)
347 ; AVX2-ONLY-NEXT: vzeroupper
348 ; AVX2-ONLY-NEXT: retq
350 ; AVX512-LABEL: load_i64_stride2_vf16:
352 ; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0
353 ; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1
354 ; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm2
355 ; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm3
356 ; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14]
357 ; AVX512-NEXT: vmovdqa64 %zmm0, %zmm5
358 ; AVX512-NEXT: vpermt2q %zmm1, %zmm4, %zmm5
359 ; AVX512-NEXT: vpermi2q %zmm3, %zmm2, %zmm4
360 ; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15]
361 ; AVX512-NEXT: vpermt2q %zmm1, %zmm6, %zmm0
362 ; AVX512-NEXT: vpermt2q %zmm3, %zmm6, %zmm2
363 ; AVX512-NEXT: vmovdqa64 %zmm4, 64(%rsi)
364 ; AVX512-NEXT: vmovdqa64 %zmm5, (%rsi)
365 ; AVX512-NEXT: vmovdqa64 %zmm2, 64(%rdx)
366 ; AVX512-NEXT: vmovdqa64 %zmm0, (%rdx)
367 ; AVX512-NEXT: vzeroupper
369 %wide.vec = load <32 x i64>, ptr %in.vec, align 64
370 %strided.vec0 = shufflevector <32 x i64> %wide.vec, <32 x i64> poison, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
371 %strided.vec1 = shufflevector <32 x i64> %wide.vec, <32 x i64> poison, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
372 store <16 x i64> %strided.vec0, ptr %out.vec0, align 64
373 store <16 x i64> %strided.vec1, ptr %out.vec1, align 64
377 define void @load_i64_stride2_vf32(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {
378 ; SSE-LABEL: load_i64_stride2_vf32:
380 ; SSE-NEXT: subq $152, %rsp
381 ; SSE-NEXT: movaps 208(%rdi), %xmm11
382 ; SSE-NEXT: movaps 192(%rdi), %xmm6
383 ; SSE-NEXT: movaps 80(%rdi), %xmm1
384 ; SSE-NEXT: movaps 64(%rdi), %xmm5
385 ; SSE-NEXT: movaps 240(%rdi), %xmm14
386 ; SSE-NEXT: movaps 224(%rdi), %xmm8
387 ; SSE-NEXT: movaps 112(%rdi), %xmm3
388 ; SSE-NEXT: movaps 96(%rdi), %xmm7
389 ; SSE-NEXT: movaps 272(%rdi), %xmm12
390 ; SSE-NEXT: movaps 144(%rdi), %xmm2
391 ; SSE-NEXT: movaps 128(%rdi), %xmm9
392 ; SSE-NEXT: movaps 304(%rdi), %xmm0
393 ; SSE-NEXT: movaps 288(%rdi), %xmm13
394 ; SSE-NEXT: movaps 176(%rdi), %xmm4
395 ; SSE-NEXT: movaps 160(%rdi), %xmm10
396 ; SSE-NEXT: movaps %xmm7, %xmm15
397 ; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm3[0]
398 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
399 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm3[1]
400 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
401 ; SSE-NEXT: movaps %xmm5, %xmm3
402 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm1[0]
403 ; SSE-NEXT: movaps %xmm3, (%rsp) # 16-byte Spill
404 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]
405 ; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
406 ; SSE-NEXT: movaps %xmm10, %xmm1
407 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm4[0]
408 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
409 ; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm4[1]
410 ; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
411 ; SSE-NEXT: movaps %xmm9, %xmm1
412 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
413 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
414 ; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm2[1]
415 ; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
416 ; SSE-NEXT: movaps %xmm8, %xmm1
417 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm14[0]
418 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
419 ; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm14[1]
420 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
421 ; SSE-NEXT: movaps %xmm6, %xmm1
422 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm11[0]
423 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
424 ; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm11[1]
425 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
426 ; SSE-NEXT: movaps %xmm13, %xmm1
427 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
428 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
429 ; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]
430 ; SSE-NEXT: movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
431 ; SSE-NEXT: movaps 256(%rdi), %xmm0
432 ; SSE-NEXT: movaps %xmm0, %xmm1
433 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm12[0]
434 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
435 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm12[1]
436 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
437 ; SSE-NEXT: movaps 368(%rdi), %xmm0
438 ; SSE-NEXT: movaps 352(%rdi), %xmm15
439 ; SSE-NEXT: movaps %xmm15, %xmm1
440 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
441 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
442 ; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]
443 ; SSE-NEXT: movaps 336(%rdi), %xmm0
444 ; SSE-NEXT: movaps 320(%rdi), %xmm13
445 ; SSE-NEXT: movaps %xmm13, %xmm11
446 ; SSE-NEXT: movlhps {{.*#+}} xmm11 = xmm11[0],xmm0[0]
447 ; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]
448 ; SSE-NEXT: movaps 432(%rdi), %xmm0
449 ; SSE-NEXT: movaps 416(%rdi), %xmm12
450 ; SSE-NEXT: movaps %xmm12, %xmm14
451 ; SSE-NEXT: movlhps {{.*#+}} xmm14 = xmm14[0],xmm0[0]
452 ; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm0[1]
453 ; SSE-NEXT: movaps 400(%rdi), %xmm0
454 ; SSE-NEXT: movaps 384(%rdi), %xmm9
455 ; SSE-NEXT: movaps %xmm9, %xmm10
456 ; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm0[0]
457 ; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm0[1]
458 ; SSE-NEXT: movaps 496(%rdi), %xmm0
459 ; SSE-NEXT: movaps 480(%rdi), %xmm7
460 ; SSE-NEXT: movaps %xmm7, %xmm6
461 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm0[0]
462 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm0[1]
463 ; SSE-NEXT: movaps 464(%rdi), %xmm1
464 ; SSE-NEXT: movaps 448(%rdi), %xmm3
465 ; SSE-NEXT: movaps %xmm3, %xmm2
466 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
467 ; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm1[1]
468 ; SSE-NEXT: movaps 32(%rdi), %xmm8
469 ; SSE-NEXT: movaps 48(%rdi), %xmm1
470 ; SSE-NEXT: movaps %xmm8, %xmm5
471 ; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm1[0]
472 ; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm1[1]
473 ; SSE-NEXT: movaps (%rdi), %xmm4
474 ; SSE-NEXT: movaps 16(%rdi), %xmm0
475 ; SSE-NEXT: movaps %xmm4, %xmm1
476 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
477 ; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm0[1]
478 ; SSE-NEXT: movaps %xmm2, 224(%rsi)
479 ; SSE-NEXT: movaps %xmm11, 160(%rsi)
480 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
481 ; SSE-NEXT: movaps %xmm0, 96(%rsi)
482 ; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload
483 ; SSE-NEXT: movaps %xmm0, 32(%rsi)
484 ; SSE-NEXT: movaps %xmm6, 240(%rsi)
485 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
486 ; SSE-NEXT: movaps %xmm0, 176(%rsi)
487 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
488 ; SSE-NEXT: movaps %xmm0, 112(%rsi)
489 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
490 ; SSE-NEXT: movaps %xmm0, 48(%rsi)
491 ; SSE-NEXT: movaps %xmm10, 192(%rsi)
492 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
493 ; SSE-NEXT: movaps %xmm0, 128(%rsi)
494 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
495 ; SSE-NEXT: movaps %xmm0, 64(%rsi)
496 ; SSE-NEXT: movaps %xmm1, (%rsi)
497 ; SSE-NEXT: movaps %xmm14, 208(%rsi)
498 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
499 ; SSE-NEXT: movaps %xmm0, 144(%rsi)
500 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
501 ; SSE-NEXT: movaps %xmm0, 80(%rsi)
502 ; SSE-NEXT: movaps %xmm5, 16(%rsi)
503 ; SSE-NEXT: movaps %xmm3, 224(%rdx)
504 ; SSE-NEXT: movaps %xmm7, 240(%rdx)
505 ; SSE-NEXT: movaps %xmm9, 192(%rdx)
506 ; SSE-NEXT: movaps %xmm12, 208(%rdx)
507 ; SSE-NEXT: movaps %xmm13, 160(%rdx)
508 ; SSE-NEXT: movaps %xmm15, 176(%rdx)
509 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
510 ; SSE-NEXT: movaps %xmm0, 128(%rdx)
511 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
512 ; SSE-NEXT: movaps %xmm0, 144(%rdx)
513 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
514 ; SSE-NEXT: movaps %xmm0, 96(%rdx)
515 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
516 ; SSE-NEXT: movaps %xmm0, 112(%rdx)
517 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
518 ; SSE-NEXT: movaps %xmm0, 64(%rdx)
519 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
520 ; SSE-NEXT: movaps %xmm0, 80(%rdx)
521 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
522 ; SSE-NEXT: movaps %xmm0, 32(%rdx)
523 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
524 ; SSE-NEXT: movaps %xmm0, 48(%rdx)
525 ; SSE-NEXT: movaps %xmm4, (%rdx)
526 ; SSE-NEXT: movaps %xmm8, 16(%rdx)
527 ; SSE-NEXT: addq $152, %rsp
530 ; AVX1-ONLY-LABEL: load_i64_stride2_vf32:
531 ; AVX1-ONLY: # %bb.0:
532 ; AVX1-ONLY-NEXT: vmovaps 384(%rdi), %ymm4
533 ; AVX1-ONLY-NEXT: vmovaps 256(%rdi), %ymm6
534 ; AVX1-ONLY-NEXT: vmovaps 320(%rdi), %ymm5
535 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %ymm1
536 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %ymm2
537 ; AVX1-ONLY-NEXT: vmovaps 128(%rdi), %ymm9
538 ; AVX1-ONLY-NEXT: vmovaps 192(%rdi), %ymm3
539 ; AVX1-ONLY-NEXT: vmovaps 448(%rdi), %ymm0
540 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm8 = ymm0[2,3],mem[2,3]
541 ; AVX1-ONLY-NEXT: vinsertf128 $1, 480(%rdi), %ymm0, %ymm10
542 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm10[0],ymm8[0],ymm10[2],ymm8[2]
543 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
544 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm7 = ymm2[2,3],mem[2,3]
545 ; AVX1-ONLY-NEXT: vinsertf128 $1, 96(%rdi), %ymm2, %ymm11
546 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm11[0],ymm7[0],ymm11[2],ymm7[2]
547 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm12 = ymm3[2,3],mem[2,3]
548 ; AVX1-ONLY-NEXT: vinsertf128 $1, 224(%rdi), %ymm3, %ymm13
549 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm13[0],ymm12[0],ymm13[2],ymm12[2]
550 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm14 = ymm5[2,3],mem[2,3]
551 ; AVX1-ONLY-NEXT: vinsertf128 $1, 352(%rdi), %ymm5, %ymm15
552 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm15[0],ymm14[0],ymm15[2],ymm14[2]
553 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm11[1],ymm7[1],ymm11[3],ymm7[3]
554 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm11 = ymm9[2,3],mem[2,3]
555 ; AVX1-ONLY-NEXT: vinsertf128 $1, 160(%rdi), %ymm9, %ymm9
556 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm13[1],ymm12[1],ymm13[3],ymm12[3]
557 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm13 = ymm6[2,3],mem[2,3]
558 ; AVX1-ONLY-NEXT: vinsertf128 $1, 288(%rdi), %ymm6, %ymm6
559 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm14 = ymm15[1],ymm14[1],ymm15[3],ymm14[3]
560 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm15 = ymm4[2,3],mem[2,3]
561 ; AVX1-ONLY-NEXT: vinsertf128 $1, 416(%rdi), %ymm4, %ymm4
562 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm10[1],ymm8[1],ymm10[3],ymm8[3]
563 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm4[0],ymm15[0],ymm4[2],ymm15[2]
564 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm4[1],ymm15[1],ymm4[3],ymm15[3]
565 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm6[0],ymm13[0],ymm6[2],ymm13[2]
566 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm6[1],ymm13[1],ymm6[3],ymm13[3]
567 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm9[0],ymm11[0],ymm9[2],ymm11[2]
568 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm9 = ymm9[1],ymm11[1],ymm9[3],ymm11[3]
569 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm11 = ymm1[2,3],mem[2,3]
570 ; AVX1-ONLY-NEXT: vinsertf128 $1, 32(%rdi), %ymm1, %ymm1
571 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm11[0],ymm1[2],ymm11[2]
572 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm11[1],ymm1[3],ymm11[3]
573 ; AVX1-ONLY-NEXT: vmovaps %ymm10, 192(%rsi)
574 ; AVX1-ONLY-NEXT: vmovaps %ymm15, 128(%rsi)
575 ; AVX1-ONLY-NEXT: vmovaps %ymm13, 64(%rsi)
576 ; AVX1-ONLY-NEXT: vmovaps %ymm0, (%rsi)
577 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 160(%rsi)
578 ; AVX1-ONLY-NEXT: vmovaps %ymm3, 96(%rsi)
579 ; AVX1-ONLY-NEXT: vmovaps %ymm2, 32(%rsi)
580 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
581 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 224(%rsi)
582 ; AVX1-ONLY-NEXT: vmovaps %ymm1, (%rdx)
583 ; AVX1-ONLY-NEXT: vmovaps %ymm9, 64(%rdx)
584 ; AVX1-ONLY-NEXT: vmovaps %ymm6, 128(%rdx)
585 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 192(%rdx)
586 ; AVX1-ONLY-NEXT: vmovaps %ymm8, 224(%rdx)
587 ; AVX1-ONLY-NEXT: vmovaps %ymm14, 160(%rdx)
588 ; AVX1-ONLY-NEXT: vmovaps %ymm12, 96(%rdx)
589 ; AVX1-ONLY-NEXT: vmovaps %ymm7, 32(%rdx)
590 ; AVX1-ONLY-NEXT: vzeroupper
591 ; AVX1-ONLY-NEXT: retq
593 ; AVX2-ONLY-LABEL: load_i64_stride2_vf32:
594 ; AVX2-ONLY: # %bb.0:
595 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm1
596 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm3
597 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm4
598 ; AVX2-ONLY-NEXT: vmovaps 416(%rdi), %ymm10
599 ; AVX2-ONLY-NEXT: vmovaps 384(%rdi), %ymm12
600 ; AVX2-ONLY-NEXT: vmovaps 288(%rdi), %ymm8
601 ; AVX2-ONLY-NEXT: vmovaps 256(%rdi), %ymm11
602 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %ymm7
603 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %ymm9
604 ; AVX2-ONLY-NEXT: vmovaps 480(%rdi), %ymm6
605 ; AVX2-ONLY-NEXT: vmovaps 448(%rdi), %ymm14
606 ; AVX2-ONLY-NEXT: vmovaps 352(%rdi), %ymm5
607 ; AVX2-ONLY-NEXT: vmovaps 320(%rdi), %ymm15
608 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %ymm2
609 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %ymm13
610 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm13[0],ymm2[0],ymm13[2],ymm2[2]
611 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
612 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm13[1],ymm2[1],ymm13[3],ymm2[3]
613 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm15[0],ymm5[0],ymm15[2],ymm5[2]
614 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm5 = ymm15[1],ymm5[1],ymm15[3],ymm5[3]
615 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm14[0],ymm6[0],ymm14[2],ymm6[2]
616 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm14[1],ymm6[1],ymm14[3],ymm6[3]
617 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm14 = ymm12[0],ymm10[0],ymm12[2],ymm10[2]
618 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm10 = ymm12[1],ymm10[1],ymm12[3],ymm10[3]
619 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm11[0],ymm8[0],ymm11[2],ymm8[2]
620 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm11[1],ymm8[1],ymm11[3],ymm8[3]
621 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm9[0],ymm7[0],ymm9[2],ymm7[2]
622 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm9[1],ymm7[1],ymm9[3],ymm7[3]
623 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm9 = ymm3[0],ymm4[0],ymm3[2],ymm4[2]
624 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm4[1],ymm3[3],ymm4[3]
625 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm4
626 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm4[0],ymm1[2],ymm4[2]
627 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm4[1],ymm1[3],ymm4[3]
628 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm4 = ymm14[0,2,1,3]
629 ; AVX2-ONLY-NEXT: vmovaps %ymm4, 192(%rsi)
630 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm4 = ymm12[0,2,1,3]
631 ; AVX2-ONLY-NEXT: vmovaps %ymm4, 128(%rsi)
632 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm4 = ymm11[0,2,1,3]
633 ; AVX2-ONLY-NEXT: vmovaps %ymm4, 64(%rsi)
634 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]
635 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%rsi)
636 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm15[0,2,1,3]
637 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 224(%rsi)
638 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm13[0,2,1,3]
639 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 160(%rsi)
640 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
641 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
642 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 96(%rsi)
643 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm9[0,2,1,3]
644 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 32(%rsi)
645 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm1[0,2,1,3]
646 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%rdx)
647 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm7[0,2,1,3]
648 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 64(%rdx)
649 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm8[0,2,1,3]
650 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 128(%rdx)
651 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm10[0,2,1,3]
652 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 192(%rdx)
653 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm6[0,2,1,3]
654 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 224(%rdx)
655 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm5[0,2,1,3]
656 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 160(%rdx)
657 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm2[0,2,1,3]
658 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 96(%rdx)
659 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm3[0,2,1,3]
660 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 32(%rdx)
661 ; AVX2-ONLY-NEXT: vzeroupper
662 ; AVX2-ONLY-NEXT: retq
664 ; AVX512-LABEL: load_i64_stride2_vf32:
666 ; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0
667 ; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1
668 ; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm2
669 ; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm3
670 ; AVX512-NEXT: vmovdqa64 448(%rdi), %zmm4
671 ; AVX512-NEXT: vmovdqa64 384(%rdi), %zmm5
672 ; AVX512-NEXT: vmovdqa64 320(%rdi), %zmm6
673 ; AVX512-NEXT: vmovdqa64 256(%rdi), %zmm7
674 ; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14]
675 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm9
676 ; AVX512-NEXT: vpermt2q %zmm6, %zmm8, %zmm9
677 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm10
678 ; AVX512-NEXT: vpermt2q %zmm4, %zmm8, %zmm10
679 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm11
680 ; AVX512-NEXT: vpermt2q %zmm3, %zmm8, %zmm11
681 ; AVX512-NEXT: vpermi2q %zmm1, %zmm0, %zmm8
682 ; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15]
683 ; AVX512-NEXT: vpermt2q %zmm4, %zmm12, %zmm5
684 ; AVX512-NEXT: vpermt2q %zmm6, %zmm12, %zmm7
685 ; AVX512-NEXT: vpermt2q %zmm3, %zmm12, %zmm2
686 ; AVX512-NEXT: vpermt2q %zmm1, %zmm12, %zmm0
687 ; AVX512-NEXT: vmovdqa64 %zmm10, 192(%rsi)
688 ; AVX512-NEXT: vmovdqa64 %zmm8, (%rsi)
689 ; AVX512-NEXT: vmovdqa64 %zmm11, 64(%rsi)
690 ; AVX512-NEXT: vmovdqa64 %zmm9, 128(%rsi)
691 ; AVX512-NEXT: vmovdqa64 %zmm7, 128(%rdx)
692 ; AVX512-NEXT: vmovdqa64 %zmm5, 192(%rdx)
693 ; AVX512-NEXT: vmovdqa64 %zmm0, (%rdx)
694 ; AVX512-NEXT: vmovdqa64 %zmm2, 64(%rdx)
695 ; AVX512-NEXT: vzeroupper
697 %wide.vec = load <64 x i64>, ptr %in.vec, align 64
698 %strided.vec0 = shufflevector <64 x i64> %wide.vec, <64 x i64> poison, <32 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30, i32 32, i32 34, i32 36, i32 38, i32 40, i32 42, i32 44, i32 46, i32 48, i32 50, i32 52, i32 54, i32 56, i32 58, i32 60, i32 62>
699 %strided.vec1 = shufflevector <64 x i64> %wide.vec, <64 x i64> poison, <32 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31, i32 33, i32 35, i32 37, i32 39, i32 41, i32 43, i32 45, i32 47, i32 49, i32 51, i32 53, i32 55, i32 57, i32 59, i32 61, i32 63>
700 store <32 x i64> %strided.vec0, ptr %out.vec0, align 64
701 store <32 x i64> %strided.vec1, ptr %out.vec1, align 64
705 define void @load_i64_stride2_vf64(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {
706 ; SSE-LABEL: load_i64_stride2_vf64:
708 ; SSE-NEXT: subq $664, %rsp # imm = 0x298
709 ; SSE-NEXT: movaps 304(%rdi), %xmm0
710 ; SSE-NEXT: movaps 272(%rdi), %xmm1
711 ; SSE-NEXT: movaps 256(%rdi), %xmm8
712 ; SSE-NEXT: movaps 240(%rdi), %xmm2
713 ; SSE-NEXT: movaps 224(%rdi), %xmm9
714 ; SSE-NEXT: movaps 208(%rdi), %xmm3
715 ; SSE-NEXT: movaps 192(%rdi), %xmm10
716 ; SSE-NEXT: movaps 176(%rdi), %xmm4
717 ; SSE-NEXT: movaps 160(%rdi), %xmm11
718 ; SSE-NEXT: movaps 144(%rdi), %xmm5
719 ; SSE-NEXT: movaps 128(%rdi), %xmm12
720 ; SSE-NEXT: movaps 112(%rdi), %xmm6
721 ; SSE-NEXT: movaps 96(%rdi), %xmm13
722 ; SSE-NEXT: movaps 80(%rdi), %xmm7
723 ; SSE-NEXT: movaps 64(%rdi), %xmm14
724 ; SSE-NEXT: movaps %xmm14, %xmm15
725 ; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm7[0]
726 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
727 ; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm7[1]
728 ; SSE-NEXT: movaps %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
729 ; SSE-NEXT: movaps %xmm13, %xmm7
730 ; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm6[0]
731 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
732 ; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm6[1]
733 ; SSE-NEXT: movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
734 ; SSE-NEXT: movaps %xmm12, %xmm6
735 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm5[0]
736 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
737 ; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm5[1]
738 ; SSE-NEXT: movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
739 ; SSE-NEXT: movaps %xmm11, %xmm5
740 ; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm4[0]
741 ; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
742 ; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm4[1]
743 ; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
744 ; SSE-NEXT: movaps %xmm10, %xmm4
745 ; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm3[0]
746 ; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
747 ; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm3[1]
748 ; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
749 ; SSE-NEXT: movaps %xmm9, %xmm3
750 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm2[0]
751 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
752 ; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm2[1]
753 ; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
754 ; SSE-NEXT: movaps %xmm8, %xmm2
755 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
756 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
757 ; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm1[1]
758 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
759 ; SSE-NEXT: movaps 288(%rdi), %xmm1
760 ; SSE-NEXT: movaps %xmm1, %xmm2
761 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
762 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
763 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
764 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
765 ; SSE-NEXT: movaps 336(%rdi), %xmm0
766 ; SSE-NEXT: movaps 320(%rdi), %xmm1
767 ; SSE-NEXT: movaps %xmm1, %xmm2
768 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
769 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
770 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
771 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
772 ; SSE-NEXT: movaps 368(%rdi), %xmm0
773 ; SSE-NEXT: movaps 352(%rdi), %xmm1
774 ; SSE-NEXT: movaps %xmm1, %xmm2
775 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
776 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
777 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
778 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
779 ; SSE-NEXT: movaps 400(%rdi), %xmm0
780 ; SSE-NEXT: movaps 384(%rdi), %xmm1
781 ; SSE-NEXT: movaps %xmm1, %xmm2
782 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
783 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
784 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
785 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
786 ; SSE-NEXT: movaps 432(%rdi), %xmm0
787 ; SSE-NEXT: movaps 416(%rdi), %xmm1
788 ; SSE-NEXT: movaps %xmm1, %xmm2
789 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
790 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
791 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
792 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
793 ; SSE-NEXT: movaps 464(%rdi), %xmm0
794 ; SSE-NEXT: movaps 448(%rdi), %xmm1
795 ; SSE-NEXT: movaps %xmm1, %xmm2
796 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
797 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
798 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
799 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
800 ; SSE-NEXT: movaps 496(%rdi), %xmm0
801 ; SSE-NEXT: movaps 480(%rdi), %xmm1
802 ; SSE-NEXT: movaps %xmm1, %xmm2
803 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
804 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
805 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
806 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
807 ; SSE-NEXT: movaps 528(%rdi), %xmm0
808 ; SSE-NEXT: movaps 512(%rdi), %xmm1
809 ; SSE-NEXT: movaps %xmm1, %xmm2
810 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
811 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
812 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
813 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
814 ; SSE-NEXT: movaps 560(%rdi), %xmm0
815 ; SSE-NEXT: movaps 544(%rdi), %xmm1
816 ; SSE-NEXT: movaps %xmm1, %xmm2
817 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
818 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
819 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
820 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
821 ; SSE-NEXT: movaps 592(%rdi), %xmm0
822 ; SSE-NEXT: movaps 576(%rdi), %xmm1
823 ; SSE-NEXT: movaps %xmm1, %xmm2
824 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
825 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
826 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
827 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
828 ; SSE-NEXT: movaps 624(%rdi), %xmm0
829 ; SSE-NEXT: movaps 608(%rdi), %xmm1
830 ; SSE-NEXT: movaps %xmm1, %xmm2
831 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
832 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
833 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
834 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
835 ; SSE-NEXT: movaps 656(%rdi), %xmm0
836 ; SSE-NEXT: movaps 640(%rdi), %xmm1
837 ; SSE-NEXT: movaps %xmm1, %xmm2
838 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
839 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
840 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
841 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
842 ; SSE-NEXT: movaps 688(%rdi), %xmm0
843 ; SSE-NEXT: movaps 672(%rdi), %xmm1
844 ; SSE-NEXT: movaps %xmm1, %xmm2
845 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
846 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
847 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
848 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
849 ; SSE-NEXT: movaps 720(%rdi), %xmm0
850 ; SSE-NEXT: movaps 704(%rdi), %xmm1
851 ; SSE-NEXT: movaps %xmm1, %xmm2
852 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
853 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
854 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
855 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
856 ; SSE-NEXT: movaps 752(%rdi), %xmm0
857 ; SSE-NEXT: movaps 736(%rdi), %xmm1
858 ; SSE-NEXT: movaps %xmm1, %xmm2
859 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
860 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
861 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
862 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
863 ; SSE-NEXT: movaps 784(%rdi), %xmm0
864 ; SSE-NEXT: movaps 768(%rdi), %xmm1
865 ; SSE-NEXT: movaps %xmm1, %xmm2
866 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
867 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
868 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
869 ; SSE-NEXT: movaps %xmm1, (%rsp) # 16-byte Spill
870 ; SSE-NEXT: movaps 816(%rdi), %xmm0
871 ; SSE-NEXT: movaps 800(%rdi), %xmm1
872 ; SSE-NEXT: movaps %xmm1, %xmm2
873 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
874 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
875 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
876 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
877 ; SSE-NEXT: movaps 848(%rdi), %xmm0
878 ; SSE-NEXT: movaps 832(%rdi), %xmm1
879 ; SSE-NEXT: movaps %xmm1, %xmm12
880 ; SSE-NEXT: movlhps {{.*#+}} xmm12 = xmm12[0],xmm0[0]
881 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
882 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
883 ; SSE-NEXT: movaps 880(%rdi), %xmm0
884 ; SSE-NEXT: movaps 864(%rdi), %xmm15
885 ; SSE-NEXT: movaps %xmm15, %xmm7
886 ; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm0[0]
887 ; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]
888 ; SSE-NEXT: movaps 912(%rdi), %xmm0
889 ; SSE-NEXT: movaps 896(%rdi), %xmm13
890 ; SSE-NEXT: movaps %xmm13, %xmm9
891 ; SSE-NEXT: movlhps {{.*#+}} xmm9 = xmm9[0],xmm0[0]
892 ; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]
893 ; SSE-NEXT: movaps 944(%rdi), %xmm0
894 ; SSE-NEXT: movaps 928(%rdi), %xmm8
895 ; SSE-NEXT: movaps %xmm8, %xmm2
896 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
897 ; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm0[1]
898 ; SSE-NEXT: movaps 976(%rdi), %xmm0
899 ; SSE-NEXT: movaps 960(%rdi), %xmm6
900 ; SSE-NEXT: movaps %xmm6, %xmm1
901 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
902 ; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm0[1]
903 ; SSE-NEXT: movaps 1008(%rdi), %xmm3
904 ; SSE-NEXT: movaps 992(%rdi), %xmm5
905 ; SSE-NEXT: movaps %xmm5, %xmm4
906 ; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm3[0]
907 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm3[1]
908 ; SSE-NEXT: movaps (%rdi), %xmm14
909 ; SSE-NEXT: movaps 16(%rdi), %xmm3
910 ; SSE-NEXT: movaps %xmm14, %xmm10
911 ; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm3[0]
912 ; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm3[1]
913 ; SSE-NEXT: movaps 32(%rdi), %xmm11
914 ; SSE-NEXT: movaps 48(%rdi), %xmm0
915 ; SSE-NEXT: movaps %xmm11, %xmm3
916 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm0[0]
917 ; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm0[1]
918 ; SSE-NEXT: movaps %xmm4, 496(%rsi)
919 ; SSE-NEXT: movaps %xmm1, 480(%rsi)
920 ; SSE-NEXT: movaps %xmm2, 464(%rsi)
921 ; SSE-NEXT: movaps %xmm9, 448(%rsi)
922 ; SSE-NEXT: movaps %xmm7, 432(%rsi)
923 ; SSE-NEXT: movaps %xmm12, 416(%rsi)
924 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
925 ; SSE-NEXT: movaps %xmm0, 400(%rsi)
926 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
927 ; SSE-NEXT: movaps %xmm0, 384(%rsi)
928 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
929 ; SSE-NEXT: movaps %xmm0, 368(%rsi)
930 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
931 ; SSE-NEXT: movaps %xmm0, 352(%rsi)
932 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
933 ; SSE-NEXT: movaps %xmm0, 336(%rsi)
934 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
935 ; SSE-NEXT: movaps %xmm0, 320(%rsi)
936 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
937 ; SSE-NEXT: movaps %xmm0, 304(%rsi)
938 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
939 ; SSE-NEXT: movaps %xmm0, 288(%rsi)
940 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
941 ; SSE-NEXT: movaps %xmm0, 272(%rsi)
942 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
943 ; SSE-NEXT: movaps %xmm0, 256(%rsi)
944 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
945 ; SSE-NEXT: movaps %xmm0, 240(%rsi)
946 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
947 ; SSE-NEXT: movaps %xmm0, 224(%rsi)
948 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
949 ; SSE-NEXT: movaps %xmm0, 208(%rsi)
950 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
951 ; SSE-NEXT: movaps %xmm0, 192(%rsi)
952 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
953 ; SSE-NEXT: movaps %xmm0, 176(%rsi)
954 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
955 ; SSE-NEXT: movaps %xmm0, 160(%rsi)
956 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
957 ; SSE-NEXT: movaps %xmm0, 144(%rsi)
958 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
959 ; SSE-NEXT: movaps %xmm0, 128(%rsi)
960 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
961 ; SSE-NEXT: movaps %xmm0, 112(%rsi)
962 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
963 ; SSE-NEXT: movaps %xmm0, 96(%rsi)
964 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
965 ; SSE-NEXT: movaps %xmm0, 80(%rsi)
966 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
967 ; SSE-NEXT: movaps %xmm0, 64(%rsi)
968 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
969 ; SSE-NEXT: movaps %xmm0, 48(%rsi)
970 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
971 ; SSE-NEXT: movaps %xmm0, 32(%rsi)
972 ; SSE-NEXT: movaps %xmm3, 16(%rsi)
973 ; SSE-NEXT: movaps %xmm10, (%rsi)
974 ; SSE-NEXT: movaps %xmm5, 496(%rdx)
975 ; SSE-NEXT: movaps %xmm6, 480(%rdx)
976 ; SSE-NEXT: movaps %xmm8, 464(%rdx)
977 ; SSE-NEXT: movaps %xmm13, 448(%rdx)
978 ; SSE-NEXT: movaps %xmm15, 432(%rdx)
979 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
980 ; SSE-NEXT: movaps %xmm0, 416(%rdx)
981 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
982 ; SSE-NEXT: movaps %xmm0, 400(%rdx)
983 ; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload
984 ; SSE-NEXT: movaps %xmm0, 384(%rdx)
985 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
986 ; SSE-NEXT: movaps %xmm0, 368(%rdx)
987 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
988 ; SSE-NEXT: movaps %xmm0, 352(%rdx)
989 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
990 ; SSE-NEXT: movaps %xmm0, 336(%rdx)
991 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
992 ; SSE-NEXT: movaps %xmm0, 320(%rdx)
993 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
994 ; SSE-NEXT: movaps %xmm0, 304(%rdx)
995 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
996 ; SSE-NEXT: movaps %xmm0, 288(%rdx)
997 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
998 ; SSE-NEXT: movaps %xmm0, 272(%rdx)
999 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1000 ; SSE-NEXT: movaps %xmm0, 256(%rdx)
1001 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1002 ; SSE-NEXT: movaps %xmm0, 240(%rdx)
1003 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1004 ; SSE-NEXT: movaps %xmm0, 224(%rdx)
1005 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1006 ; SSE-NEXT: movaps %xmm0, 208(%rdx)
1007 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1008 ; SSE-NEXT: movaps %xmm0, 192(%rdx)
1009 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1010 ; SSE-NEXT: movaps %xmm0, 176(%rdx)
1011 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1012 ; SSE-NEXT: movaps %xmm0, 160(%rdx)
1013 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1014 ; SSE-NEXT: movaps %xmm0, 144(%rdx)
1015 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1016 ; SSE-NEXT: movaps %xmm0, 128(%rdx)
1017 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1018 ; SSE-NEXT: movaps %xmm0, 112(%rdx)
1019 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1020 ; SSE-NEXT: movaps %xmm0, 96(%rdx)
1021 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1022 ; SSE-NEXT: movaps %xmm0, 80(%rdx)
1023 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1024 ; SSE-NEXT: movaps %xmm0, 64(%rdx)
1025 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1026 ; SSE-NEXT: movaps %xmm0, 48(%rdx)
1027 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1028 ; SSE-NEXT: movaps %xmm0, 32(%rdx)
1029 ; SSE-NEXT: movaps %xmm11, 16(%rdx)
1030 ; SSE-NEXT: movaps %xmm14, (%rdx)
1031 ; SSE-NEXT: addq $664, %rsp # imm = 0x298
1034 ; AVX1-ONLY-LABEL: load_i64_stride2_vf64:
1035 ; AVX1-ONLY: # %bb.0:
1036 ; AVX1-ONLY-NEXT: subq $424, %rsp # imm = 0x1A8
1037 ; AVX1-ONLY-NEXT: vmovaps 384(%rdi), %ymm7
1038 ; AVX1-ONLY-NEXT: vmovaps 256(%rdi), %ymm8
1039 ; AVX1-ONLY-NEXT: vmovaps 448(%rdi), %ymm2
1040 ; AVX1-ONLY-NEXT: vmovaps 320(%rdi), %ymm4
1041 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %ymm11
1042 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %ymm0
1043 ; AVX1-ONLY-NEXT: vmovaps 128(%rdi), %ymm5
1044 ; AVX1-ONLY-NEXT: vmovaps 192(%rdi), %ymm9
1045 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm3 = ymm0[2,3],mem[2,3]
1046 ; AVX1-ONLY-NEXT: vinsertf128 $1, 96(%rdi), %ymm0, %ymm1
1047 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm3[0],ymm1[2],ymm3[2]
1048 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1049 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm6 = ymm9[2,3],mem[2,3]
1050 ; AVX1-ONLY-NEXT: vinsertf128 $1, 224(%rdi), %ymm9, %ymm12
1051 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm12[0],ymm6[0],ymm12[2],ymm6[2]
1052 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1053 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm4[2,3],mem[2,3]
1054 ; AVX1-ONLY-NEXT: vinsertf128 $1, 352(%rdi), %ymm4, %ymm9
1055 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm9[0],ymm0[0],ymm9[2],ymm0[2]
1056 ; AVX1-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1057 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm10 = ymm2[2,3],mem[2,3]
1058 ; AVX1-ONLY-NEXT: vinsertf128 $1, 480(%rdi), %ymm2, %ymm13
1059 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm11[2,3],mem[2,3]
1060 ; AVX1-ONLY-NEXT: vinsertf128 $1, 32(%rdi), %ymm11, %ymm4
1061 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm3[1],ymm1[3],ymm3[3]
1062 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1063 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm1 = ymm4[0],ymm2[0],ymm4[2],ymm2[2]
1064 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1065 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm4[1],ymm2[1],ymm4[3],ymm2[3]
1066 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1067 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm5[2,3],mem[2,3]
1068 ; AVX1-ONLY-NEXT: vinsertf128 $1, 160(%rdi), %ymm5, %ymm2
1069 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm12[1],ymm6[1],ymm12[3],ymm6[3]
1070 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1071 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm2[0],ymm1[0],ymm2[2],ymm1[2]
1072 ; AVX1-ONLY-NEXT: vmovups %ymm3, (%rsp) # 32-byte Spill
1073 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm2[1],ymm1[1],ymm2[3],ymm1[3]
1074 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1075 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm8[2,3],mem[2,3]
1076 ; AVX1-ONLY-NEXT: vinsertf128 $1, 288(%rdi), %ymm8, %ymm2
1077 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm9[1],ymm0[1],ymm9[3],ymm0[3]
1078 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1079 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm2[0],ymm1[0],ymm2[2],ymm1[2]
1080 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1081 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm1[1],ymm2[3],ymm1[3]
1082 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1083 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm13[0],ymm10[0],ymm13[2],ymm10[2]
1084 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1085 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm13[1],ymm10[1],ymm13[3],ymm10[3]
1086 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1087 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm7[2,3],mem[2,3]
1088 ; AVX1-ONLY-NEXT: vinsertf128 $1, 416(%rdi), %ymm7, %ymm1
1089 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1090 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1091 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1092 ; AVX1-ONLY-NEXT: vmovaps 576(%rdi), %ymm0
1093 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm0[2,3],mem[2,3]
1094 ; AVX1-ONLY-NEXT: vinsertf128 $1, 608(%rdi), %ymm0, %ymm0
1095 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
1096 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
1097 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1098 ; AVX1-ONLY-NEXT: vmovaps 512(%rdi), %ymm0
1099 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm0[2,3],mem[2,3]
1100 ; AVX1-ONLY-NEXT: vinsertf128 $1, 544(%rdi), %ymm0, %ymm2
1101 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm2[0],ymm1[0],ymm2[2],ymm1[2]
1102 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm1[1],ymm2[3],ymm1[3]
1103 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1104 ; AVX1-ONLY-NEXT: vmovaps 704(%rdi), %ymm1
1105 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm3 = ymm1[2,3],mem[2,3]
1106 ; AVX1-ONLY-NEXT: vinsertf128 $1, 736(%rdi), %ymm1, %ymm1
1107 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm1[0],ymm3[0],ymm1[2],ymm3[2]
1108 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm14 = ymm1[1],ymm3[1],ymm1[3],ymm3[3]
1109 ; AVX1-ONLY-NEXT: vmovaps 640(%rdi), %ymm1
1110 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm3 = ymm1[2,3],mem[2,3]
1111 ; AVX1-ONLY-NEXT: vinsertf128 $1, 672(%rdi), %ymm1, %ymm1
1112 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm6 = ymm1[0],ymm3[0],ymm1[2],ymm3[2]
1113 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm1[1],ymm3[1],ymm1[3],ymm3[3]
1114 ; AVX1-ONLY-NEXT: vmovaps 832(%rdi), %ymm1
1115 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],mem[2,3]
1116 ; AVX1-ONLY-NEXT: vinsertf128 $1, 864(%rdi), %ymm1, %ymm1
1117 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm7 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1118 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm9 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1119 ; AVX1-ONLY-NEXT: vmovaps 768(%rdi), %ymm0
1120 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm0[2,3],mem[2,3]
1121 ; AVX1-ONLY-NEXT: vinsertf128 $1, 800(%rdi), %ymm0, %ymm0
1122 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
1123 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
1124 ; AVX1-ONLY-NEXT: vmovaps 960(%rdi), %ymm1
1125 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],mem[2,3]
1126 ; AVX1-ONLY-NEXT: vinsertf128 $1, 992(%rdi), %ymm1, %ymm1
1127 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1128 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm5 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1129 ; AVX1-ONLY-NEXT: vmovaps 896(%rdi), %ymm1
1130 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],mem[2,3]
1131 ; AVX1-ONLY-NEXT: vinsertf128 $1, 928(%rdi), %ymm1, %ymm1
1132 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1133 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1134 ; AVX1-ONLY-NEXT: vmovaps %ymm2, 448(%rsi)
1135 ; AVX1-ONLY-NEXT: vmovaps %ymm3, 384(%rsi)
1136 ; AVX1-ONLY-NEXT: vmovaps %ymm6, 320(%rsi)
1137 ; AVX1-ONLY-NEXT: vmovaps %ymm10, 256(%rsi)
1138 ; AVX1-ONLY-NEXT: vmovaps %ymm13, 192(%rsi)
1139 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1140 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 128(%rsi)
1141 ; AVX1-ONLY-NEXT: vmovups (%rsp), %ymm1 # 32-byte Reload
1142 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 64(%rsi)
1143 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1144 ; AVX1-ONLY-NEXT: vmovaps %ymm1, (%rsi)
1145 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 480(%rsi)
1146 ; AVX1-ONLY-NEXT: vmovaps %ymm7, 416(%rsi)
1147 ; AVX1-ONLY-NEXT: vmovaps %ymm11, 352(%rsi)
1148 ; AVX1-ONLY-NEXT: vmovaps %ymm15, 288(%rsi)
1149 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1150 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 224(%rsi)
1151 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1152 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 160(%rsi)
1153 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1154 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 96(%rsi)
1155 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1156 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 32(%rsi)
1157 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 448(%rdx)
1158 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 480(%rdx)
1159 ; AVX1-ONLY-NEXT: vmovaps %ymm8, 384(%rdx)
1160 ; AVX1-ONLY-NEXT: vmovaps %ymm9, 416(%rdx)
1161 ; AVX1-ONLY-NEXT: vmovaps %ymm12, 320(%rdx)
1162 ; AVX1-ONLY-NEXT: vmovaps %ymm14, 352(%rdx)
1163 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1164 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 256(%rdx)
1165 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1166 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 288(%rdx)
1167 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1168 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 192(%rdx)
1169 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1170 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 224(%rdx)
1171 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1172 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 128(%rdx)
1173 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1174 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 160(%rdx)
1175 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1176 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 64(%rdx)
1177 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1178 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 96(%rdx)
1179 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1180 ; AVX1-ONLY-NEXT: vmovaps %ymm0, (%rdx)
1181 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1182 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 32(%rdx)
1183 ; AVX1-ONLY-NEXT: addq $424, %rsp # imm = 0x1A8
1184 ; AVX1-ONLY-NEXT: vzeroupper
1185 ; AVX1-ONLY-NEXT: retq
1187 ; AVX2-ONLY-LABEL: load_i64_stride2_vf64:
1188 ; AVX2-ONLY: # %bb.0:
1189 ; AVX2-ONLY-NEXT: subq $424, %rsp # imm = 0x1A8
1190 ; AVX2-ONLY-NEXT: vmovaps 544(%rdi), %ymm9
1191 ; AVX2-ONLY-NEXT: vmovaps 416(%rdi), %ymm6
1192 ; AVX2-ONLY-NEXT: vmovaps 384(%rdi), %ymm7
1193 ; AVX2-ONLY-NEXT: vmovaps 288(%rdi), %ymm0
1194 ; AVX2-ONLY-NEXT: vmovaps 256(%rdi), %ymm1
1195 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %ymm4
1196 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %ymm5
1197 ; AVX2-ONLY-NEXT: vmovaps 608(%rdi), %ymm2
1198 ; AVX2-ONLY-NEXT: vmovaps 576(%rdi), %ymm3
1199 ; AVX2-ONLY-NEXT: vmovaps 480(%rdi), %ymm10
1200 ; AVX2-ONLY-NEXT: vmovaps 448(%rdi), %ymm13
1201 ; AVX2-ONLY-NEXT: vmovaps 352(%rdi), %ymm8
1202 ; AVX2-ONLY-NEXT: vmovaps 320(%rdi), %ymm11
1203 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %ymm12
1204 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %ymm14
1205 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm14[0],ymm12[0],ymm14[2],ymm12[2]
1206 ; AVX2-ONLY-NEXT: vmovups %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1207 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm14[1],ymm12[1],ymm14[3],ymm12[3]
1208 ; AVX2-ONLY-NEXT: vmovups %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1209 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm5[0],ymm4[0],ymm5[2],ymm4[2]
1210 ; AVX2-ONLY-NEXT: vmovups %ymm12, (%rsp) # 32-byte Spill
1211 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm5[1],ymm4[1],ymm5[3],ymm4[3]
1212 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1213 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm11[0],ymm8[0],ymm11[2],ymm8[2]
1214 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1215 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm11[1],ymm8[1],ymm11[3],ymm8[3]
1216 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1217 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1218 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1219 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1220 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1221 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm13[0],ymm10[0],ymm13[2],ymm10[2]
1222 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1223 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm13[1],ymm10[1],ymm13[3],ymm10[3]
1224 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1225 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm7[0],ymm6[0],ymm7[2],ymm6[2]
1226 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm7[1],ymm6[1],ymm7[3],ymm6[3]
1227 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1228 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm3[0],ymm2[0],ymm3[2],ymm2[2]
1229 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1230 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm3[1],ymm2[1],ymm3[3],ymm2[3]
1231 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1232 ; AVX2-ONLY-NEXT: vmovaps 512(%rdi), %ymm0
1233 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm0[0],ymm9[0],ymm0[2],ymm9[2]
1234 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm9[1],ymm0[3],ymm9[3]
1235 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1236 ; AVX2-ONLY-NEXT: vmovaps 736(%rdi), %ymm0
1237 ; AVX2-ONLY-NEXT: vmovaps 704(%rdi), %ymm1
1238 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm14 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1239 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1240 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1241 ; AVX2-ONLY-NEXT: vmovaps 672(%rdi), %ymm0
1242 ; AVX2-ONLY-NEXT: vmovaps 640(%rdi), %ymm2
1243 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm6 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]
1244 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]
1245 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1246 ; AVX2-ONLY-NEXT: vmovaps 864(%rdi), %ymm0
1247 ; AVX2-ONLY-NEXT: vmovaps 832(%rdi), %ymm2
1248 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm8 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]
1249 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]
1250 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1251 ; AVX2-ONLY-NEXT: vmovaps 800(%rdi), %ymm0
1252 ; AVX2-ONLY-NEXT: vmovaps 768(%rdi), %ymm2
1253 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]
1254 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm11 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]
1255 ; AVX2-ONLY-NEXT: vmovaps 992(%rdi), %ymm2
1256 ; AVX2-ONLY-NEXT: vmovaps 960(%rdi), %ymm4
1257 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm4[0],ymm2[0],ymm4[2],ymm2[2]
1258 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm9 = ymm4[1],ymm2[1],ymm4[3],ymm2[3]
1259 ; AVX2-ONLY-NEXT: vmovaps 928(%rdi), %ymm2
1260 ; AVX2-ONLY-NEXT: vmovaps 896(%rdi), %ymm4
1261 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm1 = ymm4[0],ymm2[0],ymm4[2],ymm2[2]
1262 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm4[1],ymm2[1],ymm4[3],ymm2[3]
1263 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm12
1264 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm15
1265 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm12[0],ymm15[0],ymm12[2],ymm15[2]
1266 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm15 = ymm12[1],ymm15[1],ymm12[3],ymm15[3]
1267 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm12
1268 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm0
1269 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm12[0],ymm0[0],ymm12[2],ymm0[2]
1270 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm12[1],ymm0[1],ymm12[3],ymm0[3]
1271 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm1[0,2,1,3]
1272 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 448(%rsi)
1273 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm3[0,2,1,3]
1274 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 384(%rsi)
1275 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm6[0,2,1,3]
1276 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 320(%rsi)
1277 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm10[0,2,1,3]
1278 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 256(%rsi)
1279 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm13[0,2,1,3]
1280 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 192(%rsi)
1281 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1282 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1283 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 128(%rsi)
1284 ; AVX2-ONLY-NEXT: vpermpd $216, (%rsp), %ymm0 # 32-byte Folded Reload
1285 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1286 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 64(%rsi)
1287 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm2[0,2,1,3]
1288 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%rsi)
1289 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm5[0,2,1,3]
1290 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 480(%rsi)
1291 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm8[0,2,1,3]
1292 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 416(%rsi)
1293 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm14[0,2,1,3]
1294 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 352(%rsi)
1295 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1296 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1297 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 288(%rsi)
1298 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1299 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1300 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 224(%rsi)
1301 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1302 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1303 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 160(%rsi)
1304 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1305 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1306 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 96(%rsi)
1307 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm4[0,2,1,3]
1308 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 32(%rsi)
1309 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm7[0,2,1,3]
1310 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 448(%rdx)
1311 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm9[0,2,1,3]
1312 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 480(%rdx)
1313 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm11[0,2,1,3]
1314 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 384(%rdx)
1315 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1316 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1317 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 416(%rdx)
1318 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1319 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1320 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 320(%rdx)
1321 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1322 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1323 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 352(%rdx)
1324 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1325 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1326 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 256(%rdx)
1327 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1328 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1329 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 288(%rdx)
1330 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1331 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1332 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 192(%rdx)
1333 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1334 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1335 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 224(%rdx)
1336 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1337 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1338 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 128(%rdx)
1339 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1340 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1341 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 160(%rdx)
1342 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1343 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1344 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 64(%rdx)
1345 ; AVX2-ONLY-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
1346 ; AVX2-ONLY-NEXT: # ymm0 = mem[0,2,1,3]
1347 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 96(%rdx)
1348 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm12[0,2,1,3]
1349 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%rdx)
1350 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm15[0,2,1,3]
1351 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 32(%rdx)
1352 ; AVX2-ONLY-NEXT: addq $424, %rsp # imm = 0x1A8
1353 ; AVX2-ONLY-NEXT: vzeroupper
1354 ; AVX2-ONLY-NEXT: retq
1356 ; AVX512-LABEL: load_i64_stride2_vf64:
1358 ; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0
1359 ; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1
1360 ; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm2
1361 ; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm3
1362 ; AVX512-NEXT: vmovdqa64 960(%rdi), %zmm4
1363 ; AVX512-NEXT: vmovdqa64 896(%rdi), %zmm5
1364 ; AVX512-NEXT: vmovdqa64 576(%rdi), %zmm6
1365 ; AVX512-NEXT: vmovdqa64 512(%rdi), %zmm7
1366 ; AVX512-NEXT: vmovdqa64 704(%rdi), %zmm8
1367 ; AVX512-NEXT: vmovdqa64 640(%rdi), %zmm9
1368 ; AVX512-NEXT: vmovdqa64 320(%rdi), %zmm10
1369 ; AVX512-NEXT: vmovdqa64 256(%rdi), %zmm11
1370 ; AVX512-NEXT: vmovdqa64 448(%rdi), %zmm12
1371 ; AVX512-NEXT: vmovdqa64 384(%rdi), %zmm13
1372 ; AVX512-NEXT: vmovdqa64 832(%rdi), %zmm14
1373 ; AVX512-NEXT: vmovdqa64 768(%rdi), %zmm15
1374 ; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm16 = [0,2,4,6,8,10,12,14]
1375 ; AVX512-NEXT: vmovdqa64 %zmm15, %zmm17
1376 ; AVX512-NEXT: vpermt2q %zmm14, %zmm16, %zmm17
1377 ; AVX512-NEXT: vmovdqa64 %zmm13, %zmm18
1378 ; AVX512-NEXT: vpermt2q %zmm12, %zmm16, %zmm18
1379 ; AVX512-NEXT: vmovdqa64 %zmm11, %zmm19
1380 ; AVX512-NEXT: vpermt2q %zmm10, %zmm16, %zmm19
1381 ; AVX512-NEXT: vmovdqa64 %zmm9, %zmm20
1382 ; AVX512-NEXT: vpermt2q %zmm8, %zmm16, %zmm20
1383 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm21
1384 ; AVX512-NEXT: vpermt2q %zmm6, %zmm16, %zmm21
1385 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm22
1386 ; AVX512-NEXT: vpermt2q %zmm4, %zmm16, %zmm22
1387 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm23
1388 ; AVX512-NEXT: vpermt2q %zmm3, %zmm16, %zmm23
1389 ; AVX512-NEXT: vpermi2q %zmm1, %zmm0, %zmm16
1390 ; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm24 = [1,3,5,7,9,11,13,15]
1391 ; AVX512-NEXT: vpermt2q %zmm12, %zmm24, %zmm13
1392 ; AVX512-NEXT: vpermt2q %zmm10, %zmm24, %zmm11
1393 ; AVX512-NEXT: vpermt2q %zmm8, %zmm24, %zmm9
1394 ; AVX512-NEXT: vpermt2q %zmm6, %zmm24, %zmm7
1395 ; AVX512-NEXT: vpermt2q %zmm4, %zmm24, %zmm5
1396 ; AVX512-NEXT: vpermt2q %zmm14, %zmm24, %zmm15
1397 ; AVX512-NEXT: vpermt2q %zmm3, %zmm24, %zmm2
1398 ; AVX512-NEXT: vpermt2q %zmm1, %zmm24, %zmm0
1399 ; AVX512-NEXT: vmovdqa64 %zmm22, 448(%rsi)
1400 ; AVX512-NEXT: vmovdqa64 %zmm21, 256(%rsi)
1401 ; AVX512-NEXT: vmovdqa64 %zmm20, 320(%rsi)
1402 ; AVX512-NEXT: vmovdqa64 %zmm19, 128(%rsi)
1403 ; AVX512-NEXT: vmovdqa64 %zmm18, 192(%rsi)
1404 ; AVX512-NEXT: vmovdqa64 %zmm16, (%rsi)
1405 ; AVX512-NEXT: vmovdqa64 %zmm23, 64(%rsi)
1406 ; AVX512-NEXT: vmovdqa64 %zmm17, 384(%rsi)
1407 ; AVX512-NEXT: vmovdqa64 %zmm15, 384(%rdx)
1408 ; AVX512-NEXT: vmovdqa64 %zmm5, 448(%rdx)
1409 ; AVX512-NEXT: vmovdqa64 %zmm7, 256(%rdx)
1410 ; AVX512-NEXT: vmovdqa64 %zmm9, 320(%rdx)
1411 ; AVX512-NEXT: vmovdqa64 %zmm11, 128(%rdx)
1412 ; AVX512-NEXT: vmovdqa64 %zmm13, 192(%rdx)
1413 ; AVX512-NEXT: vmovdqa64 %zmm0, (%rdx)
1414 ; AVX512-NEXT: vmovdqa64 %zmm2, 64(%rdx)
1415 ; AVX512-NEXT: vzeroupper
1417 %wide.vec = load <128 x i64>, ptr %in.vec, align 64
1418 %strided.vec0 = shufflevector <128 x i64> %wide.vec, <128 x i64> poison, <64 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30, i32 32, i32 34, i32 36, i32 38, i32 40, i32 42, i32 44, i32 46, i32 48, i32 50, i32 52, i32 54, i32 56, i32 58, i32 60, i32 62, i32 64, i32 66, i32 68, i32 70, i32 72, i32 74, i32 76, i32 78, i32 80, i32 82, i32 84, i32 86, i32 88, i32 90, i32 92, i32 94, i32 96, i32 98, i32 100, i32 102, i32 104, i32 106, i32 108, i32 110, i32 112, i32 114, i32 116, i32 118, i32 120, i32 122, i32 124, i32 126>
1419 %strided.vec1 = shufflevector <128 x i64> %wide.vec, <128 x i64> poison, <64 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31, i32 33, i32 35, i32 37, i32 39, i32 41, i32 43, i32 45, i32 47, i32 49, i32 51, i32 53, i32 55, i32 57, i32 59, i32 61, i32 63, i32 65, i32 67, i32 69, i32 71, i32 73, i32 75, i32 77, i32 79, i32 81, i32 83, i32 85, i32 87, i32 89, i32 91, i32 93, i32 95, i32 97, i32 99, i32 101, i32 103, i32 105, i32 107, i32 109, i32 111, i32 113, i32 115, i32 117, i32 119, i32 121, i32 123, i32 125, i32 127>
1420 store <64 x i64> %strided.vec0, ptr %out.vec0, align 64
1421 store <64 x i64> %strided.vec1, ptr %out.vec1, align 64
1424 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
1428 ; AVX2-FAST-PERLANE: {{.*}}
1431 ; AVX512BW-FAST: {{.*}}
1432 ; AVX512BW-ONLY-FAST: {{.*}}
1433 ; AVX512BW-ONLY-SLOW: {{.*}}
1434 ; AVX512BW-SLOW: {{.*}}
1435 ; AVX512DQ-FAST: {{.*}}
1436 ; AVX512DQ-SLOW: {{.*}}
1437 ; AVX512DQBW-FAST: {{.*}}
1438 ; AVX512DQBW-SLOW: {{.*}}
1440 ; AVX512F-FAST: {{.*}}
1441 ; AVX512F-ONLY-FAST: {{.*}}
1442 ; AVX512F-ONLY-SLOW: {{.*}}
1443 ; AVX512F-SLOW: {{.*}}
1446 ; FALLBACK10: {{.*}}
1447 ; FALLBACK11: {{.*}}
1448 ; FALLBACK12: {{.*}}