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,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,AVX512F-FAST,AVX512F-ONLY-FAST,FALLBACK6
9 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,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,AVX512F-FAST,AVX512DQ-FAST,FALLBACK8
11 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,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,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,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,AVX512BW-FAST,AVX512DQBW-FAST,FALLBACK12
16 ; These patterns are produced by LoopVectorizer for interleaved stores.
18 define void @store_i64_stride4_vf2(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %out.vec) nounwind {
19 ; SSE-LABEL: store_i64_stride4_vf2:
21 ; SSE-NEXT: movaps (%rdi), %xmm0
22 ; SSE-NEXT: movaps (%rsi), %xmm1
23 ; SSE-NEXT: movaps (%rdx), %xmm2
24 ; SSE-NEXT: movaps (%rcx), %xmm3
25 ; SSE-NEXT: movaps %xmm0, %xmm4
26 ; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm1[0]
27 ; SSE-NEXT: movaps %xmm2, %xmm5
28 ; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm3[0]
29 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm3[1]
30 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
31 ; SSE-NEXT: movaps %xmm0, 32(%r8)
32 ; SSE-NEXT: movaps %xmm2, 48(%r8)
33 ; SSE-NEXT: movaps %xmm5, 16(%r8)
34 ; SSE-NEXT: movaps %xmm4, (%r8)
37 ; AVX1-ONLY-LABEL: store_i64_stride4_vf2:
39 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm0
40 ; AVX1-ONLY-NEXT: vmovaps (%rsi), %xmm1
41 ; AVX1-ONLY-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1
42 ; AVX1-ONLY-NEXT: vinsertf128 $1, (%rdx), %ymm0, %ymm0
43 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
44 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
45 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 32(%r8)
46 ; AVX1-ONLY-NEXT: vmovaps %ymm2, (%r8)
47 ; AVX1-ONLY-NEXT: vzeroupper
48 ; AVX1-ONLY-NEXT: retq
50 ; AVX2-ONLY-LABEL: store_i64_stride4_vf2:
52 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm0
53 ; AVX2-ONLY-NEXT: vmovaps (%rdx), %xmm1
54 ; AVX2-ONLY-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0
55 ; AVX2-ONLY-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1
56 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
57 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]
58 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
59 ; AVX2-ONLY-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]
60 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 32(%r8)
61 ; AVX2-ONLY-NEXT: vmovaps %ymm2, (%r8)
62 ; AVX2-ONLY-NEXT: vzeroupper
63 ; AVX2-ONLY-NEXT: retq
65 ; AVX512-LABEL: store_i64_stride4_vf2:
67 ; AVX512-NEXT: vmovaps (%rdi), %xmm0
68 ; AVX512-NEXT: vmovaps (%rdx), %xmm1
69 ; AVX512-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1
70 ; AVX512-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0
71 ; AVX512-NEXT: vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
72 ; AVX512-NEXT: vmovaps {{.*#+}} zmm1 = [0,2,4,6,1,3,5,7]
73 ; AVX512-NEXT: vpermpd %zmm0, %zmm1, %zmm0
74 ; AVX512-NEXT: vmovaps %zmm0, (%r8)
75 ; AVX512-NEXT: vzeroupper
77 %in.vec0 = load <2 x i64>, ptr %in.vecptr0, align 64
78 %in.vec1 = load <2 x i64>, ptr %in.vecptr1, align 64
79 %in.vec2 = load <2 x i64>, ptr %in.vecptr2, align 64
80 %in.vec3 = load <2 x i64>, ptr %in.vecptr3, align 64
81 %1 = shufflevector <2 x i64> %in.vec0, <2 x i64> %in.vec1, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
82 %2 = shufflevector <2 x i64> %in.vec2, <2 x i64> %in.vec3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
83 %3 = shufflevector <4 x i64> %1, <4 x i64> %2, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
84 %interleaved.vec = shufflevector <8 x i64> %3, <8 x i64> poison, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 1, i32 3, i32 5, i32 7>
85 store <8 x i64> %interleaved.vec, ptr %out.vec, align 64
89 define void @store_i64_stride4_vf4(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %out.vec) nounwind {
90 ; SSE-LABEL: store_i64_stride4_vf4:
92 ; SSE-NEXT: movaps (%rdi), %xmm0
93 ; SSE-NEXT: movaps 16(%rdi), %xmm1
94 ; SSE-NEXT: movaps (%rsi), %xmm2
95 ; SSE-NEXT: movaps 16(%rsi), %xmm3
96 ; SSE-NEXT: movaps (%rdx), %xmm4
97 ; SSE-NEXT: movaps 16(%rdx), %xmm5
98 ; SSE-NEXT: movaps (%rcx), %xmm6
99 ; SSE-NEXT: movaps 16(%rcx), %xmm7
100 ; SSE-NEXT: movaps %xmm4, %xmm8
101 ; SSE-NEXT: movlhps {{.*#+}} xmm8 = xmm8[0],xmm6[0]
102 ; SSE-NEXT: movaps %xmm0, %xmm9
103 ; SSE-NEXT: movlhps {{.*#+}} xmm9 = xmm9[0],xmm2[0]
104 ; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm6[1]
105 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]
106 ; SSE-NEXT: movaps %xmm5, %xmm2
107 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm7[0]
108 ; SSE-NEXT: movaps %xmm1, %xmm6
109 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm3[0]
110 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm7[1]
111 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm3[1]
112 ; SSE-NEXT: movaps %xmm1, 96(%r8)
113 ; SSE-NEXT: movaps %xmm5, 112(%r8)
114 ; SSE-NEXT: movaps %xmm6, 64(%r8)
115 ; SSE-NEXT: movaps %xmm2, 80(%r8)
116 ; SSE-NEXT: movaps %xmm0, 32(%r8)
117 ; SSE-NEXT: movaps %xmm4, 48(%r8)
118 ; SSE-NEXT: movaps %xmm9, (%r8)
119 ; SSE-NEXT: movaps %xmm8, 16(%r8)
122 ; AVX1-ONLY-LABEL: store_i64_stride4_vf4:
123 ; AVX1-ONLY: # %bb.0:
124 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %ymm0
125 ; AVX1-ONLY-NEXT: vmovaps (%rsi), %ymm1
126 ; AVX1-ONLY-NEXT: vinsertf128 $1, (%rdx), %ymm0, %ymm2
127 ; AVX1-ONLY-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm3
128 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],mem[2,3]
129 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm1[2,3],mem[2,3]
130 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
131 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
132 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
133 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
134 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 64(%r8)
135 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 96(%r8)
136 ; AVX1-ONLY-NEXT: vmovaps %ymm2, 32(%r8)
137 ; AVX1-ONLY-NEXT: vmovaps %ymm4, (%r8)
138 ; AVX1-ONLY-NEXT: vzeroupper
139 ; AVX1-ONLY-NEXT: retq
141 ; AVX2-ONLY-LABEL: store_i64_stride4_vf4:
142 ; AVX2-ONLY: # %bb.0:
143 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm0
144 ; AVX2-ONLY-NEXT: vmovaps (%rsi), %ymm1
145 ; AVX2-ONLY-NEXT: vmovaps (%rdx), %ymm2
146 ; AVX2-ONLY-NEXT: vmovaps (%rcx), %ymm3
147 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm0[0,1],ymm2[0,1]
148 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm5 = ymm1[0,1],ymm3[0,1]
149 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
150 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm1[2,3],ymm3[2,3]
151 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm4[0],ymm5[0],ymm4[2],ymm5[2]
152 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
153 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm4[1],ymm5[1],ymm4[3],ymm5[3]
154 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
155 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 96(%r8)
156 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 64(%r8)
157 ; AVX2-ONLY-NEXT: vmovaps %ymm4, 32(%r8)
158 ; AVX2-ONLY-NEXT: vmovaps %ymm2, (%r8)
159 ; AVX2-ONLY-NEXT: vzeroupper
160 ; AVX2-ONLY-NEXT: retq
162 ; AVX512-LABEL: store_i64_stride4_vf4:
164 ; AVX512-NEXT: vmovdqa (%rdi), %ymm0
165 ; AVX512-NEXT: vmovdqa (%rsi), %ymm1
166 ; AVX512-NEXT: vmovdqa (%rdx), %ymm2
167 ; AVX512-NEXT: vmovdqa (%rcx), %ymm3
168 ; AVX512-NEXT: vperm2i128 {{.*#+}} ymm4 = ymm0[0,1],ymm2[0,1]
169 ; AVX512-NEXT: vperm2i128 {{.*#+}} ymm5 = ymm1[0,1],ymm3[0,1]
170 ; AVX512-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
171 ; AVX512-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm1[2,3],ymm3[2,3]
172 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} ymm2 = ymm4[0],ymm5[0],ymm4[2],ymm5[2]
173 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} ymm3 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
174 ; AVX512-NEXT: vpunpckhqdq {{.*#+}} ymm4 = ymm4[1],ymm5[1],ymm4[3],ymm5[3]
175 ; AVX512-NEXT: vpunpckhqdq {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
176 ; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm2, %zmm1
177 ; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm3, %zmm0
178 ; AVX512-NEXT: vmovdqa64 %zmm0, 64(%r8)
179 ; AVX512-NEXT: vmovdqa64 %zmm1, (%r8)
180 ; AVX512-NEXT: vzeroupper
182 %in.vec0 = load <4 x i64>, ptr %in.vecptr0, align 64
183 %in.vec1 = load <4 x i64>, ptr %in.vecptr1, align 64
184 %in.vec2 = load <4 x i64>, ptr %in.vecptr2, align 64
185 %in.vec3 = load <4 x i64>, ptr %in.vecptr3, align 64
186 %1 = shufflevector <4 x i64> %in.vec0, <4 x i64> %in.vec1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
187 %2 = shufflevector <4 x i64> %in.vec2, <4 x i64> %in.vec3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
188 %3 = shufflevector <8 x i64> %1, <8 x i64> %2, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
189 %interleaved.vec = shufflevector <16 x i64> %3, <16 x i64> poison, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15>
190 store <16 x i64> %interleaved.vec, ptr %out.vec, align 64
194 define void @store_i64_stride4_vf8(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %out.vec) nounwind {
195 ; SSE-LABEL: store_i64_stride4_vf8:
197 ; SSE-NEXT: movaps (%rdi), %xmm5
198 ; SSE-NEXT: movaps 16(%rdi), %xmm1
199 ; SSE-NEXT: movaps 32(%rdi), %xmm3
200 ; SSE-NEXT: movaps 48(%rdi), %xmm0
201 ; SSE-NEXT: movaps (%rsi), %xmm10
202 ; SSE-NEXT: movaps 16(%rsi), %xmm12
203 ; SSE-NEXT: movaps 32(%rsi), %xmm11
204 ; SSE-NEXT: movaps (%rdx), %xmm2
205 ; SSE-NEXT: movaps 16(%rdx), %xmm4
206 ; SSE-NEXT: movaps 32(%rdx), %xmm7
207 ; SSE-NEXT: movaps 48(%rdx), %xmm9
208 ; SSE-NEXT: movaps (%rcx), %xmm8
209 ; SSE-NEXT: movaps 16(%rcx), %xmm13
210 ; SSE-NEXT: movaps 32(%rcx), %xmm14
211 ; SSE-NEXT: movaps 48(%rcx), %xmm15
212 ; SSE-NEXT: movaps %xmm2, %xmm6
213 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm8[0]
214 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
215 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm8[1]
216 ; SSE-NEXT: movaps %xmm5, %xmm8
217 ; SSE-NEXT: movlhps {{.*#+}} xmm8 = xmm8[0],xmm10[0]
218 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm10[1]
219 ; SSE-NEXT: movaps %xmm4, %xmm10
220 ; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm13[0]
221 ; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm13[1]
222 ; SSE-NEXT: movaps %xmm1, %xmm13
223 ; SSE-NEXT: movlhps {{.*#+}} xmm13 = xmm13[0],xmm12[0]
224 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm12[1]
225 ; SSE-NEXT: movaps %xmm7, %xmm12
226 ; SSE-NEXT: movlhps {{.*#+}} xmm12 = xmm12[0],xmm14[0]
227 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm14[1]
228 ; SSE-NEXT: movaps %xmm3, %xmm14
229 ; SSE-NEXT: movlhps {{.*#+}} xmm14 = xmm14[0],xmm11[0]
230 ; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm11[1]
231 ; SSE-NEXT: movaps %xmm9, %xmm11
232 ; SSE-NEXT: movlhps {{.*#+}} xmm11 = xmm11[0],xmm15[0]
233 ; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm15[1]
234 ; SSE-NEXT: movaps 48(%rsi), %xmm15
235 ; SSE-NEXT: movaps %xmm0, %xmm6
236 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm15[0]
237 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm15[1]
238 ; SSE-NEXT: movaps %xmm0, 224(%r8)
239 ; SSE-NEXT: movaps %xmm9, 240(%r8)
240 ; SSE-NEXT: movaps %xmm6, 192(%r8)
241 ; SSE-NEXT: movaps %xmm11, 208(%r8)
242 ; SSE-NEXT: movaps %xmm3, 160(%r8)
243 ; SSE-NEXT: movaps %xmm7, 176(%r8)
244 ; SSE-NEXT: movaps %xmm14, 128(%r8)
245 ; SSE-NEXT: movaps %xmm12, 144(%r8)
246 ; SSE-NEXT: movaps %xmm1, 96(%r8)
247 ; SSE-NEXT: movaps %xmm4, 112(%r8)
248 ; SSE-NEXT: movaps %xmm13, 64(%r8)
249 ; SSE-NEXT: movaps %xmm10, 80(%r8)
250 ; SSE-NEXT: movaps %xmm5, 32(%r8)
251 ; SSE-NEXT: movaps %xmm2, 48(%r8)
252 ; SSE-NEXT: movaps %xmm8, (%r8)
253 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
254 ; SSE-NEXT: movaps %xmm0, 16(%r8)
257 ; AVX1-ONLY-LABEL: store_i64_stride4_vf8:
258 ; AVX1-ONLY: # %bb.0:
259 ; AVX1-ONLY-NEXT: vmovaps (%rdx), %ymm2
260 ; AVX1-ONLY-NEXT: vmovaps 32(%rdx), %ymm1
261 ; AVX1-ONLY-NEXT: vmovaps (%rcx), %ymm3
262 ; AVX1-ONLY-NEXT: vmovaps 32(%rcx), %ymm4
263 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm4[0],ymm1[2],ymm4[2]
264 ; AVX1-ONLY-NEXT: vmovaps 48(%rsi), %xmm5
265 ; AVX1-ONLY-NEXT: vmovaps 48(%rdi), %xmm6
266 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm7 = xmm6[0],xmm5[0]
267 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm7[0,1,2,3],ymm0[4,5,6,7]
268 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm4[1],ymm1[3],ymm4[3]
269 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm4 = xmm6[1],xmm5[1]
270 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]
271 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
272 ; AVX1-ONLY-NEXT: vmovaps 16(%rsi), %xmm5
273 ; AVX1-ONLY-NEXT: vmovaps 16(%rdi), %xmm6
274 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm7 = xmm6[0],xmm5[0]
275 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm7[0,1,2,3],ymm4[4,5,6,7]
276 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
277 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm3 = xmm6[1],xmm5[1]
278 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
279 ; AVX1-ONLY-NEXT: vmovaps 32(%rsi), %xmm3
280 ; AVX1-ONLY-NEXT: vmovaps 32(%rdi), %xmm5
281 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm6 = xmm5[0],xmm3[0]
282 ; AVX1-ONLY-NEXT: vmovaps 32(%rcx), %xmm7
283 ; AVX1-ONLY-NEXT: vmovaps 32(%rdx), %xmm8
284 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm9 = xmm8[0],xmm7[0]
285 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm3 = xmm5[1],xmm3[1]
286 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm5 = xmm8[1],xmm7[1]
287 ; AVX1-ONLY-NEXT: vmovaps (%rsi), %xmm7
288 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm8
289 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm10 = xmm8[0],xmm7[0]
290 ; AVX1-ONLY-NEXT: vmovaps (%rcx), %xmm11
291 ; AVX1-ONLY-NEXT: vmovaps (%rdx), %xmm12
292 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm13 = xmm12[0],xmm11[0]
293 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm7 = xmm8[1],xmm7[1]
294 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm8 = xmm12[1],xmm11[1]
295 ; AVX1-ONLY-NEXT: vmovaps %xmm8, 48(%r8)
296 ; AVX1-ONLY-NEXT: vmovaps %xmm7, 32(%r8)
297 ; AVX1-ONLY-NEXT: vmovaps %xmm13, 16(%r8)
298 ; AVX1-ONLY-NEXT: vmovaps %xmm10, (%r8)
299 ; AVX1-ONLY-NEXT: vmovaps %xmm5, 176(%r8)
300 ; AVX1-ONLY-NEXT: vmovaps %xmm3, 160(%r8)
301 ; AVX1-ONLY-NEXT: vmovaps %xmm9, 144(%r8)
302 ; AVX1-ONLY-NEXT: vmovaps %xmm6, 128(%r8)
303 ; AVX1-ONLY-NEXT: vmovaps %ymm2, 96(%r8)
304 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 64(%r8)
305 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 224(%r8)
306 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 192(%r8)
307 ; AVX1-ONLY-NEXT: vzeroupper
308 ; AVX1-ONLY-NEXT: retq
310 ; AVX2-ONLY-LABEL: store_i64_stride4_vf8:
311 ; AVX2-ONLY: # %bb.0:
312 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm0
313 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm1
314 ; AVX2-ONLY-NEXT: vmovaps (%rsi), %ymm2
315 ; AVX2-ONLY-NEXT: vmovaps 32(%rsi), %ymm3
316 ; AVX2-ONLY-NEXT: vmovaps (%rdx), %ymm4
317 ; AVX2-ONLY-NEXT: vmovaps 32(%rdx), %ymm5
318 ; AVX2-ONLY-NEXT: vmovaps (%rcx), %ymm6
319 ; AVX2-ONLY-NEXT: vmovaps 32(%rcx), %ymm7
320 ; AVX2-ONLY-NEXT: vmovaps (%rsi), %xmm8
321 ; AVX2-ONLY-NEXT: vmovaps 32(%rsi), %xmm9
322 ; AVX2-ONLY-NEXT: vinsertf128 $1, (%rcx), %ymm8, %ymm8
323 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm10
324 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm11
325 ; AVX2-ONLY-NEXT: vinsertf128 $1, (%rdx), %ymm10, %ymm10
326 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm10[1],ymm8[1],ymm10[3],ymm8[3]
327 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm8 = ymm10[0],ymm8[0],ymm10[2],ymm8[2]
328 ; AVX2-ONLY-NEXT: vinsertf128 $1, 32(%rcx), %ymm9, %ymm9
329 ; AVX2-ONLY-NEXT: vinsertf128 $1, 32(%rdx), %ymm11, %ymm10
330 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm10[0],ymm9[0],ymm10[2],ymm9[2]
331 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm9 = ymm10[1],ymm9[1],ymm10[3],ymm9[3]
332 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm5[0],ymm7[0],ymm5[2],ymm7[2]
333 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm1[0],ymm3[0],ymm1[2],ymm3[2]
334 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm10 = ymm13[2,3],ymm10[2,3]
335 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm5 = ymm5[1],ymm7[1],ymm5[3],ymm7[3]
336 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm3[1],ymm1[3],ymm3[3]
337 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm1[2,3],ymm5[2,3]
338 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm4[0],ymm6[0],ymm4[2],ymm6[2]
339 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm2[0],ymm0[2],ymm2[2]
340 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm3 = ymm5[2,3],ymm3[2,3]
341 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm4[1],ymm6[1],ymm4[3],ymm6[3]
342 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm2[1],ymm0[3],ymm2[3]
343 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm4[2,3]
344 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 96(%r8)
345 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 64(%r8)
346 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 224(%r8)
347 ; AVX2-ONLY-NEXT: vmovaps %ymm10, 192(%r8)
348 ; AVX2-ONLY-NEXT: vmovaps %ymm9, 160(%r8)
349 ; AVX2-ONLY-NEXT: vmovaps %ymm11, 128(%r8)
350 ; AVX2-ONLY-NEXT: vmovaps %ymm8, (%r8)
351 ; AVX2-ONLY-NEXT: vmovaps %ymm12, 32(%r8)
352 ; AVX2-ONLY-NEXT: vzeroupper
353 ; AVX2-ONLY-NEXT: retq
355 ; AVX512F-LABEL: store_i64_stride4_vf8:
357 ; AVX512F-NEXT: vmovdqa64 (%rdi), %zmm0
358 ; AVX512F-NEXT: vmovdqa64 (%rsi), %zmm1
359 ; AVX512F-NEXT: vmovdqa64 (%rdx), %zmm2
360 ; AVX512F-NEXT: vmovdqa64 (%rcx), %zmm3
361 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm4 = <u,u,0,8,u,u,1,9>
362 ; AVX512F-NEXT: vpermi2q %zmm3, %zmm2, %zmm4
363 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm5 = <0,8,u,u,1,9,u,u>
364 ; AVX512F-NEXT: vpermi2q %zmm1, %zmm0, %zmm5
365 ; AVX512F-NEXT: movb $-52, %al
366 ; AVX512F-NEXT: kmovw %eax, %k1
367 ; AVX512F-NEXT: vmovdqa64 %zmm4, %zmm5 {%k1}
368 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm4 = <u,u,2,10,u,u,3,11>
369 ; AVX512F-NEXT: vpermi2q %zmm3, %zmm2, %zmm4
370 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm6 = <2,10,u,u,3,11,u,u>
371 ; AVX512F-NEXT: vpermi2q %zmm1, %zmm0, %zmm6
372 ; AVX512F-NEXT: vmovdqa64 %zmm4, %zmm6 {%k1}
373 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm4 = <u,u,4,12,u,u,5,13>
374 ; AVX512F-NEXT: vpermi2q %zmm3, %zmm2, %zmm4
375 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm7 = <4,12,u,u,5,13,u,u>
376 ; AVX512F-NEXT: vpermi2q %zmm1, %zmm0, %zmm7
377 ; AVX512F-NEXT: vmovdqa64 %zmm4, %zmm7 {%k1}
378 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm4 = <u,u,6,14,u,u,7,15>
379 ; AVX512F-NEXT: vpermi2q %zmm3, %zmm2, %zmm4
380 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = <6,14,u,u,7,15,u,u>
381 ; AVX512F-NEXT: vpermi2q %zmm1, %zmm0, %zmm2
382 ; AVX512F-NEXT: vmovdqa64 %zmm4, %zmm2 {%k1}
383 ; AVX512F-NEXT: vmovdqa64 %zmm2, 192(%r8)
384 ; AVX512F-NEXT: vmovdqa64 %zmm7, 128(%r8)
385 ; AVX512F-NEXT: vmovdqa64 %zmm6, 64(%r8)
386 ; AVX512F-NEXT: vmovdqa64 %zmm5, (%r8)
387 ; AVX512F-NEXT: vzeroupper
390 ; AVX512BW-LABEL: store_i64_stride4_vf8:
392 ; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm0
393 ; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm1
394 ; AVX512BW-NEXT: vmovdqa64 (%rdx), %zmm2
395 ; AVX512BW-NEXT: vmovdqa64 (%rcx), %zmm3
396 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm4 = <u,u,0,8,u,u,1,9>
397 ; AVX512BW-NEXT: vpermi2q %zmm3, %zmm2, %zmm4
398 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm5 = <0,8,u,u,1,9,u,u>
399 ; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm5
400 ; AVX512BW-NEXT: movb $-52, %al
401 ; AVX512BW-NEXT: kmovd %eax, %k1
402 ; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm5 {%k1}
403 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm4 = <u,u,2,10,u,u,3,11>
404 ; AVX512BW-NEXT: vpermi2q %zmm3, %zmm2, %zmm4
405 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm6 = <2,10,u,u,3,11,u,u>
406 ; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm6
407 ; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm6 {%k1}
408 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm4 = <u,u,4,12,u,u,5,13>
409 ; AVX512BW-NEXT: vpermi2q %zmm3, %zmm2, %zmm4
410 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm7 = <4,12,u,u,5,13,u,u>
411 ; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm7
412 ; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm7 {%k1}
413 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm4 = <u,u,6,14,u,u,7,15>
414 ; AVX512BW-NEXT: vpermi2q %zmm3, %zmm2, %zmm4
415 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm2 = <6,14,u,u,7,15,u,u>
416 ; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm2
417 ; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm2 {%k1}
418 ; AVX512BW-NEXT: vmovdqa64 %zmm2, 192(%r8)
419 ; AVX512BW-NEXT: vmovdqa64 %zmm7, 128(%r8)
420 ; AVX512BW-NEXT: vmovdqa64 %zmm6, 64(%r8)
421 ; AVX512BW-NEXT: vmovdqa64 %zmm5, (%r8)
422 ; AVX512BW-NEXT: vzeroupper
423 ; AVX512BW-NEXT: retq
424 %in.vec0 = load <8 x i64>, ptr %in.vecptr0, align 64
425 %in.vec1 = load <8 x i64>, ptr %in.vecptr1, align 64
426 %in.vec2 = load <8 x i64>, ptr %in.vecptr2, align 64
427 %in.vec3 = load <8 x i64>, ptr %in.vecptr3, align 64
428 %1 = shufflevector <8 x i64> %in.vec0, <8 x i64> %in.vec1, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
429 %2 = shufflevector <8 x i64> %in.vec2, <8 x i64> %in.vec3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
430 %3 = shufflevector <16 x i64> %1, <16 x i64> %2, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
431 %interleaved.vec = shufflevector <32 x i64> %3, <32 x i64> poison, <32 x i32> <i32 0, i32 8, i32 16, i32 24, i32 1, i32 9, i32 17, i32 25, i32 2, i32 10, i32 18, i32 26, i32 3, i32 11, i32 19, i32 27, i32 4, i32 12, i32 20, i32 28, i32 5, i32 13, i32 21, i32 29, i32 6, i32 14, i32 22, i32 30, i32 7, i32 15, i32 23, i32 31>
432 store <32 x i64> %interleaved.vec, ptr %out.vec, align 64
436 define void @store_i64_stride4_vf16(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %out.vec) nounwind {
437 ; SSE-LABEL: store_i64_stride4_vf16:
439 ; SSE-NEXT: subq $152, %rsp
440 ; SSE-NEXT: movaps (%rdi), %xmm6
441 ; SSE-NEXT: movaps 16(%rdi), %xmm7
442 ; SSE-NEXT: movaps 32(%rdi), %xmm8
443 ; SSE-NEXT: movaps 48(%rdi), %xmm9
444 ; SSE-NEXT: movaps (%rsi), %xmm1
445 ; SSE-NEXT: movaps 16(%rsi), %xmm2
446 ; SSE-NEXT: movaps 32(%rsi), %xmm0
447 ; SSE-NEXT: movaps 48(%rsi), %xmm15
448 ; SSE-NEXT: movaps (%rdx), %xmm10
449 ; SSE-NEXT: movaps 16(%rdx), %xmm11
450 ; SSE-NEXT: movaps 32(%rdx), %xmm13
451 ; SSE-NEXT: movaps 48(%rdx), %xmm14
452 ; SSE-NEXT: movaps (%rcx), %xmm3
453 ; SSE-NEXT: movaps 16(%rcx), %xmm4
454 ; SSE-NEXT: movaps 32(%rcx), %xmm5
455 ; SSE-NEXT: movaps %xmm6, %xmm12
456 ; SSE-NEXT: movlhps {{.*#+}} xmm12 = xmm12[0],xmm1[0]
457 ; SSE-NEXT: movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
458 ; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm1[1]
459 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
460 ; SSE-NEXT: movaps %xmm10, %xmm6
461 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm3[0]
462 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
463 ; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm3[1]
464 ; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
465 ; SSE-NEXT: movaps %xmm7, %xmm1
466 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
467 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
468 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm2[1]
469 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
470 ; SSE-NEXT: movaps %xmm11, %xmm2
471 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm4[0]
472 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
473 ; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm4[1]
474 ; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
475 ; SSE-NEXT: movaps %xmm8, %xmm1
476 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
477 ; SSE-NEXT: movaps %xmm1, (%rsp) # 16-byte Spill
478 ; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm0[1]
479 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
480 ; SSE-NEXT: movaps %xmm13, %xmm1
481 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm5[0]
482 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
483 ; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm5[1]
484 ; SSE-NEXT: movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
485 ; SSE-NEXT: movaps %xmm9, %xmm0
486 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm15[0]
487 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
488 ; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm15[1]
489 ; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
490 ; SSE-NEXT: movaps 48(%rcx), %xmm0
491 ; SSE-NEXT: movaps %xmm14, %xmm1
492 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
493 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
494 ; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm0[1]
495 ; SSE-NEXT: movaps %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
496 ; SSE-NEXT: movaps 64(%rdi), %xmm15
497 ; SSE-NEXT: movaps 64(%rsi), %xmm1
498 ; SSE-NEXT: movaps %xmm15, %xmm0
499 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]
500 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
501 ; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm1[1]
502 ; SSE-NEXT: movaps 64(%rdx), %xmm11
503 ; SSE-NEXT: movaps 64(%rcx), %xmm2
504 ; SSE-NEXT: movaps %xmm11, %xmm14
505 ; SSE-NEXT: movlhps {{.*#+}} xmm14 = xmm14[0],xmm2[0]
506 ; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm2[1]
507 ; SSE-NEXT: movaps 80(%rdi), %xmm9
508 ; SSE-NEXT: movaps 80(%rsi), %xmm0
509 ; SSE-NEXT: movaps %xmm9, %xmm13
510 ; SSE-NEXT: movlhps {{.*#+}} xmm13 = xmm13[0],xmm0[0]
511 ; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm0[1]
512 ; SSE-NEXT: movaps 80(%rdx), %xmm10
513 ; SSE-NEXT: movaps 80(%rcx), %xmm0
514 ; SSE-NEXT: movaps %xmm10, %xmm12
515 ; SSE-NEXT: movlhps {{.*#+}} xmm12 = xmm12[0],xmm0[0]
516 ; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm0[1]
517 ; SSE-NEXT: movaps 96(%rdi), %xmm7
518 ; SSE-NEXT: movaps 96(%rsi), %xmm1
519 ; SSE-NEXT: movaps %xmm7, %xmm8
520 ; SSE-NEXT: movlhps {{.*#+}} xmm8 = xmm8[0],xmm1[0]
521 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm1[1]
522 ; SSE-NEXT: movaps 96(%rdx), %xmm5
523 ; SSE-NEXT: movaps 96(%rcx), %xmm0
524 ; SSE-NEXT: movaps %xmm5, %xmm6
525 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm0[0]
526 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm0[1]
527 ; SSE-NEXT: movaps 112(%rdi), %xmm0
528 ; SSE-NEXT: movaps 112(%rsi), %xmm3
529 ; SSE-NEXT: movaps %xmm0, %xmm2
530 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm3[0]
531 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm3[1]
532 ; SSE-NEXT: movaps 112(%rdx), %xmm3
533 ; SSE-NEXT: movaps 112(%rcx), %xmm4
534 ; SSE-NEXT: movaps %xmm3, %xmm1
535 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm4[0]
536 ; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm4[1]
537 ; SSE-NEXT: movaps %xmm3, 496(%r8)
538 ; SSE-NEXT: movaps %xmm0, 480(%r8)
539 ; SSE-NEXT: movaps %xmm1, 464(%r8)
540 ; SSE-NEXT: movaps %xmm2, 448(%r8)
541 ; SSE-NEXT: movaps %xmm5, 432(%r8)
542 ; SSE-NEXT: movaps %xmm7, 416(%r8)
543 ; SSE-NEXT: movaps %xmm6, 400(%r8)
544 ; SSE-NEXT: movaps %xmm8, 384(%r8)
545 ; SSE-NEXT: movaps %xmm10, 368(%r8)
546 ; SSE-NEXT: movaps %xmm9, 352(%r8)
547 ; SSE-NEXT: movaps %xmm12, 336(%r8)
548 ; SSE-NEXT: movaps %xmm13, 320(%r8)
549 ; SSE-NEXT: movaps %xmm11, 304(%r8)
550 ; SSE-NEXT: movaps %xmm15, 288(%r8)
551 ; SSE-NEXT: movaps %xmm14, 272(%r8)
552 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
553 ; SSE-NEXT: movaps %xmm0, 256(%r8)
554 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
555 ; SSE-NEXT: movaps %xmm0, 240(%r8)
556 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
557 ; SSE-NEXT: movaps %xmm0, 224(%r8)
558 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
559 ; SSE-NEXT: movaps %xmm0, 208(%r8)
560 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
561 ; SSE-NEXT: movaps %xmm0, 192(%r8)
562 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
563 ; SSE-NEXT: movaps %xmm0, 176(%r8)
564 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
565 ; SSE-NEXT: movaps %xmm0, 160(%r8)
566 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
567 ; SSE-NEXT: movaps %xmm0, 144(%r8)
568 ; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload
569 ; SSE-NEXT: movaps %xmm0, 128(%r8)
570 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
571 ; SSE-NEXT: movaps %xmm0, 112(%r8)
572 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
573 ; SSE-NEXT: movaps %xmm0, 96(%r8)
574 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
575 ; SSE-NEXT: movaps %xmm0, 80(%r8)
576 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
577 ; SSE-NEXT: movaps %xmm0, 64(%r8)
578 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
579 ; SSE-NEXT: movaps %xmm0, 48(%r8)
580 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
581 ; SSE-NEXT: movaps %xmm0, 32(%r8)
582 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
583 ; SSE-NEXT: movaps %xmm0, 16(%r8)
584 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
585 ; SSE-NEXT: movaps %xmm0, (%r8)
586 ; SSE-NEXT: addq $152, %rsp
589 ; AVX1-ONLY-LABEL: store_i64_stride4_vf16:
590 ; AVX1-ONLY: # %bb.0:
591 ; AVX1-ONLY-NEXT: subq $152, %rsp
592 ; AVX1-ONLY-NEXT: vmovaps 96(%rdx), %ymm7
593 ; AVX1-ONLY-NEXT: vmovaps 64(%rdx), %ymm5
594 ; AVX1-ONLY-NEXT: vmovaps 32(%rdx), %ymm3
595 ; AVX1-ONLY-NEXT: vmovaps (%rdx), %ymm1
596 ; AVX1-ONLY-NEXT: vmovaps 96(%rcx), %ymm8
597 ; AVX1-ONLY-NEXT: vmovaps 64(%rcx), %ymm6
598 ; AVX1-ONLY-NEXT: vmovaps 32(%rcx), %ymm4
599 ; AVX1-ONLY-NEXT: vmovaps (%rcx), %ymm2
600 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm2[0],ymm1[2],ymm2[2]
601 ; AVX1-ONLY-NEXT: vmovaps 16(%rsi), %xmm9
602 ; AVX1-ONLY-NEXT: vmovaps 16(%rdi), %xmm10
603 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm11 = xmm10[0],xmm9[0]
604 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm11[0,1,2,3],ymm0[4,5,6,7]
605 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
606 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm2[1],ymm1[3],ymm2[3]
607 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm2 = xmm10[1],xmm9[1]
608 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm1[4,5,6,7]
609 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
610 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm3[0],ymm4[0],ymm3[2],ymm4[2]
611 ; AVX1-ONLY-NEXT: vmovaps 48(%rsi), %xmm9
612 ; AVX1-ONLY-NEXT: vmovaps 48(%rdi), %xmm10
613 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm11 = xmm10[0],xmm9[0]
614 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm11[0,1,2,3],ymm2[4,5,6,7]
615 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
616 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm4[1],ymm3[3],ymm4[3]
617 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm4 = xmm10[1],xmm9[1]
618 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm3[4,5,6,7]
619 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
620 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm5[0],ymm6[0],ymm5[2],ymm6[2]
621 ; AVX1-ONLY-NEXT: vmovaps 80(%rsi), %xmm9
622 ; AVX1-ONLY-NEXT: vmovaps 80(%rdi), %xmm10
623 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm11 = xmm10[0],xmm9[0]
624 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm11[0,1,2,3],ymm4[4,5,6,7]
625 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
626 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm5 = ymm5[1],ymm6[1],ymm5[3],ymm6[3]
627 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm6 = xmm10[1],xmm9[1]
628 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm5[4,5,6,7]
629 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
630 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm6 = ymm7[0],ymm8[0],ymm7[2],ymm8[2]
631 ; AVX1-ONLY-NEXT: vmovaps 112(%rsi), %xmm9
632 ; AVX1-ONLY-NEXT: vmovaps 112(%rdi), %xmm10
633 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm11 = xmm10[0],xmm9[0]
634 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm11[0,1,2,3],ymm6[4,5,6,7]
635 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
636 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm7[1],ymm8[1],ymm7[3],ymm8[3]
637 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm8 = xmm10[1],xmm9[1]
638 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm8[0,1,2,3],ymm7[4,5,6,7]
639 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
640 ; AVX1-ONLY-NEXT: vmovaps 64(%rsi), %xmm10
641 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %xmm11
642 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm0 = xmm11[0],xmm10[0]
643 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
644 ; AVX1-ONLY-NEXT: vmovaps 32(%rcx), %xmm12
645 ; AVX1-ONLY-NEXT: vmovaps 64(%rcx), %xmm13
646 ; AVX1-ONLY-NEXT: vmovaps 64(%rdx), %xmm14
647 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm9 = xmm14[0],xmm13[0]
648 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm10 = xmm11[1],xmm10[1]
649 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm11 = xmm14[1],xmm13[1]
650 ; AVX1-ONLY-NEXT: vmovaps 32(%rsi), %xmm13
651 ; AVX1-ONLY-NEXT: vmovaps 32(%rdi), %xmm14
652 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm15 = xmm14[0],xmm13[0]
653 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm13 = xmm14[1],xmm13[1]
654 ; AVX1-ONLY-NEXT: vmovaps 32(%rdx), %xmm14
655 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm8 = xmm14[0],xmm12[0]
656 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm12 = xmm14[1],xmm12[1]
657 ; AVX1-ONLY-NEXT: vmovaps 96(%rsi), %xmm14
658 ; AVX1-ONLY-NEXT: vmovaps 96(%rdi), %xmm0
659 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm7 = xmm0[0],xmm14[0]
660 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm6 = xmm0[1],xmm14[1]
661 ; AVX1-ONLY-NEXT: vmovaps 96(%rcx), %xmm14
662 ; AVX1-ONLY-NEXT: vmovaps 96(%rdx), %xmm0
663 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm0[0],xmm14[0]
664 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm4 = xmm0[1],xmm14[1]
665 ; AVX1-ONLY-NEXT: vmovaps (%rsi), %xmm14
666 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm0
667 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm3 = xmm0[0],xmm14[0]
668 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm2 = xmm0[1],xmm14[1]
669 ; AVX1-ONLY-NEXT: vmovaps (%rcx), %xmm14
670 ; AVX1-ONLY-NEXT: vmovaps (%rdx), %xmm0
671 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm0[0],xmm14[0]
672 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm14[1]
673 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 48(%r8)
674 ; AVX1-ONLY-NEXT: vmovaps %xmm2, 32(%r8)
675 ; AVX1-ONLY-NEXT: vmovaps %xmm1, 16(%r8)
676 ; AVX1-ONLY-NEXT: vmovaps %xmm3, (%r8)
677 ; AVX1-ONLY-NEXT: vmovaps %xmm4, 432(%r8)
678 ; AVX1-ONLY-NEXT: vmovaps %xmm6, 416(%r8)
679 ; AVX1-ONLY-NEXT: vmovaps %xmm5, 400(%r8)
680 ; AVX1-ONLY-NEXT: vmovaps %xmm7, 384(%r8)
681 ; AVX1-ONLY-NEXT: vmovaps %xmm12, 176(%r8)
682 ; AVX1-ONLY-NEXT: vmovaps %xmm13, 160(%r8)
683 ; AVX1-ONLY-NEXT: vmovaps %xmm8, 144(%r8)
684 ; AVX1-ONLY-NEXT: vmovaps %xmm15, 128(%r8)
685 ; AVX1-ONLY-NEXT: vmovaps %xmm11, 304(%r8)
686 ; AVX1-ONLY-NEXT: vmovaps %xmm10, 288(%r8)
687 ; AVX1-ONLY-NEXT: vmovaps %xmm9, 272(%r8)
688 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
689 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 256(%r8)
690 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
691 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 480(%r8)
692 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
693 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 448(%r8)
694 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
695 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 352(%r8)
696 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
697 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 320(%r8)
698 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
699 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 224(%r8)
700 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
701 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 192(%r8)
702 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
703 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 96(%r8)
704 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
705 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 64(%r8)
706 ; AVX1-ONLY-NEXT: addq $152, %rsp
707 ; AVX1-ONLY-NEXT: vzeroupper
708 ; AVX1-ONLY-NEXT: retq
710 ; AVX2-ONLY-LABEL: store_i64_stride4_vf16:
711 ; AVX2-ONLY: # %bb.0:
712 ; AVX2-ONLY-NEXT: pushq %rax
713 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm2
714 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm6
715 ; AVX2-ONLY-NEXT: vmovaps 32(%rsi), %ymm4
716 ; AVX2-ONLY-NEXT: vmovaps (%rsi), %ymm7
717 ; AVX2-ONLY-NEXT: vmovaps (%rdx), %ymm9
718 ; AVX2-ONLY-NEXT: vmovaps (%rcx), %ymm11
719 ; AVX2-ONLY-NEXT: vmovaps (%rsi), %xmm0
720 ; AVX2-ONLY-NEXT: vmovaps 32(%rsi), %xmm3
721 ; AVX2-ONLY-NEXT: vmovaps 64(%rsi), %xmm8
722 ; AVX2-ONLY-NEXT: vinsertf128 $1, (%rcx), %ymm0, %ymm1
723 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm0
724 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm5
725 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %xmm10
726 ; AVX2-ONLY-NEXT: vinsertf128 $1, (%rdx), %ymm0, %ymm12
727 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm12[0],ymm1[0],ymm12[2],ymm1[2]
728 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
729 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm12[1],ymm1[1],ymm12[3],ymm1[3]
730 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
731 ; AVX2-ONLY-NEXT: vinsertf128 $1, 32(%rcx), %ymm3, %ymm12
732 ; AVX2-ONLY-NEXT: vinsertf128 $1, 32(%rdx), %ymm5, %ymm5
733 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm5[0],ymm12[0],ymm5[2],ymm12[2]
734 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
735 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm5[1],ymm12[1],ymm5[3],ymm12[3]
736 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
737 ; AVX2-ONLY-NEXT: vinsertf128 $1, 64(%rcx), %ymm8, %ymm12
738 ; AVX2-ONLY-NEXT: vinsertf128 $1, 64(%rdx), %ymm10, %ymm10
739 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm8 = ymm10[0],ymm12[0],ymm10[2],ymm12[2]
740 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm10 = ymm10[1],ymm12[1],ymm10[3],ymm12[3]
741 ; AVX2-ONLY-NEXT: vmovaps 96(%rsi), %xmm12
742 ; AVX2-ONLY-NEXT: vinsertf128 $1, 96(%rcx), %ymm12, %ymm13
743 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %xmm12
744 ; AVX2-ONLY-NEXT: vinsertf128 $1, 96(%rdx), %ymm12, %ymm14
745 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm14[0],ymm13[0],ymm14[2],ymm13[2]
746 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm13 = ymm14[1],ymm13[1],ymm14[3],ymm13[3]
747 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm14 = ymm9[0],ymm11[0],ymm9[2],ymm11[2]
748 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm6[0],ymm7[0],ymm6[2],ymm7[2]
749 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm14 = ymm15[2,3],ymm14[2,3]
750 ; AVX2-ONLY-NEXT: vmovaps 32(%rdx), %ymm15
751 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm9 = ymm9[1],ymm11[1],ymm9[3],ymm11[3]
752 ; AVX2-ONLY-NEXT: vmovaps 32(%rcx), %ymm11
753 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm6[1],ymm7[1],ymm6[3],ymm7[3]
754 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm6 = ymm6[2,3],ymm9[2,3]
755 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm7 = ymm15[0],ymm11[0],ymm15[2],ymm11[2]
756 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm9 = ymm2[0],ymm4[0],ymm2[2],ymm4[2]
757 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm7 = ymm9[2,3],ymm7[2,3]
758 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm9
759 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm11 = ymm15[1],ymm11[1],ymm15[3],ymm11[3]
760 ; AVX2-ONLY-NEXT: vmovaps 64(%rsi), %ymm15
761 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm4[1],ymm2[3],ymm4[3]
762 ; AVX2-ONLY-NEXT: vmovaps 64(%rdx), %ymm4
763 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm3 = ymm2[2,3],ymm11[2,3]
764 ; AVX2-ONLY-NEXT: vmovaps 64(%rcx), %ymm11
765 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm4[0],ymm11[0],ymm4[2],ymm11[2]
766 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm1 = ymm9[0],ymm15[0],ymm9[2],ymm15[2]
767 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm1[2,3],ymm0[2,3]
768 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm4[1],ymm11[1],ymm4[3],ymm11[3]
769 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm9[1],ymm15[1],ymm9[3],ymm15[3]
770 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm9
771 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm4[2,3],ymm1[2,3]
772 ; AVX2-ONLY-NEXT: vmovaps 96(%rsi), %ymm4
773 ; AVX2-ONLY-NEXT: vmovaps 96(%rdx), %ymm11
774 ; AVX2-ONLY-NEXT: vmovaps 96(%rcx), %ymm15
775 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm11[0],ymm15[0],ymm11[2],ymm15[2]
776 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm9[0],ymm4[0],ymm9[2],ymm4[2]
777 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm5[2,3],ymm0[2,3]
778 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm5 = ymm11[1],ymm15[1],ymm11[3],ymm15[3]
779 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm9[1],ymm4[1],ymm9[3],ymm4[3]
780 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm4[2,3],ymm5[2,3]
781 ; AVX2-ONLY-NEXT: vmovaps %ymm4, 480(%r8)
782 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 448(%r8)
783 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 352(%r8)
784 ; AVX2-ONLY-NEXT: vmovaps %ymm2, 320(%r8)
785 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 224(%r8)
786 ; AVX2-ONLY-NEXT: vmovaps %ymm7, 192(%r8)
787 ; AVX2-ONLY-NEXT: vmovaps %ymm6, 96(%r8)
788 ; AVX2-ONLY-NEXT: vmovaps %ymm14, 64(%r8)
789 ; AVX2-ONLY-NEXT: vmovaps %ymm13, 416(%r8)
790 ; AVX2-ONLY-NEXT: vmovaps %ymm12, 384(%r8)
791 ; AVX2-ONLY-NEXT: vmovaps %ymm10, 288(%r8)
792 ; AVX2-ONLY-NEXT: vmovaps %ymm8, 256(%r8)
793 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
794 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 160(%r8)
795 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
796 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 128(%r8)
797 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
798 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 32(%r8)
799 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
800 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%r8)
801 ; AVX2-ONLY-NEXT: popq %rax
802 ; AVX2-ONLY-NEXT: vzeroupper
803 ; AVX2-ONLY-NEXT: retq
805 ; AVX512F-LABEL: store_i64_stride4_vf16:
807 ; AVX512F-NEXT: vmovdqa64 (%rdi), %zmm0
808 ; AVX512F-NEXT: vmovdqa64 64(%rdi), %zmm1
809 ; AVX512F-NEXT: vmovdqa64 (%rsi), %zmm2
810 ; AVX512F-NEXT: vmovdqa64 64(%rsi), %zmm3
811 ; AVX512F-NEXT: vmovdqa64 (%rdx), %zmm4
812 ; AVX512F-NEXT: vmovdqa64 64(%rdx), %zmm5
813 ; AVX512F-NEXT: vmovdqa64 (%rcx), %zmm6
814 ; AVX512F-NEXT: vmovdqa64 64(%rcx), %zmm7
815 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm8 = <u,u,2,10,u,u,3,11>
816 ; AVX512F-NEXT: vmovdqa64 %zmm4, %zmm9
817 ; AVX512F-NEXT: vpermt2q %zmm6, %zmm8, %zmm9
818 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm10 = <2,10,u,u,3,11,u,u>
819 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm11
820 ; AVX512F-NEXT: vpermt2q %zmm2, %zmm10, %zmm11
821 ; AVX512F-NEXT: movb $-52, %al
822 ; AVX512F-NEXT: kmovw %eax, %k1
823 ; AVX512F-NEXT: vmovdqa64 %zmm9, %zmm11 {%k1}
824 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm9 = <u,u,0,8,u,u,1,9>
825 ; AVX512F-NEXT: vmovdqa64 %zmm4, %zmm12
826 ; AVX512F-NEXT: vpermt2q %zmm6, %zmm9, %zmm12
827 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm13 = <0,8,u,u,1,9,u,u>
828 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm14
829 ; AVX512F-NEXT: vpermt2q %zmm2, %zmm13, %zmm14
830 ; AVX512F-NEXT: vmovdqa64 %zmm12, %zmm14 {%k1}
831 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm12 = <u,u,6,14,u,u,7,15>
832 ; AVX512F-NEXT: vmovdqa64 %zmm4, %zmm15
833 ; AVX512F-NEXT: vpermt2q %zmm6, %zmm12, %zmm15
834 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm16 = <6,14,u,u,7,15,u,u>
835 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm17
836 ; AVX512F-NEXT: vpermt2q %zmm2, %zmm16, %zmm17
837 ; AVX512F-NEXT: vmovdqa64 %zmm15, %zmm17 {%k1}
838 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm15 = <u,u,4,12,u,u,5,13>
839 ; AVX512F-NEXT: vpermt2q %zmm6, %zmm15, %zmm4
840 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm6 = <4,12,u,u,5,13,u,u>
841 ; AVX512F-NEXT: vpermt2q %zmm2, %zmm6, %zmm0
842 ; AVX512F-NEXT: vmovdqa64 %zmm4, %zmm0 {%k1}
843 ; AVX512F-NEXT: vpermi2q %zmm7, %zmm5, %zmm8
844 ; AVX512F-NEXT: vpermi2q %zmm3, %zmm1, %zmm10
845 ; AVX512F-NEXT: vmovdqa64 %zmm8, %zmm10 {%k1}
846 ; AVX512F-NEXT: vpermi2q %zmm7, %zmm5, %zmm9
847 ; AVX512F-NEXT: vpermi2q %zmm3, %zmm1, %zmm13
848 ; AVX512F-NEXT: vmovdqa64 %zmm9, %zmm13 {%k1}
849 ; AVX512F-NEXT: vpermi2q %zmm7, %zmm5, %zmm12
850 ; AVX512F-NEXT: vpermi2q %zmm3, %zmm1, %zmm16
851 ; AVX512F-NEXT: vmovdqa64 %zmm12, %zmm16 {%k1}
852 ; AVX512F-NEXT: vpermt2q %zmm7, %zmm15, %zmm5
853 ; AVX512F-NEXT: vpermt2q %zmm3, %zmm6, %zmm1
854 ; AVX512F-NEXT: vmovdqa64 %zmm5, %zmm1 {%k1}
855 ; AVX512F-NEXT: vmovdqa64 %zmm1, 384(%r8)
856 ; AVX512F-NEXT: vmovdqa64 %zmm16, 448(%r8)
857 ; AVX512F-NEXT: vmovdqa64 %zmm13, 256(%r8)
858 ; AVX512F-NEXT: vmovdqa64 %zmm10, 320(%r8)
859 ; AVX512F-NEXT: vmovdqa64 %zmm0, 128(%r8)
860 ; AVX512F-NEXT: vmovdqa64 %zmm17, 192(%r8)
861 ; AVX512F-NEXT: vmovdqa64 %zmm14, (%r8)
862 ; AVX512F-NEXT: vmovdqa64 %zmm11, 64(%r8)
863 ; AVX512F-NEXT: vzeroupper
866 ; AVX512BW-LABEL: store_i64_stride4_vf16:
868 ; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm0
869 ; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm1
870 ; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm2
871 ; AVX512BW-NEXT: vmovdqa64 64(%rsi), %zmm3
872 ; AVX512BW-NEXT: vmovdqa64 (%rdx), %zmm4
873 ; AVX512BW-NEXT: vmovdqa64 64(%rdx), %zmm5
874 ; AVX512BW-NEXT: vmovdqa64 (%rcx), %zmm6
875 ; AVX512BW-NEXT: vmovdqa64 64(%rcx), %zmm7
876 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm8 = <u,u,2,10,u,u,3,11>
877 ; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm9
878 ; AVX512BW-NEXT: vpermt2q %zmm6, %zmm8, %zmm9
879 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm10 = <2,10,u,u,3,11,u,u>
880 ; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm11
881 ; AVX512BW-NEXT: vpermt2q %zmm2, %zmm10, %zmm11
882 ; AVX512BW-NEXT: movb $-52, %al
883 ; AVX512BW-NEXT: kmovd %eax, %k1
884 ; AVX512BW-NEXT: vmovdqa64 %zmm9, %zmm11 {%k1}
885 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm9 = <u,u,0,8,u,u,1,9>
886 ; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm12
887 ; AVX512BW-NEXT: vpermt2q %zmm6, %zmm9, %zmm12
888 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm13 = <0,8,u,u,1,9,u,u>
889 ; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm14
890 ; AVX512BW-NEXT: vpermt2q %zmm2, %zmm13, %zmm14
891 ; AVX512BW-NEXT: vmovdqa64 %zmm12, %zmm14 {%k1}
892 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm12 = <u,u,6,14,u,u,7,15>
893 ; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm15
894 ; AVX512BW-NEXT: vpermt2q %zmm6, %zmm12, %zmm15
895 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm16 = <6,14,u,u,7,15,u,u>
896 ; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm17
897 ; AVX512BW-NEXT: vpermt2q %zmm2, %zmm16, %zmm17
898 ; AVX512BW-NEXT: vmovdqa64 %zmm15, %zmm17 {%k1}
899 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm15 = <u,u,4,12,u,u,5,13>
900 ; AVX512BW-NEXT: vpermt2q %zmm6, %zmm15, %zmm4
901 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm6 = <4,12,u,u,5,13,u,u>
902 ; AVX512BW-NEXT: vpermt2q %zmm2, %zmm6, %zmm0
903 ; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm0 {%k1}
904 ; AVX512BW-NEXT: vpermi2q %zmm7, %zmm5, %zmm8
905 ; AVX512BW-NEXT: vpermi2q %zmm3, %zmm1, %zmm10
906 ; AVX512BW-NEXT: vmovdqa64 %zmm8, %zmm10 {%k1}
907 ; AVX512BW-NEXT: vpermi2q %zmm7, %zmm5, %zmm9
908 ; AVX512BW-NEXT: vpermi2q %zmm3, %zmm1, %zmm13
909 ; AVX512BW-NEXT: vmovdqa64 %zmm9, %zmm13 {%k1}
910 ; AVX512BW-NEXT: vpermi2q %zmm7, %zmm5, %zmm12
911 ; AVX512BW-NEXT: vpermi2q %zmm3, %zmm1, %zmm16
912 ; AVX512BW-NEXT: vmovdqa64 %zmm12, %zmm16 {%k1}
913 ; AVX512BW-NEXT: vpermt2q %zmm7, %zmm15, %zmm5
914 ; AVX512BW-NEXT: vpermt2q %zmm3, %zmm6, %zmm1
915 ; AVX512BW-NEXT: vmovdqa64 %zmm5, %zmm1 {%k1}
916 ; AVX512BW-NEXT: vmovdqa64 %zmm1, 384(%r8)
917 ; AVX512BW-NEXT: vmovdqa64 %zmm16, 448(%r8)
918 ; AVX512BW-NEXT: vmovdqa64 %zmm13, 256(%r8)
919 ; AVX512BW-NEXT: vmovdqa64 %zmm10, 320(%r8)
920 ; AVX512BW-NEXT: vmovdqa64 %zmm0, 128(%r8)
921 ; AVX512BW-NEXT: vmovdqa64 %zmm17, 192(%r8)
922 ; AVX512BW-NEXT: vmovdqa64 %zmm14, (%r8)
923 ; AVX512BW-NEXT: vmovdqa64 %zmm11, 64(%r8)
924 ; AVX512BW-NEXT: vzeroupper
925 ; AVX512BW-NEXT: retq
926 %in.vec0 = load <16 x i64>, ptr %in.vecptr0, align 64
927 %in.vec1 = load <16 x i64>, ptr %in.vecptr1, align 64
928 %in.vec2 = load <16 x i64>, ptr %in.vecptr2, align 64
929 %in.vec3 = load <16 x i64>, ptr %in.vecptr3, align 64
930 %1 = shufflevector <16 x i64> %in.vec0, <16 x i64> %in.vec1, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
931 %2 = shufflevector <16 x i64> %in.vec2, <16 x i64> %in.vec3, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
932 %3 = shufflevector <32 x i64> %1, <32 x i64> %2, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>
933 %interleaved.vec = shufflevector <64 x i64> %3, <64 x i64> poison, <64 x i32> <i32 0, i32 16, i32 32, i32 48, i32 1, i32 17, i32 33, i32 49, i32 2, i32 18, i32 34, i32 50, i32 3, i32 19, i32 35, i32 51, i32 4, i32 20, i32 36, i32 52, i32 5, i32 21, i32 37, i32 53, i32 6, i32 22, i32 38, i32 54, i32 7, i32 23, i32 39, i32 55, i32 8, i32 24, i32 40, i32 56, i32 9, i32 25, i32 41, i32 57, i32 10, i32 26, i32 42, i32 58, i32 11, i32 27, i32 43, i32 59, i32 12, i32 28, i32 44, i32 60, i32 13, i32 29, i32 45, i32 61, i32 14, i32 30, i32 46, i32 62, i32 15, i32 31, i32 47, i32 63>
934 store <64 x i64> %interleaved.vec, ptr %out.vec, align 64
938 define void @store_i64_stride4_vf32(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %out.vec) nounwind {
939 ; SSE-LABEL: store_i64_stride4_vf32:
941 ; SSE-NEXT: subq $664, %rsp # imm = 0x298
942 ; SSE-NEXT: movaps (%rdi), %xmm7
943 ; SSE-NEXT: movaps 16(%rdi), %xmm8
944 ; SSE-NEXT: movaps 32(%rdi), %xmm9
945 ; SSE-NEXT: movaps 48(%rdi), %xmm10
946 ; SSE-NEXT: movaps (%rsi), %xmm3
947 ; SSE-NEXT: movaps 16(%rsi), %xmm2
948 ; SSE-NEXT: movaps 32(%rsi), %xmm1
949 ; SSE-NEXT: movaps 48(%rsi), %xmm0
950 ; SSE-NEXT: movaps (%rdx), %xmm11
951 ; SSE-NEXT: movaps 16(%rdx), %xmm12
952 ; SSE-NEXT: movaps 32(%rdx), %xmm13
953 ; SSE-NEXT: movaps 48(%rdx), %xmm14
954 ; SSE-NEXT: movaps (%rcx), %xmm4
955 ; SSE-NEXT: movaps 16(%rcx), %xmm5
956 ; SSE-NEXT: movaps 32(%rcx), %xmm6
957 ; SSE-NEXT: movaps %xmm7, %xmm15
958 ; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm3[0]
959 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
960 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm3[1]
961 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
962 ; SSE-NEXT: movaps %xmm11, %xmm7
963 ; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm4[0]
964 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
965 ; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm4[1]
966 ; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
967 ; SSE-NEXT: movaps %xmm8, %xmm3
968 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm2[0]
969 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
970 ; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm2[1]
971 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
972 ; SSE-NEXT: movaps %xmm12, %xmm3
973 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm5[0]
974 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
975 ; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm5[1]
976 ; SSE-NEXT: movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
977 ; SSE-NEXT: movaps %xmm9, %xmm2
978 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
979 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
980 ; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm1[1]
981 ; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
982 ; SSE-NEXT: movaps %xmm13, %xmm1
983 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm6[0]
984 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
985 ; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm6[1]
986 ; SSE-NEXT: movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
987 ; SSE-NEXT: movaps %xmm10, %xmm1
988 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
989 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
990 ; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm0[1]
991 ; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
992 ; SSE-NEXT: movaps 48(%rcx), %xmm0
993 ; SSE-NEXT: movaps %xmm14, %xmm1
994 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
995 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
996 ; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm0[1]
997 ; SSE-NEXT: movaps %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
998 ; SSE-NEXT: movaps 64(%rdi), %xmm2
999 ; SSE-NEXT: movaps 64(%rsi), %xmm0
1000 ; SSE-NEXT: movaps %xmm2, %xmm1
1001 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1002 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1003 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1004 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1005 ; SSE-NEXT: movaps 64(%rdx), %xmm2
1006 ; SSE-NEXT: movaps 64(%rcx), %xmm0
1007 ; SSE-NEXT: movaps %xmm2, %xmm1
1008 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1009 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1010 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1011 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1012 ; SSE-NEXT: movaps 80(%rdi), %xmm2
1013 ; SSE-NEXT: movaps 80(%rsi), %xmm0
1014 ; SSE-NEXT: movaps %xmm2, %xmm1
1015 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1016 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1017 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1018 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1019 ; SSE-NEXT: movaps 80(%rdx), %xmm2
1020 ; SSE-NEXT: movaps 80(%rcx), %xmm0
1021 ; SSE-NEXT: movaps %xmm2, %xmm1
1022 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1023 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1024 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1025 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1026 ; SSE-NEXT: movaps 96(%rdi), %xmm2
1027 ; SSE-NEXT: movaps 96(%rsi), %xmm0
1028 ; SSE-NEXT: movaps %xmm2, %xmm1
1029 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1030 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1031 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1032 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1033 ; SSE-NEXT: movaps 96(%rdx), %xmm2
1034 ; SSE-NEXT: movaps 96(%rcx), %xmm0
1035 ; SSE-NEXT: movaps %xmm2, %xmm1
1036 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1037 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1038 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1039 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1040 ; SSE-NEXT: movaps 112(%rdi), %xmm2
1041 ; SSE-NEXT: movaps 112(%rsi), %xmm0
1042 ; SSE-NEXT: movaps %xmm2, %xmm1
1043 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1044 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1045 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1046 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1047 ; SSE-NEXT: movaps 112(%rdx), %xmm2
1048 ; SSE-NEXT: movaps 112(%rcx), %xmm0
1049 ; SSE-NEXT: movaps %xmm2, %xmm1
1050 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1051 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1052 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1053 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1054 ; SSE-NEXT: movaps 128(%rdi), %xmm2
1055 ; SSE-NEXT: movaps 128(%rsi), %xmm0
1056 ; SSE-NEXT: movaps %xmm2, %xmm1
1057 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1058 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1059 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1060 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1061 ; SSE-NEXT: movaps 128(%rdx), %xmm2
1062 ; SSE-NEXT: movaps 128(%rcx), %xmm0
1063 ; SSE-NEXT: movaps %xmm2, %xmm1
1064 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1065 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1066 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1067 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1068 ; SSE-NEXT: movaps 144(%rdi), %xmm2
1069 ; SSE-NEXT: movaps 144(%rsi), %xmm0
1070 ; SSE-NEXT: movaps %xmm2, %xmm1
1071 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1072 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1073 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1074 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1075 ; SSE-NEXT: movaps 144(%rdx), %xmm2
1076 ; SSE-NEXT: movaps 144(%rcx), %xmm0
1077 ; SSE-NEXT: movaps %xmm2, %xmm1
1078 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1079 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1080 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1081 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1082 ; SSE-NEXT: movaps 160(%rdi), %xmm2
1083 ; SSE-NEXT: movaps 160(%rsi), %xmm0
1084 ; SSE-NEXT: movaps %xmm2, %xmm1
1085 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1086 ; SSE-NEXT: movaps %xmm1, (%rsp) # 16-byte Spill
1087 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1088 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1089 ; SSE-NEXT: movaps 160(%rdx), %xmm2
1090 ; SSE-NEXT: movaps 160(%rcx), %xmm0
1091 ; SSE-NEXT: movaps %xmm2, %xmm1
1092 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1093 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1094 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1095 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1096 ; SSE-NEXT: movaps 176(%rdi), %xmm2
1097 ; SSE-NEXT: movaps 176(%rsi), %xmm0
1098 ; SSE-NEXT: movaps %xmm2, %xmm1
1099 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1100 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1101 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1102 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1103 ; SSE-NEXT: movaps 176(%rdx), %xmm13
1104 ; SSE-NEXT: movaps 176(%rcx), %xmm0
1105 ; SSE-NEXT: movaps %xmm13, %xmm1
1106 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1107 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1108 ; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]
1109 ; SSE-NEXT: movaps 192(%rdi), %xmm15
1110 ; SSE-NEXT: movaps 192(%rsi), %xmm0
1111 ; SSE-NEXT: movaps %xmm15, %xmm1
1112 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1113 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1114 ; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]
1115 ; SSE-NEXT: movaps 192(%rdx), %xmm14
1116 ; SSE-NEXT: movaps 192(%rcx), %xmm0
1117 ; SSE-NEXT: movaps %xmm14, %xmm1
1118 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1119 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1120 ; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm0[1]
1121 ; SSE-NEXT: movaps 208(%rdi), %xmm9
1122 ; SSE-NEXT: movaps 208(%rsi), %xmm0
1123 ; SSE-NEXT: movaps %xmm9, %xmm12
1124 ; SSE-NEXT: movlhps {{.*#+}} xmm12 = xmm12[0],xmm0[0]
1125 ; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm0[1]
1126 ; SSE-NEXT: movaps 208(%rdx), %xmm10
1127 ; SSE-NEXT: movaps 208(%rcx), %xmm0
1128 ; SSE-NEXT: movaps %xmm10, %xmm11
1129 ; SSE-NEXT: movlhps {{.*#+}} xmm11 = xmm11[0],xmm0[0]
1130 ; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm0[1]
1131 ; SSE-NEXT: movaps 224(%rdi), %xmm5
1132 ; SSE-NEXT: movaps 224(%rsi), %xmm1
1133 ; SSE-NEXT: movaps %xmm5, %xmm8
1134 ; SSE-NEXT: movlhps {{.*#+}} xmm8 = xmm8[0],xmm1[0]
1135 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]
1136 ; SSE-NEXT: movaps 224(%rdx), %xmm6
1137 ; SSE-NEXT: movaps 224(%rcx), %xmm0
1138 ; SSE-NEXT: movaps %xmm6, %xmm7
1139 ; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm0[0]
1140 ; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm0[1]
1141 ; SSE-NEXT: movaps 240(%rdi), %xmm0
1142 ; SSE-NEXT: movaps 240(%rsi), %xmm3
1143 ; SSE-NEXT: movaps %xmm0, %xmm2
1144 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm3[0]
1145 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm3[1]
1146 ; SSE-NEXT: movaps 240(%rdx), %xmm3
1147 ; SSE-NEXT: movaps 240(%rcx), %xmm4
1148 ; SSE-NEXT: movaps %xmm3, %xmm1
1149 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm4[0]
1150 ; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm4[1]
1151 ; SSE-NEXT: movaps %xmm3, 1008(%r8)
1152 ; SSE-NEXT: movaps %xmm0, 992(%r8)
1153 ; SSE-NEXT: movaps %xmm1, 976(%r8)
1154 ; SSE-NEXT: movaps %xmm2, 960(%r8)
1155 ; SSE-NEXT: movaps %xmm6, 944(%r8)
1156 ; SSE-NEXT: movaps %xmm5, 928(%r8)
1157 ; SSE-NEXT: movaps %xmm7, 912(%r8)
1158 ; SSE-NEXT: movaps %xmm8, 896(%r8)
1159 ; SSE-NEXT: movaps %xmm10, 880(%r8)
1160 ; SSE-NEXT: movaps %xmm9, 864(%r8)
1161 ; SSE-NEXT: movaps %xmm11, 848(%r8)
1162 ; SSE-NEXT: movaps %xmm12, 832(%r8)
1163 ; SSE-NEXT: movaps %xmm14, 816(%r8)
1164 ; SSE-NEXT: movaps %xmm15, 800(%r8)
1165 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1166 ; SSE-NEXT: movaps %xmm0, 784(%r8)
1167 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1168 ; SSE-NEXT: movaps %xmm0, 768(%r8)
1169 ; SSE-NEXT: movaps %xmm13, 752(%r8)
1170 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1171 ; SSE-NEXT: movaps %xmm0, 736(%r8)
1172 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1173 ; SSE-NEXT: movaps %xmm0, 720(%r8)
1174 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1175 ; SSE-NEXT: movaps %xmm0, 704(%r8)
1176 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1177 ; SSE-NEXT: movaps %xmm0, 688(%r8)
1178 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1179 ; SSE-NEXT: movaps %xmm0, 672(%r8)
1180 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1181 ; SSE-NEXT: movaps %xmm0, 656(%r8)
1182 ; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload
1183 ; SSE-NEXT: movaps %xmm0, 640(%r8)
1184 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1185 ; SSE-NEXT: movaps %xmm0, 624(%r8)
1186 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1187 ; SSE-NEXT: movaps %xmm0, 608(%r8)
1188 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1189 ; SSE-NEXT: movaps %xmm0, 592(%r8)
1190 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1191 ; SSE-NEXT: movaps %xmm0, 576(%r8)
1192 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1193 ; SSE-NEXT: movaps %xmm0, 560(%r8)
1194 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1195 ; SSE-NEXT: movaps %xmm0, 544(%r8)
1196 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1197 ; SSE-NEXT: movaps %xmm0, 528(%r8)
1198 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1199 ; SSE-NEXT: movaps %xmm0, 512(%r8)
1200 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1201 ; SSE-NEXT: movaps %xmm0, 496(%r8)
1202 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1203 ; SSE-NEXT: movaps %xmm0, 480(%r8)
1204 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1205 ; SSE-NEXT: movaps %xmm0, 464(%r8)
1206 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1207 ; SSE-NEXT: movaps %xmm0, 448(%r8)
1208 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1209 ; SSE-NEXT: movaps %xmm0, 432(%r8)
1210 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1211 ; SSE-NEXT: movaps %xmm0, 416(%r8)
1212 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1213 ; SSE-NEXT: movaps %xmm0, 400(%r8)
1214 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1215 ; SSE-NEXT: movaps %xmm0, 384(%r8)
1216 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1217 ; SSE-NEXT: movaps %xmm0, 368(%r8)
1218 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1219 ; SSE-NEXT: movaps %xmm0, 352(%r8)
1220 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1221 ; SSE-NEXT: movaps %xmm0, 336(%r8)
1222 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1223 ; SSE-NEXT: movaps %xmm0, 320(%r8)
1224 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1225 ; SSE-NEXT: movaps %xmm0, 304(%r8)
1226 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1227 ; SSE-NEXT: movaps %xmm0, 288(%r8)
1228 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1229 ; SSE-NEXT: movaps %xmm0, 272(%r8)
1230 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1231 ; SSE-NEXT: movaps %xmm0, 256(%r8)
1232 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1233 ; SSE-NEXT: movaps %xmm0, 240(%r8)
1234 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1235 ; SSE-NEXT: movaps %xmm0, 224(%r8)
1236 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1237 ; SSE-NEXT: movaps %xmm0, 208(%r8)
1238 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1239 ; SSE-NEXT: movaps %xmm0, 192(%r8)
1240 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1241 ; SSE-NEXT: movaps %xmm0, 176(%r8)
1242 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1243 ; SSE-NEXT: movaps %xmm0, 160(%r8)
1244 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1245 ; SSE-NEXT: movaps %xmm0, 144(%r8)
1246 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1247 ; SSE-NEXT: movaps %xmm0, 128(%r8)
1248 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1249 ; SSE-NEXT: movaps %xmm0, 112(%r8)
1250 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1251 ; SSE-NEXT: movaps %xmm0, 96(%r8)
1252 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1253 ; SSE-NEXT: movaps %xmm0, 80(%r8)
1254 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1255 ; SSE-NEXT: movaps %xmm0, 64(%r8)
1256 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1257 ; SSE-NEXT: movaps %xmm0, 48(%r8)
1258 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1259 ; SSE-NEXT: movaps %xmm0, 32(%r8)
1260 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1261 ; SSE-NEXT: movaps %xmm0, 16(%r8)
1262 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1263 ; SSE-NEXT: movaps %xmm0, (%r8)
1264 ; SSE-NEXT: addq $664, %rsp # imm = 0x298
1267 ; AVX1-ONLY-LABEL: store_i64_stride4_vf32:
1268 ; AVX1-ONLY: # %bb.0:
1269 ; AVX1-ONLY-NEXT: subq $664, %rsp # imm = 0x298
1270 ; AVX1-ONLY-NEXT: vmovaps 160(%rdx), %ymm0
1271 ; AVX1-ONLY-NEXT: vmovaps 128(%rdx), %ymm2
1272 ; AVX1-ONLY-NEXT: vmovaps 96(%rdx), %ymm4
1273 ; AVX1-ONLY-NEXT: vmovaps 64(%rdx), %ymm6
1274 ; AVX1-ONLY-NEXT: vmovaps 32(%rdx), %ymm7
1275 ; AVX1-ONLY-NEXT: vmovaps (%rdx), %ymm8
1276 ; AVX1-ONLY-NEXT: vmovaps 160(%rcx), %ymm1
1277 ; AVX1-ONLY-NEXT: vmovaps 128(%rcx), %ymm3
1278 ; AVX1-ONLY-NEXT: vmovaps 96(%rcx), %ymm5
1279 ; AVX1-ONLY-NEXT: vmovaps 64(%rcx), %ymm9
1280 ; AVX1-ONLY-NEXT: vmovaps 32(%rcx), %ymm10
1281 ; AVX1-ONLY-NEXT: vmovaps (%rcx), %ymm11
1282 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm8[0],ymm11[0],ymm8[2],ymm11[2]
1283 ; AVX1-ONLY-NEXT: vmovaps 16(%rsi), %xmm13
1284 ; AVX1-ONLY-NEXT: vmovaps 16(%rdi), %xmm14
1285 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm15 = xmm14[0],xmm13[0]
1286 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm12 = ymm15[0,1,2,3],ymm12[4,5,6,7]
1287 ; AVX1-ONLY-NEXT: vmovups %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1288 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm8[1],ymm11[1],ymm8[3],ymm11[3]
1289 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm11 = xmm14[1],xmm13[1]
1290 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm8 = ymm11[0,1,2,3],ymm8[4,5,6,7]
1291 ; AVX1-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1292 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm8 = ymm7[0],ymm10[0],ymm7[2],ymm10[2]
1293 ; AVX1-ONLY-NEXT: vmovaps 48(%rsi), %xmm11
1294 ; AVX1-ONLY-NEXT: vmovaps 48(%rdi), %xmm12
1295 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm13 = xmm12[0],xmm11[0]
1296 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm8 = ymm13[0,1,2,3],ymm8[4,5,6,7]
1297 ; AVX1-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1298 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm7[1],ymm10[1],ymm7[3],ymm10[3]
1299 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm8 = xmm12[1],xmm11[1]
1300 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm7 = ymm8[0,1,2,3],ymm7[4,5,6,7]
1301 ; AVX1-ONLY-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1302 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm7 = ymm6[0],ymm9[0],ymm6[2],ymm9[2]
1303 ; AVX1-ONLY-NEXT: vmovaps 80(%rsi), %xmm8
1304 ; AVX1-ONLY-NEXT: vmovaps 80(%rdi), %xmm10
1305 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm11 = xmm10[0],xmm8[0]
1306 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm7 = ymm11[0,1,2,3],ymm7[4,5,6,7]
1307 ; AVX1-ONLY-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1308 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm6[1],ymm9[1],ymm6[3],ymm9[3]
1309 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm7 = xmm10[1],xmm8[1]
1310 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm6 = ymm7[0,1,2,3],ymm6[4,5,6,7]
1311 ; AVX1-ONLY-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1312 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm6 = ymm4[0],ymm5[0],ymm4[2],ymm5[2]
1313 ; AVX1-ONLY-NEXT: vmovaps 112(%rsi), %xmm7
1314 ; AVX1-ONLY-NEXT: vmovaps 112(%rdi), %xmm8
1315 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm9 = xmm8[0],xmm7[0]
1316 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1,2,3],ymm6[4,5,6,7]
1317 ; AVX1-ONLY-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1318 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm4[1],ymm5[1],ymm4[3],ymm5[3]
1319 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm5 = xmm8[1],xmm7[1]
1320 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1,2,3],ymm4[4,5,6,7]
1321 ; AVX1-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1322 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
1323 ; AVX1-ONLY-NEXT: vmovaps 144(%rsi), %xmm5
1324 ; AVX1-ONLY-NEXT: vmovaps 144(%rdi), %xmm6
1325 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm7 = xmm6[0],xmm5[0]
1326 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm7[0,1,2,3],ymm4[4,5,6,7]
1327 ; AVX1-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1328 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
1329 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm3 = xmm6[1],xmm5[1]
1330 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
1331 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1332 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
1333 ; AVX1-ONLY-NEXT: vmovaps 176(%rsi), %xmm3
1334 ; AVX1-ONLY-NEXT: vmovaps 176(%rdi), %xmm4
1335 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
1336 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]
1337 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1338 ; AVX1-ONLY-NEXT: vmovaps 192(%rdx), %ymm2
1339 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
1340 ; AVX1-ONLY-NEXT: vmovaps 192(%rcx), %ymm1
1341 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm3 = xmm4[1],xmm3[1]
1342 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
1343 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1344 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm2[0],ymm1[0],ymm2[2],ymm1[2]
1345 ; AVX1-ONLY-NEXT: vmovaps 208(%rsi), %xmm3
1346 ; AVX1-ONLY-NEXT: vmovaps 208(%rdi), %xmm4
1347 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
1348 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm5[0,1,2,3],ymm0[4,5,6,7]
1349 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1350 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm1[1],ymm2[3],ymm1[3]
1351 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm1 = xmm4[1],xmm3[1]
1352 ; AVX1-ONLY-NEXT: vmovaps 224(%rdx), %ymm2
1353 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1354 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1355 ; AVX1-ONLY-NEXT: vmovaps 224(%rcx), %ymm0
1356 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm1 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]
1357 ; AVX1-ONLY-NEXT: vmovaps 240(%rsi), %xmm3
1358 ; AVX1-ONLY-NEXT: vmovaps 240(%rdi), %xmm4
1359 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
1360 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm5[0,1,2,3],ymm1[4,5,6,7]
1361 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1362 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]
1363 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm1 = xmm4[1],xmm3[1]
1364 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1365 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1366 ; AVX1-ONLY-NEXT: vmovaps 128(%rsi), %xmm0
1367 ; AVX1-ONLY-NEXT: vmovaps 128(%rdi), %xmm1
1368 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
1369 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1370 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
1371 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1372 ; AVX1-ONLY-NEXT: vmovaps 128(%rcx), %xmm0
1373 ; AVX1-ONLY-NEXT: vmovaps 128(%rdx), %xmm1
1374 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
1375 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1376 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
1377 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1378 ; AVX1-ONLY-NEXT: vmovaps 64(%rsi), %xmm0
1379 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %xmm1
1380 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
1381 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1382 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
1383 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1384 ; AVX1-ONLY-NEXT: vmovaps 64(%rcx), %xmm0
1385 ; AVX1-ONLY-NEXT: vmovaps 64(%rdx), %xmm1
1386 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
1387 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1388 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
1389 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1390 ; AVX1-ONLY-NEXT: vmovaps 32(%rsi), %xmm0
1391 ; AVX1-ONLY-NEXT: vmovaps 32(%rdi), %xmm1
1392 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
1393 ; AVX1-ONLY-NEXT: vmovaps %xmm2, (%rsp) # 16-byte Spill
1394 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
1395 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1396 ; AVX1-ONLY-NEXT: vmovaps 32(%rcx), %xmm0
1397 ; AVX1-ONLY-NEXT: vmovaps 32(%rdx), %xmm1
1398 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
1399 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1400 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
1401 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1402 ; AVX1-ONLY-NEXT: vmovaps 96(%rsi), %xmm0
1403 ; AVX1-ONLY-NEXT: vmovaps 96(%rdi), %xmm1
1404 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
1405 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1406 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
1407 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1408 ; AVX1-ONLY-NEXT: vmovaps 96(%rcx), %xmm0
1409 ; AVX1-ONLY-NEXT: vmovaps 96(%rdx), %xmm1
1410 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
1411 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1412 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
1413 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1414 ; AVX1-ONLY-NEXT: vmovaps 160(%rsi), %xmm0
1415 ; AVX1-ONLY-NEXT: vmovaps 160(%rdi), %xmm1
1416 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
1417 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1418 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm15 = xmm1[1],xmm0[1]
1419 ; AVX1-ONLY-NEXT: vmovaps 160(%rcx), %xmm1
1420 ; AVX1-ONLY-NEXT: vmovaps 160(%rdx), %xmm0
1421 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm14 = xmm0[0],xmm1[0]
1422 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm13 = xmm0[1],xmm1[1]
1423 ; AVX1-ONLY-NEXT: vmovaps 224(%rsi), %xmm1
1424 ; AVX1-ONLY-NEXT: vmovaps 224(%rdi), %xmm0
1425 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm12 = xmm0[0],xmm1[0]
1426 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm11 = xmm0[1],xmm1[1]
1427 ; AVX1-ONLY-NEXT: vmovaps 224(%rcx), %xmm1
1428 ; AVX1-ONLY-NEXT: vmovaps 224(%rdx), %xmm0
1429 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm10 = xmm0[0],xmm1[0]
1430 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm9 = xmm0[1],xmm1[1]
1431 ; AVX1-ONLY-NEXT: vmovaps 192(%rsi), %xmm1
1432 ; AVX1-ONLY-NEXT: vmovaps 192(%rdi), %xmm0
1433 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm8 = xmm0[0],xmm1[0]
1434 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm7 = xmm0[1],xmm1[1]
1435 ; AVX1-ONLY-NEXT: vmovaps 192(%rcx), %xmm1
1436 ; AVX1-ONLY-NEXT: vmovaps 192(%rdx), %xmm0
1437 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm6 = xmm0[0],xmm1[0]
1438 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm5 = xmm0[1],xmm1[1]
1439 ; AVX1-ONLY-NEXT: vmovaps (%rsi), %xmm1
1440 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm0
1441 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm4 = xmm0[0],xmm1[0]
1442 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm3 = xmm0[1],xmm1[1]
1443 ; AVX1-ONLY-NEXT: vmovaps (%rcx), %xmm1
1444 ; AVX1-ONLY-NEXT: vmovaps (%rdx), %xmm0
1445 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]
1446 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
1447 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 48(%r8)
1448 ; AVX1-ONLY-NEXT: vmovaps %xmm3, 32(%r8)
1449 ; AVX1-ONLY-NEXT: vmovaps %xmm2, 16(%r8)
1450 ; AVX1-ONLY-NEXT: vmovaps %xmm4, (%r8)
1451 ; AVX1-ONLY-NEXT: vmovaps %xmm5, 816(%r8)
1452 ; AVX1-ONLY-NEXT: vmovaps %xmm7, 800(%r8)
1453 ; AVX1-ONLY-NEXT: vmovaps %xmm6, 784(%r8)
1454 ; AVX1-ONLY-NEXT: vmovaps %xmm8, 768(%r8)
1455 ; AVX1-ONLY-NEXT: vmovaps %xmm9, 944(%r8)
1456 ; AVX1-ONLY-NEXT: vmovaps %xmm11, 928(%r8)
1457 ; AVX1-ONLY-NEXT: vmovaps %xmm10, 912(%r8)
1458 ; AVX1-ONLY-NEXT: vmovaps %xmm12, 896(%r8)
1459 ; AVX1-ONLY-NEXT: vmovaps %xmm13, 688(%r8)
1460 ; AVX1-ONLY-NEXT: vmovaps %xmm15, 672(%r8)
1461 ; AVX1-ONLY-NEXT: vmovaps %xmm14, 656(%r8)
1462 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1463 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 640(%r8)
1464 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1465 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 432(%r8)
1466 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1467 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 416(%r8)
1468 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1469 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 400(%r8)
1470 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1471 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 384(%r8)
1472 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1473 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 176(%r8)
1474 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1475 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 160(%r8)
1476 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1477 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 144(%r8)
1478 ; AVX1-ONLY-NEXT: vmovaps (%rsp), %xmm0 # 16-byte Reload
1479 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 128(%r8)
1480 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1481 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 304(%r8)
1482 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1483 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 288(%r8)
1484 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1485 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 272(%r8)
1486 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1487 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 256(%r8)
1488 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1489 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 560(%r8)
1490 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1491 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 544(%r8)
1492 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1493 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 528(%r8)
1494 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1495 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 512(%r8)
1496 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1497 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 992(%r8)
1498 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1499 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 960(%r8)
1500 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1501 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 864(%r8)
1502 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1503 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 832(%r8)
1504 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1505 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 736(%r8)
1506 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1507 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 704(%r8)
1508 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1509 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 608(%r8)
1510 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1511 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 576(%r8)
1512 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1513 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 480(%r8)
1514 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1515 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 448(%r8)
1516 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1517 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 352(%r8)
1518 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1519 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 320(%r8)
1520 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1521 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 224(%r8)
1522 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1523 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 192(%r8)
1524 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1525 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 96(%r8)
1526 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1527 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 64(%r8)
1528 ; AVX1-ONLY-NEXT: addq $664, %rsp # imm = 0x298
1529 ; AVX1-ONLY-NEXT: vzeroupper
1530 ; AVX1-ONLY-NEXT: retq
1532 ; AVX2-ONLY-LABEL: store_i64_stride4_vf32:
1533 ; AVX2-ONLY: # %bb.0:
1534 ; AVX2-ONLY-NEXT: subq $520, %rsp # imm = 0x208
1535 ; AVX2-ONLY-NEXT: vmovaps (%rsi), %xmm0
1536 ; AVX2-ONLY-NEXT: vmovaps 32(%rsi), %xmm1
1537 ; AVX2-ONLY-NEXT: vmovaps 64(%rsi), %xmm2
1538 ; AVX2-ONLY-NEXT: vinsertf128 $1, (%rcx), %ymm0, %ymm0
1539 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm3
1540 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm4
1541 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %xmm5
1542 ; AVX2-ONLY-NEXT: vinsertf128 $1, (%rdx), %ymm3, %ymm3
1543 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm6 = ymm3[0],ymm0[0],ymm3[2],ymm0[2]
1544 ; AVX2-ONLY-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1545 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm3[1],ymm0[1],ymm3[3],ymm0[3]
1546 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1547 ; AVX2-ONLY-NEXT: vinsertf128 $1, 32(%rcx), %ymm1, %ymm0
1548 ; AVX2-ONLY-NEXT: vinsertf128 $1, 32(%rdx), %ymm4, %ymm1
1549 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1550 ; AVX2-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1551 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1552 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1553 ; AVX2-ONLY-NEXT: vinsertf128 $1, 64(%rcx), %ymm2, %ymm0
1554 ; AVX2-ONLY-NEXT: vinsertf128 $1, 64(%rdx), %ymm5, %ymm1
1555 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1556 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1557 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1558 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1559 ; AVX2-ONLY-NEXT: vmovaps 96(%rsi), %xmm0
1560 ; AVX2-ONLY-NEXT: vinsertf128 $1, 96(%rcx), %ymm0, %ymm0
1561 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %xmm1
1562 ; AVX2-ONLY-NEXT: vinsertf128 $1, 96(%rdx), %ymm1, %ymm1
1563 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1564 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1565 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1566 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1567 ; AVX2-ONLY-NEXT: vmovaps 128(%rsi), %xmm0
1568 ; AVX2-ONLY-NEXT: vinsertf128 $1, 128(%rcx), %ymm0, %ymm0
1569 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %xmm1
1570 ; AVX2-ONLY-NEXT: vinsertf128 $1, 128(%rdx), %ymm1, %ymm1
1571 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1572 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1573 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1574 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1575 ; AVX2-ONLY-NEXT: vmovaps 160(%rsi), %xmm0
1576 ; AVX2-ONLY-NEXT: vinsertf128 $1, 160(%rcx), %ymm0, %ymm0
1577 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %xmm1
1578 ; AVX2-ONLY-NEXT: vinsertf128 $1, 160(%rdx), %ymm1, %ymm1
1579 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1580 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1581 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1582 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1583 ; AVX2-ONLY-NEXT: vmovaps 192(%rsi), %xmm0
1584 ; AVX2-ONLY-NEXT: vinsertf128 $1, 192(%rcx), %ymm0, %ymm0
1585 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %xmm1
1586 ; AVX2-ONLY-NEXT: vinsertf128 $1, 192(%rdx), %ymm1, %ymm1
1587 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1588 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1589 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1590 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1591 ; AVX2-ONLY-NEXT: vmovaps 224(%rsi), %xmm0
1592 ; AVX2-ONLY-NEXT: vinsertf128 $1, 224(%rcx), %ymm0, %ymm0
1593 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %xmm1
1594 ; AVX2-ONLY-NEXT: vinsertf128 $1, 224(%rdx), %ymm1, %ymm1
1595 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1596 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1597 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
1598 ; AVX2-ONLY-NEXT: vmovups %ymm0, (%rsp) # 32-byte Spill
1599 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm0
1600 ; AVX2-ONLY-NEXT: vmovaps (%rsi), %ymm1
1601 ; AVX2-ONLY-NEXT: vmovaps (%rdx), %ymm2
1602 ; AVX2-ONLY-NEXT: vmovaps (%rcx), %ymm3
1603 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
1604 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
1605 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm5[2,3],ymm4[2,3]
1606 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1607 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
1608 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
1609 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
1610 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1611 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm0
1612 ; AVX2-ONLY-NEXT: vmovaps 32(%rsi), %ymm1
1613 ; AVX2-ONLY-NEXT: vmovaps 32(%rdx), %ymm2
1614 ; AVX2-ONLY-NEXT: vmovaps 32(%rcx), %ymm3
1615 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
1616 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
1617 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm5[2,3],ymm4[2,3]
1618 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1619 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
1620 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
1621 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
1622 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1623 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm3
1624 ; AVX2-ONLY-NEXT: vmovaps 64(%rsi), %ymm1
1625 ; AVX2-ONLY-NEXT: vmovaps 64(%rdx), %ymm2
1626 ; AVX2-ONLY-NEXT: vmovaps 64(%rcx), %ymm0
1627 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]
1628 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm9 = ymm3[0],ymm1[0],ymm3[2],ymm1[2]
1629 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm10 = ymm9[2,3],ymm4[2,3]
1630 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]
1631 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm3[1],ymm1[1],ymm3[3],ymm1[3]
1632 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm8 = ymm1[2,3],ymm0[2,3]
1633 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm1
1634 ; AVX2-ONLY-NEXT: vmovaps 96(%rsi), %ymm3
1635 ; AVX2-ONLY-NEXT: vmovaps 96(%rdx), %ymm9
1636 ; AVX2-ONLY-NEXT: vmovaps 96(%rcx), %ymm0
1637 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm9[0],ymm0[0],ymm9[2],ymm0[2]
1638 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm1[0],ymm3[0],ymm1[2],ymm3[2]
1639 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm7 = ymm11[2,3],ymm2[2,3]
1640 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm9[1],ymm0[1],ymm9[3],ymm0[3]
1641 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm3[1],ymm1[3],ymm3[3]
1642 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm6 = ymm1[2,3],ymm0[2,3]
1643 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %ymm1
1644 ; AVX2-ONLY-NEXT: vmovaps 128(%rsi), %ymm3
1645 ; AVX2-ONLY-NEXT: vmovaps 128(%rdx), %ymm9
1646 ; AVX2-ONLY-NEXT: vmovaps 128(%rcx), %ymm11
1647 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm9[0],ymm11[0],ymm9[2],ymm11[2]
1648 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm1[0],ymm3[0],ymm1[2],ymm3[2]
1649 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm5 = ymm13[2,3],ymm0[2,3]
1650 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm9 = ymm9[1],ymm11[1],ymm9[3],ymm11[3]
1651 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm3[1],ymm1[3],ymm3[3]
1652 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm1[2,3],ymm9[2,3]
1653 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %ymm3
1654 ; AVX2-ONLY-NEXT: vmovaps 160(%rsi), %ymm9
1655 ; AVX2-ONLY-NEXT: vmovaps 160(%rdx), %ymm11
1656 ; AVX2-ONLY-NEXT: vmovaps 160(%rcx), %ymm13
1657 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm11[0],ymm13[0],ymm11[2],ymm13[2]
1658 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm3[0],ymm9[0],ymm3[2],ymm9[2]
1659 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm15[2,3],ymm0[2,3]
1660 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm11 = ymm11[1],ymm13[1],ymm11[3],ymm13[3]
1661 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm9[1],ymm3[3],ymm9[3]
1662 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm3 = ymm3[2,3],ymm11[2,3]
1663 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %ymm9
1664 ; AVX2-ONLY-NEXT: vmovaps 192(%rsi), %ymm11
1665 ; AVX2-ONLY-NEXT: vmovaps 192(%rdx), %ymm13
1666 ; AVX2-ONLY-NEXT: vmovaps 192(%rcx), %ymm15
1667 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm13[0],ymm15[0],ymm13[2],ymm15[2]
1668 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm14 = ymm9[0],ymm11[0],ymm9[2],ymm11[2]
1669 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm14[2,3],ymm0[2,3]
1670 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm13 = ymm13[1],ymm15[1],ymm13[3],ymm15[3]
1671 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm9 = ymm9[1],ymm11[1],ymm9[3],ymm11[3]
1672 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm9 = ymm9[2,3],ymm13[2,3]
1673 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %ymm11
1674 ; AVX2-ONLY-NEXT: vmovaps 224(%rsi), %ymm13
1675 ; AVX2-ONLY-NEXT: vmovaps 224(%rdx), %ymm14
1676 ; AVX2-ONLY-NEXT: vmovaps 224(%rcx), %ymm15
1677 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm14[0],ymm15[0],ymm14[2],ymm15[2]
1678 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm11[0],ymm13[0],ymm11[2],ymm13[2]
1679 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm12[2,3],ymm0[2,3]
1680 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm14[1],ymm15[1],ymm14[3],ymm15[3]
1681 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm11 = ymm11[1],ymm13[1],ymm11[3],ymm13[3]
1682 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm11 = ymm11[2,3],ymm12[2,3]
1683 ; AVX2-ONLY-NEXT: vmovaps %ymm11, 992(%r8)
1684 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 960(%r8)
1685 ; AVX2-ONLY-NEXT: vmovaps %ymm9, 864(%r8)
1686 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 832(%r8)
1687 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 736(%r8)
1688 ; AVX2-ONLY-NEXT: vmovaps %ymm2, 704(%r8)
1689 ; AVX2-ONLY-NEXT: vmovaps %ymm4, 608(%r8)
1690 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 576(%r8)
1691 ; AVX2-ONLY-NEXT: vmovaps %ymm6, 480(%r8)
1692 ; AVX2-ONLY-NEXT: vmovaps %ymm7, 448(%r8)
1693 ; AVX2-ONLY-NEXT: vmovaps %ymm8, 352(%r8)
1694 ; AVX2-ONLY-NEXT: vmovaps %ymm10, 320(%r8)
1695 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1696 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 224(%r8)
1697 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1698 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 192(%r8)
1699 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1700 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 96(%r8)
1701 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1702 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 64(%r8)
1703 ; AVX2-ONLY-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload
1704 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 928(%r8)
1705 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1706 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 896(%r8)
1707 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1708 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 800(%r8)
1709 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1710 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 768(%r8)
1711 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1712 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 672(%r8)
1713 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1714 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 640(%r8)
1715 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1716 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 544(%r8)
1717 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1718 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 512(%r8)
1719 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1720 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 416(%r8)
1721 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1722 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 384(%r8)
1723 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1724 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 288(%r8)
1725 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1726 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 256(%r8)
1727 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1728 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 160(%r8)
1729 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1730 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 128(%r8)
1731 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1732 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 32(%r8)
1733 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1734 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%r8)
1735 ; AVX2-ONLY-NEXT: addq $520, %rsp # imm = 0x208
1736 ; AVX2-ONLY-NEXT: vzeroupper
1737 ; AVX2-ONLY-NEXT: retq
1739 ; AVX512F-LABEL: store_i64_stride4_vf32:
1741 ; AVX512F-NEXT: vmovdqa64 (%rdi), %zmm0
1742 ; AVX512F-NEXT: vmovdqa64 64(%rdi), %zmm1
1743 ; AVX512F-NEXT: vmovdqa64 128(%rdi), %zmm2
1744 ; AVX512F-NEXT: vmovdqa64 192(%rdi), %zmm3
1745 ; AVX512F-NEXT: vmovdqa64 (%rsi), %zmm17
1746 ; AVX512F-NEXT: vmovdqa64 64(%rsi), %zmm23
1747 ; AVX512F-NEXT: vmovdqa64 128(%rsi), %zmm12
1748 ; AVX512F-NEXT: vmovdqa64 192(%rsi), %zmm5
1749 ; AVX512F-NEXT: vmovdqa64 (%rdx), %zmm22
1750 ; AVX512F-NEXT: vmovdqa64 64(%rdx), %zmm25
1751 ; AVX512F-NEXT: vmovdqa64 128(%rdx), %zmm13
1752 ; AVX512F-NEXT: vmovdqa64 192(%rdx), %zmm6
1753 ; AVX512F-NEXT: vmovdqa64 (%rcx), %zmm21
1754 ; AVX512F-NEXT: vmovdqa64 64(%rcx), %zmm26
1755 ; AVX512F-NEXT: vmovdqa64 128(%rcx), %zmm19
1756 ; AVX512F-NEXT: vmovdqa64 192(%rcx), %zmm9
1757 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm14 = <u,u,2,10,u,u,3,11>
1758 ; AVX512F-NEXT: vmovdqa64 %zmm22, %zmm8
1759 ; AVX512F-NEXT: vpermt2q %zmm21, %zmm14, %zmm8
1760 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm7 = <2,10,u,u,3,11,u,u>
1761 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm4
1762 ; AVX512F-NEXT: vpermt2q %zmm17, %zmm7, %zmm4
1763 ; AVX512F-NEXT: movb $-52, %al
1764 ; AVX512F-NEXT: kmovw %eax, %k1
1765 ; AVX512F-NEXT: vmovdqa64 %zmm8, %zmm4 {%k1}
1766 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm16 = <u,u,0,8,u,u,1,9>
1767 ; AVX512F-NEXT: vmovdqa64 %zmm22, %zmm10
1768 ; AVX512F-NEXT: vpermt2q %zmm21, %zmm16, %zmm10
1769 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm11 = <0,8,u,u,1,9,u,u>
1770 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm8
1771 ; AVX512F-NEXT: vpermt2q %zmm17, %zmm11, %zmm8
1772 ; AVX512F-NEXT: vmovdqa64 %zmm10, %zmm8 {%k1}
1773 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm18 = <u,u,6,14,u,u,7,15>
1774 ; AVX512F-NEXT: vmovdqa64 %zmm22, %zmm20
1775 ; AVX512F-NEXT: vpermt2q %zmm21, %zmm18, %zmm20
1776 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm15 = <6,14,u,u,7,15,u,u>
1777 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm10
1778 ; AVX512F-NEXT: vpermt2q %zmm17, %zmm15, %zmm10
1779 ; AVX512F-NEXT: vmovdqa64 %zmm20, %zmm10 {%k1}
1780 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm20 = <u,u,4,12,u,u,5,13>
1781 ; AVX512F-NEXT: vpermt2q %zmm21, %zmm20, %zmm22
1782 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm21 = <4,12,u,u,5,13,u,u>
1783 ; AVX512F-NEXT: vpermt2q %zmm17, %zmm21, %zmm0
1784 ; AVX512F-NEXT: vmovdqa64 %zmm22, %zmm0 {%k1}
1785 ; AVX512F-NEXT: vmovdqa64 %zmm25, %zmm22
1786 ; AVX512F-NEXT: vpermt2q %zmm26, %zmm14, %zmm22
1787 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm17
1788 ; AVX512F-NEXT: vpermt2q %zmm23, %zmm7, %zmm17
1789 ; AVX512F-NEXT: vmovdqa64 %zmm22, %zmm17 {%k1}
1790 ; AVX512F-NEXT: vmovdqa64 %zmm25, %zmm24
1791 ; AVX512F-NEXT: vpermt2q %zmm26, %zmm16, %zmm24
1792 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm22
1793 ; AVX512F-NEXT: vpermt2q %zmm23, %zmm11, %zmm22
1794 ; AVX512F-NEXT: vmovdqa64 %zmm24, %zmm22 {%k1}
1795 ; AVX512F-NEXT: vmovdqa64 %zmm25, %zmm27
1796 ; AVX512F-NEXT: vpermt2q %zmm26, %zmm18, %zmm27
1797 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm24
1798 ; AVX512F-NEXT: vpermt2q %zmm23, %zmm15, %zmm24
1799 ; AVX512F-NEXT: vmovdqa64 %zmm27, %zmm24 {%k1}
1800 ; AVX512F-NEXT: vpermt2q %zmm26, %zmm20, %zmm25
1801 ; AVX512F-NEXT: vpermt2q %zmm23, %zmm21, %zmm1
1802 ; AVX512F-NEXT: vmovdqa64 %zmm25, %zmm1 {%k1}
1803 ; AVX512F-NEXT: vmovdqa64 %zmm13, %zmm23
1804 ; AVX512F-NEXT: vpermt2q %zmm19, %zmm14, %zmm23
1805 ; AVX512F-NEXT: vmovdqa64 %zmm2, %zmm25
1806 ; AVX512F-NEXT: vpermt2q %zmm12, %zmm7, %zmm25
1807 ; AVX512F-NEXT: vmovdqa64 %zmm23, %zmm25 {%k1}
1808 ; AVX512F-NEXT: vmovdqa64 %zmm13, %zmm23
1809 ; AVX512F-NEXT: vpermt2q %zmm19, %zmm16, %zmm23
1810 ; AVX512F-NEXT: vmovdqa64 %zmm2, %zmm26
1811 ; AVX512F-NEXT: vpermt2q %zmm12, %zmm11, %zmm26
1812 ; AVX512F-NEXT: vmovdqa64 %zmm23, %zmm26 {%k1}
1813 ; AVX512F-NEXT: vmovdqa64 %zmm13, %zmm23
1814 ; AVX512F-NEXT: vpermt2q %zmm19, %zmm18, %zmm23
1815 ; AVX512F-NEXT: vmovdqa64 %zmm2, %zmm27
1816 ; AVX512F-NEXT: vpermt2q %zmm12, %zmm15, %zmm27
1817 ; AVX512F-NEXT: vmovdqa64 %zmm23, %zmm27 {%k1}
1818 ; AVX512F-NEXT: vpermt2q %zmm19, %zmm20, %zmm13
1819 ; AVX512F-NEXT: vpermt2q %zmm12, %zmm21, %zmm2
1820 ; AVX512F-NEXT: vmovdqa64 %zmm13, %zmm2 {%k1}
1821 ; AVX512F-NEXT: vpermi2q %zmm9, %zmm6, %zmm14
1822 ; AVX512F-NEXT: vpermi2q %zmm5, %zmm3, %zmm7
1823 ; AVX512F-NEXT: vmovdqa64 %zmm14, %zmm7 {%k1}
1824 ; AVX512F-NEXT: vpermi2q %zmm9, %zmm6, %zmm16
1825 ; AVX512F-NEXT: vpermi2q %zmm5, %zmm3, %zmm11
1826 ; AVX512F-NEXT: vmovdqa64 %zmm16, %zmm11 {%k1}
1827 ; AVX512F-NEXT: vpermi2q %zmm9, %zmm6, %zmm18
1828 ; AVX512F-NEXT: vpermi2q %zmm5, %zmm3, %zmm15
1829 ; AVX512F-NEXT: vmovdqa64 %zmm18, %zmm15 {%k1}
1830 ; AVX512F-NEXT: vpermt2q %zmm9, %zmm20, %zmm6
1831 ; AVX512F-NEXT: vpermt2q %zmm5, %zmm21, %zmm3
1832 ; AVX512F-NEXT: vmovdqa64 %zmm6, %zmm3 {%k1}
1833 ; AVX512F-NEXT: vmovdqa64 %zmm3, 896(%r8)
1834 ; AVX512F-NEXT: vmovdqa64 %zmm15, 960(%r8)
1835 ; AVX512F-NEXT: vmovdqa64 %zmm11, 768(%r8)
1836 ; AVX512F-NEXT: vmovdqa64 %zmm7, 832(%r8)
1837 ; AVX512F-NEXT: vmovdqa64 %zmm2, 640(%r8)
1838 ; AVX512F-NEXT: vmovdqa64 %zmm27, 704(%r8)
1839 ; AVX512F-NEXT: vmovdqa64 %zmm26, 512(%r8)
1840 ; AVX512F-NEXT: vmovdqa64 %zmm25, 576(%r8)
1841 ; AVX512F-NEXT: vmovdqa64 %zmm1, 384(%r8)
1842 ; AVX512F-NEXT: vmovdqa64 %zmm24, 448(%r8)
1843 ; AVX512F-NEXT: vmovdqa64 %zmm22, 256(%r8)
1844 ; AVX512F-NEXT: vmovdqa64 %zmm17, 320(%r8)
1845 ; AVX512F-NEXT: vmovdqa64 %zmm0, 128(%r8)
1846 ; AVX512F-NEXT: vmovdqa64 %zmm10, 192(%r8)
1847 ; AVX512F-NEXT: vmovdqa64 %zmm8, (%r8)
1848 ; AVX512F-NEXT: vmovdqa64 %zmm4, 64(%r8)
1849 ; AVX512F-NEXT: vzeroupper
1850 ; AVX512F-NEXT: retq
1852 ; AVX512BW-LABEL: store_i64_stride4_vf32:
1853 ; AVX512BW: # %bb.0:
1854 ; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm0
1855 ; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm1
1856 ; AVX512BW-NEXT: vmovdqa64 128(%rdi), %zmm2
1857 ; AVX512BW-NEXT: vmovdqa64 192(%rdi), %zmm3
1858 ; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm17
1859 ; AVX512BW-NEXT: vmovdqa64 64(%rsi), %zmm23
1860 ; AVX512BW-NEXT: vmovdqa64 128(%rsi), %zmm12
1861 ; AVX512BW-NEXT: vmovdqa64 192(%rsi), %zmm5
1862 ; AVX512BW-NEXT: vmovdqa64 (%rdx), %zmm22
1863 ; AVX512BW-NEXT: vmovdqa64 64(%rdx), %zmm25
1864 ; AVX512BW-NEXT: vmovdqa64 128(%rdx), %zmm13
1865 ; AVX512BW-NEXT: vmovdqa64 192(%rdx), %zmm6
1866 ; AVX512BW-NEXT: vmovdqa64 (%rcx), %zmm21
1867 ; AVX512BW-NEXT: vmovdqa64 64(%rcx), %zmm26
1868 ; AVX512BW-NEXT: vmovdqa64 128(%rcx), %zmm19
1869 ; AVX512BW-NEXT: vmovdqa64 192(%rcx), %zmm9
1870 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm14 = <u,u,2,10,u,u,3,11>
1871 ; AVX512BW-NEXT: vmovdqa64 %zmm22, %zmm8
1872 ; AVX512BW-NEXT: vpermt2q %zmm21, %zmm14, %zmm8
1873 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm7 = <2,10,u,u,3,11,u,u>
1874 ; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm4
1875 ; AVX512BW-NEXT: vpermt2q %zmm17, %zmm7, %zmm4
1876 ; AVX512BW-NEXT: movb $-52, %al
1877 ; AVX512BW-NEXT: kmovd %eax, %k1
1878 ; AVX512BW-NEXT: vmovdqa64 %zmm8, %zmm4 {%k1}
1879 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm16 = <u,u,0,8,u,u,1,9>
1880 ; AVX512BW-NEXT: vmovdqa64 %zmm22, %zmm10
1881 ; AVX512BW-NEXT: vpermt2q %zmm21, %zmm16, %zmm10
1882 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm11 = <0,8,u,u,1,9,u,u>
1883 ; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm8
1884 ; AVX512BW-NEXT: vpermt2q %zmm17, %zmm11, %zmm8
1885 ; AVX512BW-NEXT: vmovdqa64 %zmm10, %zmm8 {%k1}
1886 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm18 = <u,u,6,14,u,u,7,15>
1887 ; AVX512BW-NEXT: vmovdqa64 %zmm22, %zmm20
1888 ; AVX512BW-NEXT: vpermt2q %zmm21, %zmm18, %zmm20
1889 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm15 = <6,14,u,u,7,15,u,u>
1890 ; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm10
1891 ; AVX512BW-NEXT: vpermt2q %zmm17, %zmm15, %zmm10
1892 ; AVX512BW-NEXT: vmovdqa64 %zmm20, %zmm10 {%k1}
1893 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm20 = <u,u,4,12,u,u,5,13>
1894 ; AVX512BW-NEXT: vpermt2q %zmm21, %zmm20, %zmm22
1895 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm21 = <4,12,u,u,5,13,u,u>
1896 ; AVX512BW-NEXT: vpermt2q %zmm17, %zmm21, %zmm0
1897 ; AVX512BW-NEXT: vmovdqa64 %zmm22, %zmm0 {%k1}
1898 ; AVX512BW-NEXT: vmovdqa64 %zmm25, %zmm22
1899 ; AVX512BW-NEXT: vpermt2q %zmm26, %zmm14, %zmm22
1900 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm17
1901 ; AVX512BW-NEXT: vpermt2q %zmm23, %zmm7, %zmm17
1902 ; AVX512BW-NEXT: vmovdqa64 %zmm22, %zmm17 {%k1}
1903 ; AVX512BW-NEXT: vmovdqa64 %zmm25, %zmm24
1904 ; AVX512BW-NEXT: vpermt2q %zmm26, %zmm16, %zmm24
1905 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm22
1906 ; AVX512BW-NEXT: vpermt2q %zmm23, %zmm11, %zmm22
1907 ; AVX512BW-NEXT: vmovdqa64 %zmm24, %zmm22 {%k1}
1908 ; AVX512BW-NEXT: vmovdqa64 %zmm25, %zmm27
1909 ; AVX512BW-NEXT: vpermt2q %zmm26, %zmm18, %zmm27
1910 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm24
1911 ; AVX512BW-NEXT: vpermt2q %zmm23, %zmm15, %zmm24
1912 ; AVX512BW-NEXT: vmovdqa64 %zmm27, %zmm24 {%k1}
1913 ; AVX512BW-NEXT: vpermt2q %zmm26, %zmm20, %zmm25
1914 ; AVX512BW-NEXT: vpermt2q %zmm23, %zmm21, %zmm1
1915 ; AVX512BW-NEXT: vmovdqa64 %zmm25, %zmm1 {%k1}
1916 ; AVX512BW-NEXT: vmovdqa64 %zmm13, %zmm23
1917 ; AVX512BW-NEXT: vpermt2q %zmm19, %zmm14, %zmm23
1918 ; AVX512BW-NEXT: vmovdqa64 %zmm2, %zmm25
1919 ; AVX512BW-NEXT: vpermt2q %zmm12, %zmm7, %zmm25
1920 ; AVX512BW-NEXT: vmovdqa64 %zmm23, %zmm25 {%k1}
1921 ; AVX512BW-NEXT: vmovdqa64 %zmm13, %zmm23
1922 ; AVX512BW-NEXT: vpermt2q %zmm19, %zmm16, %zmm23
1923 ; AVX512BW-NEXT: vmovdqa64 %zmm2, %zmm26
1924 ; AVX512BW-NEXT: vpermt2q %zmm12, %zmm11, %zmm26
1925 ; AVX512BW-NEXT: vmovdqa64 %zmm23, %zmm26 {%k1}
1926 ; AVX512BW-NEXT: vmovdqa64 %zmm13, %zmm23
1927 ; AVX512BW-NEXT: vpermt2q %zmm19, %zmm18, %zmm23
1928 ; AVX512BW-NEXT: vmovdqa64 %zmm2, %zmm27
1929 ; AVX512BW-NEXT: vpermt2q %zmm12, %zmm15, %zmm27
1930 ; AVX512BW-NEXT: vmovdqa64 %zmm23, %zmm27 {%k1}
1931 ; AVX512BW-NEXT: vpermt2q %zmm19, %zmm20, %zmm13
1932 ; AVX512BW-NEXT: vpermt2q %zmm12, %zmm21, %zmm2
1933 ; AVX512BW-NEXT: vmovdqa64 %zmm13, %zmm2 {%k1}
1934 ; AVX512BW-NEXT: vpermi2q %zmm9, %zmm6, %zmm14
1935 ; AVX512BW-NEXT: vpermi2q %zmm5, %zmm3, %zmm7
1936 ; AVX512BW-NEXT: vmovdqa64 %zmm14, %zmm7 {%k1}
1937 ; AVX512BW-NEXT: vpermi2q %zmm9, %zmm6, %zmm16
1938 ; AVX512BW-NEXT: vpermi2q %zmm5, %zmm3, %zmm11
1939 ; AVX512BW-NEXT: vmovdqa64 %zmm16, %zmm11 {%k1}
1940 ; AVX512BW-NEXT: vpermi2q %zmm9, %zmm6, %zmm18
1941 ; AVX512BW-NEXT: vpermi2q %zmm5, %zmm3, %zmm15
1942 ; AVX512BW-NEXT: vmovdqa64 %zmm18, %zmm15 {%k1}
1943 ; AVX512BW-NEXT: vpermt2q %zmm9, %zmm20, %zmm6
1944 ; AVX512BW-NEXT: vpermt2q %zmm5, %zmm21, %zmm3
1945 ; AVX512BW-NEXT: vmovdqa64 %zmm6, %zmm3 {%k1}
1946 ; AVX512BW-NEXT: vmovdqa64 %zmm3, 896(%r8)
1947 ; AVX512BW-NEXT: vmovdqa64 %zmm15, 960(%r8)
1948 ; AVX512BW-NEXT: vmovdqa64 %zmm11, 768(%r8)
1949 ; AVX512BW-NEXT: vmovdqa64 %zmm7, 832(%r8)
1950 ; AVX512BW-NEXT: vmovdqa64 %zmm2, 640(%r8)
1951 ; AVX512BW-NEXT: vmovdqa64 %zmm27, 704(%r8)
1952 ; AVX512BW-NEXT: vmovdqa64 %zmm26, 512(%r8)
1953 ; AVX512BW-NEXT: vmovdqa64 %zmm25, 576(%r8)
1954 ; AVX512BW-NEXT: vmovdqa64 %zmm1, 384(%r8)
1955 ; AVX512BW-NEXT: vmovdqa64 %zmm24, 448(%r8)
1956 ; AVX512BW-NEXT: vmovdqa64 %zmm22, 256(%r8)
1957 ; AVX512BW-NEXT: vmovdqa64 %zmm17, 320(%r8)
1958 ; AVX512BW-NEXT: vmovdqa64 %zmm0, 128(%r8)
1959 ; AVX512BW-NEXT: vmovdqa64 %zmm10, 192(%r8)
1960 ; AVX512BW-NEXT: vmovdqa64 %zmm8, (%r8)
1961 ; AVX512BW-NEXT: vmovdqa64 %zmm4, 64(%r8)
1962 ; AVX512BW-NEXT: vzeroupper
1963 ; AVX512BW-NEXT: retq
1964 %in.vec0 = load <32 x i64>, ptr %in.vecptr0, align 64
1965 %in.vec1 = load <32 x i64>, ptr %in.vecptr1, align 64
1966 %in.vec2 = load <32 x i64>, ptr %in.vecptr2, align 64
1967 %in.vec3 = load <32 x i64>, ptr %in.vecptr3, align 64
1968 %1 = shufflevector <32 x i64> %in.vec0, <32 x i64> %in.vec1, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>
1969 %2 = shufflevector <32 x i64> %in.vec2, <32 x i64> %in.vec3, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>
1970 %3 = shufflevector <64 x i64> %1, <64 x i64> %2, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>
1971 %interleaved.vec = shufflevector <128 x i64> %3, <128 x i64> poison, <128 x i32> <i32 0, i32 32, i32 64, i32 96, i32 1, i32 33, i32 65, i32 97, i32 2, i32 34, i32 66, i32 98, i32 3, i32 35, i32 67, i32 99, i32 4, i32 36, i32 68, i32 100, i32 5, i32 37, i32 69, i32 101, i32 6, i32 38, i32 70, i32 102, i32 7, i32 39, i32 71, i32 103, i32 8, i32 40, i32 72, i32 104, i32 9, i32 41, i32 73, i32 105, i32 10, i32 42, i32 74, i32 106, i32 11, i32 43, i32 75, i32 107, i32 12, i32 44, i32 76, i32 108, i32 13, i32 45, i32 77, i32 109, i32 14, i32 46, i32 78, i32 110, i32 15, i32 47, i32 79, i32 111, i32 16, i32 48, i32 80, i32 112, i32 17, i32 49, i32 81, i32 113, i32 18, i32 50, i32 82, i32 114, i32 19, i32 51, i32 83, i32 115, i32 20, i32 52, i32 84, i32 116, i32 21, i32 53, i32 85, i32 117, i32 22, i32 54, i32 86, i32 118, i32 23, i32 55, i32 87, i32 119, i32 24, i32 56, i32 88, i32 120, i32 25, i32 57, i32 89, i32 121, i32 26, i32 58, i32 90, i32 122, i32 27, i32 59, i32 91, i32 123, i32 28, i32 60, i32 92, i32 124, i32 29, i32 61, i32 93, i32 125, i32 30, i32 62, i32 94, i32 126, i32 31, i32 63, i32 95, i32 127>
1972 store <128 x i64> %interleaved.vec, ptr %out.vec, align 64
1976 define void @store_i64_stride4_vf64(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %out.vec) nounwind {
1977 ; SSE-LABEL: store_i64_stride4_vf64:
1979 ; SSE-NEXT: subq $1688, %rsp # imm = 0x698
1980 ; SSE-NEXT: movaps (%rdi), %xmm7
1981 ; SSE-NEXT: movaps 16(%rdi), %xmm8
1982 ; SSE-NEXT: movaps 32(%rdi), %xmm9
1983 ; SSE-NEXT: movaps 48(%rdi), %xmm10
1984 ; SSE-NEXT: movaps (%rsi), %xmm3
1985 ; SSE-NEXT: movaps 16(%rsi), %xmm2
1986 ; SSE-NEXT: movaps 32(%rsi), %xmm1
1987 ; SSE-NEXT: movaps 48(%rsi), %xmm0
1988 ; SSE-NEXT: movaps (%rdx), %xmm11
1989 ; SSE-NEXT: movaps 16(%rdx), %xmm12
1990 ; SSE-NEXT: movaps 32(%rdx), %xmm13
1991 ; SSE-NEXT: movaps 48(%rdx), %xmm14
1992 ; SSE-NEXT: movaps (%rcx), %xmm4
1993 ; SSE-NEXT: movaps 16(%rcx), %xmm5
1994 ; SSE-NEXT: movaps 32(%rcx), %xmm6
1995 ; SSE-NEXT: movaps %xmm7, %xmm15
1996 ; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm3[0]
1997 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1998 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm3[1]
1999 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2000 ; SSE-NEXT: movaps %xmm11, %xmm3
2001 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm4[0]
2002 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2003 ; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm4[1]
2004 ; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2005 ; SSE-NEXT: movaps %xmm8, %xmm3
2006 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm2[0]
2007 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2008 ; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm2[1]
2009 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2010 ; SSE-NEXT: movaps %xmm12, %xmm2
2011 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm5[0]
2012 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2013 ; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm5[1]
2014 ; SSE-NEXT: movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2015 ; SSE-NEXT: movaps %xmm9, %xmm2
2016 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
2017 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2018 ; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm1[1]
2019 ; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2020 ; SSE-NEXT: movaps %xmm13, %xmm1
2021 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm6[0]
2022 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2023 ; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm6[1]
2024 ; SSE-NEXT: movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2025 ; SSE-NEXT: movaps %xmm10, %xmm1
2026 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2027 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2028 ; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm0[1]
2029 ; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2030 ; SSE-NEXT: movaps 48(%rcx), %xmm0
2031 ; SSE-NEXT: movaps %xmm14, %xmm1
2032 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2033 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2034 ; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm0[1]
2035 ; SSE-NEXT: movaps %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2036 ; SSE-NEXT: movaps 64(%rdi), %xmm2
2037 ; SSE-NEXT: movaps 64(%rsi), %xmm0
2038 ; SSE-NEXT: movaps %xmm2, %xmm1
2039 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2040 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2041 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2042 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2043 ; SSE-NEXT: movaps 64(%rdx), %xmm2
2044 ; SSE-NEXT: movaps 64(%rcx), %xmm0
2045 ; SSE-NEXT: movaps %xmm2, %xmm1
2046 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2047 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2048 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2049 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2050 ; SSE-NEXT: movaps 80(%rdi), %xmm2
2051 ; SSE-NEXT: movaps 80(%rsi), %xmm0
2052 ; SSE-NEXT: movaps %xmm2, %xmm1
2053 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2054 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2055 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2056 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2057 ; SSE-NEXT: movaps 80(%rdx), %xmm2
2058 ; SSE-NEXT: movaps 80(%rcx), %xmm0
2059 ; SSE-NEXT: movaps %xmm2, %xmm1
2060 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2061 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2062 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2063 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2064 ; SSE-NEXT: movaps 96(%rdi), %xmm2
2065 ; SSE-NEXT: movaps 96(%rsi), %xmm0
2066 ; SSE-NEXT: movaps %xmm2, %xmm1
2067 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2068 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2069 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2070 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2071 ; SSE-NEXT: movaps 96(%rdx), %xmm2
2072 ; SSE-NEXT: movaps 96(%rcx), %xmm0
2073 ; SSE-NEXT: movaps %xmm2, %xmm1
2074 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2075 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2076 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2077 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2078 ; SSE-NEXT: movaps 112(%rdi), %xmm2
2079 ; SSE-NEXT: movaps 112(%rsi), %xmm0
2080 ; SSE-NEXT: movaps %xmm2, %xmm1
2081 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2082 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2083 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2084 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2085 ; SSE-NEXT: movaps 112(%rdx), %xmm2
2086 ; SSE-NEXT: movaps 112(%rcx), %xmm0
2087 ; SSE-NEXT: movaps %xmm2, %xmm1
2088 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2089 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2090 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2091 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2092 ; SSE-NEXT: movaps 128(%rdi), %xmm2
2093 ; SSE-NEXT: movaps 128(%rsi), %xmm0
2094 ; SSE-NEXT: movaps %xmm2, %xmm1
2095 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2096 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2097 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2098 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2099 ; SSE-NEXT: movaps 128(%rdx), %xmm2
2100 ; SSE-NEXT: movaps 128(%rcx), %xmm0
2101 ; SSE-NEXT: movaps %xmm2, %xmm1
2102 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2103 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2104 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2105 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2106 ; SSE-NEXT: movaps 144(%rdi), %xmm2
2107 ; SSE-NEXT: movaps 144(%rsi), %xmm0
2108 ; SSE-NEXT: movaps %xmm2, %xmm1
2109 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2110 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2111 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2112 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2113 ; SSE-NEXT: movaps 144(%rdx), %xmm2
2114 ; SSE-NEXT: movaps 144(%rcx), %xmm0
2115 ; SSE-NEXT: movaps %xmm2, %xmm1
2116 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2117 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2118 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2119 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2120 ; SSE-NEXT: movaps 160(%rdi), %xmm2
2121 ; SSE-NEXT: movaps 160(%rsi), %xmm0
2122 ; SSE-NEXT: movaps %xmm2, %xmm1
2123 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2124 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2125 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2126 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2127 ; SSE-NEXT: movaps 160(%rdx), %xmm2
2128 ; SSE-NEXT: movaps 160(%rcx), %xmm0
2129 ; SSE-NEXT: movaps %xmm2, %xmm1
2130 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2131 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2132 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2133 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2134 ; SSE-NEXT: movaps 176(%rdi), %xmm2
2135 ; SSE-NEXT: movaps 176(%rsi), %xmm0
2136 ; SSE-NEXT: movaps %xmm2, %xmm1
2137 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2138 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2139 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2140 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2141 ; SSE-NEXT: movaps 176(%rdx), %xmm2
2142 ; SSE-NEXT: movaps 176(%rcx), %xmm0
2143 ; SSE-NEXT: movaps %xmm2, %xmm1
2144 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2145 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2146 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2147 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2148 ; SSE-NEXT: movaps 192(%rdi), %xmm2
2149 ; SSE-NEXT: movaps 192(%rsi), %xmm0
2150 ; SSE-NEXT: movaps %xmm2, %xmm1
2151 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2152 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2153 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2154 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2155 ; SSE-NEXT: movaps 192(%rdx), %xmm2
2156 ; SSE-NEXT: movaps 192(%rcx), %xmm0
2157 ; SSE-NEXT: movaps %xmm2, %xmm1
2158 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2159 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2160 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2161 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2162 ; SSE-NEXT: movaps 208(%rdi), %xmm2
2163 ; SSE-NEXT: movaps 208(%rsi), %xmm0
2164 ; SSE-NEXT: movaps %xmm2, %xmm1
2165 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2166 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2167 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2168 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2169 ; SSE-NEXT: movaps 208(%rdx), %xmm2
2170 ; SSE-NEXT: movaps 208(%rcx), %xmm0
2171 ; SSE-NEXT: movaps %xmm2, %xmm1
2172 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2173 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2174 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2175 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2176 ; SSE-NEXT: movaps 224(%rdi), %xmm2
2177 ; SSE-NEXT: movaps 224(%rsi), %xmm0
2178 ; SSE-NEXT: movaps %xmm2, %xmm1
2179 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2180 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2181 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2182 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2183 ; SSE-NEXT: movaps 224(%rdx), %xmm2
2184 ; SSE-NEXT: movaps 224(%rcx), %xmm0
2185 ; SSE-NEXT: movaps %xmm2, %xmm1
2186 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2187 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2188 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2189 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2190 ; SSE-NEXT: movaps 240(%rdi), %xmm2
2191 ; SSE-NEXT: movaps 240(%rsi), %xmm0
2192 ; SSE-NEXT: movaps %xmm2, %xmm1
2193 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2194 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2195 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2196 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2197 ; SSE-NEXT: movaps 240(%rdx), %xmm2
2198 ; SSE-NEXT: movaps 240(%rcx), %xmm0
2199 ; SSE-NEXT: movaps %xmm2, %xmm1
2200 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2201 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2202 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2203 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2204 ; SSE-NEXT: movaps 256(%rdi), %xmm2
2205 ; SSE-NEXT: movaps 256(%rsi), %xmm0
2206 ; SSE-NEXT: movaps %xmm2, %xmm1
2207 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2208 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2209 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2210 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2211 ; SSE-NEXT: movaps 256(%rdx), %xmm2
2212 ; SSE-NEXT: movaps 256(%rcx), %xmm0
2213 ; SSE-NEXT: movaps %xmm2, %xmm1
2214 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2215 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2216 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2217 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2218 ; SSE-NEXT: movaps 272(%rdi), %xmm2
2219 ; SSE-NEXT: movaps 272(%rsi), %xmm0
2220 ; SSE-NEXT: movaps %xmm2, %xmm1
2221 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2222 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2223 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2224 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2225 ; SSE-NEXT: movaps 272(%rdx), %xmm2
2226 ; SSE-NEXT: movaps 272(%rcx), %xmm0
2227 ; SSE-NEXT: movaps %xmm2, %xmm1
2228 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2229 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2230 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2231 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2232 ; SSE-NEXT: movaps 288(%rdi), %xmm2
2233 ; SSE-NEXT: movaps 288(%rsi), %xmm0
2234 ; SSE-NEXT: movaps %xmm2, %xmm1
2235 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2236 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2237 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2238 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2239 ; SSE-NEXT: movaps 288(%rdx), %xmm2
2240 ; SSE-NEXT: movaps 288(%rcx), %xmm0
2241 ; SSE-NEXT: movaps %xmm2, %xmm1
2242 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2243 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2244 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2245 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2246 ; SSE-NEXT: movaps 304(%rdi), %xmm2
2247 ; SSE-NEXT: movaps 304(%rsi), %xmm0
2248 ; SSE-NEXT: movaps %xmm2, %xmm1
2249 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2250 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2251 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2252 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2253 ; SSE-NEXT: movaps 304(%rdx), %xmm2
2254 ; SSE-NEXT: movaps 304(%rcx), %xmm0
2255 ; SSE-NEXT: movaps %xmm2, %xmm1
2256 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2257 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2258 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2259 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2260 ; SSE-NEXT: movaps 320(%rdi), %xmm2
2261 ; SSE-NEXT: movaps 320(%rsi), %xmm0
2262 ; SSE-NEXT: movaps %xmm2, %xmm1
2263 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2264 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2265 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2266 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2267 ; SSE-NEXT: movaps 320(%rdx), %xmm2
2268 ; SSE-NEXT: movaps 320(%rcx), %xmm0
2269 ; SSE-NEXT: movaps %xmm2, %xmm1
2270 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2271 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2272 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2273 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2274 ; SSE-NEXT: movaps 336(%rdi), %xmm2
2275 ; SSE-NEXT: movaps 336(%rsi), %xmm0
2276 ; SSE-NEXT: movaps %xmm2, %xmm1
2277 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2278 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2279 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2280 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2281 ; SSE-NEXT: movaps 336(%rdx), %xmm2
2282 ; SSE-NEXT: movaps 336(%rcx), %xmm0
2283 ; SSE-NEXT: movaps %xmm2, %xmm1
2284 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2285 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2286 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2287 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2288 ; SSE-NEXT: movaps 352(%rdi), %xmm2
2289 ; SSE-NEXT: movaps 352(%rsi), %xmm0
2290 ; SSE-NEXT: movaps %xmm2, %xmm1
2291 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2292 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2293 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2294 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2295 ; SSE-NEXT: movaps 352(%rdx), %xmm2
2296 ; SSE-NEXT: movaps 352(%rcx), %xmm0
2297 ; SSE-NEXT: movaps %xmm2, %xmm1
2298 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2299 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2300 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2301 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2302 ; SSE-NEXT: movaps 368(%rdi), %xmm2
2303 ; SSE-NEXT: movaps 368(%rsi), %xmm0
2304 ; SSE-NEXT: movaps %xmm2, %xmm1
2305 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2306 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2307 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2308 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2309 ; SSE-NEXT: movaps 368(%rdx), %xmm2
2310 ; SSE-NEXT: movaps 368(%rcx), %xmm0
2311 ; SSE-NEXT: movaps %xmm2, %xmm1
2312 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2313 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2314 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2315 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2316 ; SSE-NEXT: movaps 384(%rdi), %xmm2
2317 ; SSE-NEXT: movaps 384(%rsi), %xmm0
2318 ; SSE-NEXT: movaps %xmm2, %xmm1
2319 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2320 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2321 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2322 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2323 ; SSE-NEXT: movaps 384(%rdx), %xmm2
2324 ; SSE-NEXT: movaps 384(%rcx), %xmm0
2325 ; SSE-NEXT: movaps %xmm2, %xmm1
2326 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2327 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2328 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2329 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2330 ; SSE-NEXT: movaps 400(%rdi), %xmm2
2331 ; SSE-NEXT: movaps 400(%rsi), %xmm0
2332 ; SSE-NEXT: movaps %xmm2, %xmm1
2333 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2334 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2335 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2336 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2337 ; SSE-NEXT: movaps 400(%rdx), %xmm2
2338 ; SSE-NEXT: movaps 400(%rcx), %xmm0
2339 ; SSE-NEXT: movaps %xmm2, %xmm1
2340 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2341 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2342 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2343 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2344 ; SSE-NEXT: movaps 416(%rdi), %xmm2
2345 ; SSE-NEXT: movaps 416(%rsi), %xmm0
2346 ; SSE-NEXT: movaps %xmm2, %xmm1
2347 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2348 ; SSE-NEXT: movaps %xmm1, (%rsp) # 16-byte Spill
2349 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2350 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2351 ; SSE-NEXT: movaps 416(%rdx), %xmm2
2352 ; SSE-NEXT: movaps 416(%rcx), %xmm0
2353 ; SSE-NEXT: movaps %xmm2, %xmm1
2354 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2355 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2356 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2357 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2358 ; SSE-NEXT: movaps 432(%rdi), %xmm2
2359 ; SSE-NEXT: movaps 432(%rsi), %xmm0
2360 ; SSE-NEXT: movaps %xmm2, %xmm1
2361 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2362 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2363 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
2364 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2365 ; SSE-NEXT: movaps 432(%rdx), %xmm15
2366 ; SSE-NEXT: movaps 432(%rcx), %xmm0
2367 ; SSE-NEXT: movaps %xmm15, %xmm1
2368 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2369 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2370 ; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]
2371 ; SSE-NEXT: movaps 448(%rdi), %xmm13
2372 ; SSE-NEXT: movaps 448(%rsi), %xmm0
2373 ; SSE-NEXT: movaps %xmm13, %xmm1
2374 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2375 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2376 ; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]
2377 ; SSE-NEXT: movaps 448(%rdx), %xmm12
2378 ; SSE-NEXT: movaps 448(%rcx), %xmm1
2379 ; SSE-NEXT: movaps %xmm12, %xmm0
2380 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]
2381 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2382 ; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm1[1]
2383 ; SSE-NEXT: movaps 464(%rdi), %xmm8
2384 ; SSE-NEXT: movaps 464(%rsi), %xmm0
2385 ; SSE-NEXT: movaps %xmm8, %xmm14
2386 ; SSE-NEXT: movlhps {{.*#+}} xmm14 = xmm14[0],xmm0[0]
2387 ; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm0[1]
2388 ; SSE-NEXT: movaps 464(%rdx), %xmm10
2389 ; SSE-NEXT: movaps 464(%rcx), %xmm0
2390 ; SSE-NEXT: movaps %xmm10, %xmm11
2391 ; SSE-NEXT: movlhps {{.*#+}} xmm11 = xmm11[0],xmm0[0]
2392 ; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm0[1]
2393 ; SSE-NEXT: movaps 480(%rdi), %xmm7
2394 ; SSE-NEXT: movaps 480(%rsi), %xmm1
2395 ; SSE-NEXT: movaps %xmm7, %xmm9
2396 ; SSE-NEXT: movlhps {{.*#+}} xmm9 = xmm9[0],xmm1[0]
2397 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm1[1]
2398 ; SSE-NEXT: movaps 480(%rdx), %xmm5
2399 ; SSE-NEXT: movaps 480(%rcx), %xmm0
2400 ; SSE-NEXT: movaps %xmm5, %xmm6
2401 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm0[0]
2402 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm0[1]
2403 ; SSE-NEXT: movaps 496(%rdi), %xmm0
2404 ; SSE-NEXT: movaps 496(%rsi), %xmm3
2405 ; SSE-NEXT: movaps %xmm0, %xmm2
2406 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm3[0]
2407 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm3[1]
2408 ; SSE-NEXT: movaps 496(%rdx), %xmm3
2409 ; SSE-NEXT: movaps 496(%rcx), %xmm4
2410 ; SSE-NEXT: movaps %xmm3, %xmm1
2411 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm4[0]
2412 ; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm4[1]
2413 ; SSE-NEXT: movaps %xmm3, 2032(%r8)
2414 ; SSE-NEXT: movaps %xmm0, 2016(%r8)
2415 ; SSE-NEXT: movaps %xmm1, 2000(%r8)
2416 ; SSE-NEXT: movaps %xmm2, 1984(%r8)
2417 ; SSE-NEXT: movaps %xmm5, 1968(%r8)
2418 ; SSE-NEXT: movaps %xmm7, 1952(%r8)
2419 ; SSE-NEXT: movaps %xmm6, 1936(%r8)
2420 ; SSE-NEXT: movaps %xmm9, 1920(%r8)
2421 ; SSE-NEXT: movaps %xmm10, 1904(%r8)
2422 ; SSE-NEXT: movaps %xmm8, 1888(%r8)
2423 ; SSE-NEXT: movaps %xmm11, 1872(%r8)
2424 ; SSE-NEXT: movaps %xmm14, 1856(%r8)
2425 ; SSE-NEXT: movaps %xmm12, 1840(%r8)
2426 ; SSE-NEXT: movaps %xmm13, 1824(%r8)
2427 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2428 ; SSE-NEXT: movaps %xmm0, 1808(%r8)
2429 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2430 ; SSE-NEXT: movaps %xmm0, 1792(%r8)
2431 ; SSE-NEXT: movaps %xmm15, 1776(%r8)
2432 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2433 ; SSE-NEXT: movaps %xmm0, 1760(%r8)
2434 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2435 ; SSE-NEXT: movaps %xmm0, 1744(%r8)
2436 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2437 ; SSE-NEXT: movaps %xmm0, 1728(%r8)
2438 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2439 ; SSE-NEXT: movaps %xmm0, 1712(%r8)
2440 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2441 ; SSE-NEXT: movaps %xmm0, 1696(%r8)
2442 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2443 ; SSE-NEXT: movaps %xmm0, 1680(%r8)
2444 ; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload
2445 ; SSE-NEXT: movaps %xmm0, 1664(%r8)
2446 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2447 ; SSE-NEXT: movaps %xmm0, 1648(%r8)
2448 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2449 ; SSE-NEXT: movaps %xmm0, 1632(%r8)
2450 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2451 ; SSE-NEXT: movaps %xmm0, 1616(%r8)
2452 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2453 ; SSE-NEXT: movaps %xmm0, 1600(%r8)
2454 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2455 ; SSE-NEXT: movaps %xmm0, 1584(%r8)
2456 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2457 ; SSE-NEXT: movaps %xmm0, 1568(%r8)
2458 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2459 ; SSE-NEXT: movaps %xmm0, 1552(%r8)
2460 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2461 ; SSE-NEXT: movaps %xmm0, 1536(%r8)
2462 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2463 ; SSE-NEXT: movaps %xmm0, 1520(%r8)
2464 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2465 ; SSE-NEXT: movaps %xmm0, 1504(%r8)
2466 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2467 ; SSE-NEXT: movaps %xmm0, 1488(%r8)
2468 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2469 ; SSE-NEXT: movaps %xmm0, 1472(%r8)
2470 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2471 ; SSE-NEXT: movaps %xmm0, 1456(%r8)
2472 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2473 ; SSE-NEXT: movaps %xmm0, 1440(%r8)
2474 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2475 ; SSE-NEXT: movaps %xmm0, 1424(%r8)
2476 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2477 ; SSE-NEXT: movaps %xmm0, 1408(%r8)
2478 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2479 ; SSE-NEXT: movaps %xmm0, 1392(%r8)
2480 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2481 ; SSE-NEXT: movaps %xmm0, 1376(%r8)
2482 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2483 ; SSE-NEXT: movaps %xmm0, 1360(%r8)
2484 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2485 ; SSE-NEXT: movaps %xmm0, 1344(%r8)
2486 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2487 ; SSE-NEXT: movaps %xmm0, 1328(%r8)
2488 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2489 ; SSE-NEXT: movaps %xmm0, 1312(%r8)
2490 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2491 ; SSE-NEXT: movaps %xmm0, 1296(%r8)
2492 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2493 ; SSE-NEXT: movaps %xmm0, 1280(%r8)
2494 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2495 ; SSE-NEXT: movaps %xmm0, 1264(%r8)
2496 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2497 ; SSE-NEXT: movaps %xmm0, 1248(%r8)
2498 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2499 ; SSE-NEXT: movaps %xmm0, 1232(%r8)
2500 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2501 ; SSE-NEXT: movaps %xmm0, 1216(%r8)
2502 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2503 ; SSE-NEXT: movaps %xmm0, 1200(%r8)
2504 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2505 ; SSE-NEXT: movaps %xmm0, 1184(%r8)
2506 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2507 ; SSE-NEXT: movaps %xmm0, 1168(%r8)
2508 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2509 ; SSE-NEXT: movaps %xmm0, 1152(%r8)
2510 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2511 ; SSE-NEXT: movaps %xmm0, 1136(%r8)
2512 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2513 ; SSE-NEXT: movaps %xmm0, 1120(%r8)
2514 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2515 ; SSE-NEXT: movaps %xmm0, 1104(%r8)
2516 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2517 ; SSE-NEXT: movaps %xmm0, 1088(%r8)
2518 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2519 ; SSE-NEXT: movaps %xmm0, 1072(%r8)
2520 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2521 ; SSE-NEXT: movaps %xmm0, 1056(%r8)
2522 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2523 ; SSE-NEXT: movaps %xmm0, 1040(%r8)
2524 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2525 ; SSE-NEXT: movaps %xmm0, 1024(%r8)
2526 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2527 ; SSE-NEXT: movaps %xmm0, 1008(%r8)
2528 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2529 ; SSE-NEXT: movaps %xmm0, 992(%r8)
2530 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2531 ; SSE-NEXT: movaps %xmm0, 976(%r8)
2532 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2533 ; SSE-NEXT: movaps %xmm0, 960(%r8)
2534 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2535 ; SSE-NEXT: movaps %xmm0, 944(%r8)
2536 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2537 ; SSE-NEXT: movaps %xmm0, 928(%r8)
2538 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2539 ; SSE-NEXT: movaps %xmm0, 912(%r8)
2540 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2541 ; SSE-NEXT: movaps %xmm0, 896(%r8)
2542 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2543 ; SSE-NEXT: movaps %xmm0, 880(%r8)
2544 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2545 ; SSE-NEXT: movaps %xmm0, 864(%r8)
2546 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2547 ; SSE-NEXT: movaps %xmm0, 848(%r8)
2548 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2549 ; SSE-NEXT: movaps %xmm0, 832(%r8)
2550 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2551 ; SSE-NEXT: movaps %xmm0, 816(%r8)
2552 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2553 ; SSE-NEXT: movaps %xmm0, 800(%r8)
2554 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2555 ; SSE-NEXT: movaps %xmm0, 784(%r8)
2556 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2557 ; SSE-NEXT: movaps %xmm0, 768(%r8)
2558 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2559 ; SSE-NEXT: movaps %xmm0, 752(%r8)
2560 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2561 ; SSE-NEXT: movaps %xmm0, 736(%r8)
2562 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2563 ; SSE-NEXT: movaps %xmm0, 720(%r8)
2564 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2565 ; SSE-NEXT: movaps %xmm0, 704(%r8)
2566 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2567 ; SSE-NEXT: movaps %xmm0, 688(%r8)
2568 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2569 ; SSE-NEXT: movaps %xmm0, 672(%r8)
2570 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2571 ; SSE-NEXT: movaps %xmm0, 656(%r8)
2572 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2573 ; SSE-NEXT: movaps %xmm0, 640(%r8)
2574 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2575 ; SSE-NEXT: movaps %xmm0, 624(%r8)
2576 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2577 ; SSE-NEXT: movaps %xmm0, 608(%r8)
2578 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2579 ; SSE-NEXT: movaps %xmm0, 592(%r8)
2580 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2581 ; SSE-NEXT: movaps %xmm0, 576(%r8)
2582 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2583 ; SSE-NEXT: movaps %xmm0, 560(%r8)
2584 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2585 ; SSE-NEXT: movaps %xmm0, 544(%r8)
2586 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2587 ; SSE-NEXT: movaps %xmm0, 528(%r8)
2588 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2589 ; SSE-NEXT: movaps %xmm0, 512(%r8)
2590 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2591 ; SSE-NEXT: movaps %xmm0, 496(%r8)
2592 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2593 ; SSE-NEXT: movaps %xmm0, 480(%r8)
2594 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2595 ; SSE-NEXT: movaps %xmm0, 464(%r8)
2596 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2597 ; SSE-NEXT: movaps %xmm0, 448(%r8)
2598 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2599 ; SSE-NEXT: movaps %xmm0, 432(%r8)
2600 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2601 ; SSE-NEXT: movaps %xmm0, 416(%r8)
2602 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2603 ; SSE-NEXT: movaps %xmm0, 400(%r8)
2604 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2605 ; SSE-NEXT: movaps %xmm0, 384(%r8)
2606 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2607 ; SSE-NEXT: movaps %xmm0, 368(%r8)
2608 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2609 ; SSE-NEXT: movaps %xmm0, 352(%r8)
2610 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2611 ; SSE-NEXT: movaps %xmm0, 336(%r8)
2612 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2613 ; SSE-NEXT: movaps %xmm0, 320(%r8)
2614 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2615 ; SSE-NEXT: movaps %xmm0, 304(%r8)
2616 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2617 ; SSE-NEXT: movaps %xmm0, 288(%r8)
2618 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2619 ; SSE-NEXT: movaps %xmm0, 272(%r8)
2620 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2621 ; SSE-NEXT: movaps %xmm0, 256(%r8)
2622 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2623 ; SSE-NEXT: movaps %xmm0, 240(%r8)
2624 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2625 ; SSE-NEXT: movaps %xmm0, 224(%r8)
2626 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2627 ; SSE-NEXT: movaps %xmm0, 208(%r8)
2628 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2629 ; SSE-NEXT: movaps %xmm0, 192(%r8)
2630 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2631 ; SSE-NEXT: movaps %xmm0, 176(%r8)
2632 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2633 ; SSE-NEXT: movaps %xmm0, 160(%r8)
2634 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2635 ; SSE-NEXT: movaps %xmm0, 144(%r8)
2636 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2637 ; SSE-NEXT: movaps %xmm0, 128(%r8)
2638 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2639 ; SSE-NEXT: movaps %xmm0, 112(%r8)
2640 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2641 ; SSE-NEXT: movaps %xmm0, 96(%r8)
2642 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2643 ; SSE-NEXT: movaps %xmm0, 80(%r8)
2644 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2645 ; SSE-NEXT: movaps %xmm0, 64(%r8)
2646 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2647 ; SSE-NEXT: movaps %xmm0, 48(%r8)
2648 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2649 ; SSE-NEXT: movaps %xmm0, 32(%r8)
2650 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2651 ; SSE-NEXT: movaps %xmm0, 16(%r8)
2652 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2653 ; SSE-NEXT: movaps %xmm0, (%r8)
2654 ; SSE-NEXT: addq $1688, %rsp # imm = 0x698
2657 ; AVX1-ONLY-LABEL: store_i64_stride4_vf64:
2658 ; AVX1-ONLY: # %bb.0:
2659 ; AVX1-ONLY-NEXT: subq $1688, %rsp # imm = 0x698
2660 ; AVX1-ONLY-NEXT: vmovaps 160(%rdx), %ymm0
2661 ; AVX1-ONLY-NEXT: vmovaps 128(%rdx), %ymm1
2662 ; AVX1-ONLY-NEXT: vmovaps 96(%rdx), %ymm3
2663 ; AVX1-ONLY-NEXT: vmovaps 64(%rdx), %ymm5
2664 ; AVX1-ONLY-NEXT: vmovaps 32(%rdx), %ymm7
2665 ; AVX1-ONLY-NEXT: vmovaps (%rdx), %ymm8
2666 ; AVX1-ONLY-NEXT: vmovaps 160(%rcx), %ymm2
2667 ; AVX1-ONLY-NEXT: vmovaps 128(%rcx), %ymm4
2668 ; AVX1-ONLY-NEXT: vmovaps 96(%rcx), %ymm6
2669 ; AVX1-ONLY-NEXT: vmovaps 64(%rcx), %ymm9
2670 ; AVX1-ONLY-NEXT: vmovaps 32(%rcx), %ymm10
2671 ; AVX1-ONLY-NEXT: vmovaps (%rcx), %ymm11
2672 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm8[0],ymm11[0],ymm8[2],ymm11[2]
2673 ; AVX1-ONLY-NEXT: vmovaps 16(%rsi), %xmm13
2674 ; AVX1-ONLY-NEXT: vmovaps 16(%rdi), %xmm14
2675 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm15 = xmm14[0],xmm13[0]
2676 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm12 = ymm15[0,1,2,3],ymm12[4,5,6,7]
2677 ; AVX1-ONLY-NEXT: vmovups %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2678 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm8[1],ymm11[1],ymm8[3],ymm11[3]
2679 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm11 = xmm14[1],xmm13[1]
2680 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm8 = ymm11[0,1,2,3],ymm8[4,5,6,7]
2681 ; AVX1-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2682 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm8 = ymm7[0],ymm10[0],ymm7[2],ymm10[2]
2683 ; AVX1-ONLY-NEXT: vmovaps 48(%rsi), %xmm11
2684 ; AVX1-ONLY-NEXT: vmovaps 48(%rdi), %xmm12
2685 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm13 = xmm12[0],xmm11[0]
2686 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm8 = ymm13[0,1,2,3],ymm8[4,5,6,7]
2687 ; AVX1-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2688 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm7[1],ymm10[1],ymm7[3],ymm10[3]
2689 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm8 = xmm12[1],xmm11[1]
2690 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm7 = ymm8[0,1,2,3],ymm7[4,5,6,7]
2691 ; AVX1-ONLY-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2692 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm7 = ymm5[0],ymm9[0],ymm5[2],ymm9[2]
2693 ; AVX1-ONLY-NEXT: vmovaps 80(%rsi), %xmm8
2694 ; AVX1-ONLY-NEXT: vmovaps 80(%rdi), %xmm10
2695 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm11 = xmm10[0],xmm8[0]
2696 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm7 = ymm11[0,1,2,3],ymm7[4,5,6,7]
2697 ; AVX1-ONLY-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2698 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm5 = ymm5[1],ymm9[1],ymm5[3],ymm9[3]
2699 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm7 = xmm10[1],xmm8[1]
2700 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm5 = ymm7[0,1,2,3],ymm5[4,5,6,7]
2701 ; AVX1-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2702 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm3[0],ymm6[0],ymm3[2],ymm6[2]
2703 ; AVX1-ONLY-NEXT: vmovaps 112(%rsi), %xmm7
2704 ; AVX1-ONLY-NEXT: vmovaps 112(%rdi), %xmm8
2705 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm9 = xmm8[0],xmm7[0]
2706 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm5 = ymm9[0,1,2,3],ymm5[4,5,6,7]
2707 ; AVX1-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2708 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm6[1],ymm3[3],ymm6[3]
2709 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm5 = xmm8[1],xmm7[1]
2710 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm5[0,1,2,3],ymm3[4,5,6,7]
2711 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2712 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm1[0],ymm4[0],ymm1[2],ymm4[2]
2713 ; AVX1-ONLY-NEXT: vmovaps 144(%rsi), %xmm5
2714 ; AVX1-ONLY-NEXT: vmovaps 144(%rdi), %xmm6
2715 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm7 = xmm6[0],xmm5[0]
2716 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm7[0,1,2,3],ymm3[4,5,6,7]
2717 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2718 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm4[1],ymm1[3],ymm4[3]
2719 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm3 = xmm6[1],xmm5[1]
2720 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]
2721 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2722 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm1 = ymm0[0],ymm2[0],ymm0[2],ymm2[2]
2723 ; AVX1-ONLY-NEXT: vmovaps 176(%rsi), %xmm3
2724 ; AVX1-ONLY-NEXT: vmovaps 176(%rdi), %xmm4
2725 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
2726 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm5[0,1,2,3],ymm1[4,5,6,7]
2727 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2728 ; AVX1-ONLY-NEXT: vmovaps 192(%rdx), %ymm1
2729 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm2[1],ymm0[3],ymm2[3]
2730 ; AVX1-ONLY-NEXT: vmovaps 192(%rcx), %ymm2
2731 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm3 = xmm4[1],xmm3[1]
2732 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
2733 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2734 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm2[0],ymm1[2],ymm2[2]
2735 ; AVX1-ONLY-NEXT: vmovaps 208(%rsi), %xmm3
2736 ; AVX1-ONLY-NEXT: vmovaps 208(%rdi), %xmm4
2737 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
2738 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm5[0,1,2,3],ymm0[4,5,6,7]
2739 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2740 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm2[1],ymm1[3],ymm2[3]
2741 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm1 = xmm4[1],xmm3[1]
2742 ; AVX1-ONLY-NEXT: vmovaps 224(%rdx), %ymm2
2743 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2744 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2745 ; AVX1-ONLY-NEXT: vmovaps 224(%rcx), %ymm0
2746 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm1 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]
2747 ; AVX1-ONLY-NEXT: vmovaps 240(%rsi), %xmm3
2748 ; AVX1-ONLY-NEXT: vmovaps 240(%rdi), %xmm4
2749 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
2750 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm5[0,1,2,3],ymm1[4,5,6,7]
2751 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2752 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]
2753 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm1 = xmm4[1],xmm3[1]
2754 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2755 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2756 ; AVX1-ONLY-NEXT: vmovaps 256(%rdx), %ymm0
2757 ; AVX1-ONLY-NEXT: vmovaps 256(%rcx), %ymm1
2758 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
2759 ; AVX1-ONLY-NEXT: vmovaps 272(%rsi), %xmm3
2760 ; AVX1-ONLY-NEXT: vmovaps 272(%rdi), %xmm4
2761 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
2762 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]
2763 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2764 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2765 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm1 = xmm4[1],xmm3[1]
2766 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2767 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2768 ; AVX1-ONLY-NEXT: vmovaps 288(%rdx), %ymm0
2769 ; AVX1-ONLY-NEXT: vmovaps 288(%rcx), %ymm1
2770 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
2771 ; AVX1-ONLY-NEXT: vmovaps 304(%rsi), %xmm3
2772 ; AVX1-ONLY-NEXT: vmovaps 304(%rdi), %xmm4
2773 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
2774 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]
2775 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2776 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2777 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm1 = xmm4[1],xmm3[1]
2778 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2779 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2780 ; AVX1-ONLY-NEXT: vmovaps 320(%rdx), %ymm0
2781 ; AVX1-ONLY-NEXT: vmovaps 320(%rcx), %ymm1
2782 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
2783 ; AVX1-ONLY-NEXT: vmovaps 336(%rsi), %xmm3
2784 ; AVX1-ONLY-NEXT: vmovaps 336(%rdi), %xmm4
2785 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
2786 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]
2787 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2788 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2789 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm1 = xmm4[1],xmm3[1]
2790 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2791 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2792 ; AVX1-ONLY-NEXT: vmovaps 352(%rdx), %ymm0
2793 ; AVX1-ONLY-NEXT: vmovaps 352(%rcx), %ymm1
2794 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
2795 ; AVX1-ONLY-NEXT: vmovaps 368(%rsi), %xmm3
2796 ; AVX1-ONLY-NEXT: vmovaps 368(%rdi), %xmm4
2797 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
2798 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]
2799 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2800 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2801 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm1 = xmm4[1],xmm3[1]
2802 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2803 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2804 ; AVX1-ONLY-NEXT: vmovaps 384(%rdx), %ymm0
2805 ; AVX1-ONLY-NEXT: vmovaps 384(%rcx), %ymm1
2806 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
2807 ; AVX1-ONLY-NEXT: vmovaps 400(%rsi), %xmm3
2808 ; AVX1-ONLY-NEXT: vmovaps 400(%rdi), %xmm4
2809 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
2810 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]
2811 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2812 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2813 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm1 = xmm4[1],xmm3[1]
2814 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2815 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2816 ; AVX1-ONLY-NEXT: vmovaps 416(%rdx), %ymm0
2817 ; AVX1-ONLY-NEXT: vmovaps 416(%rcx), %ymm1
2818 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
2819 ; AVX1-ONLY-NEXT: vmovaps 432(%rsi), %xmm3
2820 ; AVX1-ONLY-NEXT: vmovaps 432(%rdi), %xmm4
2821 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
2822 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]
2823 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2824 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2825 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm1 = xmm4[1],xmm3[1]
2826 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2827 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2828 ; AVX1-ONLY-NEXT: vmovaps 448(%rdx), %ymm0
2829 ; AVX1-ONLY-NEXT: vmovaps 448(%rcx), %ymm1
2830 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
2831 ; AVX1-ONLY-NEXT: vmovaps 464(%rsi), %xmm3
2832 ; AVX1-ONLY-NEXT: vmovaps 464(%rdi), %xmm4
2833 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
2834 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]
2835 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2836 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2837 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm1 = xmm4[1],xmm3[1]
2838 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2839 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2840 ; AVX1-ONLY-NEXT: vmovaps 480(%rdx), %ymm0
2841 ; AVX1-ONLY-NEXT: vmovaps 480(%rcx), %ymm1
2842 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
2843 ; AVX1-ONLY-NEXT: vmovaps 496(%rsi), %xmm3
2844 ; AVX1-ONLY-NEXT: vmovaps 496(%rdi), %xmm4
2845 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm5 = xmm4[0],xmm3[0]
2846 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]
2847 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2848 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2849 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm1 = xmm4[1],xmm3[1]
2850 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2851 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2852 ; AVX1-ONLY-NEXT: vmovaps 256(%rsi), %xmm0
2853 ; AVX1-ONLY-NEXT: vmovaps 256(%rdi), %xmm1
2854 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2855 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2856 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2857 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2858 ; AVX1-ONLY-NEXT: vmovaps 256(%rcx), %xmm0
2859 ; AVX1-ONLY-NEXT: vmovaps 256(%rdx), %xmm1
2860 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2861 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2862 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2863 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2864 ; AVX1-ONLY-NEXT: vmovaps 128(%rsi), %xmm0
2865 ; AVX1-ONLY-NEXT: vmovaps 128(%rdi), %xmm1
2866 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2867 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2868 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2869 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2870 ; AVX1-ONLY-NEXT: vmovaps 128(%rcx), %xmm0
2871 ; AVX1-ONLY-NEXT: vmovaps 128(%rdx), %xmm1
2872 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2873 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2874 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2875 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2876 ; AVX1-ONLY-NEXT: vmovaps 64(%rsi), %xmm0
2877 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %xmm1
2878 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2879 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2880 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2881 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2882 ; AVX1-ONLY-NEXT: vmovaps 64(%rcx), %xmm0
2883 ; AVX1-ONLY-NEXT: vmovaps 64(%rdx), %xmm1
2884 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2885 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2886 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2887 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2888 ; AVX1-ONLY-NEXT: vmovaps 32(%rsi), %xmm0
2889 ; AVX1-ONLY-NEXT: vmovaps 32(%rdi), %xmm1
2890 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2891 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2892 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2893 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2894 ; AVX1-ONLY-NEXT: vmovaps 32(%rcx), %xmm0
2895 ; AVX1-ONLY-NEXT: vmovaps 32(%rdx), %xmm1
2896 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2897 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2898 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2899 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2900 ; AVX1-ONLY-NEXT: vmovaps 96(%rsi), %xmm0
2901 ; AVX1-ONLY-NEXT: vmovaps 96(%rdi), %xmm1
2902 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2903 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2904 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2905 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2906 ; AVX1-ONLY-NEXT: vmovaps 96(%rcx), %xmm0
2907 ; AVX1-ONLY-NEXT: vmovaps 96(%rdx), %xmm1
2908 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2909 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2910 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2911 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2912 ; AVX1-ONLY-NEXT: vmovaps 160(%rsi), %xmm0
2913 ; AVX1-ONLY-NEXT: vmovaps 160(%rdi), %xmm1
2914 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2915 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2916 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2917 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2918 ; AVX1-ONLY-NEXT: vmovaps 160(%rcx), %xmm0
2919 ; AVX1-ONLY-NEXT: vmovaps 160(%rdx), %xmm1
2920 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2921 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2922 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2923 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2924 ; AVX1-ONLY-NEXT: vmovaps 224(%rsi), %xmm0
2925 ; AVX1-ONLY-NEXT: vmovaps 224(%rdi), %xmm1
2926 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2927 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2928 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2929 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2930 ; AVX1-ONLY-NEXT: vmovaps 224(%rcx), %xmm0
2931 ; AVX1-ONLY-NEXT: vmovaps 224(%rdx), %xmm1
2932 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2933 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2934 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2935 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2936 ; AVX1-ONLY-NEXT: vmovaps 192(%rsi), %xmm0
2937 ; AVX1-ONLY-NEXT: vmovaps 192(%rdi), %xmm1
2938 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2939 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2940 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2941 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2942 ; AVX1-ONLY-NEXT: vmovaps 192(%rcx), %xmm0
2943 ; AVX1-ONLY-NEXT: vmovaps 192(%rdx), %xmm1
2944 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2945 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2946 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2947 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2948 ; AVX1-ONLY-NEXT: vmovaps 288(%rsi), %xmm0
2949 ; AVX1-ONLY-NEXT: vmovaps 288(%rdi), %xmm1
2950 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2951 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2952 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2953 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2954 ; AVX1-ONLY-NEXT: vmovaps 288(%rcx), %xmm0
2955 ; AVX1-ONLY-NEXT: vmovaps 288(%rdx), %xmm1
2956 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2957 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2958 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2959 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2960 ; AVX1-ONLY-NEXT: vmovaps 352(%rsi), %xmm0
2961 ; AVX1-ONLY-NEXT: vmovaps 352(%rdi), %xmm1
2962 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2963 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2964 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2965 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2966 ; AVX1-ONLY-NEXT: vmovaps 352(%rcx), %xmm0
2967 ; AVX1-ONLY-NEXT: vmovaps 352(%rdx), %xmm1
2968 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2969 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2970 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2971 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2972 ; AVX1-ONLY-NEXT: vmovaps 320(%rsi), %xmm0
2973 ; AVX1-ONLY-NEXT: vmovaps 320(%rdi), %xmm1
2974 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2975 ; AVX1-ONLY-NEXT: vmovaps %xmm2, (%rsp) # 16-byte Spill
2976 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2977 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2978 ; AVX1-ONLY-NEXT: vmovaps 320(%rcx), %xmm0
2979 ; AVX1-ONLY-NEXT: vmovaps 320(%rdx), %xmm1
2980 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2981 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2982 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2983 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2984 ; AVX1-ONLY-NEXT: vmovaps 416(%rsi), %xmm0
2985 ; AVX1-ONLY-NEXT: vmovaps 416(%rdi), %xmm1
2986 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2987 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2988 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2989 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2990 ; AVX1-ONLY-NEXT: vmovaps 416(%rcx), %xmm0
2991 ; AVX1-ONLY-NEXT: vmovaps 416(%rdx), %xmm1
2992 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2993 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2994 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm1[1],xmm0[1]
2995 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2996 ; AVX1-ONLY-NEXT: vmovaps 480(%rsi), %xmm0
2997 ; AVX1-ONLY-NEXT: vmovaps 480(%rdi), %xmm1
2998 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm1[0],xmm0[0]
2999 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3000 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm15 = xmm1[1],xmm0[1]
3001 ; AVX1-ONLY-NEXT: vmovaps 480(%rcx), %xmm1
3002 ; AVX1-ONLY-NEXT: vmovaps 480(%rdx), %xmm0
3003 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm14 = xmm0[0],xmm1[0]
3004 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm13 = xmm0[1],xmm1[1]
3005 ; AVX1-ONLY-NEXT: vmovaps 448(%rsi), %xmm1
3006 ; AVX1-ONLY-NEXT: vmovaps 448(%rdi), %xmm0
3007 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm12 = xmm0[0],xmm1[0]
3008 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm11 = xmm0[1],xmm1[1]
3009 ; AVX1-ONLY-NEXT: vmovaps 448(%rcx), %xmm1
3010 ; AVX1-ONLY-NEXT: vmovaps 448(%rdx), %xmm0
3011 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm10 = xmm0[0],xmm1[0]
3012 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm9 = xmm0[1],xmm1[1]
3013 ; AVX1-ONLY-NEXT: vmovaps 384(%rsi), %xmm1
3014 ; AVX1-ONLY-NEXT: vmovaps 384(%rdi), %xmm0
3015 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm8 = xmm0[0],xmm1[0]
3016 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm7 = xmm0[1],xmm1[1]
3017 ; AVX1-ONLY-NEXT: vmovaps 384(%rcx), %xmm1
3018 ; AVX1-ONLY-NEXT: vmovaps 384(%rdx), %xmm0
3019 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm6 = xmm0[0],xmm1[0]
3020 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm5 = xmm0[1],xmm1[1]
3021 ; AVX1-ONLY-NEXT: vmovaps (%rsi), %xmm1
3022 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm0
3023 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm4 = xmm0[0],xmm1[0]
3024 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm3 = xmm0[1],xmm1[1]
3025 ; AVX1-ONLY-NEXT: vmovaps (%rcx), %xmm1
3026 ; AVX1-ONLY-NEXT: vmovaps (%rdx), %xmm0
3027 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]
3028 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
3029 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 48(%r8)
3030 ; AVX1-ONLY-NEXT: vmovaps %xmm3, 32(%r8)
3031 ; AVX1-ONLY-NEXT: vmovaps %xmm2, 16(%r8)
3032 ; AVX1-ONLY-NEXT: vmovaps %xmm4, (%r8)
3033 ; AVX1-ONLY-NEXT: vmovaps %xmm5, 1584(%r8)
3034 ; AVX1-ONLY-NEXT: vmovaps %xmm7, 1568(%r8)
3035 ; AVX1-ONLY-NEXT: vmovaps %xmm6, 1552(%r8)
3036 ; AVX1-ONLY-NEXT: vmovaps %xmm8, 1536(%r8)
3037 ; AVX1-ONLY-NEXT: vmovaps %xmm9, 1840(%r8)
3038 ; AVX1-ONLY-NEXT: vmovaps %xmm11, 1824(%r8)
3039 ; AVX1-ONLY-NEXT: vmovaps %xmm10, 1808(%r8)
3040 ; AVX1-ONLY-NEXT: vmovaps %xmm12, 1792(%r8)
3041 ; AVX1-ONLY-NEXT: vmovaps %xmm13, 1968(%r8)
3042 ; AVX1-ONLY-NEXT: vmovaps %xmm15, 1952(%r8)
3043 ; AVX1-ONLY-NEXT: vmovaps %xmm14, 1936(%r8)
3044 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3045 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1920(%r8)
3046 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3047 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1712(%r8)
3048 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3049 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1696(%r8)
3050 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3051 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1680(%r8)
3052 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3053 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1664(%r8)
3054 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3055 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1328(%r8)
3056 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3057 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1312(%r8)
3058 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3059 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1296(%r8)
3060 ; AVX1-ONLY-NEXT: vmovaps (%rsp), %xmm0 # 16-byte Reload
3061 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1280(%r8)
3062 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3063 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1456(%r8)
3064 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3065 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1440(%r8)
3066 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3067 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1424(%r8)
3068 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3069 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1408(%r8)
3070 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3071 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1200(%r8)
3072 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3073 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1184(%r8)
3074 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3075 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1168(%r8)
3076 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3077 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1152(%r8)
3078 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3079 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 816(%r8)
3080 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3081 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 800(%r8)
3082 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3083 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 784(%r8)
3084 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3085 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 768(%r8)
3086 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3087 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 944(%r8)
3088 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3089 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 928(%r8)
3090 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3091 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 912(%r8)
3092 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3093 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 896(%r8)
3094 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3095 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 688(%r8)
3096 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3097 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 672(%r8)
3098 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3099 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 656(%r8)
3100 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3101 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 640(%r8)
3102 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3103 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 432(%r8)
3104 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3105 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 416(%r8)
3106 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3107 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 400(%r8)
3108 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3109 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 384(%r8)
3110 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3111 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 176(%r8)
3112 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3113 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 160(%r8)
3114 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3115 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 144(%r8)
3116 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3117 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 128(%r8)
3118 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3119 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 304(%r8)
3120 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3121 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 288(%r8)
3122 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3123 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 272(%r8)
3124 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3125 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 256(%r8)
3126 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3127 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 560(%r8)
3128 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3129 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 544(%r8)
3130 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3131 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 528(%r8)
3132 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3133 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 512(%r8)
3134 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3135 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1072(%r8)
3136 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3137 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1056(%r8)
3138 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3139 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1040(%r8)
3140 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3141 ; AVX1-ONLY-NEXT: vmovaps %xmm0, 1024(%r8)
3142 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3143 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 2016(%r8)
3144 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3145 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1984(%r8)
3146 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3147 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1888(%r8)
3148 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3149 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1856(%r8)
3150 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3151 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1760(%r8)
3152 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3153 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1728(%r8)
3154 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3155 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1632(%r8)
3156 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3157 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1600(%r8)
3158 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3159 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1504(%r8)
3160 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3161 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1472(%r8)
3162 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3163 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1376(%r8)
3164 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3165 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1344(%r8)
3166 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3167 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1248(%r8)
3168 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3169 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1216(%r8)
3170 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3171 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1120(%r8)
3172 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3173 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 1088(%r8)
3174 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3175 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 992(%r8)
3176 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3177 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 960(%r8)
3178 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3179 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 864(%r8)
3180 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3181 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 832(%r8)
3182 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3183 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 736(%r8)
3184 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3185 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 704(%r8)
3186 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3187 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 608(%r8)
3188 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3189 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 576(%r8)
3190 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3191 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 480(%r8)
3192 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3193 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 448(%r8)
3194 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3195 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 352(%r8)
3196 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3197 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 320(%r8)
3198 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3199 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 224(%r8)
3200 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3201 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 192(%r8)
3202 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3203 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 96(%r8)
3204 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3205 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 64(%r8)
3206 ; AVX1-ONLY-NEXT: addq $1688, %rsp # imm = 0x698
3207 ; AVX1-ONLY-NEXT: vzeroupper
3208 ; AVX1-ONLY-NEXT: retq
3210 ; AVX2-ONLY-LABEL: store_i64_stride4_vf64:
3211 ; AVX2-ONLY: # %bb.0:
3212 ; AVX2-ONLY-NEXT: subq $1544, %rsp # imm = 0x608
3213 ; AVX2-ONLY-NEXT: vmovaps (%rsi), %xmm0
3214 ; AVX2-ONLY-NEXT: vmovaps 32(%rsi), %xmm1
3215 ; AVX2-ONLY-NEXT: vmovaps 64(%rsi), %xmm2
3216 ; AVX2-ONLY-NEXT: vinsertf128 $1, (%rcx), %ymm0, %ymm0
3217 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm3
3218 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm4
3219 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %xmm5
3220 ; AVX2-ONLY-NEXT: vinsertf128 $1, (%rdx), %ymm3, %ymm3
3221 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm6 = ymm3[0],ymm0[0],ymm3[2],ymm0[2]
3222 ; AVX2-ONLY-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3223 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm3[1],ymm0[1],ymm3[3],ymm0[3]
3224 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3225 ; AVX2-ONLY-NEXT: vinsertf128 $1, 32(%rcx), %ymm1, %ymm0
3226 ; AVX2-ONLY-NEXT: vinsertf128 $1, 32(%rdx), %ymm4, %ymm1
3227 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3228 ; AVX2-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3229 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3230 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3231 ; AVX2-ONLY-NEXT: vinsertf128 $1, 64(%rcx), %ymm2, %ymm0
3232 ; AVX2-ONLY-NEXT: vinsertf128 $1, 64(%rdx), %ymm5, %ymm1
3233 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3234 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3235 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3236 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3237 ; AVX2-ONLY-NEXT: vmovaps 96(%rsi), %xmm0
3238 ; AVX2-ONLY-NEXT: vinsertf128 $1, 96(%rcx), %ymm0, %ymm0
3239 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %xmm1
3240 ; AVX2-ONLY-NEXT: vinsertf128 $1, 96(%rdx), %ymm1, %ymm1
3241 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3242 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3243 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3244 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3245 ; AVX2-ONLY-NEXT: vmovaps 128(%rsi), %xmm0
3246 ; AVX2-ONLY-NEXT: vinsertf128 $1, 128(%rcx), %ymm0, %ymm0
3247 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %xmm1
3248 ; AVX2-ONLY-NEXT: vinsertf128 $1, 128(%rdx), %ymm1, %ymm1
3249 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3250 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3251 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3252 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3253 ; AVX2-ONLY-NEXT: vmovaps 160(%rsi), %xmm0
3254 ; AVX2-ONLY-NEXT: vinsertf128 $1, 160(%rcx), %ymm0, %ymm0
3255 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %xmm1
3256 ; AVX2-ONLY-NEXT: vinsertf128 $1, 160(%rdx), %ymm1, %ymm1
3257 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3258 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3259 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3260 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3261 ; AVX2-ONLY-NEXT: vmovaps 192(%rsi), %xmm0
3262 ; AVX2-ONLY-NEXT: vinsertf128 $1, 192(%rcx), %ymm0, %ymm0
3263 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %xmm1
3264 ; AVX2-ONLY-NEXT: vinsertf128 $1, 192(%rdx), %ymm1, %ymm1
3265 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3266 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3267 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3268 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3269 ; AVX2-ONLY-NEXT: vmovaps 224(%rsi), %xmm0
3270 ; AVX2-ONLY-NEXT: vinsertf128 $1, 224(%rcx), %ymm0, %ymm0
3271 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %xmm1
3272 ; AVX2-ONLY-NEXT: vinsertf128 $1, 224(%rdx), %ymm1, %ymm1
3273 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3274 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3275 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3276 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3277 ; AVX2-ONLY-NEXT: vmovaps 256(%rsi), %xmm0
3278 ; AVX2-ONLY-NEXT: vinsertf128 $1, 256(%rcx), %ymm0, %ymm0
3279 ; AVX2-ONLY-NEXT: vmovaps 256(%rdi), %xmm1
3280 ; AVX2-ONLY-NEXT: vinsertf128 $1, 256(%rdx), %ymm1, %ymm1
3281 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3282 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3283 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3284 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3285 ; AVX2-ONLY-NEXT: vmovaps 288(%rsi), %xmm0
3286 ; AVX2-ONLY-NEXT: vinsertf128 $1, 288(%rcx), %ymm0, %ymm0
3287 ; AVX2-ONLY-NEXT: vmovaps 288(%rdi), %xmm1
3288 ; AVX2-ONLY-NEXT: vinsertf128 $1, 288(%rdx), %ymm1, %ymm1
3289 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3290 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3291 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3292 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3293 ; AVX2-ONLY-NEXT: vmovaps 320(%rsi), %xmm0
3294 ; AVX2-ONLY-NEXT: vinsertf128 $1, 320(%rcx), %ymm0, %ymm0
3295 ; AVX2-ONLY-NEXT: vmovaps 320(%rdi), %xmm1
3296 ; AVX2-ONLY-NEXT: vinsertf128 $1, 320(%rdx), %ymm1, %ymm1
3297 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3298 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3299 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3300 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3301 ; AVX2-ONLY-NEXT: vmovaps 352(%rsi), %xmm0
3302 ; AVX2-ONLY-NEXT: vinsertf128 $1, 352(%rcx), %ymm0, %ymm0
3303 ; AVX2-ONLY-NEXT: vmovaps 352(%rdi), %xmm1
3304 ; AVX2-ONLY-NEXT: vinsertf128 $1, 352(%rdx), %ymm1, %ymm1
3305 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3306 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3307 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3308 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3309 ; AVX2-ONLY-NEXT: vmovaps 384(%rsi), %xmm0
3310 ; AVX2-ONLY-NEXT: vinsertf128 $1, 384(%rcx), %ymm0, %ymm0
3311 ; AVX2-ONLY-NEXT: vmovaps 384(%rdi), %xmm1
3312 ; AVX2-ONLY-NEXT: vinsertf128 $1, 384(%rdx), %ymm1, %ymm1
3313 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3314 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3315 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3316 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3317 ; AVX2-ONLY-NEXT: vmovaps 416(%rsi), %xmm0
3318 ; AVX2-ONLY-NEXT: vinsertf128 $1, 416(%rcx), %ymm0, %ymm0
3319 ; AVX2-ONLY-NEXT: vmovaps 416(%rdi), %xmm1
3320 ; AVX2-ONLY-NEXT: vinsertf128 $1, 416(%rdx), %ymm1, %ymm1
3321 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3322 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3323 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3324 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3325 ; AVX2-ONLY-NEXT: vmovaps 448(%rsi), %xmm0
3326 ; AVX2-ONLY-NEXT: vinsertf128 $1, 448(%rcx), %ymm0, %ymm0
3327 ; AVX2-ONLY-NEXT: vmovaps 448(%rdi), %xmm1
3328 ; AVX2-ONLY-NEXT: vinsertf128 $1, 448(%rdx), %ymm1, %ymm1
3329 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3330 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3331 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3332 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3333 ; AVX2-ONLY-NEXT: vmovaps 480(%rsi), %xmm0
3334 ; AVX2-ONLY-NEXT: vinsertf128 $1, 480(%rcx), %ymm0, %ymm0
3335 ; AVX2-ONLY-NEXT: vmovaps 480(%rdi), %xmm1
3336 ; AVX2-ONLY-NEXT: vinsertf128 $1, 480(%rdx), %ymm1, %ymm1
3337 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
3338 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3339 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]
3340 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3341 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm0
3342 ; AVX2-ONLY-NEXT: vmovaps (%rsi), %ymm1
3343 ; AVX2-ONLY-NEXT: vmovaps (%rdx), %ymm2
3344 ; AVX2-ONLY-NEXT: vmovaps (%rcx), %ymm3
3345 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
3346 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
3347 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm5[2,3],ymm4[2,3]
3348 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3349 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
3350 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
3351 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
3352 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3353 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm0
3354 ; AVX2-ONLY-NEXT: vmovaps 32(%rsi), %ymm1
3355 ; AVX2-ONLY-NEXT: vmovaps 32(%rdx), %ymm2
3356 ; AVX2-ONLY-NEXT: vmovaps 32(%rcx), %ymm3
3357 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
3358 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
3359 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm5[2,3],ymm4[2,3]
3360 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3361 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
3362 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
3363 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
3364 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3365 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm0
3366 ; AVX2-ONLY-NEXT: vmovaps 64(%rsi), %ymm1
3367 ; AVX2-ONLY-NEXT: vmovaps 64(%rdx), %ymm2
3368 ; AVX2-ONLY-NEXT: vmovaps 64(%rcx), %ymm3
3369 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
3370 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
3371 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm5[2,3],ymm4[2,3]
3372 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3373 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
3374 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
3375 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
3376 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3377 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm0
3378 ; AVX2-ONLY-NEXT: vmovaps 96(%rsi), %ymm1
3379 ; AVX2-ONLY-NEXT: vmovaps 96(%rdx), %ymm2
3380 ; AVX2-ONLY-NEXT: vmovaps 96(%rcx), %ymm3
3381 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
3382 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
3383 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm5[2,3],ymm4[2,3]
3384 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3385 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
3386 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
3387 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
3388 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3389 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %ymm0
3390 ; AVX2-ONLY-NEXT: vmovaps 128(%rsi), %ymm1
3391 ; AVX2-ONLY-NEXT: vmovaps 128(%rdx), %ymm2
3392 ; AVX2-ONLY-NEXT: vmovaps 128(%rcx), %ymm3
3393 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
3394 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
3395 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm5[2,3],ymm4[2,3]
3396 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3397 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
3398 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
3399 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
3400 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3401 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %ymm0
3402 ; AVX2-ONLY-NEXT: vmovaps 160(%rsi), %ymm1
3403 ; AVX2-ONLY-NEXT: vmovaps 160(%rdx), %ymm2
3404 ; AVX2-ONLY-NEXT: vmovaps 160(%rcx), %ymm3
3405 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
3406 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
3407 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm5[2,3],ymm4[2,3]
3408 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3409 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
3410 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
3411 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
3412 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3413 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %ymm0
3414 ; AVX2-ONLY-NEXT: vmovaps 192(%rsi), %ymm1
3415 ; AVX2-ONLY-NEXT: vmovaps 192(%rdx), %ymm2
3416 ; AVX2-ONLY-NEXT: vmovaps 192(%rcx), %ymm3
3417 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
3418 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
3419 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm5[2,3],ymm4[2,3]
3420 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3421 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
3422 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
3423 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
3424 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3425 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %ymm0
3426 ; AVX2-ONLY-NEXT: vmovaps 224(%rsi), %ymm1
3427 ; AVX2-ONLY-NEXT: vmovaps 224(%rdx), %ymm2
3428 ; AVX2-ONLY-NEXT: vmovaps 224(%rcx), %ymm3
3429 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
3430 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
3431 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm5[2,3],ymm4[2,3]
3432 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3433 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
3434 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
3435 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
3436 ; AVX2-ONLY-NEXT: vmovups %ymm0, (%rsp) # 32-byte Spill
3437 ; AVX2-ONLY-NEXT: vmovaps 256(%rdi), %ymm0
3438 ; AVX2-ONLY-NEXT: vmovaps 256(%rsi), %ymm1
3439 ; AVX2-ONLY-NEXT: vmovaps 256(%rdx), %ymm2
3440 ; AVX2-ONLY-NEXT: vmovaps 256(%rcx), %ymm3
3441 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
3442 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
3443 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm5[2,3],ymm4[2,3]
3444 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3445 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
3446 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
3447 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
3448 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3449 ; AVX2-ONLY-NEXT: vmovaps 288(%rdi), %ymm0
3450 ; AVX2-ONLY-NEXT: vmovaps 288(%rsi), %ymm1
3451 ; AVX2-ONLY-NEXT: vmovaps 288(%rdx), %ymm2
3452 ; AVX2-ONLY-NEXT: vmovaps 288(%rcx), %ymm3
3453 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]
3454 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
3455 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm5[2,3],ymm4[2,3]
3456 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3457 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
3458 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
3459 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]
3460 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3461 ; AVX2-ONLY-NEXT: vmovaps 320(%rdi), %ymm3
3462 ; AVX2-ONLY-NEXT: vmovaps 320(%rsi), %ymm1
3463 ; AVX2-ONLY-NEXT: vmovaps 320(%rdx), %ymm2
3464 ; AVX2-ONLY-NEXT: vmovaps 320(%rcx), %ymm0
3465 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]
3466 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm3[0],ymm1[0],ymm3[2],ymm1[2]
3467 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm9 = ymm15[2,3],ymm4[2,3]
3468 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]
3469 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm3[1],ymm1[1],ymm3[3],ymm1[3]
3470 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm8 = ymm1[2,3],ymm0[2,3]
3471 ; AVX2-ONLY-NEXT: vmovaps 352(%rdi), %ymm1
3472 ; AVX2-ONLY-NEXT: vmovaps 352(%rsi), %ymm3
3473 ; AVX2-ONLY-NEXT: vmovaps 352(%rdx), %ymm15
3474 ; AVX2-ONLY-NEXT: vmovaps 352(%rcx), %ymm0
3475 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm15[0],ymm0[0],ymm15[2],ymm0[2]
3476 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm14 = ymm1[0],ymm3[0],ymm1[2],ymm3[2]
3477 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm7 = ymm14[2,3],ymm2[2,3]
3478 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm15[1],ymm0[1],ymm15[3],ymm0[3]
3479 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm3[1],ymm1[3],ymm3[3]
3480 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm6 = ymm1[2,3],ymm0[2,3]
3481 ; AVX2-ONLY-NEXT: vmovaps 384(%rdi), %ymm1
3482 ; AVX2-ONLY-NEXT: vmovaps 384(%rsi), %ymm3
3483 ; AVX2-ONLY-NEXT: vmovaps 384(%rdx), %ymm14
3484 ; AVX2-ONLY-NEXT: vmovaps 384(%rcx), %ymm15
3485 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm14[0],ymm15[0],ymm14[2],ymm15[2]
3486 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm1[0],ymm3[0],ymm1[2],ymm3[2]
3487 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm5 = ymm13[2,3],ymm0[2,3]
3488 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm13 = ymm14[1],ymm15[1],ymm14[3],ymm15[3]
3489 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm3[1],ymm1[3],ymm3[3]
3490 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm1[2,3],ymm13[2,3]
3491 ; AVX2-ONLY-NEXT: vmovaps 416(%rdi), %ymm3
3492 ; AVX2-ONLY-NEXT: vmovaps 416(%rsi), %ymm13
3493 ; AVX2-ONLY-NEXT: vmovaps 416(%rdx), %ymm14
3494 ; AVX2-ONLY-NEXT: vmovaps 416(%rcx), %ymm15
3495 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm14[0],ymm15[0],ymm14[2],ymm15[2]
3496 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm3[0],ymm13[0],ymm3[2],ymm13[2]
3497 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm12[2,3],ymm0[2,3]
3498 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm14[1],ymm15[1],ymm14[3],ymm15[3]
3499 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm13[1],ymm3[3],ymm13[3]
3500 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm3 = ymm3[2,3],ymm12[2,3]
3501 ; AVX2-ONLY-NEXT: vmovaps 448(%rdi), %ymm12
3502 ; AVX2-ONLY-NEXT: vmovaps 448(%rsi), %ymm13
3503 ; AVX2-ONLY-NEXT: vmovaps 448(%rdx), %ymm14
3504 ; AVX2-ONLY-NEXT: vmovaps 448(%rcx), %ymm15
3505 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm14[0],ymm15[0],ymm14[2],ymm15[2]
3506 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm12[0],ymm13[0],ymm12[2],ymm13[2]
3507 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm11[2,3],ymm0[2,3]
3508 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm11 = ymm14[1],ymm15[1],ymm14[3],ymm15[3]
3509 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm12[1],ymm13[1],ymm12[3],ymm13[3]
3510 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm11 = ymm12[2,3],ymm11[2,3]
3511 ; AVX2-ONLY-NEXT: vmovaps 480(%rdi), %ymm12
3512 ; AVX2-ONLY-NEXT: vmovaps 480(%rsi), %ymm13
3513 ; AVX2-ONLY-NEXT: vmovaps 480(%rdx), %ymm14
3514 ; AVX2-ONLY-NEXT: vmovaps 480(%rcx), %ymm15
3515 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm14[0],ymm15[0],ymm14[2],ymm15[2]
3516 ; AVX2-ONLY-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm12[0],ymm13[0],ymm12[2],ymm13[2]
3517 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm10[2,3],ymm0[2,3]
3518 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm10 = ymm14[1],ymm15[1],ymm14[3],ymm15[3]
3519 ; AVX2-ONLY-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm12[1],ymm13[1],ymm12[3],ymm13[3]
3520 ; AVX2-ONLY-NEXT: vperm2f128 {{.*#+}} ymm10 = ymm12[2,3],ymm10[2,3]
3521 ; AVX2-ONLY-NEXT: vmovaps %ymm10, 2016(%r8)
3522 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1984(%r8)
3523 ; AVX2-ONLY-NEXT: vmovaps %ymm11, 1888(%r8)
3524 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 1856(%r8)
3525 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 1760(%r8)
3526 ; AVX2-ONLY-NEXT: vmovaps %ymm2, 1728(%r8)
3527 ; AVX2-ONLY-NEXT: vmovaps %ymm4, 1632(%r8)
3528 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 1600(%r8)
3529 ; AVX2-ONLY-NEXT: vmovaps %ymm6, 1504(%r8)
3530 ; AVX2-ONLY-NEXT: vmovaps %ymm7, 1472(%r8)
3531 ; AVX2-ONLY-NEXT: vmovaps %ymm8, 1376(%r8)
3532 ; AVX2-ONLY-NEXT: vmovaps %ymm9, 1344(%r8)
3533 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3534 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1248(%r8)
3535 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3536 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1216(%r8)
3537 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3538 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1120(%r8)
3539 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3540 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1088(%r8)
3541 ; AVX2-ONLY-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload
3542 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 992(%r8)
3543 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3544 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 960(%r8)
3545 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3546 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 864(%r8)
3547 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3548 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 832(%r8)
3549 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3550 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 736(%r8)
3551 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3552 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 704(%r8)
3553 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3554 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 608(%r8)
3555 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3556 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 576(%r8)
3557 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3558 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 480(%r8)
3559 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3560 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 448(%r8)
3561 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3562 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 352(%r8)
3563 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3564 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 320(%r8)
3565 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3566 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 224(%r8)
3567 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3568 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 192(%r8)
3569 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3570 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 96(%r8)
3571 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3572 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 64(%r8)
3573 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3574 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1952(%r8)
3575 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3576 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1920(%r8)
3577 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3578 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1824(%r8)
3579 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3580 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1792(%r8)
3581 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3582 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1696(%r8)
3583 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3584 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1664(%r8)
3585 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3586 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1568(%r8)
3587 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3588 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1536(%r8)
3589 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3590 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1440(%r8)
3591 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3592 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1408(%r8)
3593 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3594 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1312(%r8)
3595 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3596 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1280(%r8)
3597 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3598 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1184(%r8)
3599 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3600 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1152(%r8)
3601 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3602 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1056(%r8)
3603 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3604 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 1024(%r8)
3605 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3606 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 928(%r8)
3607 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3608 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 896(%r8)
3609 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3610 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 800(%r8)
3611 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3612 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 768(%r8)
3613 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3614 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 672(%r8)
3615 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3616 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 640(%r8)
3617 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3618 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 544(%r8)
3619 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3620 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 512(%r8)
3621 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3622 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 416(%r8)
3623 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3624 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 384(%r8)
3625 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3626 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 288(%r8)
3627 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3628 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 256(%r8)
3629 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3630 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 160(%r8)
3631 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3632 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 128(%r8)
3633 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3634 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 32(%r8)
3635 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3636 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%r8)
3637 ; AVX2-ONLY-NEXT: addq $1544, %rsp # imm = 0x608
3638 ; AVX2-ONLY-NEXT: vzeroupper
3639 ; AVX2-ONLY-NEXT: retq
3641 ; AVX512F-LABEL: store_i64_stride4_vf64:
3643 ; AVX512F-NEXT: subq $2056, %rsp # imm = 0x808
3644 ; AVX512F-NEXT: vmovdqa64 384(%rdx), %zmm5
3645 ; AVX512F-NEXT: vmovdqa64 320(%rdx), %zmm6
3646 ; AVX512F-NEXT: vmovdqa64 256(%rdx), %zmm7
3647 ; AVX512F-NEXT: vmovdqa64 (%rdx), %zmm13
3648 ; AVX512F-NEXT: vmovdqa64 64(%rdx), %zmm11
3649 ; AVX512F-NEXT: vmovdqa64 128(%rdx), %zmm10
3650 ; AVX512F-NEXT: vmovdqa64 192(%rdx), %zmm8
3651 ; AVX512F-NEXT: vmovdqa64 384(%rcx), %zmm16
3652 ; AVX512F-NEXT: vmovdqa64 320(%rcx), %zmm2
3653 ; AVX512F-NEXT: vmovdqa64 256(%rcx), %zmm4
3654 ; AVX512F-NEXT: vmovdqa64 (%rcx), %zmm1
3655 ; AVX512F-NEXT: vmovdqa64 64(%rcx), %zmm9
3656 ; AVX512F-NEXT: vmovdqa64 128(%rcx), %zmm0
3657 ; AVX512F-NEXT: vmovdqa64 192(%rcx), %zmm3
3658 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm12 = <u,u,0,8,u,u,1,9>
3659 ; AVX512F-NEXT: vmovdqa64 %zmm13, %zmm14
3660 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm12, %zmm14
3661 ; AVX512F-NEXT: vmovdqu64 %zmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3662 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm14 = <u,u,2,10,u,u,3,11>
3663 ; AVX512F-NEXT: vmovdqa64 %zmm13, %zmm15
3664 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm14, %zmm15
3665 ; AVX512F-NEXT: vmovdqu64 %zmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3666 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm15 = <u,u,4,12,u,u,5,13>
3667 ; AVX512F-NEXT: vmovdqa64 %zmm13, %zmm17
3668 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm15, %zmm17
3669 ; AVX512F-NEXT: vmovdqu64 %zmm17, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3670 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm19 = <u,u,6,14,u,u,7,15>
3671 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm19, %zmm13
3672 ; AVX512F-NEXT: vmovdqu64 %zmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3673 ; AVX512F-NEXT: vmovdqa64 %zmm11, %zmm1
3674 ; AVX512F-NEXT: vpermt2q %zmm9, %zmm12, %zmm11
3675 ; AVX512F-NEXT: vmovdqu64 %zmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3676 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm11
3677 ; AVX512F-NEXT: vpermt2q %zmm9, %zmm14, %zmm11
3678 ; AVX512F-NEXT: vmovdqu64 %zmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3679 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm11
3680 ; AVX512F-NEXT: vpermt2q %zmm9, %zmm15, %zmm11
3681 ; AVX512F-NEXT: vmovdqu64 %zmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3682 ; AVX512F-NEXT: vpermt2q %zmm9, %zmm19, %zmm1
3683 ; AVX512F-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3684 ; AVX512F-NEXT: vmovdqa64 %zmm10, %zmm1
3685 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm12, %zmm1
3686 ; AVX512F-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3687 ; AVX512F-NEXT: vmovdqa64 %zmm10, %zmm1
3688 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm14, %zmm1
3689 ; AVX512F-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3690 ; AVX512F-NEXT: vmovdqa64 %zmm10, %zmm1
3691 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm15, %zmm1
3692 ; AVX512F-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3693 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm19, %zmm10
3694 ; AVX512F-NEXT: vmovdqu64 %zmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3695 ; AVX512F-NEXT: vmovdqa64 %zmm8, %zmm0
3696 ; AVX512F-NEXT: vpermt2q %zmm3, %zmm12, %zmm0
3697 ; AVX512F-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3698 ; AVX512F-NEXT: vmovdqa64 %zmm8, %zmm0
3699 ; AVX512F-NEXT: vpermt2q %zmm3, %zmm14, %zmm0
3700 ; AVX512F-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3701 ; AVX512F-NEXT: vmovdqa64 %zmm8, %zmm0
3702 ; AVX512F-NEXT: vpermt2q %zmm3, %zmm15, %zmm0
3703 ; AVX512F-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3704 ; AVX512F-NEXT: vpermt2q %zmm3, %zmm19, %zmm8
3705 ; AVX512F-NEXT: vmovdqu64 %zmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3706 ; AVX512F-NEXT: vmovdqa64 %zmm7, %zmm0
3707 ; AVX512F-NEXT: vpermt2q %zmm4, %zmm12, %zmm0
3708 ; AVX512F-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3709 ; AVX512F-NEXT: vmovdqa64 %zmm7, %zmm0
3710 ; AVX512F-NEXT: vpermt2q %zmm4, %zmm14, %zmm0
3711 ; AVX512F-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3712 ; AVX512F-NEXT: vmovdqa64 %zmm7, %zmm0
3713 ; AVX512F-NEXT: vpermt2q %zmm4, %zmm15, %zmm0
3714 ; AVX512F-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3715 ; AVX512F-NEXT: vpermt2q %zmm4, %zmm19, %zmm7
3716 ; AVX512F-NEXT: vmovdqu64 %zmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3717 ; AVX512F-NEXT: vmovdqa64 %zmm6, %zmm0
3718 ; AVX512F-NEXT: vpermt2q %zmm2, %zmm12, %zmm0
3719 ; AVX512F-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3720 ; AVX512F-NEXT: vmovdqa64 %zmm6, %zmm0
3721 ; AVX512F-NEXT: vpermt2q %zmm2, %zmm14, %zmm0
3722 ; AVX512F-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3723 ; AVX512F-NEXT: vmovdqa64 %zmm6, %zmm0
3724 ; AVX512F-NEXT: vpermt2q %zmm2, %zmm15, %zmm0
3725 ; AVX512F-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3726 ; AVX512F-NEXT: vpermt2q %zmm2, %zmm19, %zmm6
3727 ; AVX512F-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3728 ; AVX512F-NEXT: vmovdqa64 %zmm5, %zmm0
3729 ; AVX512F-NEXT: vpermt2q %zmm16, %zmm12, %zmm0
3730 ; AVX512F-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3731 ; AVX512F-NEXT: vmovdqa64 %zmm5, %zmm0
3732 ; AVX512F-NEXT: vpermt2q %zmm16, %zmm14, %zmm0
3733 ; AVX512F-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3734 ; AVX512F-NEXT: vmovdqa64 %zmm5, %zmm0
3735 ; AVX512F-NEXT: vpermt2q %zmm16, %zmm15, %zmm0
3736 ; AVX512F-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3737 ; AVX512F-NEXT: vpermt2q %zmm16, %zmm19, %zmm5
3738 ; AVX512F-NEXT: vmovdqu64 %zmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3739 ; AVX512F-NEXT: vmovdqa64 448(%rdx), %zmm31
3740 ; AVX512F-NEXT: vmovdqa64 448(%rcx), %zmm0
3741 ; AVX512F-NEXT: vpermi2q %zmm0, %zmm31, %zmm12
3742 ; AVX512F-NEXT: vmovdqu64 %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3743 ; AVX512F-NEXT: vpermi2q %zmm0, %zmm31, %zmm14
3744 ; AVX512F-NEXT: vmovdqu64 %zmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3745 ; AVX512F-NEXT: vpermi2q %zmm0, %zmm31, %zmm15
3746 ; AVX512F-NEXT: vmovdqu64 %zmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3747 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm19, %zmm31
3748 ; AVX512F-NEXT: vmovdqa64 (%rdi), %zmm19
3749 ; AVX512F-NEXT: vmovdqa64 (%rsi), %zmm0
3750 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm4 = <0,8,u,u,1,9,u,u>
3751 ; AVX512F-NEXT: vmovdqa64 %zmm19, %zmm1
3752 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm4, %zmm1
3753 ; AVX512F-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3754 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm3 = <2,10,u,u,3,11,u,u>
3755 ; AVX512F-NEXT: vmovdqa64 %zmm19, %zmm1
3756 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm3, %zmm1
3757 ; AVX512F-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3758 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = <4,12,u,u,5,13,u,u>
3759 ; AVX512F-NEXT: vmovdqa64 %zmm19, %zmm1
3760 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm2, %zmm1
3761 ; AVX512F-NEXT: vmovdqu64 %zmm1, (%rsp) # 64-byte Spill
3762 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm23 = <6,14,u,u,7,15,u,u>
3763 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm23, %zmm19
3764 ; AVX512F-NEXT: vmovdqa64 64(%rdi), %zmm27
3765 ; AVX512F-NEXT: vmovdqa64 64(%rsi), %zmm0
3766 ; AVX512F-NEXT: vmovdqa64 %zmm27, %zmm30
3767 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm4, %zmm30
3768 ; AVX512F-NEXT: vmovdqa64 %zmm27, %zmm29
3769 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm3, %zmm29
3770 ; AVX512F-NEXT: vmovdqa64 %zmm27, %zmm28
3771 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm2, %zmm28
3772 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm23, %zmm27
3773 ; AVX512F-NEXT: vmovdqa64 128(%rdi), %zmm9
3774 ; AVX512F-NEXT: vmovdqa64 128(%rsi), %zmm0
3775 ; AVX512F-NEXT: vmovdqa64 %zmm9, %zmm26
3776 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm4, %zmm26
3777 ; AVX512F-NEXT: vmovdqa64 %zmm9, %zmm25
3778 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm3, %zmm25
3779 ; AVX512F-NEXT: vmovdqa64 %zmm9, %zmm24
3780 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm2, %zmm24
3781 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm23, %zmm9
3782 ; AVX512F-NEXT: vmovdqa64 192(%rdi), %zmm7
3783 ; AVX512F-NEXT: vmovdqa64 192(%rsi), %zmm0
3784 ; AVX512F-NEXT: vmovdqa64 %zmm7, %zmm22
3785 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm4, %zmm22
3786 ; AVX512F-NEXT: vmovdqa64 %zmm7, %zmm21
3787 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm3, %zmm21
3788 ; AVX512F-NEXT: vmovdqa64 %zmm7, %zmm20
3789 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm2, %zmm20
3790 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm23, %zmm7
3791 ; AVX512F-NEXT: vmovdqa64 256(%rdi), %zmm10
3792 ; AVX512F-NEXT: vmovdqa64 256(%rsi), %zmm0
3793 ; AVX512F-NEXT: vmovdqa64 %zmm10, %zmm18
3794 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm4, %zmm18
3795 ; AVX512F-NEXT: vmovdqa64 %zmm10, %zmm17
3796 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm3, %zmm17
3797 ; AVX512F-NEXT: vmovdqa64 %zmm10, %zmm16
3798 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm2, %zmm16
3799 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm23, %zmm10
3800 ; AVX512F-NEXT: vmovdqa64 320(%rdi), %zmm11
3801 ; AVX512F-NEXT: vmovdqa64 320(%rsi), %zmm0
3802 ; AVX512F-NEXT: vmovdqa64 %zmm11, %zmm15
3803 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm4, %zmm15
3804 ; AVX512F-NEXT: vmovdqa64 %zmm11, %zmm14
3805 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm3, %zmm14
3806 ; AVX512F-NEXT: vmovdqa64 %zmm11, %zmm13
3807 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm2, %zmm13
3808 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm23, %zmm11
3809 ; AVX512F-NEXT: vmovdqa64 384(%rdi), %zmm8
3810 ; AVX512F-NEXT: vmovdqa64 384(%rsi), %zmm0
3811 ; AVX512F-NEXT: vmovdqa64 %zmm8, %zmm12
3812 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm4, %zmm12
3813 ; AVX512F-NEXT: vmovdqa64 %zmm8, %zmm6
3814 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm3, %zmm6
3815 ; AVX512F-NEXT: vmovdqa64 %zmm8, %zmm5
3816 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm2, %zmm5
3817 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm23, %zmm8
3818 ; AVX512F-NEXT: vmovdqa64 448(%rdi), %zmm0
3819 ; AVX512F-NEXT: vmovdqa64 448(%rsi), %zmm1
3820 ; AVX512F-NEXT: vpermi2q %zmm1, %zmm0, %zmm4
3821 ; AVX512F-NEXT: vpermi2q %zmm1, %zmm0, %zmm3
3822 ; AVX512F-NEXT: vpermi2q %zmm1, %zmm0, %zmm2
3823 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm23, %zmm0
3824 ; AVX512F-NEXT: movb $-52, %al
3825 ; AVX512F-NEXT: kmovw %eax, %k1
3826 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3827 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm23 # 64-byte Reload
3828 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm23 {%k1}
3829 ; AVX512F-NEXT: vmovdqu64 %zmm23, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3830 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3831 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm23 # 64-byte Reload
3832 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm23 {%k1}
3833 ; AVX512F-NEXT: vmovdqu64 %zmm23, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3834 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3835 ; AVX512F-NEXT: vmovdqu64 (%rsp), %zmm23 # 64-byte Reload
3836 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm23 {%k1}
3837 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3838 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm19 {%k1}
3839 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3840 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm30 {%k1}
3841 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3842 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm29 {%k1}
3843 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3844 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm28 {%k1}
3845 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3846 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm27 {%k1}
3847 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3848 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm26 {%k1}
3849 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3850 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm25 {%k1}
3851 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3852 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm24 {%k1}
3853 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3854 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm9 {%k1}
3855 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3856 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm22 {%k1}
3857 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3858 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm21 {%k1}
3859 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3860 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm20 {%k1}
3861 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3862 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm7 {%k1}
3863 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3864 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm18 {%k1}
3865 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3866 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm17 {%k1}
3867 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3868 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm16 {%k1}
3869 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3870 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm10 {%k1}
3871 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3872 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm15 {%k1}
3873 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3874 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm14 {%k1}
3875 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3876 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm13 {%k1}
3877 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3878 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm11 {%k1}
3879 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3880 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm12 {%k1}
3881 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3882 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm6 {%k1}
3883 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3884 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm5 {%k1}
3885 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3886 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm8 {%k1}
3887 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3888 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm4 {%k1}
3889 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3890 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm3 {%k1}
3891 ; AVX512F-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
3892 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm2 {%k1}
3893 ; AVX512F-NEXT: vmovdqa64 %zmm31, %zmm0 {%k1}
3894 ; AVX512F-NEXT: vmovdqa64 %zmm0, 1984(%r8)
3895 ; AVX512F-NEXT: vmovdqa64 %zmm2, 1920(%r8)
3896 ; AVX512F-NEXT: vmovdqa64 %zmm3, 1856(%r8)
3897 ; AVX512F-NEXT: vmovdqa64 %zmm4, 1792(%r8)
3898 ; AVX512F-NEXT: vmovdqa64 %zmm8, 1728(%r8)
3899 ; AVX512F-NEXT: vmovdqa64 %zmm5, 1664(%r8)
3900 ; AVX512F-NEXT: vmovdqa64 %zmm6, 1600(%r8)
3901 ; AVX512F-NEXT: vmovdqa64 %zmm12, 1536(%r8)
3902 ; AVX512F-NEXT: vmovdqa64 %zmm11, 1472(%r8)
3903 ; AVX512F-NEXT: vmovdqa64 %zmm13, 1408(%r8)
3904 ; AVX512F-NEXT: vmovdqa64 %zmm14, 1344(%r8)
3905 ; AVX512F-NEXT: vmovdqa64 %zmm15, 1280(%r8)
3906 ; AVX512F-NEXT: vmovdqa64 %zmm10, 1216(%r8)
3907 ; AVX512F-NEXT: vmovdqa64 %zmm16, 1152(%r8)
3908 ; AVX512F-NEXT: vmovdqa64 %zmm17, 1088(%r8)
3909 ; AVX512F-NEXT: vmovdqa64 %zmm18, 1024(%r8)
3910 ; AVX512F-NEXT: vmovdqa64 %zmm7, 960(%r8)
3911 ; AVX512F-NEXT: vmovdqa64 %zmm20, 896(%r8)
3912 ; AVX512F-NEXT: vmovdqa64 %zmm21, 832(%r8)
3913 ; AVX512F-NEXT: vmovdqa64 %zmm22, 768(%r8)
3914 ; AVX512F-NEXT: vmovdqa64 %zmm9, 704(%r8)
3915 ; AVX512F-NEXT: vmovdqa64 %zmm24, 640(%r8)
3916 ; AVX512F-NEXT: vmovdqa64 %zmm25, 576(%r8)
3917 ; AVX512F-NEXT: vmovdqa64 %zmm26, 512(%r8)
3918 ; AVX512F-NEXT: vmovdqa64 %zmm27, 448(%r8)
3919 ; AVX512F-NEXT: vmovdqa64 %zmm28, 384(%r8)
3920 ; AVX512F-NEXT: vmovdqa64 %zmm29, 320(%r8)
3921 ; AVX512F-NEXT: vmovdqa64 %zmm30, 256(%r8)
3922 ; AVX512F-NEXT: vmovdqa64 %zmm19, 192(%r8)
3923 ; AVX512F-NEXT: vmovdqa64 %zmm23, 128(%r8)
3924 ; AVX512F-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload
3925 ; AVX512F-NEXT: vmovaps %zmm0, 64(%r8)
3926 ; AVX512F-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload
3927 ; AVX512F-NEXT: vmovaps %zmm0, (%r8)
3928 ; AVX512F-NEXT: addq $2056, %rsp # imm = 0x808
3929 ; AVX512F-NEXT: vzeroupper
3930 ; AVX512F-NEXT: retq
3932 ; AVX512BW-LABEL: store_i64_stride4_vf64:
3933 ; AVX512BW: # %bb.0:
3934 ; AVX512BW-NEXT: subq $2056, %rsp # imm = 0x808
3935 ; AVX512BW-NEXT: vmovdqa64 384(%rdx), %zmm5
3936 ; AVX512BW-NEXT: vmovdqa64 320(%rdx), %zmm6
3937 ; AVX512BW-NEXT: vmovdqa64 256(%rdx), %zmm7
3938 ; AVX512BW-NEXT: vmovdqa64 (%rdx), %zmm13
3939 ; AVX512BW-NEXT: vmovdqa64 64(%rdx), %zmm11
3940 ; AVX512BW-NEXT: vmovdqa64 128(%rdx), %zmm10
3941 ; AVX512BW-NEXT: vmovdqa64 192(%rdx), %zmm8
3942 ; AVX512BW-NEXT: vmovdqa64 384(%rcx), %zmm16
3943 ; AVX512BW-NEXT: vmovdqa64 320(%rcx), %zmm2
3944 ; AVX512BW-NEXT: vmovdqa64 256(%rcx), %zmm4
3945 ; AVX512BW-NEXT: vmovdqa64 (%rcx), %zmm1
3946 ; AVX512BW-NEXT: vmovdqa64 64(%rcx), %zmm9
3947 ; AVX512BW-NEXT: vmovdqa64 128(%rcx), %zmm0
3948 ; AVX512BW-NEXT: vmovdqa64 192(%rcx), %zmm3
3949 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm12 = <u,u,0,8,u,u,1,9>
3950 ; AVX512BW-NEXT: vmovdqa64 %zmm13, %zmm14
3951 ; AVX512BW-NEXT: vpermt2q %zmm1, %zmm12, %zmm14
3952 ; AVX512BW-NEXT: vmovdqu64 %zmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3953 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm14 = <u,u,2,10,u,u,3,11>
3954 ; AVX512BW-NEXT: vmovdqa64 %zmm13, %zmm15
3955 ; AVX512BW-NEXT: vpermt2q %zmm1, %zmm14, %zmm15
3956 ; AVX512BW-NEXT: vmovdqu64 %zmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3957 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm15 = <u,u,4,12,u,u,5,13>
3958 ; AVX512BW-NEXT: vmovdqa64 %zmm13, %zmm17
3959 ; AVX512BW-NEXT: vpermt2q %zmm1, %zmm15, %zmm17
3960 ; AVX512BW-NEXT: vmovdqu64 %zmm17, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3961 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm19 = <u,u,6,14,u,u,7,15>
3962 ; AVX512BW-NEXT: vpermt2q %zmm1, %zmm19, %zmm13
3963 ; AVX512BW-NEXT: vmovdqu64 %zmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3964 ; AVX512BW-NEXT: vmovdqa64 %zmm11, %zmm1
3965 ; AVX512BW-NEXT: vpermt2q %zmm9, %zmm12, %zmm11
3966 ; AVX512BW-NEXT: vmovdqu64 %zmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3967 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm11
3968 ; AVX512BW-NEXT: vpermt2q %zmm9, %zmm14, %zmm11
3969 ; AVX512BW-NEXT: vmovdqu64 %zmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3970 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm11
3971 ; AVX512BW-NEXT: vpermt2q %zmm9, %zmm15, %zmm11
3972 ; AVX512BW-NEXT: vmovdqu64 %zmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3973 ; AVX512BW-NEXT: vpermt2q %zmm9, %zmm19, %zmm1
3974 ; AVX512BW-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3975 ; AVX512BW-NEXT: vmovdqa64 %zmm10, %zmm1
3976 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm12, %zmm1
3977 ; AVX512BW-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3978 ; AVX512BW-NEXT: vmovdqa64 %zmm10, %zmm1
3979 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm14, %zmm1
3980 ; AVX512BW-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3981 ; AVX512BW-NEXT: vmovdqa64 %zmm10, %zmm1
3982 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm15, %zmm1
3983 ; AVX512BW-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3984 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm19, %zmm10
3985 ; AVX512BW-NEXT: vmovdqu64 %zmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3986 ; AVX512BW-NEXT: vmovdqa64 %zmm8, %zmm0
3987 ; AVX512BW-NEXT: vpermt2q %zmm3, %zmm12, %zmm0
3988 ; AVX512BW-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3989 ; AVX512BW-NEXT: vmovdqa64 %zmm8, %zmm0
3990 ; AVX512BW-NEXT: vpermt2q %zmm3, %zmm14, %zmm0
3991 ; AVX512BW-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3992 ; AVX512BW-NEXT: vmovdqa64 %zmm8, %zmm0
3993 ; AVX512BW-NEXT: vpermt2q %zmm3, %zmm15, %zmm0
3994 ; AVX512BW-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3995 ; AVX512BW-NEXT: vpermt2q %zmm3, %zmm19, %zmm8
3996 ; AVX512BW-NEXT: vmovdqu64 %zmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
3997 ; AVX512BW-NEXT: vmovdqa64 %zmm7, %zmm0
3998 ; AVX512BW-NEXT: vpermt2q %zmm4, %zmm12, %zmm0
3999 ; AVX512BW-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4000 ; AVX512BW-NEXT: vmovdqa64 %zmm7, %zmm0
4001 ; AVX512BW-NEXT: vpermt2q %zmm4, %zmm14, %zmm0
4002 ; AVX512BW-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4003 ; AVX512BW-NEXT: vmovdqa64 %zmm7, %zmm0
4004 ; AVX512BW-NEXT: vpermt2q %zmm4, %zmm15, %zmm0
4005 ; AVX512BW-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4006 ; AVX512BW-NEXT: vpermt2q %zmm4, %zmm19, %zmm7
4007 ; AVX512BW-NEXT: vmovdqu64 %zmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4008 ; AVX512BW-NEXT: vmovdqa64 %zmm6, %zmm0
4009 ; AVX512BW-NEXT: vpermt2q %zmm2, %zmm12, %zmm0
4010 ; AVX512BW-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4011 ; AVX512BW-NEXT: vmovdqa64 %zmm6, %zmm0
4012 ; AVX512BW-NEXT: vpermt2q %zmm2, %zmm14, %zmm0
4013 ; AVX512BW-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4014 ; AVX512BW-NEXT: vmovdqa64 %zmm6, %zmm0
4015 ; AVX512BW-NEXT: vpermt2q %zmm2, %zmm15, %zmm0
4016 ; AVX512BW-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4017 ; AVX512BW-NEXT: vpermt2q %zmm2, %zmm19, %zmm6
4018 ; AVX512BW-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4019 ; AVX512BW-NEXT: vmovdqa64 %zmm5, %zmm0
4020 ; AVX512BW-NEXT: vpermt2q %zmm16, %zmm12, %zmm0
4021 ; AVX512BW-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4022 ; AVX512BW-NEXT: vmovdqa64 %zmm5, %zmm0
4023 ; AVX512BW-NEXT: vpermt2q %zmm16, %zmm14, %zmm0
4024 ; AVX512BW-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4025 ; AVX512BW-NEXT: vmovdqa64 %zmm5, %zmm0
4026 ; AVX512BW-NEXT: vpermt2q %zmm16, %zmm15, %zmm0
4027 ; AVX512BW-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4028 ; AVX512BW-NEXT: vpermt2q %zmm16, %zmm19, %zmm5
4029 ; AVX512BW-NEXT: vmovdqu64 %zmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4030 ; AVX512BW-NEXT: vmovdqa64 448(%rdx), %zmm31
4031 ; AVX512BW-NEXT: vmovdqa64 448(%rcx), %zmm0
4032 ; AVX512BW-NEXT: vpermi2q %zmm0, %zmm31, %zmm12
4033 ; AVX512BW-NEXT: vmovdqu64 %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4034 ; AVX512BW-NEXT: vpermi2q %zmm0, %zmm31, %zmm14
4035 ; AVX512BW-NEXT: vmovdqu64 %zmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4036 ; AVX512BW-NEXT: vpermi2q %zmm0, %zmm31, %zmm15
4037 ; AVX512BW-NEXT: vmovdqu64 %zmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4038 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm19, %zmm31
4039 ; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm19
4040 ; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm0
4041 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm4 = <0,8,u,u,1,9,u,u>
4042 ; AVX512BW-NEXT: vmovdqa64 %zmm19, %zmm1
4043 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm4, %zmm1
4044 ; AVX512BW-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4045 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm3 = <2,10,u,u,3,11,u,u>
4046 ; AVX512BW-NEXT: vmovdqa64 %zmm19, %zmm1
4047 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm3, %zmm1
4048 ; AVX512BW-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4049 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm2 = <4,12,u,u,5,13,u,u>
4050 ; AVX512BW-NEXT: vmovdqa64 %zmm19, %zmm1
4051 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm2, %zmm1
4052 ; AVX512BW-NEXT: vmovdqu64 %zmm1, (%rsp) # 64-byte Spill
4053 ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm23 = <6,14,u,u,7,15,u,u>
4054 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm23, %zmm19
4055 ; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm27
4056 ; AVX512BW-NEXT: vmovdqa64 64(%rsi), %zmm0
4057 ; AVX512BW-NEXT: vmovdqa64 %zmm27, %zmm30
4058 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm4, %zmm30
4059 ; AVX512BW-NEXT: vmovdqa64 %zmm27, %zmm29
4060 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm3, %zmm29
4061 ; AVX512BW-NEXT: vmovdqa64 %zmm27, %zmm28
4062 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm2, %zmm28
4063 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm23, %zmm27
4064 ; AVX512BW-NEXT: vmovdqa64 128(%rdi), %zmm9
4065 ; AVX512BW-NEXT: vmovdqa64 128(%rsi), %zmm0
4066 ; AVX512BW-NEXT: vmovdqa64 %zmm9, %zmm26
4067 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm4, %zmm26
4068 ; AVX512BW-NEXT: vmovdqa64 %zmm9, %zmm25
4069 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm3, %zmm25
4070 ; AVX512BW-NEXT: vmovdqa64 %zmm9, %zmm24
4071 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm2, %zmm24
4072 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm23, %zmm9
4073 ; AVX512BW-NEXT: vmovdqa64 192(%rdi), %zmm7
4074 ; AVX512BW-NEXT: vmovdqa64 192(%rsi), %zmm0
4075 ; AVX512BW-NEXT: vmovdqa64 %zmm7, %zmm22
4076 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm4, %zmm22
4077 ; AVX512BW-NEXT: vmovdqa64 %zmm7, %zmm21
4078 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm3, %zmm21
4079 ; AVX512BW-NEXT: vmovdqa64 %zmm7, %zmm20
4080 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm2, %zmm20
4081 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm23, %zmm7
4082 ; AVX512BW-NEXT: vmovdqa64 256(%rdi), %zmm10
4083 ; AVX512BW-NEXT: vmovdqa64 256(%rsi), %zmm0
4084 ; AVX512BW-NEXT: vmovdqa64 %zmm10, %zmm18
4085 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm4, %zmm18
4086 ; AVX512BW-NEXT: vmovdqa64 %zmm10, %zmm17
4087 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm3, %zmm17
4088 ; AVX512BW-NEXT: vmovdqa64 %zmm10, %zmm16
4089 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm2, %zmm16
4090 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm23, %zmm10
4091 ; AVX512BW-NEXT: vmovdqa64 320(%rdi), %zmm11
4092 ; AVX512BW-NEXT: vmovdqa64 320(%rsi), %zmm0
4093 ; AVX512BW-NEXT: vmovdqa64 %zmm11, %zmm15
4094 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm4, %zmm15
4095 ; AVX512BW-NEXT: vmovdqa64 %zmm11, %zmm14
4096 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm3, %zmm14
4097 ; AVX512BW-NEXT: vmovdqa64 %zmm11, %zmm13
4098 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm2, %zmm13
4099 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm23, %zmm11
4100 ; AVX512BW-NEXT: vmovdqa64 384(%rdi), %zmm8
4101 ; AVX512BW-NEXT: vmovdqa64 384(%rsi), %zmm0
4102 ; AVX512BW-NEXT: vmovdqa64 %zmm8, %zmm12
4103 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm4, %zmm12
4104 ; AVX512BW-NEXT: vmovdqa64 %zmm8, %zmm6
4105 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm3, %zmm6
4106 ; AVX512BW-NEXT: vmovdqa64 %zmm8, %zmm5
4107 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm2, %zmm5
4108 ; AVX512BW-NEXT: vpermt2q %zmm0, %zmm23, %zmm8
4109 ; AVX512BW-NEXT: vmovdqa64 448(%rdi), %zmm0
4110 ; AVX512BW-NEXT: vmovdqa64 448(%rsi), %zmm1
4111 ; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm4
4112 ; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm3
4113 ; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm2
4114 ; AVX512BW-NEXT: vpermt2q %zmm1, %zmm23, %zmm0
4115 ; AVX512BW-NEXT: movb $-52, %al
4116 ; AVX512BW-NEXT: kmovd %eax, %k1
4117 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4118 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm23 # 64-byte Reload
4119 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm23 {%k1}
4120 ; AVX512BW-NEXT: vmovdqu64 %zmm23, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4121 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4122 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm23 # 64-byte Reload
4123 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm23 {%k1}
4124 ; AVX512BW-NEXT: vmovdqu64 %zmm23, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4125 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4126 ; AVX512BW-NEXT: vmovdqu64 (%rsp), %zmm23 # 64-byte Reload
4127 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm23 {%k1}
4128 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4129 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm19 {%k1}
4130 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4131 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm30 {%k1}
4132 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4133 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm29 {%k1}
4134 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4135 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm28 {%k1}
4136 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4137 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm27 {%k1}
4138 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4139 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm26 {%k1}
4140 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4141 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm25 {%k1}
4142 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4143 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm24 {%k1}
4144 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4145 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm9 {%k1}
4146 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4147 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm22 {%k1}
4148 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4149 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm21 {%k1}
4150 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4151 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm20 {%k1}
4152 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4153 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm7 {%k1}
4154 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4155 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm18 {%k1}
4156 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4157 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm17 {%k1}
4158 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4159 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm16 {%k1}
4160 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4161 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm10 {%k1}
4162 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4163 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm15 {%k1}
4164 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4165 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm14 {%k1}
4166 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4167 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm13 {%k1}
4168 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4169 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm11 {%k1}
4170 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4171 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm12 {%k1}
4172 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4173 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm6 {%k1}
4174 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4175 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm5 {%k1}
4176 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4177 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm8 {%k1}
4178 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4179 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm4 {%k1}
4180 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4181 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm3 {%k1}
4182 ; AVX512BW-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
4183 ; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm2 {%k1}
4184 ; AVX512BW-NEXT: vmovdqa64 %zmm31, %zmm0 {%k1}
4185 ; AVX512BW-NEXT: vmovdqa64 %zmm0, 1984(%r8)
4186 ; AVX512BW-NEXT: vmovdqa64 %zmm2, 1920(%r8)
4187 ; AVX512BW-NEXT: vmovdqa64 %zmm3, 1856(%r8)
4188 ; AVX512BW-NEXT: vmovdqa64 %zmm4, 1792(%r8)
4189 ; AVX512BW-NEXT: vmovdqa64 %zmm8, 1728(%r8)
4190 ; AVX512BW-NEXT: vmovdqa64 %zmm5, 1664(%r8)
4191 ; AVX512BW-NEXT: vmovdqa64 %zmm6, 1600(%r8)
4192 ; AVX512BW-NEXT: vmovdqa64 %zmm12, 1536(%r8)
4193 ; AVX512BW-NEXT: vmovdqa64 %zmm11, 1472(%r8)
4194 ; AVX512BW-NEXT: vmovdqa64 %zmm13, 1408(%r8)
4195 ; AVX512BW-NEXT: vmovdqa64 %zmm14, 1344(%r8)
4196 ; AVX512BW-NEXT: vmovdqa64 %zmm15, 1280(%r8)
4197 ; AVX512BW-NEXT: vmovdqa64 %zmm10, 1216(%r8)
4198 ; AVX512BW-NEXT: vmovdqa64 %zmm16, 1152(%r8)
4199 ; AVX512BW-NEXT: vmovdqa64 %zmm17, 1088(%r8)
4200 ; AVX512BW-NEXT: vmovdqa64 %zmm18, 1024(%r8)
4201 ; AVX512BW-NEXT: vmovdqa64 %zmm7, 960(%r8)
4202 ; AVX512BW-NEXT: vmovdqa64 %zmm20, 896(%r8)
4203 ; AVX512BW-NEXT: vmovdqa64 %zmm21, 832(%r8)
4204 ; AVX512BW-NEXT: vmovdqa64 %zmm22, 768(%r8)
4205 ; AVX512BW-NEXT: vmovdqa64 %zmm9, 704(%r8)
4206 ; AVX512BW-NEXT: vmovdqa64 %zmm24, 640(%r8)
4207 ; AVX512BW-NEXT: vmovdqa64 %zmm25, 576(%r8)
4208 ; AVX512BW-NEXT: vmovdqa64 %zmm26, 512(%r8)
4209 ; AVX512BW-NEXT: vmovdqa64 %zmm27, 448(%r8)
4210 ; AVX512BW-NEXT: vmovdqa64 %zmm28, 384(%r8)
4211 ; AVX512BW-NEXT: vmovdqa64 %zmm29, 320(%r8)
4212 ; AVX512BW-NEXT: vmovdqa64 %zmm30, 256(%r8)
4213 ; AVX512BW-NEXT: vmovdqa64 %zmm19, 192(%r8)
4214 ; AVX512BW-NEXT: vmovdqa64 %zmm23, 128(%r8)
4215 ; AVX512BW-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload
4216 ; AVX512BW-NEXT: vmovaps %zmm0, 64(%r8)
4217 ; AVX512BW-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload
4218 ; AVX512BW-NEXT: vmovaps %zmm0, (%r8)
4219 ; AVX512BW-NEXT: addq $2056, %rsp # imm = 0x808
4220 ; AVX512BW-NEXT: vzeroupper
4221 ; AVX512BW-NEXT: retq
4222 %in.vec0 = load <64 x i64>, ptr %in.vecptr0, align 64
4223 %in.vec1 = load <64 x i64>, ptr %in.vecptr1, align 64
4224 %in.vec2 = load <64 x i64>, ptr %in.vecptr2, align 64
4225 %in.vec3 = load <64 x i64>, ptr %in.vecptr3, align 64
4226 %1 = shufflevector <64 x i64> %in.vec0, <64 x i64> %in.vec1, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>
4227 %2 = shufflevector <64 x i64> %in.vec2, <64 x i64> %in.vec3, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>
4228 %3 = shufflevector <128 x i64> %1, <128 x i64> %2, <256 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159, i32 160, i32 161, i32 162, i32 163, i32 164, i32 165, i32 166, i32 167, i32 168, i32 169, i32 170, i32 171, i32 172, i32 173, i32 174, i32 175, i32 176, i32 177, i32 178, i32 179, i32 180, i32 181, i32 182, i32 183, i32 184, i32 185, i32 186, i32 187, i32 188, i32 189, i32 190, i32 191, i32 192, i32 193, i32 194, i32 195, i32 196, i32 197, i32 198, i32 199, i32 200, i32 201, i32 202, i32 203, i32 204, i32 205, i32 206, i32 207, i32 208, i32 209, i32 210, i32 211, i32 212, i32 213, i32 214, i32 215, i32 216, i32 217, i32 218, i32 219, i32 220, i32 221, i32 222, i32 223, i32 224, i32 225, i32 226, i32 227, i32 228, i32 229, i32 230, i32 231, i32 232, i32 233, i32 234, i32 235, i32 236, i32 237, i32 238, i32 239, i32 240, i32 241, i32 242, i32 243, i32 244, i32 245, i32 246, i32 247, i32 248, i32 249, i32 250, i32 251, i32 252, i32 253, i32 254, i32 255>
4229 %interleaved.vec = shufflevector <256 x i64> %3, <256 x i64> poison, <256 x i32> <i32 0, i32 64, i32 128, i32 192, i32 1, i32 65, i32 129, i32 193, i32 2, i32 66, i32 130, i32 194, i32 3, i32 67, i32 131, i32 195, i32 4, i32 68, i32 132, i32 196, i32 5, i32 69, i32 133, i32 197, i32 6, i32 70, i32 134, i32 198, i32 7, i32 71, i32 135, i32 199, i32 8, i32 72, i32 136, i32 200, i32 9, i32 73, i32 137, i32 201, i32 10, i32 74, i32 138, i32 202, i32 11, i32 75, i32 139, i32 203, i32 12, i32 76, i32 140, i32 204, i32 13, i32 77, i32 141, i32 205, i32 14, i32 78, i32 142, i32 206, i32 15, i32 79, i32 143, i32 207, i32 16, i32 80, i32 144, i32 208, i32 17, i32 81, i32 145, i32 209, i32 18, i32 82, i32 146, i32 210, i32 19, i32 83, i32 147, i32 211, i32 20, i32 84, i32 148, i32 212, i32 21, i32 85, i32 149, i32 213, i32 22, i32 86, i32 150, i32 214, i32 23, i32 87, i32 151, i32 215, i32 24, i32 88, i32 152, i32 216, i32 25, i32 89, i32 153, i32 217, i32 26, i32 90, i32 154, i32 218, i32 27, i32 91, i32 155, i32 219, i32 28, i32 92, i32 156, i32 220, i32 29, i32 93, i32 157, i32 221, i32 30, i32 94, i32 158, i32 222, i32 31, i32 95, i32 159, i32 223, i32 32, i32 96, i32 160, i32 224, i32 33, i32 97, i32 161, i32 225, i32 34, i32 98, i32 162, i32 226, i32 35, i32 99, i32 163, i32 227, i32 36, i32 100, i32 164, i32 228, i32 37, i32 101, i32 165, i32 229, i32 38, i32 102, i32 166, i32 230, i32 39, i32 103, i32 167, i32 231, i32 40, i32 104, i32 168, i32 232, i32 41, i32 105, i32 169, i32 233, i32 42, i32 106, i32 170, i32 234, i32 43, i32 107, i32 171, i32 235, i32 44, i32 108, i32 172, i32 236, i32 45, i32 109, i32 173, i32 237, i32 46, i32 110, i32 174, i32 238, i32 47, i32 111, i32 175, i32 239, i32 48, i32 112, i32 176, i32 240, i32 49, i32 113, i32 177, i32 241, i32 50, i32 114, i32 178, i32 242, i32 51, i32 115, i32 179, i32 243, i32 52, i32 116, i32 180, i32 244, i32 53, i32 117, i32 181, i32 245, i32 54, i32 118, i32 182, i32 246, i32 55, i32 119, i32 183, i32 247, i32 56, i32 120, i32 184, i32 248, i32 57, i32 121, i32 185, i32 249, i32 58, i32 122, i32 186, i32 250, i32 59, i32 123, i32 187, i32 251, i32 60, i32 124, i32 188, i32 252, i32 61, i32 125, i32 189, i32 253, i32 62, i32 126, i32 190, i32 254, i32 63, i32 127, i32 191, i32 255>
4230 store <256 x i64> %interleaved.vec, ptr %out.vec, align 64
4233 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
4238 ; AVX2-FAST-PERLANE: {{.*}}
4240 ; AVX512BW-FAST: {{.*}}
4241 ; AVX512BW-ONLY-FAST: {{.*}}
4242 ; AVX512BW-ONLY-SLOW: {{.*}}
4243 ; AVX512BW-SLOW: {{.*}}
4244 ; AVX512DQ-FAST: {{.*}}
4245 ; AVX512DQ-SLOW: {{.*}}
4246 ; AVX512DQBW-FAST: {{.*}}
4247 ; AVX512DQBW-SLOW: {{.*}}
4248 ; AVX512F-FAST: {{.*}}
4249 ; AVX512F-ONLY-FAST: {{.*}}
4250 ; AVX512F-ONLY-SLOW: {{.*}}
4251 ; AVX512F-SLOW: {{.*}}
4254 ; FALLBACK10: {{.*}}
4255 ; FALLBACK11: {{.*}}
4256 ; FALLBACK12: {{.*}}