1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,FALLBACK0
3 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX1,AVX1-ONLY,FALLBACK1
4 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-SLOW,FALLBACK2
5 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-FAST,FALLBACK3
6 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-FAST-PERLANE,FALLBACK4
7 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-SLOW,AVX512F-SLOW,AVX512F-ONLY-SLOW,FALLBACK5
8 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-FAST,AVX512F-FAST,AVX512F-ONLY-FAST,FALLBACK6
9 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-SLOW,AVX512F-SLOW,AVX512DQ-SLOW,FALLBACK7
10 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-FAST,AVX512F-FAST,AVX512DQ-FAST,FALLBACK8
11 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-SLOW,AVX512BW-SLOW,AVX512BW-ONLY-SLOW,FALLBACK9
12 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-FAST,AVX512BW-FAST,AVX512BW-ONLY-FAST,FALLBACK10
13 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-SLOW,AVX512BW-SLOW,AVX512DQBW-SLOW,FALLBACK11
14 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-FAST,AVX512BW-FAST,AVX512DQBW-FAST,FALLBACK12
16 ; These patterns are produced by LoopVectorizer for interleaved loads.
18 define void @load_i32_stride4_vf2(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {
19 ; SSE-LABEL: load_i32_stride4_vf2:
21 ; SSE-NEXT: movdqa (%rdi), %xmm0
22 ; SSE-NEXT: movdqa 16(%rdi), %xmm1
23 ; SSE-NEXT: movdqa %xmm0, %xmm2
24 ; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
25 ; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm2[2,3,2,3]
26 ; SSE-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
27 ; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
28 ; SSE-NEXT: movq %xmm2, (%rsi)
29 ; SSE-NEXT: movq %xmm3, (%rdx)
30 ; SSE-NEXT: movq %xmm0, (%rcx)
31 ; SSE-NEXT: movq %xmm1, (%r8)
34 ; AVX1-ONLY-LABEL: load_i32_stride4_vf2:
36 ; AVX1-ONLY-NEXT: vmovdqa (%rdi), %xmm0
37 ; AVX1-ONLY-NEXT: vmovdqa 16(%rdi), %xmm1
38 ; AVX1-ONLY-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
39 ; AVX1-ONLY-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[1,1,1,1]
40 ; AVX1-ONLY-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm1[2,3],xmm3[4,5,6,7]
41 ; AVX1-ONLY-NEXT: vpunpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
42 ; AVX1-ONLY-NEXT: vmovq %xmm2, (%rsi)
43 ; AVX1-ONLY-NEXT: vmovq %xmm3, (%rdx)
44 ; AVX1-ONLY-NEXT: vmovq %xmm0, (%rcx)
45 ; AVX1-ONLY-NEXT: vpextrq $1, %xmm0, (%r8)
46 ; AVX1-ONLY-NEXT: retq
48 ; AVX2-ONLY-LABEL: load_i32_stride4_vf2:
50 ; AVX2-ONLY-NEXT: vmovdqa (%rdi), %xmm0
51 ; AVX2-ONLY-NEXT: vmovdqa 16(%rdi), %xmm1
52 ; AVX2-ONLY-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
53 ; AVX2-ONLY-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[1,1,1,1]
54 ; AVX2-ONLY-NEXT: vpblendd {{.*#+}} xmm3 = xmm3[0],xmm1[1],xmm3[2,3]
55 ; AVX2-ONLY-NEXT: vpunpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
56 ; AVX2-ONLY-NEXT: vmovq %xmm2, (%rsi)
57 ; AVX2-ONLY-NEXT: vmovq %xmm3, (%rdx)
58 ; AVX2-ONLY-NEXT: vmovq %xmm0, (%rcx)
59 ; AVX2-ONLY-NEXT: vpextrq $1, %xmm0, (%r8)
60 ; AVX2-ONLY-NEXT: retq
62 ; AVX512-SLOW-LABEL: load_i32_stride4_vf2:
63 ; AVX512-SLOW: # %bb.0:
64 ; AVX512-SLOW-NEXT: vmovdqa (%rdi), %xmm0
65 ; AVX512-SLOW-NEXT: vmovdqa 16(%rdi), %xmm1
66 ; AVX512-SLOW-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
67 ; AVX512-SLOW-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[1,1,1,1]
68 ; AVX512-SLOW-NEXT: vpblendd {{.*#+}} xmm3 = xmm3[0],xmm1[1],xmm3[2,3]
69 ; AVX512-SLOW-NEXT: vpunpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
70 ; AVX512-SLOW-NEXT: vmovq %xmm2, (%rsi)
71 ; AVX512-SLOW-NEXT: vmovq %xmm3, (%rdx)
72 ; AVX512-SLOW-NEXT: vmovq %xmm0, (%rcx)
73 ; AVX512-SLOW-NEXT: vpextrq $1, %xmm0, (%r8)
74 ; AVX512-SLOW-NEXT: retq
76 ; AVX512-FAST-LABEL: load_i32_stride4_vf2:
77 ; AVX512-FAST: # %bb.0:
78 ; AVX512-FAST-NEXT: vmovdqa (%rdi), %xmm0
79 ; AVX512-FAST-NEXT: vmovdqa 16(%rdi), %xmm1
80 ; AVX512-FAST-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
81 ; AVX512-FAST-NEXT: vpbroadcastq {{.*#+}} xmm3 = [1,5,1,5]
82 ; AVX512-FAST-NEXT: vpermi2d %xmm1, %xmm0, %xmm3
83 ; AVX512-FAST-NEXT: vpunpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
84 ; AVX512-FAST-NEXT: vmovq %xmm2, (%rsi)
85 ; AVX512-FAST-NEXT: vmovq %xmm3, (%rdx)
86 ; AVX512-FAST-NEXT: vmovq %xmm0, (%rcx)
87 ; AVX512-FAST-NEXT: vpextrq $1, %xmm0, (%r8)
88 ; AVX512-FAST-NEXT: retq
89 %wide.vec = load <8 x i32>, ptr %in.vec, align 64
90 %strided.vec0 = shufflevector <8 x i32> %wide.vec, <8 x i32> poison, <2 x i32> <i32 0, i32 4>
91 %strided.vec1 = shufflevector <8 x i32> %wide.vec, <8 x i32> poison, <2 x i32> <i32 1, i32 5>
92 %strided.vec2 = shufflevector <8 x i32> %wide.vec, <8 x i32> poison, <2 x i32> <i32 2, i32 6>
93 %strided.vec3 = shufflevector <8 x i32> %wide.vec, <8 x i32> poison, <2 x i32> <i32 3, i32 7>
94 store <2 x i32> %strided.vec0, ptr %out.vec0, align 64
95 store <2 x i32> %strided.vec1, ptr %out.vec1, align 64
96 store <2 x i32> %strided.vec2, ptr %out.vec2, align 64
97 store <2 x i32> %strided.vec3, ptr %out.vec3, align 64
101 define void @load_i32_stride4_vf4(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {
102 ; SSE-LABEL: load_i32_stride4_vf4:
104 ; SSE-NEXT: movaps (%rdi), %xmm0
105 ; SSE-NEXT: movaps 16(%rdi), %xmm1
106 ; SSE-NEXT: movaps 32(%rdi), %xmm2
107 ; SSE-NEXT: movaps 48(%rdi), %xmm3
108 ; SSE-NEXT: movaps %xmm2, %xmm4
109 ; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]
110 ; SSE-NEXT: movaps %xmm0, %xmm5
111 ; SSE-NEXT: unpcklps {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1]
112 ; SSE-NEXT: movaps %xmm5, %xmm6
113 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm4[0]
114 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm4[1]
115 ; SSE-NEXT: unpckhps {{.*#+}} xmm2 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]
116 ; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
117 ; SSE-NEXT: movaps %xmm0, %xmm1
118 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
119 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]
120 ; SSE-NEXT: movaps %xmm6, (%rsi)
121 ; SSE-NEXT: movaps %xmm5, (%rdx)
122 ; SSE-NEXT: movaps %xmm1, (%rcx)
123 ; SSE-NEXT: movaps %xmm0, (%r8)
126 ; AVX1-ONLY-LABEL: load_i32_stride4_vf4:
127 ; AVX1-ONLY: # %bb.0:
128 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm0
129 ; AVX1-ONLY-NEXT: vmovaps 16(%rdi), %xmm1
130 ; AVX1-ONLY-NEXT: vmovaps 32(%rdi), %xmm2
131 ; AVX1-ONLY-NEXT: vmovaps 48(%rdi), %xmm3
132 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm4 = xmm3[0],xmm2[0]
133 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm5 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
134 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm4 = xmm5[0,1],xmm4[2,0]
135 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm5 = xmm0[1],xmm1[1],zero,zero
136 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm6 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
137 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm5 = xmm5[0,1],xmm6[2,3]
138 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm6 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
139 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm7 = zero,zero,xmm2[2],xmm3[2]
140 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm6[0,1],xmm7[2,3]
141 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm2 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]
142 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm0 = xmm1[3,0],xmm0[3,0]
143 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm0 = xmm0[2,0],xmm2[2,3]
144 ; AVX1-ONLY-NEXT: vmovaps %xmm4, (%rsi)
145 ; AVX1-ONLY-NEXT: vmovaps %xmm5, (%rdx)
146 ; AVX1-ONLY-NEXT: vmovaps %xmm6, (%rcx)
147 ; AVX1-ONLY-NEXT: vmovaps %xmm0, (%r8)
148 ; AVX1-ONLY-NEXT: retq
150 ; AVX2-ONLY-LABEL: load_i32_stride4_vf4:
151 ; AVX2-ONLY: # %bb.0:
152 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm0 = [0,4,0,4]
153 ; AVX2-ONLY-NEXT: # xmm0 = mem[0,0]
154 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm1
155 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm0, %ymm0
156 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm2
157 ; AVX2-ONLY-NEXT: vmovaps 16(%rdi), %xmm3
158 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm4
159 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm5 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
160 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm5[0,1],xmm0[2,3]
161 ; AVX2-ONLY-NEXT: vmovaps 48(%rdi), %xmm5
162 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm6 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
163 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm7 = [1,5,1,5]
164 ; AVX2-ONLY-NEXT: # xmm7 = mem[0,0]
165 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm8
166 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm7, %ymm7
167 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm7[0,1],xmm6[2,3]
168 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm7 = [2,6,2,6]
169 ; AVX2-ONLY-NEXT: # xmm7 = mem[0,0]
170 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm7, %ymm1
171 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm2 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]
172 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,3]
173 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm2 = xmm4[2],xmm5[2],xmm4[3],xmm5[3]
174 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm3 = [3,7,3,7]
175 ; AVX2-ONLY-NEXT: # xmm3 = mem[0,0]
176 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm3, %ymm3
177 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm2 = xmm3[0,1],xmm2[2,3]
178 ; AVX2-ONLY-NEXT: vmovaps %xmm0, (%rsi)
179 ; AVX2-ONLY-NEXT: vmovaps %xmm6, (%rdx)
180 ; AVX2-ONLY-NEXT: vmovaps %xmm1, (%rcx)
181 ; AVX2-ONLY-NEXT: vmovaps %xmm2, (%r8)
182 ; AVX2-ONLY-NEXT: vzeroupper
183 ; AVX2-ONLY-NEXT: retq
185 ; AVX512-LABEL: load_i32_stride4_vf4:
187 ; AVX512-NEXT: vmovdqa {{.*#+}} xmm0 = [0,4,8,12]
188 ; AVX512-NEXT: vmovdqa (%rdi), %ymm1
189 ; AVX512-NEXT: vmovdqa 32(%rdi), %ymm2
190 ; AVX512-NEXT: vpermi2d %ymm2, %ymm1, %ymm0
191 ; AVX512-NEXT: vmovdqa {{.*#+}} xmm3 = [1,5,9,13]
192 ; AVX512-NEXT: vpermi2d %ymm2, %ymm1, %ymm3
193 ; AVX512-NEXT: vmovdqa {{.*#+}} xmm4 = [2,6,10,14]
194 ; AVX512-NEXT: vpermi2d %ymm2, %ymm1, %ymm4
195 ; AVX512-NEXT: vmovdqa {{.*#+}} xmm5 = [3,7,11,15]
196 ; AVX512-NEXT: vpermi2d %ymm2, %ymm1, %ymm5
197 ; AVX512-NEXT: vmovdqa %xmm0, (%rsi)
198 ; AVX512-NEXT: vmovdqa %xmm3, (%rdx)
199 ; AVX512-NEXT: vmovdqa %xmm4, (%rcx)
200 ; AVX512-NEXT: vmovdqa %xmm5, (%r8)
201 ; AVX512-NEXT: vzeroupper
203 %wide.vec = load <16 x i32>, ptr %in.vec, align 64
204 %strided.vec0 = shufflevector <16 x i32> %wide.vec, <16 x i32> poison, <4 x i32> <i32 0, i32 4, i32 8, i32 12>
205 %strided.vec1 = shufflevector <16 x i32> %wide.vec, <16 x i32> poison, <4 x i32> <i32 1, i32 5, i32 9, i32 13>
206 %strided.vec2 = shufflevector <16 x i32> %wide.vec, <16 x i32> poison, <4 x i32> <i32 2, i32 6, i32 10, i32 14>
207 %strided.vec3 = shufflevector <16 x i32> %wide.vec, <16 x i32> poison, <4 x i32> <i32 3, i32 7, i32 11, i32 15>
208 store <4 x i32> %strided.vec0, ptr %out.vec0, align 64
209 store <4 x i32> %strided.vec1, ptr %out.vec1, align 64
210 store <4 x i32> %strided.vec2, ptr %out.vec2, align 64
211 store <4 x i32> %strided.vec3, ptr %out.vec3, align 64
215 define void @load_i32_stride4_vf8(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {
216 ; SSE-LABEL: load_i32_stride4_vf8:
218 ; SSE-NEXT: movaps (%rdi), %xmm0
219 ; SSE-NEXT: movaps 16(%rdi), %xmm3
220 ; SSE-NEXT: movaps 32(%rdi), %xmm2
221 ; SSE-NEXT: movaps 48(%rdi), %xmm4
222 ; SSE-NEXT: movaps 80(%rdi), %xmm5
223 ; SSE-NEXT: movaps 64(%rdi), %xmm1
224 ; SSE-NEXT: movaps 112(%rdi), %xmm6
225 ; SSE-NEXT: movaps 96(%rdi), %xmm7
226 ; SSE-NEXT: movaps %xmm7, %xmm8
227 ; SSE-NEXT: unpcklps {{.*#+}} xmm8 = xmm8[0],xmm6[0],xmm8[1],xmm6[1]
228 ; SSE-NEXT: movaps %xmm1, %xmm9
229 ; SSE-NEXT: unpcklps {{.*#+}} xmm9 = xmm9[0],xmm5[0],xmm9[1],xmm5[1]
230 ; SSE-NEXT: movaps %xmm9, %xmm10
231 ; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm8[0]
232 ; SSE-NEXT: movaps %xmm2, %xmm11
233 ; SSE-NEXT: unpcklps {{.*#+}} xmm11 = xmm11[0],xmm4[0],xmm11[1],xmm4[1]
234 ; SSE-NEXT: movaps %xmm0, %xmm12
235 ; SSE-NEXT: unpcklps {{.*#+}} xmm12 = xmm12[0],xmm3[0],xmm12[1],xmm3[1]
236 ; SSE-NEXT: movaps %xmm12, %xmm13
237 ; SSE-NEXT: movlhps {{.*#+}} xmm13 = xmm13[0],xmm11[0]
238 ; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm8[1]
239 ; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm11[1]
240 ; SSE-NEXT: unpckhps {{.*#+}} xmm7 = xmm7[2],xmm6[2],xmm7[3],xmm6[3]
241 ; SSE-NEXT: unpckhps {{.*#+}} xmm1 = xmm1[2],xmm5[2],xmm1[3],xmm5[3]
242 ; SSE-NEXT: movaps %xmm1, %xmm5
243 ; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm7[0]
244 ; SSE-NEXT: unpckhps {{.*#+}} xmm2 = xmm2[2],xmm4[2],xmm2[3],xmm4[3]
245 ; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm3[2],xmm0[3],xmm3[3]
246 ; SSE-NEXT: movaps %xmm0, %xmm3
247 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm2[0]
248 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm7[1]
249 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]
250 ; SSE-NEXT: movaps %xmm10, 16(%rsi)
251 ; SSE-NEXT: movaps %xmm13, (%rsi)
252 ; SSE-NEXT: movaps %xmm9, 16(%rdx)
253 ; SSE-NEXT: movaps %xmm12, (%rdx)
254 ; SSE-NEXT: movaps %xmm5, 16(%rcx)
255 ; SSE-NEXT: movaps %xmm3, (%rcx)
256 ; SSE-NEXT: movaps %xmm1, 16(%r8)
257 ; SSE-NEXT: movaps %xmm0, (%r8)
260 ; AVX1-ONLY-LABEL: load_i32_stride4_vf8:
261 ; AVX1-ONLY: # %bb.0:
262 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %ymm0
263 ; AVX1-ONLY-NEXT: vmovaps 96(%rdi), %ymm1
264 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm1[2,3,0,1]
265 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm1[0],ymm2[0],ymm1[2],ymm2[2]
266 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm0[2,3,0,1]
267 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm5 = ymm4[0],ymm0[0],ymm4[1],ymm0[1],ymm4[4],ymm0[4],ymm4[5],ymm0[5]
268 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm5[0,1],ymm3[2,0],ymm5[4,5],ymm3[6,4]
269 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm5
270 ; AVX1-ONLY-NEXT: vmovaps 16(%rdi), %xmm6
271 ; AVX1-ONLY-NEXT: vmovaps 32(%rdi), %xmm7
272 ; AVX1-ONLY-NEXT: vmovaps 48(%rdi), %xmm8
273 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm9 = xmm8[0],xmm7[0]
274 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm10 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]
275 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm9 = xmm10[0,1],xmm9[2,0]
276 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm9[0,1,2,3],ymm3[4,5,6,7]
277 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm9 = ymm2[0],ymm1[0],ymm2[1],ymm1[1],ymm2[4],ymm1[4],ymm2[5],ymm1[5]
278 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm10 = ymm0[1,0],ymm4[1,0],ymm0[5,4],ymm4[5,4]
279 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm9 = ymm10[2,0],ymm9[2,3],ymm10[6,4],ymm9[6,7]
280 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm10 = xmm5[1],xmm6[1],zero,zero
281 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm11 = xmm7[0],xmm8[0],xmm7[1],xmm8[1]
282 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm10 = xmm10[0,1],xmm11[2,3]
283 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm9 = ymm10[0,1,2,3],ymm9[4,5,6,7]
284 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm10 = ymm1[1],ymm2[1],ymm1[3],ymm2[3]
285 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm11 = ymm4[2],ymm0[2],ymm4[3],ymm0[3],ymm4[6],ymm0[6],ymm4[7],ymm0[7]
286 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm10 = ymm11[0,1],ymm10[2,0],ymm11[4,5],ymm10[6,4]
287 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm11 = xmm5[2],xmm6[2],xmm5[3],xmm6[3]
288 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm12 = zero,zero,xmm7[2],xmm8[2]
289 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm11 = xmm11[0,1],xmm12[2,3]
290 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm10 = ymm11[0,1,2,3],ymm10[4,5,6,7]
291 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm2[2],ymm1[2],ymm2[3],ymm1[3],ymm2[6],ymm1[6],ymm2[7],ymm1[7]
292 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm0[3,0],ymm4[3,0],ymm0[7,4],ymm4[7,4]
293 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm0[2,0],ymm1[2,3],ymm0[6,4],ymm1[6,7]
294 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm7[2],xmm8[2],xmm7[3],xmm8[3]
295 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm2 = xmm6[3,0],xmm5[3,0]
296 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[2,0],xmm1[2,3]
297 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
298 ; AVX1-ONLY-NEXT: vmovaps %ymm3, (%rsi)
299 ; AVX1-ONLY-NEXT: vmovaps %ymm9, (%rdx)
300 ; AVX1-ONLY-NEXT: vmovaps %ymm10, (%rcx)
301 ; AVX1-ONLY-NEXT: vmovaps %ymm0, (%r8)
302 ; AVX1-ONLY-NEXT: vzeroupper
303 ; AVX1-ONLY-NEXT: retq
305 ; AVX2-ONLY-LABEL: load_i32_stride4_vf8:
306 ; AVX2-ONLY: # %bb.0:
307 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm0
308 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm4
309 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm1
310 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm2
311 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm3 = [0,4,0,4,0,4,0,4]
312 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm3, %ymm5
313 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm3, %ymm3
314 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm5[6,7]
315 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm5 = [0,4,0,4]
316 ; AVX2-ONLY-NEXT: # xmm5 = mem[0,0]
317 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm5, %ymm6
318 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm7
319 ; AVX2-ONLY-NEXT: vmovaps 16(%rdi), %xmm8
320 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm5
321 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm9 = xmm7[0],xmm8[0],xmm7[1],xmm8[1]
322 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm9[0,1],xmm6[2,3]
323 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm6[0,1,2,3],ymm3[4,5,6,7]
324 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm6 = [1,5,1,5,1,5,1,5]
325 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm6, %ymm9
326 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm6, %ymm6
327 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm6 = ymm6[0,1,2,3,4,5],ymm9[6,7]
328 ; AVX2-ONLY-NEXT: vmovaps 48(%rdi), %xmm9
329 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm10 = xmm5[0],xmm9[0],xmm5[1],xmm9[1]
330 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm11 = [1,5,1,5]
331 ; AVX2-ONLY-NEXT: # xmm11 = mem[0,0]
332 ; AVX2-ONLY-NEXT: vpermps %ymm0, %ymm11, %ymm11
333 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm10 = xmm11[0,1],xmm10[2,3]
334 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm6 = ymm10[0,1,2,3],ymm6[4,5,6,7]
335 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm10 = [2,6,2,6,2,6,2,6]
336 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm10, %ymm11
337 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm10, %ymm10
338 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm10 = ymm10[0,1,2,3,4,5],ymm11[6,7]
339 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm11 = [2,6,2,6]
340 ; AVX2-ONLY-NEXT: # xmm11 = mem[0,0]
341 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm11, %ymm4
342 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm7 = xmm7[2],xmm8[2],xmm7[3],xmm8[3]
343 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm7[0,1],xmm4[2,3]
344 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm10[4,5,6,7]
345 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm7 = [3,7,3,7,3,7,3,7]
346 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm7, %ymm2
347 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm7, %ymm1
348 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm2[6,7]
349 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm2 = xmm5[2],xmm9[2],xmm5[3],xmm9[3]
350 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm5 = [3,7,3,7]
351 ; AVX2-ONLY-NEXT: # xmm5 = mem[0,0]
352 ; AVX2-ONLY-NEXT: vpermps %ymm0, %ymm5, %ymm0
353 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm0[0,1],xmm2[2,3]
354 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
355 ; AVX2-ONLY-NEXT: vmovaps %ymm3, (%rsi)
356 ; AVX2-ONLY-NEXT: vmovaps %ymm6, (%rdx)
357 ; AVX2-ONLY-NEXT: vmovaps %ymm4, (%rcx)
358 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%r8)
359 ; AVX2-ONLY-NEXT: vzeroupper
360 ; AVX2-ONLY-NEXT: retq
362 ; AVX512-LABEL: load_i32_stride4_vf8:
364 ; AVX512-NEXT: vmovdqa {{.*#+}} ymm0 = [0,4,8,12,16,20,24,28]
365 ; AVX512-NEXT: vmovdqa64 (%rdi), %zmm1
366 ; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm2
367 ; AVX512-NEXT: vpermi2d %zmm2, %zmm1, %zmm0
368 ; AVX512-NEXT: vmovdqa {{.*#+}} ymm3 = [1,5,9,13,17,21,25,29]
369 ; AVX512-NEXT: vpermi2d %zmm2, %zmm1, %zmm3
370 ; AVX512-NEXT: vmovdqa {{.*#+}} ymm4 = [2,6,10,14,18,22,26,30]
371 ; AVX512-NEXT: vpermi2d %zmm2, %zmm1, %zmm4
372 ; AVX512-NEXT: vmovdqa {{.*#+}} ymm5 = [3,7,11,15,19,23,27,31]
373 ; AVX512-NEXT: vpermi2d %zmm2, %zmm1, %zmm5
374 ; AVX512-NEXT: vmovdqa %ymm0, (%rsi)
375 ; AVX512-NEXT: vmovdqa %ymm3, (%rdx)
376 ; AVX512-NEXT: vmovdqa %ymm4, (%rcx)
377 ; AVX512-NEXT: vmovdqa %ymm5, (%r8)
378 ; AVX512-NEXT: vzeroupper
380 %wide.vec = load <32 x i32>, ptr %in.vec, align 64
381 %strided.vec0 = shufflevector <32 x i32> %wide.vec, <32 x i32> poison, <8 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28>
382 %strided.vec1 = shufflevector <32 x i32> %wide.vec, <32 x i32> poison, <8 x i32> <i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 25, i32 29>
383 %strided.vec2 = shufflevector <32 x i32> %wide.vec, <32 x i32> poison, <8 x i32> <i32 2, i32 6, i32 10, i32 14, i32 18, i32 22, i32 26, i32 30>
384 %strided.vec3 = shufflevector <32 x i32> %wide.vec, <32 x i32> poison, <8 x i32> <i32 3, i32 7, i32 11, i32 15, i32 19, i32 23, i32 27, i32 31>
385 store <8 x i32> %strided.vec0, ptr %out.vec0, align 64
386 store <8 x i32> %strided.vec1, ptr %out.vec1, align 64
387 store <8 x i32> %strided.vec2, ptr %out.vec2, align 64
388 store <8 x i32> %strided.vec3, ptr %out.vec3, align 64
392 define void @load_i32_stride4_vf16(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {
393 ; SSE-LABEL: load_i32_stride4_vf16:
395 ; SSE-NEXT: subq $24, %rsp
396 ; SSE-NEXT: movaps 208(%rdi), %xmm2
397 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
398 ; SSE-NEXT: movaps 240(%rdi), %xmm4
399 ; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
400 ; SSE-NEXT: movaps 224(%rdi), %xmm12
401 ; SSE-NEXT: movaps 144(%rdi), %xmm6
402 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
403 ; SSE-NEXT: movaps 128(%rdi), %xmm3
404 ; SSE-NEXT: movaps 176(%rdi), %xmm5
405 ; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
406 ; SSE-NEXT: movaps 160(%rdi), %xmm9
407 ; SSE-NEXT: movaps 80(%rdi), %xmm1
408 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
409 ; SSE-NEXT: movaps 64(%rdi), %xmm11
410 ; SSE-NEXT: movaps 112(%rdi), %xmm8
411 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
412 ; SSE-NEXT: movaps 96(%rdi), %xmm7
413 ; SSE-NEXT: movaps %xmm7, %xmm0
414 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1]
415 ; SSE-NEXT: movaps %xmm11, %xmm13
416 ; SSE-NEXT: unpcklps {{.*#+}} xmm13 = xmm13[0],xmm1[0],xmm13[1],xmm1[1]
417 ; SSE-NEXT: movaps %xmm13, %xmm1
418 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
419 ; SSE-NEXT: movaps %xmm1, (%rsp) # 16-byte Spill
420 ; SSE-NEXT: movaps %xmm9, %xmm1
421 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1]
422 ; SSE-NEXT: movaps %xmm3, %xmm5
423 ; SSE-NEXT: unpcklps {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]
424 ; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]
425 ; SSE-NEXT: movaps %xmm5, %xmm0
426 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]
427 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
428 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]
429 ; SSE-NEXT: movaps %xmm12, %xmm0
430 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]
431 ; SSE-NEXT: movaps 192(%rdi), %xmm10
432 ; SSE-NEXT: movaps %xmm10, %xmm15
433 ; SSE-NEXT: unpcklps {{.*#+}} xmm15 = xmm15[0],xmm2[0],xmm15[1],xmm2[1]
434 ; SSE-NEXT: movaps %xmm15, %xmm1
435 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
436 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
437 ; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]
438 ; SSE-NEXT: movaps 32(%rdi), %xmm2
439 ; SSE-NEXT: movaps 48(%rdi), %xmm8
440 ; SSE-NEXT: movaps %xmm2, %xmm1
441 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1]
442 ; SSE-NEXT: movaps (%rdi), %xmm0
443 ; SSE-NEXT: movaps 16(%rdi), %xmm6
444 ; SSE-NEXT: movaps %xmm0, %xmm14
445 ; SSE-NEXT: unpcklps {{.*#+}} xmm14 = xmm14[0],xmm6[0],xmm14[1],xmm6[1]
446 ; SSE-NEXT: movaps %xmm14, %xmm4
447 ; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm1[0]
448 ; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm1[1]
449 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload
450 ; SSE-NEXT: # xmm7 = xmm7[2],mem[2],xmm7[3],mem[3]
451 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload
452 ; SSE-NEXT: # xmm11 = xmm11[2],mem[2],xmm11[3],mem[3]
453 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload
454 ; SSE-NEXT: # xmm9 = xmm9[2],mem[2],xmm9[3],mem[3]
455 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
456 ; SSE-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
457 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
458 ; SSE-NEXT: # xmm12 = xmm12[2],mem[2],xmm12[3],mem[3]
459 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload
460 ; SSE-NEXT: # xmm10 = xmm10[2],mem[2],xmm10[3],mem[3]
461 ; SSE-NEXT: unpckhps {{.*#+}} xmm2 = xmm2[2],xmm8[2],xmm2[3],xmm8[3]
462 ; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm6[2],xmm0[3],xmm6[3]
463 ; SSE-NEXT: movaps %xmm11, %xmm1
464 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm7[0]
465 ; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm7[1]
466 ; SSE-NEXT: movaps %xmm3, %xmm6
467 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm9[0]
468 ; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm9[1]
469 ; SSE-NEXT: movaps %xmm10, %xmm7
470 ; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm12[0]
471 ; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm12[1]
472 ; SSE-NEXT: movaps %xmm0, %xmm8
473 ; SSE-NEXT: movlhps {{.*#+}} xmm8 = xmm8[0],xmm2[0]
474 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]
475 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
476 ; SSE-NEXT: movaps %xmm2, 48(%rsi)
477 ; SSE-NEXT: movaps %xmm4, (%rsi)
478 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
479 ; SSE-NEXT: movaps %xmm2, 32(%rsi)
480 ; SSE-NEXT: movaps (%rsp), %xmm2 # 16-byte Reload
481 ; SSE-NEXT: movaps %xmm2, 16(%rsi)
482 ; SSE-NEXT: movaps %xmm15, 48(%rdx)
483 ; SSE-NEXT: movaps %xmm14, (%rdx)
484 ; SSE-NEXT: movaps %xmm5, 32(%rdx)
485 ; SSE-NEXT: movaps %xmm13, 16(%rdx)
486 ; SSE-NEXT: movaps %xmm7, 48(%rcx)
487 ; SSE-NEXT: movaps %xmm6, 32(%rcx)
488 ; SSE-NEXT: movaps %xmm1, 16(%rcx)
489 ; SSE-NEXT: movaps %xmm8, (%rcx)
490 ; SSE-NEXT: movaps %xmm10, 48(%r8)
491 ; SSE-NEXT: movaps %xmm3, 32(%r8)
492 ; SSE-NEXT: movaps %xmm11, 16(%r8)
493 ; SSE-NEXT: movaps %xmm0, (%r8)
494 ; SSE-NEXT: addq $24, %rsp
497 ; AVX1-ONLY-LABEL: load_i32_stride4_vf16:
498 ; AVX1-ONLY: # %bb.0:
499 ; AVX1-ONLY-NEXT: subq $264, %rsp # imm = 0x108
500 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %ymm5
501 ; AVX1-ONLY-NEXT: vmovaps 96(%rdi), %ymm4
502 ; AVX1-ONLY-NEXT: vmovaps 192(%rdi), %ymm2
503 ; AVX1-ONLY-NEXT: vmovaps 224(%rdi), %ymm3
504 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm3[2,3,0,1]
505 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm3[0],ymm1[0],ymm3[2],ymm1[2]
506 ; AVX1-ONLY-NEXT: vmovaps %ymm3, %ymm14
507 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
508 ; AVX1-ONLY-NEXT: vmovaps %ymm1, %ymm15
509 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
510 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm7 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
511 ; AVX1-ONLY-NEXT: vmovaps %ymm2, %ymm10
512 ; AVX1-ONLY-NEXT: vmovaps %ymm1, %ymm3
513 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm7[0,1],ymm0[2,0],ymm7[4,5],ymm0[6,4]
514 ; AVX1-ONLY-NEXT: vmovaps 160(%rdi), %xmm1
515 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
516 ; AVX1-ONLY-NEXT: vmovaps 176(%rdi), %xmm6
517 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm11 = xmm6[0],xmm1[0]
518 ; AVX1-ONLY-NEXT: vmovaps %xmm6, %xmm2
519 ; AVX1-ONLY-NEXT: vmovaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
520 ; AVX1-ONLY-NEXT: vmovaps 144(%rdi), %xmm1
521 ; AVX1-ONLY-NEXT: vmovaps 128(%rdi), %xmm6
522 ; AVX1-ONLY-NEXT: vmovaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
523 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm12 = xmm6[0],xmm1[0],xmm6[1],xmm1[1]
524 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm11 = xmm12[0,1],xmm11[2,0]
525 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm11[0,1,2,3],ymm0[4,5,6,7]
526 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
527 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm6 = ymm4[2,3,0,1]
528 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm4[0],ymm6[0],ymm4[2],ymm6[2]
529 ; AVX1-ONLY-NEXT: vmovaps %ymm6, %ymm8
530 ; AVX1-ONLY-NEXT: vmovaps %ymm4, %ymm12
531 ; AVX1-ONLY-NEXT: vmovups %ymm5, (%rsp) # 32-byte Spill
532 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm11 = ymm5[2,3,0,1]
533 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm13 = ymm11[0],ymm5[0],ymm11[1],ymm5[1],ymm11[4],ymm5[4],ymm11[5],ymm5[5]
534 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm7 = ymm13[0,1],ymm0[2,0],ymm13[4,5],ymm0[6,4]
535 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm9
536 ; AVX1-ONLY-NEXT: vmovaps 16(%rdi), %xmm5
537 ; AVX1-ONLY-NEXT: vmovaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
538 ; AVX1-ONLY-NEXT: vmovaps 32(%rdi), %xmm6
539 ; AVX1-ONLY-NEXT: vmovaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
540 ; AVX1-ONLY-NEXT: vmovaps 48(%rdi), %xmm0
541 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
542 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm0 = xmm0[0],xmm6[0]
543 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm6 = xmm9[0],xmm5[0],xmm9[1],xmm5[1]
544 ; AVX1-ONLY-NEXT: vmovaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
545 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm0 = xmm6[0,1],xmm0[2,0]
546 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm7[4,5,6,7]
547 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
548 ; AVX1-ONLY-NEXT: vmovaps %ymm15, %ymm4
549 ; AVX1-ONLY-NEXT: vmovups %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
550 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm7 = ymm15[0],ymm14[0],ymm15[1],ymm14[1],ymm15[4],ymm14[4],ymm15[5],ymm14[5]
551 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm6 = ymm10[1,0],ymm3[1,0],ymm10[5,4],ymm3[5,4]
552 ; AVX1-ONLY-NEXT: vmovaps %ymm10, %ymm15
553 ; AVX1-ONLY-NEXT: vmovaps %ymm3, %ymm13
554 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm6[2,0],ymm7[2,3],ymm6[6,4],ymm7[6,7]
555 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
556 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm6 = xmm5[1],xmm1[1],zero,zero
557 ; AVX1-ONLY-NEXT: vmovaps %xmm1, %xmm14
558 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
559 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
560 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm7 = xmm10[0],xmm2[0],xmm10[1],xmm2[1]
561 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm6[0,1],xmm7[2,3]
562 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm6[0,1,2,3],ymm3[4,5,6,7]
563 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
564 ; AVX1-ONLY-NEXT: vmovaps %ymm12, %ymm0
565 ; AVX1-ONLY-NEXT: vmovaps %ymm8, %ymm12
566 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm3 = ymm8[0],ymm0[0],ymm8[1],ymm0[1],ymm8[4],ymm0[4],ymm8[5],ymm0[5]
567 ; AVX1-ONLY-NEXT: vmovups (%rsp), %ymm2 # 32-byte Reload
568 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm6 = ymm2[1,0],ymm11[1,0],ymm2[5,4],ymm11[5,4]
569 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm6[2,0],ymm3[2,3],ymm6[6,4],ymm3[6,7]
570 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
571 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm6 = xmm9[1],xmm8[1],zero,zero
572 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
573 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
574 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm7 = xmm9[0],xmm1[0],xmm9[1],xmm1[1]
575 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm6[0,1],xmm7[2,3]
576 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm6[0,1,2,3],ymm3[4,5,6,7]
577 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
578 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
579 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm4[1],ymm3[3],ymm4[3]
580 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm6 = ymm13[2],ymm15[2],ymm13[3],ymm15[3],ymm13[6],ymm15[6],ymm13[7],ymm15[7]
581 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm4 = ymm6[0,1],ymm3[2,0],ymm6[4,5],ymm3[6,4]
582 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm6 = xmm5[2],xmm14[2],xmm5[3],xmm14[3]
583 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
584 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm7 = zero,zero,xmm10[2],xmm3[2]
585 ; AVX1-ONLY-NEXT: vmovaps %xmm10, %xmm14
586 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm6[0,1],xmm7[2,3]
587 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm6[0,1,2,3],ymm4[4,5,6,7]
588 ; AVX1-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
589 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm0[1],ymm12[1],ymm0[3],ymm12[3]
590 ; AVX1-ONLY-NEXT: vmovaps %ymm0, %ymm5
591 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm7 = ymm11[2],ymm2[2],ymm11[3],ymm2[3],ymm11[6],ymm2[6],ymm11[7],ymm2[7]
592 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm6 = ymm7[0,1],ymm6[2,0],ymm7[4,5],ymm6[6,4]
593 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
594 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm7 = xmm10[2],xmm8[2],xmm10[3],xmm8[3]
595 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm0 = zero,zero,xmm9[2],xmm1[2]
596 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm7[0,1],xmm0[2,3]
597 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm6[4,5,6,7]
598 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
599 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm4 # 32-byte Folded Reload
600 ; AVX1-ONLY-NEXT: # ymm4 = ymm2[2],mem[2],ymm2[3],mem[3],ymm2[6],mem[6],ymm2[7],mem[7]
601 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm2 = ymm15[3,0],ymm13[3,0],ymm15[7,4],ymm13[7,4]
602 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm2 = ymm2[2,0],ymm4[2,3],ymm2[6,4],ymm4[6,7]
603 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm4 = xmm14[2],xmm3[2],xmm14[3],xmm3[3]
604 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
605 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm6 # 16-byte Folded Reload
606 ; AVX1-ONLY-NEXT: # xmm6 = xmm3[3,0],mem[3,0]
607 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm4 = xmm6[2,0],xmm4[2,3]
608 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
609 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm3 = ymm12[2],ymm5[2],ymm12[3],ymm5[3],ymm12[6],ymm5[6],ymm12[7],ymm5[7]
610 ; AVX1-ONLY-NEXT: vmovups (%rsp), %ymm4 # 32-byte Reload
611 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm4 = ymm4[3,0],ymm11[3,0],ymm4[7,4],ymm11[7,4]
612 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm4[2,0],ymm3[2,3],ymm4[6,4],ymm3[6,7]
613 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm9[2],xmm1[2],xmm9[3],xmm1[3]
614 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm4 = xmm8[3,0],xmm10[3,0]
615 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm4[2,0],xmm1[2,3]
616 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm3[4,5,6,7]
617 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
618 ; AVX1-ONLY-NEXT: vmovaps %ymm3, 32(%rsi)
619 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
620 ; AVX1-ONLY-NEXT: vmovaps %ymm3, (%rsi)
621 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
622 ; AVX1-ONLY-NEXT: vmovaps %ymm3, 32(%rdx)
623 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
624 ; AVX1-ONLY-NEXT: vmovaps %ymm3, (%rdx)
625 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
626 ; AVX1-ONLY-NEXT: vmovaps %ymm3, 32(%rcx)
627 ; AVX1-ONLY-NEXT: vmovaps %ymm0, (%rcx)
628 ; AVX1-ONLY-NEXT: vmovaps %ymm2, 32(%r8)
629 ; AVX1-ONLY-NEXT: vmovaps %ymm1, (%r8)
630 ; AVX1-ONLY-NEXT: addq $264, %rsp # imm = 0x108
631 ; AVX1-ONLY-NEXT: vzeroupper
632 ; AVX1-ONLY-NEXT: retq
634 ; AVX2-ONLY-LABEL: load_i32_stride4_vf16:
635 ; AVX2-ONLY: # %bb.0:
636 ; AVX2-ONLY-NEXT: subq $104, %rsp
637 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm8
638 ; AVX2-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
639 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm7
640 ; AVX2-ONLY-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
641 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm4
642 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm5
643 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %ymm12
644 ; AVX2-ONLY-NEXT: vmovups %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
645 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %ymm3
646 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %ymm2
647 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [0,4,0,4,0,4,0,4]
648 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm0, %ymm1
649 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm0, %ymm6
650 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm6[0,1,2,3,4,5],ymm1[6,7]
651 ; AVX2-ONLY-NEXT: vmovaps 144(%rdi), %xmm10
652 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %xmm11
653 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm6 = xmm11[0],xmm10[0],xmm11[1],xmm10[1]
654 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm9 = [0,4,0,4]
655 ; AVX2-ONLY-NEXT: # xmm9 = mem[0,0]
656 ; AVX2-ONLY-NEXT: vpermps %ymm12, %ymm9, %ymm12
657 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm6[0,1],xmm12[2,3]
658 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm6[0,1,2,3],ymm1[4,5,6,7]
659 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
660 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm1
661 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm0
662 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6,7]
663 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm9, %ymm1
664 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm12
665 ; AVX2-ONLY-NEXT: vmovaps 16(%rdi), %xmm13
666 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm6 = xmm12[0],xmm13[0],xmm12[1],xmm13[1]
667 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm6[0,1],xmm1[2,3]
668 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
669 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
670 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [1,5,1,5,1,5,1,5]
671 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm1
672 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm6
673 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm6[0,1,2,3,4,5],ymm1[6,7]
674 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm14
675 ; AVX2-ONLY-NEXT: vmovaps 48(%rdi), %xmm6
676 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm9 = xmm14[0],xmm6[0],xmm14[1],xmm6[1]
677 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm7 = [1,5,1,5]
678 ; AVX2-ONLY-NEXT: # xmm7 = mem[0,0]
679 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm7, %ymm15
680 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm9 = xmm15[0,1],xmm9[2,3]
681 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm9[0,1,2,3],ymm1[4,5,6,7]
682 ; AVX2-ONLY-NEXT: vmovups %ymm1, (%rsp) # 32-byte Spill
683 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm0, %ymm1
684 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm0, %ymm0
685 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm9 = ymm0[0,1,2,3,4,5],ymm1[6,7]
686 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %ymm15
687 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm7, %ymm7
688 ; AVX2-ONLY-NEXT: vmovaps 176(%rdi), %xmm1
689 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %xmm0
690 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm8 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
691 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm7 = xmm7[0,1],xmm8[2,3]
692 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm9[4,5,6,7]
693 ; AVX2-ONLY-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
694 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm7 = [2,6,2,6,2,6,2,6]
695 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm7, %ymm8
696 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm7, %ymm9
697 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm8 = ymm9[0,1,2,3,4,5],ymm8[6,7]
698 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm9 = xmm11[2],xmm10[2],xmm11[3],xmm10[3]
699 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm10 = [2,6,2,6]
700 ; AVX2-ONLY-NEXT: # xmm10 = mem[0,0]
701 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm11 # 32-byte Folded Reload
702 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm9 = xmm9[0,1],xmm11[2,3]
703 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm8 = ymm9[0,1,2,3],ymm8[4,5,6,7]
704 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm7, %ymm9
705 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm7, %ymm7
706 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm7 = ymm7[0,1,2,3,4,5],ymm9[6,7]
707 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm9 # 32-byte Folded Reload
708 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm10 = xmm12[2],xmm13[2],xmm12[3],xmm13[3]
709 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm9 = xmm10[0,1],xmm9[2,3]
710 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm7 = ymm9[0,1,2,3],ymm7[4,5,6,7]
711 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm9 = [3,7,3,7,3,7,3,7]
712 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm9, %ymm5
713 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm9, %ymm4
714 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1,2,3,4,5],ymm5[6,7]
715 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm5 = xmm14[2],xmm6[2],xmm14[3],xmm6[3]
716 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm6 = [3,7,3,7]
717 ; AVX2-ONLY-NEXT: # xmm6 = mem[0,0]
718 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm10 # 32-byte Folded Reload
719 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm5 = xmm10[0,1],xmm5[2,3]
720 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1,2,3],ymm4[4,5,6,7]
721 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm9, %ymm2
722 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm9, %ymm3
723 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3,4,5],ymm2[6,7]
724 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
725 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm6, %ymm1
726 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
727 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5,6,7]
728 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
729 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 32(%rsi)
730 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
731 ; AVX2-ONLY-NEXT: vmovaps %ymm1, (%rsi)
732 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
733 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 32(%rdx)
734 ; AVX2-ONLY-NEXT: vmovups (%rsp), %ymm1 # 32-byte Reload
735 ; AVX2-ONLY-NEXT: vmovaps %ymm1, (%rdx)
736 ; AVX2-ONLY-NEXT: vmovaps %ymm8, 32(%rcx)
737 ; AVX2-ONLY-NEXT: vmovaps %ymm7, (%rcx)
738 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 32(%r8)
739 ; AVX2-ONLY-NEXT: vmovaps %ymm4, (%r8)
740 ; AVX2-ONLY-NEXT: addq $104, %rsp
741 ; AVX2-ONLY-NEXT: vzeroupper
742 ; AVX2-ONLY-NEXT: retq
744 ; AVX512-LABEL: load_i32_stride4_vf16:
746 ; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0
747 ; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1
748 ; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm2
749 ; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm3
750 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm4 = [0,4,8,12,16,20,24,28,0,4,8,12,16,20,24,28]
751 ; AVX512-NEXT: # zmm4 = mem[0,1,2,3,0,1,2,3]
752 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm5
753 ; AVX512-NEXT: vpermt2d %zmm3, %zmm4, %zmm5
754 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm4
755 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm4 = zmm4[0,1,2,3],zmm5[4,5,6,7]
756 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [1,5,9,13,17,21,25,29,1,5,9,13,17,21,25,29]
757 ; AVX512-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]
758 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm6
759 ; AVX512-NEXT: vpermt2d %zmm3, %zmm5, %zmm6
760 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm5
761 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm5[0,1,2,3],zmm6[4,5,6,7]
762 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm6 = [2,6,10,14,18,22,26,30,2,6,10,14,18,22,26,30]
763 ; AVX512-NEXT: # zmm6 = mem[0,1,2,3,0,1,2,3]
764 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm7
765 ; AVX512-NEXT: vpermt2d %zmm3, %zmm6, %zmm7
766 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm6
767 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm6 = zmm6[0,1,2,3],zmm7[4,5,6,7]
768 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm7 = [3,7,11,15,19,23,27,31,3,7,11,15,19,23,27,31]
769 ; AVX512-NEXT: # zmm7 = mem[0,1,2,3,0,1,2,3]
770 ; AVX512-NEXT: vpermt2d %zmm3, %zmm7, %zmm2
771 ; AVX512-NEXT: vpermt2d %zmm1, %zmm7, %zmm0
772 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3],zmm2[4,5,6,7]
773 ; AVX512-NEXT: vmovdqa64 %zmm4, (%rsi)
774 ; AVX512-NEXT: vmovdqa64 %zmm5, (%rdx)
775 ; AVX512-NEXT: vmovdqa64 %zmm6, (%rcx)
776 ; AVX512-NEXT: vmovdqa64 %zmm0, (%r8)
777 ; AVX512-NEXT: vzeroupper
779 %wide.vec = load <64 x i32>, ptr %in.vec, align 64
780 %strided.vec0 = shufflevector <64 x i32> %wide.vec, <64 x i32> poison, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28, i32 32, i32 36, i32 40, i32 44, i32 48, i32 52, i32 56, i32 60>
781 %strided.vec1 = shufflevector <64 x i32> %wide.vec, <64 x i32> poison, <16 x i32> <i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 25, i32 29, i32 33, i32 37, i32 41, i32 45, i32 49, i32 53, i32 57, i32 61>
782 %strided.vec2 = shufflevector <64 x i32> %wide.vec, <64 x i32> poison, <16 x i32> <i32 2, i32 6, i32 10, i32 14, i32 18, i32 22, i32 26, i32 30, i32 34, i32 38, i32 42, i32 46, i32 50, i32 54, i32 58, i32 62>
783 %strided.vec3 = shufflevector <64 x i32> %wide.vec, <64 x i32> poison, <16 x i32> <i32 3, i32 7, i32 11, i32 15, i32 19, i32 23, i32 27, i32 31, i32 35, i32 39, i32 43, i32 47, i32 51, i32 55, i32 59, i32 63>
784 store <16 x i32> %strided.vec0, ptr %out.vec0, align 64
785 store <16 x i32> %strided.vec1, ptr %out.vec1, align 64
786 store <16 x i32> %strided.vec2, ptr %out.vec2, align 64
787 store <16 x i32> %strided.vec3, ptr %out.vec3, align 64
791 define void @load_i32_stride4_vf32(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {
792 ; SSE-LABEL: load_i32_stride4_vf32:
794 ; SSE-NEXT: subq $456, %rsp # imm = 0x1C8
795 ; SSE-NEXT: movaps 272(%rdi), %xmm7
796 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
797 ; SSE-NEXT: movaps 304(%rdi), %xmm8
798 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
799 ; SSE-NEXT: movaps 288(%rdi), %xmm2
800 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
801 ; SSE-NEXT: movaps 336(%rdi), %xmm10
802 ; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
803 ; SSE-NEXT: movaps 320(%rdi), %xmm6
804 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
805 ; SSE-NEXT: movaps 368(%rdi), %xmm11
806 ; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
807 ; SSE-NEXT: movaps 352(%rdi), %xmm5
808 ; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
809 ; SSE-NEXT: movaps 80(%rdi), %xmm9
810 ; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
811 ; SSE-NEXT: movaps 64(%rdi), %xmm1
812 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
813 ; SSE-NEXT: movaps 112(%rdi), %xmm4
814 ; SSE-NEXT: movaps 96(%rdi), %xmm0
815 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
816 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]
817 ; SSE-NEXT: movaps %xmm4, %xmm3
818 ; SSE-NEXT: movaps %xmm1, %xmm4
819 ; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm9[0],xmm4[1],xmm9[1]
820 ; SSE-NEXT: movaps %xmm4, %xmm1
821 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
822 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
823 ; SSE-NEXT: movaps %xmm5, %xmm1
824 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm11[0],xmm1[1],xmm11[1]
825 ; SSE-NEXT: movaps %xmm6, %xmm5
826 ; SSE-NEXT: unpcklps {{.*#+}} xmm5 = xmm5[0],xmm10[0],xmm5[1],xmm10[1]
827 ; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm0[1]
828 ; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
829 ; SSE-NEXT: movaps %xmm5, %xmm0
830 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]
831 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
832 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]
833 ; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
834 ; SSE-NEXT: movaps %xmm2, %xmm0
835 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1]
836 ; SSE-NEXT: movaps 256(%rdi), %xmm1
837 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
838 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1]
839 ; SSE-NEXT: movaps %xmm1, %xmm2
840 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
841 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
842 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
843 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
844 ; SSE-NEXT: movaps 240(%rdi), %xmm1
845 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
846 ; SSE-NEXT: movaps 224(%rdi), %xmm13
847 ; SSE-NEXT: movaps %xmm13, %xmm0
848 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
849 ; SSE-NEXT: movaps 208(%rdi), %xmm2
850 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
851 ; SSE-NEXT: movaps 192(%rdi), %xmm1
852 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
853 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
854 ; SSE-NEXT: movaps %xmm1, %xmm2
855 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
856 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
857 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
858 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
859 ; SSE-NEXT: movaps 496(%rdi), %xmm1
860 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
861 ; SSE-NEXT: movaps 480(%rdi), %xmm0
862 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
863 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
864 ; SSE-NEXT: movaps 464(%rdi), %xmm2
865 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
866 ; SSE-NEXT: movaps 448(%rdi), %xmm1
867 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
868 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
869 ; SSE-NEXT: movaps %xmm1, %xmm2
870 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
871 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
872 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
873 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
874 ; SSE-NEXT: movaps 176(%rdi), %xmm1
875 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
876 ; SSE-NEXT: movaps 160(%rdi), %xmm4
877 ; SSE-NEXT: movaps %xmm4, %xmm0
878 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
879 ; SSE-NEXT: movaps 144(%rdi), %xmm1
880 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
881 ; SSE-NEXT: movaps 128(%rdi), %xmm15
882 ; SSE-NEXT: movaps %xmm15, %xmm14
883 ; SSE-NEXT: unpcklps {{.*#+}} xmm14 = xmm14[0],xmm1[0],xmm14[1],xmm1[1]
884 ; SSE-NEXT: movaps %xmm14, %xmm1
885 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
886 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
887 ; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm0[1]
888 ; SSE-NEXT: movaps 432(%rdi), %xmm1
889 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
890 ; SSE-NEXT: movaps 416(%rdi), %xmm10
891 ; SSE-NEXT: movaps %xmm10, %xmm0
892 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
893 ; SSE-NEXT: movaps 400(%rdi), %xmm1
894 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
895 ; SSE-NEXT: movaps 384(%rdi), %xmm12
896 ; SSE-NEXT: movaps %xmm12, %xmm7
897 ; SSE-NEXT: unpcklps {{.*#+}} xmm7 = xmm7[0],xmm1[0],xmm7[1],xmm1[1]
898 ; SSE-NEXT: movaps %xmm7, %xmm1
899 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
900 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
901 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm0[1]
902 ; SSE-NEXT: movaps 32(%rdi), %xmm11
903 ; SSE-NEXT: movaps 48(%rdi), %xmm0
904 ; SSE-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill
905 ; SSE-NEXT: movaps %xmm11, %xmm8
906 ; SSE-NEXT: unpcklps {{.*#+}} xmm8 = xmm8[0],xmm0[0],xmm8[1],xmm0[1]
907 ; SSE-NEXT: movaps (%rdi), %xmm6
908 ; SSE-NEXT: movaps 16(%rdi), %xmm9
909 ; SSE-NEXT: movaps %xmm6, %xmm5
910 ; SSE-NEXT: unpcklps {{.*#+}} xmm5 = xmm5[0],xmm9[0],xmm5[1],xmm9[1]
911 ; SSE-NEXT: movaps %xmm5, %xmm0
912 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm8[0]
913 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
914 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm8[1]
915 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
916 ; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm3[2],xmm0[3],xmm3[3]
917 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
918 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
919 ; SSE-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
920 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
921 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
922 ; SSE-NEXT: # xmm8 = xmm8[2],mem[2],xmm8[3],mem[3]
923 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
924 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
925 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
926 ; SSE-NEXT: # xmm8 = xmm8[2],mem[2],xmm8[3],mem[3]
927 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
928 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
929 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
930 ; SSE-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
931 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
932 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
933 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
934 ; SSE-NEXT: # xmm2 = xmm2[2],mem[2],xmm2[3],mem[3]
935 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload
936 ; SSE-NEXT: # xmm13 = xmm13[2],mem[2],xmm13[3],mem[3]
937 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
938 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
939 ; SSE-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
940 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
941 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
942 ; SSE-NEXT: # xmm8 = xmm8[2],mem[2],xmm8[3],mem[3]
943 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
944 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
945 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
946 ; SSE-NEXT: # xmm8 = xmm8[2],mem[2],xmm8[3],mem[3]
947 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
948 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
949 ; SSE-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
950 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
951 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
952 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload
953 ; SSE-NEXT: # xmm10 = xmm10[2],mem[2],xmm10[3],mem[3]
954 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
955 ; SSE-NEXT: # xmm12 = xmm12[2],mem[2],xmm12[3],mem[3]
956 ; SSE-NEXT: unpckhps (%rsp), %xmm11 # 16-byte Folded Reload
957 ; SSE-NEXT: # xmm11 = xmm11[2],mem[2],xmm11[3],mem[3]
958 ; SSE-NEXT: unpckhps {{.*#+}} xmm6 = xmm6[2],xmm9[2],xmm6[3],xmm9[3]
959 ; SSE-NEXT: movaps %xmm3, %xmm8
960 ; SSE-NEXT: movlhps {{.*#+}} xmm8 = xmm8[0],xmm0[0]
961 ; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm0[1]
962 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
963 ; SSE-NEXT: movaps %xmm15, %xmm9
964 ; SSE-NEXT: movlhps {{.*#+}} xmm9 = xmm9[0],xmm4[0]
965 ; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm4[1]
966 ; SSE-NEXT: movaps %xmm1, %xmm4
967 ; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm13[0]
968 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm13[1]
969 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
970 ; SSE-NEXT: movaps %xmm2, %xmm0
971 ; SSE-NEXT: movaps %xmm2, %xmm13
972 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
973 ; SSE-NEXT: movlhps {{.*#+}} xmm13 = xmm13[0],xmm2[0]
974 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]
975 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
976 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
977 ; SSE-NEXT: movaps %xmm1, %xmm0
978 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
979 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm3[0]
980 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm3[1]
981 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
982 ; SSE-NEXT: movaps %xmm12, %xmm3
983 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm10[0]
984 ; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm10[1]
985 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
986 ; SSE-NEXT: movaps %xmm1, %xmm10
987 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
988 ; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm2[0]
989 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm2[1]
990 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
991 ; SSE-NEXT: movaps %xmm6, %xmm2
992 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm11[0]
993 ; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm11[1]
994 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
995 ; SSE-NEXT: movaps %xmm1, 96(%rsi)
996 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
997 ; SSE-NEXT: movaps %xmm1, 32(%rsi)
998 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
999 ; SSE-NEXT: movaps %xmm1, 112(%rsi)
1000 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
1001 ; SSE-NEXT: movaps %xmm11, 48(%rsi)
1002 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
1003 ; SSE-NEXT: movaps %xmm11, 64(%rsi)
1004 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1005 ; SSE-NEXT: movaps %xmm1, (%rsi)
1006 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
1007 ; SSE-NEXT: movaps %xmm11, 80(%rsi)
1008 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
1009 ; SSE-NEXT: movaps %xmm11, 16(%rsi)
1010 ; SSE-NEXT: movaps %xmm7, 96(%rdx)
1011 ; SSE-NEXT: movaps %xmm14, 32(%rdx)
1012 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1013 ; SSE-NEXT: movaps %xmm7, 112(%rdx)
1014 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1015 ; SSE-NEXT: movaps %xmm7, 48(%rdx)
1016 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1017 ; SSE-NEXT: movaps %xmm7, 64(%rdx)
1018 ; SSE-NEXT: movaps %xmm5, (%rdx)
1019 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1020 ; SSE-NEXT: movaps %xmm1, 80(%rdx)
1021 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1022 ; SSE-NEXT: movaps %xmm1, 16(%rdx)
1023 ; SSE-NEXT: movaps %xmm3, 96(%rcx)
1024 ; SSE-NEXT: movaps %xmm9, 32(%rcx)
1025 ; SSE-NEXT: movaps %xmm10, 112(%rcx)
1026 ; SSE-NEXT: movaps %xmm4, 48(%rcx)
1027 ; SSE-NEXT: movaps %xmm13, 64(%rcx)
1028 ; SSE-NEXT: movaps %xmm2, (%rcx)
1029 ; SSE-NEXT: movaps %xmm0, 80(%rcx)
1030 ; SSE-NEXT: movaps %xmm8, 16(%rcx)
1031 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1032 ; SSE-NEXT: movaps %xmm0, 112(%r8)
1033 ; SSE-NEXT: movaps %xmm12, 96(%r8)
1034 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1035 ; SSE-NEXT: movaps %xmm0, 80(%r8)
1036 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1037 ; SSE-NEXT: movaps %xmm0, 64(%r8)
1038 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1039 ; SSE-NEXT: movaps %xmm0, 48(%r8)
1040 ; SSE-NEXT: movaps %xmm15, 32(%r8)
1041 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1042 ; SSE-NEXT: movaps %xmm0, 16(%r8)
1043 ; SSE-NEXT: movaps %xmm6, (%r8)
1044 ; SSE-NEXT: addq $456, %rsp # imm = 0x1C8
1047 ; AVX1-ONLY-LABEL: load_i32_stride4_vf32:
1048 ; AVX1-ONLY: # %bb.0:
1049 ; AVX1-ONLY-NEXT: subq $1000, %rsp # imm = 0x3E8
1050 ; AVX1-ONLY-NEXT: vmovaps 448(%rdi), %ymm3
1051 ; AVX1-ONLY-NEXT: vmovaps 480(%rdi), %ymm4
1052 ; AVX1-ONLY-NEXT: vmovaps 320(%rdi), %ymm2
1053 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1054 ; AVX1-ONLY-NEXT: vmovaps 352(%rdi), %ymm5
1055 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm15 = ymm5[2,3,0,1]
1056 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm5[0],ymm15[0],ymm5[2],ymm15[2]
1057 ; AVX1-ONLY-NEXT: vmovaps %ymm5, %ymm10
1058 ; AVX1-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1059 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
1060 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1061 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
1062 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
1063 ; AVX1-ONLY-NEXT: vmovaps 288(%rdi), %xmm2
1064 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1065 ; AVX1-ONLY-NEXT: vmovaps 304(%rdi), %xmm1
1066 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1067 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
1068 ; AVX1-ONLY-NEXT: vmovaps 272(%rdi), %xmm5
1069 ; AVX1-ONLY-NEXT: vmovaps 256(%rdi), %xmm2
1070 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1071 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]
1072 ; AVX1-ONLY-NEXT: vmovaps %xmm5, %xmm9
1073 ; AVX1-ONLY-NEXT: vmovaps %xmm5, (%rsp) # 16-byte Spill
1074 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
1075 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1076 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1077 ; AVX1-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1078 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm4[2,3,0,1]
1079 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1080 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm4[0],ymm0[0],ymm4[2],ymm0[2]
1081 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1082 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm3[2,3,0,1]
1083 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1084 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]
1085 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
1086 ; AVX1-ONLY-NEXT: vmovaps 416(%rdi), %xmm2
1087 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1088 ; AVX1-ONLY-NEXT: vmovaps 432(%rdi), %xmm1
1089 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1090 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
1091 ; AVX1-ONLY-NEXT: vmovaps 400(%rdi), %xmm3
1092 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1093 ; AVX1-ONLY-NEXT: vmovaps 384(%rdi), %xmm2
1094 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1095 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
1096 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
1097 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1098 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1099 ; AVX1-ONLY-NEXT: vmovaps 192(%rdi), %ymm3
1100 ; AVX1-ONLY-NEXT: vmovaps 224(%rdi), %ymm2
1101 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm8 = ymm2[2,3,0,1]
1102 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm2[0],ymm8[0],ymm2[2],ymm8[2]
1103 ; AVX1-ONLY-NEXT: vmovaps %ymm2, %ymm13
1104 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1105 ; AVX1-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1106 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm3[2,3,0,1]
1107 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1108 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm2 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]
1109 ; AVX1-ONLY-NEXT: vmovaps %ymm3, %ymm11
1110 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1111 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm2[0,1],ymm0[2,0],ymm2[4,5],ymm0[6,4]
1112 ; AVX1-ONLY-NEXT: vmovaps 160(%rdi), %xmm1
1113 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1114 ; AVX1-ONLY-NEXT: vmovaps 176(%rdi), %xmm2
1115 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1116 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
1117 ; AVX1-ONLY-NEXT: vmovaps 144(%rdi), %xmm4
1118 ; AVX1-ONLY-NEXT: vmovaps 128(%rdi), %xmm3
1119 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm5 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
1120 ; AVX1-ONLY-NEXT: vmovaps %xmm3, %xmm12
1121 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1122 ; AVX1-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1123 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm2 = xmm5[0,1],xmm2[2,0]
1124 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]
1125 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1126 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %ymm0
1127 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1128 ; AVX1-ONLY-NEXT: vmovaps 96(%rdi), %ymm2
1129 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1130 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
1131 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1132 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm2[0],ymm1[0],ymm2[2],ymm1[2]
1133 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm0[2,3,0,1]
1134 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1135 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm7 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[4],ymm0[4],ymm1[5],ymm0[5]
1136 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm7[0,1],ymm5[2,0],ymm7[4,5],ymm5[6,4]
1137 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm2
1138 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1139 ; AVX1-ONLY-NEXT: vmovaps 16(%rdi), %xmm3
1140 ; AVX1-ONLY-NEXT: vmovaps 32(%rdi), %xmm0
1141 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1142 ; AVX1-ONLY-NEXT: vmovaps 48(%rdi), %xmm5
1143 ; AVX1-ONLY-NEXT: vmovaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1144 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm0 = xmm5[0],xmm0[0]
1145 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm14 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
1146 ; AVX1-ONLY-NEXT: vmovaps %xmm3, %xmm7
1147 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm0 = xmm14[0,1],xmm0[2,0]
1148 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1149 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1150 ; AVX1-ONLY-NEXT: vmovups %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1151 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm0 = ymm15[0],ymm10[0],ymm15[1],ymm10[1],ymm15[4],ymm10[4],ymm15[5],ymm10[5]
1152 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
1153 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
1154 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm6[1,0],ymm10[1,0],ymm6[5,4],ymm10[5,4]
1155 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
1156 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm9, %xmm1 # 16-byte Folded Reload
1157 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm9[1],zero,zero
1158 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
1159 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9, %xmm14 # 16-byte Folded Reload
1160 ; AVX1-ONLY-NEXT: # xmm14 = xmm9[0],mem[0],xmm9[1],mem[1]
1161 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1162 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1163 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1164 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm0 = ymm8[0],ymm13[0],ymm8[1],ymm13[1],ymm8[4],ymm13[4],ymm8[5],ymm13[5]
1165 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm1 # 32-byte Folded Reload
1166 ; AVX1-ONLY-NEXT: # ymm1 = ymm11[1,0],mem[1,0],ymm11[5,4],mem[5,4]
1167 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
1168 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm1 = xmm12[1],xmm4[1],zero,zero
1169 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1170 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm14 # 16-byte Folded Reload
1171 ; AVX1-ONLY-NEXT: # xmm14 = xmm2[0],mem[0],xmm2[1],mem[1]
1172 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1173 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1174 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1175 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
1176 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1177 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm14 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[4],ymm2[4],ymm0[5],ymm2[5]
1178 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1179 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1180 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm1[1,0],ymm3[1,0],ymm1[5,4],ymm3[5,4]
1181 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm8 = ymm1[2,0],ymm14[2,3],ymm1[6,4],ymm14[6,7]
1182 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1183 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm1 # 16-byte Folded Reload
1184 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm4[1],zero,zero
1185 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
1186 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm14 # 16-byte Folded Reload
1187 ; AVX1-ONLY-NEXT: # xmm14 = xmm5[0],mem[0],xmm5[1],mem[1]
1188 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1189 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm8[4,5,6,7]
1190 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1191 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1192 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm8 # 32-byte Folded Reload
1193 ; AVX1-ONLY-NEXT: # ymm8 = ymm1[0],mem[0],ymm1[1],mem[1],ymm1[4],mem[4],ymm1[5],mem[5]
1194 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload
1195 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm1 # 32-byte Folded Reload
1196 ; AVX1-ONLY-NEXT: # ymm1 = ymm11[1,0],mem[1,0],ymm11[5,4],mem[5,4]
1197 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm8 = ymm1[2,0],ymm8[2,3],ymm1[6,4],ymm8[6,7]
1198 ; AVX1-ONLY-NEXT: vmovaps %xmm7, %xmm12
1199 ; AVX1-ONLY-NEXT: vmovaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1200 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1201 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm1 = xmm7[1],xmm12[1],zero,zero
1202 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
1203 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
1204 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm14 = xmm14[0],xmm13[0],xmm14[1],xmm13[1]
1205 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1206 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm8[4,5,6,7]
1207 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1208 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1209 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm1[1],ymm15[1],ymm1[3],ymm15[3]
1210 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm10[2],ymm6[2],ymm10[3],ymm6[3],ymm10[6],ymm6[6],ymm10[7],ymm6[7]
1211 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm8 = ymm1[0,1],ymm8[2,0],ymm1[4,5],ymm8[6,4]
1212 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1213 ; AVX1-ONLY-NEXT: vunpckhps (%rsp), %xmm1, %xmm1 # 16-byte Folded Reload
1214 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
1215 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm9, %xmm14 # 16-byte Folded Reload
1216 ; AVX1-ONLY-NEXT: # xmm14 = zero,zero,xmm9[2],mem[0]
1217 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1218 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm8[4,5,6,7]
1219 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1220 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]
1221 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm1 # 32-byte Folded Reload
1222 ; AVX1-ONLY-NEXT: # ymm1 = ymm3[2],mem[2],ymm3[3],mem[3],ymm3[6],mem[6],ymm3[7],mem[7]
1223 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm8[2,0],ymm1[4,5],ymm8[6,4]
1224 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1225 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm1[2],xmm4[2],xmm1[3],xmm4[3]
1226 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm14 # 16-byte Folded Reload
1227 ; AVX1-ONLY-NEXT: # xmm14 = zero,zero,xmm5[2],mem[0]
1228 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1229 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1230 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1231 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
1232 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
1233 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm5[1],ymm6[1],ymm5[3],ymm6[3]
1234 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
1235 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1236 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm8[2],ymm3[2],ymm8[3],ymm3[3],ymm8[6],ymm3[6],ymm8[7],ymm3[7]
1237 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
1238 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
1239 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
1240 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm9[2],xmm10[2],xmm9[3],xmm10[3]
1241 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1242 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1243 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm14 = zero,zero,xmm2[2],xmm4[2]
1244 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1245 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1246 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1247 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Reload
1248 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1249 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm15[1],ymm0[3],ymm15[3]
1250 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1251 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm1[2],ymm11[2],ymm1[3],ymm11[3],ymm1[6],ymm11[6],ymm1[7],ymm11[7]
1252 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
1253 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm7[2],xmm12[2],xmm7[3],xmm12[3]
1254 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1255 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm14 = zero,zero,xmm7[2],xmm13[2]
1256 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1257 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm14 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1258 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1259 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
1260 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[2],mem[2],ymm0[3],mem[3],ymm0[6],mem[6],ymm0[7],mem[7]
1261 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1262 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
1263 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[3,0],mem[3,0],ymm1[7,4],mem[7,4]
1264 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
1265 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1266 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
1267 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
1268 ; AVX1-ONLY-NEXT: vmovaps (%rsp), %xmm12 # 16-byte Reload
1269 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12, %xmm12 # 16-byte Folded Reload
1270 ; AVX1-ONLY-NEXT: # xmm12 = xmm12[3,0],mem[3,0]
1271 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm12[2,0],xmm1[2,3]
1272 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1273 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm6[2],ymm5[2],ymm6[3],ymm5[3],ymm6[6],ymm5[6],ymm6[7],ymm5[7]
1274 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm3[3,0],ymm8[3,0],ymm3[7,4],ymm8[7,4]
1275 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm3[2,0],ymm1[2,3],ymm3[6,4],ymm1[6,7]
1276 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm3 = xmm2[2],xmm4[2],xmm2[3],xmm4[3]
1277 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm6 = xmm10[3,0],xmm9[3,0]
1278 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm3 = xmm6[2,0],xmm3[2,3]
1279 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]
1280 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
1281 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm3 # 32-byte Folded Reload
1282 ; AVX1-ONLY-NEXT: # ymm3 = ymm2[2],mem[2],ymm2[3],mem[3],ymm2[6],mem[6],ymm2[7],mem[7]
1283 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
1284 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm6 # 32-byte Folded Reload
1285 ; AVX1-ONLY-NEXT: # ymm6 = ymm2[3,0],mem[3,0],ymm2[7,4],mem[7,4]
1286 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm6[2,0],ymm3[2,3],ymm6[6,4],ymm3[6,7]
1287 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1288 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm6 # 16-byte Folded Reload
1289 ; AVX1-ONLY-NEXT: # xmm6 = xmm2[2],mem[2],xmm2[3],mem[3]
1290 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1291 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm8 # 16-byte Folded Reload
1292 ; AVX1-ONLY-NEXT: # xmm8 = xmm2[3,0],mem[3,0]
1293 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm6 = xmm8[2,0],xmm6[2,3]
1294 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm6[0,1,2,3],ymm3[4,5,6,7]
1295 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm2 # 32-byte Folded Reload
1296 ; AVX1-ONLY-NEXT: # ymm2 = ymm15[2],mem[2],ymm15[3],mem[3],ymm15[6],mem[6],ymm15[7],mem[7]
1297 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm4 # 32-byte Folded Reload
1298 ; AVX1-ONLY-NEXT: # ymm4 = ymm11[3,0],mem[3,0],ymm11[7,4],mem[7,4]
1299 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm2 = ymm4[2,0],ymm2[2,3],ymm4[6,4],ymm2[6,7]
1300 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm4 = xmm7[2],xmm13[2],xmm7[3],xmm13[3]
1301 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
1302 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload
1303 ; AVX1-ONLY-NEXT: # xmm5 = xmm5[3,0],mem[3,0]
1304 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm4 = xmm5[2,0],xmm4[2,3]
1305 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
1306 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1307 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 32(%rsi)
1308 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1309 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 96(%rsi)
1310 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1311 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 64(%rsi)
1312 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1313 ; AVX1-ONLY-NEXT: vmovaps %ymm4, (%rsi)
1314 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1315 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 96(%rdx)
1316 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1317 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 32(%rdx)
1318 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1319 ; AVX1-ONLY-NEXT: vmovaps %ymm4, (%rdx)
1320 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1321 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 64(%rdx)
1322 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1323 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 32(%rcx)
1324 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1325 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 96(%rcx)
1326 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1327 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 64(%rcx)
1328 ; AVX1-ONLY-NEXT: vmovaps %ymm14, (%rcx)
1329 ; AVX1-ONLY-NEXT: vmovaps %ymm3, 96(%r8)
1330 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 32(%r8)
1331 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 64(%r8)
1332 ; AVX1-ONLY-NEXT: vmovaps %ymm2, (%r8)
1333 ; AVX1-ONLY-NEXT: addq $1000, %rsp # imm = 0x3E8
1334 ; AVX1-ONLY-NEXT: vzeroupper
1335 ; AVX1-ONLY-NEXT: retq
1337 ; AVX2-ONLY-LABEL: load_i32_stride4_vf32:
1338 ; AVX2-ONLY: # %bb.0:
1339 ; AVX2-ONLY-NEXT: subq $680, %rsp # imm = 0x2A8
1340 ; AVX2-ONLY-NEXT: vmovaps 416(%rdi), %ymm8
1341 ; AVX2-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1342 ; AVX2-ONLY-NEXT: vmovaps 448(%rdi), %ymm5
1343 ; AVX2-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1344 ; AVX2-ONLY-NEXT: vmovaps 480(%rdi), %ymm6
1345 ; AVX2-ONLY-NEXT: vmovaps 288(%rdi), %ymm4
1346 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1347 ; AVX2-ONLY-NEXT: vmovaps 320(%rdi), %ymm11
1348 ; AVX2-ONLY-NEXT: vmovaps 352(%rdi), %ymm2
1349 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [0,4,0,4,0,4,0,4]
1350 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm0, %ymm1
1351 ; AVX2-ONLY-NEXT: vmovaps %ymm2, %ymm7
1352 ; AVX2-ONLY-NEXT: vpermps %ymm11, %ymm0, %ymm2
1353 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm1[6,7]
1354 ; AVX2-ONLY-NEXT: vmovaps 272(%rdi), %xmm1
1355 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1356 ; AVX2-ONLY-NEXT: vmovaps 256(%rdi), %xmm3
1357 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1358 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
1359 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm1 = [0,4,0,4]
1360 ; AVX2-ONLY-NEXT: # xmm1 = mem[0,0]
1361 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm1, %ymm4
1362 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3]
1363 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
1364 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1365 ; AVX2-ONLY-NEXT: vpermps %ymm6, %ymm0, %ymm2
1366 ; AVX2-ONLY-NEXT: vmovaps %ymm6, %ymm12
1367 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm3
1368 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3,4,5],ymm2[6,7]
1369 ; AVX2-ONLY-NEXT: vmovaps 400(%rdi), %xmm4
1370 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1371 ; AVX2-ONLY-NEXT: vmovaps 384(%rdi), %xmm3
1372 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1373 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
1374 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm1, %ymm4
1375 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3]
1376 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %ymm9
1377 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
1378 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1379 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %ymm3
1380 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm0, %ymm2
1381 ; AVX2-ONLY-NEXT: vmovaps %ymm3, %ymm13
1382 ; AVX2-ONLY-NEXT: vpermps %ymm9, %ymm0, %ymm3
1383 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3,4,5],ymm2[6,7]
1384 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %ymm5
1385 ; AVX2-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1386 ; AVX2-ONLY-NEXT: vmovaps 144(%rdi), %xmm4
1387 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1388 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %xmm3
1389 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1390 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
1391 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm1, %ymm4
1392 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3]
1393 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
1394 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1395 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm14
1396 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm15
1397 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm2
1398 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm0, %ymm0
1399 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm2[6,7]
1400 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm2
1401 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1402 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm1, %ymm1
1403 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm3
1404 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1405 ; AVX2-ONLY-NEXT: vmovaps 16(%rdi), %xmm2
1406 ; AVX2-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1407 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
1408 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,3]
1409 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1410 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1411 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm1 = [1,5,1,5,1,5,1,5]
1412 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm1, %ymm0
1413 ; AVX2-ONLY-NEXT: vmovaps %ymm7, %ymm8
1414 ; AVX2-ONLY-NEXT: vpermps %ymm11, %ymm1, %ymm2
1415 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm2[0,1,2,3,4,5],ymm0[6,7]
1416 ; AVX2-ONLY-NEXT: vmovaps 256(%rdi), %ymm3
1417 ; AVX2-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1418 ; AVX2-ONLY-NEXT: vmovaps 304(%rdi), %xmm4
1419 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1420 ; AVX2-ONLY-NEXT: vmovaps 288(%rdi), %xmm2
1421 ; AVX2-ONLY-NEXT: vmovaps %xmm2, (%rsp) # 16-byte Spill
1422 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
1423 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm7 = [1,5,1,5]
1424 ; AVX2-ONLY-NEXT: # xmm7 = mem[0,0]
1425 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm7, %ymm4
1426 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm2 = xmm4[0,1],xmm2[2,3]
1427 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]
1428 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1429 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm1, %ymm0
1430 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm1, %ymm2
1431 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm5 = ymm2[0,1,2,3,4,5],ymm0[6,7]
1432 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm0
1433 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1434 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm2
1435 ; AVX2-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1436 ; AVX2-ONLY-NEXT: vmovaps 48(%rdi), %xmm4
1437 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm6 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
1438 ; AVX2-ONLY-NEXT: vpermps %ymm0, %ymm7, %ymm10
1439 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm10[0,1],xmm6[2,3]
1440 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm5[4,5,6,7]
1441 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1442 ; AVX2-ONLY-NEXT: vpermps %ymm13, %ymm1, %ymm5
1443 ; AVX2-ONLY-NEXT: vmovaps %ymm13, %ymm10
1444 ; AVX2-ONLY-NEXT: vpermps %ymm9, %ymm1, %ymm6
1445 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm6 = ymm6[0,1,2,3,4,5],ymm5[6,7]
1446 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %ymm2
1447 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1448 ; AVX2-ONLY-NEXT: vmovaps 176(%rdi), %xmm3
1449 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1450 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %xmm0
1451 ; AVX2-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1452 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
1453 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm7, %ymm13
1454 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm13[0,1],xmm0[2,3]
1455 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm6[4,5,6,7]
1456 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1457 ; AVX2-ONLY-NEXT: vmovaps %ymm12, %ymm3
1458 ; AVX2-ONLY-NEXT: vmovups %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1459 ; AVX2-ONLY-NEXT: vpermps %ymm12, %ymm1, %ymm0
1460 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
1461 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm1, %ymm1
1462 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
1463 ; AVX2-ONLY-NEXT: vmovaps 384(%rdi), %ymm1
1464 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1465 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm7, %ymm13
1466 ; AVX2-ONLY-NEXT: vmovaps 432(%rdi), %xmm6
1467 ; AVX2-ONLY-NEXT: vmovaps 416(%rdi), %xmm5
1468 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm12 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]
1469 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm12 = xmm13[0,1],xmm12[2,3]
1470 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm12[0,1,2,3],ymm0[4,5,6,7]
1471 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1472 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [2,6,2,6,2,6,2,6]
1473 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm0, %ymm12
1474 ; AVX2-ONLY-NEXT: vmovaps %ymm11, %ymm7
1475 ; AVX2-ONLY-NEXT: vpermps %ymm11, %ymm0, %ymm13
1476 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm12 = ymm13[0,1,2,3,4,5],ymm12[6,7]
1477 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1478 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm13 # 16-byte Folded Reload
1479 ; AVX2-ONLY-NEXT: # xmm13 = xmm1[2],mem[2],xmm1[3],mem[3]
1480 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm1 = [2,6,2,6]
1481 ; AVX2-ONLY-NEXT: # xmm1 = mem[0,0]
1482 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm11 # 32-byte Folded Reload
1483 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm11 = xmm13[0,1],xmm11[2,3]
1484 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm11 = ymm11[0,1,2,3],ymm12[4,5,6,7]
1485 ; AVX2-ONLY-NEXT: vmovups %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1486 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm0, %ymm11
1487 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm0, %ymm12
1488 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm11 = ymm12[0,1,2,3,4,5],ymm11[6,7]
1489 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1490 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm12 # 16-byte Folded Reload
1491 ; AVX2-ONLY-NEXT: # xmm12 = xmm2[2],mem[2],xmm2[3],mem[3]
1492 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm13 # 32-byte Folded Reload
1493 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm12 = xmm12[0,1],xmm13[2,3]
1494 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm12[0,1,2,3],ymm11[4,5,6,7]
1495 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1496 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm0, %ymm11
1497 ; AVX2-ONLY-NEXT: vmovaps %ymm9, %ymm3
1498 ; AVX2-ONLY-NEXT: vpermps %ymm9, %ymm0, %ymm12
1499 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm11 = ymm12[0,1,2,3,4,5],ymm11[6,7]
1500 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1501 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm12 # 16-byte Folded Reload
1502 ; AVX2-ONLY-NEXT: # xmm12 = xmm2[2],mem[2],xmm2[3],mem[3]
1503 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm13 # 32-byte Folded Reload
1504 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm12 = xmm12[0,1],xmm13[2,3]
1505 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm12 = ymm12[0,1,2,3],ymm11[4,5,6,7]
1506 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm11
1507 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm0, %ymm0
1508 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm11[6,7]
1509 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
1510 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1511 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm11 # 16-byte Folded Reload
1512 ; AVX2-ONLY-NEXT: # xmm11 = xmm2[2],mem[2],xmm2[3],mem[3]
1513 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm11[0,1],xmm1[2,3]
1514 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm13 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1515 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm1 = [3,7,3,7,3,7,3,7]
1516 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm1, %ymm0
1517 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm1, %ymm11
1518 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm11[0,1,2,3,4,5],ymm0[6,7]
1519 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1520 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm2 = xmm2[2],xmm4[2],xmm2[3],xmm4[3]
1521 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm4 = [3,7,3,7]
1522 ; AVX2-ONLY-NEXT: # xmm4 = mem[0,0]
1523 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm4, %ymm9 # 32-byte Folded Reload
1524 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm2 = xmm9[0,1],xmm2[2,3]
1525 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]
1526 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm1, %ymm2
1527 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm1, %ymm9
1528 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm9[0,1,2,3,4,5],ymm2[6,7]
1529 ; AVX2-ONLY-NEXT: vmovaps (%rsp), %xmm7 # 16-byte Reload
1530 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7, %xmm9 # 16-byte Folded Reload
1531 ; AVX2-ONLY-NEXT: # xmm9 = xmm7[2],mem[2],xmm7[3],mem[3]
1532 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm4, %ymm11 # 32-byte Folded Reload
1533 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm9 = xmm11[0,1],xmm9[2,3]
1534 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm9[0,1,2,3],ymm2[4,5,6,7]
1535 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm1, %ymm8
1536 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm1, %ymm7
1537 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm7 = ymm7[0,1,2,3,4,5],ymm8[6,7]
1538 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
1539 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm8 # 16-byte Folded Reload
1540 ; AVX2-ONLY-NEXT: # xmm8 = xmm3[2],mem[2],xmm3[3],mem[3]
1541 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm4, %ymm9 # 32-byte Folded Reload
1542 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm8 = xmm9[0,1],xmm8[2,3]
1543 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm7 = ymm8[0,1,2,3],ymm7[4,5,6,7]
1544 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm8 # 32-byte Folded Reload
1545 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
1546 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm8[6,7]
1547 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm3 = xmm5[2],xmm6[2],xmm5[3],xmm6[3]
1548 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm4, %ymm4 # 32-byte Folded Reload
1549 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm4[0,1],xmm3[2,3]
1550 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]
1551 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1552 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 32(%rsi)
1553 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1554 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 96(%rsi)
1555 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1556 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 64(%rsi)
1557 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1558 ; AVX2-ONLY-NEXT: vmovaps %ymm3, (%rsi)
1559 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1560 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 96(%rdx)
1561 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1562 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 32(%rdx)
1563 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1564 ; AVX2-ONLY-NEXT: vmovaps %ymm3, (%rdx)
1565 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1566 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 64(%rdx)
1567 ; AVX2-ONLY-NEXT: vmovaps %ymm12, 32(%rcx)
1568 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1569 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 96(%rcx)
1570 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1571 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 64(%rcx)
1572 ; AVX2-ONLY-NEXT: vmovaps %ymm13, (%rcx)
1573 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 96(%r8)
1574 ; AVX2-ONLY-NEXT: vmovaps %ymm7, 32(%r8)
1575 ; AVX2-ONLY-NEXT: vmovaps %ymm2, 64(%r8)
1576 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%r8)
1577 ; AVX2-ONLY-NEXT: addq $680, %rsp # imm = 0x2A8
1578 ; AVX2-ONLY-NEXT: vzeroupper
1579 ; AVX2-ONLY-NEXT: retq
1581 ; AVX512-LABEL: load_i32_stride4_vf32:
1583 ; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0
1584 ; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1
1585 ; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm2
1586 ; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm3
1587 ; AVX512-NEXT: vmovdqa64 320(%rdi), %zmm4
1588 ; AVX512-NEXT: vmovdqa64 256(%rdi), %zmm5
1589 ; AVX512-NEXT: vmovdqa64 448(%rdi), %zmm6
1590 ; AVX512-NEXT: vmovdqa64 384(%rdi), %zmm7
1591 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [0,4,8,12,16,20,24,28,0,4,8,12,16,20,24,28]
1592 ; AVX512-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]
1593 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm9
1594 ; AVX512-NEXT: vpermt2d %zmm6, %zmm8, %zmm9
1595 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm10
1596 ; AVX512-NEXT: vpermt2d %zmm4, %zmm8, %zmm10
1597 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm9 = zmm10[0,1,2,3],zmm9[4,5,6,7]
1598 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm10
1599 ; AVX512-NEXT: vpermt2d %zmm3, %zmm8, %zmm10
1600 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm8
1601 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm8 = zmm8[0,1,2,3],zmm10[4,5,6,7]
1602 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [1,5,9,13,17,21,25,29,1,5,9,13,17,21,25,29]
1603 ; AVX512-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]
1604 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm11
1605 ; AVX512-NEXT: vpermt2d %zmm6, %zmm10, %zmm11
1606 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm12
1607 ; AVX512-NEXT: vpermt2d %zmm4, %zmm10, %zmm12
1608 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm11 = zmm12[0,1,2,3],zmm11[4,5,6,7]
1609 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm12
1610 ; AVX512-NEXT: vpermt2d %zmm3, %zmm10, %zmm12
1611 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm10
1612 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm10 = zmm10[0,1,2,3],zmm12[4,5,6,7]
1613 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm12 = [2,6,10,14,18,22,26,30,2,6,10,14,18,22,26,30]
1614 ; AVX512-NEXT: # zmm12 = mem[0,1,2,3,0,1,2,3]
1615 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm13
1616 ; AVX512-NEXT: vpermt2d %zmm6, %zmm12, %zmm13
1617 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm14
1618 ; AVX512-NEXT: vpermt2d %zmm4, %zmm12, %zmm14
1619 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm13 = zmm14[0,1,2,3],zmm13[4,5,6,7]
1620 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm14
1621 ; AVX512-NEXT: vpermt2d %zmm3, %zmm12, %zmm14
1622 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm12
1623 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm12 = zmm12[0,1,2,3],zmm14[4,5,6,7]
1624 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm14 = [3,7,11,15,19,23,27,31,3,7,11,15,19,23,27,31]
1625 ; AVX512-NEXT: # zmm14 = mem[0,1,2,3,0,1,2,3]
1626 ; AVX512-NEXT: vpermt2d %zmm6, %zmm14, %zmm7
1627 ; AVX512-NEXT: vpermt2d %zmm4, %zmm14, %zmm5
1628 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm4 = zmm5[0,1,2,3],zmm7[4,5,6,7]
1629 ; AVX512-NEXT: vpermt2d %zmm3, %zmm14, %zmm2
1630 ; AVX512-NEXT: vpermt2d %zmm1, %zmm14, %zmm0
1631 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3],zmm2[4,5,6,7]
1632 ; AVX512-NEXT: vmovdqa64 %zmm9, 64(%rsi)
1633 ; AVX512-NEXT: vmovdqa64 %zmm8, (%rsi)
1634 ; AVX512-NEXT: vmovdqa64 %zmm11, 64(%rdx)
1635 ; AVX512-NEXT: vmovdqa64 %zmm10, (%rdx)
1636 ; AVX512-NEXT: vmovdqa64 %zmm13, 64(%rcx)
1637 ; AVX512-NEXT: vmovdqa64 %zmm12, (%rcx)
1638 ; AVX512-NEXT: vmovdqa64 %zmm4, 64(%r8)
1639 ; AVX512-NEXT: vmovdqa64 %zmm0, (%r8)
1640 ; AVX512-NEXT: vzeroupper
1642 %wide.vec = load <128 x i32>, ptr %in.vec, align 64
1643 %strided.vec0 = shufflevector <128 x i32> %wide.vec, <128 x i32> poison, <32 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28, i32 32, i32 36, i32 40, i32 44, i32 48, i32 52, i32 56, i32 60, i32 64, i32 68, i32 72, i32 76, i32 80, i32 84, i32 88, i32 92, i32 96, i32 100, i32 104, i32 108, i32 112, i32 116, i32 120, i32 124>
1644 %strided.vec1 = shufflevector <128 x i32> %wide.vec, <128 x i32> poison, <32 x i32> <i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 25, i32 29, i32 33, i32 37, i32 41, i32 45, i32 49, i32 53, i32 57, i32 61, i32 65, i32 69, i32 73, i32 77, i32 81, i32 85, i32 89, i32 93, i32 97, i32 101, i32 105, i32 109, i32 113, i32 117, i32 121, i32 125>
1645 %strided.vec2 = shufflevector <128 x i32> %wide.vec, <128 x i32> poison, <32 x i32> <i32 2, i32 6, i32 10, i32 14, i32 18, i32 22, i32 26, i32 30, i32 34, i32 38, i32 42, i32 46, i32 50, i32 54, i32 58, i32 62, i32 66, i32 70, i32 74, i32 78, i32 82, i32 86, i32 90, i32 94, i32 98, i32 102, i32 106, i32 110, i32 114, i32 118, i32 122, i32 126>
1646 %strided.vec3 = shufflevector <128 x i32> %wide.vec, <128 x i32> poison, <32 x i32> <i32 3, i32 7, i32 11, i32 15, i32 19, i32 23, i32 27, i32 31, i32 35, i32 39, i32 43, i32 47, i32 51, i32 55, i32 59, i32 63, i32 67, i32 71, i32 75, i32 79, i32 83, i32 87, i32 91, i32 95, i32 99, i32 103, i32 107, i32 111, i32 115, i32 119, i32 123, i32 127>
1647 store <32 x i32> %strided.vec0, ptr %out.vec0, align 64
1648 store <32 x i32> %strided.vec1, ptr %out.vec1, align 64
1649 store <32 x i32> %strided.vec2, ptr %out.vec2, align 64
1650 store <32 x i32> %strided.vec3, ptr %out.vec3, align 64
1654 define void @load_i32_stride4_vf64(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {
1655 ; SSE-LABEL: load_i32_stride4_vf64:
1657 ; SSE-NEXT: subq $1224, %rsp # imm = 0x4C8
1658 ; SSE-NEXT: movaps 144(%rdi), %xmm14
1659 ; SSE-NEXT: movaps 176(%rdi), %xmm11
1660 ; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1661 ; SSE-NEXT: movaps 160(%rdi), %xmm5
1662 ; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1663 ; SSE-NEXT: movaps 208(%rdi), %xmm3
1664 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1665 ; SSE-NEXT: movaps 192(%rdi), %xmm8
1666 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1667 ; SSE-NEXT: movaps 240(%rdi), %xmm6
1668 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1669 ; SSE-NEXT: movaps 224(%rdi), %xmm7
1670 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1671 ; SSE-NEXT: movaps 80(%rdi), %xmm10
1672 ; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1673 ; SSE-NEXT: movaps 64(%rdi), %xmm4
1674 ; SSE-NEXT: movaps 112(%rdi), %xmm2
1675 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1676 ; SSE-NEXT: movaps 96(%rdi), %xmm0
1677 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1678 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1679 ; SSE-NEXT: movaps %xmm4, %xmm2
1680 ; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm10[0],xmm2[1],xmm10[1]
1681 ; SSE-NEXT: movaps %xmm2, %xmm1
1682 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1683 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1684 ; SSE-NEXT: movaps %xmm7, %xmm1
1685 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1]
1686 ; SSE-NEXT: movaps %xmm8, %xmm6
1687 ; SSE-NEXT: unpcklps {{.*#+}} xmm6 = xmm6[0],xmm3[0],xmm6[1],xmm3[1]
1688 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1689 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1690 ; SSE-NEXT: movaps %xmm6, %xmm0
1691 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1692 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1693 ; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm1[1]
1694 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1695 ; SSE-NEXT: movaps %xmm5, %xmm0
1696 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm11[0],xmm0[1],xmm11[1]
1697 ; SSE-NEXT: movaps 128(%rdi), %xmm2
1698 ; SSE-NEXT: movaps %xmm2, %xmm1
1699 ; SSE-NEXT: movaps %xmm2, %xmm10
1700 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm14[0],xmm1[1],xmm14[1]
1701 ; SSE-NEXT: movaps %xmm1, %xmm2
1702 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1703 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1704 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1705 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1706 ; SSE-NEXT: movaps 368(%rdi), %xmm12
1707 ; SSE-NEXT: movaps 352(%rdi), %xmm0
1708 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1709 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm12[0],xmm0[1],xmm12[1]
1710 ; SSE-NEXT: movaps 336(%rdi), %xmm13
1711 ; SSE-NEXT: movaps 320(%rdi), %xmm11
1712 ; SSE-NEXT: movaps %xmm11, %xmm1
1713 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm13[0],xmm1[1],xmm13[1]
1714 ; SSE-NEXT: movaps %xmm1, %xmm2
1715 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1716 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1717 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1718 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1719 ; SSE-NEXT: movaps 304(%rdi), %xmm2
1720 ; SSE-NEXT: movaps %xmm2, (%rsp) # 16-byte Spill
1721 ; SSE-NEXT: movaps 288(%rdi), %xmm8
1722 ; SSE-NEXT: movaps %xmm8, %xmm0
1723 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1724 ; SSE-NEXT: movaps 272(%rdi), %xmm3
1725 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1726 ; SSE-NEXT: movaps 256(%rdi), %xmm2
1727 ; SSE-NEXT: movaps %xmm2, %xmm1
1728 ; SSE-NEXT: movaps %xmm2, %xmm9
1729 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
1730 ; SSE-NEXT: movaps %xmm1, %xmm2
1731 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1732 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1733 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1734 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1735 ; SSE-NEXT: movaps 496(%rdi), %xmm1
1736 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1737 ; SSE-NEXT: movaps 480(%rdi), %xmm0
1738 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1739 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1740 ; SSE-NEXT: movaps 464(%rdi), %xmm2
1741 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1742 ; SSE-NEXT: movaps 448(%rdi), %xmm1
1743 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1744 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1745 ; SSE-NEXT: movaps %xmm1, %xmm2
1746 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1747 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1748 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1749 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1750 ; SSE-NEXT: movaps 432(%rdi), %xmm2
1751 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1752 ; SSE-NEXT: movaps 416(%rdi), %xmm5
1753 ; SSE-NEXT: movaps %xmm5, %xmm0
1754 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1755 ; SSE-NEXT: movaps 400(%rdi), %xmm2
1756 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1757 ; SSE-NEXT: movaps 384(%rdi), %xmm1
1758 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1759 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1760 ; SSE-NEXT: movaps %xmm1, %xmm2
1761 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1762 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1763 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1764 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1765 ; SSE-NEXT: movaps 624(%rdi), %xmm2
1766 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1767 ; SSE-NEXT: movaps 608(%rdi), %xmm7
1768 ; SSE-NEXT: movaps %xmm7, %xmm0
1769 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1770 ; SSE-NEXT: movaps 592(%rdi), %xmm2
1771 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1772 ; SSE-NEXT: movaps 576(%rdi), %xmm1
1773 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1774 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1775 ; SSE-NEXT: movaps %xmm1, %xmm2
1776 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1777 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1778 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1779 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1780 ; SSE-NEXT: movaps 560(%rdi), %xmm1
1781 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1782 ; SSE-NEXT: movaps 544(%rdi), %xmm0
1783 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1784 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1785 ; SSE-NEXT: movaps 528(%rdi), %xmm2
1786 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1787 ; SSE-NEXT: movaps 512(%rdi), %xmm1
1788 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1789 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1790 ; SSE-NEXT: movaps %xmm1, %xmm2
1791 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1792 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1793 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1794 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1795 ; SSE-NEXT: movaps 752(%rdi), %xmm1
1796 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1797 ; SSE-NEXT: movaps 736(%rdi), %xmm0
1798 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1799 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1800 ; SSE-NEXT: movaps 720(%rdi), %xmm2
1801 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1802 ; SSE-NEXT: movaps 704(%rdi), %xmm1
1803 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1804 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1805 ; SSE-NEXT: movaps %xmm1, %xmm2
1806 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1807 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1808 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1809 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1810 ; SSE-NEXT: movaps 688(%rdi), %xmm1
1811 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1812 ; SSE-NEXT: movaps 672(%rdi), %xmm0
1813 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1814 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1815 ; SSE-NEXT: movaps 656(%rdi), %xmm3
1816 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1817 ; SSE-NEXT: movaps 640(%rdi), %xmm2
1818 ; SSE-NEXT: movaps %xmm2, %xmm1
1819 ; SSE-NEXT: movaps %xmm2, %xmm15
1820 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
1821 ; SSE-NEXT: movaps %xmm1, %xmm2
1822 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1823 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1824 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1825 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1826 ; SSE-NEXT: movaps 880(%rdi), %xmm1
1827 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1828 ; SSE-NEXT: movaps 864(%rdi), %xmm0
1829 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1830 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1831 ; SSE-NEXT: movaps 848(%rdi), %xmm2
1832 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1833 ; SSE-NEXT: movaps 832(%rdi), %xmm1
1834 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1835 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1836 ; SSE-NEXT: movaps %xmm1, %xmm2
1837 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1838 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1839 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1840 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1841 ; SSE-NEXT: movaps 816(%rdi), %xmm1
1842 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1843 ; SSE-NEXT: movaps 800(%rdi), %xmm0
1844 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1845 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1846 ; SSE-NEXT: movaps 784(%rdi), %xmm2
1847 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1848 ; SSE-NEXT: movaps 768(%rdi), %xmm1
1849 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1850 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1851 ; SSE-NEXT: movaps %xmm1, %xmm2
1852 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1853 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1854 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1855 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1856 ; SSE-NEXT: movaps 1008(%rdi), %xmm1
1857 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1858 ; SSE-NEXT: movaps 992(%rdi), %xmm0
1859 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1860 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1861 ; SSE-NEXT: movaps 976(%rdi), %xmm3
1862 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1863 ; SSE-NEXT: movaps 960(%rdi), %xmm1
1864 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1865 ; SSE-NEXT: movaps %xmm1, %xmm2
1866 ; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
1867 ; SSE-NEXT: movaps %xmm2, %xmm1
1868 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1869 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1870 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1871 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1872 ; SSE-NEXT: movaps 944(%rdi), %xmm0
1873 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1874 ; SSE-NEXT: movaps 928(%rdi), %xmm1
1875 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1876 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
1877 ; SSE-NEXT: movaps 912(%rdi), %xmm2
1878 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1879 ; SSE-NEXT: movaps 896(%rdi), %xmm0
1880 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1881 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1882 ; SSE-NEXT: movaps %xmm0, %xmm2
1883 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
1884 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1885 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
1886 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1887 ; SSE-NEXT: movaps 32(%rdi), %xmm2
1888 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1889 ; SSE-NEXT: movaps 48(%rdi), %xmm0
1890 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1891 ; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
1892 ; SSE-NEXT: movaps (%rdi), %xmm0
1893 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1894 ; SSE-NEXT: movaps 16(%rdi), %xmm6
1895 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1]
1896 ; SSE-NEXT: movaps %xmm0, %xmm1
1897 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
1898 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1899 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]
1900 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1901 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
1902 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
1903 ; SSE-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
1904 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
1905 ; SSE-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
1906 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1907 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
1908 ; SSE-NEXT: # xmm0 = xmm0[2],mem[2],xmm0[3],mem[3]
1909 ; SSE-NEXT: unpckhps {{.*#+}} xmm10 = xmm10[2],xmm14[2],xmm10[3],xmm14[3]
1910 ; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1911 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
1912 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Folded Reload
1913 ; SSE-NEXT: # xmm14 = xmm14[2],mem[2],xmm14[3],mem[3]
1914 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1915 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
1916 ; SSE-NEXT: # xmm2 = xmm2[2],mem[2],xmm2[3],mem[3]
1917 ; SSE-NEXT: unpckhps (%rsp), %xmm8 # 16-byte Folded Reload
1918 ; SSE-NEXT: # xmm8 = xmm8[2],mem[2],xmm8[3],mem[3]
1919 ; SSE-NEXT: movaps %xmm8, (%rsp) # 16-byte Spill
1920 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload
1921 ; SSE-NEXT: # xmm9 = xmm9[2],mem[2],xmm9[3],mem[3]
1922 ; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1923 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1924 ; SSE-NEXT: unpckhps {{.*#+}} xmm1 = xmm1[2],xmm12[2],xmm1[3],xmm12[3]
1925 ; SSE-NEXT: unpckhps {{.*#+}} xmm11 = xmm11[2],xmm13[2],xmm11[3],xmm13[3]
1926 ; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1927 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
1928 ; SSE-NEXT: # xmm5 = xmm5[2],mem[2],xmm5[3],mem[3]
1929 ; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1930 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
1931 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
1932 ; SSE-NEXT: # xmm12 = xmm12[2],mem[2],xmm12[3],mem[3]
1933 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
1934 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload
1935 ; SSE-NEXT: # xmm13 = xmm13[2],mem[2],xmm13[3],mem[3]
1936 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
1937 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload
1938 ; SSE-NEXT: # xmm10 = xmm10[2],mem[2],xmm10[3],mem[3]
1939 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
1940 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload
1941 ; SSE-NEXT: # xmm11 = xmm11[2],mem[2],xmm11[3],mem[3]
1942 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
1943 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload
1944 ; SSE-NEXT: # xmm9 = xmm9[2],mem[2],xmm9[3],mem[3]
1945 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload
1946 ; SSE-NEXT: # xmm7 = xmm7[2],mem[2],xmm7[3],mem[3]
1947 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1948 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
1949 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
1950 ; SSE-NEXT: # xmm5 = xmm5[2],mem[2],xmm5[3],mem[3]
1951 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1952 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload
1953 ; SSE-NEXT: # xmm7 = xmm7[2],mem[2],xmm7[3],mem[3]
1954 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1955 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1956 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1957 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1958 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
1959 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
1960 ; SSE-NEXT: # xmm8 = xmm8[2],mem[2],xmm8[3],mem[3]
1961 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1962 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload
1963 ; SSE-NEXT: # xmm7 = xmm7[2],mem[2],xmm7[3],mem[3]
1964 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1965 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1966 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1967 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1968 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1969 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1970 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1971 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1972 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1973 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1974 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1975 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1976 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1977 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1978 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1979 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1980 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1981 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1982 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1983 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1984 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1985 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1986 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1987 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1988 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1989 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1990 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1991 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1992 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1993 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1994 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1995 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1996 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1997 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1998 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1999 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2000 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2001 ; SSE-NEXT: unpckhps {{.*#+}} xmm15 = xmm15[2],xmm6[2],xmm15[3],xmm6[3]
2002 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2003 ; SSE-NEXT: movaps %xmm4, %xmm6
2004 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm3[0]
2005 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2006 ; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm3[1]
2007 ; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2008 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2009 ; SSE-NEXT: movaps %xmm3, %xmm4
2010 ; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm0[0]
2011 ; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2012 ; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm0[1]
2013 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2014 ; SSE-NEXT: movaps %xmm2, %xmm3
2015 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm14[0]
2016 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2017 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm14[1]
2018 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2019 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2020 ; SSE-NEXT: movaps %xmm0, %xmm3
2021 ; SSE-NEXT: movaps (%rsp), %xmm2 # 16-byte Reload
2022 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm2[0]
2023 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2024 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]
2025 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2026 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2027 ; SSE-NEXT: movaps %xmm0, %xmm2
2028 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
2029 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2030 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
2031 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2032 ; SSE-NEXT: movaps %xmm12, %xmm15
2033 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2034 ; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm1[0]
2035 ; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm1[1]
2036 ; SSE-NEXT: movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2037 ; SSE-NEXT: movaps %xmm10, %xmm0
2038 ; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm13[0]
2039 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm13[1]
2040 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2041 ; SSE-NEXT: movaps %xmm9, %xmm6
2042 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm11[0]
2043 ; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm11[1]
2044 ; SSE-NEXT: movaps %xmm9, %xmm11
2045 ; SSE-NEXT: movaps %xmm5, %xmm0
2046 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2047 ; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm1[0]
2048 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
2049 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2050 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2051 ; SSE-NEXT: movaps %xmm0, %xmm4
2052 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2053 ; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm1[0]
2054 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
2055 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2056 ; SSE-NEXT: movaps %xmm7, %xmm3
2057 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm8[0]
2058 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm8[1]
2059 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2060 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2061 ; SSE-NEXT: movaps %xmm0, %xmm2
2062 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2063 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
2064 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
2065 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2066 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2067 ; SSE-NEXT: movaps %xmm0, %xmm1
2068 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
2069 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm7[0]
2070 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm7[1]
2071 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2072 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2073 ; SSE-NEXT: movaps %xmm0, %xmm12
2074 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
2075 ; SSE-NEXT: movlhps {{.*#+}} xmm12 = xmm12[0],xmm7[0]
2076 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm7[1]
2077 ; SSE-NEXT: movaps %xmm0, %xmm7
2078 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2079 ; SSE-NEXT: movaps %xmm8, %xmm0
2080 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
2081 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm9[0]
2082 ; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm9[1]
2083 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2084 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2085 ; SSE-NEXT: movaps %xmm8, %xmm13
2086 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
2087 ; SSE-NEXT: movlhps {{.*#+}} xmm13 = xmm13[0],xmm9[0]
2088 ; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm9[1]
2089 ; SSE-NEXT: movaps %xmm8, %xmm9
2090 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2091 ; SSE-NEXT: movaps %xmm8, 224(%rsi)
2092 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2093 ; SSE-NEXT: movaps %xmm8, 160(%rsi)
2094 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2095 ; SSE-NEXT: movaps %xmm14, 96(%rsi)
2096 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2097 ; SSE-NEXT: movaps %xmm14, 32(%rsi)
2098 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2099 ; SSE-NEXT: movaps %xmm8, 240(%rsi)
2100 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2101 ; SSE-NEXT: movaps %xmm8, 176(%rsi)
2102 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2103 ; SSE-NEXT: movaps %xmm14, 112(%rsi)
2104 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2105 ; SSE-NEXT: movaps %xmm14, 48(%rsi)
2106 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2107 ; SSE-NEXT: movaps %xmm8, 192(%rsi)
2108 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2109 ; SSE-NEXT: movaps %xmm14, 128(%rsi)
2110 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2111 ; SSE-NEXT: movaps %xmm14, 64(%rsi)
2112 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2113 ; SSE-NEXT: movaps %xmm8, (%rsi)
2114 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2115 ; SSE-NEXT: movaps %xmm8, 208(%rsi)
2116 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2117 ; SSE-NEXT: movaps %xmm14, 144(%rsi)
2118 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2119 ; SSE-NEXT: movaps %xmm14, 80(%rsi)
2120 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2121 ; SSE-NEXT: movaps %xmm14, 16(%rsi)
2122 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2123 ; SSE-NEXT: movaps %xmm8, 224(%rdx)
2124 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2125 ; SSE-NEXT: movaps %xmm8, 240(%rdx)
2126 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2127 ; SSE-NEXT: movaps %xmm8, 192(%rdx)
2128 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2129 ; SSE-NEXT: movaps %xmm8, 208(%rdx)
2130 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2131 ; SSE-NEXT: movaps %xmm8, 160(%rdx)
2132 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2133 ; SSE-NEXT: movaps %xmm14, 176(%rdx)
2134 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2135 ; SSE-NEXT: movaps %xmm14, 128(%rdx)
2136 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2137 ; SSE-NEXT: movaps %xmm14, 144(%rdx)
2138 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2139 ; SSE-NEXT: movaps %xmm14, 96(%rdx)
2140 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2141 ; SSE-NEXT: movaps %xmm14, 112(%rdx)
2142 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2143 ; SSE-NEXT: movaps %xmm14, 64(%rdx)
2144 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2145 ; SSE-NEXT: movaps %xmm14, 80(%rdx)
2146 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2147 ; SSE-NEXT: movaps %xmm14, 32(%rdx)
2148 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2149 ; SSE-NEXT: movaps %xmm14, 48(%rdx)
2150 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2151 ; SSE-NEXT: movaps %xmm8, (%rdx)
2152 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2153 ; SSE-NEXT: movaps %xmm14, 16(%rdx)
2154 ; SSE-NEXT: movaps %xmm0, 240(%rcx)
2155 ; SSE-NEXT: movaps %xmm12, 224(%rcx)
2156 ; SSE-NEXT: movaps %xmm1, 208(%rcx)
2157 ; SSE-NEXT: movaps %xmm2, 192(%rcx)
2158 ; SSE-NEXT: movaps %xmm3, 176(%rcx)
2159 ; SSE-NEXT: movaps %xmm4, 160(%rcx)
2160 ; SSE-NEXT: movaps %xmm5, 144(%rcx)
2161 ; SSE-NEXT: movaps %xmm6, 128(%rcx)
2162 ; SSE-NEXT: movaps %xmm10, 112(%rcx)
2163 ; SSE-NEXT: movaps %xmm15, 96(%rcx)
2164 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2165 ; SSE-NEXT: movaps %xmm0, 80(%rcx)
2166 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2167 ; SSE-NEXT: movaps %xmm0, 64(%rcx)
2168 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2169 ; SSE-NEXT: movaps %xmm0, 48(%rcx)
2170 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2171 ; SSE-NEXT: movaps %xmm0, 32(%rcx)
2172 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2173 ; SSE-NEXT: movaps %xmm0, 16(%rcx)
2174 ; SSE-NEXT: movaps %xmm13, (%rcx)
2175 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2176 ; SSE-NEXT: movaps %xmm0, 240(%r8)
2177 ; SSE-NEXT: movaps %xmm7, 224(%r8)
2178 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2179 ; SSE-NEXT: movaps %xmm0, 208(%r8)
2180 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2181 ; SSE-NEXT: movaps %xmm0, 192(%r8)
2182 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2183 ; SSE-NEXT: movaps %xmm0, 176(%r8)
2184 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2185 ; SSE-NEXT: movaps %xmm0, 160(%r8)
2186 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2187 ; SSE-NEXT: movaps %xmm0, 144(%r8)
2188 ; SSE-NEXT: movaps %xmm11, 128(%r8)
2189 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2190 ; SSE-NEXT: movaps %xmm0, 112(%r8)
2191 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2192 ; SSE-NEXT: movaps %xmm0, 96(%r8)
2193 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2194 ; SSE-NEXT: movaps %xmm0, 80(%r8)
2195 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2196 ; SSE-NEXT: movaps %xmm0, 64(%r8)
2197 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2198 ; SSE-NEXT: movaps %xmm0, 48(%r8)
2199 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2200 ; SSE-NEXT: movaps %xmm0, 32(%r8)
2201 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2202 ; SSE-NEXT: movaps %xmm0, 16(%r8)
2203 ; SSE-NEXT: movaps %xmm9, (%r8)
2204 ; SSE-NEXT: addq $1224, %rsp # imm = 0x4C8
2207 ; AVX1-ONLY-LABEL: load_i32_stride4_vf64:
2208 ; AVX1-ONLY: # %bb.0:
2209 ; AVX1-ONLY-NEXT: subq $2184, %rsp # imm = 0x888
2210 ; AVX1-ONLY-NEXT: vmovaps 448(%rdi), %ymm3
2211 ; AVX1-ONLY-NEXT: vmovaps 480(%rdi), %ymm4
2212 ; AVX1-ONLY-NEXT: vmovaps 192(%rdi), %ymm14
2213 ; AVX1-ONLY-NEXT: vmovaps 224(%rdi), %ymm1
2214 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm5 = ymm1[2,3,0,1]
2215 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm5[0],ymm1[2],ymm5[2]
2216 ; AVX1-ONLY-NEXT: vmovaps %ymm5, %ymm8
2217 ; AVX1-ONLY-NEXT: vmovaps %ymm1, %ymm9
2218 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm5 = ymm14[2,3,0,1]
2219 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm5[0],ymm14[0],ymm5[1],ymm14[1],ymm5[4],ymm14[4],ymm5[5],ymm14[5]
2220 ; AVX1-ONLY-NEXT: vmovaps %ymm5, %ymm7
2221 ; AVX1-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2222 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2223 ; AVX1-ONLY-NEXT: vmovaps 160(%rdi), %xmm1
2224 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2225 ; AVX1-ONLY-NEXT: vmovaps 176(%rdi), %xmm5
2226 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm5[0],xmm1[0]
2227 ; AVX1-ONLY-NEXT: vmovaps %xmm5, %xmm13
2228 ; AVX1-ONLY-NEXT: vmovaps 144(%rdi), %xmm2
2229 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2230 ; AVX1-ONLY-NEXT: vmovaps 128(%rdi), %xmm12
2231 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm12[0],xmm2[0],xmm12[1],xmm2[1]
2232 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
2233 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2234 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2235 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm4[2,3,0,1]
2236 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2237 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm4[0],ymm0[0],ymm4[2],ymm0[2]
2238 ; AVX1-ONLY-NEXT: vmovaps %ymm4, %ymm5
2239 ; AVX1-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2240 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2241 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm3[2,3,0,1]
2242 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2243 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]
2244 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2245 ; AVX1-ONLY-NEXT: vmovaps 416(%rdi), %xmm2
2246 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2247 ; AVX1-ONLY-NEXT: vmovaps 432(%rdi), %xmm1
2248 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2249 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
2250 ; AVX1-ONLY-NEXT: vmovaps 400(%rdi), %xmm2
2251 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2252 ; AVX1-ONLY-NEXT: vmovaps 384(%rdi), %xmm4
2253 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
2254 ; AVX1-ONLY-NEXT: vmovaps %xmm4, %xmm6
2255 ; AVX1-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2256 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
2257 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2258 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2259 ; AVX1-ONLY-NEXT: vmovaps 704(%rdi), %ymm2
2260 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2261 ; AVX1-ONLY-NEXT: vmovaps 736(%rdi), %ymm1
2262 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2263 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3,0,1]
2264 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2265 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
2266 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
2267 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2268 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
2269 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2270 ; AVX1-ONLY-NEXT: vmovaps 672(%rdi), %xmm2
2271 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2272 ; AVX1-ONLY-NEXT: vmovaps 688(%rdi), %xmm1
2273 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2274 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
2275 ; AVX1-ONLY-NEXT: vmovaps 656(%rdi), %xmm3
2276 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2277 ; AVX1-ONLY-NEXT: vmovaps 640(%rdi), %xmm2
2278 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2279 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
2280 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
2281 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2282 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2283 ; AVX1-ONLY-NEXT: vmovaps 960(%rdi), %ymm2
2284 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2285 ; AVX1-ONLY-NEXT: vmovaps 992(%rdi), %ymm1
2286 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2287 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3,0,1]
2288 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2289 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
2290 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
2291 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2292 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
2293 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2294 ; AVX1-ONLY-NEXT: vmovaps 928(%rdi), %xmm2
2295 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2296 ; AVX1-ONLY-NEXT: vmovaps 944(%rdi), %xmm1
2297 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2298 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
2299 ; AVX1-ONLY-NEXT: vmovaps 912(%rdi), %xmm3
2300 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2301 ; AVX1-ONLY-NEXT: vmovaps 896(%rdi), %xmm2
2302 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2303 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
2304 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
2305 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2306 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2307 ; AVX1-ONLY-NEXT: vmovaps 320(%rdi), %ymm2
2308 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2309 ; AVX1-ONLY-NEXT: vmovaps 352(%rdi), %ymm1
2310 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2311 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3,0,1]
2312 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2313 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
2314 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
2315 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2316 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
2317 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2318 ; AVX1-ONLY-NEXT: vmovaps 288(%rdi), %xmm2
2319 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2320 ; AVX1-ONLY-NEXT: vmovaps 304(%rdi), %xmm1
2321 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2322 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
2323 ; AVX1-ONLY-NEXT: vmovaps 272(%rdi), %xmm3
2324 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2325 ; AVX1-ONLY-NEXT: vmovaps 256(%rdi), %xmm2
2326 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2327 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
2328 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
2329 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2330 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2331 ; AVX1-ONLY-NEXT: vmovaps 576(%rdi), %ymm2
2332 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2333 ; AVX1-ONLY-NEXT: vmovaps 608(%rdi), %ymm1
2334 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2335 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3,0,1]
2336 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2337 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
2338 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
2339 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2340 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
2341 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2342 ; AVX1-ONLY-NEXT: vmovaps 544(%rdi), %xmm2
2343 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2344 ; AVX1-ONLY-NEXT: vmovaps 560(%rdi), %xmm1
2345 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2346 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
2347 ; AVX1-ONLY-NEXT: vmovaps 528(%rdi), %xmm3
2348 ; AVX1-ONLY-NEXT: vmovaps %xmm3, (%rsp) # 16-byte Spill
2349 ; AVX1-ONLY-NEXT: vmovaps 512(%rdi), %xmm2
2350 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2351 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
2352 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
2353 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2354 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2355 ; AVX1-ONLY-NEXT: vmovaps 832(%rdi), %ymm2
2356 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2357 ; AVX1-ONLY-NEXT: vmovaps 864(%rdi), %ymm1
2358 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2359 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3,0,1]
2360 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2361 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
2362 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
2363 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2364 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
2365 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2366 ; AVX1-ONLY-NEXT: vmovaps 800(%rdi), %xmm2
2367 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2368 ; AVX1-ONLY-NEXT: vmovaps 816(%rdi), %xmm1
2369 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2370 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
2371 ; AVX1-ONLY-NEXT: vmovaps 784(%rdi), %xmm2
2372 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2373 ; AVX1-ONLY-NEXT: vmovaps 768(%rdi), %xmm3
2374 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2375 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm10 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
2376 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm10[0,1],xmm1[2,0]
2377 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2378 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2379 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %ymm0
2380 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2381 ; AVX1-ONLY-NEXT: vmovaps 96(%rdi), %ymm1
2382 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2383 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm1[2,3,0,1]
2384 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2385 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm1[0],ymm2[0],ymm1[2],ymm2[2]
2386 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm0[2,3,0,1]
2387 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2388 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm11 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[4],ymm0[4],ymm1[5],ymm0[5]
2389 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm11[0,1],ymm10[2,0],ymm11[4,5],ymm10[6,4]
2390 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm2
2391 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2392 ; AVX1-ONLY-NEXT: vmovaps 16(%rdi), %xmm3
2393 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2394 ; AVX1-ONLY-NEXT: vmovaps 32(%rdi), %xmm4
2395 ; AVX1-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2396 ; AVX1-ONLY-NEXT: vmovaps 48(%rdi), %xmm0
2397 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2398 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm0 = xmm0[0],xmm4[0]
2399 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm15 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
2400 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm0 = xmm15[0,1],xmm0[2,0]
2401 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
2402 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2403 ; AVX1-ONLY-NEXT: vmovaps %ymm8, %ymm10
2404 ; AVX1-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2405 ; AVX1-ONLY-NEXT: vmovaps %ymm9, %ymm2
2406 ; AVX1-ONLY-NEXT: vmovups %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2407 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm0 = ymm8[0],ymm9[0],ymm8[1],ymm9[1],ymm8[4],ymm9[4],ymm8[5],ymm9[5]
2408 ; AVX1-ONLY-NEXT: vmovups %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2409 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm14[1,0],ymm7[1,0],ymm14[5,4],ymm7[5,4]
2410 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2411 ; AVX1-ONLY-NEXT: vmovaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2412 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
2413 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm1 = xmm12[1],xmm4[1],zero,zero
2414 ; AVX1-ONLY-NEXT: vmovaps %xmm13, %xmm7
2415 ; AVX1-ONLY-NEXT: vmovaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2416 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2417 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm15 = xmm3[0],xmm13[0],xmm3[1],xmm13[1]
2418 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2419 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2420 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2421 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
2422 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm0 = ymm8[0],ymm5[0],ymm8[1],ymm5[1],ymm8[4],ymm5[4],ymm8[5],ymm5[5]
2423 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload
2424 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2425 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm9[1,0],ymm5[1,0],ymm9[5,4],ymm5[5,4]
2426 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2427 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
2428 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm1 = xmm6[1],xmm13[1],zero,zero
2429 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
2430 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
2431 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm15 = xmm6[0],xmm11[0],xmm6[1],xmm11[1]
2432 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2433 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2434 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2435 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2436 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2437 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2438 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2439 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2440 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[1,0],mem[1,0],ymm1[5,4],mem[5,4]
2441 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2442 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2443 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2444 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm1[1],zero,zero
2445 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2446 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2447 ; AVX1-ONLY-NEXT: # xmm15 = xmm15[0],mem[0],xmm15[1],mem[1]
2448 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2449 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2450 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2451 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2452 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2453 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2454 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2455 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2456 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[1,0],mem[1,0],ymm1[5,4],mem[5,4]
2457 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2458 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2459 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2460 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm1[1],zero,zero
2461 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2462 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2463 ; AVX1-ONLY-NEXT: # xmm15 = xmm15[0],mem[0],xmm15[1],mem[1]
2464 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2465 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2466 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2467 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2468 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2469 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2470 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2471 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2472 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[1,0],mem[1,0],ymm1[5,4],mem[5,4]
2473 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2474 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2475 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2476 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm1[1],zero,zero
2477 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2478 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2479 ; AVX1-ONLY-NEXT: # xmm15 = xmm15[0],mem[0],xmm15[1],mem[1]
2480 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2481 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2482 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2483 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2484 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2485 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2486 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2487 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2488 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[1,0],mem[1,0],ymm1[5,4],mem[5,4]
2489 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2490 ; AVX1-ONLY-NEXT: vmovaps (%rsp), %xmm1 # 16-byte Reload
2491 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2492 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm1[1],zero,zero
2493 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2494 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2495 ; AVX1-ONLY-NEXT: # xmm15 = xmm15[0],mem[0],xmm15[1],mem[1]
2496 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2497 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2498 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2499 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2500 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2501 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2502 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2503 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2504 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[1,0],mem[1,0],ymm1[5,4],mem[5,4]
2505 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2506 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2507 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2508 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm1[1],zero,zero
2509 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2510 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2511 ; AVX1-ONLY-NEXT: # xmm15 = xmm15[0],mem[0],xmm15[1],mem[1]
2512 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2513 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2514 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2515 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2516 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2517 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2518 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2519 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2520 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[1,0],mem[1,0],ymm1[5,4],mem[5,4]
2521 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2522 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2523 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2524 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm1[1],zero,zero
2525 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2526 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2527 ; AVX1-ONLY-NEXT: # xmm15 = xmm15[0],mem[0],xmm15[1],mem[1]
2528 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2529 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2530 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2531 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm10[1],ymm2[3],ymm10[3]
2532 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
2533 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm10[2],ymm14[2],ymm10[3],ymm14[3],ymm10[6],ymm14[6],ymm10[7],ymm14[7]
2534 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2535 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm12[2],xmm4[2],xmm12[3],xmm4[3]
2536 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm15 = zero,zero,xmm3[2],xmm7[2]
2537 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2538 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2539 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2540 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
2541 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm7[1],ymm8[1],ymm7[3],ymm8[3]
2542 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm5[2],ymm9[2],ymm5[3],ymm9[3],ymm5[6],ymm9[6],ymm5[7],ymm9[7]
2543 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2544 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2545 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm14[2],xmm13[2],xmm14[3],xmm13[3]
2546 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm15 = zero,zero,xmm6[2],xmm11[2]
2547 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2548 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2549 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2550 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
2551 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
2552 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm4[1],ymm8[1],ymm4[3],ymm8[3]
2553 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload
2554 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2555 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm11[2],ymm5[2],ymm11[3],ymm5[3],ymm11[6],ymm5[6],ymm11[7],ymm5[7]
2556 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2557 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
2558 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
2559 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm13[2],xmm12[2],xmm13[3],xmm12[3]
2560 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2561 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2562 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm15 = zero,zero,xmm2[2],xmm3[2]
2563 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2564 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2565 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2566 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload
2567 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
2568 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm6[1],ymm9[1],ymm6[3],ymm9[3]
2569 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2570 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2571 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[2],mem[2],ymm1[3],mem[3],ymm1[6],mem[6],ymm1[7],mem[7]
2572 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2573 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2574 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2575 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2576 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2577 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2578 ; AVX1-ONLY-NEXT: # xmm15 = zero,zero,xmm15[2],mem[0]
2579 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2580 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2581 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2582 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2583 ; AVX1-ONLY-NEXT: vunpckhpd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2584 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[1],mem[1],ymm0[3],mem[3]
2585 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2586 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2587 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[2],mem[2],ymm1[3],mem[3],ymm1[6],mem[6],ymm1[7],mem[7]
2588 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2589 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2590 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2591 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2592 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2593 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2594 ; AVX1-ONLY-NEXT: # xmm15 = zero,zero,xmm15[2],mem[0]
2595 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2596 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2597 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2598 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2599 ; AVX1-ONLY-NEXT: vunpckhpd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2600 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[1],mem[1],ymm0[3],mem[3]
2601 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2602 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2603 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[2],mem[2],ymm1[3],mem[3],ymm1[6],mem[6],ymm1[7],mem[7]
2604 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2605 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2606 ; AVX1-ONLY-NEXT: vunpckhps (%rsp), %xmm1, %xmm1 # 16-byte Folded Reload
2607 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2608 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2609 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2610 ; AVX1-ONLY-NEXT: # xmm15 = zero,zero,xmm15[2],mem[0]
2611 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2612 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2613 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2614 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2615 ; AVX1-ONLY-NEXT: vunpckhpd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2616 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[1],mem[1],ymm0[3],mem[3]
2617 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2618 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2619 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[2],mem[2],ymm1[3],mem[3],ymm1[6],mem[6],ymm1[7],mem[7]
2620 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2621 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2622 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2623 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2624 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2625 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2626 ; AVX1-ONLY-NEXT: # xmm15 = zero,zero,xmm15[2],mem[0]
2627 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2628 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2629 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2630 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2631 ; AVX1-ONLY-NEXT: vunpckhpd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2632 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[1],mem[1],ymm0[3],mem[3]
2633 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2634 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2635 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[2],mem[2],ymm1[3],mem[3],ymm1[6],mem[6],ymm1[7],mem[7]
2636 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2637 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2638 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2639 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2640 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2641 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2642 ; AVX1-ONLY-NEXT: # xmm15 = zero,zero,xmm15[2],mem[0]
2643 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2644 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2645 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2646 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2647 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2648 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[2],mem[2],ymm0[3],mem[3],ymm0[6],mem[6],ymm0[7],mem[7]
2649 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2650 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm1[3,0],ymm10[3,0],ymm1[7,4],ymm10[7,4]
2651 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2652 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2653 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2654 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2655 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
2656 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm10, %xmm15 # 16-byte Folded Reload
2657 ; AVX1-ONLY-NEXT: # xmm15 = xmm10[3,0],mem[3,0]
2658 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm15[2,0],xmm1[2,3]
2659 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm10 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2660 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2661 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm7[2],ymm0[3],ymm7[3],ymm0[6],ymm7[6],ymm0[7],ymm7[7]
2662 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2663 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2664 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[3,0],mem[3,0],ymm1[7,4],mem[7,4]
2665 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2666 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2667 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2668 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2669 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
2670 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm15 = xmm7[3,0],xmm14[3,0]
2671 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm15[2,0],xmm1[2,3]
2672 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm15 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2673 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm0 = ymm8[2],ymm4[2],ymm8[3],ymm4[3],ymm8[6],ymm4[6],ymm8[7],ymm4[7]
2674 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm5[3,0],ymm11[3,0],ymm5[7,4],ymm11[7,4]
2675 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2676 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]
2677 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm14 = xmm12[3,0],xmm13[3,0]
2678 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm14[2,0],xmm1[2,3]
2679 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2680 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm9[2],ymm6[2],ymm9[3],ymm6[3],ymm9[6],ymm6[6],ymm9[7],ymm6[7]
2681 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
2682 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm12 # 32-byte Folded Reload
2683 ; AVX1-ONLY-NEXT: # ymm12 = ymm2[3,0],mem[3,0],ymm2[7,4],mem[7,4]
2684 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm12[2,0],ymm1[2,3],ymm12[6,4],ymm1[6,7]
2685 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2686 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm12 # 16-byte Folded Reload
2687 ; AVX1-ONLY-NEXT: # xmm12 = xmm2[2],mem[2],xmm2[3],mem[3]
2688 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2689 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm13 # 16-byte Folded Reload
2690 ; AVX1-ONLY-NEXT: # xmm13 = xmm2[3,0],mem[3,0]
2691 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm12 = xmm13[2,0],xmm12[2,3]
2692 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm12[0,1,2,3],ymm1[4,5,6,7]
2693 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
2694 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm6 # 32-byte Folded Reload
2695 ; AVX1-ONLY-NEXT: # ymm6 = ymm2[2],mem[2],ymm2[3],mem[3],ymm2[6],mem[6],ymm2[7],mem[7]
2696 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
2697 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm9 # 32-byte Folded Reload
2698 ; AVX1-ONLY-NEXT: # ymm9 = ymm2[3,0],mem[3,0],ymm2[7,4],mem[7,4]
2699 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm6 = ymm9[2,0],ymm6[2,3],ymm9[6,4],ymm6[6,7]
2700 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2701 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm9 # 16-byte Folded Reload
2702 ; AVX1-ONLY-NEXT: # xmm9 = xmm2[2],mem[2],xmm2[3],mem[3]
2703 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2704 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm12 # 16-byte Folded Reload
2705 ; AVX1-ONLY-NEXT: # xmm12 = xmm2[3,0],mem[3,0]
2706 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm9 = xmm12[2,0],xmm9[2,3]
2707 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1,2,3],ymm6[4,5,6,7]
2708 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
2709 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm4 # 32-byte Folded Reload
2710 ; AVX1-ONLY-NEXT: # ymm4 = ymm2[2],mem[2],ymm2[3],mem[3],ymm2[6],mem[6],ymm2[7],mem[7]
2711 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
2712 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm8 # 32-byte Folded Reload
2713 ; AVX1-ONLY-NEXT: # ymm8 = ymm2[3,0],mem[3,0],ymm2[7,4],mem[7,4]
2714 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm4 = ymm8[2,0],ymm4[2,3],ymm8[6,4],ymm4[6,7]
2715 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2716 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm8 # 16-byte Folded Reload
2717 ; AVX1-ONLY-NEXT: # xmm8 = xmm2[2],mem[2],xmm2[3],mem[3]
2718 ; AVX1-ONLY-NEXT: vmovaps (%rsp), %xmm2 # 16-byte Reload
2719 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm9 # 16-byte Folded Reload
2720 ; AVX1-ONLY-NEXT: # xmm9 = xmm2[3,0],mem[3,0]
2721 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm8 = xmm9[2,0],xmm8[2,3]
2722 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm8[0,1,2,3],ymm4[4,5,6,7]
2723 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
2724 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm2 # 32-byte Folded Reload
2725 ; AVX1-ONLY-NEXT: # ymm2 = ymm2[2],mem[2],ymm2[3],mem[3],ymm2[6],mem[6],ymm2[7],mem[7]
2726 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
2727 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm7 # 32-byte Folded Reload
2728 ; AVX1-ONLY-NEXT: # ymm7 = ymm3[3,0],mem[3,0],ymm3[7,4],mem[7,4]
2729 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm2 = ymm7[2,0],ymm2[2,3],ymm7[6,4],ymm2[6,7]
2730 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2731 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm7 # 16-byte Folded Reload
2732 ; AVX1-ONLY-NEXT: # xmm7 = xmm3[2],mem[2],xmm3[3],mem[3]
2733 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2734 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm8 # 16-byte Folded Reload
2735 ; AVX1-ONLY-NEXT: # xmm8 = xmm3[3,0],mem[3,0]
2736 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm7 = xmm8[2,0],xmm7[2,3]
2737 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm7[0,1,2,3],ymm2[4,5,6,7]
2738 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
2739 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm3 # 32-byte Folded Reload
2740 ; AVX1-ONLY-NEXT: # ymm3 = ymm3[2],mem[2],ymm3[3],mem[3],ymm3[6],mem[6],ymm3[7],mem[7]
2741 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2742 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5, %ymm5 # 32-byte Folded Reload
2743 ; AVX1-ONLY-NEXT: # ymm5 = ymm5[3,0],mem[3,0],ymm5[7,4],mem[7,4]
2744 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm5[2,0],ymm3[2,3],ymm5[6,4],ymm3[6,7]
2745 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
2746 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload
2747 ; AVX1-ONLY-NEXT: # xmm5 = xmm5[2],mem[2],xmm5[3],mem[3]
2748 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
2749 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm7, %xmm7 # 16-byte Folded Reload
2750 ; AVX1-ONLY-NEXT: # xmm7 = xmm7[3,0],mem[3,0]
2751 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm5 = xmm7[2,0],xmm5[2,3]
2752 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm5[0,1,2,3],ymm3[4,5,6,7]
2753 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2754 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 192(%rsi)
2755 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2756 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 128(%rsi)
2757 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2758 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 64(%rsi)
2759 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2760 ; AVX1-ONLY-NEXT: vmovaps %ymm5, (%rsi)
2761 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2762 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 224(%rsi)
2763 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2764 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 160(%rsi)
2765 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2766 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 96(%rsi)
2767 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2768 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 32(%rsi)
2769 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2770 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 192(%rdx)
2771 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2772 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 128(%rdx)
2773 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2774 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 64(%rdx)
2775 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2776 ; AVX1-ONLY-NEXT: vmovaps %ymm5, (%rdx)
2777 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2778 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 224(%rdx)
2779 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2780 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 160(%rdx)
2781 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2782 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 96(%rdx)
2783 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2784 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 32(%rdx)
2785 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2786 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 192(%rcx)
2787 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2788 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 128(%rcx)
2789 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2790 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 64(%rcx)
2791 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2792 ; AVX1-ONLY-NEXT: vmovaps %ymm5, (%rcx)
2793 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2794 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 224(%rcx)
2795 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2796 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 160(%rcx)
2797 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2798 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 96(%rcx)
2799 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2800 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 32(%rcx)
2801 ; AVX1-ONLY-NEXT: vmovaps %ymm2, 192(%r8)
2802 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 128(%r8)
2803 ; AVX1-ONLY-NEXT: vmovaps %ymm6, 64(%r8)
2804 ; AVX1-ONLY-NEXT: vmovaps %ymm3, (%r8)
2805 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 224(%r8)
2806 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 160(%r8)
2807 ; AVX1-ONLY-NEXT: vmovaps %ymm15, 96(%r8)
2808 ; AVX1-ONLY-NEXT: vmovaps %ymm10, 32(%r8)
2809 ; AVX1-ONLY-NEXT: addq $2184, %rsp # imm = 0x888
2810 ; AVX1-ONLY-NEXT: vzeroupper
2811 ; AVX1-ONLY-NEXT: retq
2813 ; AVX2-ONLY-LABEL: load_i32_stride4_vf64:
2814 ; AVX2-ONLY: # %bb.0:
2815 ; AVX2-ONLY-NEXT: subq $1992, %rsp # imm = 0x7C8
2816 ; AVX2-ONLY-NEXT: vmovaps 416(%rdi), %ymm8
2817 ; AVX2-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2818 ; AVX2-ONLY-NEXT: vmovaps 448(%rdi), %ymm14
2819 ; AVX2-ONLY-NEXT: vmovaps 480(%rdi), %ymm15
2820 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %ymm4
2821 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2822 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %ymm3
2823 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %ymm10
2824 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm2 = [0,4,0,4,0,4,0,4]
2825 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm2, %ymm0
2826 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm2, %ymm1
2827 ; AVX2-ONLY-NEXT: vmovaps %ymm3, %ymm13
2828 ; AVX2-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2829 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2830 ; AVX2-ONLY-NEXT: vmovaps 144(%rdi), %xmm3
2831 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2832 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %xmm1
2833 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2834 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
2835 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm3 = [0,4,0,4]
2836 ; AVX2-ONLY-NEXT: # xmm3 = mem[0,0]
2837 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm3, %ymm4
2838 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm4[2,3]
2839 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2840 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2841 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm2, %ymm0
2842 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm2, %ymm1
2843 ; AVX2-ONLY-NEXT: vmovups %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2844 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2845 ; AVX2-ONLY-NEXT: vmovaps 400(%rdi), %xmm4
2846 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2847 ; AVX2-ONLY-NEXT: vmovaps 384(%rdi), %xmm1
2848 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2849 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
2850 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm3, %ymm4
2851 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm4[2,3]
2852 ; AVX2-ONLY-NEXT: vmovaps 704(%rdi), %ymm12
2853 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2854 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2855 ; AVX2-ONLY-NEXT: vmovaps 736(%rdi), %ymm0
2856 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2857 ; AVX2-ONLY-NEXT: vpermps %ymm0, %ymm2, %ymm0
2858 ; AVX2-ONLY-NEXT: vpermps %ymm12, %ymm2, %ymm1
2859 ; AVX2-ONLY-NEXT: vmovups %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2860 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2861 ; AVX2-ONLY-NEXT: vmovaps 672(%rdi), %ymm5
2862 ; AVX2-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2863 ; AVX2-ONLY-NEXT: vmovaps 656(%rdi), %xmm4
2864 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2865 ; AVX2-ONLY-NEXT: vmovaps 640(%rdi), %xmm1
2866 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2867 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
2868 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm3, %ymm4
2869 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm4[2,3]
2870 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2871 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2872 ; AVX2-ONLY-NEXT: vmovaps 960(%rdi), %ymm4
2873 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2874 ; AVX2-ONLY-NEXT: vmovaps 992(%rdi), %ymm11
2875 ; AVX2-ONLY-NEXT: vpermps %ymm11, %ymm2, %ymm0
2876 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm1
2877 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2878 ; AVX2-ONLY-NEXT: vmovaps 928(%rdi), %ymm5
2879 ; AVX2-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2880 ; AVX2-ONLY-NEXT: vmovaps 912(%rdi), %xmm4
2881 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2882 ; AVX2-ONLY-NEXT: vmovaps 896(%rdi), %xmm1
2883 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2884 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
2885 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm3, %ymm4
2886 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm4[2,3]
2887 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2888 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2889 ; AVX2-ONLY-NEXT: vmovaps 320(%rdi), %ymm4
2890 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2891 ; AVX2-ONLY-NEXT: vmovaps 352(%rdi), %ymm0
2892 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2893 ; AVX2-ONLY-NEXT: vpermps %ymm0, %ymm2, %ymm0
2894 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm1
2895 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2896 ; AVX2-ONLY-NEXT: vmovaps 288(%rdi), %ymm5
2897 ; AVX2-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2898 ; AVX2-ONLY-NEXT: vmovaps 272(%rdi), %xmm4
2899 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2900 ; AVX2-ONLY-NEXT: vmovaps 256(%rdi), %xmm1
2901 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2902 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
2903 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm3, %ymm4
2904 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm4[2,3]
2905 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2906 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2907 ; AVX2-ONLY-NEXT: vmovaps 576(%rdi), %ymm4
2908 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2909 ; AVX2-ONLY-NEXT: vmovaps 608(%rdi), %ymm0
2910 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2911 ; AVX2-ONLY-NEXT: vpermps %ymm0, %ymm2, %ymm0
2912 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm1
2913 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2914 ; AVX2-ONLY-NEXT: vmovaps 544(%rdi), %ymm5
2915 ; AVX2-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2916 ; AVX2-ONLY-NEXT: vmovaps 528(%rdi), %xmm4
2917 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2918 ; AVX2-ONLY-NEXT: vmovaps 512(%rdi), %xmm1
2919 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2920 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
2921 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm3, %ymm4
2922 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm4[2,3]
2923 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2924 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2925 ; AVX2-ONLY-NEXT: vmovaps 832(%rdi), %ymm4
2926 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2927 ; AVX2-ONLY-NEXT: vmovaps 864(%rdi), %ymm0
2928 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2929 ; AVX2-ONLY-NEXT: vpermps %ymm0, %ymm2, %ymm0
2930 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm1
2931 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2932 ; AVX2-ONLY-NEXT: vmovaps 800(%rdi), %ymm5
2933 ; AVX2-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2934 ; AVX2-ONLY-NEXT: vmovaps 784(%rdi), %xmm4
2935 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2936 ; AVX2-ONLY-NEXT: vmovaps 768(%rdi), %xmm1
2937 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2938 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
2939 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm3, %ymm4
2940 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm4[2,3]
2941 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2942 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2943 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm4
2944 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm1
2945 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm2, %ymm0
2946 ; AVX2-ONLY-NEXT: vmovaps %ymm1, %ymm8
2947 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2948 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm1
2949 ; AVX2-ONLY-NEXT: vmovaps %ymm4, %ymm5
2950 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2951 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2952 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm1
2953 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2954 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm3, %ymm1
2955 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm3
2956 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2957 ; AVX2-ONLY-NEXT: vmovaps 16(%rdi), %xmm2
2958 ; AVX2-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2959 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
2960 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,3]
2961 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2962 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2963 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm2 = [1,5,1,5,1,5,1,5]
2964 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm2, %ymm0
2965 ; AVX2-ONLY-NEXT: vmovups %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2966 ; AVX2-ONLY-NEXT: vpermps %ymm13, %ymm2, %ymm1
2967 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2968 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %ymm4
2969 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2970 ; AVX2-ONLY-NEXT: vmovaps 176(%rdi), %xmm3
2971 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2972 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %xmm1
2973 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2974 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
2975 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm7 = [1,5,1,5]
2976 ; AVX2-ONLY-NEXT: # xmm7 = mem[0,0]
2977 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm7, %ymm6
2978 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm6[0,1],xmm1[2,3]
2979 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2980 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2981 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm2, %ymm0
2982 ; AVX2-ONLY-NEXT: vmovups %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2983 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm2, %ymm1
2984 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2985 ; AVX2-ONLY-NEXT: vmovaps 384(%rdi), %ymm4
2986 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2987 ; AVX2-ONLY-NEXT: vmovaps 432(%rdi), %xmm6
2988 ; AVX2-ONLY-NEXT: vmovaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2989 ; AVX2-ONLY-NEXT: vmovaps 416(%rdi), %xmm1
2990 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2991 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1]
2992 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm7, %ymm6
2993 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm6[0,1],xmm1[2,3]
2994 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2995 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2996 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload
2997 ; AVX2-ONLY-NEXT: vpermps %ymm13, %ymm2, %ymm0
2998 ; AVX2-ONLY-NEXT: vpermps %ymm12, %ymm2, %ymm1
2999 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
3000 ; AVX2-ONLY-NEXT: vmovaps 640(%rdi), %ymm4
3001 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3002 ; AVX2-ONLY-NEXT: vmovaps 688(%rdi), %xmm6
3003 ; AVX2-ONLY-NEXT: vmovaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3004 ; AVX2-ONLY-NEXT: vmovaps 672(%rdi), %xmm1
3005 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3006 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1]
3007 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm7, %ymm6
3008 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm6[0,1],xmm1[2,3]
3009 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
3010 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3011 ; AVX2-ONLY-NEXT: vpermps %ymm11, %ymm2, %ymm0
3012 ; AVX2-ONLY-NEXT: vmovups %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3013 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload
3014 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm2, %ymm1
3015 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
3016 ; AVX2-ONLY-NEXT: vmovaps 896(%rdi), %ymm4
3017 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3018 ; AVX2-ONLY-NEXT: vmovaps 944(%rdi), %xmm6
3019 ; AVX2-ONLY-NEXT: vmovaps %xmm6, (%rsp) # 16-byte Spill
3020 ; AVX2-ONLY-NEXT: vmovaps 928(%rdi), %xmm1
3021 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3022 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1]
3023 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm7, %ymm6
3024 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm6[0,1],xmm1[2,3]
3025 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
3026 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3027 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm2, %ymm0
3028 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm2, %ymm1
3029 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
3030 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm4
3031 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3032 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm5
3033 ; AVX2-ONLY-NEXT: vmovaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3034 ; AVX2-ONLY-NEXT: vmovaps 48(%rdi), %xmm1
3035 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3036 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm5[0],xmm1[0],xmm5[1],xmm1[1]
3037 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm7, %ymm6
3038 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm6[0,1],xmm1[2,3]
3039 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
3040 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3041 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload
3042 ; AVX2-ONLY-NEXT: vpermps %ymm9, %ymm2, %ymm0
3043 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
3044 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm2, %ymm1
3045 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
3046 ; AVX2-ONLY-NEXT: vmovaps 256(%rdi), %ymm4
3047 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3048 ; AVX2-ONLY-NEXT: vmovaps 304(%rdi), %xmm5
3049 ; AVX2-ONLY-NEXT: vmovaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3050 ; AVX2-ONLY-NEXT: vmovaps 288(%rdi), %xmm1
3051 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3052 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1]
3053 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm7, %ymm6
3054 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm6[0,1],xmm1[2,3]
3055 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
3056 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3057 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3058 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm2, %ymm0
3059 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload
3060 ; AVX2-ONLY-NEXT: vpermps %ymm12, %ymm2, %ymm1
3061 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm1[0,1,2,3,4,5],ymm0[6,7]
3062 ; AVX2-ONLY-NEXT: vmovaps 512(%rdi), %ymm4
3063 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3064 ; AVX2-ONLY-NEXT: vmovaps 560(%rdi), %xmm1
3065 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3066 ; AVX2-ONLY-NEXT: vmovaps 544(%rdi), %xmm0
3067 ; AVX2-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3068 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
3069 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm7, %ymm6
3070 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm6[0,1],xmm1[2,3]
3071 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm3[4,5,6,7]
3072 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3073 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
3074 ; AVX2-ONLY-NEXT: vpermps %ymm6, %ymm2, %ymm0
3075 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
3076 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm1
3077 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
3078 ; AVX2-ONLY-NEXT: vmovaps 768(%rdi), %ymm1
3079 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3080 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm7, %ymm1
3081 ; AVX2-ONLY-NEXT: vmovaps 816(%rdi), %xmm3
3082 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3083 ; AVX2-ONLY-NEXT: vmovaps 800(%rdi), %xmm2
3084 ; AVX2-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3085 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
3086 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3]
3087 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
3088 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3089 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [2,6,2,6,2,6,2,6]
3090 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm0, %ymm1
3091 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 32-byte Folded Reload
3092 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm1[6,7]
3093 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
3094 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm3 # 16-byte Folded Reload
3095 ; AVX2-ONLY-NEXT: # xmm3 = xmm1[2],mem[2],xmm1[3],mem[3]
3096 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm1 = [2,6,2,6]
3097 ; AVX2-ONLY-NEXT: # xmm1 = mem[0,0]
3098 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload
3099 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm3[0,1],xmm10[2,3]
3100 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3101 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3102 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm2
3103 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Reload
3104 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm3
3105 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3,4,5],ymm2[6,7]
3106 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3107 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
3108 ; AVX2-ONLY-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
3109 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload
3110 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm3[0,1],xmm10[2,3]
3111 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3112 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3113 ; AVX2-ONLY-NEXT: vpermps %ymm13, %ymm0, %ymm2
3114 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload
3115 ; AVX2-ONLY-NEXT: vpermps %ymm13, %ymm0, %ymm3
3116 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3,4,5],ymm2[6,7]
3117 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3118 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
3119 ; AVX2-ONLY-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
3120 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload
3121 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm3[0,1],xmm10[2,3]
3122 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3123 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3124 ; AVX2-ONLY-NEXT: vpermps %ymm11, %ymm0, %ymm2
3125 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm0, %ymm3
3126 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3,4,5],ymm2[6,7]
3127 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3128 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
3129 ; AVX2-ONLY-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
3130 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload
3131 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm3[0,1],xmm10[2,3]
3132 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3133 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3134 ; AVX2-ONLY-NEXT: vpermps %ymm9, %ymm0, %ymm2
3135 ; AVX2-ONLY-NEXT: vmovaps %ymm9, %ymm7
3136 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm0, %ymm3
3137 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3,4,5],ymm2[6,7]
3138 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3139 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
3140 ; AVX2-ONLY-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
3141 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload
3142 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm3[0,1],xmm10[2,3]
3143 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm9 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3144 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm2
3145 ; AVX2-ONLY-NEXT: vpermps %ymm12, %ymm0, %ymm3
3146 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3,4,5],ymm2[6,7]
3147 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3148 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
3149 ; AVX2-ONLY-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
3150 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload
3151 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm3[0,1],xmm10[2,3]
3152 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3153 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3154 ; AVX2-ONLY-NEXT: vmovaps %ymm6, %ymm8
3155 ; AVX2-ONLY-NEXT: vpermps %ymm6, %ymm0, %ymm2
3156 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm3
3157 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3,4,5],ymm2[6,7]
3158 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3159 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
3160 ; AVX2-ONLY-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
3161 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload
3162 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm3[0,1],xmm10[2,3]
3163 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3164 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3165 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
3166 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm2
3167 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3168 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm0
3169 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm2[6,7]
3170 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
3171 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
3172 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload
3173 ; AVX2-ONLY-NEXT: # xmm2 = xmm2[2],mem[2],xmm2[3],mem[3]
3174 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,3]
3175 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm10 = ymm1[0,1,2,3],ymm0[4,5,6,7]
3176 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [3,7,3,7,3,7,3,7]
3177 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm1 # 32-byte Folded Reload
3178 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 32-byte Folded Reload
3179 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm1[6,7]
3180 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
3181 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm3 # 16-byte Folded Reload
3182 ; AVX2-ONLY-NEXT: # xmm3 = xmm1[2],mem[2],xmm1[3],mem[3]
3183 ; AVX2-ONLY-NEXT: vmovddup {{.*#+}} xmm1 = [3,7,3,7]
3184 ; AVX2-ONLY-NEXT: # xmm1 = mem[0,0]
3185 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm11 # 32-byte Folded Reload
3186 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm11[0,1],xmm3[2,3]
3187 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm11 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3188 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 32-byte Folded Reload
3189 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm3
3190 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1,2,3,4,5],ymm2[6,7]
3191 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3192 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
3193 ; AVX2-ONLY-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
3194 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm14 # 32-byte Folded Reload
3195 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm14[0,1],xmm3[2,3]
3196 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3197 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 32-byte Folded Reload
3198 ; AVX2-ONLY-NEXT: vpermps %ymm13, %ymm0, %ymm14
3199 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm14[0,1,2,3,4,5],ymm2[6,7]
3200 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
3201 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6, %xmm14 # 16-byte Folded Reload
3202 ; AVX2-ONLY-NEXT: # xmm14 = xmm6[2],mem[2],xmm6[3],mem[3]
3203 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm15 # 32-byte Folded Reload
3204 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm14 = xmm15[0,1],xmm14[2,3]
3205 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm14[0,1,2,3],ymm2[4,5,6,7]
3206 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm13 # 32-byte Folded Reload
3207 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm14 # 32-byte Folded Reload
3208 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm13 = ymm14[0,1,2,3,4,5],ymm13[6,7]
3209 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
3210 ; AVX2-ONLY-NEXT: vunpckhps (%rsp), %xmm6, %xmm14 # 16-byte Folded Reload
3211 ; AVX2-ONLY-NEXT: # xmm14 = xmm6[2],mem[2],xmm6[3],mem[3]
3212 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm15 # 32-byte Folded Reload
3213 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm14 = xmm15[0,1],xmm14[2,3]
3214 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm13 = ymm14[0,1,2,3],ymm13[4,5,6,7]
3215 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm4
3216 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm5
3217 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1,2,3,4,5],ymm4[6,7]
3218 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3219 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload
3220 ; AVX2-ONLY-NEXT: # xmm5 = xmm5[2],mem[2],xmm5[3],mem[3]
3221 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm14 # 32-byte Folded Reload
3222 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm5 = xmm14[0,1],xmm5[2,3]
3223 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1,2,3],ymm4[4,5,6,7]
3224 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm0, %ymm5
3225 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm14 # 32-byte Folded Reload
3226 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm5 = ymm14[0,1,2,3,4,5],ymm5[6,7]
3227 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
3228 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6, %xmm14 # 16-byte Folded Reload
3229 ; AVX2-ONLY-NEXT: # xmm14 = xmm6[2],mem[2],xmm6[3],mem[3]
3230 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm15 # 32-byte Folded Reload
3231 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm14 = xmm15[0,1],xmm14[2,3]
3232 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm5 = ymm14[0,1,2,3],ymm5[4,5,6,7]
3233 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm12 # 32-byte Folded Reload
3234 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm14 # 32-byte Folded Reload
3235 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm12 = ymm14[0,1,2,3,4,5],ymm12[6,7]
3236 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
3237 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6, %xmm14 # 16-byte Folded Reload
3238 ; AVX2-ONLY-NEXT: # xmm14 = xmm6[2],mem[2],xmm6[3],mem[3]
3239 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm15 # 32-byte Folded Reload
3240 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm14 = xmm15[0,1],xmm14[2,3]
3241 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm12 = ymm14[0,1,2,3],ymm12[4,5,6,7]
3242 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm0, %ymm8
3243 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
3244 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm8[6,7]
3245 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
3246 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6, %xmm6 # 16-byte Folded Reload
3247 ; AVX2-ONLY-NEXT: # xmm6 = xmm6[2],mem[2],xmm6[3],mem[3]
3248 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
3249 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm6[2,3]
3250 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
3251 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3252 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 192(%rsi)
3253 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3254 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 128(%rsi)
3255 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3256 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 64(%rsi)
3257 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3258 ; AVX2-ONLY-NEXT: vmovaps %ymm1, (%rsi)
3259 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3260 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 224(%rsi)
3261 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3262 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 160(%rsi)
3263 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3264 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 96(%rsi)
3265 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3266 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 32(%rsi)
3267 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3268 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 192(%rdx)
3269 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3270 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 128(%rdx)
3271 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3272 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 64(%rdx)
3273 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3274 ; AVX2-ONLY-NEXT: vmovaps %ymm1, (%rdx)
3275 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3276 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 224(%rdx)
3277 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3278 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 160(%rdx)
3279 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3280 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 96(%rdx)
3281 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3282 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 32(%rdx)
3283 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3284 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 192(%rcx)
3285 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3286 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 128(%rcx)
3287 ; AVX2-ONLY-NEXT: vmovaps %ymm9, 64(%rcx)
3288 ; AVX2-ONLY-NEXT: vmovaps %ymm10, (%rcx)
3289 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3290 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 224(%rcx)
3291 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3292 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 160(%rcx)
3293 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3294 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 96(%rcx)
3295 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3296 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 32(%rcx)
3297 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 192(%r8)
3298 ; AVX2-ONLY-NEXT: vmovaps %ymm12, 128(%r8)
3299 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 64(%r8)
3300 ; AVX2-ONLY-NEXT: vmovaps %ymm4, (%r8)
3301 ; AVX2-ONLY-NEXT: vmovaps %ymm13, 224(%r8)
3302 ; AVX2-ONLY-NEXT: vmovaps %ymm2, 160(%r8)
3303 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 96(%r8)
3304 ; AVX2-ONLY-NEXT: vmovaps %ymm11, 32(%r8)
3305 ; AVX2-ONLY-NEXT: addq $1992, %rsp # imm = 0x7C8
3306 ; AVX2-ONLY-NEXT: vzeroupper
3307 ; AVX2-ONLY-NEXT: retq
3309 ; AVX512-LABEL: load_i32_stride4_vf64:
3311 ; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0
3312 ; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1
3313 ; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm2
3314 ; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm3
3315 ; AVX512-NEXT: vmovdqa64 832(%rdi), %zmm4
3316 ; AVX512-NEXT: vmovdqa64 768(%rdi), %zmm5
3317 ; AVX512-NEXT: vmovdqa64 960(%rdi), %zmm10
3318 ; AVX512-NEXT: vmovdqa64 896(%rdi), %zmm7
3319 ; AVX512-NEXT: vmovdqa64 320(%rdi), %zmm14
3320 ; AVX512-NEXT: vmovdqa64 256(%rdi), %zmm15
3321 ; AVX512-NEXT: vmovdqa64 448(%rdi), %zmm17
3322 ; AVX512-NEXT: vmovdqa64 384(%rdi), %zmm16
3323 ; AVX512-NEXT: vmovdqa64 576(%rdi), %zmm8
3324 ; AVX512-NEXT: vmovdqa64 512(%rdi), %zmm9
3325 ; AVX512-NEXT: vmovdqa64 704(%rdi), %zmm12
3326 ; AVX512-NEXT: vmovdqa64 640(%rdi), %zmm11
3327 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm19 = [0,4,8,12,16,20,24,28,0,4,8,12,16,20,24,28]
3328 ; AVX512-NEXT: # zmm19 = mem[0,1,2,3,0,1,2,3]
3329 ; AVX512-NEXT: vmovdqa64 %zmm11, %zmm6
3330 ; AVX512-NEXT: vpermt2d %zmm12, %zmm19, %zmm6
3331 ; AVX512-NEXT: vmovdqa64 %zmm9, %zmm13
3332 ; AVX512-NEXT: vpermt2d %zmm8, %zmm19, %zmm13
3333 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm6 = zmm13[0,1,2,3],zmm6[4,5,6,7]
3334 ; AVX512-NEXT: vmovdqa64 %zmm16, %zmm13
3335 ; AVX512-NEXT: vpermt2d %zmm17, %zmm19, %zmm13
3336 ; AVX512-NEXT: vmovdqa64 %zmm15, %zmm18
3337 ; AVX512-NEXT: vpermt2d %zmm14, %zmm19, %zmm18
3338 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm13 = zmm18[0,1,2,3],zmm13[4,5,6,7]
3339 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm18
3340 ; AVX512-NEXT: vpermt2d %zmm10, %zmm19, %zmm18
3341 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm20
3342 ; AVX512-NEXT: vpermt2d %zmm4, %zmm19, %zmm20
3343 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm18 = zmm20[0,1,2,3],zmm18[4,5,6,7]
3344 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm20
3345 ; AVX512-NEXT: vpermt2d %zmm3, %zmm19, %zmm20
3346 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm19
3347 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm19 = zmm19[0,1,2,3],zmm20[4,5,6,7]
3348 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm21 = [1,5,9,13,17,21,25,29,1,5,9,13,17,21,25,29]
3349 ; AVX512-NEXT: # zmm21 = mem[0,1,2,3,0,1,2,3]
3350 ; AVX512-NEXT: vmovdqa64 %zmm11, %zmm20
3351 ; AVX512-NEXT: vpermt2d %zmm12, %zmm21, %zmm20
3352 ; AVX512-NEXT: vmovdqa64 %zmm9, %zmm22
3353 ; AVX512-NEXT: vpermt2d %zmm8, %zmm21, %zmm22
3354 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm20 = zmm22[0,1,2,3],zmm20[4,5,6,7]
3355 ; AVX512-NEXT: vmovdqa64 %zmm16, %zmm22
3356 ; AVX512-NEXT: vpermt2d %zmm17, %zmm21, %zmm22
3357 ; AVX512-NEXT: vmovdqa64 %zmm15, %zmm23
3358 ; AVX512-NEXT: vpermt2d %zmm14, %zmm21, %zmm23
3359 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm22 = zmm23[0,1,2,3],zmm22[4,5,6,7]
3360 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm23
3361 ; AVX512-NEXT: vpermt2d %zmm10, %zmm21, %zmm23
3362 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm24
3363 ; AVX512-NEXT: vpermt2d %zmm4, %zmm21, %zmm24
3364 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm23 = zmm24[0,1,2,3],zmm23[4,5,6,7]
3365 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm24
3366 ; AVX512-NEXT: vpermt2d %zmm3, %zmm21, %zmm24
3367 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm21
3368 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm21 = zmm21[0,1,2,3],zmm24[4,5,6,7]
3369 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm24 = [2,6,10,14,18,22,26,30,2,6,10,14,18,22,26,30]
3370 ; AVX512-NEXT: # zmm24 = mem[0,1,2,3,0,1,2,3]
3371 ; AVX512-NEXT: vmovdqa64 %zmm11, %zmm25
3372 ; AVX512-NEXT: vpermt2d %zmm12, %zmm24, %zmm25
3373 ; AVX512-NEXT: vmovdqa64 %zmm9, %zmm26
3374 ; AVX512-NEXT: vpermt2d %zmm8, %zmm24, %zmm26
3375 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm25 = zmm26[0,1,2,3],zmm25[4,5,6,7]
3376 ; AVX512-NEXT: vmovdqa64 %zmm16, %zmm26
3377 ; AVX512-NEXT: vpermt2d %zmm17, %zmm24, %zmm26
3378 ; AVX512-NEXT: vmovdqa64 %zmm15, %zmm27
3379 ; AVX512-NEXT: vpermt2d %zmm14, %zmm24, %zmm27
3380 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm26 = zmm27[0,1,2,3],zmm26[4,5,6,7]
3381 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm27
3382 ; AVX512-NEXT: vpermt2d %zmm10, %zmm24, %zmm27
3383 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm28
3384 ; AVX512-NEXT: vpermt2d %zmm4, %zmm24, %zmm28
3385 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm27 = zmm28[0,1,2,3],zmm27[4,5,6,7]
3386 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm28
3387 ; AVX512-NEXT: vpermt2d %zmm3, %zmm24, %zmm28
3388 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm24
3389 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm24 = zmm24[0,1,2,3],zmm28[4,5,6,7]
3390 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm28 = [3,7,11,15,19,23,27,31,3,7,11,15,19,23,27,31]
3391 ; AVX512-NEXT: # zmm28 = mem[0,1,2,3,0,1,2,3]
3392 ; AVX512-NEXT: vpermt2d %zmm17, %zmm28, %zmm16
3393 ; AVX512-NEXT: vpermt2d %zmm14, %zmm28, %zmm15
3394 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm14 = zmm15[0,1,2,3],zmm16[4,5,6,7]
3395 ; AVX512-NEXT: vpermt2d %zmm10, %zmm28, %zmm7
3396 ; AVX512-NEXT: vpermt2d %zmm4, %zmm28, %zmm5
3397 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm4 = zmm5[0,1,2,3],zmm7[4,5,6,7]
3398 ; AVX512-NEXT: vpermt2d %zmm12, %zmm28, %zmm11
3399 ; AVX512-NEXT: vpermt2d %zmm8, %zmm28, %zmm9
3400 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm9[0,1,2,3],zmm11[4,5,6,7]
3401 ; AVX512-NEXT: vpermt2d %zmm3, %zmm28, %zmm2
3402 ; AVX512-NEXT: vpermt2d %zmm1, %zmm28, %zmm0
3403 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3],zmm2[4,5,6,7]
3404 ; AVX512-NEXT: vmovdqa64 %zmm18, 192(%rsi)
3405 ; AVX512-NEXT: vmovdqa64 %zmm19, (%rsi)
3406 ; AVX512-NEXT: vmovdqa64 %zmm13, 64(%rsi)
3407 ; AVX512-NEXT: vmovdqa64 %zmm6, 128(%rsi)
3408 ; AVX512-NEXT: vmovdqa64 %zmm23, 192(%rdx)
3409 ; AVX512-NEXT: vmovdqa64 %zmm21, (%rdx)
3410 ; AVX512-NEXT: vmovdqa64 %zmm22, 64(%rdx)
3411 ; AVX512-NEXT: vmovdqa64 %zmm20, 128(%rdx)
3412 ; AVX512-NEXT: vmovdqa64 %zmm27, 192(%rcx)
3413 ; AVX512-NEXT: vmovdqa64 %zmm24, (%rcx)
3414 ; AVX512-NEXT: vmovdqa64 %zmm26, 64(%rcx)
3415 ; AVX512-NEXT: vmovdqa64 %zmm25, 128(%rcx)
3416 ; AVX512-NEXT: vmovdqa64 %zmm5, 128(%r8)
3417 ; AVX512-NEXT: vmovdqa64 %zmm4, 192(%r8)
3418 ; AVX512-NEXT: vmovdqa64 %zmm0, (%r8)
3419 ; AVX512-NEXT: vmovdqa64 %zmm14, 64(%r8)
3420 ; AVX512-NEXT: vzeroupper
3422 %wide.vec = load <256 x i32>, ptr %in.vec, align 64
3423 %strided.vec0 = shufflevector <256 x i32> %wide.vec, <256 x i32> poison, <64 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28, i32 32, i32 36, i32 40, i32 44, i32 48, i32 52, i32 56, i32 60, i32 64, i32 68, i32 72, i32 76, i32 80, i32 84, i32 88, i32 92, i32 96, i32 100, i32 104, i32 108, i32 112, i32 116, i32 120, i32 124, i32 128, i32 132, i32 136, i32 140, i32 144, i32 148, i32 152, i32 156, i32 160, i32 164, i32 168, i32 172, i32 176, i32 180, i32 184, i32 188, i32 192, i32 196, i32 200, i32 204, i32 208, i32 212, i32 216, i32 220, i32 224, i32 228, i32 232, i32 236, i32 240, i32 244, i32 248, i32 252>
3424 %strided.vec1 = shufflevector <256 x i32> %wide.vec, <256 x i32> poison, <64 x i32> <i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 25, i32 29, i32 33, i32 37, i32 41, i32 45, i32 49, i32 53, i32 57, i32 61, i32 65, i32 69, i32 73, i32 77, i32 81, i32 85, i32 89, i32 93, i32 97, i32 101, i32 105, i32 109, i32 113, i32 117, i32 121, i32 125, i32 129, i32 133, i32 137, i32 141, i32 145, i32 149, i32 153, i32 157, i32 161, i32 165, i32 169, i32 173, i32 177, i32 181, i32 185, i32 189, i32 193, i32 197, i32 201, i32 205, i32 209, i32 213, i32 217, i32 221, i32 225, i32 229, i32 233, i32 237, i32 241, i32 245, i32 249, i32 253>
3425 %strided.vec2 = shufflevector <256 x i32> %wide.vec, <256 x i32> poison, <64 x i32> <i32 2, i32 6, i32 10, i32 14, i32 18, i32 22, i32 26, i32 30, i32 34, i32 38, i32 42, i32 46, i32 50, i32 54, i32 58, i32 62, i32 66, i32 70, i32 74, i32 78, i32 82, i32 86, i32 90, i32 94, i32 98, i32 102, i32 106, i32 110, i32 114, i32 118, i32 122, i32 126, i32 130, i32 134, i32 138, i32 142, i32 146, i32 150, i32 154, i32 158, i32 162, i32 166, i32 170, i32 174, i32 178, i32 182, i32 186, i32 190, i32 194, i32 198, i32 202, i32 206, i32 210, i32 214, i32 218, i32 222, i32 226, i32 230, i32 234, i32 238, i32 242, i32 246, i32 250, i32 254>
3426 %strided.vec3 = shufflevector <256 x i32> %wide.vec, <256 x i32> poison, <64 x i32> <i32 3, i32 7, i32 11, i32 15, i32 19, i32 23, i32 27, i32 31, i32 35, i32 39, i32 43, i32 47, i32 51, i32 55, i32 59, i32 63, i32 67, i32 71, i32 75, i32 79, i32 83, i32 87, i32 91, i32 95, i32 99, i32 103, i32 107, i32 111, i32 115, i32 119, i32 123, i32 127, i32 131, i32 135, i32 139, i32 143, i32 147, i32 151, i32 155, i32 159, i32 163, i32 167, i32 171, i32 175, i32 179, i32 183, i32 187, i32 191, i32 195, i32 199, i32 203, i32 207, i32 211, i32 215, i32 219, i32 223, i32 227, i32 231, i32 235, i32 239, i32 243, i32 247, i32 251, i32 255>
3427 store <64 x i32> %strided.vec0, ptr %out.vec0, align 64
3428 store <64 x i32> %strided.vec1, ptr %out.vec1, align 64
3429 store <64 x i32> %strided.vec2, ptr %out.vec2, align 64
3430 store <64 x i32> %strided.vec3, ptr %out.vec3, align 64
3433 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
3438 ; AVX2-FAST-PERLANE: {{.*}}
3441 ; AVX512BW-FAST: {{.*}}
3442 ; AVX512BW-ONLY-FAST: {{.*}}
3443 ; AVX512BW-ONLY-SLOW: {{.*}}
3444 ; AVX512BW-SLOW: {{.*}}
3445 ; AVX512DQ-FAST: {{.*}}
3446 ; AVX512DQ-SLOW: {{.*}}
3447 ; AVX512DQBW-FAST: {{.*}}
3448 ; AVX512DQBW-SLOW: {{.*}}
3450 ; AVX512F-FAST: {{.*}}
3451 ; AVX512F-ONLY-FAST: {{.*}}
3452 ; AVX512F-ONLY-SLOW: {{.*}}
3453 ; AVX512F-SLOW: {{.*}}
3456 ; FALLBACK10: {{.*}}
3457 ; FALLBACK11: {{.*}}
3458 ; FALLBACK12: {{.*}}