[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / X86 / vector-interleaved-store-i64-stride-3.ll
blob55c8cfb9b49566b3407a526f9d290970341b5ba3
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,FALLBACK0
3 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx  | FileCheck %s --check-prefixes=AVX,AVX1,AVX1-ONLY,FALLBACK1
4 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-SLOW,FALLBACK2
5 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-FAST,FALLBACK3
6 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-FAST-PERLANE,FALLBACK4
7 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-SLOW,AVX512F-SLOW,AVX512F-ONLY-SLOW,FALLBACK5
8 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-FAST,AVX512F-FAST,AVX512F-ONLY-FAST,FALLBACK6
9 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-SLOW,AVX512F-SLOW,AVX512DQ-SLOW,FALLBACK7
10 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-FAST,AVX512F-FAST,AVX512DQ-FAST,FALLBACK8
11 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-SLOW,AVX512BW-SLOW,AVX512BW-ONLY-SLOW,FALLBACK9
12 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-FAST,AVX512BW-FAST,AVX512BW-ONLY-FAST,FALLBACK10
13 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-SLOW,AVX512BW-SLOW,AVX512DQBW-SLOW,FALLBACK11
14 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-FAST,AVX512BW-FAST,AVX512DQBW-FAST,FALLBACK12
16 ; These patterns are produced by LoopVectorizer for interleaved stores.
18 define void @store_i64_stride3_vf2(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %out.vec) nounwind {
19 ; SSE-LABEL: store_i64_stride3_vf2:
20 ; SSE:       # %bb.0:
21 ; SSE-NEXT:    movapd (%rdi), %xmm0
22 ; SSE-NEXT:    movapd (%rsi), %xmm1
23 ; SSE-NEXT:    movapd (%rdx), %xmm2
24 ; SSE-NEXT:    movapd %xmm0, %xmm3
25 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm3 = xmm3[0],xmm1[0]
26 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm2[1]
27 ; SSE-NEXT:    movsd {{.*#+}} xmm0 = xmm2[0],xmm0[1]
28 ; SSE-NEXT:    movapd %xmm0, 16(%rcx)
29 ; SSE-NEXT:    movapd %xmm1, 32(%rcx)
30 ; SSE-NEXT:    movapd %xmm3, (%rcx)
31 ; SSE-NEXT:    retq
33 ; AVX1-ONLY-LABEL: store_i64_stride3_vf2:
34 ; AVX1-ONLY:       # %bb.0:
35 ; AVX1-ONLY-NEXT:    vmovaps (%rdi), %xmm0
36 ; AVX1-ONLY-NEXT:    vmovaps (%rsi), %xmm1
37 ; AVX1-ONLY-NEXT:    vmovaps (%rdx), %xmm2
38 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm3
39 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
40 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[2],ymm3[3]
41 ; AVX1-ONLY-NEXT:    vunpckhpd {{.*#+}} xmm1 = xmm1[1],xmm2[1]
42 ; AVX1-ONLY-NEXT:    vmovaps %xmm1, 32(%rcx)
43 ; AVX1-ONLY-NEXT:    vmovapd %ymm0, (%rcx)
44 ; AVX1-ONLY-NEXT:    vzeroupper
45 ; AVX1-ONLY-NEXT:    retq
47 ; AVX2-ONLY-LABEL: store_i64_stride3_vf2:
48 ; AVX2-ONLY:       # %bb.0:
49 ; AVX2-ONLY-NEXT:    vmovaps (%rdi), %xmm0
50 ; AVX2-ONLY-NEXT:    vmovaps (%rsi), %xmm1
51 ; AVX2-ONLY-NEXT:    vmovaps (%rdx), %xmm2
52 ; AVX2-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
53 ; AVX2-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm3
54 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,1]
55 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm3[4,5],ymm0[6,7]
56 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} xmm1 = xmm1[1],xmm2[1]
57 ; AVX2-ONLY-NEXT:    vmovaps %xmm1, 32(%rcx)
58 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, (%rcx)
59 ; AVX2-ONLY-NEXT:    vzeroupper
60 ; AVX2-ONLY-NEXT:    retq
62 ; AVX512-LABEL: store_i64_stride3_vf2:
63 ; AVX512:       # %bb.0:
64 ; AVX512-NEXT:    vmovaps (%rdi), %xmm0
65 ; AVX512-NEXT:    vinsertf128 $1, (%rsi), %ymm0, %ymm0
66 ; AVX512-NEXT:    vinsertf32x4 $2, (%rdx), %zmm0, %zmm0
67 ; AVX512-NEXT:    vmovaps {{.*#+}} zmm1 = <0,2,4,1,3,5,u,u>
68 ; AVX512-NEXT:    vpermpd %zmm0, %zmm1, %zmm0
69 ; AVX512-NEXT:    vextractf32x4 $2, %zmm0, 32(%rcx)
70 ; AVX512-NEXT:    vmovaps %ymm0, (%rcx)
71 ; AVX512-NEXT:    vzeroupper
72 ; AVX512-NEXT:    retq
73   %in.vec0 = load <2 x i64>, ptr %in.vecptr0, align 64
74   %in.vec1 = load <2 x i64>, ptr %in.vecptr1, align 64
75   %in.vec2 = load <2 x i64>, ptr %in.vecptr2, align 64
76   %1 = shufflevector <2 x i64> %in.vec0, <2 x i64> %in.vec1, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
77   %2 = shufflevector <2 x i64> %in.vec2, <2 x i64> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
78   %3 = shufflevector <4 x i64> %1, <4 x i64> %2, <6 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5>
79   %interleaved.vec = shufflevector <6 x i64> %3, <6 x i64> poison, <6 x i32> <i32 0, i32 2, i32 4, i32 1, i32 3, i32 5>
80   store <6 x i64> %interleaved.vec, ptr %out.vec, align 64
81   ret void
84 define void @store_i64_stride3_vf4(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %out.vec) nounwind {
85 ; SSE-LABEL: store_i64_stride3_vf4:
86 ; SSE:       # %bb.0:
87 ; SSE-NEXT:    movaps (%rdi), %xmm0
88 ; SSE-NEXT:    movaps 16(%rdi), %xmm1
89 ; SSE-NEXT:    movaps (%rsi), %xmm2
90 ; SSE-NEXT:    movaps 16(%rsi), %xmm3
91 ; SSE-NEXT:    movaps (%rdx), %xmm4
92 ; SSE-NEXT:    movaps 16(%rdx), %xmm5
93 ; SSE-NEXT:    movaps %xmm3, %xmm6
94 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm5[1]
95 ; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,1],xmm1[2,3]
96 ; SSE-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm3[0]
97 ; SSE-NEXT:    movaps %xmm2, %xmm3
98 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm4[1]
99 ; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,1],xmm0[2,3]
100 ; SSE-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0],xmm2[0]
101 ; SSE-NEXT:    movaps %xmm0, (%rcx)
102 ; SSE-NEXT:    movaps %xmm4, 16(%rcx)
103 ; SSE-NEXT:    movaps %xmm3, 32(%rcx)
104 ; SSE-NEXT:    movaps %xmm1, 48(%rcx)
105 ; SSE-NEXT:    movaps %xmm5, 64(%rcx)
106 ; SSE-NEXT:    movaps %xmm6, 80(%rcx)
107 ; SSE-NEXT:    retq
109 ; AVX1-ONLY-LABEL: store_i64_stride3_vf4:
110 ; AVX1-ONLY:       # %bb.0:
111 ; AVX1-ONLY-NEXT:    vmovapd (%rsi), %ymm0
112 ; AVX1-ONLY-NEXT:    vmovapd (%rdx), %ymm1
113 ; AVX1-ONLY-NEXT:    vmovaps (%rdi), %xmm2
114 ; AVX1-ONLY-NEXT:    vmovapd 16(%rdi), %xmm3
115 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm4 = xmm2[0],mem[0]
116 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm2
117 ; AVX1-ONLY-NEXT:    vinsertf128 $1, (%rdx), %ymm4, %ymm4
118 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5],ymm2[6,7]
119 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm3 = ymm3[0,1],ymm1[2,3]
120 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm4 = ymm0[0,0,3,2]
121 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm4 = ymm1[2,3],ymm4[2,3]
122 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm3 = ymm4[0],ymm3[1],ymm4[2],ymm3[3]
123 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm0 = ymm0[1,0,2,2]
124 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],mem[2],ymm0[3]
125 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2,3]
126 ; AVX1-ONLY-NEXT:    vmovapd %ymm3, 64(%rcx)
127 ; AVX1-ONLY-NEXT:    vmovapd %ymm0, 32(%rcx)
128 ; AVX1-ONLY-NEXT:    vmovaps %ymm2, (%rcx)
129 ; AVX1-ONLY-NEXT:    vzeroupper
130 ; AVX1-ONLY-NEXT:    retq
132 ; AVX2-ONLY-LABEL: store_i64_stride3_vf4:
133 ; AVX2-ONLY:       # %bb.0:
134 ; AVX2-ONLY-NEXT:    vmovaps (%rdi), %ymm0
135 ; AVX2-ONLY-NEXT:    vmovaps (%rsi), %ymm1
136 ; AVX2-ONLY-NEXT:    vmovaps (%rdx), %ymm2
137 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = mem[0,0]
138 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm4 = ymm0[0,1,2,1]
139 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1],ymm3[2,3],ymm4[4,5,6,7]
140 ; AVX2-ONLY-NEXT:    vbroadcastsd (%rdx), %ymm4
141 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4,5],ymm3[6,7]
142 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm4 = ymm1[2,3,0,1,6,7,4,5]
143 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm0[4,5],ymm4[6,7]
144 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm4 = ymm4[0,1],ymm2[2,3],ymm4[4,5,6,7]
145 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
146 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
147 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm2[2,1,2,3]
148 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
149 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 64(%rcx)
150 ; AVX2-ONLY-NEXT:    vmovaps %ymm4, 32(%rcx)
151 ; AVX2-ONLY-NEXT:    vmovaps %ymm3, (%rcx)
152 ; AVX2-ONLY-NEXT:    vzeroupper
153 ; AVX2-ONLY-NEXT:    retq
155 ; AVX512-LABEL: store_i64_stride3_vf4:
156 ; AVX512:       # %bb.0:
157 ; AVX512-NEXT:    vmovdqa (%rdi), %ymm0
158 ; AVX512-NEXT:    vmovdqa (%rdx), %ymm1
159 ; AVX512-NEXT:    vinserti64x4 $1, (%rsi), %zmm0, %zmm0
160 ; AVX512-NEXT:    vmovdqa {{.*#+}} ymm2 = [10,3,7,11]
161 ; AVX512-NEXT:    vpermi2q %zmm1, %zmm0, %zmm2
162 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm3 = [0,4,8,1,5,9,2,6]
163 ; AVX512-NEXT:    vpermi2q %zmm1, %zmm0, %zmm3
164 ; AVX512-NEXT:    vmovdqa64 %zmm3, (%rcx)
165 ; AVX512-NEXT:    vmovdqa %ymm2, 64(%rcx)
166 ; AVX512-NEXT:    vzeroupper
167 ; AVX512-NEXT:    retq
168   %in.vec0 = load <4 x i64>, ptr %in.vecptr0, align 64
169   %in.vec1 = load <4 x i64>, ptr %in.vecptr1, align 64
170   %in.vec2 = load <4 x i64>, ptr %in.vecptr2, align 64
171   %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>
172   %2 = shufflevector <4 x i64> %in.vec2, <4 x i64> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
173   %3 = shufflevector <8 x i64> %1, <8 x i64> %2, <12 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>
174   %interleaved.vec = shufflevector <12 x i64> %3, <12 x i64> poison, <12 x i32> <i32 0, i32 4, i32 8, i32 1, i32 5, i32 9, i32 2, i32 6, i32 10, i32 3, i32 7, i32 11>
175   store <12 x i64> %interleaved.vec, ptr %out.vec, align 64
176   ret void
179 define void @store_i64_stride3_vf8(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %out.vec) nounwind {
180 ; SSE-LABEL: store_i64_stride3_vf8:
181 ; SSE:       # %bb.0:
182 ; SSE-NEXT:    movaps (%rdi), %xmm3
183 ; SSE-NEXT:    movaps 16(%rdi), %xmm2
184 ; SSE-NEXT:    movaps 32(%rdi), %xmm1
185 ; SSE-NEXT:    movaps 48(%rdi), %xmm0
186 ; SSE-NEXT:    movaps (%rsi), %xmm7
187 ; SSE-NEXT:    movaps 16(%rsi), %xmm8
188 ; SSE-NEXT:    movaps 32(%rsi), %xmm9
189 ; SSE-NEXT:    movaps 48(%rsi), %xmm10
190 ; SSE-NEXT:    movaps (%rdx), %xmm11
191 ; SSE-NEXT:    movaps 16(%rdx), %xmm12
192 ; SSE-NEXT:    movaps 32(%rdx), %xmm6
193 ; SSE-NEXT:    movaps 48(%rdx), %xmm5
194 ; SSE-NEXT:    movaps %xmm10, %xmm4
195 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm5[1]
196 ; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,1],xmm0[2,3]
197 ; SSE-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0],xmm10[0]
198 ; SSE-NEXT:    movaps %xmm9, %xmm10
199 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm6[1]
200 ; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[0,1],xmm1[2,3]
201 ; SSE-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm9[0]
202 ; SSE-NEXT:    movaps %xmm8, %xmm9
203 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm12[1]
204 ; SSE-NEXT:    shufps {{.*#+}} xmm12 = xmm12[0,1],xmm2[2,3]
205 ; SSE-NEXT:    movlhps {{.*#+}} xmm2 = xmm2[0],xmm8[0]
206 ; SSE-NEXT:    movaps %xmm7, %xmm8
207 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm11[1]
208 ; SSE-NEXT:    shufps {{.*#+}} xmm11 = xmm11[0,1],xmm3[2,3]
209 ; SSE-NEXT:    movlhps {{.*#+}} xmm3 = xmm3[0],xmm7[0]
210 ; SSE-NEXT:    movaps %xmm3, (%rcx)
211 ; SSE-NEXT:    movaps %xmm11, 16(%rcx)
212 ; SSE-NEXT:    movaps %xmm8, 32(%rcx)
213 ; SSE-NEXT:    movaps %xmm2, 48(%rcx)
214 ; SSE-NEXT:    movaps %xmm12, 64(%rcx)
215 ; SSE-NEXT:    movaps %xmm9, 80(%rcx)
216 ; SSE-NEXT:    movaps %xmm1, 96(%rcx)
217 ; SSE-NEXT:    movaps %xmm6, 112(%rcx)
218 ; SSE-NEXT:    movaps %xmm10, 128(%rcx)
219 ; SSE-NEXT:    movaps %xmm0, 144(%rcx)
220 ; SSE-NEXT:    movaps %xmm5, 160(%rcx)
221 ; SSE-NEXT:    movaps %xmm4, 176(%rcx)
222 ; SSE-NEXT:    retq
224 ; AVX1-ONLY-LABEL: store_i64_stride3_vf8:
225 ; AVX1-ONLY:       # %bb.0:
226 ; AVX1-ONLY-NEXT:    vmovapd (%rsi), %ymm0
227 ; AVX1-ONLY-NEXT:    vmovapd 32(%rsi), %ymm1
228 ; AVX1-ONLY-NEXT:    vmovapd (%rdx), %ymm2
229 ; AVX1-ONLY-NEXT:    vmovapd 32(%rdx), %ymm3
230 ; AVX1-ONLY-NEXT:    vmovaps (%rdi), %xmm4
231 ; AVX1-ONLY-NEXT:    vmovapd 16(%rdi), %xmm5
232 ; AVX1-ONLY-NEXT:    vmovaps 32(%rdi), %xmm6
233 ; AVX1-ONLY-NEXT:    vmovapd 48(%rdi), %xmm7
234 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm8 = xmm4[0],mem[0]
235 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm4, %ymm8, %ymm4
236 ; AVX1-ONLY-NEXT:    vinsertf128 $1, (%rdx), %ymm8, %ymm8
237 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm4 = ymm8[0,1],ymm4[2,3],ymm8[4,5],ymm4[6,7]
238 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm8 = xmm6[0],mem[0]
239 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm8, %ymm6
240 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 32(%rdx), %ymm8, %ymm8
241 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm6 = ymm8[0,1],ymm6[2,3],ymm8[4,5],ymm6[6,7]
242 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm7 = ymm7[0,1],ymm3[2,3]
243 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm8 = ymm1[0,0,3,2]
244 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm8 = ymm3[2,3],ymm8[2,3]
245 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm7 = ymm8[0],ymm7[1],ymm8[2],ymm7[3]
246 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm5 = ymm5[0,1],ymm2[2,3]
247 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm8 = ymm0[0,0,3,2]
248 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm8 = ymm2[2,3],ymm8[2,3]
249 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm5 = ymm8[0],ymm5[1],ymm8[2],ymm5[3]
250 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm0 = ymm0[1,0,2,2]
251 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],mem[2],ymm0[3]
252 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2,3]
253 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[1,0,2,2]
254 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm1 = ymm1[0,1],mem[2],ymm1[3]
255 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm1 = ymm1[0],ymm3[1],ymm1[2,3]
256 ; AVX1-ONLY-NEXT:    vmovapd %ymm5, 64(%rcx)
257 ; AVX1-ONLY-NEXT:    vmovapd %ymm7, 160(%rcx)
258 ; AVX1-ONLY-NEXT:    vmovapd %ymm1, 128(%rcx)
259 ; AVX1-ONLY-NEXT:    vmovapd %ymm0, 32(%rcx)
260 ; AVX1-ONLY-NEXT:    vmovaps %ymm6, 96(%rcx)
261 ; AVX1-ONLY-NEXT:    vmovaps %ymm4, (%rcx)
262 ; AVX1-ONLY-NEXT:    vzeroupper
263 ; AVX1-ONLY-NEXT:    retq
265 ; AVX2-ONLY-LABEL: store_i64_stride3_vf8:
266 ; AVX2-ONLY:       # %bb.0:
267 ; AVX2-ONLY-NEXT:    vmovaps (%rdi), %ymm0
268 ; AVX2-ONLY-NEXT:    vmovaps 32(%rdi), %ymm1
269 ; AVX2-ONLY-NEXT:    vmovaps (%rsi), %ymm2
270 ; AVX2-ONLY-NEXT:    vmovaps 32(%rsi), %ymm3
271 ; AVX2-ONLY-NEXT:    vmovaps (%rdx), %ymm4
272 ; AVX2-ONLY-NEXT:    vmovaps 32(%rdx), %ymm5
273 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm6 = ymm2[2,3,0,1,6,7,4,5]
274 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm0[4,5],ymm6[6,7]
275 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm6 = ymm6[0,1],ymm4[2,3],ymm6[4,5,6,7]
276 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm7 = mem[0,0]
277 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm8 = ymm0[0,1,2,1]
278 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm7 = ymm8[0,1],ymm7[2,3],ymm8[4,5,6,7]
279 ; AVX2-ONLY-NEXT:    vbroadcastsd (%rdx), %ymm8
280 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm8[4,5],ymm7[6,7]
281 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm8 = ymm3[2,3,0,1,6,7,4,5]
282 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm8 = ymm8[0,1,2,3],ymm1[4,5],ymm8[6,7]
283 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm8 = ymm8[0,1],ymm5[2,3],ymm8[4,5,6,7]
284 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm3 = ymm1[1],ymm3[1],ymm1[3],ymm3[3]
285 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm3 = ymm3[0,2,3,3]
286 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm5 = ymm5[2,1,2,3]
287 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm3 = ymm5[0,1],ymm3[2,3,4,5],ymm5[6,7]
288 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm5 = mem[0,0]
289 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[0,1,2,1]
290 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm5[2,3],ymm1[4,5,6,7]
291 ; AVX2-ONLY-NEXT:    vbroadcastsd 32(%rdx), %ymm5
292 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm5[4,5],ymm1[6,7]
293 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm2[1],ymm0[3],ymm2[3]
294 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
295 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm4[2,1,2,3]
296 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm2[0,1],ymm0[2,3,4,5],ymm2[6,7]
297 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 64(%rcx)
298 ; AVX2-ONLY-NEXT:    vmovaps %ymm1, 96(%rcx)
299 ; AVX2-ONLY-NEXT:    vmovaps %ymm3, 160(%rcx)
300 ; AVX2-ONLY-NEXT:    vmovaps %ymm8, 128(%rcx)
301 ; AVX2-ONLY-NEXT:    vmovaps %ymm7, (%rcx)
302 ; AVX2-ONLY-NEXT:    vmovaps %ymm6, 32(%rcx)
303 ; AVX2-ONLY-NEXT:    vzeroupper
304 ; AVX2-ONLY-NEXT:    retq
306 ; AVX512-LABEL: store_i64_stride3_vf8:
307 ; AVX512:       # %bb.0:
308 ; AVX512-NEXT:    vmovdqa64 (%rdi), %zmm0
309 ; AVX512-NEXT:    vmovdqa64 (%rsi), %zmm1
310 ; AVX512-NEXT:    vmovdqa64 (%rdx), %zmm2
311 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm3 = <0,8,u,1,9,u,2,10>
312 ; AVX512-NEXT:    vpermi2q %zmm1, %zmm0, %zmm3
313 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm4 = [0,1,8,3,4,9,6,7]
314 ; AVX512-NEXT:    vpermi2q %zmm2, %zmm3, %zmm4
315 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm3 = <u,3,11,u,4,12,u,5>
316 ; AVX512-NEXT:    vpermi2q %zmm1, %zmm0, %zmm3
317 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [10,1,2,11,4,5,12,7]
318 ; AVX512-NEXT:    vpermi2q %zmm2, %zmm3, %zmm5
319 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm3 = <5,u,14,6,u,15,7,u>
320 ; AVX512-NEXT:    vpermi2q %zmm0, %zmm1, %zmm3
321 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm0 = [0,13,2,3,14,5,6,15]
322 ; AVX512-NEXT:    vpermi2q %zmm2, %zmm3, %zmm0
323 ; AVX512-NEXT:    vmovdqa64 %zmm0, 128(%rcx)
324 ; AVX512-NEXT:    vmovdqa64 %zmm5, 64(%rcx)
325 ; AVX512-NEXT:    vmovdqa64 %zmm4, (%rcx)
326 ; AVX512-NEXT:    vzeroupper
327 ; AVX512-NEXT:    retq
328   %in.vec0 = load <8 x i64>, ptr %in.vecptr0, align 64
329   %in.vec1 = load <8 x i64>, ptr %in.vecptr1, align 64
330   %in.vec2 = load <8 x i64>, ptr %in.vecptr2, align 64
331   %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>
332   %2 = shufflevector <8 x i64> %in.vec2, <8 x i64> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
333   %3 = shufflevector <16 x i64> %1, <16 x i64> %2, <24 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>
334   %interleaved.vec = shufflevector <24 x i64> %3, <24 x i64> poison, <24 x i32> <i32 0, i32 8, i32 16, i32 1, i32 9, i32 17, i32 2, i32 10, i32 18, i32 3, i32 11, i32 19, i32 4, i32 12, i32 20, i32 5, i32 13, i32 21, i32 6, i32 14, i32 22, i32 7, i32 15, i32 23>
335   store <24 x i64> %interleaved.vec, ptr %out.vec, align 64
336   ret void
339 define void @store_i64_stride3_vf16(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %out.vec) nounwind {
340 ; SSE-LABEL: store_i64_stride3_vf16:
341 ; SSE:       # %bb.0:
342 ; SSE-NEXT:    subq $24, %rsp
343 ; SSE-NEXT:    movapd 64(%rdi), %xmm5
344 ; SSE-NEXT:    movapd (%rdi), %xmm1
345 ; SSE-NEXT:    movapd 16(%rdi), %xmm2
346 ; SSE-NEXT:    movapd 32(%rdi), %xmm3
347 ; SSE-NEXT:    movapd 48(%rdi), %xmm6
348 ; SSE-NEXT:    movapd 64(%rsi), %xmm9
349 ; SSE-NEXT:    movapd (%rsi), %xmm4
350 ; SSE-NEXT:    movapd 16(%rsi), %xmm7
351 ; SSE-NEXT:    movapd 32(%rsi), %xmm11
352 ; SSE-NEXT:    movapd 48(%rsi), %xmm10
353 ; SSE-NEXT:    movapd 64(%rdx), %xmm15
354 ; SSE-NEXT:    movapd (%rdx), %xmm0
355 ; SSE-NEXT:    movapd 16(%rdx), %xmm12
356 ; SSE-NEXT:    movapd 32(%rdx), %xmm13
357 ; SSE-NEXT:    movapd 48(%rdx), %xmm14
358 ; SSE-NEXT:    movapd %xmm1, %xmm8
359 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm8 = xmm8[0],xmm4[0]
360 ; SSE-NEXT:    movapd %xmm8, (%rsp) # 16-byte Spill
361 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
362 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
363 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm0[1]
364 ; SSE-NEXT:    movapd %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
365 ; SSE-NEXT:    movapd %xmm2, %xmm0
366 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm2 = xmm2[0],xmm7[0]
367 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
368 ; SSE-NEXT:    movsd {{.*#+}} xmm0 = xmm12[0],xmm0[1]
369 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
370 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm12[1]
371 ; SSE-NEXT:    movapd %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
372 ; SSE-NEXT:    movapd %xmm3, %xmm12
373 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm12 = xmm12[0],xmm11[0]
374 ; SSE-NEXT:    movsd {{.*#+}} xmm3 = xmm13[0],xmm3[1]
375 ; SSE-NEXT:    movapd %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
376 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm13[1]
377 ; SSE-NEXT:    movapd %xmm6, %xmm13
378 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm13 = xmm13[0],xmm10[0]
379 ; SSE-NEXT:    movsd {{.*#+}} xmm6 = xmm14[0],xmm6[1]
380 ; SSE-NEXT:    movapd %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
381 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm14[1]
382 ; SSE-NEXT:    movapd %xmm5, %xmm14
383 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm14 = xmm14[0],xmm9[0]
384 ; SSE-NEXT:    movsd {{.*#+}} xmm5 = xmm15[0],xmm5[1]
385 ; SSE-NEXT:    movapd %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
386 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm15[1]
387 ; SSE-NEXT:    movapd 80(%rdi), %xmm15
388 ; SSE-NEXT:    movapd 80(%rsi), %xmm7
389 ; SSE-NEXT:    movapd %xmm15, %xmm8
390 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm8 = xmm8[0],xmm7[0]
391 ; SSE-NEXT:    movapd 80(%rdx), %xmm0
392 ; SSE-NEXT:    movsd {{.*#+}} xmm15 = xmm0[0],xmm15[1]
393 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm0[1]
394 ; SSE-NEXT:    movapd 96(%rdi), %xmm4
395 ; SSE-NEXT:    movapd 96(%rsi), %xmm3
396 ; SSE-NEXT:    movapd %xmm4, %xmm6
397 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm6 = xmm6[0],xmm3[0]
398 ; SSE-NEXT:    movapd 96(%rdx), %xmm2
399 ; SSE-NEXT:    movsd {{.*#+}} xmm4 = xmm2[0],xmm4[1]
400 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm2[1]
401 ; SSE-NEXT:    movapd 112(%rdi), %xmm2
402 ; SSE-NEXT:    movapd 112(%rsi), %xmm0
403 ; SSE-NEXT:    movapd %xmm2, %xmm1
404 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0]
405 ; SSE-NEXT:    movapd 112(%rdx), %xmm5
406 ; SSE-NEXT:    movsd {{.*#+}} xmm2 = xmm5[0],xmm2[1]
407 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm5[1]
408 ; SSE-NEXT:    movapd %xmm0, 368(%rcx)
409 ; SSE-NEXT:    movapd %xmm2, 352(%rcx)
410 ; SSE-NEXT:    movapd %xmm1, 336(%rcx)
411 ; SSE-NEXT:    movapd %xmm3, 320(%rcx)
412 ; SSE-NEXT:    movapd %xmm4, 304(%rcx)
413 ; SSE-NEXT:    movapd %xmm6, 288(%rcx)
414 ; SSE-NEXT:    movapd %xmm7, 272(%rcx)
415 ; SSE-NEXT:    movapd %xmm15, 256(%rcx)
416 ; SSE-NEXT:    movapd %xmm8, 240(%rcx)
417 ; SSE-NEXT:    movapd %xmm9, 224(%rcx)
418 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
419 ; SSE-NEXT:    movaps %xmm0, 208(%rcx)
420 ; SSE-NEXT:    movapd %xmm14, 192(%rcx)
421 ; SSE-NEXT:    movapd %xmm10, 176(%rcx)
422 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
423 ; SSE-NEXT:    movaps %xmm0, 160(%rcx)
424 ; SSE-NEXT:    movapd %xmm13, 144(%rcx)
425 ; SSE-NEXT:    movapd %xmm11, 128(%rcx)
426 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
427 ; SSE-NEXT:    movaps %xmm0, 112(%rcx)
428 ; SSE-NEXT:    movapd %xmm12, 96(%rcx)
429 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
430 ; SSE-NEXT:    movaps %xmm0, 80(%rcx)
431 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
432 ; SSE-NEXT:    movaps %xmm0, 64(%rcx)
433 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
434 ; SSE-NEXT:    movaps %xmm0, 48(%rcx)
435 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
436 ; SSE-NEXT:    movaps %xmm0, 32(%rcx)
437 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
438 ; SSE-NEXT:    movaps %xmm0, 16(%rcx)
439 ; SSE-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload
440 ; SSE-NEXT:    movaps %xmm0, (%rcx)
441 ; SSE-NEXT:    addq $24, %rsp
442 ; SSE-NEXT:    retq
444 ; AVX1-ONLY-LABEL: store_i64_stride3_vf16:
445 ; AVX1-ONLY:       # %bb.0:
446 ; AVX1-ONLY-NEXT:    vmovapd (%rsi), %ymm6
447 ; AVX1-ONLY-NEXT:    vmovapd 32(%rsi), %ymm2
448 ; AVX1-ONLY-NEXT:    vmovapd 64(%rsi), %ymm5
449 ; AVX1-ONLY-NEXT:    vmovapd 96(%rsi), %ymm1
450 ; AVX1-ONLY-NEXT:    vmovapd (%rdx), %ymm9
451 ; AVX1-ONLY-NEXT:    vmovapd 32(%rdx), %ymm4
452 ; AVX1-ONLY-NEXT:    vmovapd 64(%rdx), %ymm8
453 ; AVX1-ONLY-NEXT:    vmovapd 96(%rdx), %ymm3
454 ; AVX1-ONLY-NEXT:    vmovaps (%rdi), %xmm0
455 ; AVX1-ONLY-NEXT:    vmovaps 32(%rdi), %xmm10
456 ; AVX1-ONLY-NEXT:    vmovapd 48(%rdi), %xmm13
457 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm7 = xmm0[0],mem[0]
458 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm7, %ymm0
459 ; AVX1-ONLY-NEXT:    vinsertf128 $1, (%rdx), %ymm7, %ymm7
460 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm7[0,1],ymm0[2,3],ymm7[4,5],ymm0[6,7]
461 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
462 ; AVX1-ONLY-NEXT:    vmovaps 64(%rdi), %xmm7
463 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm11 = xmm7[0],mem[0]
464 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm11, %ymm7
465 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 64(%rdx), %ymm11, %ymm11
466 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm7 = ymm11[0,1],ymm7[2,3],ymm11[4,5],ymm7[6,7]
467 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm11 = xmm10[0],mem[0]
468 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm10, %ymm11, %ymm10
469 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 32(%rdx), %ymm11, %ymm11
470 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm10 = ymm11[0,1],ymm10[2,3],ymm11[4,5],ymm10[6,7]
471 ; AVX1-ONLY-NEXT:    vmovaps 96(%rdi), %xmm11
472 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm12 = xmm11[0],mem[0]
473 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm11, %ymm12, %ymm11
474 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 96(%rdx), %ymm12, %ymm12
475 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm11 = ymm12[0,1],ymm11[2,3],ymm12[4,5],ymm11[6,7]
476 ; AVX1-ONLY-NEXT:    vmovapd 80(%rdi), %xmm12
477 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm12 = ymm12[0,1],ymm8[2,3]
478 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm14 = ymm5[0,0,3,2]
479 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm14 = ymm8[2,3],ymm14[2,3]
480 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm12 = ymm14[0],ymm12[1],ymm14[2],ymm12[3]
481 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm13 = ymm13[0,1],ymm4[2,3]
482 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm14 = ymm2[0,0,3,2]
483 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm14 = ymm4[2,3],ymm14[2,3]
484 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm13 = ymm14[0],ymm13[1],ymm14[2],ymm13[3]
485 ; AVX1-ONLY-NEXT:    vmovapd 112(%rdi), %xmm14
486 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm14 = ymm14[0,1],ymm3[2,3]
487 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm15 = ymm1[0,0,3,2]
488 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm15 = ymm3[2,3],ymm15[2,3]
489 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm14 = ymm15[0],ymm14[1],ymm15[2],ymm14[3]
490 ; AVX1-ONLY-NEXT:    vmovapd 16(%rdi), %xmm15
491 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm15 = ymm15[0,1],ymm9[2,3]
492 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm0 = ymm6[0,0,3,2]
493 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm0 = ymm9[2,3],ymm0[2,3]
494 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0],ymm15[1],ymm0[2],ymm15[3]
495 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm6 = ymm6[1,0,2,2]
496 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm6 = ymm6[0,1],mem[2],ymm6[3]
497 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm6 = ymm6[0],ymm9[1],ymm6[2,3]
498 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm5 = ymm5[1,0,2,2]
499 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm5 = ymm5[0,1],mem[2],ymm5[3]
500 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm5 = ymm5[0],ymm8[1],ymm5[2,3]
501 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm2 = ymm2[1,0,2,2]
502 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm2 = ymm2[0,1],mem[2],ymm2[3]
503 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm2 = ymm2[0],ymm4[1],ymm2[2,3]
504 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[1,0,2,2]
505 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm1 = ymm1[0,1],mem[2],ymm1[3]
506 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm1 = ymm1[0],ymm3[1],ymm1[2,3]
507 ; AVX1-ONLY-NEXT:    vmovapd %ymm0, 64(%rcx)
508 ; AVX1-ONLY-NEXT:    vmovapd %ymm14, 352(%rcx)
509 ; AVX1-ONLY-NEXT:    vmovapd %ymm1, 320(%rcx)
510 ; AVX1-ONLY-NEXT:    vmovapd %ymm13, 160(%rcx)
511 ; AVX1-ONLY-NEXT:    vmovapd %ymm2, 128(%rcx)
512 ; AVX1-ONLY-NEXT:    vmovapd %ymm5, 224(%rcx)
513 ; AVX1-ONLY-NEXT:    vmovapd %ymm12, 256(%rcx)
514 ; AVX1-ONLY-NEXT:    vmovapd %ymm6, 32(%rcx)
515 ; AVX1-ONLY-NEXT:    vmovaps %ymm11, 288(%rcx)
516 ; AVX1-ONLY-NEXT:    vmovaps %ymm10, 96(%rcx)
517 ; AVX1-ONLY-NEXT:    vmovaps %ymm7, 192(%rcx)
518 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
519 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, (%rcx)
520 ; AVX1-ONLY-NEXT:    vzeroupper
521 ; AVX1-ONLY-NEXT:    retq
523 ; AVX2-ONLY-LABEL: store_i64_stride3_vf16:
524 ; AVX2-ONLY:       # %bb.0:
525 ; AVX2-ONLY-NEXT:    vmovaps (%rdi), %ymm0
526 ; AVX2-ONLY-NEXT:    vmovaps 32(%rdi), %ymm7
527 ; AVX2-ONLY-NEXT:    vmovaps 64(%rdi), %ymm8
528 ; AVX2-ONLY-NEXT:    vmovaps 96(%rdi), %ymm3
529 ; AVX2-ONLY-NEXT:    vmovaps (%rsi), %ymm1
530 ; AVX2-ONLY-NEXT:    vmovaps 32(%rsi), %ymm10
531 ; AVX2-ONLY-NEXT:    vmovaps 64(%rsi), %ymm9
532 ; AVX2-ONLY-NEXT:    vmovaps 96(%rsi), %ymm6
533 ; AVX2-ONLY-NEXT:    vmovaps 64(%rdx), %ymm11
534 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = mem[0,0]
535 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm4 = ymm0[0,1,2,1]
536 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5,6,7]
537 ; AVX2-ONLY-NEXT:    vbroadcastsd (%rdx), %ymm4
538 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4,5],ymm2[6,7]
539 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm4 = ymm8[1],ymm9[1],ymm8[3],ymm9[3]
540 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm4 = ymm4[0,2,3,3]
541 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm5 = ymm11[2,1,2,3]
542 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3,4,5],ymm5[6,7]
543 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm5 = mem[0,0]
544 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm12 = ymm8[0,1,2,1]
545 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm5 = ymm12[0,1],ymm5[2,3],ymm12[4,5,6,7]
546 ; AVX2-ONLY-NEXT:    vbroadcastsd 64(%rdx), %ymm12
547 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm12[4,5],ymm5[6,7]
548 ; AVX2-ONLY-NEXT:    vmovaps 32(%rdx), %ymm12
549 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm9 = ymm9[2,3,0,1,6,7,4,5]
550 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm8 = ymm9[0,1,2,3],ymm8[4,5],ymm9[6,7]
551 ; AVX2-ONLY-NEXT:    vmovaps 96(%rdx), %ymm13
552 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm8 = ymm8[0,1],ymm11[2,3],ymm8[4,5,6,7]
553 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm9 = ymm10[2,3,0,1,6,7,4,5]
554 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm9 = ymm9[0,1,2,3],ymm7[4,5],ymm9[6,7]
555 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm9 = ymm9[0,1],ymm12[2,3],ymm9[4,5,6,7]
556 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm10 = ymm7[1],ymm10[1],ymm7[3],ymm10[3]
557 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm10 = ymm10[0,2,3,3]
558 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm11 = ymm12[2,1,2,3]
559 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm10 = ymm11[0,1],ymm10[2,3,4,5],ymm11[6,7]
560 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm11 = mem[0,0]
561 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm7 = ymm7[0,1,2,1]
562 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm7 = ymm7[0,1],ymm11[2,3],ymm7[4,5,6,7]
563 ; AVX2-ONLY-NEXT:    vbroadcastsd 32(%rdx), %ymm11
564 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm11[4,5],ymm7[6,7]
565 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm11 = ymm6[2,3,0,1,6,7,4,5]
566 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm11 = ymm11[0,1,2,3],ymm3[4,5],ymm11[6,7]
567 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm11 = ymm11[0,1],ymm13[2,3],ymm11[4,5,6,7]
568 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm6 = ymm3[1],ymm6[1],ymm3[3],ymm6[3]
569 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm6 = ymm6[0,2,3,3]
570 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm12 = ymm13[2,1,2,3]
571 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm6 = ymm12[0,1],ymm6[2,3,4,5],ymm12[6,7]
572 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm12 = mem[0,0]
573 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm3 = ymm3[0,1,2,1]
574 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1],ymm12[2,3],ymm3[4,5,6,7]
575 ; AVX2-ONLY-NEXT:    vbroadcastsd 96(%rdx), %ymm12
576 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm12[4,5],ymm3[6,7]
577 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm12 = ymm1[2,3,0,1,6,7,4,5]
578 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm12 = ymm12[0,1,2,3],ymm0[4,5],ymm12[6,7]
579 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
580 ; AVX2-ONLY-NEXT:    vmovaps (%rdx), %ymm1
581 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm12 = ymm12[0,1],ymm1[2,3],ymm12[4,5,6,7]
582 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
583 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
584 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
585 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 64(%rcx)
586 ; AVX2-ONLY-NEXT:    vmovaps %ymm3, 288(%rcx)
587 ; AVX2-ONLY-NEXT:    vmovaps %ymm6, 352(%rcx)
588 ; AVX2-ONLY-NEXT:    vmovaps %ymm11, 320(%rcx)
589 ; AVX2-ONLY-NEXT:    vmovaps %ymm7, 96(%rcx)
590 ; AVX2-ONLY-NEXT:    vmovaps %ymm10, 160(%rcx)
591 ; AVX2-ONLY-NEXT:    vmovaps %ymm9, 128(%rcx)
592 ; AVX2-ONLY-NEXT:    vmovaps %ymm8, 224(%rcx)
593 ; AVX2-ONLY-NEXT:    vmovaps %ymm5, 192(%rcx)
594 ; AVX2-ONLY-NEXT:    vmovaps %ymm4, 256(%rcx)
595 ; AVX2-ONLY-NEXT:    vmovaps %ymm2, (%rcx)
596 ; AVX2-ONLY-NEXT:    vmovaps %ymm12, 32(%rcx)
597 ; AVX2-ONLY-NEXT:    vzeroupper
598 ; AVX2-ONLY-NEXT:    retq
600 ; AVX512-LABEL: store_i64_stride3_vf16:
601 ; AVX512:       # %bb.0:
602 ; AVX512-NEXT:    vmovdqa64 (%rdi), %zmm0
603 ; AVX512-NEXT:    vmovdqa64 64(%rdi), %zmm1
604 ; AVX512-NEXT:    vmovdqa64 (%rsi), %zmm2
605 ; AVX512-NEXT:    vmovdqa64 64(%rsi), %zmm3
606 ; AVX512-NEXT:    vmovdqa64 (%rdx), %zmm4
607 ; AVX512-NEXT:    vmovdqa64 64(%rdx), %zmm5
608 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm6 = <0,8,u,1,9,u,2,10>
609 ; AVX512-NEXT:    vmovdqa64 %zmm0, %zmm7
610 ; AVX512-NEXT:    vpermt2q %zmm2, %zmm6, %zmm7
611 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [0,1,8,3,4,9,6,7]
612 ; AVX512-NEXT:    vpermt2q %zmm4, %zmm8, %zmm7
613 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm9 = <5,u,14,6,u,15,7,u>
614 ; AVX512-NEXT:    vmovdqa64 %zmm3, %zmm10
615 ; AVX512-NEXT:    vpermt2q %zmm1, %zmm9, %zmm10
616 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm11 = [0,13,2,3,14,5,6,15]
617 ; AVX512-NEXT:    vpermt2q %zmm5, %zmm11, %zmm10
618 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm12 = <u,3,11,u,4,12,u,5>
619 ; AVX512-NEXT:    vmovdqa64 %zmm1, %zmm13
620 ; AVX512-NEXT:    vpermt2q %zmm3, %zmm12, %zmm13
621 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm14 = [10,1,2,11,4,5,12,7]
622 ; AVX512-NEXT:    vpermt2q %zmm5, %zmm14, %zmm13
623 ; AVX512-NEXT:    vpermt2q %zmm3, %zmm6, %zmm1
624 ; AVX512-NEXT:    vpermt2q %zmm5, %zmm8, %zmm1
625 ; AVX512-NEXT:    vpermi2q %zmm0, %zmm2, %zmm9
626 ; AVX512-NEXT:    vpermt2q %zmm4, %zmm11, %zmm9
627 ; AVX512-NEXT:    vpermt2q %zmm2, %zmm12, %zmm0
628 ; AVX512-NEXT:    vpermt2q %zmm4, %zmm14, %zmm0
629 ; AVX512-NEXT:    vmovdqa64 %zmm0, 64(%rcx)
630 ; AVX512-NEXT:    vmovdqa64 %zmm9, 128(%rcx)
631 ; AVX512-NEXT:    vmovdqa64 %zmm1, 192(%rcx)
632 ; AVX512-NEXT:    vmovdqa64 %zmm13, 256(%rcx)
633 ; AVX512-NEXT:    vmovdqa64 %zmm10, 320(%rcx)
634 ; AVX512-NEXT:    vmovdqa64 %zmm7, (%rcx)
635 ; AVX512-NEXT:    vzeroupper
636 ; AVX512-NEXT:    retq
637   %in.vec0 = load <16 x i64>, ptr %in.vecptr0, align 64
638   %in.vec1 = load <16 x i64>, ptr %in.vecptr1, align 64
639   %in.vec2 = load <16 x i64>, ptr %in.vecptr2, align 64
640   %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>
641   %2 = shufflevector <16 x i64> %in.vec2, <16 x i64> poison, <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 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
642   %3 = shufflevector <32 x i64> %1, <32 x i64> %2, <48 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>
643   %interleaved.vec = shufflevector <48 x i64> %3, <48 x i64> poison, <48 x i32> <i32 0, i32 16, i32 32, i32 1, i32 17, i32 33, i32 2, i32 18, i32 34, i32 3, i32 19, i32 35, i32 4, i32 20, i32 36, i32 5, i32 21, i32 37, i32 6, i32 22, i32 38, i32 7, i32 23, i32 39, i32 8, i32 24, i32 40, i32 9, i32 25, i32 41, i32 10, i32 26, i32 42, i32 11, i32 27, i32 43, i32 12, i32 28, i32 44, i32 13, i32 29, i32 45, i32 14, i32 30, i32 46, i32 15, i32 31, i32 47>
644   store <48 x i64> %interleaved.vec, ptr %out.vec, align 64
645   ret void
648 define void @store_i64_stride3_vf32(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %out.vec) nounwind {
649 ; SSE-LABEL: store_i64_stride3_vf32:
650 ; SSE:       # %bb.0:
651 ; SSE-NEXT:    subq $408, %rsp # imm = 0x198
652 ; SSE-NEXT:    movapd 64(%rdi), %xmm8
653 ; SSE-NEXT:    movapd (%rdi), %xmm5
654 ; SSE-NEXT:    movapd 16(%rdi), %xmm6
655 ; SSE-NEXT:    movapd 32(%rdi), %xmm7
656 ; SSE-NEXT:    movapd 48(%rdi), %xmm9
657 ; SSE-NEXT:    movapd 64(%rsi), %xmm13
658 ; SSE-NEXT:    movapd (%rsi), %xmm10
659 ; SSE-NEXT:    movapd 16(%rsi), %xmm11
660 ; SSE-NEXT:    movapd 32(%rsi), %xmm12
661 ; SSE-NEXT:    movapd 48(%rsi), %xmm14
662 ; SSE-NEXT:    movapd 64(%rdx), %xmm0
663 ; SSE-NEXT:    movapd (%rdx), %xmm1
664 ; SSE-NEXT:    movapd 16(%rdx), %xmm2
665 ; SSE-NEXT:    movapd 32(%rdx), %xmm3
666 ; SSE-NEXT:    movapd 48(%rdx), %xmm4
667 ; SSE-NEXT:    movapd %xmm5, %xmm15
668 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm15 = xmm15[0],xmm10[0]
669 ; SSE-NEXT:    movapd %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
670 ; SSE-NEXT:    movsd {{.*#+}} xmm5 = xmm1[0],xmm5[1]
671 ; SSE-NEXT:    movapd %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
672 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm1[1]
673 ; SSE-NEXT:    movapd %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
674 ; SSE-NEXT:    movapd %xmm6, %xmm5
675 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm5 = xmm5[0],xmm11[0]
676 ; SSE-NEXT:    movapd %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
677 ; SSE-NEXT:    movsd {{.*#+}} xmm6 = xmm2[0],xmm6[1]
678 ; SSE-NEXT:    movapd %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
679 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm2[1]
680 ; SSE-NEXT:    movapd %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
681 ; SSE-NEXT:    movapd %xmm7, %xmm2
682 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm2 = xmm2[0],xmm12[0]
683 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
684 ; SSE-NEXT:    movsd {{.*#+}} xmm7 = xmm3[0],xmm7[1]
685 ; SSE-NEXT:    movapd %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
686 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm3[1]
687 ; SSE-NEXT:    movapd %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
688 ; SSE-NEXT:    movapd %xmm9, %xmm1
689 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm14[0]
690 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
691 ; SSE-NEXT:    movsd {{.*#+}} xmm9 = xmm4[0],xmm9[1]
692 ; SSE-NEXT:    movapd %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
693 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm4[1]
694 ; SSE-NEXT:    movapd %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
695 ; SSE-NEXT:    movapd %xmm8, %xmm1
696 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm13[0]
697 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
698 ; SSE-NEXT:    movsd {{.*#+}} xmm8 = xmm0[0],xmm8[1]
699 ; SSE-NEXT:    movapd %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
700 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]
701 ; SSE-NEXT:    movapd %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
702 ; SSE-NEXT:    movapd 80(%rdi), %xmm1
703 ; SSE-NEXT:    movapd 80(%rsi), %xmm2
704 ; SSE-NEXT:    movapd %xmm1, %xmm0
705 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
706 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
707 ; SSE-NEXT:    movapd 80(%rdx), %xmm0
708 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
709 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
710 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
711 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
712 ; SSE-NEXT:    movapd 96(%rdi), %xmm1
713 ; SSE-NEXT:    movapd 96(%rsi), %xmm2
714 ; SSE-NEXT:    movapd %xmm1, %xmm0
715 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
716 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
717 ; SSE-NEXT:    movapd 96(%rdx), %xmm0
718 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
719 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
720 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
721 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
722 ; SSE-NEXT:    movapd 112(%rdi), %xmm1
723 ; SSE-NEXT:    movapd 112(%rsi), %xmm2
724 ; SSE-NEXT:    movapd %xmm1, %xmm0
725 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
726 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
727 ; SSE-NEXT:    movapd 112(%rdx), %xmm0
728 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
729 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
730 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
731 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
732 ; SSE-NEXT:    movapd 128(%rdi), %xmm1
733 ; SSE-NEXT:    movapd 128(%rsi), %xmm2
734 ; SSE-NEXT:    movapd %xmm1, %xmm0
735 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
736 ; SSE-NEXT:    movapd %xmm0, (%rsp) # 16-byte Spill
737 ; SSE-NEXT:    movapd 128(%rdx), %xmm0
738 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
739 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
740 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
741 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
742 ; SSE-NEXT:    movapd 144(%rdi), %xmm1
743 ; SSE-NEXT:    movapd 144(%rsi), %xmm2
744 ; SSE-NEXT:    movapd %xmm1, %xmm0
745 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
746 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
747 ; SSE-NEXT:    movapd 144(%rdx), %xmm0
748 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
749 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
750 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
751 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
752 ; SSE-NEXT:    movapd 160(%rdi), %xmm1
753 ; SSE-NEXT:    movapd 160(%rsi), %xmm15
754 ; SSE-NEXT:    movapd %xmm1, %xmm0
755 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm15[0]
756 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
757 ; SSE-NEXT:    movapd 160(%rdx), %xmm0
758 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
759 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
760 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]
761 ; SSE-NEXT:    movapd 176(%rdi), %xmm13
762 ; SSE-NEXT:    movapd 176(%rsi), %xmm12
763 ; SSE-NEXT:    movapd %xmm13, %xmm0
764 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm12[0]
765 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
766 ; SSE-NEXT:    movapd 176(%rdx), %xmm0
767 ; SSE-NEXT:    movsd {{.*#+}} xmm13 = xmm0[0],xmm13[1]
768 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm0[1]
769 ; SSE-NEXT:    movapd 192(%rdi), %xmm9
770 ; SSE-NEXT:    movapd 192(%rsi), %xmm8
771 ; SSE-NEXT:    movapd %xmm9, %xmm14
772 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm14 = xmm14[0],xmm8[0]
773 ; SSE-NEXT:    movapd 192(%rdx), %xmm0
774 ; SSE-NEXT:    movsd {{.*#+}} xmm9 = xmm0[0],xmm9[1]
775 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm0[1]
776 ; SSE-NEXT:    movapd 208(%rdi), %xmm10
777 ; SSE-NEXT:    movapd 208(%rsi), %xmm7
778 ; SSE-NEXT:    movapd %xmm10, %xmm11
779 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm11 = xmm11[0],xmm7[0]
780 ; SSE-NEXT:    movapd 208(%rdx), %xmm0
781 ; SSE-NEXT:    movsd {{.*#+}} xmm10 = xmm0[0],xmm10[1]
782 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm0[1]
783 ; SSE-NEXT:    movapd 224(%rdi), %xmm4
784 ; SSE-NEXT:    movapd 224(%rsi), %xmm3
785 ; SSE-NEXT:    movapd %xmm4, %xmm6
786 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm6 = xmm6[0],xmm3[0]
787 ; SSE-NEXT:    movapd 224(%rdx), %xmm2
788 ; SSE-NEXT:    movsd {{.*#+}} xmm4 = xmm2[0],xmm4[1]
789 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm2[1]
790 ; SSE-NEXT:    movapd 240(%rdi), %xmm2
791 ; SSE-NEXT:    movapd 240(%rsi), %xmm0
792 ; SSE-NEXT:    movapd %xmm2, %xmm1
793 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0]
794 ; SSE-NEXT:    movapd 240(%rdx), %xmm5
795 ; SSE-NEXT:    movsd {{.*#+}} xmm2 = xmm5[0],xmm2[1]
796 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm5[1]
797 ; SSE-NEXT:    movapd %xmm0, 752(%rcx)
798 ; SSE-NEXT:    movapd %xmm2, 736(%rcx)
799 ; SSE-NEXT:    movapd %xmm1, 720(%rcx)
800 ; SSE-NEXT:    movapd %xmm3, 704(%rcx)
801 ; SSE-NEXT:    movapd %xmm4, 688(%rcx)
802 ; SSE-NEXT:    movapd %xmm6, 672(%rcx)
803 ; SSE-NEXT:    movapd %xmm7, 656(%rcx)
804 ; SSE-NEXT:    movapd %xmm10, 640(%rcx)
805 ; SSE-NEXT:    movapd %xmm11, 624(%rcx)
806 ; SSE-NEXT:    movapd %xmm8, 608(%rcx)
807 ; SSE-NEXT:    movapd %xmm9, 592(%rcx)
808 ; SSE-NEXT:    movapd %xmm14, 576(%rcx)
809 ; SSE-NEXT:    movapd %xmm12, 560(%rcx)
810 ; SSE-NEXT:    movapd %xmm13, 544(%rcx)
811 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
812 ; SSE-NEXT:    movaps %xmm0, 528(%rcx)
813 ; SSE-NEXT:    movapd %xmm15, 512(%rcx)
814 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
815 ; SSE-NEXT:    movaps %xmm0, 496(%rcx)
816 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
817 ; SSE-NEXT:    movaps %xmm0, 480(%rcx)
818 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
819 ; SSE-NEXT:    movaps %xmm0, 464(%rcx)
820 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
821 ; SSE-NEXT:    movaps %xmm0, 448(%rcx)
822 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
823 ; SSE-NEXT:    movaps %xmm0, 432(%rcx)
824 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
825 ; SSE-NEXT:    movaps %xmm0, 416(%rcx)
826 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
827 ; SSE-NEXT:    movaps %xmm0, 400(%rcx)
828 ; SSE-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload
829 ; SSE-NEXT:    movaps %xmm0, 384(%rcx)
830 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
831 ; SSE-NEXT:    movaps %xmm0, 368(%rcx)
832 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
833 ; SSE-NEXT:    movaps %xmm0, 352(%rcx)
834 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
835 ; SSE-NEXT:    movaps %xmm0, 336(%rcx)
836 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
837 ; SSE-NEXT:    movaps %xmm0, 320(%rcx)
838 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
839 ; SSE-NEXT:    movaps %xmm0, 304(%rcx)
840 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
841 ; SSE-NEXT:    movaps %xmm0, 288(%rcx)
842 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
843 ; SSE-NEXT:    movaps %xmm0, 272(%rcx)
844 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
845 ; SSE-NEXT:    movaps %xmm0, 256(%rcx)
846 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
847 ; SSE-NEXT:    movaps %xmm0, 240(%rcx)
848 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
849 ; SSE-NEXT:    movaps %xmm0, 224(%rcx)
850 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
851 ; SSE-NEXT:    movaps %xmm0, 208(%rcx)
852 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
853 ; SSE-NEXT:    movaps %xmm0, 192(%rcx)
854 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
855 ; SSE-NEXT:    movaps %xmm0, 176(%rcx)
856 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
857 ; SSE-NEXT:    movaps %xmm0, 160(%rcx)
858 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
859 ; SSE-NEXT:    movaps %xmm0, 144(%rcx)
860 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
861 ; SSE-NEXT:    movaps %xmm0, 128(%rcx)
862 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
863 ; SSE-NEXT:    movaps %xmm0, 112(%rcx)
864 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
865 ; SSE-NEXT:    movaps %xmm0, 96(%rcx)
866 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
867 ; SSE-NEXT:    movaps %xmm0, 80(%rcx)
868 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
869 ; SSE-NEXT:    movaps %xmm0, 64(%rcx)
870 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
871 ; SSE-NEXT:    movaps %xmm0, 48(%rcx)
872 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
873 ; SSE-NEXT:    movaps %xmm0, 32(%rcx)
874 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
875 ; SSE-NEXT:    movaps %xmm0, 16(%rcx)
876 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
877 ; SSE-NEXT:    movaps %xmm0, (%rcx)
878 ; SSE-NEXT:    addq $408, %rsp # imm = 0x198
879 ; SSE-NEXT:    retq
881 ; AVX1-ONLY-LABEL: store_i64_stride3_vf32:
882 ; AVX1-ONLY:       # %bb.0:
883 ; AVX1-ONLY-NEXT:    subq $424, %rsp # imm = 0x1A8
884 ; AVX1-ONLY-NEXT:    vmovapd (%rsi), %ymm6
885 ; AVX1-ONLY-NEXT:    vmovupd %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
886 ; AVX1-ONLY-NEXT:    vmovapd 32(%rsi), %ymm5
887 ; AVX1-ONLY-NEXT:    vmovupd %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
888 ; AVX1-ONLY-NEXT:    vmovapd (%rdx), %ymm11
889 ; AVX1-ONLY-NEXT:    vmovapd 32(%rdx), %ymm13
890 ; AVX1-ONLY-NEXT:    vmovapd 64(%rdx), %ymm7
891 ; AVX1-ONLY-NEXT:    vmovaps (%rdi), %xmm2
892 ; AVX1-ONLY-NEXT:    vmovapd 16(%rdi), %xmm1
893 ; AVX1-ONLY-NEXT:    vmovaps 32(%rdi), %xmm3
894 ; AVX1-ONLY-NEXT:    vmovapd 48(%rdi), %xmm0
895 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm4 = xmm2[0],mem[0]
896 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm2
897 ; AVX1-ONLY-NEXT:    vinsertf128 $1, (%rdx), %ymm4, %ymm4
898 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5],ymm2[6,7]
899 ; AVX1-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
900 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm2 = xmm3[0],mem[0]
901 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm2, %ymm3
902 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 32(%rdx), %ymm2, %ymm2
903 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm3[2,3],ymm2[4,5],ymm3[6,7]
904 ; AVX1-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
905 ; AVX1-ONLY-NEXT:    vmovaps 64(%rdi), %xmm2
906 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm3 = xmm2[0],mem[0]
907 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2
908 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 64(%rdx), %ymm3, %ymm3
909 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]
910 ; AVX1-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
911 ; AVX1-ONLY-NEXT:    vmovaps 96(%rdi), %xmm2
912 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm3 = xmm2[0],mem[0]
913 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2
914 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 96(%rdx), %ymm3, %ymm3
915 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]
916 ; AVX1-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
917 ; AVX1-ONLY-NEXT:    vmovaps 128(%rdi), %xmm2
918 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm3 = xmm2[0],mem[0]
919 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2
920 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 128(%rdx), %ymm3, %ymm3
921 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]
922 ; AVX1-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
923 ; AVX1-ONLY-NEXT:    vmovaps 160(%rdi), %xmm2
924 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm3 = xmm2[0],mem[0]
925 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2
926 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 160(%rdx), %ymm3, %ymm3
927 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]
928 ; AVX1-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
929 ; AVX1-ONLY-NEXT:    vmovaps 192(%rdi), %xmm2
930 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm3 = xmm2[0],mem[0]
931 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2
932 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 192(%rdx), %ymm3, %ymm3
933 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]
934 ; AVX1-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
935 ; AVX1-ONLY-NEXT:    vmovaps 224(%rdi), %xmm2
936 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm3 = xmm2[0],mem[0]
937 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2
938 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 224(%rdx), %ymm3, %ymm3
939 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]
940 ; AVX1-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
941 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm1 = ymm1[0,1],ymm11[2,3]
942 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm2 = ymm6[0,0,3,2]
943 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm2 = ymm11[2,3],ymm2[2,3]
944 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2],ymm1[3]
945 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
946 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm13[2,3]
947 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm5[0,0,3,2]
948 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm13[2,3],ymm1[2,3]
949 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
950 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
951 ; AVX1-ONLY-NEXT:    vmovapd 80(%rdi), %xmm0
952 ; AVX1-ONLY-NEXT:    vmovupd %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
953 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm7[2,3]
954 ; AVX1-ONLY-NEXT:    vmovapd 64(%rsi), %ymm10
955 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm10[0,0,3,2]
956 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm7[2,3],ymm1[2,3]
957 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
958 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
959 ; AVX1-ONLY-NEXT:    vmovapd 96(%rdx), %ymm5
960 ; AVX1-ONLY-NEXT:    vmovapd 112(%rdi), %xmm0
961 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm5[2,3]
962 ; AVX1-ONLY-NEXT:    vmovapd 96(%rsi), %ymm9
963 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm9[0,0,3,2]
964 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm5[2,3],ymm1[2,3]
965 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
966 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
967 ; AVX1-ONLY-NEXT:    vmovapd 128(%rdx), %ymm3
968 ; AVX1-ONLY-NEXT:    vmovapd 144(%rdi), %xmm0
969 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm3[2,3]
970 ; AVX1-ONLY-NEXT:    vmovapd 128(%rsi), %ymm7
971 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm7[0,0,3,2]
972 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm3[2,3],ymm1[2,3]
973 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
974 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, (%rsp) # 32-byte Spill
975 ; AVX1-ONLY-NEXT:    vmovapd 160(%rdx), %ymm1
976 ; AVX1-ONLY-NEXT:    vmovapd 176(%rdi), %xmm0
977 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3]
978 ; AVX1-ONLY-NEXT:    vmovapd 160(%rsi), %ymm6
979 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm8 = ymm6[0,0,3,2]
980 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm8 = ymm1[2,3],ymm8[2,3]
981 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm8[0],ymm0[1],ymm8[2],ymm0[3]
982 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
983 ; AVX1-ONLY-NEXT:    vmovapd 192(%rdx), %ymm0
984 ; AVX1-ONLY-NEXT:    vmovapd 208(%rdi), %xmm8
985 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm8 = ymm8[0,1],ymm0[2,3]
986 ; AVX1-ONLY-NEXT:    vmovapd 192(%rsi), %ymm4
987 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm15 = ymm4[0,0,3,2]
988 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm15 = ymm0[2,3],ymm15[2,3]
989 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm8 = ymm15[0],ymm8[1],ymm15[2],ymm8[3]
990 ; AVX1-ONLY-NEXT:    vmovapd 224(%rdx), %ymm15
991 ; AVX1-ONLY-NEXT:    vmovapd 240(%rdi), %xmm14
992 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm14 = ymm14[0,1],ymm15[2,3]
993 ; AVX1-ONLY-NEXT:    vmovapd 224(%rsi), %ymm2
994 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm12 = ymm2[0,0,3,2]
995 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm12 = ymm15[2,3],ymm12[2,3]
996 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm12 = ymm12[0],ymm14[1],ymm12[2],ymm14[3]
997 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload
998 ; AVX1-ONLY-NEXT:    # ymm14 = mem[1,0,2,2]
999 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm14 = ymm14[0,1],mem[2],ymm14[3]
1000 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm11 = ymm14[0],ymm11[1],ymm14[2,3]
1001 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload
1002 ; AVX1-ONLY-NEXT:    # ymm14 = mem[1,0,2,2]
1003 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm14 = ymm14[0,1],mem[2],ymm14[3]
1004 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm13 = ymm14[0],ymm13[1],ymm14[2,3]
1005 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm10 = ymm10[1,0,2,2]
1006 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm10 = ymm10[0,1],mem[2],ymm10[3]
1007 ; AVX1-ONLY-NEXT:    vblendpd $2, {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm10 # 32-byte Folded Reload
1008 ; AVX1-ONLY-NEXT:    # ymm10 = ymm10[0],mem[1],ymm10[2,3]
1009 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm9 = ymm9[1,0,2,2]
1010 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm9 = ymm9[0,1],mem[2],ymm9[3]
1011 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm5 = ymm9[0],ymm5[1],ymm9[2,3]
1012 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm7 = ymm7[1,0,2,2]
1013 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm7 = ymm7[0,1],mem[2],ymm7[3]
1014 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm3 = ymm7[0],ymm3[1],ymm7[2,3]
1015 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm6 = ymm6[1,0,2,2]
1016 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm6 = ymm6[0,1],mem[2],ymm6[3]
1017 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm1 = ymm6[0],ymm1[1],ymm6[2,3]
1018 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm4 = ymm4[1,0,2,2]
1019 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm4 = ymm4[0,1],mem[2],ymm4[3]
1020 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm4[0],ymm0[1],ymm4[2,3]
1021 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm2 = ymm2[1,0,2,2]
1022 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm2 = ymm2[0,1],mem[2],ymm2[3]
1023 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm2 = ymm2[0],ymm15[1],ymm2[2,3]
1024 ; AVX1-ONLY-NEXT:    vmovapd %ymm12, 736(%rcx)
1025 ; AVX1-ONLY-NEXT:    vmovapd %ymm2, 704(%rcx)
1026 ; AVX1-ONLY-NEXT:    vmovapd %ymm8, 640(%rcx)
1027 ; AVX1-ONLY-NEXT:    vmovapd %ymm0, 608(%rcx)
1028 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1029 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 544(%rcx)
1030 ; AVX1-ONLY-NEXT:    vmovapd %ymm1, 512(%rcx)
1031 ; AVX1-ONLY-NEXT:    vmovups (%rsp), %ymm0 # 32-byte Reload
1032 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 448(%rcx)
1033 ; AVX1-ONLY-NEXT:    vmovapd %ymm3, 416(%rcx)
1034 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1035 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 352(%rcx)
1036 ; AVX1-ONLY-NEXT:    vmovapd %ymm5, 320(%rcx)
1037 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1038 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 256(%rcx)
1039 ; AVX1-ONLY-NEXT:    vmovapd %ymm10, 224(%rcx)
1040 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1041 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 160(%rcx)
1042 ; AVX1-ONLY-NEXT:    vmovapd %ymm13, 128(%rcx)
1043 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1044 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 64(%rcx)
1045 ; AVX1-ONLY-NEXT:    vmovapd %ymm11, 32(%rcx)
1046 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1047 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 672(%rcx)
1048 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1049 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 576(%rcx)
1050 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1051 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 480(%rcx)
1052 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1053 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 384(%rcx)
1054 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1055 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 288(%rcx)
1056 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1057 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 192(%rcx)
1058 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1059 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 96(%rcx)
1060 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1061 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, (%rcx)
1062 ; AVX1-ONLY-NEXT:    addq $424, %rsp # imm = 0x1A8
1063 ; AVX1-ONLY-NEXT:    vzeroupper
1064 ; AVX1-ONLY-NEXT:    retq
1066 ; AVX2-ONLY-LABEL: store_i64_stride3_vf32:
1067 ; AVX2-ONLY:       # %bb.0:
1068 ; AVX2-ONLY-NEXT:    subq $168, %rsp
1069 ; AVX2-ONLY-NEXT:    vmovaps 128(%rdi), %ymm11
1070 ; AVX2-ONLY-NEXT:    vmovaps (%rdi), %ymm2
1071 ; AVX2-ONLY-NEXT:    vmovaps 32(%rdi), %ymm0
1072 ; AVX2-ONLY-NEXT:    vmovaps 64(%rdi), %ymm8
1073 ; AVX2-ONLY-NEXT:    vmovaps 96(%rdi), %ymm12
1074 ; AVX2-ONLY-NEXT:    vmovaps 128(%rsi), %ymm13
1075 ; AVX2-ONLY-NEXT:    vmovaps (%rsi), %ymm3
1076 ; AVX2-ONLY-NEXT:    vmovaps 32(%rsi), %ymm5
1077 ; AVX2-ONLY-NEXT:    vmovaps 64(%rsi), %ymm9
1078 ; AVX2-ONLY-NEXT:    vmovaps 96(%rsi), %ymm14
1079 ; AVX2-ONLY-NEXT:    vmovaps (%rdx), %ymm4
1080 ; AVX2-ONLY-NEXT:    vmovaps 32(%rdx), %ymm6
1081 ; AVX2-ONLY-NEXT:    vmovaps 64(%rdx), %ymm1
1082 ; AVX2-ONLY-NEXT:    vmovaps 96(%rdx), %ymm15
1083 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm7 = mem[0,0]
1084 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm10 = ymm2[0,1,2,1]
1085 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm7 = ymm10[0,1],ymm7[2,3],ymm10[4,5,6,7]
1086 ; AVX2-ONLY-NEXT:    vbroadcastsd (%rdx), %ymm10
1087 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm10[4,5],ymm7[6,7]
1088 ; AVX2-ONLY-NEXT:    vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1089 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm7 = ymm3[2,3,0,1,6,7,4,5]
1090 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm2[4,5],ymm7[6,7]
1091 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm7 = ymm7[0,1],ymm4[2,3],ymm7[4,5,6,7]
1092 ; AVX2-ONLY-NEXT:    vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1093 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]
1094 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm2[0,2,3,3]
1095 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm3 = ymm4[2,1,2,3]
1096 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3,4,5],ymm3[6,7]
1097 ; AVX2-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1098 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = mem[0,0]
1099 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm3 = ymm0[0,1,2,1]
1100 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5,6,7]
1101 ; AVX2-ONLY-NEXT:    vbroadcastsd 32(%rdx), %ymm3
1102 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm3[4,5],ymm2[6,7]
1103 ; AVX2-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1104 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm2 = ymm5[2,3,0,1,6,7,4,5]
1105 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5],ymm2[6,7]
1106 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm6[2,3],ymm2[4,5,6,7]
1107 ; AVX2-ONLY-NEXT:    vmovups %ymm2, (%rsp) # 32-byte Spill
1108 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm5[1],ymm0[3],ymm5[3]
1109 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
1110 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm6[2,1,2,3]
1111 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm2[0,1],ymm0[2,3,4,5],ymm2[6,7]
1112 ; AVX2-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1113 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = mem[0,0]
1114 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm8[0,1,2,1]
1115 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm2[0,1],ymm0[2,3],ymm2[4,5,6,7]
1116 ; AVX2-ONLY-NEXT:    vbroadcastsd 64(%rdx), %ymm2
1117 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5],ymm0[6,7]
1118 ; AVX2-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1119 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm0 = ymm9[2,3,0,1,6,7,4,5]
1120 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm8[4,5],ymm0[6,7]
1121 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5,6,7]
1122 ; AVX2-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1123 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm8[1],ymm9[1],ymm8[3],ymm9[3]
1124 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
1125 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
1126 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
1127 ; AVX2-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1128 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = mem[0,0]
1129 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm12[0,1,2,1]
1130 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5,6,7]
1131 ; AVX2-ONLY-NEXT:    vbroadcastsd 96(%rdx), %ymm1
1132 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm9 = ymm0[0,1,2,3],ymm1[4,5],ymm0[6,7]
1133 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm0 = ymm14[2,3,0,1,6,7,4,5]
1134 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm12[4,5],ymm0[6,7]
1135 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm10 = ymm0[0,1],ymm15[2,3],ymm0[4,5,6,7]
1136 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm12[1],ymm14[1],ymm12[3],ymm14[3]
1137 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
1138 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm15[2,1,2,3]
1139 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm12 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
1140 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = mem[0,0]
1141 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm11[0,1,2,1]
1142 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5,6,7]
1143 ; AVX2-ONLY-NEXT:    vbroadcastsd 128(%rdx), %ymm1
1144 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm14 = ymm0[0,1,2,3],ymm1[4,5],ymm0[6,7]
1145 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm0 = ymm13[2,3,0,1,6,7,4,5]
1146 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm11[4,5],ymm0[6,7]
1147 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm1 = ymm11[1],ymm13[1],ymm11[3],ymm13[3]
1148 ; AVX2-ONLY-NEXT:    vmovaps 128(%rdx), %ymm2
1149 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm11 = ymm0[0,1],ymm2[2,3],ymm0[4,5,6,7]
1150 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm1[0,2,3,3]
1151 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm2[2,1,2,3]
1152 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm13 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
1153 ; AVX2-ONLY-NEXT:    vmovaps 160(%rdi), %ymm0
1154 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]
1155 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm0[0,1,2,1]
1156 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
1157 ; AVX2-ONLY-NEXT:    vbroadcastsd 160(%rdx), %ymm2
1158 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm15 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]
1159 ; AVX2-ONLY-NEXT:    vmovaps 160(%rsi), %ymm1
1160 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm2 = ymm1[2,3,0,1,6,7,4,5]
1161 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5],ymm2[6,7]
1162 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
1163 ; AVX2-ONLY-NEXT:    vmovaps 160(%rdx), %ymm1
1164 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm6 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
1165 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
1166 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
1167 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm3 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
1168 ; AVX2-ONLY-NEXT:    vmovaps 192(%rdi), %ymm0
1169 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]
1170 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm4 = ymm0[0,1,2,1]
1171 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1],ymm1[2,3],ymm4[4,5,6,7]
1172 ; AVX2-ONLY-NEXT:    vbroadcastsd 192(%rdx), %ymm4
1173 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm1[0,1,2,3],ymm4[4,5],ymm1[6,7]
1174 ; AVX2-ONLY-NEXT:    vmovaps 192(%rsi), %ymm4
1175 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm5 = ymm4[2,3,0,1,6,7,4,5]
1176 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm0[4,5],ymm5[6,7]
1177 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm4[1],ymm0[3],ymm4[3]
1178 ; AVX2-ONLY-NEXT:    vmovaps 192(%rdx), %ymm4
1179 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm5 = ymm5[0,1],ymm4[2,3],ymm5[4,5,6,7]
1180 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
1181 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm4 = ymm4[2,1,2,3]
1182 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1],ymm0[2,3,4,5],ymm4[6,7]
1183 ; AVX2-ONLY-NEXT:    vmovaps 224(%rdi), %ymm4
1184 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = mem[0,0]
1185 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm7 = ymm4[0,1,2,1]
1186 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm7[0,1],ymm0[2,3],ymm7[4,5,6,7]
1187 ; AVX2-ONLY-NEXT:    vbroadcastsd 224(%rdx), %ymm7
1188 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm7[4,5],ymm0[6,7]
1189 ; AVX2-ONLY-NEXT:    vmovaps 224(%rsi), %ymm7
1190 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm8 = ymm7[2,3,0,1,6,7,4,5]
1191 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm8 = ymm8[0,1,2,3],ymm4[4,5],ymm8[6,7]
1192 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm4 = ymm4[1],ymm7[1],ymm4[3],ymm7[3]
1193 ; AVX2-ONLY-NEXT:    vmovaps 224(%rdx), %ymm7
1194 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm8 = ymm8[0,1],ymm7[2,3],ymm8[4,5,6,7]
1195 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm4 = ymm4[0,2,3,3]
1196 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm7 = ymm7[2,1,2,3]
1197 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm4 = ymm7[0,1],ymm4[2,3,4,5],ymm7[6,7]
1198 ; AVX2-ONLY-NEXT:    vmovaps %ymm4, 736(%rcx)
1199 ; AVX2-ONLY-NEXT:    vmovaps %ymm8, 704(%rcx)
1200 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 672(%rcx)
1201 ; AVX2-ONLY-NEXT:    vmovaps %ymm1, 640(%rcx)
1202 ; AVX2-ONLY-NEXT:    vmovaps %ymm5, 608(%rcx)
1203 ; AVX2-ONLY-NEXT:    vmovaps %ymm2, 576(%rcx)
1204 ; AVX2-ONLY-NEXT:    vmovaps %ymm3, 544(%rcx)
1205 ; AVX2-ONLY-NEXT:    vmovaps %ymm6, 512(%rcx)
1206 ; AVX2-ONLY-NEXT:    vmovaps %ymm15, 480(%rcx)
1207 ; AVX2-ONLY-NEXT:    vmovaps %ymm13, 448(%rcx)
1208 ; AVX2-ONLY-NEXT:    vmovaps %ymm11, 416(%rcx)
1209 ; AVX2-ONLY-NEXT:    vmovaps %ymm14, 384(%rcx)
1210 ; AVX2-ONLY-NEXT:    vmovaps %ymm12, 352(%rcx)
1211 ; AVX2-ONLY-NEXT:    vmovaps %ymm10, 320(%rcx)
1212 ; AVX2-ONLY-NEXT:    vmovaps %ymm9, 288(%rcx)
1213 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1214 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 256(%rcx)
1215 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1216 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 224(%rcx)
1217 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1218 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 192(%rcx)
1219 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1220 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 160(%rcx)
1221 ; AVX2-ONLY-NEXT:    vmovups (%rsp), %ymm0 # 32-byte Reload
1222 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 128(%rcx)
1223 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1224 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 96(%rcx)
1225 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1226 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 64(%rcx)
1227 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1228 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 32(%rcx)
1229 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1230 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, (%rcx)
1231 ; AVX2-ONLY-NEXT:    addq $168, %rsp
1232 ; AVX2-ONLY-NEXT:    vzeroupper
1233 ; AVX2-ONLY-NEXT:    retq
1235 ; AVX512-LABEL: store_i64_stride3_vf32:
1236 ; AVX512:       # %bb.0:
1237 ; AVX512-NEXT:    vmovdqa64 (%rdi), %zmm3
1238 ; AVX512-NEXT:    vmovdqa64 64(%rdi), %zmm2
1239 ; AVX512-NEXT:    vmovdqa64 128(%rdi), %zmm1
1240 ; AVX512-NEXT:    vmovdqa64 192(%rdi), %zmm0
1241 ; AVX512-NEXT:    vmovdqa64 (%rsi), %zmm4
1242 ; AVX512-NEXT:    vmovdqa64 64(%rsi), %zmm5
1243 ; AVX512-NEXT:    vmovdqa64 128(%rsi), %zmm6
1244 ; AVX512-NEXT:    vmovdqa64 192(%rsi), %zmm7
1245 ; AVX512-NEXT:    vmovdqa64 (%rdx), %zmm8
1246 ; AVX512-NEXT:    vmovdqa64 64(%rdx), %zmm9
1247 ; AVX512-NEXT:    vmovdqa64 128(%rdx), %zmm10
1248 ; AVX512-NEXT:    vmovdqa64 192(%rdx), %zmm11
1249 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm12 = <0,8,u,1,9,u,2,10>
1250 ; AVX512-NEXT:    vmovdqa64 %zmm3, %zmm13
1251 ; AVX512-NEXT:    vpermt2q %zmm4, %zmm12, %zmm13
1252 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm14 = [0,1,8,3,4,9,6,7]
1253 ; AVX512-NEXT:    vpermt2q %zmm8, %zmm14, %zmm13
1254 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm15 = <5,u,14,6,u,15,7,u>
1255 ; AVX512-NEXT:    vmovdqa64 %zmm7, %zmm16
1256 ; AVX512-NEXT:    vpermt2q %zmm0, %zmm15, %zmm16
1257 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm17 = [0,13,2,3,14,5,6,15]
1258 ; AVX512-NEXT:    vpermt2q %zmm11, %zmm17, %zmm16
1259 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm18 = <u,3,11,u,4,12,u,5>
1260 ; AVX512-NEXT:    vmovdqa64 %zmm0, %zmm19
1261 ; AVX512-NEXT:    vpermt2q %zmm7, %zmm18, %zmm19
1262 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm20 = [10,1,2,11,4,5,12,7]
1263 ; AVX512-NEXT:    vpermt2q %zmm11, %zmm20, %zmm19
1264 ; AVX512-NEXT:    vpermt2q %zmm7, %zmm12, %zmm0
1265 ; AVX512-NEXT:    vpermt2q %zmm11, %zmm14, %zmm0
1266 ; AVX512-NEXT:    vmovdqa64 %zmm6, %zmm7
1267 ; AVX512-NEXT:    vpermt2q %zmm1, %zmm15, %zmm7
1268 ; AVX512-NEXT:    vpermt2q %zmm10, %zmm17, %zmm7
1269 ; AVX512-NEXT:    vmovdqa64 %zmm1, %zmm11
1270 ; AVX512-NEXT:    vpermt2q %zmm6, %zmm18, %zmm11
1271 ; AVX512-NEXT:    vpermt2q %zmm10, %zmm20, %zmm11
1272 ; AVX512-NEXT:    vpermt2q %zmm6, %zmm12, %zmm1
1273 ; AVX512-NEXT:    vpermt2q %zmm10, %zmm14, %zmm1
1274 ; AVX512-NEXT:    vmovdqa64 %zmm5, %zmm6
1275 ; AVX512-NEXT:    vpermt2q %zmm2, %zmm15, %zmm6
1276 ; AVX512-NEXT:    vpermt2q %zmm9, %zmm17, %zmm6
1277 ; AVX512-NEXT:    vmovdqa64 %zmm2, %zmm10
1278 ; AVX512-NEXT:    vpermt2q %zmm5, %zmm18, %zmm10
1279 ; AVX512-NEXT:    vpermt2q %zmm9, %zmm20, %zmm10
1280 ; AVX512-NEXT:    vpermt2q %zmm5, %zmm12, %zmm2
1281 ; AVX512-NEXT:    vpermt2q %zmm9, %zmm14, %zmm2
1282 ; AVX512-NEXT:    vpermi2q %zmm3, %zmm4, %zmm15
1283 ; AVX512-NEXT:    vpermt2q %zmm8, %zmm17, %zmm15
1284 ; AVX512-NEXT:    vpermt2q %zmm4, %zmm18, %zmm3
1285 ; AVX512-NEXT:    vpermt2q %zmm8, %zmm20, %zmm3
1286 ; AVX512-NEXT:    vmovdqa64 %zmm3, 64(%rcx)
1287 ; AVX512-NEXT:    vmovdqa64 %zmm15, 128(%rcx)
1288 ; AVX512-NEXT:    vmovdqa64 %zmm2, 192(%rcx)
1289 ; AVX512-NEXT:    vmovdqa64 %zmm10, 256(%rcx)
1290 ; AVX512-NEXT:    vmovdqa64 %zmm6, 320(%rcx)
1291 ; AVX512-NEXT:    vmovdqa64 %zmm1, 384(%rcx)
1292 ; AVX512-NEXT:    vmovdqa64 %zmm11, 448(%rcx)
1293 ; AVX512-NEXT:    vmovdqa64 %zmm7, 512(%rcx)
1294 ; AVX512-NEXT:    vmovdqa64 %zmm0, 576(%rcx)
1295 ; AVX512-NEXT:    vmovdqa64 %zmm19, 640(%rcx)
1296 ; AVX512-NEXT:    vmovdqa64 %zmm16, 704(%rcx)
1297 ; AVX512-NEXT:    vmovdqa64 %zmm13, (%rcx)
1298 ; AVX512-NEXT:    vzeroupper
1299 ; AVX512-NEXT:    retq
1300   %in.vec0 = load <32 x i64>, ptr %in.vecptr0, align 64
1301   %in.vec1 = load <32 x i64>, ptr %in.vecptr1, align 64
1302   %in.vec2 = load <32 x i64>, ptr %in.vecptr2, align 64
1303   %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>
1304   %2 = shufflevector <32 x i64> %in.vec2, <32 x i64> poison, <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 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
1305   %3 = shufflevector <64 x i64> %1, <64 x i64> %2, <96 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>
1306   %interleaved.vec = shufflevector <96 x i64> %3, <96 x i64> poison, <96 x i32> <i32 0, i32 32, i32 64, i32 1, i32 33, i32 65, i32 2, i32 34, i32 66, i32 3, i32 35, i32 67, i32 4, i32 36, i32 68, i32 5, i32 37, i32 69, i32 6, i32 38, i32 70, i32 7, i32 39, i32 71, i32 8, i32 40, i32 72, i32 9, i32 41, i32 73, i32 10, i32 42, i32 74, i32 11, i32 43, i32 75, i32 12, i32 44, i32 76, i32 13, i32 45, i32 77, i32 14, i32 46, i32 78, i32 15, i32 47, i32 79, i32 16, i32 48, i32 80, i32 17, i32 49, i32 81, i32 18, i32 50, i32 82, i32 19, i32 51, i32 83, i32 20, i32 52, i32 84, i32 21, i32 53, i32 85, i32 22, i32 54, i32 86, i32 23, i32 55, i32 87, i32 24, i32 56, i32 88, i32 25, i32 57, i32 89, i32 26, i32 58, i32 90, i32 27, i32 59, i32 91, i32 28, i32 60, i32 92, i32 29, i32 61, i32 93, i32 30, i32 62, i32 94, i32 31, i32 63, i32 95>
1307   store <96 x i64> %interleaved.vec, ptr %out.vec, align 64
1308   ret void
1311 define void @store_i64_stride3_vf64(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %out.vec) nounwind {
1312 ; SSE-LABEL: store_i64_stride3_vf64:
1313 ; SSE:       # %bb.0:
1314 ; SSE-NEXT:    subq $1176, %rsp # imm = 0x498
1315 ; SSE-NEXT:    movapd 64(%rdi), %xmm8
1316 ; SSE-NEXT:    movapd (%rdi), %xmm5
1317 ; SSE-NEXT:    movapd 16(%rdi), %xmm6
1318 ; SSE-NEXT:    movapd 32(%rdi), %xmm7
1319 ; SSE-NEXT:    movapd 48(%rdi), %xmm9
1320 ; SSE-NEXT:    movapd 64(%rsi), %xmm13
1321 ; SSE-NEXT:    movapd (%rsi), %xmm10
1322 ; SSE-NEXT:    movapd 16(%rsi), %xmm11
1323 ; SSE-NEXT:    movapd 32(%rsi), %xmm12
1324 ; SSE-NEXT:    movapd 48(%rsi), %xmm14
1325 ; SSE-NEXT:    movapd 64(%rdx), %xmm0
1326 ; SSE-NEXT:    movapd (%rdx), %xmm1
1327 ; SSE-NEXT:    movapd 16(%rdx), %xmm2
1328 ; SSE-NEXT:    movapd 32(%rdx), %xmm3
1329 ; SSE-NEXT:    movapd 48(%rdx), %xmm4
1330 ; SSE-NEXT:    movapd %xmm5, %xmm15
1331 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm15 = xmm15[0],xmm10[0]
1332 ; SSE-NEXT:    movapd %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1333 ; SSE-NEXT:    movsd {{.*#+}} xmm5 = xmm1[0],xmm5[1]
1334 ; SSE-NEXT:    movapd %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1335 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm1[1]
1336 ; SSE-NEXT:    movapd %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1337 ; SSE-NEXT:    movapd %xmm6, %xmm1
1338 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm11[0]
1339 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1340 ; SSE-NEXT:    movsd {{.*#+}} xmm6 = xmm2[0],xmm6[1]
1341 ; SSE-NEXT:    movapd %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1342 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm2[1]
1343 ; SSE-NEXT:    movapd %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1344 ; SSE-NEXT:    movapd %xmm7, %xmm1
1345 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm12[0]
1346 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1347 ; SSE-NEXT:    movsd {{.*#+}} xmm7 = xmm3[0],xmm7[1]
1348 ; SSE-NEXT:    movapd %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1349 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm3[1]
1350 ; SSE-NEXT:    movapd %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1351 ; SSE-NEXT:    movapd %xmm9, %xmm1
1352 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm14[0]
1353 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1354 ; SSE-NEXT:    movsd {{.*#+}} xmm9 = xmm4[0],xmm9[1]
1355 ; SSE-NEXT:    movapd %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1356 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm4[1]
1357 ; SSE-NEXT:    movapd %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1358 ; SSE-NEXT:    movapd %xmm8, %xmm1
1359 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm13[0]
1360 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1361 ; SSE-NEXT:    movsd {{.*#+}} xmm8 = xmm0[0],xmm8[1]
1362 ; SSE-NEXT:    movapd %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1363 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]
1364 ; SSE-NEXT:    movapd %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1365 ; SSE-NEXT:    movapd 80(%rdi), %xmm1
1366 ; SSE-NEXT:    movapd 80(%rsi), %xmm2
1367 ; SSE-NEXT:    movapd %xmm1, %xmm0
1368 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1369 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1370 ; SSE-NEXT:    movapd 80(%rdx), %xmm0
1371 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1372 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1373 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1374 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1375 ; SSE-NEXT:    movapd 96(%rdi), %xmm1
1376 ; SSE-NEXT:    movapd 96(%rsi), %xmm2
1377 ; SSE-NEXT:    movapd %xmm1, %xmm0
1378 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1379 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1380 ; SSE-NEXT:    movapd 96(%rdx), %xmm0
1381 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1382 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1383 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1384 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1385 ; SSE-NEXT:    movapd 112(%rdi), %xmm1
1386 ; SSE-NEXT:    movapd 112(%rsi), %xmm2
1387 ; SSE-NEXT:    movapd %xmm1, %xmm0
1388 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1389 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1390 ; SSE-NEXT:    movapd 112(%rdx), %xmm0
1391 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1392 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1393 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1394 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1395 ; SSE-NEXT:    movapd 128(%rdi), %xmm1
1396 ; SSE-NEXT:    movapd 128(%rsi), %xmm2
1397 ; SSE-NEXT:    movapd %xmm1, %xmm0
1398 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1399 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1400 ; SSE-NEXT:    movapd 128(%rdx), %xmm0
1401 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1402 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1403 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1404 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1405 ; SSE-NEXT:    movapd 144(%rdi), %xmm1
1406 ; SSE-NEXT:    movapd 144(%rsi), %xmm2
1407 ; SSE-NEXT:    movapd %xmm1, %xmm0
1408 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1409 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1410 ; SSE-NEXT:    movapd 144(%rdx), %xmm0
1411 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1412 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1413 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1414 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1415 ; SSE-NEXT:    movapd 160(%rdi), %xmm1
1416 ; SSE-NEXT:    movapd 160(%rsi), %xmm2
1417 ; SSE-NEXT:    movapd %xmm1, %xmm0
1418 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1419 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1420 ; SSE-NEXT:    movapd 160(%rdx), %xmm0
1421 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1422 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1423 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1424 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1425 ; SSE-NEXT:    movapd 176(%rdi), %xmm1
1426 ; SSE-NEXT:    movapd 176(%rsi), %xmm2
1427 ; SSE-NEXT:    movapd %xmm1, %xmm0
1428 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1429 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1430 ; SSE-NEXT:    movapd 176(%rdx), %xmm0
1431 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1432 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1433 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1434 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1435 ; SSE-NEXT:    movapd 192(%rdi), %xmm1
1436 ; SSE-NEXT:    movapd 192(%rsi), %xmm2
1437 ; SSE-NEXT:    movapd %xmm1, %xmm0
1438 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1439 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1440 ; SSE-NEXT:    movapd 192(%rdx), %xmm0
1441 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1442 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1443 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1444 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1445 ; SSE-NEXT:    movapd 208(%rdi), %xmm1
1446 ; SSE-NEXT:    movapd 208(%rsi), %xmm2
1447 ; SSE-NEXT:    movapd %xmm1, %xmm0
1448 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1449 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1450 ; SSE-NEXT:    movapd 208(%rdx), %xmm0
1451 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1452 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1453 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1454 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1455 ; SSE-NEXT:    movapd 224(%rdi), %xmm1
1456 ; SSE-NEXT:    movapd 224(%rsi), %xmm2
1457 ; SSE-NEXT:    movapd %xmm1, %xmm0
1458 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1459 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1460 ; SSE-NEXT:    movapd 224(%rdx), %xmm0
1461 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1462 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1463 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1464 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1465 ; SSE-NEXT:    movapd 240(%rdi), %xmm1
1466 ; SSE-NEXT:    movapd 240(%rsi), %xmm2
1467 ; SSE-NEXT:    movapd %xmm1, %xmm0
1468 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1469 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1470 ; SSE-NEXT:    movapd 240(%rdx), %xmm0
1471 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1472 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1473 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1474 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1475 ; SSE-NEXT:    movapd 256(%rdi), %xmm1
1476 ; SSE-NEXT:    movapd 256(%rsi), %xmm2
1477 ; SSE-NEXT:    movapd %xmm1, %xmm0
1478 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1479 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1480 ; SSE-NEXT:    movapd 256(%rdx), %xmm0
1481 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1482 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1483 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1484 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1485 ; SSE-NEXT:    movapd 272(%rdi), %xmm1
1486 ; SSE-NEXT:    movapd 272(%rsi), %xmm2
1487 ; SSE-NEXT:    movapd %xmm1, %xmm0
1488 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1489 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1490 ; SSE-NEXT:    movapd 272(%rdx), %xmm0
1491 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1492 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1493 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1494 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1495 ; SSE-NEXT:    movapd 288(%rdi), %xmm1
1496 ; SSE-NEXT:    movapd 288(%rsi), %xmm2
1497 ; SSE-NEXT:    movapd %xmm1, %xmm0
1498 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1499 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1500 ; SSE-NEXT:    movapd 288(%rdx), %xmm0
1501 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1502 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1503 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1504 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1505 ; SSE-NEXT:    movapd 304(%rdi), %xmm1
1506 ; SSE-NEXT:    movapd 304(%rsi), %xmm2
1507 ; SSE-NEXT:    movapd %xmm1, %xmm0
1508 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1509 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1510 ; SSE-NEXT:    movapd 304(%rdx), %xmm0
1511 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1512 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1513 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1514 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1515 ; SSE-NEXT:    movapd 320(%rdi), %xmm1
1516 ; SSE-NEXT:    movapd 320(%rsi), %xmm2
1517 ; SSE-NEXT:    movapd %xmm1, %xmm0
1518 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1519 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1520 ; SSE-NEXT:    movapd 320(%rdx), %xmm0
1521 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1522 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1523 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1524 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1525 ; SSE-NEXT:    movapd 336(%rdi), %xmm1
1526 ; SSE-NEXT:    movapd 336(%rsi), %xmm2
1527 ; SSE-NEXT:    movapd %xmm1, %xmm0
1528 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1529 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1530 ; SSE-NEXT:    movapd 336(%rdx), %xmm0
1531 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1532 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1533 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1534 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1535 ; SSE-NEXT:    movapd 352(%rdi), %xmm1
1536 ; SSE-NEXT:    movapd 352(%rsi), %xmm2
1537 ; SSE-NEXT:    movapd %xmm1, %xmm0
1538 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1539 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1540 ; SSE-NEXT:    movapd 352(%rdx), %xmm0
1541 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1542 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1543 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1544 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1545 ; SSE-NEXT:    movapd 368(%rdi), %xmm1
1546 ; SSE-NEXT:    movapd 368(%rsi), %xmm2
1547 ; SSE-NEXT:    movapd %xmm1, %xmm0
1548 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1549 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1550 ; SSE-NEXT:    movapd 368(%rdx), %xmm0
1551 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1552 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1553 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1554 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1555 ; SSE-NEXT:    movapd 384(%rdi), %xmm1
1556 ; SSE-NEXT:    movapd 384(%rsi), %xmm2
1557 ; SSE-NEXT:    movapd %xmm1, %xmm0
1558 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1559 ; SSE-NEXT:    movapd %xmm0, (%rsp) # 16-byte Spill
1560 ; SSE-NEXT:    movapd 384(%rdx), %xmm0
1561 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1562 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1563 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1564 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1565 ; SSE-NEXT:    movapd 400(%rdi), %xmm1
1566 ; SSE-NEXT:    movapd 400(%rsi), %xmm2
1567 ; SSE-NEXT:    movapd %xmm1, %xmm0
1568 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1569 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1570 ; SSE-NEXT:    movapd 400(%rdx), %xmm0
1571 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1572 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1573 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1574 ; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1575 ; SSE-NEXT:    movapd 416(%rdi), %xmm1
1576 ; SSE-NEXT:    movapd 416(%rsi), %xmm15
1577 ; SSE-NEXT:    movapd %xmm1, %xmm0
1578 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm15[0]
1579 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1580 ; SSE-NEXT:    movapd 416(%rdx), %xmm0
1581 ; SSE-NEXT:    movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1]
1582 ; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1583 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]
1584 ; SSE-NEXT:    movapd 432(%rdi), %xmm14
1585 ; SSE-NEXT:    movapd 432(%rsi), %xmm12
1586 ; SSE-NEXT:    movapd %xmm14, %xmm0
1587 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm12[0]
1588 ; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1589 ; SSE-NEXT:    movapd 432(%rdx), %xmm0
1590 ; SSE-NEXT:    movsd {{.*#+}} xmm14 = xmm0[0],xmm14[1]
1591 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm0[1]
1592 ; SSE-NEXT:    movapd 448(%rdi), %xmm9
1593 ; SSE-NEXT:    movapd 448(%rsi), %xmm8
1594 ; SSE-NEXT:    movapd %xmm9, %xmm13
1595 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm13 = xmm13[0],xmm8[0]
1596 ; SSE-NEXT:    movapd 448(%rdx), %xmm0
1597 ; SSE-NEXT:    movsd {{.*#+}} xmm9 = xmm0[0],xmm9[1]
1598 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm0[1]
1599 ; SSE-NEXT:    movapd 464(%rdi), %xmm10
1600 ; SSE-NEXT:    movapd 464(%rsi), %xmm7
1601 ; SSE-NEXT:    movapd %xmm10, %xmm11
1602 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm11 = xmm11[0],xmm7[0]
1603 ; SSE-NEXT:    movapd 464(%rdx), %xmm0
1604 ; SSE-NEXT:    movsd {{.*#+}} xmm10 = xmm0[0],xmm10[1]
1605 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm0[1]
1606 ; SSE-NEXT:    movapd 480(%rdi), %xmm4
1607 ; SSE-NEXT:    movapd 480(%rsi), %xmm3
1608 ; SSE-NEXT:    movapd %xmm4, %xmm6
1609 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm6 = xmm6[0],xmm3[0]
1610 ; SSE-NEXT:    movapd 480(%rdx), %xmm2
1611 ; SSE-NEXT:    movsd {{.*#+}} xmm4 = xmm2[0],xmm4[1]
1612 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm2[1]
1613 ; SSE-NEXT:    movapd 496(%rdi), %xmm2
1614 ; SSE-NEXT:    movapd 496(%rsi), %xmm0
1615 ; SSE-NEXT:    movapd %xmm2, %xmm1
1616 ; SSE-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1617 ; SSE-NEXT:    movapd 496(%rdx), %xmm5
1618 ; SSE-NEXT:    movsd {{.*#+}} xmm2 = xmm5[0],xmm2[1]
1619 ; SSE-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm5[1]
1620 ; SSE-NEXT:    movapd %xmm0, 1520(%rcx)
1621 ; SSE-NEXT:    movapd %xmm2, 1504(%rcx)
1622 ; SSE-NEXT:    movapd %xmm1, 1488(%rcx)
1623 ; SSE-NEXT:    movapd %xmm3, 1472(%rcx)
1624 ; SSE-NEXT:    movapd %xmm4, 1456(%rcx)
1625 ; SSE-NEXT:    movapd %xmm6, 1440(%rcx)
1626 ; SSE-NEXT:    movapd %xmm7, 1424(%rcx)
1627 ; SSE-NEXT:    movapd %xmm10, 1408(%rcx)
1628 ; SSE-NEXT:    movapd %xmm11, 1392(%rcx)
1629 ; SSE-NEXT:    movapd %xmm8, 1376(%rcx)
1630 ; SSE-NEXT:    movapd %xmm9, 1360(%rcx)
1631 ; SSE-NEXT:    movapd %xmm13, 1344(%rcx)
1632 ; SSE-NEXT:    movapd %xmm12, 1328(%rcx)
1633 ; SSE-NEXT:    movapd %xmm14, 1312(%rcx)
1634 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1635 ; SSE-NEXT:    movaps %xmm0, 1296(%rcx)
1636 ; SSE-NEXT:    movapd %xmm15, 1280(%rcx)
1637 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1638 ; SSE-NEXT:    movaps %xmm0, 1264(%rcx)
1639 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1640 ; SSE-NEXT:    movaps %xmm0, 1248(%rcx)
1641 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1642 ; SSE-NEXT:    movaps %xmm0, 1232(%rcx)
1643 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1644 ; SSE-NEXT:    movaps %xmm0, 1216(%rcx)
1645 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1646 ; SSE-NEXT:    movaps %xmm0, 1200(%rcx)
1647 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1648 ; SSE-NEXT:    movaps %xmm0, 1184(%rcx)
1649 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1650 ; SSE-NEXT:    movaps %xmm0, 1168(%rcx)
1651 ; SSE-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload
1652 ; SSE-NEXT:    movaps %xmm0, 1152(%rcx)
1653 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1654 ; SSE-NEXT:    movaps %xmm0, 1136(%rcx)
1655 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1656 ; SSE-NEXT:    movaps %xmm0, 1120(%rcx)
1657 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1658 ; SSE-NEXT:    movaps %xmm0, 1104(%rcx)
1659 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1660 ; SSE-NEXT:    movaps %xmm0, 1088(%rcx)
1661 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1662 ; SSE-NEXT:    movaps %xmm0, 1072(%rcx)
1663 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1664 ; SSE-NEXT:    movaps %xmm0, 1056(%rcx)
1665 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1666 ; SSE-NEXT:    movaps %xmm0, 1040(%rcx)
1667 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1668 ; SSE-NEXT:    movaps %xmm0, 1024(%rcx)
1669 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1670 ; SSE-NEXT:    movaps %xmm0, 1008(%rcx)
1671 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1672 ; SSE-NEXT:    movaps %xmm0, 992(%rcx)
1673 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1674 ; SSE-NEXT:    movaps %xmm0, 976(%rcx)
1675 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1676 ; SSE-NEXT:    movaps %xmm0, 960(%rcx)
1677 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1678 ; SSE-NEXT:    movaps %xmm0, 944(%rcx)
1679 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1680 ; SSE-NEXT:    movaps %xmm0, 928(%rcx)
1681 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1682 ; SSE-NEXT:    movaps %xmm0, 912(%rcx)
1683 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1684 ; SSE-NEXT:    movaps %xmm0, 896(%rcx)
1685 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1686 ; SSE-NEXT:    movaps %xmm0, 880(%rcx)
1687 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1688 ; SSE-NEXT:    movaps %xmm0, 864(%rcx)
1689 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1690 ; SSE-NEXT:    movaps %xmm0, 848(%rcx)
1691 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1692 ; SSE-NEXT:    movaps %xmm0, 832(%rcx)
1693 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1694 ; SSE-NEXT:    movaps %xmm0, 816(%rcx)
1695 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1696 ; SSE-NEXT:    movaps %xmm0, 800(%rcx)
1697 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1698 ; SSE-NEXT:    movaps %xmm0, 784(%rcx)
1699 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1700 ; SSE-NEXT:    movaps %xmm0, 768(%rcx)
1701 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1702 ; SSE-NEXT:    movaps %xmm0, 752(%rcx)
1703 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1704 ; SSE-NEXT:    movaps %xmm0, 736(%rcx)
1705 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1706 ; SSE-NEXT:    movaps %xmm0, 720(%rcx)
1707 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1708 ; SSE-NEXT:    movaps %xmm0, 704(%rcx)
1709 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1710 ; SSE-NEXT:    movaps %xmm0, 688(%rcx)
1711 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1712 ; SSE-NEXT:    movaps %xmm0, 672(%rcx)
1713 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1714 ; SSE-NEXT:    movaps %xmm0, 656(%rcx)
1715 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1716 ; SSE-NEXT:    movaps %xmm0, 640(%rcx)
1717 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1718 ; SSE-NEXT:    movaps %xmm0, 624(%rcx)
1719 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1720 ; SSE-NEXT:    movaps %xmm0, 608(%rcx)
1721 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1722 ; SSE-NEXT:    movaps %xmm0, 592(%rcx)
1723 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1724 ; SSE-NEXT:    movaps %xmm0, 576(%rcx)
1725 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1726 ; SSE-NEXT:    movaps %xmm0, 560(%rcx)
1727 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1728 ; SSE-NEXT:    movaps %xmm0, 544(%rcx)
1729 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1730 ; SSE-NEXT:    movaps %xmm0, 528(%rcx)
1731 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1732 ; SSE-NEXT:    movaps %xmm0, 512(%rcx)
1733 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1734 ; SSE-NEXT:    movaps %xmm0, 496(%rcx)
1735 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1736 ; SSE-NEXT:    movaps %xmm0, 480(%rcx)
1737 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1738 ; SSE-NEXT:    movaps %xmm0, 464(%rcx)
1739 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1740 ; SSE-NEXT:    movaps %xmm0, 448(%rcx)
1741 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1742 ; SSE-NEXT:    movaps %xmm0, 432(%rcx)
1743 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1744 ; SSE-NEXT:    movaps %xmm0, 416(%rcx)
1745 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1746 ; SSE-NEXT:    movaps %xmm0, 400(%rcx)
1747 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1748 ; SSE-NEXT:    movaps %xmm0, 384(%rcx)
1749 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1750 ; SSE-NEXT:    movaps %xmm0, 368(%rcx)
1751 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1752 ; SSE-NEXT:    movaps %xmm0, 352(%rcx)
1753 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1754 ; SSE-NEXT:    movaps %xmm0, 336(%rcx)
1755 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1756 ; SSE-NEXT:    movaps %xmm0, 320(%rcx)
1757 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1758 ; SSE-NEXT:    movaps %xmm0, 304(%rcx)
1759 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1760 ; SSE-NEXT:    movaps %xmm0, 288(%rcx)
1761 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1762 ; SSE-NEXT:    movaps %xmm0, 272(%rcx)
1763 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1764 ; SSE-NEXT:    movaps %xmm0, 256(%rcx)
1765 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1766 ; SSE-NEXT:    movaps %xmm0, 240(%rcx)
1767 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1768 ; SSE-NEXT:    movaps %xmm0, 224(%rcx)
1769 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1770 ; SSE-NEXT:    movaps %xmm0, 208(%rcx)
1771 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1772 ; SSE-NEXT:    movaps %xmm0, 192(%rcx)
1773 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1774 ; SSE-NEXT:    movaps %xmm0, 176(%rcx)
1775 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1776 ; SSE-NEXT:    movaps %xmm0, 160(%rcx)
1777 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1778 ; SSE-NEXT:    movaps %xmm0, 144(%rcx)
1779 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1780 ; SSE-NEXT:    movaps %xmm0, 128(%rcx)
1781 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1782 ; SSE-NEXT:    movaps %xmm0, 112(%rcx)
1783 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1784 ; SSE-NEXT:    movaps %xmm0, 96(%rcx)
1785 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1786 ; SSE-NEXT:    movaps %xmm0, 80(%rcx)
1787 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1788 ; SSE-NEXT:    movaps %xmm0, 64(%rcx)
1789 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1790 ; SSE-NEXT:    movaps %xmm0, 48(%rcx)
1791 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1792 ; SSE-NEXT:    movaps %xmm0, 32(%rcx)
1793 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1794 ; SSE-NEXT:    movaps %xmm0, 16(%rcx)
1795 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1796 ; SSE-NEXT:    movaps %xmm0, (%rcx)
1797 ; SSE-NEXT:    addq $1176, %rsp # imm = 0x498
1798 ; SSE-NEXT:    retq
1800 ; AVX1-ONLY-LABEL: store_i64_stride3_vf64:
1801 ; AVX1-ONLY:       # %bb.0:
1802 ; AVX1-ONLY-NEXT:    subq $1480, %rsp # imm = 0x5C8
1803 ; AVX1-ONLY-NEXT:    vmovaps (%rdi), %xmm0
1804 ; AVX1-ONLY-NEXT:    vmovaps 32(%rdi), %xmm1
1805 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm2 = xmm0[0],mem[0]
1806 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm2, %ymm0
1807 ; AVX1-ONLY-NEXT:    vinsertf128 $1, (%rdx), %ymm2, %ymm2
1808 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm2[0,1],ymm0[2,3],ymm2[4,5],ymm0[6,7]
1809 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1810 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm0 = xmm1[0],mem[0]
1811 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm1
1812 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 32(%rdx), %ymm0, %ymm0
1813 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]
1814 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1815 ; AVX1-ONLY-NEXT:    vmovaps 64(%rdi), %xmm0
1816 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1817 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1818 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 64(%rdx), %ymm1, %ymm1
1819 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1820 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1821 ; AVX1-ONLY-NEXT:    vmovaps 96(%rdi), %xmm0
1822 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1823 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1824 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 96(%rdx), %ymm1, %ymm1
1825 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1826 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1827 ; AVX1-ONLY-NEXT:    vmovaps 128(%rdi), %xmm0
1828 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1829 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1830 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 128(%rdx), %ymm1, %ymm1
1831 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1832 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1833 ; AVX1-ONLY-NEXT:    vmovaps 160(%rdi), %xmm0
1834 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1835 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1836 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 160(%rdx), %ymm1, %ymm1
1837 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1838 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1839 ; AVX1-ONLY-NEXT:    vmovaps 192(%rdi), %xmm0
1840 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1841 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1842 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 192(%rdx), %ymm1, %ymm1
1843 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1844 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1845 ; AVX1-ONLY-NEXT:    vmovaps 224(%rdi), %xmm0
1846 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1847 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1848 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 224(%rdx), %ymm1, %ymm1
1849 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1850 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1851 ; AVX1-ONLY-NEXT:    vmovaps 256(%rdi), %xmm0
1852 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1853 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1854 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 256(%rdx), %ymm1, %ymm1
1855 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1856 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1857 ; AVX1-ONLY-NEXT:    vmovaps 288(%rdi), %xmm0
1858 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1859 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1860 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 288(%rdx), %ymm1, %ymm1
1861 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1862 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1863 ; AVX1-ONLY-NEXT:    vmovaps 320(%rdi), %xmm0
1864 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1865 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1866 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 320(%rdx), %ymm1, %ymm1
1867 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1868 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1869 ; AVX1-ONLY-NEXT:    vmovaps 352(%rdi), %xmm0
1870 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1871 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1872 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 352(%rdx), %ymm1, %ymm1
1873 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1874 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1875 ; AVX1-ONLY-NEXT:    vmovaps 384(%rdi), %xmm0
1876 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1877 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1878 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 384(%rdx), %ymm1, %ymm1
1879 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1880 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1881 ; AVX1-ONLY-NEXT:    vmovaps 416(%rdi), %xmm0
1882 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1883 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1884 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 416(%rdx), %ymm1, %ymm1
1885 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1886 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1887 ; AVX1-ONLY-NEXT:    vmovaps 448(%rdi), %xmm0
1888 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1889 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1890 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 448(%rdx), %ymm1, %ymm1
1891 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1892 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1893 ; AVX1-ONLY-NEXT:    vmovaps 480(%rdi), %xmm0
1894 ; AVX1-ONLY-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],mem[0]
1895 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1896 ; AVX1-ONLY-NEXT:    vinsertf128 $1, 480(%rdx), %ymm1, %ymm1
1897 ; AVX1-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]
1898 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1899 ; AVX1-ONLY-NEXT:    vmovapd (%rdx), %ymm2
1900 ; AVX1-ONLY-NEXT:    vmovupd %ymm2, (%rsp) # 32-byte Spill
1901 ; AVX1-ONLY-NEXT:    vmovapd 16(%rdi), %xmm0
1902 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3]
1903 ; AVX1-ONLY-NEXT:    vmovapd (%rsi), %ymm1
1904 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1905 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[0,0,3,2]
1906 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm2[2,3],ymm1[2,3]
1907 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
1908 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1909 ; AVX1-ONLY-NEXT:    vmovapd 32(%rdx), %ymm2
1910 ; AVX1-ONLY-NEXT:    vmovupd %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1911 ; AVX1-ONLY-NEXT:    vmovapd 48(%rdi), %xmm0
1912 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3]
1913 ; AVX1-ONLY-NEXT:    vmovapd 32(%rsi), %ymm1
1914 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1915 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[0,0,3,2]
1916 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm2[2,3],ymm1[2,3]
1917 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
1918 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1919 ; AVX1-ONLY-NEXT:    vmovapd 64(%rdx), %ymm2
1920 ; AVX1-ONLY-NEXT:    vmovupd %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1921 ; AVX1-ONLY-NEXT:    vmovapd 80(%rdi), %xmm0
1922 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3]
1923 ; AVX1-ONLY-NEXT:    vmovapd 64(%rsi), %ymm1
1924 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1925 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[0,0,3,2]
1926 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm2[2,3],ymm1[2,3]
1927 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
1928 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1929 ; AVX1-ONLY-NEXT:    vmovapd 96(%rdx), %ymm2
1930 ; AVX1-ONLY-NEXT:    vmovupd %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1931 ; AVX1-ONLY-NEXT:    vmovapd 112(%rdi), %xmm0
1932 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3]
1933 ; AVX1-ONLY-NEXT:    vmovapd 96(%rsi), %ymm1
1934 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1935 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[0,0,3,2]
1936 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm2[2,3],ymm1[2,3]
1937 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
1938 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1939 ; AVX1-ONLY-NEXT:    vmovapd 128(%rdx), %ymm2
1940 ; AVX1-ONLY-NEXT:    vmovupd %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1941 ; AVX1-ONLY-NEXT:    vmovapd 144(%rdi), %xmm0
1942 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3]
1943 ; AVX1-ONLY-NEXT:    vmovapd 128(%rsi), %ymm1
1944 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1945 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[0,0,3,2]
1946 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm2[2,3],ymm1[2,3]
1947 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
1948 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1949 ; AVX1-ONLY-NEXT:    vmovapd 160(%rdx), %ymm2
1950 ; AVX1-ONLY-NEXT:    vmovupd %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1951 ; AVX1-ONLY-NEXT:    vmovapd 176(%rdi), %xmm0
1952 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3]
1953 ; AVX1-ONLY-NEXT:    vmovapd 160(%rsi), %ymm1
1954 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1955 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[0,0,3,2]
1956 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm2[2,3],ymm1[2,3]
1957 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
1958 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1959 ; AVX1-ONLY-NEXT:    vmovapd 192(%rdx), %ymm14
1960 ; AVX1-ONLY-NEXT:    vmovapd 208(%rdi), %xmm0
1961 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm14[2,3]
1962 ; AVX1-ONLY-NEXT:    vmovapd 192(%rsi), %ymm1
1963 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1964 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[0,0,3,2]
1965 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm14[2,3],ymm1[2,3]
1966 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
1967 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1968 ; AVX1-ONLY-NEXT:    vmovapd 224(%rdx), %ymm13
1969 ; AVX1-ONLY-NEXT:    vmovapd 240(%rdi), %xmm0
1970 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm13[2,3]
1971 ; AVX1-ONLY-NEXT:    vmovapd 224(%rsi), %ymm1
1972 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1973 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[0,0,3,2]
1974 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm13[2,3],ymm1[2,3]
1975 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
1976 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1977 ; AVX1-ONLY-NEXT:    vmovapd 256(%rdx), %ymm11
1978 ; AVX1-ONLY-NEXT:    vmovapd 272(%rdi), %xmm0
1979 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm11[2,3]
1980 ; AVX1-ONLY-NEXT:    vmovapd 256(%rsi), %ymm1
1981 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1982 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[0,0,3,2]
1983 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm11[2,3],ymm1[2,3]
1984 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
1985 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1986 ; AVX1-ONLY-NEXT:    vmovapd 288(%rdx), %ymm9
1987 ; AVX1-ONLY-NEXT:    vmovapd 304(%rdi), %xmm0
1988 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm9[2,3]
1989 ; AVX1-ONLY-NEXT:    vmovapd 288(%rsi), %ymm1
1990 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1991 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[0,0,3,2]
1992 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm9[2,3],ymm1[2,3]
1993 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
1994 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1995 ; AVX1-ONLY-NEXT:    vmovapd 320(%rdx), %ymm7
1996 ; AVX1-ONLY-NEXT:    vmovapd 336(%rdi), %xmm0
1997 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm7[2,3]
1998 ; AVX1-ONLY-NEXT:    vmovapd 320(%rsi), %ymm1
1999 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2000 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[0,0,3,2]
2001 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm7[2,3],ymm1[2,3]
2002 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
2003 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2004 ; AVX1-ONLY-NEXT:    vmovapd 352(%rdx), %ymm6
2005 ; AVX1-ONLY-NEXT:    vmovapd 368(%rdi), %xmm0
2006 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm6[2,3]
2007 ; AVX1-ONLY-NEXT:    vmovapd 352(%rsi), %ymm1
2008 ; AVX1-ONLY-NEXT:    vmovupd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2009 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[0,0,3,2]
2010 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm6[2,3],ymm1[2,3]
2011 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
2012 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2013 ; AVX1-ONLY-NEXT:    vmovapd 384(%rdx), %ymm5
2014 ; AVX1-ONLY-NEXT:    vmovapd 400(%rdi), %xmm0
2015 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm5[2,3]
2016 ; AVX1-ONLY-NEXT:    vmovapd 384(%rsi), %ymm12
2017 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm12[0,0,3,2]
2018 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm5[2,3],ymm1[2,3]
2019 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
2020 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2021 ; AVX1-ONLY-NEXT:    vmovapd 416(%rdx), %ymm3
2022 ; AVX1-ONLY-NEXT:    vmovapd 432(%rdi), %xmm0
2023 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm3[2,3]
2024 ; AVX1-ONLY-NEXT:    vmovapd 416(%rsi), %ymm10
2025 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm1 = ymm10[0,0,3,2]
2026 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm3[2,3],ymm1[2,3]
2027 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3]
2028 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2029 ; AVX1-ONLY-NEXT:    vmovapd 448(%rdx), %ymm2
2030 ; AVX1-ONLY-NEXT:    vmovapd 464(%rdi), %xmm0
2031 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3]
2032 ; AVX1-ONLY-NEXT:    vmovapd 448(%rsi), %ymm8
2033 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm4 = ymm8[0,0,3,2]
2034 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm4 = ymm2[2,3],ymm4[2,3]
2035 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm4[0],ymm0[1],ymm4[2],ymm0[3]
2036 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2037 ; AVX1-ONLY-NEXT:    vmovapd 480(%rdx), %ymm1
2038 ; AVX1-ONLY-NEXT:    vmovapd 496(%rdi), %xmm4
2039 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm4[0,1],ymm1[2,3]
2040 ; AVX1-ONLY-NEXT:    vmovapd 480(%rsi), %ymm4
2041 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm15 = ymm4[0,0,3,2]
2042 ; AVX1-ONLY-NEXT:    vperm2f128 {{.*#+}} ymm15 = ymm1[2,3],ymm15[2,3]
2043 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm15[0],ymm0[1],ymm15[2],ymm0[3]
2044 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2045 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
2046 ; AVX1-ONLY-NEXT:    # ymm0 = mem[1,0,2,2]
2047 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],mem[2],ymm0[3]
2048 ; AVX1-ONLY-NEXT:    vblendpd $2, (%rsp), %ymm0, %ymm0 # 32-byte Folded Reload
2049 ; AVX1-ONLY-NEXT:    # ymm0 = ymm0[0],mem[1],ymm0[2,3]
2050 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, (%rsp) # 32-byte Spill
2051 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
2052 ; AVX1-ONLY-NEXT:    # ymm0 = mem[1,0,2,2]
2053 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],mem[2],ymm0[3]
2054 ; AVX1-ONLY-NEXT:    vblendpd $2, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2055 ; AVX1-ONLY-NEXT:    # ymm0 = ymm0[0],mem[1],ymm0[2,3]
2056 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2057 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
2058 ; AVX1-ONLY-NEXT:    # ymm0 = mem[1,0,2,2]
2059 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],mem[2],ymm0[3]
2060 ; AVX1-ONLY-NEXT:    vblendpd $2, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2061 ; AVX1-ONLY-NEXT:    # ymm0 = ymm0[0],mem[1],ymm0[2,3]
2062 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2063 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
2064 ; AVX1-ONLY-NEXT:    # ymm0 = mem[1,0,2,2]
2065 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],mem[2],ymm0[3]
2066 ; AVX1-ONLY-NEXT:    vblendpd $2, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2067 ; AVX1-ONLY-NEXT:    # ymm0 = ymm0[0],mem[1],ymm0[2,3]
2068 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2069 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
2070 ; AVX1-ONLY-NEXT:    # ymm0 = mem[1,0,2,2]
2071 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],mem[2],ymm0[3]
2072 ; AVX1-ONLY-NEXT:    vblendpd $2, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2073 ; AVX1-ONLY-NEXT:    # ymm0 = ymm0[0],mem[1],ymm0[2,3]
2074 ; AVX1-ONLY-NEXT:    vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2075 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload
2076 ; AVX1-ONLY-NEXT:    # ymm0 = mem[1,0,2,2]
2077 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],mem[2],ymm0[3]
2078 ; AVX1-ONLY-NEXT:    vblendpd $2, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2079 ; AVX1-ONLY-NEXT:    # ymm0 = ymm0[0],mem[1],ymm0[2,3]
2080 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload
2081 ; AVX1-ONLY-NEXT:    # ymm15 = mem[1,0,2,2]
2082 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm15 = ymm15[0,1],mem[2],ymm15[3]
2083 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm14 = ymm15[0],ymm14[1],ymm15[2,3]
2084 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload
2085 ; AVX1-ONLY-NEXT:    # ymm15 = mem[1,0,2,2]
2086 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm15 = ymm15[0,1],mem[2],ymm15[3]
2087 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm13 = ymm15[0],ymm13[1],ymm15[2,3]
2088 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload
2089 ; AVX1-ONLY-NEXT:    # ymm15 = mem[1,0,2,2]
2090 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm15 = ymm15[0,1],mem[2],ymm15[3]
2091 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm11 = ymm15[0],ymm11[1],ymm15[2,3]
2092 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload
2093 ; AVX1-ONLY-NEXT:    # ymm15 = mem[1,0,2,2]
2094 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm15 = ymm15[0,1],mem[2],ymm15[3]
2095 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm9 = ymm15[0],ymm9[1],ymm15[2,3]
2096 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload
2097 ; AVX1-ONLY-NEXT:    # ymm15 = mem[1,0,2,2]
2098 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm15 = ymm15[0,1],mem[2],ymm15[3]
2099 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm7 = ymm15[0],ymm7[1],ymm15[2,3]
2100 ; AVX1-ONLY-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload
2101 ; AVX1-ONLY-NEXT:    # ymm15 = mem[1,0,2,2]
2102 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm15 = ymm15[0,1],mem[2],ymm15[3]
2103 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm6 = ymm15[0],ymm6[1],ymm15[2,3]
2104 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm12 = ymm12[1,0,2,2]
2105 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm12 = ymm12[0,1],mem[2],ymm12[3]
2106 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm5 = ymm12[0],ymm5[1],ymm12[2,3]
2107 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm10 = ymm10[1,0,2,2]
2108 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm10 = ymm10[0,1],mem[2],ymm10[3]
2109 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm3 = ymm10[0],ymm3[1],ymm10[2,3]
2110 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm8 = ymm8[1,0,2,2]
2111 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm8 = ymm8[0,1],mem[2],ymm8[3]
2112 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm2 = ymm8[0],ymm2[1],ymm8[2,3]
2113 ; AVX1-ONLY-NEXT:    vshufpd {{.*#+}} ymm4 = ymm4[1,0,2,2]
2114 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm4 = ymm4[0,1],mem[2],ymm4[3]
2115 ; AVX1-ONLY-NEXT:    vblendpd {{.*#+}} ymm1 = ymm4[0],ymm1[1],ymm4[2,3]
2116 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
2117 ; AVX1-ONLY-NEXT:    vmovaps %ymm4, 1504(%rcx)
2118 ; AVX1-ONLY-NEXT:    vmovapd %ymm1, 1472(%rcx)
2119 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2120 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 1408(%rcx)
2121 ; AVX1-ONLY-NEXT:    vmovapd %ymm2, 1376(%rcx)
2122 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2123 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 1312(%rcx)
2124 ; AVX1-ONLY-NEXT:    vmovapd %ymm3, 1280(%rcx)
2125 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2126 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 1216(%rcx)
2127 ; AVX1-ONLY-NEXT:    vmovapd %ymm5, 1184(%rcx)
2128 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2129 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 1120(%rcx)
2130 ; AVX1-ONLY-NEXT:    vmovapd %ymm6, 1088(%rcx)
2131 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2132 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 1024(%rcx)
2133 ; AVX1-ONLY-NEXT:    vmovapd %ymm7, 992(%rcx)
2134 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2135 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 928(%rcx)
2136 ; AVX1-ONLY-NEXT:    vmovapd %ymm9, 896(%rcx)
2137 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2138 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 832(%rcx)
2139 ; AVX1-ONLY-NEXT:    vmovapd %ymm11, 800(%rcx)
2140 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2141 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 736(%rcx)
2142 ; AVX1-ONLY-NEXT:    vmovapd %ymm13, 704(%rcx)
2143 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2144 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 640(%rcx)
2145 ; AVX1-ONLY-NEXT:    vmovapd %ymm14, 608(%rcx)
2146 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2147 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 544(%rcx)
2148 ; AVX1-ONLY-NEXT:    vmovapd %ymm0, 512(%rcx)
2149 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2150 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 448(%rcx)
2151 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2152 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 416(%rcx)
2153 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2154 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 352(%rcx)
2155 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2156 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 320(%rcx)
2157 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2158 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 256(%rcx)
2159 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2160 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 224(%rcx)
2161 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2162 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 160(%rcx)
2163 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2164 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 128(%rcx)
2165 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2166 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 64(%rcx)
2167 ; AVX1-ONLY-NEXT:    vmovups (%rsp), %ymm0 # 32-byte Reload
2168 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 32(%rcx)
2169 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2170 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 1440(%rcx)
2171 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2172 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 1344(%rcx)
2173 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2174 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 1248(%rcx)
2175 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2176 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 1152(%rcx)
2177 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2178 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 1056(%rcx)
2179 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2180 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 960(%rcx)
2181 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2182 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 864(%rcx)
2183 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2184 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 768(%rcx)
2185 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2186 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 672(%rcx)
2187 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2188 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 576(%rcx)
2189 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2190 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 480(%rcx)
2191 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2192 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 384(%rcx)
2193 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2194 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 288(%rcx)
2195 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2196 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 192(%rcx)
2197 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2198 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 96(%rcx)
2199 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2200 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, (%rcx)
2201 ; AVX1-ONLY-NEXT:    addq $1480, %rsp # imm = 0x5C8
2202 ; AVX1-ONLY-NEXT:    vzeroupper
2203 ; AVX1-ONLY-NEXT:    retq
2205 ; AVX2-ONLY-LABEL: store_i64_stride3_vf64:
2206 ; AVX2-ONLY:       # %bb.0:
2207 ; AVX2-ONLY-NEXT:    subq $936, %rsp # imm = 0x3A8
2208 ; AVX2-ONLY-NEXT:    vmovaps 128(%rdi), %ymm0
2209 ; AVX2-ONLY-NEXT:    vmovaps (%rdi), %ymm8
2210 ; AVX2-ONLY-NEXT:    vmovaps 32(%rdi), %ymm5
2211 ; AVX2-ONLY-NEXT:    vmovaps 64(%rdi), %ymm3
2212 ; AVX2-ONLY-NEXT:    vmovaps 96(%rdi), %ymm2
2213 ; AVX2-ONLY-NEXT:    vmovaps 128(%rsi), %ymm1
2214 ; AVX2-ONLY-NEXT:    vmovaps (%rsi), %ymm11
2215 ; AVX2-ONLY-NEXT:    vmovaps 32(%rsi), %ymm9
2216 ; AVX2-ONLY-NEXT:    vmovaps 64(%rsi), %ymm6
2217 ; AVX2-ONLY-NEXT:    vmovaps 96(%rsi), %ymm4
2218 ; AVX2-ONLY-NEXT:    vmovaps (%rdx), %ymm12
2219 ; AVX2-ONLY-NEXT:    vmovaps 32(%rdx), %ymm13
2220 ; AVX2-ONLY-NEXT:    vmovaps 64(%rdx), %ymm10
2221 ; AVX2-ONLY-NEXT:    vmovaps 96(%rdx), %ymm7
2222 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm14 = mem[0,0]
2223 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm15 = ymm8[0,1,2,1]
2224 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm14 = ymm15[0,1],ymm14[2,3],ymm15[4,5,6,7]
2225 ; AVX2-ONLY-NEXT:    vbroadcastsd (%rdx), %ymm15
2226 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm14 = ymm14[0,1,2,3],ymm15[4,5],ymm14[6,7]
2227 ; AVX2-ONLY-NEXT:    vmovups %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2228 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm14 = ymm11[2,3,0,1,6,7,4,5]
2229 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm14 = ymm14[0,1,2,3],ymm8[4,5],ymm14[6,7]
2230 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm14 = ymm14[0,1],ymm12[2,3],ymm14[4,5,6,7]
2231 ; AVX2-ONLY-NEXT:    vmovups %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2232 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm8 = ymm8[1],ymm11[1],ymm8[3],ymm11[3]
2233 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm8 = ymm8[0,2,3,3]
2234 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm11 = ymm12[2,1,2,3]
2235 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm8 = ymm11[0,1],ymm8[2,3,4,5],ymm11[6,7]
2236 ; AVX2-ONLY-NEXT:    vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2237 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm8 = mem[0,0]
2238 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm11 = ymm5[0,1,2,1]
2239 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm8 = ymm11[0,1],ymm8[2,3],ymm11[4,5,6,7]
2240 ; AVX2-ONLY-NEXT:    vbroadcastsd 32(%rdx), %ymm11
2241 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm8 = ymm8[0,1,2,3],ymm11[4,5],ymm8[6,7]
2242 ; AVX2-ONLY-NEXT:    vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2243 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm8 = ymm9[2,3,0,1,6,7,4,5]
2244 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm8 = ymm8[0,1,2,3],ymm5[4,5],ymm8[6,7]
2245 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm8 = ymm8[0,1],ymm13[2,3],ymm8[4,5,6,7]
2246 ; AVX2-ONLY-NEXT:    vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2247 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm5 = ymm5[1],ymm9[1],ymm5[3],ymm9[3]
2248 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm5 = ymm5[0,2,3,3]
2249 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm8 = ymm13[2,1,2,3]
2250 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm5 = ymm8[0,1],ymm5[2,3,4,5],ymm8[6,7]
2251 ; AVX2-ONLY-NEXT:    vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2252 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm5 = mem[0,0]
2253 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm8 = ymm3[0,1,2,1]
2254 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm5 = ymm8[0,1],ymm5[2,3],ymm8[4,5,6,7]
2255 ; AVX2-ONLY-NEXT:    vbroadcastsd 64(%rdx), %ymm8
2256 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm8[4,5],ymm5[6,7]
2257 ; AVX2-ONLY-NEXT:    vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2258 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm5 = ymm6[2,3,0,1,6,7,4,5]
2259 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm3[4,5],ymm5[6,7]
2260 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm5 = ymm5[0,1],ymm10[2,3],ymm5[4,5,6,7]
2261 ; AVX2-ONLY-NEXT:    vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2262 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm6[1],ymm3[3],ymm6[3]
2263 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm3 = ymm3[0,2,3,3]
2264 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm5 = ymm10[2,1,2,3]
2265 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm3 = ymm5[0,1],ymm3[2,3,4,5],ymm5[6,7]
2266 ; AVX2-ONLY-NEXT:    vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2267 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = mem[0,0]
2268 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm5 = ymm2[0,1,2,1]
2269 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm3 = ymm5[0,1],ymm3[2,3],ymm5[4,5,6,7]
2270 ; AVX2-ONLY-NEXT:    vbroadcastsd 96(%rdx), %ymm5
2271 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm5[4,5],ymm3[6,7]
2272 ; AVX2-ONLY-NEXT:    vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2273 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm3 = ymm4[2,3,0,1,6,7,4,5]
2274 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm2[4,5],ymm3[6,7]
2275 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1],ymm7[2,3],ymm3[4,5,6,7]
2276 ; AVX2-ONLY-NEXT:    vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2277 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm4[1],ymm2[3],ymm4[3]
2278 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm2[0,2,3,3]
2279 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm3 = ymm7[2,1,2,3]
2280 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3,4,5],ymm3[6,7]
2281 ; AVX2-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2282 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = mem[0,0]
2283 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm3 = ymm0[0,1,2,1]
2284 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5,6,7]
2285 ; AVX2-ONLY-NEXT:    vbroadcastsd 128(%rdx), %ymm3
2286 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm3[4,5],ymm2[6,7]
2287 ; AVX2-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2288 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm2 = ymm1[2,3,0,1,6,7,4,5]
2289 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5],ymm2[6,7]
2290 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2291 ; AVX2-ONLY-NEXT:    vmovaps 128(%rdx), %ymm1
2292 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2293 ; AVX2-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2294 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
2295 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
2296 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
2297 ; AVX2-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2298 ; AVX2-ONLY-NEXT:    vmovaps 160(%rdi), %ymm0
2299 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]
2300 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm0[0,1,2,1]
2301 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2302 ; AVX2-ONLY-NEXT:    vbroadcastsd 160(%rdx), %ymm2
2303 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]
2304 ; AVX2-ONLY-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2305 ; AVX2-ONLY-NEXT:    vmovaps 160(%rsi), %ymm1
2306 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm2 = ymm1[2,3,0,1,6,7,4,5]
2307 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5],ymm2[6,7]
2308 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2309 ; AVX2-ONLY-NEXT:    vmovaps 160(%rdx), %ymm1
2310 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2311 ; AVX2-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2312 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
2313 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
2314 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
2315 ; AVX2-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2316 ; AVX2-ONLY-NEXT:    vmovaps 192(%rdi), %ymm0
2317 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]
2318 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm0[0,1,2,1]
2319 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2320 ; AVX2-ONLY-NEXT:    vbroadcastsd 192(%rdx), %ymm2
2321 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]
2322 ; AVX2-ONLY-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2323 ; AVX2-ONLY-NEXT:    vmovaps 192(%rsi), %ymm1
2324 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm2 = ymm1[2,3,0,1,6,7,4,5]
2325 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5],ymm2[6,7]
2326 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2327 ; AVX2-ONLY-NEXT:    vmovaps 192(%rdx), %ymm1
2328 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2329 ; AVX2-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2330 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
2331 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
2332 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
2333 ; AVX2-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2334 ; AVX2-ONLY-NEXT:    vmovaps 224(%rdi), %ymm0
2335 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]
2336 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm0[0,1,2,1]
2337 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2338 ; AVX2-ONLY-NEXT:    vbroadcastsd 224(%rdx), %ymm2
2339 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]
2340 ; AVX2-ONLY-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2341 ; AVX2-ONLY-NEXT:    vmovaps 224(%rsi), %ymm1
2342 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm2 = ymm1[2,3,0,1,6,7,4,5]
2343 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5],ymm2[6,7]
2344 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2345 ; AVX2-ONLY-NEXT:    vmovaps 224(%rdx), %ymm1
2346 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2347 ; AVX2-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2348 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
2349 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
2350 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
2351 ; AVX2-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2352 ; AVX2-ONLY-NEXT:    vmovaps 256(%rdi), %ymm0
2353 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]
2354 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm0[0,1,2,1]
2355 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2356 ; AVX2-ONLY-NEXT:    vbroadcastsd 256(%rdx), %ymm2
2357 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]
2358 ; AVX2-ONLY-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2359 ; AVX2-ONLY-NEXT:    vmovaps 256(%rsi), %ymm1
2360 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm2 = ymm1[2,3,0,1,6,7,4,5]
2361 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5],ymm2[6,7]
2362 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2363 ; AVX2-ONLY-NEXT:    vmovaps 256(%rdx), %ymm1
2364 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2365 ; AVX2-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2366 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
2367 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
2368 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
2369 ; AVX2-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2370 ; AVX2-ONLY-NEXT:    vmovaps 288(%rdi), %ymm0
2371 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]
2372 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm0[0,1,2,1]
2373 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2374 ; AVX2-ONLY-NEXT:    vbroadcastsd 288(%rdx), %ymm2
2375 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]
2376 ; AVX2-ONLY-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2377 ; AVX2-ONLY-NEXT:    vmovaps 288(%rsi), %ymm1
2378 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm2 = ymm1[2,3,0,1,6,7,4,5]
2379 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5],ymm2[6,7]
2380 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2381 ; AVX2-ONLY-NEXT:    vmovaps 288(%rdx), %ymm1
2382 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2383 ; AVX2-ONLY-NEXT:    vmovups %ymm2, (%rsp) # 32-byte Spill
2384 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
2385 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
2386 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
2387 ; AVX2-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2388 ; AVX2-ONLY-NEXT:    vmovaps 320(%rdi), %ymm0
2389 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]
2390 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm0[0,1,2,1]
2391 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2392 ; AVX2-ONLY-NEXT:    vbroadcastsd 320(%rdx), %ymm2
2393 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]
2394 ; AVX2-ONLY-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2395 ; AVX2-ONLY-NEXT:    vmovaps 320(%rsi), %ymm1
2396 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm2 = ymm1[2,3,0,1,6,7,4,5]
2397 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5],ymm2[6,7]
2398 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2399 ; AVX2-ONLY-NEXT:    vmovaps 320(%rdx), %ymm1
2400 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2401 ; AVX2-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2402 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
2403 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
2404 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
2405 ; AVX2-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2406 ; AVX2-ONLY-NEXT:    vmovaps 352(%rdi), %ymm0
2407 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]
2408 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm0[0,1,2,1]
2409 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2410 ; AVX2-ONLY-NEXT:    vbroadcastsd 352(%rdx), %ymm2
2411 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm11 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]
2412 ; AVX2-ONLY-NEXT:    vmovaps 352(%rsi), %ymm1
2413 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm2 = ymm1[2,3,0,1,6,7,4,5]
2414 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5],ymm2[6,7]
2415 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2416 ; AVX2-ONLY-NEXT:    vmovaps 352(%rdx), %ymm1
2417 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm10 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2418 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
2419 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
2420 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm9 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
2421 ; AVX2-ONLY-NEXT:    vmovaps 384(%rdi), %ymm0
2422 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]
2423 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm0[0,1,2,1]
2424 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2425 ; AVX2-ONLY-NEXT:    vbroadcastsd 384(%rdx), %ymm2
2426 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm8 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]
2427 ; AVX2-ONLY-NEXT:    vmovaps 384(%rsi), %ymm1
2428 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm2 = ymm1[2,3,0,1,6,7,4,5]
2429 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5],ymm2[6,7]
2430 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2431 ; AVX2-ONLY-NEXT:    vmovaps 384(%rdx), %ymm1
2432 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm7 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2433 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
2434 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
2435 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm6 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
2436 ; AVX2-ONLY-NEXT:    vmovaps 416(%rdi), %ymm0
2437 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]
2438 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm2 = ymm0[0,1,2,1]
2439 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2440 ; AVX2-ONLY-NEXT:    vbroadcastsd 416(%rdx), %ymm2
2441 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm5 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]
2442 ; AVX2-ONLY-NEXT:    vmovaps 416(%rsi), %ymm1
2443 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm2 = ymm1[2,3,0,1,6,7,4,5]
2444 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5],ymm2[6,7]
2445 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
2446 ; AVX2-ONLY-NEXT:    vmovaps 416(%rdx), %ymm1
2447 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm4 = ymm2[0,1],ymm1[2,3],ymm2[4,5,6,7]
2448 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
2449 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,1,2,3]
2450 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm3 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
2451 ; AVX2-ONLY-NEXT:    vmovaps 448(%rdi), %ymm0
2452 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]
2453 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm15 = ymm0[0,1,2,1]
2454 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm15[0,1],ymm1[2,3],ymm15[4,5,6,7]
2455 ; AVX2-ONLY-NEXT:    vbroadcastsd 448(%rdx), %ymm15
2456 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm2 = ymm1[0,1,2,3],ymm15[4,5],ymm1[6,7]
2457 ; AVX2-ONLY-NEXT:    vmovaps 448(%rsi), %ymm15
2458 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm14 = ymm15[2,3,0,1,6,7,4,5]
2459 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm14 = ymm14[0,1,2,3],ymm0[4,5],ymm14[6,7]
2460 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm15[1],ymm0[3],ymm15[3]
2461 ; AVX2-ONLY-NEXT:    vmovaps 448(%rdx), %ymm15
2462 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm14 = ymm14[0,1],ymm15[2,3],ymm14[4,5,6,7]
2463 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,3,3]
2464 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm15 = ymm15[2,1,2,3]
2465 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm1 = ymm15[0,1],ymm0[2,3,4,5],ymm15[6,7]
2466 ; AVX2-ONLY-NEXT:    vmovaps 480(%rdi), %ymm15
2467 ; AVX2-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = mem[0,0]
2468 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm13 = ymm15[0,1,2,1]
2469 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm13[0,1],ymm0[2,3],ymm13[4,5,6,7]
2470 ; AVX2-ONLY-NEXT:    vbroadcastsd 480(%rdx), %ymm13
2471 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm13[4,5],ymm0[6,7]
2472 ; AVX2-ONLY-NEXT:    vmovaps 480(%rsi), %ymm13
2473 ; AVX2-ONLY-NEXT:    vshufps {{.*#+}} ymm12 = ymm13[2,3,0,1,6,7,4,5]
2474 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm12 = ymm12[0,1,2,3],ymm15[4,5],ymm12[6,7]
2475 ; AVX2-ONLY-NEXT:    vunpckhpd {{.*#+}} ymm13 = ymm15[1],ymm13[1],ymm15[3],ymm13[3]
2476 ; AVX2-ONLY-NEXT:    vmovaps 480(%rdx), %ymm15
2477 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm12 = ymm12[0,1],ymm15[2,3],ymm12[4,5,6,7]
2478 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm13 = ymm13[0,2,3,3]
2479 ; AVX2-ONLY-NEXT:    vpermpd {{.*#+}} ymm15 = ymm15[2,1,2,3]
2480 ; AVX2-ONLY-NEXT:    vblendps {{.*#+}} ymm13 = ymm15[0,1],ymm13[2,3,4,5],ymm15[6,7]
2481 ; AVX2-ONLY-NEXT:    vmovaps %ymm13, 1504(%rcx)
2482 ; AVX2-ONLY-NEXT:    vmovaps %ymm12, 1472(%rcx)
2483 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 1440(%rcx)
2484 ; AVX2-ONLY-NEXT:    vmovaps %ymm1, 1408(%rcx)
2485 ; AVX2-ONLY-NEXT:    vmovaps %ymm14, 1376(%rcx)
2486 ; AVX2-ONLY-NEXT:    vmovaps %ymm2, 1344(%rcx)
2487 ; AVX2-ONLY-NEXT:    vmovaps %ymm3, 1312(%rcx)
2488 ; AVX2-ONLY-NEXT:    vmovaps %ymm4, 1280(%rcx)
2489 ; AVX2-ONLY-NEXT:    vmovaps %ymm5, 1248(%rcx)
2490 ; AVX2-ONLY-NEXT:    vmovaps %ymm6, 1216(%rcx)
2491 ; AVX2-ONLY-NEXT:    vmovaps %ymm7, 1184(%rcx)
2492 ; AVX2-ONLY-NEXT:    vmovaps %ymm8, 1152(%rcx)
2493 ; AVX2-ONLY-NEXT:    vmovaps %ymm9, 1120(%rcx)
2494 ; AVX2-ONLY-NEXT:    vmovaps %ymm10, 1088(%rcx)
2495 ; AVX2-ONLY-NEXT:    vmovaps %ymm11, 1056(%rcx)
2496 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2497 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 1024(%rcx)
2498 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2499 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 992(%rcx)
2500 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2501 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 960(%rcx)
2502 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2503 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 928(%rcx)
2504 ; AVX2-ONLY-NEXT:    vmovups (%rsp), %ymm0 # 32-byte Reload
2505 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 896(%rcx)
2506 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2507 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 864(%rcx)
2508 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2509 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 832(%rcx)
2510 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2511 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 800(%rcx)
2512 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2513 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 768(%rcx)
2514 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2515 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 736(%rcx)
2516 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2517 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 704(%rcx)
2518 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2519 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 672(%rcx)
2520 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2521 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 640(%rcx)
2522 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2523 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 608(%rcx)
2524 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2525 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 576(%rcx)
2526 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2527 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 544(%rcx)
2528 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2529 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 512(%rcx)
2530 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2531 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 480(%rcx)
2532 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2533 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 448(%rcx)
2534 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2535 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 416(%rcx)
2536 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2537 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 384(%rcx)
2538 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2539 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 352(%rcx)
2540 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2541 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 320(%rcx)
2542 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2543 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 288(%rcx)
2544 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2545 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 256(%rcx)
2546 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2547 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 224(%rcx)
2548 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2549 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 192(%rcx)
2550 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2551 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 160(%rcx)
2552 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2553 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 128(%rcx)
2554 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2555 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 96(%rcx)
2556 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2557 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 64(%rcx)
2558 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2559 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 32(%rcx)
2560 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2561 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, (%rcx)
2562 ; AVX2-ONLY-NEXT:    addq $936, %rsp # imm = 0x3A8
2563 ; AVX2-ONLY-NEXT:    vzeroupper
2564 ; AVX2-ONLY-NEXT:    retq
2566 ; AVX512-LABEL: store_i64_stride3_vf64:
2567 ; AVX512:       # %bb.0:
2568 ; AVX512-NEXT:    vmovdqa64 448(%rdi), %zmm5
2569 ; AVX512-NEXT:    vmovdqa64 384(%rdi), %zmm11
2570 ; AVX512-NEXT:    vmovdqa64 320(%rdi), %zmm16
2571 ; AVX512-NEXT:    vmovdqa64 256(%rdi), %zmm24
2572 ; AVX512-NEXT:    vmovdqa64 (%rdi), %zmm13
2573 ; AVX512-NEXT:    vmovdqa64 64(%rdi), %zmm20
2574 ; AVX512-NEXT:    vmovdqa64 128(%rdi), %zmm27
2575 ; AVX512-NEXT:    vmovdqa64 192(%rdi), %zmm30
2576 ; AVX512-NEXT:    vmovdqa64 448(%rsi), %zmm9
2577 ; AVX512-NEXT:    vmovdqa64 384(%rsi), %zmm8
2578 ; AVX512-NEXT:    vmovdqa64 320(%rsi), %zmm7
2579 ; AVX512-NEXT:    vmovdqa64 256(%rsi), %zmm4
2580 ; AVX512-NEXT:    vmovdqa64 (%rsi), %zmm0
2581 ; AVX512-NEXT:    vmovdqa64 64(%rsi), %zmm1
2582 ; AVX512-NEXT:    vmovdqa64 128(%rsi), %zmm2
2583 ; AVX512-NEXT:    vmovdqa64 192(%rsi), %zmm6
2584 ; AVX512-NEXT:    vmovdqa64 448(%rdx), %zmm12
2585 ; AVX512-NEXT:    vmovdqa64 384(%rdx), %zmm18
2586 ; AVX512-NEXT:    vmovdqa64 320(%rdx), %zmm26
2587 ; AVX512-NEXT:    vmovdqa64 256(%rdx), %zmm28
2588 ; AVX512-NEXT:    vmovdqa64 (%rdx), %zmm15
2589 ; AVX512-NEXT:    vmovdqa64 64(%rdx), %zmm25
2590 ; AVX512-NEXT:    vmovdqa64 128(%rdx), %zmm29
2591 ; AVX512-NEXT:    vmovdqa64 192(%rdx), %zmm31
2592 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm14 = <0,8,u,1,9,u,2,10>
2593 ; AVX512-NEXT:    vmovdqa64 %zmm13, %zmm3
2594 ; AVX512-NEXT:    vpermt2q %zmm0, %zmm14, %zmm3
2595 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm19 = [0,1,8,3,4,9,6,7]
2596 ; AVX512-NEXT:    vpermt2q %zmm15, %zmm19, %zmm3
2597 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm17 = <u,3,11,u,4,12,u,5>
2598 ; AVX512-NEXT:    vmovdqa64 %zmm13, %zmm10
2599 ; AVX512-NEXT:    vpermt2q %zmm0, %zmm17, %zmm10
2600 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm21 = [10,1,2,11,4,5,12,7]
2601 ; AVX512-NEXT:    vpermt2q %zmm15, %zmm21, %zmm10
2602 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm22 = <5,u,14,6,u,15,7,u>
2603 ; AVX512-NEXT:    vpermt2q %zmm13, %zmm22, %zmm0
2604 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm23 = [0,13,2,3,14,5,6,15]
2605 ; AVX512-NEXT:    vpermt2q %zmm15, %zmm23, %zmm0
2606 ; AVX512-NEXT:    vmovdqa64 %zmm20, %zmm13
2607 ; AVX512-NEXT:    vpermt2q %zmm1, %zmm14, %zmm13
2608 ; AVX512-NEXT:    vpermt2q %zmm25, %zmm19, %zmm13
2609 ; AVX512-NEXT:    vmovdqa64 %zmm20, %zmm15
2610 ; AVX512-NEXT:    vpermt2q %zmm1, %zmm17, %zmm15
2611 ; AVX512-NEXT:    vpermt2q %zmm25, %zmm21, %zmm15
2612 ; AVX512-NEXT:    vpermt2q %zmm20, %zmm22, %zmm1
2613 ; AVX512-NEXT:    vpermt2q %zmm25, %zmm23, %zmm1
2614 ; AVX512-NEXT:    vmovdqa64 %zmm27, %zmm20
2615 ; AVX512-NEXT:    vpermt2q %zmm2, %zmm14, %zmm20
2616 ; AVX512-NEXT:    vpermt2q %zmm29, %zmm19, %zmm20
2617 ; AVX512-NEXT:    vmovdqa64 %zmm27, %zmm25
2618 ; AVX512-NEXT:    vpermt2q %zmm2, %zmm17, %zmm25
2619 ; AVX512-NEXT:    vpermt2q %zmm29, %zmm21, %zmm25
2620 ; AVX512-NEXT:    vpermt2q %zmm27, %zmm22, %zmm2
2621 ; AVX512-NEXT:    vpermt2q %zmm29, %zmm23, %zmm2
2622 ; AVX512-NEXT:    vmovdqa64 %zmm30, %zmm27
2623 ; AVX512-NEXT:    vpermt2q %zmm6, %zmm14, %zmm27
2624 ; AVX512-NEXT:    vpermt2q %zmm31, %zmm19, %zmm27
2625 ; AVX512-NEXT:    vmovdqa64 %zmm30, %zmm29
2626 ; AVX512-NEXT:    vpermt2q %zmm6, %zmm17, %zmm29
2627 ; AVX512-NEXT:    vpermt2q %zmm31, %zmm21, %zmm29
2628 ; AVX512-NEXT:    vpermt2q %zmm30, %zmm22, %zmm6
2629 ; AVX512-NEXT:    vpermt2q %zmm31, %zmm23, %zmm6
2630 ; AVX512-NEXT:    vmovdqa64 %zmm24, %zmm30
2631 ; AVX512-NEXT:    vpermt2q %zmm4, %zmm14, %zmm30
2632 ; AVX512-NEXT:    vpermt2q %zmm28, %zmm19, %zmm30
2633 ; AVX512-NEXT:    vmovdqa64 %zmm24, %zmm31
2634 ; AVX512-NEXT:    vpermt2q %zmm4, %zmm17, %zmm31
2635 ; AVX512-NEXT:    vpermt2q %zmm28, %zmm21, %zmm31
2636 ; AVX512-NEXT:    vpermt2q %zmm24, %zmm22, %zmm4
2637 ; AVX512-NEXT:    vpermt2q %zmm28, %zmm23, %zmm4
2638 ; AVX512-NEXT:    vmovdqa64 %zmm16, %zmm24
2639 ; AVX512-NEXT:    vpermt2q %zmm7, %zmm14, %zmm24
2640 ; AVX512-NEXT:    vpermt2q %zmm26, %zmm19, %zmm24
2641 ; AVX512-NEXT:    vmovdqa64 %zmm16, %zmm28
2642 ; AVX512-NEXT:    vpermt2q %zmm7, %zmm17, %zmm28
2643 ; AVX512-NEXT:    vpermt2q %zmm26, %zmm21, %zmm28
2644 ; AVX512-NEXT:    vpermt2q %zmm16, %zmm22, %zmm7
2645 ; AVX512-NEXT:    vpermt2q %zmm26, %zmm23, %zmm7
2646 ; AVX512-NEXT:    vmovdqa64 %zmm11, %zmm16
2647 ; AVX512-NEXT:    vpermt2q %zmm8, %zmm14, %zmm16
2648 ; AVX512-NEXT:    vpermt2q %zmm18, %zmm19, %zmm16
2649 ; AVX512-NEXT:    vmovdqa64 %zmm11, %zmm26
2650 ; AVX512-NEXT:    vpermt2q %zmm8, %zmm17, %zmm26
2651 ; AVX512-NEXT:    vpermt2q %zmm18, %zmm21, %zmm26
2652 ; AVX512-NEXT:    vpermt2q %zmm11, %zmm22, %zmm8
2653 ; AVX512-NEXT:    vpermt2q %zmm18, %zmm23, %zmm8
2654 ; AVX512-NEXT:    vpermi2q %zmm9, %zmm5, %zmm14
2655 ; AVX512-NEXT:    vpermt2q %zmm12, %zmm19, %zmm14
2656 ; AVX512-NEXT:    vpermi2q %zmm9, %zmm5, %zmm17
2657 ; AVX512-NEXT:    vpermt2q %zmm12, %zmm21, %zmm17
2658 ; AVX512-NEXT:    vpermt2q %zmm5, %zmm22, %zmm9
2659 ; AVX512-NEXT:    vpermt2q %zmm12, %zmm23, %zmm9
2660 ; AVX512-NEXT:    vmovdqa64 %zmm9, 1472(%rcx)
2661 ; AVX512-NEXT:    vmovdqa64 %zmm17, 1408(%rcx)
2662 ; AVX512-NEXT:    vmovdqa64 %zmm14, 1344(%rcx)
2663 ; AVX512-NEXT:    vmovdqa64 %zmm8, 1280(%rcx)
2664 ; AVX512-NEXT:    vmovdqa64 %zmm26, 1216(%rcx)
2665 ; AVX512-NEXT:    vmovdqa64 %zmm16, 1152(%rcx)
2666 ; AVX512-NEXT:    vmovdqa64 %zmm7, 1088(%rcx)
2667 ; AVX512-NEXT:    vmovdqa64 %zmm28, 1024(%rcx)
2668 ; AVX512-NEXT:    vmovdqa64 %zmm24, 960(%rcx)
2669 ; AVX512-NEXT:    vmovdqa64 %zmm4, 896(%rcx)
2670 ; AVX512-NEXT:    vmovdqa64 %zmm31, 832(%rcx)
2671 ; AVX512-NEXT:    vmovdqa64 %zmm30, 768(%rcx)
2672 ; AVX512-NEXT:    vmovdqa64 %zmm6, 704(%rcx)
2673 ; AVX512-NEXT:    vmovdqa64 %zmm29, 640(%rcx)
2674 ; AVX512-NEXT:    vmovdqa64 %zmm27, 576(%rcx)
2675 ; AVX512-NEXT:    vmovdqa64 %zmm2, 512(%rcx)
2676 ; AVX512-NEXT:    vmovdqa64 %zmm25, 448(%rcx)
2677 ; AVX512-NEXT:    vmovdqa64 %zmm20, 384(%rcx)
2678 ; AVX512-NEXT:    vmovdqa64 %zmm1, 320(%rcx)
2679 ; AVX512-NEXT:    vmovdqa64 %zmm15, 256(%rcx)
2680 ; AVX512-NEXT:    vmovdqa64 %zmm13, 192(%rcx)
2681 ; AVX512-NEXT:    vmovdqa64 %zmm0, 128(%rcx)
2682 ; AVX512-NEXT:    vmovdqa64 %zmm10, 64(%rcx)
2683 ; AVX512-NEXT:    vmovdqa64 %zmm3, (%rcx)
2684 ; AVX512-NEXT:    vzeroupper
2685 ; AVX512-NEXT:    retq
2686   %in.vec0 = load <64 x i64>, ptr %in.vecptr0, align 64
2687   %in.vec1 = load <64 x i64>, ptr %in.vecptr1, align 64
2688   %in.vec2 = load <64 x i64>, ptr %in.vecptr2, align 64
2689   %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>
2690   %2 = shufflevector <64 x i64> %in.vec2, <64 x i64> poison, <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 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
2691   %3 = shufflevector <128 x i64> %1, <128 x i64> %2, <192 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>
2692   %interleaved.vec = shufflevector <192 x i64> %3, <192 x i64> poison, <192 x i32> <i32 0, i32 64, i32 128, i32 1, i32 65, i32 129, i32 2, i32 66, i32 130, i32 3, i32 67, i32 131, i32 4, i32 68, i32 132, i32 5, i32 69, i32 133, i32 6, i32 70, i32 134, i32 7, i32 71, i32 135, i32 8, i32 72, i32 136, i32 9, i32 73, i32 137, i32 10, i32 74, i32 138, i32 11, i32 75, i32 139, i32 12, i32 76, i32 140, i32 13, i32 77, i32 141, i32 14, i32 78, i32 142, i32 15, i32 79, i32 143, i32 16, i32 80, i32 144, i32 17, i32 81, i32 145, i32 18, i32 82, i32 146, i32 19, i32 83, i32 147, i32 20, i32 84, i32 148, i32 21, i32 85, i32 149, i32 22, i32 86, i32 150, i32 23, i32 87, i32 151, i32 24, i32 88, i32 152, i32 25, i32 89, i32 153, i32 26, i32 90, i32 154, i32 27, i32 91, i32 155, i32 28, i32 92, i32 156, i32 29, i32 93, i32 157, i32 30, i32 94, i32 158, i32 31, i32 95, i32 159, i32 32, i32 96, i32 160, i32 33, i32 97, i32 161, i32 34, i32 98, i32 162, i32 35, i32 99, i32 163, i32 36, i32 100, i32 164, i32 37, i32 101, i32 165, i32 38, i32 102, i32 166, i32 39, i32 103, i32 167, i32 40, i32 104, i32 168, i32 41, i32 105, i32 169, i32 42, i32 106, i32 170, i32 43, i32 107, i32 171, i32 44, i32 108, i32 172, i32 45, i32 109, i32 173, i32 46, i32 110, i32 174, i32 47, i32 111, i32 175, i32 48, i32 112, i32 176, i32 49, i32 113, i32 177, i32 50, i32 114, i32 178, i32 51, i32 115, i32 179, i32 52, i32 116, i32 180, i32 53, i32 117, i32 181, i32 54, i32 118, i32 182, i32 55, i32 119, i32 183, i32 56, i32 120, i32 184, i32 57, i32 121, i32 185, i32 58, i32 122, i32 186, i32 59, i32 123, i32 187, i32 60, i32 124, i32 188, i32 61, i32 125, i32 189, i32 62, i32 126, i32 190, i32 63, i32 127, i32 191>
2693   store <192 x i64> %interleaved.vec, ptr %out.vec, align 64
2694   ret void
2696 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
2697 ; AVX: {{.*}}
2698 ; AVX1: {{.*}}
2699 ; AVX2: {{.*}}
2700 ; AVX2-FAST: {{.*}}
2701 ; AVX2-FAST-PERLANE: {{.*}}
2702 ; AVX2-SLOW: {{.*}}
2703 ; AVX512-FAST: {{.*}}
2704 ; AVX512-SLOW: {{.*}}
2705 ; AVX512BW: {{.*}}
2706 ; AVX512BW-FAST: {{.*}}
2707 ; AVX512BW-ONLY-FAST: {{.*}}
2708 ; AVX512BW-ONLY-SLOW: {{.*}}
2709 ; AVX512BW-SLOW: {{.*}}
2710 ; AVX512DQ-FAST: {{.*}}
2711 ; AVX512DQ-SLOW: {{.*}}
2712 ; AVX512DQBW-FAST: {{.*}}
2713 ; AVX512DQBW-SLOW: {{.*}}
2714 ; AVX512F: {{.*}}
2715 ; AVX512F-FAST: {{.*}}
2716 ; AVX512F-ONLY-FAST: {{.*}}
2717 ; AVX512F-ONLY-SLOW: {{.*}}
2718 ; AVX512F-SLOW: {{.*}}
2719 ; FALLBACK0: {{.*}}
2720 ; FALLBACK1: {{.*}}
2721 ; FALLBACK10: {{.*}}
2722 ; FALLBACK11: {{.*}}
2723 ; FALLBACK12: {{.*}}
2724 ; FALLBACK2: {{.*}}
2725 ; FALLBACK3: {{.*}}
2726 ; FALLBACK4: {{.*}}
2727 ; FALLBACK5: {{.*}}
2728 ; FALLBACK6: {{.*}}
2729 ; FALLBACK7: {{.*}}
2730 ; FALLBACK8: {{.*}}
2731 ; FALLBACK9: {{.*}}