1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,FALLBACK0
3 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX1,AVX1-ONLY,FALLBACK1
4 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-SLOW,FALLBACK2
5 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-FAST,FALLBACK3
6 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-FAST-PERLANE,FALLBACK4
7 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512F-ONLY,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,AVX512F-ONLY,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,AVX512DQ-ONLY,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,AVX512DQ-ONLY,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,AVX512BW-ONLY,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,AVX512BW-ONLY,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,AVX512DQBW-ONLY,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,AVX512DQBW-ONLY,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), %ymm3
309 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm1
310 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm2
311 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm4 = [0,4,0,4,0,4,0,4]
312 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm4, %ymm5
313 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm4, %ymm6
314 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm5 = ymm6[0,1,2,3,4,5],ymm5[6,7]
315 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm4, %ymm4
316 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm6
317 ; AVX2-ONLY-NEXT: vmovaps 16(%rdi), %xmm7
318 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm8
319 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm9 = xmm6[0],xmm7[0],xmm6[1],xmm7[1]
320 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm9[0,1],xmm4[2,3]
321 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm5[4,5,6,7]
322 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm5 = [1,5,1,5,1,5,1,5]
323 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm5, %ymm9
324 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm5, %ymm10
325 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm9 = ymm10[0,1,2,3,4,5],ymm9[6,7]
326 ; AVX2-ONLY-NEXT: vmovaps 48(%rdi), %xmm10
327 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm11 = xmm8[0],xmm10[0],xmm8[1],xmm10[1]
328 ; AVX2-ONLY-NEXT: vpermps %ymm0, %ymm5, %ymm5
329 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm5 = xmm5[0,1],xmm11[2,3]
330 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm9[4,5,6,7]
331 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm9 = [2,6,2,6,2,6,2,6]
332 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm9, %ymm11
333 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm9, %ymm12
334 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm11 = ymm12[0,1,2,3,4,5],ymm11[6,7]
335 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm9, %ymm3
336 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm6 = xmm6[2],xmm7[2],xmm6[3],xmm7[3]
337 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm6[0,1],xmm3[2,3]
338 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm11[4,5,6,7]
339 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm6 = [3,7,3,7,3,7,3,7]
340 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm6, %ymm2
341 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm6, %ymm1
342 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm2[6,7]
343 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm2 = xmm8[2],xmm10[2],xmm8[3],xmm10[3]
344 ; AVX2-ONLY-NEXT: vpermps %ymm0, %ymm6, %ymm0
345 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm0[0,1],xmm2[2,3]
346 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
347 ; AVX2-ONLY-NEXT: vmovaps %ymm4, (%rsi)
348 ; AVX2-ONLY-NEXT: vmovaps %ymm5, (%rdx)
349 ; AVX2-ONLY-NEXT: vmovaps %ymm3, (%rcx)
350 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%r8)
351 ; AVX2-ONLY-NEXT: vzeroupper
352 ; AVX2-ONLY-NEXT: retq
354 ; AVX512-LABEL: load_i32_stride4_vf8:
356 ; AVX512-NEXT: vmovdqa {{.*#+}} ymm0 = [0,4,8,12,16,20,24,28]
357 ; AVX512-NEXT: vmovdqa64 (%rdi), %zmm1
358 ; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm2
359 ; AVX512-NEXT: vpermi2d %zmm2, %zmm1, %zmm0
360 ; AVX512-NEXT: vmovdqa {{.*#+}} ymm3 = [1,5,9,13,17,21,25,29]
361 ; AVX512-NEXT: vpermi2d %zmm2, %zmm1, %zmm3
362 ; AVX512-NEXT: vmovdqa {{.*#+}} ymm4 = [2,6,10,14,18,22,26,30]
363 ; AVX512-NEXT: vpermi2d %zmm2, %zmm1, %zmm4
364 ; AVX512-NEXT: vmovdqa {{.*#+}} ymm5 = [3,7,11,15,19,23,27,31]
365 ; AVX512-NEXT: vpermi2d %zmm2, %zmm1, %zmm5
366 ; AVX512-NEXT: vmovdqa %ymm0, (%rsi)
367 ; AVX512-NEXT: vmovdqa %ymm3, (%rdx)
368 ; AVX512-NEXT: vmovdqa %ymm4, (%rcx)
369 ; AVX512-NEXT: vmovdqa %ymm5, (%r8)
370 ; AVX512-NEXT: vzeroupper
372 %wide.vec = load <32 x i32>, ptr %in.vec, align 64
373 %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>
374 %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>
375 %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>
376 %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>
377 store <8 x i32> %strided.vec0, ptr %out.vec0, align 64
378 store <8 x i32> %strided.vec1, ptr %out.vec1, align 64
379 store <8 x i32> %strided.vec2, ptr %out.vec2, align 64
380 store <8 x i32> %strided.vec3, ptr %out.vec3, align 64
384 define void @load_i32_stride4_vf16(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {
385 ; SSE-LABEL: load_i32_stride4_vf16:
387 ; SSE-NEXT: subq $24, %rsp
388 ; SSE-NEXT: movaps 208(%rdi), %xmm2
389 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
390 ; SSE-NEXT: movaps 240(%rdi), %xmm4
391 ; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
392 ; SSE-NEXT: movaps 224(%rdi), %xmm12
393 ; SSE-NEXT: movaps 144(%rdi), %xmm6
394 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
395 ; SSE-NEXT: movaps 128(%rdi), %xmm3
396 ; SSE-NEXT: movaps 176(%rdi), %xmm5
397 ; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
398 ; SSE-NEXT: movaps 160(%rdi), %xmm9
399 ; SSE-NEXT: movaps 80(%rdi), %xmm1
400 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
401 ; SSE-NEXT: movaps 64(%rdi), %xmm11
402 ; SSE-NEXT: movaps 112(%rdi), %xmm8
403 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
404 ; SSE-NEXT: movaps 96(%rdi), %xmm7
405 ; SSE-NEXT: movaps %xmm7, %xmm0
406 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1]
407 ; SSE-NEXT: movaps %xmm11, %xmm13
408 ; SSE-NEXT: unpcklps {{.*#+}} xmm13 = xmm13[0],xmm1[0],xmm13[1],xmm1[1]
409 ; SSE-NEXT: movaps %xmm13, %xmm1
410 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
411 ; SSE-NEXT: movaps %xmm1, (%rsp) # 16-byte Spill
412 ; SSE-NEXT: movaps %xmm9, %xmm1
413 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1]
414 ; SSE-NEXT: movaps %xmm3, %xmm5
415 ; SSE-NEXT: unpcklps {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]
416 ; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]
417 ; SSE-NEXT: movaps %xmm5, %xmm0
418 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]
419 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
420 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]
421 ; SSE-NEXT: movaps %xmm12, %xmm0
422 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]
423 ; SSE-NEXT: movaps 192(%rdi), %xmm10
424 ; SSE-NEXT: movaps %xmm10, %xmm15
425 ; SSE-NEXT: unpcklps {{.*#+}} xmm15 = xmm15[0],xmm2[0],xmm15[1],xmm2[1]
426 ; SSE-NEXT: movaps %xmm15, %xmm1
427 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
428 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
429 ; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]
430 ; SSE-NEXT: movaps 32(%rdi), %xmm2
431 ; SSE-NEXT: movaps 48(%rdi), %xmm8
432 ; SSE-NEXT: movaps %xmm2, %xmm1
433 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1]
434 ; SSE-NEXT: movaps (%rdi), %xmm0
435 ; SSE-NEXT: movaps 16(%rdi), %xmm6
436 ; SSE-NEXT: movaps %xmm0, %xmm14
437 ; SSE-NEXT: unpcklps {{.*#+}} xmm14 = xmm14[0],xmm6[0],xmm14[1],xmm6[1]
438 ; SSE-NEXT: movaps %xmm14, %xmm4
439 ; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm1[0]
440 ; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm1[1]
441 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload
442 ; SSE-NEXT: # xmm7 = xmm7[2],mem[2],xmm7[3],mem[3]
443 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload
444 ; SSE-NEXT: # xmm11 = xmm11[2],mem[2],xmm11[3],mem[3]
445 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload
446 ; SSE-NEXT: # xmm9 = xmm9[2],mem[2],xmm9[3],mem[3]
447 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
448 ; SSE-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
449 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
450 ; SSE-NEXT: # xmm12 = xmm12[2],mem[2],xmm12[3],mem[3]
451 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload
452 ; SSE-NEXT: # xmm10 = xmm10[2],mem[2],xmm10[3],mem[3]
453 ; SSE-NEXT: unpckhps {{.*#+}} xmm2 = xmm2[2],xmm8[2],xmm2[3],xmm8[3]
454 ; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm6[2],xmm0[3],xmm6[3]
455 ; SSE-NEXT: movaps %xmm11, %xmm1
456 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm7[0]
457 ; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm7[1]
458 ; SSE-NEXT: movaps %xmm3, %xmm6
459 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm9[0]
460 ; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm9[1]
461 ; SSE-NEXT: movaps %xmm10, %xmm7
462 ; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm12[0]
463 ; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm12[1]
464 ; SSE-NEXT: movaps %xmm0, %xmm8
465 ; SSE-NEXT: movlhps {{.*#+}} xmm8 = xmm8[0],xmm2[0]
466 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]
467 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
468 ; SSE-NEXT: movaps %xmm2, 48(%rsi)
469 ; SSE-NEXT: movaps %xmm4, (%rsi)
470 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
471 ; SSE-NEXT: movaps %xmm2, 32(%rsi)
472 ; SSE-NEXT: movaps (%rsp), %xmm2 # 16-byte Reload
473 ; SSE-NEXT: movaps %xmm2, 16(%rsi)
474 ; SSE-NEXT: movaps %xmm15, 48(%rdx)
475 ; SSE-NEXT: movaps %xmm14, (%rdx)
476 ; SSE-NEXT: movaps %xmm5, 32(%rdx)
477 ; SSE-NEXT: movaps %xmm13, 16(%rdx)
478 ; SSE-NEXT: movaps %xmm7, 48(%rcx)
479 ; SSE-NEXT: movaps %xmm6, 32(%rcx)
480 ; SSE-NEXT: movaps %xmm1, 16(%rcx)
481 ; SSE-NEXT: movaps %xmm8, (%rcx)
482 ; SSE-NEXT: movaps %xmm10, 48(%r8)
483 ; SSE-NEXT: movaps %xmm3, 32(%r8)
484 ; SSE-NEXT: movaps %xmm11, 16(%r8)
485 ; SSE-NEXT: movaps %xmm0, (%r8)
486 ; SSE-NEXT: addq $24, %rsp
489 ; AVX1-ONLY-LABEL: load_i32_stride4_vf16:
490 ; AVX1-ONLY: # %bb.0:
491 ; AVX1-ONLY-NEXT: subq $264, %rsp # imm = 0x108
492 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %ymm5
493 ; AVX1-ONLY-NEXT: vmovaps 96(%rdi), %ymm4
494 ; AVX1-ONLY-NEXT: vmovaps 192(%rdi), %ymm2
495 ; AVX1-ONLY-NEXT: vmovaps 224(%rdi), %ymm3
496 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm3[2,3,0,1]
497 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm3[0],ymm1[0],ymm3[2],ymm1[2]
498 ; AVX1-ONLY-NEXT: vmovaps %ymm3, %ymm14
499 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
500 ; AVX1-ONLY-NEXT: vmovaps %ymm1, %ymm15
501 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
502 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm7 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
503 ; AVX1-ONLY-NEXT: vmovaps %ymm2, %ymm10
504 ; AVX1-ONLY-NEXT: vmovaps %ymm1, %ymm3
505 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm7[0,1],ymm0[2,0],ymm7[4,5],ymm0[6,4]
506 ; AVX1-ONLY-NEXT: vmovaps 160(%rdi), %xmm1
507 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
508 ; AVX1-ONLY-NEXT: vmovaps 176(%rdi), %xmm6
509 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm11 = xmm6[0],xmm1[0]
510 ; AVX1-ONLY-NEXT: vmovaps %xmm6, %xmm2
511 ; AVX1-ONLY-NEXT: vmovaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
512 ; AVX1-ONLY-NEXT: vmovaps 144(%rdi), %xmm1
513 ; AVX1-ONLY-NEXT: vmovaps 128(%rdi), %xmm6
514 ; AVX1-ONLY-NEXT: vmovaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
515 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm12 = xmm6[0],xmm1[0],xmm6[1],xmm1[1]
516 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm11 = xmm12[0,1],xmm11[2,0]
517 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm11[0,1,2,3],ymm0[4,5,6,7]
518 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
519 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm6 = ymm4[2,3,0,1]
520 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm4[0],ymm6[0],ymm4[2],ymm6[2]
521 ; AVX1-ONLY-NEXT: vmovaps %ymm6, %ymm8
522 ; AVX1-ONLY-NEXT: vmovaps %ymm4, %ymm12
523 ; AVX1-ONLY-NEXT: vmovups %ymm5, (%rsp) # 32-byte Spill
524 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm11 = ymm5[2,3,0,1]
525 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm13 = ymm11[0],ymm5[0],ymm11[1],ymm5[1],ymm11[4],ymm5[4],ymm11[5],ymm5[5]
526 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm7 = ymm13[0,1],ymm0[2,0],ymm13[4,5],ymm0[6,4]
527 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm9
528 ; AVX1-ONLY-NEXT: vmovaps 16(%rdi), %xmm5
529 ; AVX1-ONLY-NEXT: vmovaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
530 ; AVX1-ONLY-NEXT: vmovaps 32(%rdi), %xmm6
531 ; AVX1-ONLY-NEXT: vmovaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
532 ; AVX1-ONLY-NEXT: vmovaps 48(%rdi), %xmm0
533 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
534 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm0 = xmm0[0],xmm6[0]
535 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm6 = xmm9[0],xmm5[0],xmm9[1],xmm5[1]
536 ; AVX1-ONLY-NEXT: vmovaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
537 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm0 = xmm6[0,1],xmm0[2,0]
538 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm7[4,5,6,7]
539 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
540 ; AVX1-ONLY-NEXT: vmovaps %ymm15, %ymm4
541 ; AVX1-ONLY-NEXT: vmovups %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
542 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm7 = ymm15[0],ymm14[0],ymm15[1],ymm14[1],ymm15[4],ymm14[4],ymm15[5],ymm14[5]
543 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm6 = ymm10[1,0],ymm3[1,0],ymm10[5,4],ymm3[5,4]
544 ; AVX1-ONLY-NEXT: vmovaps %ymm10, %ymm15
545 ; AVX1-ONLY-NEXT: vmovaps %ymm3, %ymm13
546 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm6[2,0],ymm7[2,3],ymm6[6,4],ymm7[6,7]
547 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
548 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm6 = xmm5[1],xmm1[1],zero,zero
549 ; AVX1-ONLY-NEXT: vmovaps %xmm1, %xmm14
550 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
551 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
552 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm7 = xmm10[0],xmm2[0],xmm10[1],xmm2[1]
553 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm6[0,1],xmm7[2,3]
554 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm6[0,1,2,3],ymm3[4,5,6,7]
555 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
556 ; AVX1-ONLY-NEXT: vmovaps %ymm12, %ymm0
557 ; AVX1-ONLY-NEXT: vmovaps %ymm8, %ymm12
558 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm3 = ymm8[0],ymm0[0],ymm8[1],ymm0[1],ymm8[4],ymm0[4],ymm8[5],ymm0[5]
559 ; AVX1-ONLY-NEXT: vmovups (%rsp), %ymm2 # 32-byte Reload
560 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm6 = ymm2[1,0],ymm11[1,0],ymm2[5,4],ymm11[5,4]
561 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm6[2,0],ymm3[2,3],ymm6[6,4],ymm3[6,7]
562 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
563 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm6 = xmm9[1],xmm8[1],zero,zero
564 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
565 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
566 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm7 = xmm9[0],xmm1[0],xmm9[1],xmm1[1]
567 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm6[0,1],xmm7[2,3]
568 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm6[0,1,2,3],ymm3[4,5,6,7]
569 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
570 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
571 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm4[1],ymm3[3],ymm4[3]
572 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm6 = ymm13[2],ymm15[2],ymm13[3],ymm15[3],ymm13[6],ymm15[6],ymm13[7],ymm15[7]
573 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm4 = ymm6[0,1],ymm3[2,0],ymm6[4,5],ymm3[6,4]
574 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm6 = xmm5[2],xmm14[2],xmm5[3],xmm14[3]
575 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
576 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm7 = zero,zero,xmm10[2],xmm3[2]
577 ; AVX1-ONLY-NEXT: vmovaps %xmm10, %xmm14
578 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm6[0,1],xmm7[2,3]
579 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm6[0,1,2,3],ymm4[4,5,6,7]
580 ; AVX1-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
581 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm0[1],ymm12[1],ymm0[3],ymm12[3]
582 ; AVX1-ONLY-NEXT: vmovaps %ymm0, %ymm5
583 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm7 = ymm11[2],ymm2[2],ymm11[3],ymm2[3],ymm11[6],ymm2[6],ymm11[7],ymm2[7]
584 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm6 = ymm7[0,1],ymm6[2,0],ymm7[4,5],ymm6[6,4]
585 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
586 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm7 = xmm10[2],xmm8[2],xmm10[3],xmm8[3]
587 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm0 = zero,zero,xmm9[2],xmm1[2]
588 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm7[0,1],xmm0[2,3]
589 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm6[4,5,6,7]
590 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
591 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm4 # 32-byte Folded Reload
592 ; AVX1-ONLY-NEXT: # ymm4 = ymm2[2],mem[2],ymm2[3],mem[3],ymm2[6],mem[6],ymm2[7],mem[7]
593 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm2 = ymm15[3,0],ymm13[3,0],ymm15[7,4],ymm13[7,4]
594 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm2 = ymm2[2,0],ymm4[2,3],ymm2[6,4],ymm4[6,7]
595 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm4 = xmm14[2],xmm3[2],xmm14[3],xmm3[3]
596 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
597 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm6 # 16-byte Folded Reload
598 ; AVX1-ONLY-NEXT: # xmm6 = xmm3[3,0],mem[3,0]
599 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm4 = xmm6[2,0],xmm4[2,3]
600 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
601 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm3 = ymm12[2],ymm5[2],ymm12[3],ymm5[3],ymm12[6],ymm5[6],ymm12[7],ymm5[7]
602 ; AVX1-ONLY-NEXT: vmovups (%rsp), %ymm4 # 32-byte Reload
603 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm4 = ymm4[3,0],ymm11[3,0],ymm4[7,4],ymm11[7,4]
604 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm4[2,0],ymm3[2,3],ymm4[6,4],ymm3[6,7]
605 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm9[2],xmm1[2],xmm9[3],xmm1[3]
606 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm4 = xmm8[3,0],xmm10[3,0]
607 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm4[2,0],xmm1[2,3]
608 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm3[4,5,6,7]
609 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
610 ; AVX1-ONLY-NEXT: vmovaps %ymm3, 32(%rsi)
611 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
612 ; AVX1-ONLY-NEXT: vmovaps %ymm3, (%rsi)
613 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
614 ; AVX1-ONLY-NEXT: vmovaps %ymm3, 32(%rdx)
615 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
616 ; AVX1-ONLY-NEXT: vmovaps %ymm3, (%rdx)
617 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
618 ; AVX1-ONLY-NEXT: vmovaps %ymm3, 32(%rcx)
619 ; AVX1-ONLY-NEXT: vmovaps %ymm0, (%rcx)
620 ; AVX1-ONLY-NEXT: vmovaps %ymm2, 32(%r8)
621 ; AVX1-ONLY-NEXT: vmovaps %ymm1, (%r8)
622 ; AVX1-ONLY-NEXT: addq $264, %rsp # imm = 0x108
623 ; AVX1-ONLY-NEXT: vzeroupper
624 ; AVX1-ONLY-NEXT: retq
626 ; AVX2-ONLY-LABEL: load_i32_stride4_vf16:
627 ; AVX2-ONLY: # %bb.0:
628 ; AVX2-ONLY-NEXT: subq $104, %rsp
629 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm3
630 ; AVX2-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
631 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm8
632 ; AVX2-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
633 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm4
634 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm5
635 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %ymm9
636 ; AVX2-ONLY-NEXT: vmovups %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
637 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %ymm7
638 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %ymm2
639 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [0,4,0,4,0,4,0,4]
640 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm0, %ymm1
641 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm0, %ymm6
642 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm6[0,1,2,3,4,5],ymm1[6,7]
643 ; AVX2-ONLY-NEXT: vmovaps 144(%rdi), %xmm10
644 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %xmm11
645 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm6 = xmm11[0],xmm10[0],xmm11[1],xmm10[1]
646 ; AVX2-ONLY-NEXT: vpermps %ymm9, %ymm0, %ymm9
647 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm6[0,1],xmm9[2,3]
648 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm6[0,1,2,3],ymm1[4,5,6,7]
649 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
650 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm1
651 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm6
652 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm6[0,1,2,3,4,5],ymm1[6,7]
653 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm0, %ymm0
654 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm12
655 ; AVX2-ONLY-NEXT: vmovaps 16(%rdi), %xmm13
656 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm6 = xmm12[0],xmm13[0],xmm12[1],xmm13[1]
657 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm6[0,1],xmm0[2,3]
658 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
659 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
660 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [1,5,1,5,1,5,1,5]
661 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm1
662 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm6
663 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm6[0,1,2,3,4,5],ymm1[6,7]
664 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm14
665 ; AVX2-ONLY-NEXT: vmovaps 48(%rdi), %xmm6
666 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm9 = xmm14[0],xmm6[0],xmm14[1],xmm6[1]
667 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm0, %ymm15
668 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm9 = xmm15[0,1],xmm9[2,3]
669 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm9[0,1,2,3],ymm1[4,5,6,7]
670 ; AVX2-ONLY-NEXT: vmovups %ymm1, (%rsp) # 32-byte Spill
671 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm0, %ymm1
672 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm0, %ymm9
673 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm9 = ymm9[0,1,2,3,4,5],ymm1[6,7]
674 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %ymm15
675 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm0
676 ; AVX2-ONLY-NEXT: vmovaps 176(%rdi), %xmm3
677 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %xmm1
678 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm8 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
679 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm0[0,1],xmm8[2,3]
680 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm9[4,5,6,7]
681 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
682 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [2,6,2,6,2,6,2,6]
683 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm0, %ymm8
684 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm0, %ymm9
685 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm8 = ymm9[0,1,2,3,4,5],ymm8[6,7]
686 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm9 = xmm11[2],xmm10[2],xmm11[3],xmm10[3]
687 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm10 # 32-byte Folded Reload
688 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm9 = xmm9[0,1],xmm10[2,3]
689 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm8 = ymm9[0,1,2,3],ymm8[4,5,6,7]
690 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm9
691 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm10
692 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm9 = ymm10[0,1,2,3,4,5],ymm9[6,7]
693 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
694 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm10 = xmm12[2],xmm13[2],xmm12[3],xmm13[3]
695 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm10[0,1],xmm0[2,3]
696 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm9[4,5,6,7]
697 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm9 = [3,7,3,7,3,7,3,7]
698 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm9, %ymm5
699 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm9, %ymm4
700 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1,2,3,4,5],ymm5[6,7]
701 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm5 = xmm14[2],xmm6[2],xmm14[3],xmm6[3]
702 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm9, %ymm6 # 32-byte Folded Reload
703 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm5 = xmm6[0,1],xmm5[2,3]
704 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1,2,3],ymm4[4,5,6,7]
705 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm9, %ymm2
706 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm9, %ymm5
707 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1,2,3,4,5],ymm2[6,7]
708 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm1[2],xmm3[2],xmm1[3],xmm3[3]
709 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm9, %ymm3
710 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm3[0,1],xmm1[2,3]
711 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
712 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
713 ; AVX2-ONLY-NEXT: vmovaps %ymm2, 32(%rsi)
714 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
715 ; AVX2-ONLY-NEXT: vmovaps %ymm2, (%rsi)
716 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
717 ; AVX2-ONLY-NEXT: vmovaps %ymm2, 32(%rdx)
718 ; AVX2-ONLY-NEXT: vmovups (%rsp), %ymm2 # 32-byte Reload
719 ; AVX2-ONLY-NEXT: vmovaps %ymm2, (%rdx)
720 ; AVX2-ONLY-NEXT: vmovaps %ymm8, 32(%rcx)
721 ; AVX2-ONLY-NEXT: vmovaps %ymm0, (%rcx)
722 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 32(%r8)
723 ; AVX2-ONLY-NEXT: vmovaps %ymm4, (%r8)
724 ; AVX2-ONLY-NEXT: addq $104, %rsp
725 ; AVX2-ONLY-NEXT: vzeroupper
726 ; AVX2-ONLY-NEXT: retq
728 ; AVX512-LABEL: load_i32_stride4_vf16:
730 ; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0
731 ; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1
732 ; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm2
733 ; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm3
734 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm4 = [0,4,8,12,16,20,24,28,0,4,8,12,16,20,24,28]
735 ; AVX512-NEXT: # zmm4 = mem[0,1,2,3,0,1,2,3]
736 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm5
737 ; AVX512-NEXT: vpermt2d %zmm3, %zmm4, %zmm5
738 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm4
739 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm4 = zmm4[0,1,2,3],zmm5[4,5,6,7]
740 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [1,5,9,13,17,21,25,29,1,5,9,13,17,21,25,29]
741 ; AVX512-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]
742 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm6
743 ; AVX512-NEXT: vpermt2d %zmm3, %zmm5, %zmm6
744 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm5
745 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm5[0,1,2,3],zmm6[4,5,6,7]
746 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm6 = [2,6,10,14,18,22,26,30,2,6,10,14,18,22,26,30]
747 ; AVX512-NEXT: # zmm6 = mem[0,1,2,3,0,1,2,3]
748 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm7
749 ; AVX512-NEXT: vpermt2d %zmm3, %zmm6, %zmm7
750 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm6
751 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm6 = zmm6[0,1,2,3],zmm7[4,5,6,7]
752 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm7 = [3,7,11,15,19,23,27,31,3,7,11,15,19,23,27,31]
753 ; AVX512-NEXT: # zmm7 = mem[0,1,2,3,0,1,2,3]
754 ; AVX512-NEXT: vpermt2d %zmm3, %zmm7, %zmm2
755 ; AVX512-NEXT: vpermt2d %zmm1, %zmm7, %zmm0
756 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3],zmm2[4,5,6,7]
757 ; AVX512-NEXT: vmovdqa64 %zmm4, (%rsi)
758 ; AVX512-NEXT: vmovdqa64 %zmm5, (%rdx)
759 ; AVX512-NEXT: vmovdqa64 %zmm6, (%rcx)
760 ; AVX512-NEXT: vmovdqa64 %zmm0, (%r8)
761 ; AVX512-NEXT: vzeroupper
763 %wide.vec = load <64 x i32>, ptr %in.vec, align 64
764 %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>
765 %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>
766 %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>
767 %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>
768 store <16 x i32> %strided.vec0, ptr %out.vec0, align 64
769 store <16 x i32> %strided.vec1, ptr %out.vec1, align 64
770 store <16 x i32> %strided.vec2, ptr %out.vec2, align 64
771 store <16 x i32> %strided.vec3, ptr %out.vec3, align 64
775 define void @load_i32_stride4_vf32(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {
776 ; SSE-LABEL: load_i32_stride4_vf32:
778 ; SSE-NEXT: subq $456, %rsp # imm = 0x1C8
779 ; SSE-NEXT: movaps 272(%rdi), %xmm7
780 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
781 ; SSE-NEXT: movaps 304(%rdi), %xmm8
782 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
783 ; SSE-NEXT: movaps 288(%rdi), %xmm2
784 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
785 ; SSE-NEXT: movaps 336(%rdi), %xmm10
786 ; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
787 ; SSE-NEXT: movaps 320(%rdi), %xmm6
788 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
789 ; SSE-NEXT: movaps 368(%rdi), %xmm11
790 ; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
791 ; SSE-NEXT: movaps 352(%rdi), %xmm5
792 ; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
793 ; SSE-NEXT: movaps 80(%rdi), %xmm9
794 ; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
795 ; SSE-NEXT: movaps 64(%rdi), %xmm1
796 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
797 ; SSE-NEXT: movaps 112(%rdi), %xmm4
798 ; SSE-NEXT: movaps 96(%rdi), %xmm0
799 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
800 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]
801 ; SSE-NEXT: movaps %xmm4, %xmm3
802 ; SSE-NEXT: movaps %xmm1, %xmm4
803 ; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm9[0],xmm4[1],xmm9[1]
804 ; SSE-NEXT: movaps %xmm4, %xmm1
805 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
806 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
807 ; SSE-NEXT: movaps %xmm5, %xmm1
808 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm11[0],xmm1[1],xmm11[1]
809 ; SSE-NEXT: movaps %xmm6, %xmm5
810 ; SSE-NEXT: unpcklps {{.*#+}} xmm5 = xmm5[0],xmm10[0],xmm5[1],xmm10[1]
811 ; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm0[1]
812 ; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
813 ; SSE-NEXT: movaps %xmm5, %xmm0
814 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]
815 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
816 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]
817 ; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
818 ; SSE-NEXT: movaps %xmm2, %xmm0
819 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1]
820 ; SSE-NEXT: movaps 256(%rdi), %xmm1
821 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
822 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1]
823 ; SSE-NEXT: movaps %xmm1, %xmm2
824 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
825 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
826 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
827 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
828 ; SSE-NEXT: movaps 240(%rdi), %xmm1
829 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
830 ; SSE-NEXT: movaps 224(%rdi), %xmm13
831 ; SSE-NEXT: movaps %xmm13, %xmm0
832 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
833 ; SSE-NEXT: movaps 208(%rdi), %xmm2
834 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
835 ; SSE-NEXT: movaps 192(%rdi), %xmm1
836 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
837 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
838 ; SSE-NEXT: movaps %xmm1, %xmm2
839 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
840 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
841 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
842 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
843 ; SSE-NEXT: movaps 496(%rdi), %xmm1
844 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
845 ; SSE-NEXT: movaps 480(%rdi), %xmm0
846 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
847 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
848 ; SSE-NEXT: movaps 464(%rdi), %xmm2
849 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
850 ; SSE-NEXT: movaps 448(%rdi), %xmm1
851 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
852 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
853 ; SSE-NEXT: movaps %xmm1, %xmm2
854 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
855 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
856 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
857 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
858 ; SSE-NEXT: movaps 176(%rdi), %xmm1
859 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
860 ; SSE-NEXT: movaps 160(%rdi), %xmm4
861 ; SSE-NEXT: movaps %xmm4, %xmm0
862 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
863 ; SSE-NEXT: movaps 144(%rdi), %xmm1
864 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
865 ; SSE-NEXT: movaps 128(%rdi), %xmm15
866 ; SSE-NEXT: movaps %xmm15, %xmm14
867 ; SSE-NEXT: unpcklps {{.*#+}} xmm14 = xmm14[0],xmm1[0],xmm14[1],xmm1[1]
868 ; SSE-NEXT: movaps %xmm14, %xmm1
869 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
870 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
871 ; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm0[1]
872 ; SSE-NEXT: movaps 432(%rdi), %xmm1
873 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
874 ; SSE-NEXT: movaps 416(%rdi), %xmm10
875 ; SSE-NEXT: movaps %xmm10, %xmm0
876 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
877 ; SSE-NEXT: movaps 400(%rdi), %xmm1
878 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
879 ; SSE-NEXT: movaps 384(%rdi), %xmm12
880 ; SSE-NEXT: movaps %xmm12, %xmm7
881 ; SSE-NEXT: unpcklps {{.*#+}} xmm7 = xmm7[0],xmm1[0],xmm7[1],xmm1[1]
882 ; SSE-NEXT: movaps %xmm7, %xmm1
883 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
884 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
885 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm0[1]
886 ; SSE-NEXT: movaps 32(%rdi), %xmm11
887 ; SSE-NEXT: movaps 48(%rdi), %xmm0
888 ; SSE-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill
889 ; SSE-NEXT: movaps %xmm11, %xmm8
890 ; SSE-NEXT: unpcklps {{.*#+}} xmm8 = xmm8[0],xmm0[0],xmm8[1],xmm0[1]
891 ; SSE-NEXT: movaps (%rdi), %xmm6
892 ; SSE-NEXT: movaps 16(%rdi), %xmm9
893 ; SSE-NEXT: movaps %xmm6, %xmm5
894 ; SSE-NEXT: unpcklps {{.*#+}} xmm5 = xmm5[0],xmm9[0],xmm5[1],xmm9[1]
895 ; SSE-NEXT: movaps %xmm5, %xmm0
896 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm8[0]
897 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
898 ; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm8[1]
899 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
900 ; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm3[2],xmm0[3],xmm3[3]
901 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
902 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
903 ; SSE-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
904 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
905 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
906 ; SSE-NEXT: # xmm8 = xmm8[2],mem[2],xmm8[3],mem[3]
907 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
908 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
909 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
910 ; SSE-NEXT: # xmm8 = xmm8[2],mem[2],xmm8[3],mem[3]
911 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
912 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
913 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
914 ; SSE-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
915 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
916 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
917 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
918 ; SSE-NEXT: # xmm2 = xmm2[2],mem[2],xmm2[3],mem[3]
919 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload
920 ; SSE-NEXT: # xmm13 = xmm13[2],mem[2],xmm13[3],mem[3]
921 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
922 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
923 ; SSE-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
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), %xmm8 # 16-byte Reload
929 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
930 ; SSE-NEXT: # xmm8 = xmm8[2],mem[2],xmm8[3],mem[3]
931 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
932 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
933 ; SSE-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
934 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
935 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
936 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload
937 ; SSE-NEXT: # xmm10 = xmm10[2],mem[2],xmm10[3],mem[3]
938 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
939 ; SSE-NEXT: # xmm12 = xmm12[2],mem[2],xmm12[3],mem[3]
940 ; SSE-NEXT: unpckhps (%rsp), %xmm11 # 16-byte Folded Reload
941 ; SSE-NEXT: # xmm11 = xmm11[2],mem[2],xmm11[3],mem[3]
942 ; SSE-NEXT: unpckhps {{.*#+}} xmm6 = xmm6[2],xmm9[2],xmm6[3],xmm9[3]
943 ; SSE-NEXT: movaps %xmm3, %xmm8
944 ; SSE-NEXT: movlhps {{.*#+}} xmm8 = xmm8[0],xmm0[0]
945 ; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm0[1]
946 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
947 ; SSE-NEXT: movaps %xmm15, %xmm9
948 ; SSE-NEXT: movlhps {{.*#+}} xmm9 = xmm9[0],xmm4[0]
949 ; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm4[1]
950 ; SSE-NEXT: movaps %xmm1, %xmm4
951 ; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm13[0]
952 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm13[1]
953 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
954 ; SSE-NEXT: movaps %xmm2, %xmm0
955 ; SSE-NEXT: movaps %xmm2, %xmm13
956 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
957 ; SSE-NEXT: movlhps {{.*#+}} xmm13 = xmm13[0],xmm2[0]
958 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]
959 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
960 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
961 ; SSE-NEXT: movaps %xmm1, %xmm0
962 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
963 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm3[0]
964 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm3[1]
965 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
966 ; SSE-NEXT: movaps %xmm12, %xmm3
967 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm10[0]
968 ; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm10[1]
969 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
970 ; SSE-NEXT: movaps %xmm1, %xmm10
971 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
972 ; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm2[0]
973 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm2[1]
974 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
975 ; SSE-NEXT: movaps %xmm6, %xmm2
976 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm11[0]
977 ; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm11[1]
978 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
979 ; SSE-NEXT: movaps %xmm1, 96(%rsi)
980 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
981 ; SSE-NEXT: movaps %xmm1, 32(%rsi)
982 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
983 ; SSE-NEXT: movaps %xmm1, 112(%rsi)
984 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
985 ; SSE-NEXT: movaps %xmm11, 48(%rsi)
986 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
987 ; SSE-NEXT: movaps %xmm11, 64(%rsi)
988 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
989 ; SSE-NEXT: movaps %xmm1, (%rsi)
990 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
991 ; SSE-NEXT: movaps %xmm11, 80(%rsi)
992 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
993 ; SSE-NEXT: movaps %xmm11, 16(%rsi)
994 ; SSE-NEXT: movaps %xmm7, 96(%rdx)
995 ; SSE-NEXT: movaps %xmm14, 32(%rdx)
996 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
997 ; SSE-NEXT: movaps %xmm7, 112(%rdx)
998 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
999 ; SSE-NEXT: movaps %xmm7, 48(%rdx)
1000 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1001 ; SSE-NEXT: movaps %xmm7, 64(%rdx)
1002 ; SSE-NEXT: movaps %xmm5, (%rdx)
1003 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1004 ; SSE-NEXT: movaps %xmm1, 80(%rdx)
1005 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1006 ; SSE-NEXT: movaps %xmm1, 16(%rdx)
1007 ; SSE-NEXT: movaps %xmm3, 96(%rcx)
1008 ; SSE-NEXT: movaps %xmm9, 32(%rcx)
1009 ; SSE-NEXT: movaps %xmm10, 112(%rcx)
1010 ; SSE-NEXT: movaps %xmm4, 48(%rcx)
1011 ; SSE-NEXT: movaps %xmm13, 64(%rcx)
1012 ; SSE-NEXT: movaps %xmm2, (%rcx)
1013 ; SSE-NEXT: movaps %xmm0, 80(%rcx)
1014 ; SSE-NEXT: movaps %xmm8, 16(%rcx)
1015 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1016 ; SSE-NEXT: movaps %xmm0, 112(%r8)
1017 ; SSE-NEXT: movaps %xmm12, 96(%r8)
1018 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1019 ; SSE-NEXT: movaps %xmm0, 80(%r8)
1020 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1021 ; SSE-NEXT: movaps %xmm0, 64(%r8)
1022 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1023 ; SSE-NEXT: movaps %xmm0, 48(%r8)
1024 ; SSE-NEXT: movaps %xmm15, 32(%r8)
1025 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1026 ; SSE-NEXT: movaps %xmm0, 16(%r8)
1027 ; SSE-NEXT: movaps %xmm6, (%r8)
1028 ; SSE-NEXT: addq $456, %rsp # imm = 0x1C8
1031 ; AVX1-ONLY-LABEL: load_i32_stride4_vf32:
1032 ; AVX1-ONLY: # %bb.0:
1033 ; AVX1-ONLY-NEXT: subq $1000, %rsp # imm = 0x3E8
1034 ; AVX1-ONLY-NEXT: vmovaps 448(%rdi), %ymm3
1035 ; AVX1-ONLY-NEXT: vmovaps 480(%rdi), %ymm4
1036 ; AVX1-ONLY-NEXT: vmovaps 320(%rdi), %ymm2
1037 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1038 ; AVX1-ONLY-NEXT: vmovaps 352(%rdi), %ymm5
1039 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm15 = ymm5[2,3,0,1]
1040 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm5[0],ymm15[0],ymm5[2],ymm15[2]
1041 ; AVX1-ONLY-NEXT: vmovaps %ymm5, %ymm10
1042 ; AVX1-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1043 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
1044 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1045 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
1046 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
1047 ; AVX1-ONLY-NEXT: vmovaps 288(%rdi), %xmm2
1048 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1049 ; AVX1-ONLY-NEXT: vmovaps 304(%rdi), %xmm1
1050 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1051 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
1052 ; AVX1-ONLY-NEXT: vmovaps 272(%rdi), %xmm5
1053 ; AVX1-ONLY-NEXT: vmovaps 256(%rdi), %xmm2
1054 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1055 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]
1056 ; AVX1-ONLY-NEXT: vmovaps %xmm5, %xmm9
1057 ; AVX1-ONLY-NEXT: vmovaps %xmm5, (%rsp) # 16-byte Spill
1058 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
1059 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1060 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1061 ; AVX1-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1062 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm4[2,3,0,1]
1063 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1064 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm4[0],ymm0[0],ymm4[2],ymm0[2]
1065 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1066 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm3[2,3,0,1]
1067 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1068 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]
1069 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
1070 ; AVX1-ONLY-NEXT: vmovaps 416(%rdi), %xmm2
1071 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1072 ; AVX1-ONLY-NEXT: vmovaps 432(%rdi), %xmm1
1073 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1074 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
1075 ; AVX1-ONLY-NEXT: vmovaps 400(%rdi), %xmm3
1076 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1077 ; AVX1-ONLY-NEXT: vmovaps 384(%rdi), %xmm2
1078 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1079 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
1080 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
1081 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1082 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1083 ; AVX1-ONLY-NEXT: vmovaps 192(%rdi), %ymm3
1084 ; AVX1-ONLY-NEXT: vmovaps 224(%rdi), %ymm2
1085 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm8 = ymm2[2,3,0,1]
1086 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm2[0],ymm8[0],ymm2[2],ymm8[2]
1087 ; AVX1-ONLY-NEXT: vmovaps %ymm2, %ymm13
1088 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1089 ; AVX1-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1090 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm3[2,3,0,1]
1091 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1092 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm2 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]
1093 ; AVX1-ONLY-NEXT: vmovaps %ymm3, %ymm11
1094 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1095 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm2[0,1],ymm0[2,0],ymm2[4,5],ymm0[6,4]
1096 ; AVX1-ONLY-NEXT: vmovaps 160(%rdi), %xmm1
1097 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1098 ; AVX1-ONLY-NEXT: vmovaps 176(%rdi), %xmm2
1099 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1100 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
1101 ; AVX1-ONLY-NEXT: vmovaps 144(%rdi), %xmm4
1102 ; AVX1-ONLY-NEXT: vmovaps 128(%rdi), %xmm3
1103 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm5 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
1104 ; AVX1-ONLY-NEXT: vmovaps %xmm3, %xmm12
1105 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1106 ; AVX1-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1107 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm2 = xmm5[0,1],xmm2[2,0]
1108 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]
1109 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1110 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %ymm0
1111 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1112 ; AVX1-ONLY-NEXT: vmovaps 96(%rdi), %ymm2
1113 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1114 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
1115 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1116 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm2[0],ymm1[0],ymm2[2],ymm1[2]
1117 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm0[2,3,0,1]
1118 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1119 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm7 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[4],ymm0[4],ymm1[5],ymm0[5]
1120 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm7[0,1],ymm5[2,0],ymm7[4,5],ymm5[6,4]
1121 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm2
1122 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1123 ; AVX1-ONLY-NEXT: vmovaps 16(%rdi), %xmm3
1124 ; AVX1-ONLY-NEXT: vmovaps 32(%rdi), %xmm0
1125 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1126 ; AVX1-ONLY-NEXT: vmovaps 48(%rdi), %xmm5
1127 ; AVX1-ONLY-NEXT: vmovaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1128 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm0 = xmm5[0],xmm0[0]
1129 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm14 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
1130 ; AVX1-ONLY-NEXT: vmovaps %xmm3, %xmm7
1131 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm0 = xmm14[0,1],xmm0[2,0]
1132 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1133 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1134 ; AVX1-ONLY-NEXT: vmovups %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1135 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm0 = ymm15[0],ymm10[0],ymm15[1],ymm10[1],ymm15[4],ymm10[4],ymm15[5],ymm10[5]
1136 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
1137 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
1138 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm6[1,0],ymm10[1,0],ymm6[5,4],ymm10[5,4]
1139 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
1140 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm9, %xmm1 # 16-byte Folded Reload
1141 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm9[1],zero,zero
1142 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
1143 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9, %xmm14 # 16-byte Folded Reload
1144 ; AVX1-ONLY-NEXT: # xmm14 = xmm9[0],mem[0],xmm9[1],mem[1]
1145 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1146 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1147 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1148 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm0 = ymm8[0],ymm13[0],ymm8[1],ymm13[1],ymm8[4],ymm13[4],ymm8[5],ymm13[5]
1149 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm1 # 32-byte Folded Reload
1150 ; AVX1-ONLY-NEXT: # ymm1 = ymm11[1,0],mem[1,0],ymm11[5,4],mem[5,4]
1151 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
1152 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm1 = xmm12[1],xmm4[1],zero,zero
1153 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1154 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm14 # 16-byte Folded Reload
1155 ; AVX1-ONLY-NEXT: # xmm14 = xmm2[0],mem[0],xmm2[1],mem[1]
1156 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1157 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1158 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1159 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
1160 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1161 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm14 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[4],ymm2[4],ymm0[5],ymm2[5]
1162 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1163 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1164 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm1[1,0],ymm3[1,0],ymm1[5,4],ymm3[5,4]
1165 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm8 = ymm1[2,0],ymm14[2,3],ymm1[6,4],ymm14[6,7]
1166 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1167 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm1 # 16-byte Folded Reload
1168 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm4[1],zero,zero
1169 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
1170 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm14 # 16-byte Folded Reload
1171 ; AVX1-ONLY-NEXT: # xmm14 = xmm5[0],mem[0],xmm5[1],mem[1]
1172 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1173 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm8[4,5,6,7]
1174 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1175 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1176 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm8 # 32-byte Folded Reload
1177 ; AVX1-ONLY-NEXT: # ymm8 = ymm1[0],mem[0],ymm1[1],mem[1],ymm1[4],mem[4],ymm1[5],mem[5]
1178 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload
1179 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm1 # 32-byte Folded Reload
1180 ; AVX1-ONLY-NEXT: # ymm1 = ymm11[1,0],mem[1,0],ymm11[5,4],mem[5,4]
1181 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm8 = ymm1[2,0],ymm8[2,3],ymm1[6,4],ymm8[6,7]
1182 ; AVX1-ONLY-NEXT: vmovaps %xmm7, %xmm12
1183 ; AVX1-ONLY-NEXT: vmovaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1184 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1185 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm1 = xmm7[1],xmm12[1],zero,zero
1186 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
1187 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
1188 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm14 = xmm14[0],xmm13[0],xmm14[1],xmm13[1]
1189 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1190 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm8[4,5,6,7]
1191 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1192 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1193 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm1[1],ymm15[1],ymm1[3],ymm15[3]
1194 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm10[2],ymm6[2],ymm10[3],ymm6[3],ymm10[6],ymm6[6],ymm10[7],ymm6[7]
1195 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm8 = ymm1[0,1],ymm8[2,0],ymm1[4,5],ymm8[6,4]
1196 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1197 ; AVX1-ONLY-NEXT: vunpckhps (%rsp), %xmm1, %xmm1 # 16-byte Folded Reload
1198 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
1199 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm9, %xmm14 # 16-byte Folded Reload
1200 ; AVX1-ONLY-NEXT: # xmm14 = zero,zero,xmm9[2],mem[0]
1201 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1202 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm8[4,5,6,7]
1203 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1204 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]
1205 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm1 # 32-byte Folded Reload
1206 ; AVX1-ONLY-NEXT: # ymm1 = ymm3[2],mem[2],ymm3[3],mem[3],ymm3[6],mem[6],ymm3[7],mem[7]
1207 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm8[2,0],ymm1[4,5],ymm8[6,4]
1208 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1209 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm1[2],xmm4[2],xmm1[3],xmm4[3]
1210 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm14 # 16-byte Folded Reload
1211 ; AVX1-ONLY-NEXT: # xmm14 = zero,zero,xmm5[2],mem[0]
1212 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1213 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1214 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1215 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
1216 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
1217 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm5[1],ymm6[1],ymm5[3],ymm6[3]
1218 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
1219 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
1220 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm8[2],ymm3[2],ymm8[3],ymm3[3],ymm8[6],ymm3[6],ymm8[7],ymm3[7]
1221 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
1222 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
1223 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
1224 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm9[2],xmm10[2],xmm9[3],xmm10[3]
1225 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1226 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1227 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm14 = zero,zero,xmm2[2],xmm4[2]
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), %ymm15 # 32-byte Reload
1232 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1233 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm15[1],ymm0[3],ymm15[3]
1234 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1235 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm1[2],ymm11[2],ymm1[3],ymm11[3],ymm1[6],ymm11[6],ymm1[7],ymm11[7]
1236 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
1237 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm7[2],xmm12[2],xmm7[3],xmm12[3]
1238 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1239 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm14 = zero,zero,xmm7[2],xmm13[2]
1240 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm14[2,3]
1241 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm14 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1242 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1243 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
1244 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[2],mem[2],ymm0[3],mem[3],ymm0[6],mem[6],ymm0[7],mem[7]
1245 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1246 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
1247 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[3,0],mem[3,0],ymm1[7,4],mem[7,4]
1248 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
1249 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1250 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
1251 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
1252 ; AVX1-ONLY-NEXT: vmovaps (%rsp), %xmm12 # 16-byte Reload
1253 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12, %xmm12 # 16-byte Folded Reload
1254 ; AVX1-ONLY-NEXT: # xmm12 = xmm12[3,0],mem[3,0]
1255 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm12[2,0],xmm1[2,3]
1256 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1257 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm6[2],ymm5[2],ymm6[3],ymm5[3],ymm6[6],ymm5[6],ymm6[7],ymm5[7]
1258 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm3[3,0],ymm8[3,0],ymm3[7,4],ymm8[7,4]
1259 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm3[2,0],ymm1[2,3],ymm3[6,4],ymm1[6,7]
1260 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm3 = xmm2[2],xmm4[2],xmm2[3],xmm4[3]
1261 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm6 = xmm10[3,0],xmm9[3,0]
1262 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm3 = xmm6[2,0],xmm3[2,3]
1263 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]
1264 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
1265 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm3 # 32-byte Folded Reload
1266 ; AVX1-ONLY-NEXT: # ymm3 = ymm2[2],mem[2],ymm2[3],mem[3],ymm2[6],mem[6],ymm2[7],mem[7]
1267 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
1268 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm6 # 32-byte Folded Reload
1269 ; AVX1-ONLY-NEXT: # ymm6 = ymm2[3,0],mem[3,0],ymm2[7,4],mem[7,4]
1270 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm6[2,0],ymm3[2,3],ymm6[6,4],ymm3[6,7]
1271 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1272 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm6 # 16-byte Folded Reload
1273 ; AVX1-ONLY-NEXT: # xmm6 = xmm2[2],mem[2],xmm2[3],mem[3]
1274 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1275 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm8 # 16-byte Folded Reload
1276 ; AVX1-ONLY-NEXT: # xmm8 = xmm2[3,0],mem[3,0]
1277 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm6 = xmm8[2,0],xmm6[2,3]
1278 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm6[0,1,2,3],ymm3[4,5,6,7]
1279 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm2 # 32-byte Folded Reload
1280 ; AVX1-ONLY-NEXT: # ymm2 = ymm15[2],mem[2],ymm15[3],mem[3],ymm15[6],mem[6],ymm15[7],mem[7]
1281 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm4 # 32-byte Folded Reload
1282 ; AVX1-ONLY-NEXT: # ymm4 = ymm11[3,0],mem[3,0],ymm11[7,4],mem[7,4]
1283 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm2 = ymm4[2,0],ymm2[2,3],ymm4[6,4],ymm2[6,7]
1284 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm4 = xmm7[2],xmm13[2],xmm7[3],xmm13[3]
1285 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
1286 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload
1287 ; AVX1-ONLY-NEXT: # xmm5 = xmm5[3,0],mem[3,0]
1288 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm4 = xmm5[2,0],xmm4[2,3]
1289 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
1290 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1291 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 32(%rsi)
1292 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1293 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 96(%rsi)
1294 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1295 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 64(%rsi)
1296 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1297 ; AVX1-ONLY-NEXT: vmovaps %ymm4, (%rsi)
1298 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1299 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 96(%rdx)
1300 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1301 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 32(%rdx)
1302 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1303 ; AVX1-ONLY-NEXT: vmovaps %ymm4, (%rdx)
1304 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1305 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 64(%rdx)
1306 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1307 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 32(%rcx)
1308 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1309 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 96(%rcx)
1310 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1311 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 64(%rcx)
1312 ; AVX1-ONLY-NEXT: vmovaps %ymm14, (%rcx)
1313 ; AVX1-ONLY-NEXT: vmovaps %ymm3, 96(%r8)
1314 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 32(%r8)
1315 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 64(%r8)
1316 ; AVX1-ONLY-NEXT: vmovaps %ymm2, (%r8)
1317 ; AVX1-ONLY-NEXT: addq $1000, %rsp # imm = 0x3E8
1318 ; AVX1-ONLY-NEXT: vzeroupper
1319 ; AVX1-ONLY-NEXT: retq
1321 ; AVX2-ONLY-LABEL: load_i32_stride4_vf32:
1322 ; AVX2-ONLY: # %bb.0:
1323 ; AVX2-ONLY-NEXT: subq $680, %rsp # imm = 0x2A8
1324 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %ymm6
1325 ; AVX2-ONLY-NEXT: vmovaps 416(%rdi), %ymm8
1326 ; AVX2-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1327 ; AVX2-ONLY-NEXT: vmovaps 448(%rdi), %ymm4
1328 ; AVX2-ONLY-NEXT: vmovaps 480(%rdi), %ymm10
1329 ; AVX2-ONLY-NEXT: vmovaps 288(%rdi), %ymm11
1330 ; AVX2-ONLY-NEXT: vmovaps 320(%rdi), %ymm3
1331 ; AVX2-ONLY-NEXT: vmovaps 352(%rdi), %ymm9
1332 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [0,4,0,4,0,4,0,4]
1333 ; AVX2-ONLY-NEXT: vpermps %ymm9, %ymm0, %ymm1
1334 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm0, %ymm2
1335 ; AVX2-ONLY-NEXT: vmovaps %ymm3, %ymm7
1336 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3,4,5],ymm1[6,7]
1337 ; AVX2-ONLY-NEXT: vmovaps 272(%rdi), %xmm3
1338 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1339 ; AVX2-ONLY-NEXT: vmovaps 256(%rdi), %xmm2
1340 ; AVX2-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1341 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
1342 ; AVX2-ONLY-NEXT: vpermps %ymm11, %ymm0, %ymm3
1343 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0,1],xmm3[2,3]
1344 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
1345 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1346 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm0, %ymm1
1347 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm2
1348 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3,4,5],ymm1[6,7]
1349 ; AVX2-ONLY-NEXT: vmovaps 400(%rdi), %xmm3
1350 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1351 ; AVX2-ONLY-NEXT: vmovaps 384(%rdi), %xmm2
1352 ; AVX2-ONLY-NEXT: vmovaps %xmm2, (%rsp) # 16-byte Spill
1353 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
1354 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm0, %ymm3
1355 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0,1],xmm3[2,3]
1356 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %ymm8
1357 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
1358 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1359 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm0, %ymm1
1360 ; AVX2-ONLY-NEXT: vpermps %ymm6, %ymm0, %ymm2
1361 ; AVX2-ONLY-NEXT: vmovaps %ymm6, %ymm12
1362 ; AVX2-ONLY-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1363 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3,4,5],ymm1[6,7]
1364 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %ymm5
1365 ; AVX2-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1366 ; AVX2-ONLY-NEXT: vmovaps 144(%rdi), %xmm3
1367 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1368 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %xmm2
1369 ; AVX2-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1370 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
1371 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm3
1372 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0,1],xmm3[2,3]
1373 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
1374 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1375 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm14
1376 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm15
1377 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm1
1378 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm0, %ymm2
1379 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3,4,5],ymm1[6,7]
1380 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm2
1381 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1382 ; AVX2-ONLY-NEXT: vpermps %ymm2, %ymm0, %ymm0
1383 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm3
1384 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1385 ; AVX2-ONLY-NEXT: vmovaps 16(%rdi), %xmm2
1386 ; AVX2-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1387 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
1388 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm2[0,1],xmm0[2,3]
1389 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1390 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1391 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [1,5,1,5,1,5,1,5]
1392 ; AVX2-ONLY-NEXT: vpermps %ymm9, %ymm0, %ymm1
1393 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm0, %ymm2
1394 ; AVX2-ONLY-NEXT: vmovaps %ymm7, %ymm6
1395 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3,4,5],ymm1[6,7]
1396 ; AVX2-ONLY-NEXT: vmovaps 256(%rdi), %ymm5
1397 ; AVX2-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1398 ; AVX2-ONLY-NEXT: vmovaps 304(%rdi), %xmm3
1399 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1400 ; AVX2-ONLY-NEXT: vmovaps 288(%rdi), %xmm2
1401 ; AVX2-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1402 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
1403 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm3
1404 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm2 = xmm3[0,1],xmm2[2,3]
1405 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
1406 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1407 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm1
1408 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm0, %ymm2
1409 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3,4,5],ymm1[6,7]
1410 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm7
1411 ; AVX2-ONLY-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1412 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm3
1413 ; AVX2-ONLY-NEXT: vmovaps 48(%rdi), %xmm2
1414 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm5 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
1415 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm0, %ymm7
1416 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm5 = xmm7[0,1],xmm5[2,3]
1417 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm5[0,1,2,3],ymm1[4,5,6,7]
1418 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1419 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm0, %ymm1
1420 ; AVX2-ONLY-NEXT: vpermps %ymm12, %ymm0, %ymm5
1421 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm5[0,1,2,3,4,5],ymm1[6,7]
1422 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %ymm12
1423 ; AVX2-ONLY-NEXT: vmovups %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1424 ; AVX2-ONLY-NEXT: vmovaps 176(%rdi), %xmm7
1425 ; AVX2-ONLY-NEXT: vmovaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1426 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %xmm5
1427 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm7 = xmm5[0],xmm7[0],xmm5[1],xmm7[1]
1428 ; AVX2-ONLY-NEXT: vpermps %ymm12, %ymm0, %ymm13
1429 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm7 = xmm13[0,1],xmm7[2,3]
1430 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm7[0,1,2,3],ymm1[4,5,6,7]
1431 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1432 ; AVX2-ONLY-NEXT: vmovups %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1433 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm0, %ymm1
1434 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1435 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm7
1436 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm13 = ymm7[0,1,2,3,4,5],ymm1[6,7]
1437 ; AVX2-ONLY-NEXT: vmovaps 384(%rdi), %ymm1
1438 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1439 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm0, %ymm0
1440 ; AVX2-ONLY-NEXT: vmovaps 432(%rdi), %xmm7
1441 ; AVX2-ONLY-NEXT: vmovaps 416(%rdi), %xmm1
1442 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm12 = xmm1[0],xmm7[0],xmm1[1],xmm7[1]
1443 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm0[0,1],xmm12[2,3]
1444 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm13[4,5,6,7]
1445 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1446 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [2,6,2,6,2,6,2,6]
1447 ; AVX2-ONLY-NEXT: vpermps %ymm9, %ymm0, %ymm12
1448 ; AVX2-ONLY-NEXT: vpermps %ymm6, %ymm0, %ymm13
1449 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm12 = ymm13[0,1,2,3,4,5],ymm12[6,7]
1450 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
1451 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13, %xmm13 # 16-byte Folded Reload
1452 ; AVX2-ONLY-NEXT: # xmm13 = xmm13[2],mem[2],xmm13[3],mem[3]
1453 ; AVX2-ONLY-NEXT: vpermps %ymm11, %ymm0, %ymm11
1454 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm11 = xmm13[0,1],xmm11[2,3]
1455 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm11 = ymm11[0,1,2,3],ymm12[4,5,6,7]
1456 ; AVX2-ONLY-NEXT: vmovups %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1457 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm0, %ymm11
1458 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm12
1459 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm11 = ymm12[0,1,2,3,4,5],ymm11[6,7]
1460 ; AVX2-ONLY-NEXT: vmovaps (%rsp), %xmm4 # 16-byte Reload
1461 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm12 # 16-byte Folded Reload
1462 ; AVX2-ONLY-NEXT: # xmm12 = xmm4[2],mem[2],xmm4[3],mem[3]
1463 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm13 # 32-byte Folded Reload
1464 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm12 = xmm12[0,1],xmm13[2,3]
1465 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm12[0,1,2,3],ymm11[4,5,6,7]
1466 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1467 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm0, %ymm11
1468 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
1469 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm12
1470 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm11 = ymm12[0,1,2,3,4,5],ymm11[6,7]
1471 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
1472 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10, %xmm12 # 16-byte Folded Reload
1473 ; AVX2-ONLY-NEXT: # xmm12 = xmm10[2],mem[2],xmm10[3],mem[3]
1474 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm13 # 32-byte Folded Reload
1475 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm12 = xmm12[0,1],xmm13[2,3]
1476 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm10 = ymm12[0,1,2,3],ymm11[4,5,6,7]
1477 ; AVX2-ONLY-NEXT: vmovups %ymm10, (%rsp) # 32-byte Spill
1478 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm11
1479 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm0, %ymm12
1480 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm11 = ymm12[0,1,2,3,4,5],ymm11[6,7]
1481 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
1482 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
1483 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10, %xmm12 # 16-byte Folded Reload
1484 ; AVX2-ONLY-NEXT: # xmm12 = xmm10[2],mem[2],xmm10[3],mem[3]
1485 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm12[0,1],xmm0[2,3]
1486 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm13 = ymm0[0,1,2,3],ymm11[4,5,6,7]
1487 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [3,7,3,7,3,7,3,7]
1488 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm11
1489 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm0, %ymm12
1490 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm11 = ymm12[0,1,2,3,4,5],ymm11[6,7]
1491 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm2 = xmm3[2],xmm2[2],xmm3[3],xmm2[3]
1492 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm3 # 32-byte Folded Reload
1493 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm2 = xmm3[0,1],xmm2[2,3]
1494 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm11[4,5,6,7]
1495 ; AVX2-ONLY-NEXT: vpermps %ymm9, %ymm0, %ymm3
1496 ; AVX2-ONLY-NEXT: vpermps %ymm6, %ymm0, %ymm6
1497 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm6[0,1,2,3,4,5],ymm3[6,7]
1498 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
1499 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6, %xmm6 # 16-byte Folded Reload
1500 ; AVX2-ONLY-NEXT: # xmm6 = xmm6[2],mem[2],xmm6[3],mem[3]
1501 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm9 # 32-byte Folded Reload
1502 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm6 = xmm9[0,1],xmm6[2,3]
1503 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm6[0,1,2,3],ymm3[4,5,6,7]
1504 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm0, %ymm6
1505 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm0, %ymm8
1506 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm6 = ymm8[0,1,2,3,4,5],ymm6[6,7]
1507 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload
1508 ; AVX2-ONLY-NEXT: # xmm5 = xmm5[2],mem[2],xmm5[3],mem[3]
1509 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm8 # 32-byte Folded Reload
1510 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm5 = xmm8[0,1],xmm5[2,3]
1511 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm6[4,5,6,7]
1512 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm6 # 32-byte Folded Reload
1513 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm8 # 32-byte Folded Reload
1514 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm6 = ymm8[0,1,2,3,4,5],ymm6[6,7]
1515 ; AVX2-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm1[2],xmm7[2],xmm1[3],xmm7[3]
1516 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
1517 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3]
1518 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm6[4,5,6,7]
1519 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1520 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 32(%rsi)
1521 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1522 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 96(%rsi)
1523 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1524 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 64(%rsi)
1525 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1526 ; AVX2-ONLY-NEXT: vmovaps %ymm1, (%rsi)
1527 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1528 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 96(%rdx)
1529 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1530 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 32(%rdx)
1531 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1532 ; AVX2-ONLY-NEXT: vmovaps %ymm1, (%rdx)
1533 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1534 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 64(%rdx)
1535 ; AVX2-ONLY-NEXT: vmovups (%rsp), %ymm1 # 32-byte Reload
1536 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 32(%rcx)
1537 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1538 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 96(%rcx)
1539 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
1540 ; AVX2-ONLY-NEXT: vmovaps %ymm1, 64(%rcx)
1541 ; AVX2-ONLY-NEXT: vmovaps %ymm13, (%rcx)
1542 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 96(%r8)
1543 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 32(%r8)
1544 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 64(%r8)
1545 ; AVX2-ONLY-NEXT: vmovaps %ymm2, (%r8)
1546 ; AVX2-ONLY-NEXT: addq $680, %rsp # imm = 0x2A8
1547 ; AVX2-ONLY-NEXT: vzeroupper
1548 ; AVX2-ONLY-NEXT: retq
1550 ; AVX512-LABEL: load_i32_stride4_vf32:
1552 ; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0
1553 ; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1
1554 ; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm2
1555 ; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm3
1556 ; AVX512-NEXT: vmovdqa64 320(%rdi), %zmm4
1557 ; AVX512-NEXT: vmovdqa64 256(%rdi), %zmm5
1558 ; AVX512-NEXT: vmovdqa64 448(%rdi), %zmm6
1559 ; AVX512-NEXT: vmovdqa64 384(%rdi), %zmm7
1560 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [0,4,8,12,16,20,24,28,0,4,8,12,16,20,24,28]
1561 ; AVX512-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]
1562 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm9
1563 ; AVX512-NEXT: vpermt2d %zmm6, %zmm8, %zmm9
1564 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm10
1565 ; AVX512-NEXT: vpermt2d %zmm4, %zmm8, %zmm10
1566 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm9 = zmm10[0,1,2,3],zmm9[4,5,6,7]
1567 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm10
1568 ; AVX512-NEXT: vpermt2d %zmm3, %zmm8, %zmm10
1569 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm8
1570 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm8 = zmm8[0,1,2,3],zmm10[4,5,6,7]
1571 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [1,5,9,13,17,21,25,29,1,5,9,13,17,21,25,29]
1572 ; AVX512-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]
1573 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm11
1574 ; AVX512-NEXT: vpermt2d %zmm6, %zmm10, %zmm11
1575 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm12
1576 ; AVX512-NEXT: vpermt2d %zmm4, %zmm10, %zmm12
1577 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm11 = zmm12[0,1,2,3],zmm11[4,5,6,7]
1578 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm12
1579 ; AVX512-NEXT: vpermt2d %zmm3, %zmm10, %zmm12
1580 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm10
1581 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm10 = zmm10[0,1,2,3],zmm12[4,5,6,7]
1582 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm12 = [2,6,10,14,18,22,26,30,2,6,10,14,18,22,26,30]
1583 ; AVX512-NEXT: # zmm12 = mem[0,1,2,3,0,1,2,3]
1584 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm13
1585 ; AVX512-NEXT: vpermt2d %zmm6, %zmm12, %zmm13
1586 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm14
1587 ; AVX512-NEXT: vpermt2d %zmm4, %zmm12, %zmm14
1588 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm13 = zmm14[0,1,2,3],zmm13[4,5,6,7]
1589 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm14
1590 ; AVX512-NEXT: vpermt2d %zmm3, %zmm12, %zmm14
1591 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm12
1592 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm12 = zmm12[0,1,2,3],zmm14[4,5,6,7]
1593 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm14 = [3,7,11,15,19,23,27,31,3,7,11,15,19,23,27,31]
1594 ; AVX512-NEXT: # zmm14 = mem[0,1,2,3,0,1,2,3]
1595 ; AVX512-NEXT: vpermt2d %zmm6, %zmm14, %zmm7
1596 ; AVX512-NEXT: vpermt2d %zmm4, %zmm14, %zmm5
1597 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm4 = zmm5[0,1,2,3],zmm7[4,5,6,7]
1598 ; AVX512-NEXT: vpermt2d %zmm3, %zmm14, %zmm2
1599 ; AVX512-NEXT: vpermt2d %zmm1, %zmm14, %zmm0
1600 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3],zmm2[4,5,6,7]
1601 ; AVX512-NEXT: vmovdqa64 %zmm9, 64(%rsi)
1602 ; AVX512-NEXT: vmovdqa64 %zmm8, (%rsi)
1603 ; AVX512-NEXT: vmovdqa64 %zmm11, 64(%rdx)
1604 ; AVX512-NEXT: vmovdqa64 %zmm10, (%rdx)
1605 ; AVX512-NEXT: vmovdqa64 %zmm13, 64(%rcx)
1606 ; AVX512-NEXT: vmovdqa64 %zmm12, (%rcx)
1607 ; AVX512-NEXT: vmovdqa64 %zmm4, 64(%r8)
1608 ; AVX512-NEXT: vmovdqa64 %zmm0, (%r8)
1609 ; AVX512-NEXT: vzeroupper
1611 %wide.vec = load <128 x i32>, ptr %in.vec, align 64
1612 %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>
1613 %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>
1614 %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>
1615 %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>
1616 store <32 x i32> %strided.vec0, ptr %out.vec0, align 64
1617 store <32 x i32> %strided.vec1, ptr %out.vec1, align 64
1618 store <32 x i32> %strided.vec2, ptr %out.vec2, align 64
1619 store <32 x i32> %strided.vec3, ptr %out.vec3, align 64
1623 define void @load_i32_stride4_vf64(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {
1624 ; SSE-LABEL: load_i32_stride4_vf64:
1626 ; SSE-NEXT: subq $1224, %rsp # imm = 0x4C8
1627 ; SSE-NEXT: movaps 144(%rdi), %xmm14
1628 ; SSE-NEXT: movaps 176(%rdi), %xmm11
1629 ; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1630 ; SSE-NEXT: movaps 160(%rdi), %xmm5
1631 ; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1632 ; SSE-NEXT: movaps 208(%rdi), %xmm3
1633 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1634 ; SSE-NEXT: movaps 192(%rdi), %xmm8
1635 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1636 ; SSE-NEXT: movaps 240(%rdi), %xmm6
1637 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1638 ; SSE-NEXT: movaps 224(%rdi), %xmm7
1639 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1640 ; SSE-NEXT: movaps 80(%rdi), %xmm10
1641 ; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1642 ; SSE-NEXT: movaps 64(%rdi), %xmm4
1643 ; SSE-NEXT: movaps 112(%rdi), %xmm2
1644 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1645 ; SSE-NEXT: movaps 96(%rdi), %xmm0
1646 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1647 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1648 ; SSE-NEXT: movaps %xmm4, %xmm2
1649 ; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm10[0],xmm2[1],xmm10[1]
1650 ; SSE-NEXT: movaps %xmm2, %xmm1
1651 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1652 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1653 ; SSE-NEXT: movaps %xmm7, %xmm1
1654 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1]
1655 ; SSE-NEXT: movaps %xmm8, %xmm6
1656 ; SSE-NEXT: unpcklps {{.*#+}} xmm6 = xmm6[0],xmm3[0],xmm6[1],xmm3[1]
1657 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1658 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1659 ; SSE-NEXT: movaps %xmm6, %xmm0
1660 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1661 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1662 ; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm1[1]
1663 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1664 ; SSE-NEXT: movaps %xmm5, %xmm0
1665 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm11[0],xmm0[1],xmm11[1]
1666 ; SSE-NEXT: movaps 128(%rdi), %xmm2
1667 ; SSE-NEXT: movaps %xmm2, %xmm1
1668 ; SSE-NEXT: movaps %xmm2, %xmm10
1669 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm14[0],xmm1[1],xmm14[1]
1670 ; SSE-NEXT: movaps %xmm1, %xmm2
1671 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1672 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1673 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1674 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1675 ; SSE-NEXT: movaps 368(%rdi), %xmm12
1676 ; SSE-NEXT: movaps 352(%rdi), %xmm0
1677 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1678 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm12[0],xmm0[1],xmm12[1]
1679 ; SSE-NEXT: movaps 336(%rdi), %xmm13
1680 ; SSE-NEXT: movaps 320(%rdi), %xmm11
1681 ; SSE-NEXT: movaps %xmm11, %xmm1
1682 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm13[0],xmm1[1],xmm13[1]
1683 ; SSE-NEXT: movaps %xmm1, %xmm2
1684 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1685 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1686 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1687 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1688 ; SSE-NEXT: movaps 304(%rdi), %xmm2
1689 ; SSE-NEXT: movaps %xmm2, (%rsp) # 16-byte Spill
1690 ; SSE-NEXT: movaps 288(%rdi), %xmm8
1691 ; SSE-NEXT: movaps %xmm8, %xmm0
1692 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1693 ; SSE-NEXT: movaps 272(%rdi), %xmm3
1694 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1695 ; SSE-NEXT: movaps 256(%rdi), %xmm2
1696 ; SSE-NEXT: movaps %xmm2, %xmm1
1697 ; SSE-NEXT: movaps %xmm2, %xmm9
1698 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
1699 ; SSE-NEXT: movaps %xmm1, %xmm2
1700 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1701 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1702 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1703 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1704 ; SSE-NEXT: movaps 496(%rdi), %xmm1
1705 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1706 ; SSE-NEXT: movaps 480(%rdi), %xmm0
1707 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1708 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1709 ; SSE-NEXT: movaps 464(%rdi), %xmm2
1710 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1711 ; SSE-NEXT: movaps 448(%rdi), %xmm1
1712 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1713 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[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 432(%rdi), %xmm2
1720 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1721 ; SSE-NEXT: movaps 416(%rdi), %xmm5
1722 ; SSE-NEXT: movaps %xmm5, %xmm0
1723 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1724 ; SSE-NEXT: movaps 400(%rdi), %xmm2
1725 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1726 ; SSE-NEXT: movaps 384(%rdi), %xmm1
1727 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1728 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1729 ; SSE-NEXT: movaps %xmm1, %xmm2
1730 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1731 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1732 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1733 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1734 ; SSE-NEXT: movaps 624(%rdi), %xmm2
1735 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1736 ; SSE-NEXT: movaps 608(%rdi), %xmm7
1737 ; SSE-NEXT: movaps %xmm7, %xmm0
1738 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1739 ; SSE-NEXT: movaps 592(%rdi), %xmm2
1740 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1741 ; SSE-NEXT: movaps 576(%rdi), %xmm1
1742 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1743 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1744 ; SSE-NEXT: movaps %xmm1, %xmm2
1745 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1746 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1747 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1748 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1749 ; SSE-NEXT: movaps 560(%rdi), %xmm1
1750 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1751 ; SSE-NEXT: movaps 544(%rdi), %xmm0
1752 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1753 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1754 ; SSE-NEXT: movaps 528(%rdi), %xmm2
1755 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1756 ; SSE-NEXT: movaps 512(%rdi), %xmm1
1757 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1758 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1759 ; SSE-NEXT: movaps %xmm1, %xmm2
1760 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1761 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1762 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1763 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1764 ; SSE-NEXT: movaps 752(%rdi), %xmm1
1765 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1766 ; SSE-NEXT: movaps 736(%rdi), %xmm0
1767 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1768 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1769 ; SSE-NEXT: movaps 720(%rdi), %xmm2
1770 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1771 ; SSE-NEXT: movaps 704(%rdi), %xmm1
1772 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1773 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1774 ; SSE-NEXT: movaps %xmm1, %xmm2
1775 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1776 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1777 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1778 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1779 ; SSE-NEXT: movaps 688(%rdi), %xmm1
1780 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1781 ; SSE-NEXT: movaps 672(%rdi), %xmm0
1782 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1783 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1784 ; SSE-NEXT: movaps 656(%rdi), %xmm3
1785 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1786 ; SSE-NEXT: movaps 640(%rdi), %xmm2
1787 ; SSE-NEXT: movaps %xmm2, %xmm1
1788 ; SSE-NEXT: movaps %xmm2, %xmm15
1789 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[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 880(%rdi), %xmm1
1796 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1797 ; SSE-NEXT: movaps 864(%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 848(%rdi), %xmm2
1801 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1802 ; SSE-NEXT: movaps 832(%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 816(%rdi), %xmm1
1811 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1812 ; SSE-NEXT: movaps 800(%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 784(%rdi), %xmm2
1816 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1817 ; SSE-NEXT: movaps 768(%rdi), %xmm1
1818 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1819 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1820 ; SSE-NEXT: movaps %xmm1, %xmm2
1821 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1822 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1823 ; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1824 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1825 ; SSE-NEXT: movaps 1008(%rdi), %xmm1
1826 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1827 ; SSE-NEXT: movaps 992(%rdi), %xmm0
1828 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1829 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1830 ; SSE-NEXT: movaps 976(%rdi), %xmm3
1831 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1832 ; SSE-NEXT: movaps 960(%rdi), %xmm1
1833 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1834 ; SSE-NEXT: movaps %xmm1, %xmm2
1835 ; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
1836 ; SSE-NEXT: movaps %xmm2, %xmm1
1837 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1838 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1839 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1840 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1841 ; SSE-NEXT: movaps 944(%rdi), %xmm0
1842 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1843 ; SSE-NEXT: movaps 928(%rdi), %xmm1
1844 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1845 ; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
1846 ; SSE-NEXT: movaps 912(%rdi), %xmm2
1847 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1848 ; SSE-NEXT: movaps 896(%rdi), %xmm0
1849 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1850 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1851 ; SSE-NEXT: movaps %xmm0, %xmm2
1852 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
1853 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1854 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
1855 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1856 ; SSE-NEXT: movaps 32(%rdi), %xmm2
1857 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1858 ; SSE-NEXT: movaps 48(%rdi), %xmm0
1859 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1860 ; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
1861 ; SSE-NEXT: movaps (%rdi), %xmm0
1862 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1863 ; SSE-NEXT: movaps 16(%rdi), %xmm6
1864 ; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1]
1865 ; SSE-NEXT: movaps %xmm0, %xmm1
1866 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
1867 ; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1868 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]
1869 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1870 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
1871 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
1872 ; SSE-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
1873 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
1874 ; SSE-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
1875 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1876 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
1877 ; SSE-NEXT: # xmm0 = xmm0[2],mem[2],xmm0[3],mem[3]
1878 ; SSE-NEXT: unpckhps {{.*#+}} xmm10 = xmm10[2],xmm14[2],xmm10[3],xmm14[3]
1879 ; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1880 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
1881 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Folded Reload
1882 ; SSE-NEXT: # xmm14 = xmm14[2],mem[2],xmm14[3],mem[3]
1883 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1884 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
1885 ; SSE-NEXT: # xmm2 = xmm2[2],mem[2],xmm2[3],mem[3]
1886 ; SSE-NEXT: unpckhps (%rsp), %xmm8 # 16-byte Folded Reload
1887 ; SSE-NEXT: # xmm8 = xmm8[2],mem[2],xmm8[3],mem[3]
1888 ; SSE-NEXT: movaps %xmm8, (%rsp) # 16-byte Spill
1889 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload
1890 ; SSE-NEXT: # xmm9 = xmm9[2],mem[2],xmm9[3],mem[3]
1891 ; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1892 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1893 ; SSE-NEXT: unpckhps {{.*#+}} xmm1 = xmm1[2],xmm12[2],xmm1[3],xmm12[3]
1894 ; SSE-NEXT: unpckhps {{.*#+}} xmm11 = xmm11[2],xmm13[2],xmm11[3],xmm13[3]
1895 ; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1896 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
1897 ; SSE-NEXT: # xmm5 = xmm5[2],mem[2],xmm5[3],mem[3]
1898 ; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1899 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
1900 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
1901 ; SSE-NEXT: # xmm12 = xmm12[2],mem[2],xmm12[3],mem[3]
1902 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
1903 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload
1904 ; SSE-NEXT: # xmm13 = xmm13[2],mem[2],xmm13[3],mem[3]
1905 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
1906 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload
1907 ; SSE-NEXT: # xmm10 = xmm10[2],mem[2],xmm10[3],mem[3]
1908 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
1909 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload
1910 ; SSE-NEXT: # xmm11 = xmm11[2],mem[2],xmm11[3],mem[3]
1911 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
1912 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload
1913 ; SSE-NEXT: # xmm9 = xmm9[2],mem[2],xmm9[3],mem[3]
1914 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload
1915 ; SSE-NEXT: # xmm7 = xmm7[2],mem[2],xmm7[3],mem[3]
1916 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1917 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
1918 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
1919 ; SSE-NEXT: # xmm5 = xmm5[2],mem[2],xmm5[3],mem[3]
1920 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1921 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload
1922 ; SSE-NEXT: # xmm7 = xmm7[2],mem[2],xmm7[3],mem[3]
1923 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1924 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1925 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1926 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1927 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
1928 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
1929 ; SSE-NEXT: # xmm8 = xmm8[2],mem[2],xmm8[3],mem[3]
1930 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1931 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload
1932 ; SSE-NEXT: # xmm7 = xmm7[2],mem[2],xmm7[3],mem[3]
1933 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1934 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1935 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1936 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1937 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1938 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1939 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1940 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1941 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1942 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1943 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1944 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1945 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1946 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1947 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1948 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1949 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1950 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1951 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1952 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1953 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1954 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1955 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1956 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1957 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1958 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1959 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1960 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1961 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1962 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1963 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1964 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1965 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1966 ; SSE-NEXT: unpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
1967 ; SSE-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]
1968 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1969 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1970 ; SSE-NEXT: unpckhps {{.*#+}} xmm15 = xmm15[2],xmm6[2],xmm15[3],xmm6[3]
1971 ; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1972 ; SSE-NEXT: movaps %xmm4, %xmm6
1973 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm3[0]
1974 ; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1975 ; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm3[1]
1976 ; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1977 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
1978 ; SSE-NEXT: movaps %xmm3, %xmm4
1979 ; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm0[0]
1980 ; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1981 ; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm0[1]
1982 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1983 ; SSE-NEXT: movaps %xmm2, %xmm3
1984 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm14[0]
1985 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1986 ; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm14[1]
1987 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1988 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1989 ; SSE-NEXT: movaps %xmm0, %xmm3
1990 ; SSE-NEXT: movaps (%rsp), %xmm2 # 16-byte Reload
1991 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm2[0]
1992 ; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1993 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]
1994 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1995 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1996 ; SSE-NEXT: movaps %xmm0, %xmm2
1997 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
1998 ; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1999 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
2000 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2001 ; SSE-NEXT: movaps %xmm12, %xmm15
2002 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2003 ; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm1[0]
2004 ; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm1[1]
2005 ; SSE-NEXT: movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2006 ; SSE-NEXT: movaps %xmm10, %xmm0
2007 ; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm13[0]
2008 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm13[1]
2009 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2010 ; SSE-NEXT: movaps %xmm9, %xmm6
2011 ; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm11[0]
2012 ; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm11[1]
2013 ; SSE-NEXT: movaps %xmm9, %xmm11
2014 ; SSE-NEXT: movaps %xmm5, %xmm0
2015 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2016 ; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm1[0]
2017 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
2018 ; SSE-NEXT: movaps %xmm0, {{[-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, %xmm4
2021 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2022 ; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm1[0]
2023 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
2024 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2025 ; SSE-NEXT: movaps %xmm7, %xmm3
2026 ; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm8[0]
2027 ; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm8[1]
2028 ; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2029 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2030 ; SSE-NEXT: movaps %xmm0, %xmm2
2031 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2032 ; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]
2033 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
2034 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2035 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2036 ; SSE-NEXT: movaps %xmm0, %xmm1
2037 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
2038 ; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm7[0]
2039 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm7[1]
2040 ; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2041 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2042 ; SSE-NEXT: movaps %xmm0, %xmm12
2043 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
2044 ; SSE-NEXT: movlhps {{.*#+}} xmm12 = xmm12[0],xmm7[0]
2045 ; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm7[1]
2046 ; SSE-NEXT: movaps %xmm0, %xmm7
2047 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2048 ; SSE-NEXT: movaps %xmm8, %xmm0
2049 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
2050 ; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm9[0]
2051 ; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm9[1]
2052 ; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2053 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2054 ; SSE-NEXT: movaps %xmm8, %xmm13
2055 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
2056 ; SSE-NEXT: movlhps {{.*#+}} xmm13 = xmm13[0],xmm9[0]
2057 ; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm9[1]
2058 ; SSE-NEXT: movaps %xmm8, %xmm9
2059 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2060 ; SSE-NEXT: movaps %xmm8, 224(%rsi)
2061 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2062 ; SSE-NEXT: movaps %xmm8, 160(%rsi)
2063 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2064 ; SSE-NEXT: movaps %xmm14, 96(%rsi)
2065 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2066 ; SSE-NEXT: movaps %xmm14, 32(%rsi)
2067 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2068 ; SSE-NEXT: movaps %xmm8, 240(%rsi)
2069 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2070 ; SSE-NEXT: movaps %xmm8, 176(%rsi)
2071 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2072 ; SSE-NEXT: movaps %xmm14, 112(%rsi)
2073 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2074 ; SSE-NEXT: movaps %xmm14, 48(%rsi)
2075 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2076 ; SSE-NEXT: movaps %xmm8, 192(%rsi)
2077 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2078 ; SSE-NEXT: movaps %xmm14, 128(%rsi)
2079 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2080 ; SSE-NEXT: movaps %xmm14, 64(%rsi)
2081 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2082 ; SSE-NEXT: movaps %xmm8, (%rsi)
2083 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2084 ; SSE-NEXT: movaps %xmm8, 208(%rsi)
2085 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2086 ; SSE-NEXT: movaps %xmm14, 144(%rsi)
2087 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2088 ; SSE-NEXT: movaps %xmm14, 80(%rsi)
2089 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2090 ; SSE-NEXT: movaps %xmm14, 16(%rsi)
2091 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2092 ; SSE-NEXT: movaps %xmm8, 224(%rdx)
2093 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2094 ; SSE-NEXT: movaps %xmm8, 240(%rdx)
2095 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2096 ; SSE-NEXT: movaps %xmm8, 192(%rdx)
2097 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2098 ; SSE-NEXT: movaps %xmm8, 208(%rdx)
2099 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2100 ; SSE-NEXT: movaps %xmm8, 160(%rdx)
2101 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2102 ; SSE-NEXT: movaps %xmm14, 176(%rdx)
2103 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2104 ; SSE-NEXT: movaps %xmm14, 128(%rdx)
2105 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2106 ; SSE-NEXT: movaps %xmm14, 144(%rdx)
2107 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2108 ; SSE-NEXT: movaps %xmm14, 96(%rdx)
2109 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2110 ; SSE-NEXT: movaps %xmm14, 112(%rdx)
2111 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2112 ; SSE-NEXT: movaps %xmm14, 64(%rdx)
2113 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2114 ; SSE-NEXT: movaps %xmm14, 80(%rdx)
2115 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2116 ; SSE-NEXT: movaps %xmm14, 32(%rdx)
2117 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2118 ; SSE-NEXT: movaps %xmm14, 48(%rdx)
2119 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2120 ; SSE-NEXT: movaps %xmm8, (%rdx)
2121 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2122 ; SSE-NEXT: movaps %xmm14, 16(%rdx)
2123 ; SSE-NEXT: movaps %xmm0, 240(%rcx)
2124 ; SSE-NEXT: movaps %xmm12, 224(%rcx)
2125 ; SSE-NEXT: movaps %xmm1, 208(%rcx)
2126 ; SSE-NEXT: movaps %xmm2, 192(%rcx)
2127 ; SSE-NEXT: movaps %xmm3, 176(%rcx)
2128 ; SSE-NEXT: movaps %xmm4, 160(%rcx)
2129 ; SSE-NEXT: movaps %xmm5, 144(%rcx)
2130 ; SSE-NEXT: movaps %xmm6, 128(%rcx)
2131 ; SSE-NEXT: movaps %xmm10, 112(%rcx)
2132 ; SSE-NEXT: movaps %xmm15, 96(%rcx)
2133 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2134 ; SSE-NEXT: movaps %xmm0, 80(%rcx)
2135 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2136 ; SSE-NEXT: movaps %xmm0, 64(%rcx)
2137 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2138 ; SSE-NEXT: movaps %xmm0, 48(%rcx)
2139 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2140 ; SSE-NEXT: movaps %xmm0, 32(%rcx)
2141 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2142 ; SSE-NEXT: movaps %xmm0, 16(%rcx)
2143 ; SSE-NEXT: movaps %xmm13, (%rcx)
2144 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2145 ; SSE-NEXT: movaps %xmm0, 240(%r8)
2146 ; SSE-NEXT: movaps %xmm7, 224(%r8)
2147 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2148 ; SSE-NEXT: movaps %xmm0, 208(%r8)
2149 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2150 ; SSE-NEXT: movaps %xmm0, 192(%r8)
2151 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2152 ; SSE-NEXT: movaps %xmm0, 176(%r8)
2153 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2154 ; SSE-NEXT: movaps %xmm0, 160(%r8)
2155 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2156 ; SSE-NEXT: movaps %xmm0, 144(%r8)
2157 ; SSE-NEXT: movaps %xmm11, 128(%r8)
2158 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2159 ; SSE-NEXT: movaps %xmm0, 112(%r8)
2160 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2161 ; SSE-NEXT: movaps %xmm0, 96(%r8)
2162 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2163 ; SSE-NEXT: movaps %xmm0, 80(%r8)
2164 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2165 ; SSE-NEXT: movaps %xmm0, 64(%r8)
2166 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2167 ; SSE-NEXT: movaps %xmm0, 48(%r8)
2168 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2169 ; SSE-NEXT: movaps %xmm0, 32(%r8)
2170 ; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2171 ; SSE-NEXT: movaps %xmm0, 16(%r8)
2172 ; SSE-NEXT: movaps %xmm9, (%r8)
2173 ; SSE-NEXT: addq $1224, %rsp # imm = 0x4C8
2176 ; AVX1-ONLY-LABEL: load_i32_stride4_vf64:
2177 ; AVX1-ONLY: # %bb.0:
2178 ; AVX1-ONLY-NEXT: subq $2184, %rsp # imm = 0x888
2179 ; AVX1-ONLY-NEXT: vmovaps 448(%rdi), %ymm3
2180 ; AVX1-ONLY-NEXT: vmovaps 480(%rdi), %ymm4
2181 ; AVX1-ONLY-NEXT: vmovaps 192(%rdi), %ymm14
2182 ; AVX1-ONLY-NEXT: vmovaps 224(%rdi), %ymm1
2183 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm5 = ymm1[2,3,0,1]
2184 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm5[0],ymm1[2],ymm5[2]
2185 ; AVX1-ONLY-NEXT: vmovaps %ymm5, %ymm8
2186 ; AVX1-ONLY-NEXT: vmovaps %ymm1, %ymm9
2187 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm5 = ymm14[2,3,0,1]
2188 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm5[0],ymm14[0],ymm5[1],ymm14[1],ymm5[4],ymm14[4],ymm5[5],ymm14[5]
2189 ; AVX1-ONLY-NEXT: vmovaps %ymm5, %ymm7
2190 ; AVX1-ONLY-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2191 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2192 ; AVX1-ONLY-NEXT: vmovaps 160(%rdi), %xmm1
2193 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2194 ; AVX1-ONLY-NEXT: vmovaps 176(%rdi), %xmm5
2195 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm5[0],xmm1[0]
2196 ; AVX1-ONLY-NEXT: vmovaps %xmm5, %xmm13
2197 ; AVX1-ONLY-NEXT: vmovaps 144(%rdi), %xmm2
2198 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2199 ; AVX1-ONLY-NEXT: vmovaps 128(%rdi), %xmm12
2200 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm12[0],xmm2[0],xmm12[1],xmm2[1]
2201 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
2202 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2203 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2204 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm4[2,3,0,1]
2205 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2206 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm4[0],ymm0[0],ymm4[2],ymm0[2]
2207 ; AVX1-ONLY-NEXT: vmovaps %ymm4, %ymm5
2208 ; AVX1-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2209 ; AVX1-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2210 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm3[2,3,0,1]
2211 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2212 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]
2213 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2214 ; AVX1-ONLY-NEXT: vmovaps 416(%rdi), %xmm2
2215 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2216 ; AVX1-ONLY-NEXT: vmovaps 432(%rdi), %xmm1
2217 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2218 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
2219 ; AVX1-ONLY-NEXT: vmovaps 400(%rdi), %xmm2
2220 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2221 ; AVX1-ONLY-NEXT: vmovaps 384(%rdi), %xmm4
2222 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
2223 ; AVX1-ONLY-NEXT: vmovaps %xmm4, %xmm6
2224 ; AVX1-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2225 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
2226 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2227 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2228 ; AVX1-ONLY-NEXT: vmovaps 704(%rdi), %ymm2
2229 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2230 ; AVX1-ONLY-NEXT: vmovaps 736(%rdi), %ymm1
2231 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2232 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3,0,1]
2233 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2234 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
2235 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
2236 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2237 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
2238 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2239 ; AVX1-ONLY-NEXT: vmovaps 672(%rdi), %xmm2
2240 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2241 ; AVX1-ONLY-NEXT: vmovaps 688(%rdi), %xmm1
2242 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2243 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
2244 ; AVX1-ONLY-NEXT: vmovaps 656(%rdi), %xmm3
2245 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2246 ; AVX1-ONLY-NEXT: vmovaps 640(%rdi), %xmm2
2247 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2248 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
2249 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
2250 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2251 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2252 ; AVX1-ONLY-NEXT: vmovaps 960(%rdi), %ymm2
2253 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2254 ; AVX1-ONLY-NEXT: vmovaps 992(%rdi), %ymm1
2255 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2256 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3,0,1]
2257 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2258 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
2259 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
2260 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2261 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
2262 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2263 ; AVX1-ONLY-NEXT: vmovaps 928(%rdi), %xmm2
2264 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2265 ; AVX1-ONLY-NEXT: vmovaps 944(%rdi), %xmm1
2266 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2267 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
2268 ; AVX1-ONLY-NEXT: vmovaps 912(%rdi), %xmm3
2269 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2270 ; AVX1-ONLY-NEXT: vmovaps 896(%rdi), %xmm2
2271 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2272 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
2273 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
2274 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2275 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2276 ; AVX1-ONLY-NEXT: vmovaps 320(%rdi), %ymm2
2277 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2278 ; AVX1-ONLY-NEXT: vmovaps 352(%rdi), %ymm1
2279 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2280 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3,0,1]
2281 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2282 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
2283 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
2284 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2285 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
2286 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2287 ; AVX1-ONLY-NEXT: vmovaps 288(%rdi), %xmm2
2288 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2289 ; AVX1-ONLY-NEXT: vmovaps 304(%rdi), %xmm1
2290 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2291 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
2292 ; AVX1-ONLY-NEXT: vmovaps 272(%rdi), %xmm3
2293 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2294 ; AVX1-ONLY-NEXT: vmovaps 256(%rdi), %xmm2
2295 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2296 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
2297 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
2298 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2299 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2300 ; AVX1-ONLY-NEXT: vmovaps 576(%rdi), %ymm2
2301 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2302 ; AVX1-ONLY-NEXT: vmovaps 608(%rdi), %ymm1
2303 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2304 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3,0,1]
2305 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2306 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
2307 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
2308 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2309 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
2310 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2311 ; AVX1-ONLY-NEXT: vmovaps 544(%rdi), %xmm2
2312 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2313 ; AVX1-ONLY-NEXT: vmovaps 560(%rdi), %xmm1
2314 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2315 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
2316 ; AVX1-ONLY-NEXT: vmovaps 528(%rdi), %xmm3
2317 ; AVX1-ONLY-NEXT: vmovaps %xmm3, (%rsp) # 16-byte Spill
2318 ; AVX1-ONLY-NEXT: vmovaps 512(%rdi), %xmm2
2319 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2320 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
2321 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,0]
2322 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2323 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2324 ; AVX1-ONLY-NEXT: vmovaps 832(%rdi), %ymm2
2325 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2326 ; AVX1-ONLY-NEXT: vmovaps 864(%rdi), %ymm1
2327 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2328 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3,0,1]
2329 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2330 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
2331 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
2332 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2333 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[4],ymm2[4],ymm1[5],ymm2[5]
2334 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2335 ; AVX1-ONLY-NEXT: vmovaps 800(%rdi), %xmm2
2336 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2337 ; AVX1-ONLY-NEXT: vmovaps 816(%rdi), %xmm1
2338 ; AVX1-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2339 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
2340 ; AVX1-ONLY-NEXT: vmovaps 784(%rdi), %xmm2
2341 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2342 ; AVX1-ONLY-NEXT: vmovaps 768(%rdi), %xmm3
2343 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2344 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm10 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
2345 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm10[0,1],xmm1[2,0]
2346 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2347 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2348 ; AVX1-ONLY-NEXT: vmovaps 64(%rdi), %ymm0
2349 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2350 ; AVX1-ONLY-NEXT: vmovaps 96(%rdi), %ymm1
2351 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2352 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm1[2,3,0,1]
2353 ; AVX1-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2354 ; AVX1-ONLY-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm1[0],ymm2[0],ymm1[2],ymm2[2]
2355 ; AVX1-ONLY-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm0[2,3,0,1]
2356 ; AVX1-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2357 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm11 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[4],ymm0[4],ymm1[5],ymm0[5]
2358 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm11[0,1],ymm10[2,0],ymm11[4,5],ymm10[6,4]
2359 ; AVX1-ONLY-NEXT: vmovaps (%rdi), %xmm2
2360 ; AVX1-ONLY-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2361 ; AVX1-ONLY-NEXT: vmovaps 16(%rdi), %xmm3
2362 ; AVX1-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2363 ; AVX1-ONLY-NEXT: vmovaps 32(%rdi), %xmm4
2364 ; AVX1-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2365 ; AVX1-ONLY-NEXT: vmovaps 48(%rdi), %xmm0
2366 ; AVX1-ONLY-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2367 ; AVX1-ONLY-NEXT: vmovlhps {{.*#+}} xmm0 = xmm0[0],xmm4[0]
2368 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm15 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
2369 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm0 = xmm15[0,1],xmm0[2,0]
2370 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
2371 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2372 ; AVX1-ONLY-NEXT: vmovaps %ymm8, %ymm10
2373 ; AVX1-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2374 ; AVX1-ONLY-NEXT: vmovaps %ymm9, %ymm2
2375 ; AVX1-ONLY-NEXT: vmovups %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2376 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm0 = ymm8[0],ymm9[0],ymm8[1],ymm9[1],ymm8[4],ymm9[4],ymm8[5],ymm9[5]
2377 ; AVX1-ONLY-NEXT: vmovups %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2378 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm14[1,0],ymm7[1,0],ymm14[5,4],ymm7[5,4]
2379 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2380 ; AVX1-ONLY-NEXT: vmovaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2381 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
2382 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm1 = xmm12[1],xmm4[1],zero,zero
2383 ; AVX1-ONLY-NEXT: vmovaps %xmm13, %xmm7
2384 ; AVX1-ONLY-NEXT: vmovaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2385 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2386 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm15 = xmm3[0],xmm13[0],xmm3[1],xmm13[1]
2387 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2388 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2389 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2390 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
2391 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} ymm0 = ymm8[0],ymm5[0],ymm8[1],ymm5[1],ymm8[4],ymm5[4],ymm8[5],ymm5[5]
2392 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload
2393 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2394 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm9[1,0],ymm5[1,0],ymm9[5,4],ymm5[5,4]
2395 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2396 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
2397 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm1 = xmm6[1],xmm13[1],zero,zero
2398 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
2399 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
2400 ; AVX1-ONLY-NEXT: vunpcklps {{.*#+}} xmm15 = xmm6[0],xmm11[0],xmm6[1],xmm11[1]
2401 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2402 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2403 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2404 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2405 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2406 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2407 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2408 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2409 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[1,0],mem[1,0],ymm1[5,4],mem[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 {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2412 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2413 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm1[1],zero,zero
2414 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2415 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2416 ; AVX1-ONLY-NEXT: # xmm15 = xmm15[0],mem[0],xmm15[1],mem[1]
2417 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2418 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2419 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2420 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2421 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2422 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2423 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2424 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2425 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[1,0],mem[1,0],ymm1[5,4],mem[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), %xmm1 # 16-byte Reload
2428 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2429 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm1[1],zero,zero
2430 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2431 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2432 ; AVX1-ONLY-NEXT: # xmm15 = xmm15[0],mem[0],xmm15[1],mem[1]
2433 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2434 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2435 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2436 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2437 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2438 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2439 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2440 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2441 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[1,0],mem[1,0],ymm1[5,4],mem[5,4]
2442 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2443 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2444 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2445 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm1[1],zero,zero
2446 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2447 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2448 ; AVX1-ONLY-NEXT: # xmm15 = xmm15[0],mem[0],xmm15[1],mem[1]
2449 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2450 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2451 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2452 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2453 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2454 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2455 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2456 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2457 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[1,0],mem[1,0],ymm1[5,4],mem[5,4]
2458 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2459 ; AVX1-ONLY-NEXT: vmovaps (%rsp), %xmm1 # 16-byte Reload
2460 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2461 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm1[1],zero,zero
2462 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2463 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2464 ; AVX1-ONLY-NEXT: # xmm15 = xmm15[0],mem[0],xmm15[1],mem[1]
2465 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2466 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2467 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2468 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2469 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2470 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2471 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2472 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2473 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[1,0],mem[1,0],ymm1[5,4],mem[5,4]
2474 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2475 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2476 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2477 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm1[1],zero,zero
2478 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2479 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2480 ; AVX1-ONLY-NEXT: # xmm15 = xmm15[0],mem[0],xmm15[1],mem[1]
2481 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2482 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2483 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2484 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2485 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2486 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[0],mem[0],ymm0[1],mem[1],ymm0[4],mem[4],ymm0[5],mem[5]
2487 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2488 ; AVX1-ONLY-NEXT: vshufps $17, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2489 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[1,0],mem[1,0],ymm1[5,4],mem[5,4]
2490 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2491 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2492 ; AVX1-ONLY-NEXT: vinsertps $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2493 ; AVX1-ONLY-NEXT: # xmm1 = mem[0],xmm1[1],zero,zero
2494 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2495 ; AVX1-ONLY-NEXT: vunpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2496 ; AVX1-ONLY-NEXT: # xmm15 = xmm15[0],mem[0],xmm15[1],mem[1]
2497 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2498 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2499 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2500 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm10[1],ymm2[3],ymm10[3]
2501 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
2502 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm10[2],ymm14[2],ymm10[3],ymm14[3],ymm10[6],ymm14[6],ymm10[7],ymm14[7]
2503 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2504 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm12[2],xmm4[2],xmm12[3],xmm4[3]
2505 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm15 = zero,zero,xmm3[2],xmm7[2]
2506 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2507 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2508 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2509 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
2510 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm7[1],ymm8[1],ymm7[3],ymm8[3]
2511 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm5[2],ymm9[2],ymm5[3],ymm9[3],ymm5[6],ymm9[6],ymm5[7],ymm9[7]
2512 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2513 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2514 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm14[2],xmm13[2],xmm14[3],xmm13[3]
2515 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm15 = zero,zero,xmm6[2],xmm11[2]
2516 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2517 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2518 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2519 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
2520 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
2521 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm4[1],ymm8[1],ymm4[3],ymm8[3]
2522 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload
2523 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2524 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm11[2],ymm5[2],ymm11[3],ymm5[3],ymm11[6],ymm5[6],ymm11[7],ymm5[7]
2525 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2526 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
2527 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
2528 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm13[2],xmm12[2],xmm13[3],xmm12[3]
2529 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2530 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2531 ; AVX1-ONLY-NEXT: vinsertps {{.*#+}} xmm15 = zero,zero,xmm2[2],xmm3[2]
2532 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2533 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2534 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2535 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload
2536 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
2537 ; AVX1-ONLY-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm6[1],ymm9[1],ymm6[3],ymm9[3]
2538 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2539 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2540 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[2],mem[2],ymm1[3],mem[3],ymm1[6],mem[6],ymm1[7],mem[7]
2541 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2542 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2543 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2544 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2545 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2546 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2547 ; AVX1-ONLY-NEXT: # xmm15 = zero,zero,xmm15[2],mem[0]
2548 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2549 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2550 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2551 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2552 ; AVX1-ONLY-NEXT: vunpckhpd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2553 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[1],mem[1],ymm0[3],mem[3]
2554 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2555 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2556 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[2],mem[2],ymm1[3],mem[3],ymm1[6],mem[6],ymm1[7],mem[7]
2557 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2558 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2559 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2560 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2561 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2562 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2563 ; AVX1-ONLY-NEXT: # xmm15 = zero,zero,xmm15[2],mem[0]
2564 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2565 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2566 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2567 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2568 ; AVX1-ONLY-NEXT: vunpckhpd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2569 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[1],mem[1],ymm0[3],mem[3]
2570 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2571 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2572 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[2],mem[2],ymm1[3],mem[3],ymm1[6],mem[6],ymm1[7],mem[7]
2573 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2574 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2575 ; AVX1-ONLY-NEXT: vunpckhps (%rsp), %xmm1, %xmm1 # 16-byte Folded Reload
2576 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2577 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2578 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2579 ; AVX1-ONLY-NEXT: # xmm15 = zero,zero,xmm15[2],mem[0]
2580 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2581 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2582 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2583 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2584 ; AVX1-ONLY-NEXT: vunpckhpd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2585 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[1],mem[1],ymm0[3],mem[3]
2586 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2587 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2588 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[2],mem[2],ymm1[3],mem[3],ymm1[6],mem[6],ymm1[7],mem[7]
2589 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2590 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2591 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2592 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2593 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2594 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2595 ; AVX1-ONLY-NEXT: # xmm15 = zero,zero,xmm15[2],mem[0]
2596 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2597 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2598 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2599 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2600 ; AVX1-ONLY-NEXT: vunpckhpd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2601 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[1],mem[1],ymm0[3],mem[3]
2602 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2603 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2604 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[2],mem[2],ymm1[3],mem[3],ymm1[6],mem[6],ymm1[7],mem[7]
2605 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,0],ymm1[4,5],ymm0[6,4]
2606 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2607 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2608 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2609 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2610 ; AVX1-ONLY-NEXT: vinsertps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm15 # 16-byte Folded Reload
2611 ; AVX1-ONLY-NEXT: # xmm15 = zero,zero,xmm15[2],mem[0]
2612 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm15[2,3]
2613 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2614 ; AVX1-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2615 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2616 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
2617 ; AVX1-ONLY-NEXT: # ymm0 = ymm0[2],mem[2],ymm0[3],mem[3],ymm0[6],mem[6],ymm0[7],mem[7]
2618 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2619 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm1[3,0],ymm10[3,0],ymm1[7,4],ymm10[7,4]
2620 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
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), %xmm10 # 16-byte Reload
2625 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm10, %xmm15 # 16-byte Folded Reload
2626 ; AVX1-ONLY-NEXT: # xmm15 = xmm10[3,0],mem[3,0]
2627 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm15[2,0],xmm1[2,3]
2628 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm10 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2629 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2630 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm7[2],ymm0[3],ymm7[3],ymm0[6],ymm7[6],ymm0[7],ymm7[7]
2631 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2632 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload
2633 ; AVX1-ONLY-NEXT: # ymm1 = ymm1[3,0],mem[3,0],ymm1[7,4],mem[7,4]
2634 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2635 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2636 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
2637 ; AVX1-ONLY-NEXT: # xmm1 = xmm1[2],mem[2],xmm1[3],mem[3]
2638 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
2639 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm15 = xmm7[3,0],xmm14[3,0]
2640 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm15[2,0],xmm1[2,3]
2641 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm15 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2642 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm0 = ymm8[2],ymm4[2],ymm8[3],ymm4[3],ymm8[6],ymm4[6],ymm8[7],ymm4[7]
2643 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm5[3,0],ymm11[3,0],ymm5[7,4],ymm11[7,4]
2644 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm0 = ymm1[2,0],ymm0[2,3],ymm1[6,4],ymm0[6,7]
2645 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} xmm1 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]
2646 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm14 = xmm12[3,0],xmm13[3,0]
2647 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm1 = xmm14[2,0],xmm1[2,3]
2648 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2649 ; AVX1-ONLY-NEXT: vunpckhps {{.*#+}} ymm1 = ymm9[2],ymm6[2],ymm9[3],ymm6[3],ymm9[6],ymm6[6],ymm9[7],ymm6[7]
2650 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
2651 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm12 # 32-byte Folded Reload
2652 ; AVX1-ONLY-NEXT: # ymm12 = ymm2[3,0],mem[3,0],ymm2[7,4],mem[7,4]
2653 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm1 = ymm12[2,0],ymm1[2,3],ymm12[6,4],ymm1[6,7]
2654 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2655 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm12 # 16-byte Folded Reload
2656 ; AVX1-ONLY-NEXT: # xmm12 = xmm2[2],mem[2],xmm2[3],mem[3]
2657 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2658 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm13 # 16-byte Folded Reload
2659 ; AVX1-ONLY-NEXT: # xmm13 = xmm2[3,0],mem[3,0]
2660 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm12 = xmm13[2,0],xmm12[2,3]
2661 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm12[0,1,2,3],ymm1[4,5,6,7]
2662 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
2663 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm6 # 32-byte Folded Reload
2664 ; AVX1-ONLY-NEXT: # ymm6 = ymm2[2],mem[2],ymm2[3],mem[3],ymm2[6],mem[6],ymm2[7],mem[7]
2665 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
2666 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm9 # 32-byte Folded Reload
2667 ; AVX1-ONLY-NEXT: # ymm9 = ymm2[3,0],mem[3,0],ymm2[7,4],mem[7,4]
2668 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm6 = ymm9[2,0],ymm6[2,3],ymm9[6,4],ymm6[6,7]
2669 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2670 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm9 # 16-byte Folded Reload
2671 ; AVX1-ONLY-NEXT: # xmm9 = xmm2[2],mem[2],xmm2[3],mem[3]
2672 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2673 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm12 # 16-byte Folded Reload
2674 ; AVX1-ONLY-NEXT: # xmm12 = xmm2[3,0],mem[3,0]
2675 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm9 = xmm12[2,0],xmm9[2,3]
2676 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1,2,3],ymm6[4,5,6,7]
2677 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
2678 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm4 # 32-byte Folded Reload
2679 ; AVX1-ONLY-NEXT: # ymm4 = ymm2[2],mem[2],ymm2[3],mem[3],ymm2[6],mem[6],ymm2[7],mem[7]
2680 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
2681 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm8 # 32-byte Folded Reload
2682 ; AVX1-ONLY-NEXT: # ymm8 = ymm2[3,0],mem[3,0],ymm2[7,4],mem[7,4]
2683 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm4 = ymm8[2,0],ymm4[2,3],ymm8[6,4],ymm4[6,7]
2684 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2685 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm8 # 16-byte Folded Reload
2686 ; AVX1-ONLY-NEXT: # xmm8 = xmm2[2],mem[2],xmm2[3],mem[3]
2687 ; AVX1-ONLY-NEXT: vmovaps (%rsp), %xmm2 # 16-byte Reload
2688 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm9 # 16-byte Folded Reload
2689 ; AVX1-ONLY-NEXT: # xmm9 = xmm2[3,0],mem[3,0]
2690 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm8 = xmm9[2,0],xmm8[2,3]
2691 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm8[0,1,2,3],ymm4[4,5,6,7]
2692 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
2693 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm2 # 32-byte Folded Reload
2694 ; AVX1-ONLY-NEXT: # ymm2 = ymm2[2],mem[2],ymm2[3],mem[3],ymm2[6],mem[6],ymm2[7],mem[7]
2695 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
2696 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm7 # 32-byte Folded Reload
2697 ; AVX1-ONLY-NEXT: # ymm7 = ymm3[3,0],mem[3,0],ymm3[7,4],mem[7,4]
2698 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm2 = ymm7[2,0],ymm2[2,3],ymm7[6,4],ymm2[6,7]
2699 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2700 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm7 # 16-byte Folded Reload
2701 ; AVX1-ONLY-NEXT: # xmm7 = xmm3[2],mem[2],xmm3[3],mem[3]
2702 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2703 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm8 # 16-byte Folded Reload
2704 ; AVX1-ONLY-NEXT: # xmm8 = xmm3[3,0],mem[3,0]
2705 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm7 = xmm8[2,0],xmm7[2,3]
2706 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm7[0,1,2,3],ymm2[4,5,6,7]
2707 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
2708 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm3 # 32-byte Folded Reload
2709 ; AVX1-ONLY-NEXT: # ymm3 = ymm3[2],mem[2],ymm3[3],mem[3],ymm3[6],mem[6],ymm3[7],mem[7]
2710 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2711 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5, %ymm5 # 32-byte Folded Reload
2712 ; AVX1-ONLY-NEXT: # ymm5 = ymm5[3,0],mem[3,0],ymm5[7,4],mem[7,4]
2713 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} ymm3 = ymm5[2,0],ymm3[2,3],ymm5[6,4],ymm3[6,7]
2714 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
2715 ; AVX1-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload
2716 ; AVX1-ONLY-NEXT: # xmm5 = xmm5[2],mem[2],xmm5[3],mem[3]
2717 ; AVX1-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
2718 ; AVX1-ONLY-NEXT: vshufps $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm7, %xmm7 # 16-byte Folded Reload
2719 ; AVX1-ONLY-NEXT: # xmm7 = xmm7[3,0],mem[3,0]
2720 ; AVX1-ONLY-NEXT: vshufps {{.*#+}} xmm5 = xmm7[2,0],xmm5[2,3]
2721 ; AVX1-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm5[0,1,2,3],ymm3[4,5,6,7]
2722 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2723 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 192(%rsi)
2724 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2725 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 128(%rsi)
2726 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2727 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 64(%rsi)
2728 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2729 ; AVX1-ONLY-NEXT: vmovaps %ymm5, (%rsi)
2730 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2731 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 224(%rsi)
2732 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2733 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 160(%rsi)
2734 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2735 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 96(%rsi)
2736 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2737 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 32(%rsi)
2738 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2739 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 192(%rdx)
2740 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2741 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 128(%rdx)
2742 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2743 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 64(%rdx)
2744 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2745 ; AVX1-ONLY-NEXT: vmovaps %ymm5, (%rdx)
2746 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2747 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 224(%rdx)
2748 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2749 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 160(%rdx)
2750 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2751 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 96(%rdx)
2752 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2753 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 32(%rdx)
2754 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2755 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 192(%rcx)
2756 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2757 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 128(%rcx)
2758 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2759 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 64(%rcx)
2760 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2761 ; AVX1-ONLY-NEXT: vmovaps %ymm5, (%rcx)
2762 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2763 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 224(%rcx)
2764 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2765 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 160(%rcx)
2766 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2767 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 96(%rcx)
2768 ; AVX1-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
2769 ; AVX1-ONLY-NEXT: vmovaps %ymm5, 32(%rcx)
2770 ; AVX1-ONLY-NEXT: vmovaps %ymm2, 192(%r8)
2771 ; AVX1-ONLY-NEXT: vmovaps %ymm4, 128(%r8)
2772 ; AVX1-ONLY-NEXT: vmovaps %ymm6, 64(%r8)
2773 ; AVX1-ONLY-NEXT: vmovaps %ymm3, (%r8)
2774 ; AVX1-ONLY-NEXT: vmovaps %ymm1, 224(%r8)
2775 ; AVX1-ONLY-NEXT: vmovaps %ymm0, 160(%r8)
2776 ; AVX1-ONLY-NEXT: vmovaps %ymm15, 96(%r8)
2777 ; AVX1-ONLY-NEXT: vmovaps %ymm10, 32(%r8)
2778 ; AVX1-ONLY-NEXT: addq $2184, %rsp # imm = 0x888
2779 ; AVX1-ONLY-NEXT: vzeroupper
2780 ; AVX1-ONLY-NEXT: retq
2782 ; AVX2-ONLY-LABEL: load_i32_stride4_vf64:
2783 ; AVX2-ONLY: # %bb.0:
2784 ; AVX2-ONLY-NEXT: subq $1944, %rsp # imm = 0x798
2785 ; AVX2-ONLY-NEXT: vmovaps 704(%rdi), %ymm7
2786 ; AVX2-ONLY-NEXT: vmovaps 416(%rdi), %ymm8
2787 ; AVX2-ONLY-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2788 ; AVX2-ONLY-NEXT: vmovaps 448(%rdi), %ymm4
2789 ; AVX2-ONLY-NEXT: vmovaps 480(%rdi), %ymm15
2790 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %ymm9
2791 ; AVX2-ONLY-NEXT: vmovups %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2792 ; AVX2-ONLY-NEXT: vmovaps 192(%rdi), %ymm10
2793 ; AVX2-ONLY-NEXT: vmovaps 224(%rdi), %ymm14
2794 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm2 = [0,4,0,4,0,4,0,4]
2795 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm2, %ymm0
2796 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm2, %ymm1
2797 ; AVX2-ONLY-NEXT: vmovups %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2798 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2799 ; AVX2-ONLY-NEXT: vmovaps 144(%rdi), %xmm3
2800 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2801 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %xmm1
2802 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2803 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
2804 ; AVX2-ONLY-NEXT: vpermps %ymm9, %ymm2, %ymm3
2805 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3]
2806 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2807 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2808 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm2, %ymm0
2809 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm1
2810 ; AVX2-ONLY-NEXT: vmovaps %ymm4, %ymm9
2811 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2812 ; AVX2-ONLY-NEXT: vmovaps 400(%rdi), %xmm3
2813 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2814 ; AVX2-ONLY-NEXT: vmovaps 384(%rdi), %xmm1
2815 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2816 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
2817 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm2, %ymm3
2818 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3]
2819 ; AVX2-ONLY-NEXT: vmovaps 736(%rdi), %ymm3
2820 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2821 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2822 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm2, %ymm0
2823 ; AVX2-ONLY-NEXT: vmovaps %ymm3, %ymm11
2824 ; AVX2-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2825 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm2, %ymm1
2826 ; AVX2-ONLY-NEXT: vmovaps %ymm7, %ymm13
2827 ; AVX2-ONLY-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2828 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2829 ; AVX2-ONLY-NEXT: vmovaps 672(%rdi), %ymm4
2830 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2831 ; AVX2-ONLY-NEXT: vmovaps 656(%rdi), %xmm3
2832 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2833 ; AVX2-ONLY-NEXT: vmovaps 640(%rdi), %xmm1
2834 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2835 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
2836 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm3
2837 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3]
2838 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2839 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2840 ; AVX2-ONLY-NEXT: vmovaps 960(%rdi), %ymm3
2841 ; AVX2-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2842 ; AVX2-ONLY-NEXT: vmovaps 992(%rdi), %ymm1
2843 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm2, %ymm0
2844 ; AVX2-ONLY-NEXT: vmovaps %ymm1, %ymm8
2845 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm2, %ymm1
2846 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2847 ; AVX2-ONLY-NEXT: vmovaps 928(%rdi), %ymm4
2848 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2849 ; AVX2-ONLY-NEXT: vmovaps 912(%rdi), %xmm3
2850 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2851 ; AVX2-ONLY-NEXT: vmovaps 896(%rdi), %xmm1
2852 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2853 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
2854 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm3
2855 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3]
2856 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2857 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2858 ; AVX2-ONLY-NEXT: vmovaps 320(%rdi), %ymm3
2859 ; AVX2-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2860 ; AVX2-ONLY-NEXT: vmovaps 352(%rdi), %ymm0
2861 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2862 ; AVX2-ONLY-NEXT: vpermps %ymm0, %ymm2, %ymm0
2863 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm2, %ymm1
2864 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2865 ; AVX2-ONLY-NEXT: vmovaps 288(%rdi), %ymm4
2866 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2867 ; AVX2-ONLY-NEXT: vmovaps 272(%rdi), %xmm3
2868 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2869 ; AVX2-ONLY-NEXT: vmovaps 256(%rdi), %xmm1
2870 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2871 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
2872 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm3
2873 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3]
2874 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2875 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2876 ; AVX2-ONLY-NEXT: vmovaps 576(%rdi), %ymm3
2877 ; AVX2-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2878 ; AVX2-ONLY-NEXT: vmovaps 608(%rdi), %ymm0
2879 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2880 ; AVX2-ONLY-NEXT: vpermps %ymm0, %ymm2, %ymm0
2881 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm2, %ymm1
2882 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2883 ; AVX2-ONLY-NEXT: vmovaps 544(%rdi), %ymm4
2884 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2885 ; AVX2-ONLY-NEXT: vmovaps 528(%rdi), %xmm3
2886 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2887 ; AVX2-ONLY-NEXT: vmovaps 512(%rdi), %xmm1
2888 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2889 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
2890 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm3
2891 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3]
2892 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2893 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2894 ; AVX2-ONLY-NEXT: vmovaps 832(%rdi), %ymm3
2895 ; AVX2-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2896 ; AVX2-ONLY-NEXT: vmovaps 864(%rdi), %ymm0
2897 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2898 ; AVX2-ONLY-NEXT: vpermps %ymm0, %ymm2, %ymm0
2899 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm2, %ymm1
2900 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]
2901 ; AVX2-ONLY-NEXT: vmovaps 800(%rdi), %ymm4
2902 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2903 ; AVX2-ONLY-NEXT: vmovaps 784(%rdi), %xmm3
2904 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2905 ; AVX2-ONLY-NEXT: vmovaps 768(%rdi), %xmm1
2906 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2907 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
2908 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm3
2909 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3]
2910 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
2911 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2912 ; AVX2-ONLY-NEXT: vmovaps 64(%rdi), %ymm1
2913 ; AVX2-ONLY-NEXT: vmovaps 96(%rdi), %ymm3
2914 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm2, %ymm0
2915 ; AVX2-ONLY-NEXT: vmovaps %ymm3, %ymm7
2916 ; AVX2-ONLY-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2917 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm2, %ymm4
2918 ; AVX2-ONLY-NEXT: vmovaps %ymm1, %ymm3
2919 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2920 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3,4,5],ymm0[6,7]
2921 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %ymm1
2922 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2923 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm2, %ymm2
2924 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %xmm1
2925 ; AVX2-ONLY-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2926 ; AVX2-ONLY-NEXT: vmovaps 16(%rdi), %xmm4
2927 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2928 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm4 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
2929 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm2 = xmm4[0,1],xmm2[2,3]
2930 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]
2931 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2932 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm2 = [1,5,1,5,1,5,1,5]
2933 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm2, %ymm0
2934 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm2, %ymm4
2935 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3,4,5],ymm0[6,7]
2936 ; AVX2-ONLY-NEXT: vmovaps 128(%rdi), %ymm1
2937 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2938 ; AVX2-ONLY-NEXT: vmovaps 176(%rdi), %xmm5
2939 ; AVX2-ONLY-NEXT: vmovaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2940 ; AVX2-ONLY-NEXT: vmovaps 160(%rdi), %xmm4
2941 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2942 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
2943 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm2, %ymm5
2944 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm5[0,1],xmm4[2,3]
2945 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
2946 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2947 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm2, %ymm0
2948 ; AVX2-ONLY-NEXT: vmovups %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2949 ; AVX2-ONLY-NEXT: vpermps %ymm9, %ymm2, %ymm4
2950 ; AVX2-ONLY-NEXT: vmovaps %ymm9, %ymm10
2951 ; AVX2-ONLY-NEXT: vmovups %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2952 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3,4,5],ymm0[6,7]
2953 ; AVX2-ONLY-NEXT: vmovaps 384(%rdi), %ymm1
2954 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2955 ; AVX2-ONLY-NEXT: vmovaps 432(%rdi), %xmm5
2956 ; AVX2-ONLY-NEXT: vmovaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2957 ; AVX2-ONLY-NEXT: vmovaps 416(%rdi), %xmm4
2958 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2959 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
2960 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm2, %ymm5
2961 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm5[0,1],xmm4[2,3]
2962 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
2963 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2964 ; AVX2-ONLY-NEXT: vpermps %ymm11, %ymm2, %ymm0
2965 ; AVX2-ONLY-NEXT: vpermps %ymm13, %ymm2, %ymm4
2966 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3,4,5],ymm0[6,7]
2967 ; AVX2-ONLY-NEXT: vmovaps 640(%rdi), %ymm1
2968 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2969 ; AVX2-ONLY-NEXT: vmovaps 688(%rdi), %xmm5
2970 ; AVX2-ONLY-NEXT: vmovaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2971 ; AVX2-ONLY-NEXT: vmovaps 672(%rdi), %xmm4
2972 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2973 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
2974 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm2, %ymm5
2975 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm5[0,1],xmm4[2,3]
2976 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
2977 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2978 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm2, %ymm0
2979 ; AVX2-ONLY-NEXT: vmovaps %ymm8, %ymm11
2980 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
2981 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm2, %ymm4
2982 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3,4,5],ymm0[6,7]
2983 ; AVX2-ONLY-NEXT: vmovaps 896(%rdi), %ymm1
2984 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2985 ; AVX2-ONLY-NEXT: vmovaps 944(%rdi), %xmm5
2986 ; AVX2-ONLY-NEXT: vmovaps %xmm5, (%rsp) # 16-byte Spill
2987 ; AVX2-ONLY-NEXT: vmovaps 928(%rdi), %xmm4
2988 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2989 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
2990 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm2, %ymm5
2991 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm5[0,1],xmm4[2,3]
2992 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
2993 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2994 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm2, %ymm0
2995 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm2, %ymm4
2996 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3,4,5],ymm0[6,7]
2997 ; AVX2-ONLY-NEXT: vmovaps (%rdi), %ymm1
2998 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2999 ; AVX2-ONLY-NEXT: vmovaps 32(%rdi), %xmm3
3000 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3001 ; AVX2-ONLY-NEXT: vmovaps 48(%rdi), %xmm4
3002 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3003 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm4 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
3004 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm2, %ymm5
3005 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm5[0,1],xmm4[2,3]
3006 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
3007 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3008 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
3009 ; AVX2-ONLY-NEXT: vpermps %ymm6, %ymm2, %ymm0
3010 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
3011 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm2, %ymm4
3012 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3,4,5],ymm0[6,7]
3013 ; AVX2-ONLY-NEXT: vmovaps 256(%rdi), %ymm1
3014 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3015 ; AVX2-ONLY-NEXT: vmovaps 304(%rdi), %xmm3
3016 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3017 ; AVX2-ONLY-NEXT: vmovaps 288(%rdi), %xmm4
3018 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3019 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]
3020 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm2, %ymm5
3021 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm5[0,1],xmm4[2,3]
3022 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
3023 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3024 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload
3025 ; AVX2-ONLY-NEXT: vpermps %ymm13, %ymm2, %ymm0
3026 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload
3027 ; AVX2-ONLY-NEXT: vpermps %ymm12, %ymm2, %ymm4
3028 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3,4,5],ymm0[6,7]
3029 ; AVX2-ONLY-NEXT: vmovaps 512(%rdi), %ymm1
3030 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3031 ; AVX2-ONLY-NEXT: vmovaps 560(%rdi), %xmm3
3032 ; AVX2-ONLY-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3033 ; AVX2-ONLY-NEXT: vmovaps 544(%rdi), %xmm4
3034 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3035 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]
3036 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm2, %ymm5
3037 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm5[0,1],xmm4[2,3]
3038 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
3039 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3040 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
3041 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm2, %ymm0
3042 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3043 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm2, %ymm4
3044 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3,4,5],ymm0[6,7]
3045 ; AVX2-ONLY-NEXT: vmovaps 768(%rdi), %ymm4
3046 ; AVX2-ONLY-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3047 ; AVX2-ONLY-NEXT: vpermps %ymm4, %ymm2, %ymm2
3048 ; AVX2-ONLY-NEXT: vmovaps 816(%rdi), %xmm5
3049 ; AVX2-ONLY-NEXT: vmovaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3050 ; AVX2-ONLY-NEXT: vmovaps 800(%rdi), %xmm4
3051 ; AVX2-ONLY-NEXT: vmovaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3052 ; AVX2-ONLY-NEXT: vunpcklps {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
3053 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0,1],xmm4[2,3]
3054 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]
3055 ; AVX2-ONLY-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3056 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [2,6,2,6,2,6,2,6]
3057 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm0, %ymm2
3058 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3059 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm4
3060 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3,4,5],ymm2[6,7]
3061 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3062 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
3063 ; AVX2-ONLY-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
3064 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm9 # 32-byte Folded Reload
3065 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm4[0,1],xmm9[2,3]
3066 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
3067 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3068 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm2
3069 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm0, %ymm4
3070 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3,4,5],ymm2[6,7]
3071 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3072 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
3073 ; AVX2-ONLY-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
3074 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm9 # 32-byte Folded Reload
3075 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm4[0,1],xmm9[2,3]
3076 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
3077 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3078 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Reload
3079 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm2
3080 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
3081 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm0, %ymm4
3082 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3,4,5],ymm2[6,7]
3083 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3084 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
3085 ; AVX2-ONLY-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
3086 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm9 # 32-byte Folded Reload
3087 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm4[0,1],xmm9[2,3]
3088 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
3089 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3090 ; AVX2-ONLY-NEXT: vpermps %ymm11, %ymm0, %ymm2
3091 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm0, %ymm4
3092 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3,4,5],ymm2[6,7]
3093 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3094 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
3095 ; AVX2-ONLY-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
3096 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm9 # 32-byte Folded Reload
3097 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm4[0,1],xmm9[2,3]
3098 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
3099 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3100 ; AVX2-ONLY-NEXT: vpermps %ymm6, %ymm0, %ymm2
3101 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm0, %ymm4
3102 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3,4,5],ymm2[6,7]
3103 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3104 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
3105 ; AVX2-ONLY-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
3106 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm9 # 32-byte Folded Reload
3107 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm4[0,1],xmm9[2,3]
3108 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
3109 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3110 ; AVX2-ONLY-NEXT: vpermps %ymm13, %ymm0, %ymm2
3111 ; AVX2-ONLY-NEXT: vpermps %ymm12, %ymm0, %ymm4
3112 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3,4,5],ymm2[6,7]
3113 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3114 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
3115 ; AVX2-ONLY-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
3116 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm9 # 32-byte Folded Reload
3117 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm4[0,1],xmm9[2,3]
3118 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
3119 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3120 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm0, %ymm2
3121 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm0, %ymm4
3122 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3,4,5],ymm2[6,7]
3123 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
3124 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm4 # 16-byte Folded Reload
3125 ; AVX2-ONLY-NEXT: # xmm4 = xmm1[2],mem[2],xmm1[3],mem[3]
3126 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm9 # 32-byte Folded Reload
3127 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm4[0,1],xmm9[2,3]
3128 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm2[4,5,6,7]
3129 ; AVX2-ONLY-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3130 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3131 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm0, %ymm2
3132 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
3133 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm0, %ymm4
3134 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3,4,5],ymm2[6,7]
3135 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
3136 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3137 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
3138 ; AVX2-ONLY-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
3139 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm4[0,1],xmm0[2,3]
3140 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm9 = ymm0[0,1,2,3],ymm2[4,5,6,7]
3141 ; AVX2-ONLY-NEXT: vbroadcastsd {{.*#+}} ymm0 = [3,7,3,7,3,7,3,7]
3142 ; AVX2-ONLY-NEXT: vpermps %ymm14, %ymm0, %ymm2
3143 ; AVX2-ONLY-NEXT: vpermps %ymm5, %ymm0, %ymm4
3144 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3,4,5],ymm2[6,7]
3145 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3146 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
3147 ; AVX2-ONLY-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
3148 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm14 # 32-byte Folded Reload
3149 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm14[0,1],xmm4[2,3]
3150 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
3151 ; AVX2-ONLY-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3152 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 32-byte Folded Reload
3153 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm4 # 32-byte Folded Reload
3154 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3,4,5],ymm2[6,7]
3155 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3156 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
3157 ; AVX2-ONLY-NEXT: # xmm4 = xmm4[2],mem[2],xmm4[3],mem[3]
3158 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm14 # 32-byte Folded Reload
3159 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm4 = xmm14[0,1],xmm4[2,3]
3160 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm2[4,5,6,7]
3161 ; AVX2-ONLY-NEXT: vpermps %ymm15, %ymm0, %ymm2
3162 ; AVX2-ONLY-NEXT: vpermps %ymm10, %ymm0, %ymm14
3163 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm14[0,1,2,3,4,5],ymm2[6,7]
3164 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3165 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm14 # 16-byte Folded Reload
3166 ; AVX2-ONLY-NEXT: # xmm14 = xmm5[2],mem[2],xmm5[3],mem[3]
3167 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm15 # 32-byte Folded Reload
3168 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm14 = xmm15[0,1],xmm14[2,3]
3169 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm2 = ymm14[0,1,2,3],ymm2[4,5,6,7]
3170 ; AVX2-ONLY-NEXT: vpermps %ymm11, %ymm0, %ymm11
3171 ; AVX2-ONLY-NEXT: vpermps %ymm8, %ymm0, %ymm14
3172 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm11 = ymm14[0,1,2,3,4,5],ymm11[6,7]
3173 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3174 ; AVX2-ONLY-NEXT: vunpckhps (%rsp), %xmm5, %xmm14 # 16-byte Folded Reload
3175 ; AVX2-ONLY-NEXT: # xmm14 = xmm5[2],mem[2],xmm5[3],mem[3]
3176 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm15 # 32-byte Folded Reload
3177 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm14 = xmm15[0,1],xmm14[2,3]
3178 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm11 = ymm14[0,1,2,3],ymm11[4,5,6,7]
3179 ; AVX2-ONLY-NEXT: vpermps %ymm1, %ymm0, %ymm1
3180 ; AVX2-ONLY-NEXT: vpermps %ymm3, %ymm0, %ymm3
3181 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm3[0,1,2,3,4,5],ymm1[6,7]
3182 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3183 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
3184 ; AVX2-ONLY-NEXT: # xmm3 = xmm3[2],mem[2],xmm3[3],mem[3]
3185 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm14 # 32-byte Folded Reload
3186 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm3 = xmm14[0,1],xmm3[2,3]
3187 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]
3188 ; AVX2-ONLY-NEXT: vpermps %ymm6, %ymm0, %ymm3
3189 ; AVX2-ONLY-NEXT: vpermps %ymm7, %ymm0, %ymm14
3190 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm14[0,1,2,3,4,5],ymm3[6,7]
3191 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3192 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm14 # 16-byte Folded Reload
3193 ; AVX2-ONLY-NEXT: # xmm14 = xmm5[2],mem[2],xmm5[3],mem[3]
3194 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm15 # 32-byte Folded Reload
3195 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm14 = xmm15[0,1],xmm14[2,3]
3196 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm3 = ymm14[0,1,2,3],ymm3[4,5,6,7]
3197 ; AVX2-ONLY-NEXT: vpermps %ymm13, %ymm0, %ymm10
3198 ; AVX2-ONLY-NEXT: vpermps %ymm12, %ymm0, %ymm14
3199 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm10 = ymm14[0,1,2,3,4,5],ymm10[6,7]
3200 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3201 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm13 # 16-byte Folded Reload
3202 ; AVX2-ONLY-NEXT: # xmm13 = xmm5[2],mem[2],xmm5[3],mem[3]
3203 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm14 # 32-byte Folded Reload
3204 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm13 = xmm14[0,1],xmm13[2,3]
3205 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm10 = ymm13[0,1,2,3],ymm10[4,5,6,7]
3206 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm7 # 32-byte Folded Reload
3207 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm8 # 32-byte Folded Reload
3208 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm7 = ymm8[0,1,2,3,4,5],ymm7[6,7]
3209 ; AVX2-ONLY-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3210 ; AVX2-ONLY-NEXT: vunpckhps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload
3211 ; AVX2-ONLY-NEXT: # xmm5 = xmm5[2],mem[2],xmm5[3],mem[3]
3212 ; AVX2-ONLY-NEXT: vpermps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
3213 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} xmm0 = xmm0[0,1],xmm5[2,3]
3214 ; AVX2-ONLY-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm7[4,5,6,7]
3215 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3216 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 192(%rsi)
3217 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3218 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 128(%rsi)
3219 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3220 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 64(%rsi)
3221 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3222 ; AVX2-ONLY-NEXT: vmovaps %ymm5, (%rsi)
3223 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3224 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 224(%rsi)
3225 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3226 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 160(%rsi)
3227 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3228 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 96(%rsi)
3229 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3230 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 32(%rsi)
3231 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3232 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 192(%rdx)
3233 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3234 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 128(%rdx)
3235 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3236 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 64(%rdx)
3237 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3238 ; AVX2-ONLY-NEXT: vmovaps %ymm5, (%rdx)
3239 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3240 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 224(%rdx)
3241 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3242 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 160(%rdx)
3243 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3244 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 96(%rdx)
3245 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3246 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 32(%rdx)
3247 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3248 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 192(%rcx)
3249 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3250 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 128(%rcx)
3251 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3252 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 64(%rcx)
3253 ; AVX2-ONLY-NEXT: vmovaps %ymm9, (%rcx)
3254 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3255 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 224(%rcx)
3256 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3257 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 160(%rcx)
3258 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3259 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 96(%rcx)
3260 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3261 ; AVX2-ONLY-NEXT: vmovaps %ymm5, 32(%rcx)
3262 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 192(%r8)
3263 ; AVX2-ONLY-NEXT: vmovaps %ymm10, 128(%r8)
3264 ; AVX2-ONLY-NEXT: vmovaps %ymm3, 64(%r8)
3265 ; AVX2-ONLY-NEXT: vmovaps %ymm1, (%r8)
3266 ; AVX2-ONLY-NEXT: vmovaps %ymm11, 224(%r8)
3267 ; AVX2-ONLY-NEXT: vmovaps %ymm2, 160(%r8)
3268 ; AVX2-ONLY-NEXT: vmovaps %ymm4, 96(%r8)
3269 ; AVX2-ONLY-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3270 ; AVX2-ONLY-NEXT: vmovaps %ymm0, 32(%r8)
3271 ; AVX2-ONLY-NEXT: addq $1944, %rsp # imm = 0x798
3272 ; AVX2-ONLY-NEXT: vzeroupper
3273 ; AVX2-ONLY-NEXT: retq
3275 ; AVX512-LABEL: load_i32_stride4_vf64:
3277 ; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0
3278 ; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1
3279 ; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm2
3280 ; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm3
3281 ; AVX512-NEXT: vmovdqa64 832(%rdi), %zmm4
3282 ; AVX512-NEXT: vmovdqa64 768(%rdi), %zmm5
3283 ; AVX512-NEXT: vmovdqa64 960(%rdi), %zmm10
3284 ; AVX512-NEXT: vmovdqa64 896(%rdi), %zmm7
3285 ; AVX512-NEXT: vmovdqa64 320(%rdi), %zmm14
3286 ; AVX512-NEXT: vmovdqa64 256(%rdi), %zmm15
3287 ; AVX512-NEXT: vmovdqa64 448(%rdi), %zmm17
3288 ; AVX512-NEXT: vmovdqa64 384(%rdi), %zmm16
3289 ; AVX512-NEXT: vmovdqa64 576(%rdi), %zmm8
3290 ; AVX512-NEXT: vmovdqa64 512(%rdi), %zmm9
3291 ; AVX512-NEXT: vmovdqa64 704(%rdi), %zmm12
3292 ; AVX512-NEXT: vmovdqa64 640(%rdi), %zmm11
3293 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm19 = [0,4,8,12,16,20,24,28,0,4,8,12,16,20,24,28]
3294 ; AVX512-NEXT: # zmm19 = mem[0,1,2,3,0,1,2,3]
3295 ; AVX512-NEXT: vmovdqa64 %zmm11, %zmm6
3296 ; AVX512-NEXT: vpermt2d %zmm12, %zmm19, %zmm6
3297 ; AVX512-NEXT: vmovdqa64 %zmm9, %zmm13
3298 ; AVX512-NEXT: vpermt2d %zmm8, %zmm19, %zmm13
3299 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm6 = zmm13[0,1,2,3],zmm6[4,5,6,7]
3300 ; AVX512-NEXT: vmovdqa64 %zmm16, %zmm13
3301 ; AVX512-NEXT: vpermt2d %zmm17, %zmm19, %zmm13
3302 ; AVX512-NEXT: vmovdqa64 %zmm15, %zmm18
3303 ; AVX512-NEXT: vpermt2d %zmm14, %zmm19, %zmm18
3304 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm13 = zmm18[0,1,2,3],zmm13[4,5,6,7]
3305 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm18
3306 ; AVX512-NEXT: vpermt2d %zmm10, %zmm19, %zmm18
3307 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm20
3308 ; AVX512-NEXT: vpermt2d %zmm4, %zmm19, %zmm20
3309 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm18 = zmm20[0,1,2,3],zmm18[4,5,6,7]
3310 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm20
3311 ; AVX512-NEXT: vpermt2d %zmm3, %zmm19, %zmm20
3312 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm19
3313 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm19 = zmm19[0,1,2,3],zmm20[4,5,6,7]
3314 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm21 = [1,5,9,13,17,21,25,29,1,5,9,13,17,21,25,29]
3315 ; AVX512-NEXT: # zmm21 = mem[0,1,2,3,0,1,2,3]
3316 ; AVX512-NEXT: vmovdqa64 %zmm11, %zmm20
3317 ; AVX512-NEXT: vpermt2d %zmm12, %zmm21, %zmm20
3318 ; AVX512-NEXT: vmovdqa64 %zmm9, %zmm22
3319 ; AVX512-NEXT: vpermt2d %zmm8, %zmm21, %zmm22
3320 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm20 = zmm22[0,1,2,3],zmm20[4,5,6,7]
3321 ; AVX512-NEXT: vmovdqa64 %zmm16, %zmm22
3322 ; AVX512-NEXT: vpermt2d %zmm17, %zmm21, %zmm22
3323 ; AVX512-NEXT: vmovdqa64 %zmm15, %zmm23
3324 ; AVX512-NEXT: vpermt2d %zmm14, %zmm21, %zmm23
3325 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm22 = zmm23[0,1,2,3],zmm22[4,5,6,7]
3326 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm23
3327 ; AVX512-NEXT: vpermt2d %zmm10, %zmm21, %zmm23
3328 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm24
3329 ; AVX512-NEXT: vpermt2d %zmm4, %zmm21, %zmm24
3330 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm23 = zmm24[0,1,2,3],zmm23[4,5,6,7]
3331 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm24
3332 ; AVX512-NEXT: vpermt2d %zmm3, %zmm21, %zmm24
3333 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm21
3334 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm21 = zmm21[0,1,2,3],zmm24[4,5,6,7]
3335 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm24 = [2,6,10,14,18,22,26,30,2,6,10,14,18,22,26,30]
3336 ; AVX512-NEXT: # zmm24 = mem[0,1,2,3,0,1,2,3]
3337 ; AVX512-NEXT: vmovdqa64 %zmm11, %zmm25
3338 ; AVX512-NEXT: vpermt2d %zmm12, %zmm24, %zmm25
3339 ; AVX512-NEXT: vmovdqa64 %zmm9, %zmm26
3340 ; AVX512-NEXT: vpermt2d %zmm8, %zmm24, %zmm26
3341 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm25 = zmm26[0,1,2,3],zmm25[4,5,6,7]
3342 ; AVX512-NEXT: vmovdqa64 %zmm16, %zmm26
3343 ; AVX512-NEXT: vpermt2d %zmm17, %zmm24, %zmm26
3344 ; AVX512-NEXT: vmovdqa64 %zmm15, %zmm27
3345 ; AVX512-NEXT: vpermt2d %zmm14, %zmm24, %zmm27
3346 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm26 = zmm27[0,1,2,3],zmm26[4,5,6,7]
3347 ; AVX512-NEXT: vmovdqa64 %zmm7, %zmm27
3348 ; AVX512-NEXT: vpermt2d %zmm10, %zmm24, %zmm27
3349 ; AVX512-NEXT: vmovdqa64 %zmm5, %zmm28
3350 ; AVX512-NEXT: vpermt2d %zmm4, %zmm24, %zmm28
3351 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm27 = zmm28[0,1,2,3],zmm27[4,5,6,7]
3352 ; AVX512-NEXT: vmovdqa64 %zmm2, %zmm28
3353 ; AVX512-NEXT: vpermt2d %zmm3, %zmm24, %zmm28
3354 ; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm24
3355 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm24 = zmm24[0,1,2,3],zmm28[4,5,6,7]
3356 ; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm28 = [3,7,11,15,19,23,27,31,3,7,11,15,19,23,27,31]
3357 ; AVX512-NEXT: # zmm28 = mem[0,1,2,3,0,1,2,3]
3358 ; AVX512-NEXT: vpermt2d %zmm17, %zmm28, %zmm16
3359 ; AVX512-NEXT: vpermt2d %zmm14, %zmm28, %zmm15
3360 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm14 = zmm15[0,1,2,3],zmm16[4,5,6,7]
3361 ; AVX512-NEXT: vpermt2d %zmm10, %zmm28, %zmm7
3362 ; AVX512-NEXT: vpermt2d %zmm4, %zmm28, %zmm5
3363 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm4 = zmm5[0,1,2,3],zmm7[4,5,6,7]
3364 ; AVX512-NEXT: vpermt2d %zmm12, %zmm28, %zmm11
3365 ; AVX512-NEXT: vpermt2d %zmm8, %zmm28, %zmm9
3366 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm9[0,1,2,3],zmm11[4,5,6,7]
3367 ; AVX512-NEXT: vpermt2d %zmm3, %zmm28, %zmm2
3368 ; AVX512-NEXT: vpermt2d %zmm1, %zmm28, %zmm0
3369 ; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3],zmm2[4,5,6,7]
3370 ; AVX512-NEXT: vmovdqa64 %zmm18, 192(%rsi)
3371 ; AVX512-NEXT: vmovdqa64 %zmm19, (%rsi)
3372 ; AVX512-NEXT: vmovdqa64 %zmm13, 64(%rsi)
3373 ; AVX512-NEXT: vmovdqa64 %zmm6, 128(%rsi)
3374 ; AVX512-NEXT: vmovdqa64 %zmm23, 192(%rdx)
3375 ; AVX512-NEXT: vmovdqa64 %zmm21, (%rdx)
3376 ; AVX512-NEXT: vmovdqa64 %zmm22, 64(%rdx)
3377 ; AVX512-NEXT: vmovdqa64 %zmm20, 128(%rdx)
3378 ; AVX512-NEXT: vmovdqa64 %zmm27, 192(%rcx)
3379 ; AVX512-NEXT: vmovdqa64 %zmm24, (%rcx)
3380 ; AVX512-NEXT: vmovdqa64 %zmm26, 64(%rcx)
3381 ; AVX512-NEXT: vmovdqa64 %zmm25, 128(%rcx)
3382 ; AVX512-NEXT: vmovdqa64 %zmm5, 128(%r8)
3383 ; AVX512-NEXT: vmovdqa64 %zmm4, 192(%r8)
3384 ; AVX512-NEXT: vmovdqa64 %zmm0, (%r8)
3385 ; AVX512-NEXT: vmovdqa64 %zmm14, 64(%r8)
3386 ; AVX512-NEXT: vzeroupper
3388 %wide.vec = load <256 x i32>, ptr %in.vec, align 64
3389 %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>
3390 %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>
3391 %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>
3392 %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>
3393 store <64 x i32> %strided.vec0, ptr %out.vec0, align 64
3394 store <64 x i32> %strided.vec1, ptr %out.vec1, align 64
3395 store <64 x i32> %strided.vec2, ptr %out.vec2, align 64
3396 store <64 x i32> %strided.vec3, ptr %out.vec3, align 64
3399 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
3404 ; AVX2-FAST-PERLANE: {{.*}}
3407 ; AVX512BW-FAST: {{.*}}
3408 ; AVX512BW-ONLY: {{.*}}
3409 ; AVX512BW-ONLY-FAST: {{.*}}
3410 ; AVX512BW-ONLY-SLOW: {{.*}}
3411 ; AVX512BW-SLOW: {{.*}}
3412 ; AVX512DQ-FAST: {{.*}}
3413 ; AVX512DQ-ONLY: {{.*}}
3414 ; AVX512DQ-SLOW: {{.*}}
3415 ; AVX512DQBW-FAST: {{.*}}
3416 ; AVX512DQBW-ONLY: {{.*}}
3417 ; AVX512DQBW-SLOW: {{.*}}
3419 ; AVX512F-FAST: {{.*}}
3420 ; AVX512F-ONLY: {{.*}}
3421 ; AVX512F-ONLY-FAST: {{.*}}
3422 ; AVX512F-ONLY-SLOW: {{.*}}
3423 ; AVX512F-SLOW: {{.*}}
3426 ; FALLBACK10: {{.*}}
3427 ; FALLBACK11: {{.*}}
3428 ; FALLBACK12: {{.*}}