5448 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s --check-prefixes=SSE3; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx | FileCheck %s --check-prefixes=AVX4; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s --check-prefixes=AVX25; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX2-FP6; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX2-FCP7; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX5128; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX512-FCP9; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq | FileCheck %s --check-prefixes=AVX512DQ10; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX512DQ-FCP11; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw | FileCheck %s --check-prefixes=AVX512BW12; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX512BW-FCP13; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw | FileCheck %s --check-prefixes=AVX512DQ-BW14; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX512DQ-BW-FCP15 16; These patterns are produced by LoopVectorizer for interleaved stores.17 18define void @store_i32_stride4_vf2(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %out.vec) nounwind {19; SSE-LABEL: store_i32_stride4_vf2:20; SSE: # %bb.0:21; SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero22; SSE-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero23; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]24; SSE-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero25; SSE-NEXT: movsd {{.*#+}} xmm2 = mem[0],zero26; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]27; SSE-NEXT: movaps %xmm0, %xmm228; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]29; SSE-NEXT: movhlps {{.*#+}} xmm1 = xmm0[1],xmm1[1]30; SSE-NEXT: movaps %xmm1, 16(%r8)31; SSE-NEXT: movaps %xmm2, (%r8)32; SSE-NEXT: retq33;34; AVX-LABEL: store_i32_stride4_vf2:35; AVX: # %bb.0:36; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero37; AVX-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero38; AVX-NEXT: vmovlhps {{.*#+}} xmm0 = xmm1[0],xmm0[0]39; AVX-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero40; AVX-NEXT: vmovsd {{.*#+}} xmm2 = mem[0],zero41; AVX-NEXT: vmovlhps {{.*#+}} xmm1 = xmm2[0],xmm1[0]42; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm243; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm044; AVX-NEXT: vshufps {{.*#+}} ymm0 = ymm0[1,3,0,2,5,7,4,6]45; AVX-NEXT: vshufps {{.*#+}} ymm1 = ymm2[0,2,1,3,4,6,5,7]46; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]47; AVX-NEXT: vmovaps %ymm0, (%r8)48; AVX-NEXT: vzeroupper49; AVX-NEXT: retq50;51; AVX2-LABEL: store_i32_stride4_vf2:52; AVX2: # %bb.0:53; AVX2-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero54; AVX2-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero55; AVX2-NEXT: vmovlhps {{.*#+}} xmm0 = xmm1[0],xmm0[0]56; AVX2-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero57; AVX2-NEXT: vmovsd {{.*#+}} xmm2 = mem[0],zero58; AVX2-NEXT: vmovlhps {{.*#+}} xmm1 = xmm2[0],xmm1[0]59; AVX2-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm060; AVX2-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,2,1,3,4,6,5,7]61; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]62; AVX2-NEXT: vmovaps %ymm0, (%r8)63; AVX2-NEXT: vzeroupper64; AVX2-NEXT: retq65;66; AVX2-FP-LABEL: store_i32_stride4_vf2:67; AVX2-FP: # %bb.0:68; AVX2-FP-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero69; AVX2-FP-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero70; AVX2-FP-NEXT: vmovlhps {{.*#+}} xmm0 = xmm1[0],xmm0[0]71; AVX2-FP-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero72; AVX2-FP-NEXT: vmovsd {{.*#+}} xmm2 = mem[0],zero73; AVX2-FP-NEXT: vmovlhps {{.*#+}} xmm1 = xmm2[0],xmm1[0]74; AVX2-FP-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm075; AVX2-FP-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,2,1,3,4,6,5,7]76; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]77; AVX2-FP-NEXT: vmovaps %ymm0, (%r8)78; AVX2-FP-NEXT: vzeroupper79; AVX2-FP-NEXT: retq80;81; AVX2-FCP-LABEL: store_i32_stride4_vf2:82; AVX2-FCP: # %bb.0:83; AVX2-FCP-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero84; AVX2-FCP-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero85; AVX2-FCP-NEXT: vmovlhps {{.*#+}} xmm0 = xmm1[0],xmm0[0]86; AVX2-FCP-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero87; AVX2-FCP-NEXT: vmovsd {{.*#+}} xmm2 = mem[0],zero88; AVX2-FCP-NEXT: vmovlhps {{.*#+}} xmm1 = xmm2[0],xmm1[0]89; AVX2-FCP-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm090; AVX2-FCP-NEXT: vmovaps {{.*#+}} ymm1 = [0,2,4,6,1,3,5,7]91; AVX2-FCP-NEXT: vpermps %ymm0, %ymm1, %ymm092; AVX2-FCP-NEXT: vmovaps %ymm0, (%r8)93; AVX2-FCP-NEXT: vzeroupper94; AVX2-FCP-NEXT: retq95;96; AVX512-LABEL: store_i32_stride4_vf2:97; AVX512: # %bb.0:98; AVX512-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero99; AVX512-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero100; AVX512-NEXT: vmovlhps {{.*#+}} xmm0 = xmm1[0],xmm0[0]101; AVX512-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero102; AVX512-NEXT: vmovsd {{.*#+}} xmm2 = mem[0],zero103; AVX512-NEXT: vmovlhps {{.*#+}} xmm1 = xmm2[0],xmm1[0]104; AVX512-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0105; AVX512-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,2,1,3,4,6,5,7]106; AVX512-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]107; AVX512-NEXT: vmovaps %ymm0, (%r8)108; AVX512-NEXT: vzeroupper109; AVX512-NEXT: retq110;111; AVX512-FCP-LABEL: store_i32_stride4_vf2:112; AVX512-FCP: # %bb.0:113; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero114; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero115; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]116; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero117; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero118; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]119; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [0,2,8,10,1,3,9,11]120; AVX512-FCP-NEXT: vpermi2d %ymm1, %ymm0, %ymm2121; AVX512-FCP-NEXT: vmovdqa %ymm2, (%r8)122; AVX512-FCP-NEXT: vzeroupper123; AVX512-FCP-NEXT: retq124;125; AVX512DQ-LABEL: store_i32_stride4_vf2:126; AVX512DQ: # %bb.0:127; AVX512DQ-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero128; AVX512DQ-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero129; AVX512DQ-NEXT: vmovlhps {{.*#+}} xmm0 = xmm1[0],xmm0[0]130; AVX512DQ-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero131; AVX512DQ-NEXT: vmovsd {{.*#+}} xmm2 = mem[0],zero132; AVX512DQ-NEXT: vmovlhps {{.*#+}} xmm1 = xmm2[0],xmm1[0]133; AVX512DQ-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0134; AVX512DQ-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,2,1,3,4,6,5,7]135; AVX512DQ-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]136; AVX512DQ-NEXT: vmovaps %ymm0, (%r8)137; AVX512DQ-NEXT: vzeroupper138; AVX512DQ-NEXT: retq139;140; AVX512DQ-FCP-LABEL: store_i32_stride4_vf2:141; AVX512DQ-FCP: # %bb.0:142; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero143; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero144; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]145; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero146; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero147; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]148; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [0,2,8,10,1,3,9,11]149; AVX512DQ-FCP-NEXT: vpermi2d %ymm1, %ymm0, %ymm2150; AVX512DQ-FCP-NEXT: vmovdqa %ymm2, (%r8)151; AVX512DQ-FCP-NEXT: vzeroupper152; AVX512DQ-FCP-NEXT: retq153;154; AVX512BW-LABEL: store_i32_stride4_vf2:155; AVX512BW: # %bb.0:156; AVX512BW-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero157; AVX512BW-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero158; AVX512BW-NEXT: vmovlhps {{.*#+}} xmm0 = xmm1[0],xmm0[0]159; AVX512BW-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero160; AVX512BW-NEXT: vmovsd {{.*#+}} xmm2 = mem[0],zero161; AVX512BW-NEXT: vmovlhps {{.*#+}} xmm1 = xmm2[0],xmm1[0]162; AVX512BW-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0163; AVX512BW-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,2,1,3,4,6,5,7]164; AVX512BW-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]165; AVX512BW-NEXT: vmovaps %ymm0, (%r8)166; AVX512BW-NEXT: vzeroupper167; AVX512BW-NEXT: retq168;169; AVX512BW-FCP-LABEL: store_i32_stride4_vf2:170; AVX512BW-FCP: # %bb.0:171; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero172; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero173; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]174; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero175; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero176; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]177; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [0,2,8,10,1,3,9,11]178; AVX512BW-FCP-NEXT: vpermi2d %ymm1, %ymm0, %ymm2179; AVX512BW-FCP-NEXT: vmovdqa %ymm2, (%r8)180; AVX512BW-FCP-NEXT: vzeroupper181; AVX512BW-FCP-NEXT: retq182;183; AVX512DQ-BW-LABEL: store_i32_stride4_vf2:184; AVX512DQ-BW: # %bb.0:185; AVX512DQ-BW-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero186; AVX512DQ-BW-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero187; AVX512DQ-BW-NEXT: vmovlhps {{.*#+}} xmm0 = xmm1[0],xmm0[0]188; AVX512DQ-BW-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero189; AVX512DQ-BW-NEXT: vmovsd {{.*#+}} xmm2 = mem[0],zero190; AVX512DQ-BW-NEXT: vmovlhps {{.*#+}} xmm1 = xmm2[0],xmm1[0]191; AVX512DQ-BW-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0192; AVX512DQ-BW-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,2,1,3,4,6,5,7]193; AVX512DQ-BW-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]194; AVX512DQ-BW-NEXT: vmovaps %ymm0, (%r8)195; AVX512DQ-BW-NEXT: vzeroupper196; AVX512DQ-BW-NEXT: retq197;198; AVX512DQ-BW-FCP-LABEL: store_i32_stride4_vf2:199; AVX512DQ-BW-FCP: # %bb.0:200; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero201; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero202; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]203; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero204; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero205; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]206; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [0,2,8,10,1,3,9,11]207; AVX512DQ-BW-FCP-NEXT: vpermi2d %ymm1, %ymm0, %ymm2208; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm2, (%r8)209; AVX512DQ-BW-FCP-NEXT: vzeroupper210; AVX512DQ-BW-FCP-NEXT: retq211 %in.vec0 = load <2 x i32>, ptr %in.vecptr0, align 64212 %in.vec1 = load <2 x i32>, ptr %in.vecptr1, align 64213 %in.vec2 = load <2 x i32>, ptr %in.vecptr2, align 64214 %in.vec3 = load <2 x i32>, ptr %in.vecptr3, align 64215 %1 = shufflevector <2 x i32> %in.vec0, <2 x i32> %in.vec1, <4 x i32> <i32 0, i32 1, i32 2, i32 3>216 %2 = shufflevector <2 x i32> %in.vec2, <2 x i32> %in.vec3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>217 %3 = shufflevector <4 x i32> %1, <4 x i32> %2, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>218 %interleaved.vec = shufflevector <8 x i32> %3, <8 x i32> poison, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 1, i32 3, i32 5, i32 7>219 store <8 x i32> %interleaved.vec, ptr %out.vec, align 64220 ret void221}222 223define void @store_i32_stride4_vf4(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %out.vec) nounwind {224; SSE-LABEL: store_i32_stride4_vf4:225; SSE: # %bb.0:226; SSE-NEXT: movaps (%rdi), %xmm0227; SSE-NEXT: movaps (%rsi), %xmm1228; SSE-NEXT: movaps (%rdx), %xmm2229; SSE-NEXT: movaps (%rcx), %xmm3230; SSE-NEXT: movaps %xmm2, %xmm4231; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]232; SSE-NEXT: movaps %xmm0, %xmm5233; SSE-NEXT: unpcklps {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1]234; SSE-NEXT: movaps %xmm5, %xmm6235; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm4[0]236; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm4[1]237; SSE-NEXT: unpckhps {{.*#+}} xmm2 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]238; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]239; SSE-NEXT: movaps %xmm0, %xmm1240; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm2[1]241; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm2[0]242; SSE-NEXT: movaps %xmm0, 32(%r8)243; SSE-NEXT: movaps %xmm1, 48(%r8)244; SSE-NEXT: movaps %xmm5, 16(%r8)245; SSE-NEXT: movaps %xmm6, (%r8)246; SSE-NEXT: retq247;248; AVX-LABEL: store_i32_stride4_vf4:249; AVX: # %bb.0:250; AVX-NEXT: vmovaps (%rdi), %xmm0251; AVX-NEXT: vmovaps (%rsi), %xmm1252; AVX-NEXT: vmovaps (%rdx), %xmm2253; AVX-NEXT: vmovaps (%rcx), %xmm3254; AVX-NEXT: vunpcklps {{.*#+}} xmm4 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]255; AVX-NEXT: vshufps {{.*#+}} xmm5 = xmm0[1,1,1,1]256; AVX-NEXT: vblendps {{.*#+}} xmm5 = xmm5[0],xmm1[1],xmm5[2,3]257; AVX-NEXT: vblendps {{.*#+}} xmm5 = xmm5[0,1],xmm4[2,3]258; AVX-NEXT: vunpcklps {{.*#+}} xmm6 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]259; AVX-NEXT: vmovlhps {{.*#+}} xmm4 = xmm6[0],xmm4[0]260; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm4, %ymm4261; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]262; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm3[2,2,2,2]263; AVX-NEXT: vblendps {{.*#+}} xmm1 = xmm2[0,1,2],xmm1[3]264; AVX-NEXT: vblendps {{.*#+}} xmm1 = xmm0[0,1],xmm1[2,3]265; AVX-NEXT: vunpckhps {{.*#+}} xmm2 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]266; AVX-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]267; AVX-NEXT: vmovaps %xmm0, 48(%r8)268; AVX-NEXT: vmovaps %xmm1, 32(%r8)269; AVX-NEXT: vmovaps %ymm4, (%r8)270; AVX-NEXT: vzeroupper271; AVX-NEXT: retq272;273; AVX2-LABEL: store_i32_stride4_vf4:274; AVX2: # %bb.0:275; AVX2-NEXT: vmovaps (%rdi), %xmm0276; AVX2-NEXT: vmovaps (%rdx), %xmm1277; AVX2-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0278; AVX2-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1279; AVX2-NEXT: vmovaps {{.*#+}} ymm2 = [u,u,0,4,u,u,1,5]280; AVX2-NEXT: vpermps %ymm1, %ymm2, %ymm2281; AVX2-NEXT: vmovaps {{.*#+}} ymm3 = [0,4,u,u,1,5,u,u]282; AVX2-NEXT: vpermps %ymm0, %ymm3, %ymm3283; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]284; AVX2-NEXT: vmovaps {{.*#+}} ymm3 = [u,u,2,6,u,u,3,7]285; AVX2-NEXT: vpermps %ymm1, %ymm3, %ymm1286; AVX2-NEXT: vmovaps {{.*#+}} ymm3 = [2,6,u,u,3,7,u,u]287; AVX2-NEXT: vpermps %ymm0, %ymm3, %ymm0288; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]289; AVX2-NEXT: vmovaps %ymm0, 32(%r8)290; AVX2-NEXT: vmovaps %ymm2, (%r8)291; AVX2-NEXT: vzeroupper292; AVX2-NEXT: retq293;294; AVX2-FP-LABEL: store_i32_stride4_vf4:295; AVX2-FP: # %bb.0:296; AVX2-FP-NEXT: vmovaps (%rdi), %xmm0297; AVX2-FP-NEXT: vmovaps (%rdx), %xmm1298; AVX2-FP-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0299; AVX2-FP-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1300; AVX2-FP-NEXT: vmovaps {{.*#+}} ymm2 = [u,u,0,4,u,u,1,5]301; AVX2-FP-NEXT: vpermps %ymm1, %ymm2, %ymm2302; AVX2-FP-NEXT: vmovaps {{.*#+}} ymm3 = [0,4,u,u,1,5,u,u]303; AVX2-FP-NEXT: vpermps %ymm0, %ymm3, %ymm3304; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]305; AVX2-FP-NEXT: vmovaps {{.*#+}} ymm3 = [u,u,2,6,u,u,3,7]306; AVX2-FP-NEXT: vpermps %ymm1, %ymm3, %ymm1307; AVX2-FP-NEXT: vmovaps {{.*#+}} ymm3 = [2,6,u,u,3,7,u,u]308; AVX2-FP-NEXT: vpermps %ymm0, %ymm3, %ymm0309; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]310; AVX2-FP-NEXT: vmovaps %ymm0, 32(%r8)311; AVX2-FP-NEXT: vmovaps %ymm2, (%r8)312; AVX2-FP-NEXT: vzeroupper313; AVX2-FP-NEXT: retq314;315; AVX2-FCP-LABEL: store_i32_stride4_vf4:316; AVX2-FCP: # %bb.0:317; AVX2-FCP-NEXT: vmovaps (%rdi), %xmm0318; AVX2-FCP-NEXT: vmovaps (%rdx), %xmm1319; AVX2-FCP-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0320; AVX2-FCP-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1321; AVX2-FCP-NEXT: vmovaps {{.*#+}} ymm2 = [u,u,0,4,u,u,1,5]322; AVX2-FCP-NEXT: vpermps %ymm1, %ymm2, %ymm2323; AVX2-FCP-NEXT: vmovaps {{.*#+}} ymm3 = [0,4,u,u,1,5,u,u]324; AVX2-FCP-NEXT: vpermps %ymm0, %ymm3, %ymm3325; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]326; AVX2-FCP-NEXT: vmovaps {{.*#+}} ymm3 = [u,u,2,6,u,u,3,7]327; AVX2-FCP-NEXT: vpermps %ymm1, %ymm3, %ymm1328; AVX2-FCP-NEXT: vmovaps {{.*#+}} ymm3 = [2,6,u,u,3,7,u,u]329; AVX2-FCP-NEXT: vpermps %ymm0, %ymm3, %ymm0330; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]331; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%r8)332; AVX2-FCP-NEXT: vmovaps %ymm2, (%r8)333; AVX2-FCP-NEXT: vzeroupper334; AVX2-FCP-NEXT: retq335;336; AVX512-LABEL: store_i32_stride4_vf4:337; AVX512: # %bb.0:338; AVX512-NEXT: vmovaps (%rdi), %xmm0339; AVX512-NEXT: vmovaps (%rdx), %xmm1340; AVX512-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1341; AVX512-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0342; AVX512-NEXT: vinsertf64x4 $1, %ymm1, %zmm0, %zmm0343; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm1 = [0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15]344; AVX512-NEXT: vpermps %zmm0, %zmm1, %zmm0345; AVX512-NEXT: vmovaps %zmm0, (%r8)346; AVX512-NEXT: vzeroupper347; AVX512-NEXT: retq348;349; AVX512-FCP-LABEL: store_i32_stride4_vf4:350; AVX512-FCP: # %bb.0:351; AVX512-FCP-NEXT: vmovaps (%rdi), %xmm0352; AVX512-FCP-NEXT: vmovaps (%rdx), %xmm1353; AVX512-FCP-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1354; AVX512-FCP-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0355; AVX512-FCP-NEXT: vinsertf64x4 $1, %ymm1, %zmm0, %zmm0356; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm1 = [0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15]357; AVX512-FCP-NEXT: vpermps %zmm0, %zmm1, %zmm0358; AVX512-FCP-NEXT: vmovaps %zmm0, (%r8)359; AVX512-FCP-NEXT: vzeroupper360; AVX512-FCP-NEXT: retq361;362; AVX512DQ-LABEL: store_i32_stride4_vf4:363; AVX512DQ: # %bb.0:364; AVX512DQ-NEXT: vmovaps (%rdi), %xmm0365; AVX512DQ-NEXT: vmovaps (%rdx), %xmm1366; AVX512DQ-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1367; AVX512DQ-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0368; AVX512DQ-NEXT: vinsertf64x4 $1, %ymm1, %zmm0, %zmm0369; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm1 = [0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15]370; AVX512DQ-NEXT: vpermps %zmm0, %zmm1, %zmm0371; AVX512DQ-NEXT: vmovaps %zmm0, (%r8)372; AVX512DQ-NEXT: vzeroupper373; AVX512DQ-NEXT: retq374;375; AVX512DQ-FCP-LABEL: store_i32_stride4_vf4:376; AVX512DQ-FCP: # %bb.0:377; AVX512DQ-FCP-NEXT: vmovaps (%rdi), %xmm0378; AVX512DQ-FCP-NEXT: vmovaps (%rdx), %xmm1379; AVX512DQ-FCP-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1380; AVX512DQ-FCP-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0381; AVX512DQ-FCP-NEXT: vinsertf64x4 $1, %ymm1, %zmm0, %zmm0382; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm1 = [0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15]383; AVX512DQ-FCP-NEXT: vpermps %zmm0, %zmm1, %zmm0384; AVX512DQ-FCP-NEXT: vmovaps %zmm0, (%r8)385; AVX512DQ-FCP-NEXT: vzeroupper386; AVX512DQ-FCP-NEXT: retq387;388; AVX512BW-LABEL: store_i32_stride4_vf4:389; AVX512BW: # %bb.0:390; AVX512BW-NEXT: vmovaps (%rdi), %xmm0391; AVX512BW-NEXT: vmovaps (%rdx), %xmm1392; AVX512BW-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1393; AVX512BW-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0394; AVX512BW-NEXT: vinsertf64x4 $1, %ymm1, %zmm0, %zmm0395; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm1 = [0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15]396; AVX512BW-NEXT: vpermps %zmm0, %zmm1, %zmm0397; AVX512BW-NEXT: vmovaps %zmm0, (%r8)398; AVX512BW-NEXT: vzeroupper399; AVX512BW-NEXT: retq400;401; AVX512BW-FCP-LABEL: store_i32_stride4_vf4:402; AVX512BW-FCP: # %bb.0:403; AVX512BW-FCP-NEXT: vmovaps (%rdi), %xmm0404; AVX512BW-FCP-NEXT: vmovaps (%rdx), %xmm1405; AVX512BW-FCP-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1406; AVX512BW-FCP-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0407; AVX512BW-FCP-NEXT: vinsertf64x4 $1, %ymm1, %zmm0, %zmm0408; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm1 = [0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15]409; AVX512BW-FCP-NEXT: vpermps %zmm0, %zmm1, %zmm0410; AVX512BW-FCP-NEXT: vmovaps %zmm0, (%r8)411; AVX512BW-FCP-NEXT: vzeroupper412; AVX512BW-FCP-NEXT: retq413;414; AVX512DQ-BW-LABEL: store_i32_stride4_vf4:415; AVX512DQ-BW: # %bb.0:416; AVX512DQ-BW-NEXT: vmovaps (%rdi), %xmm0417; AVX512DQ-BW-NEXT: vmovaps (%rdx), %xmm1418; AVX512DQ-BW-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1419; AVX512DQ-BW-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0420; AVX512DQ-BW-NEXT: vinsertf64x4 $1, %ymm1, %zmm0, %zmm0421; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm1 = [0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15]422; AVX512DQ-BW-NEXT: vpermps %zmm0, %zmm1, %zmm0423; AVX512DQ-BW-NEXT: vmovaps %zmm0, (%r8)424; AVX512DQ-BW-NEXT: vzeroupper425; AVX512DQ-BW-NEXT: retq426;427; AVX512DQ-BW-FCP-LABEL: store_i32_stride4_vf4:428; AVX512DQ-BW-FCP: # %bb.0:429; AVX512DQ-BW-FCP-NEXT: vmovaps (%rdi), %xmm0430; AVX512DQ-BW-FCP-NEXT: vmovaps (%rdx), %xmm1431; AVX512DQ-BW-FCP-NEXT: vinsertf128 $1, (%rcx), %ymm1, %ymm1432; AVX512DQ-BW-FCP-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0433; AVX512DQ-BW-FCP-NEXT: vinsertf64x4 $1, %ymm1, %zmm0, %zmm0434; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm1 = [0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15]435; AVX512DQ-BW-FCP-NEXT: vpermps %zmm0, %zmm1, %zmm0436; AVX512DQ-BW-FCP-NEXT: vmovaps %zmm0, (%r8)437; AVX512DQ-BW-FCP-NEXT: vzeroupper438; AVX512DQ-BW-FCP-NEXT: retq439 %in.vec0 = load <4 x i32>, ptr %in.vecptr0, align 64440 %in.vec1 = load <4 x i32>, ptr %in.vecptr1, align 64441 %in.vec2 = load <4 x i32>, ptr %in.vecptr2, align 64442 %in.vec3 = load <4 x i32>, ptr %in.vecptr3, align 64443 %1 = shufflevector <4 x i32> %in.vec0, <4 x i32> %in.vec1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>444 %2 = shufflevector <4 x i32> %in.vec2, <4 x i32> %in.vec3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>445 %3 = shufflevector <8 x i32> %1, <8 x i32> %2, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>446 %interleaved.vec = shufflevector <16 x i32> %3, <16 x i32> poison, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15>447 store <16 x i32> %interleaved.vec, ptr %out.vec, align 64448 ret void449}450 451define void @store_i32_stride4_vf8(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %out.vec) nounwind {452; SSE-LABEL: store_i32_stride4_vf8:453; SSE: # %bb.0:454; SSE-NEXT: movaps (%rdi), %xmm0455; SSE-NEXT: movaps 16(%rdi), %xmm1456; SSE-NEXT: movaps (%rsi), %xmm5457; SSE-NEXT: movaps 16(%rsi), %xmm6458; SSE-NEXT: movaps (%rdx), %xmm7459; SSE-NEXT: movaps 16(%rdx), %xmm4460; SSE-NEXT: movaps (%rcx), %xmm8461; SSE-NEXT: movaps 16(%rcx), %xmm9462; SSE-NEXT: movaps %xmm7, %xmm10463; SSE-NEXT: unpcklps {{.*#+}} xmm10 = xmm10[0],xmm8[0],xmm10[1],xmm8[1]464; SSE-NEXT: movaps %xmm0, %xmm2465; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]466; SSE-NEXT: movaps %xmm2, %xmm3467; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm10[1]468; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm10[0]469; SSE-NEXT: unpckhps {{.*#+}} xmm7 = xmm7[2],xmm8[2],xmm7[3],xmm8[3]470; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm5[2],xmm0[3],xmm5[3]471; SSE-NEXT: movaps %xmm0, %xmm5472; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm7[1]473; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm7[0]474; SSE-NEXT: movaps %xmm4, %xmm7475; SSE-NEXT: unpcklps {{.*#+}} xmm7 = xmm7[0],xmm9[0],xmm7[1],xmm9[1]476; SSE-NEXT: movaps %xmm1, %xmm8477; SSE-NEXT: unpcklps {{.*#+}} xmm8 = xmm8[0],xmm6[0],xmm8[1],xmm6[1]478; SSE-NEXT: movaps %xmm8, %xmm10479; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm7[1]480; SSE-NEXT: movlhps {{.*#+}} xmm8 = xmm8[0],xmm7[0]481; SSE-NEXT: unpckhps {{.*#+}} xmm4 = xmm4[2],xmm9[2],xmm4[3],xmm9[3]482; SSE-NEXT: unpckhps {{.*#+}} xmm1 = xmm1[2],xmm6[2],xmm1[3],xmm6[3]483; SSE-NEXT: movaps %xmm1, %xmm6484; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm4[1]485; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm4[0]486; SSE-NEXT: movaps %xmm1, 96(%r8)487; SSE-NEXT: movaps %xmm6, 112(%r8)488; SSE-NEXT: movaps %xmm8, 64(%r8)489; SSE-NEXT: movaps %xmm10, 80(%r8)490; SSE-NEXT: movaps %xmm0, 32(%r8)491; SSE-NEXT: movaps %xmm5, 48(%r8)492; SSE-NEXT: movaps %xmm2, (%r8)493; SSE-NEXT: movaps %xmm3, 16(%r8)494; SSE-NEXT: retq495;496; AVX-LABEL: store_i32_stride4_vf8:497; AVX: # %bb.0:498; AVX-NEXT: vmovaps (%rsi), %xmm4499; AVX-NEXT: vmovaps 16(%rsi), %xmm0500; AVX-NEXT: vmovaps (%rdi), %xmm5501; AVX-NEXT: vmovaps 16(%rdi), %xmm1502; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm5[1,1,1,1]503; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2,3]504; AVX-NEXT: vunpcklps {{.*#+}} xmm3 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]505; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2506; AVX-NEXT: vmovaps (%rcx), %xmm6507; AVX-NEXT: vmovaps 16(%rcx), %xmm3508; AVX-NEXT: vmovaps (%rdx), %xmm7509; AVX-NEXT: vmovaps 16(%rdx), %xmm8510; AVX-NEXT: vunpcklps {{.*#+}} xmm9 = xmm7[0],xmm6[0],xmm7[1],xmm6[1]511; AVX-NEXT: vshufps {{.*#+}} xmm10 = xmm9[0,1,0,1]512; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm10, %ymm9513; AVX-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm9[2,3],ymm2[4,5],ymm9[6,7]514; AVX-NEXT: vunpckhps {{.*#+}} xmm4 = xmm5[2],xmm4[2],xmm5[3],xmm4[3]515; AVX-NEXT: vshufps {{.*#+}} xmm5 = xmm4[2,3,2,3]516; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm4, %ymm4517; AVX-NEXT: vunpckhps {{.*#+}} xmm5 = xmm7[2],xmm6[2],xmm7[3],xmm6[3]518; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm6[2,2,2,2]519; AVX-NEXT: vblendps {{.*#+}} xmm6 = xmm7[0,1,2],xmm6[3]520; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm5521; AVX-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1],ymm5[2,3],ymm4[4,5],ymm5[6,7]522; AVX-NEXT: vunpckhps {{.*#+}} xmm5 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]523; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm5[2,3,2,3]524; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm5, %ymm5525; AVX-NEXT: vunpckhps {{.*#+}} xmm6 = xmm8[2],xmm3[2],xmm8[3],xmm3[3]526; AVX-NEXT: vshufps {{.*#+}} xmm7 = xmm3[2,2,2,2]527; AVX-NEXT: vblendps {{.*#+}} xmm7 = xmm8[0,1,2],xmm7[3]528; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm7, %ymm6529; AVX-NEXT: vblendps {{.*#+}} ymm5 = ymm5[0,1],ymm6[2,3],ymm5[4,5],ymm6[6,7]530; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm1[1,1,1,1]531; AVX-NEXT: vblendps {{.*#+}} xmm6 = xmm6[0],xmm0[1],xmm6[2,3]532; AVX-NEXT: vunpcklps {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]533; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm0, %ymm0534; AVX-NEXT: vunpcklps {{.*#+}} xmm1 = xmm8[0],xmm3[0],xmm8[1],xmm3[1]535; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm1[0,1,0,1]536; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm3, %ymm1537; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]538; AVX-NEXT: vmovaps %ymm0, 64(%r8)539; AVX-NEXT: vmovaps %ymm5, 96(%r8)540; AVX-NEXT: vmovaps %ymm4, 32(%r8)541; AVX-NEXT: vmovaps %ymm2, (%r8)542; AVX-NEXT: vzeroupper543; AVX-NEXT: retq544;545; AVX2-LABEL: store_i32_stride4_vf8:546; AVX2: # %bb.0:547; AVX2-NEXT: vmovaps (%rdi), %ymm0548; AVX2-NEXT: vmovaps (%rsi), %ymm1549; AVX2-NEXT: vmovaps (%rdx), %ymm2550; AVX2-NEXT: vmovaps (%rcx), %ymm3551; AVX2-NEXT: vmovaps (%rcx), %xmm4552; AVX2-NEXT: vmovaps (%rdx), %xmm5553; AVX2-NEXT: vunpcklps {{.*#+}} xmm6 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]554; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,0,2,1]555; AVX2-NEXT: vmovaps (%rsi), %xmm7556; AVX2-NEXT: vmovaps (%rdi), %xmm8557; AVX2-NEXT: vunpcklps {{.*#+}} xmm9 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]558; AVX2-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,1,1,3]559; AVX2-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1],ymm6[2,3],ymm9[4,5],ymm6[6,7]560; AVX2-NEXT: vunpckhps {{.*#+}} xmm4 = xmm5[2],xmm4[2],xmm5[3],xmm4[3]561; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]562; AVX2-NEXT: vunpckhps {{.*#+}} xmm5 = xmm8[2],xmm7[2],xmm8[3],xmm7[3]563; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]564; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3],ymm5[4,5],ymm4[6,7]565; AVX2-NEXT: vunpckhps {{.*#+}} ymm5 = ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[6],ymm3[6],ymm2[7],ymm3[7]566; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,2,2,3]567; AVX2-NEXT: vunpckhps {{.*#+}} ymm7 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]568; AVX2-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[2,1,3,3]569; AVX2-NEXT: vblendps {{.*#+}} ymm5 = ymm7[0,1],ymm5[2,3],ymm7[4,5],ymm5[6,7]570; AVX2-NEXT: vunpcklps {{.*#+}} ymm2 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[4],ymm3[4],ymm2[5],ymm3[5]571; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]572; AVX2-NEXT: vunpcklps {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]573; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]574; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]575; AVX2-NEXT: vmovaps %ymm0, 64(%r8)576; AVX2-NEXT: vmovaps %ymm5, 96(%r8)577; AVX2-NEXT: vmovaps %ymm4, 32(%r8)578; AVX2-NEXT: vmovaps %ymm6, (%r8)579; AVX2-NEXT: vzeroupper580; AVX2-NEXT: retq581;582; AVX2-FP-LABEL: store_i32_stride4_vf8:583; AVX2-FP: # %bb.0:584; AVX2-FP-NEXT: vmovaps (%rdi), %ymm0585; AVX2-FP-NEXT: vmovaps (%rsi), %ymm1586; AVX2-FP-NEXT: vmovaps (%rdx), %ymm2587; AVX2-FP-NEXT: vmovaps (%rcx), %ymm3588; AVX2-FP-NEXT: vmovaps (%rcx), %xmm4589; AVX2-FP-NEXT: vmovaps (%rdx), %xmm5590; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm6 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]591; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,0,2,1]592; AVX2-FP-NEXT: vmovaps (%rsi), %xmm7593; AVX2-FP-NEXT: vmovaps (%rdi), %xmm8594; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm9 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]595; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,1,1,3]596; AVX2-FP-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1],ymm6[2,3],ymm9[4,5],ymm6[6,7]597; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm4 = xmm5[2],xmm4[2],xmm5[3],xmm4[3]598; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]599; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm5 = xmm8[2],xmm7[2],xmm8[3],xmm7[3]600; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]601; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3],ymm5[4,5],ymm4[6,7]602; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm5 = ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[6],ymm3[6],ymm2[7],ymm3[7]603; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,2,2,3]604; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm7 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]605; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[2,1,3,3]606; AVX2-FP-NEXT: vblendps {{.*#+}} ymm5 = ymm7[0,1],ymm5[2,3],ymm7[4,5],ymm5[6,7]607; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[4],ymm3[4],ymm2[5],ymm3[5]608; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]609; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]610; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]611; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]612; AVX2-FP-NEXT: vmovaps %ymm0, 64(%r8)613; AVX2-FP-NEXT: vmovaps %ymm5, 96(%r8)614; AVX2-FP-NEXT: vmovaps %ymm4, 32(%r8)615; AVX2-FP-NEXT: vmovaps %ymm6, (%r8)616; AVX2-FP-NEXT: vzeroupper617; AVX2-FP-NEXT: retq618;619; AVX2-FCP-LABEL: store_i32_stride4_vf8:620; AVX2-FCP: # %bb.0:621; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm0622; AVX2-FCP-NEXT: vmovaps (%rsi), %ymm1623; AVX2-FCP-NEXT: vmovaps (%rdx), %ymm2624; AVX2-FCP-NEXT: vmovaps (%rcx), %ymm3625; AVX2-FCP-NEXT: vmovaps (%rcx), %xmm4626; AVX2-FCP-NEXT: vmovaps (%rdx), %xmm5627; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm6 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]628; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,0,2,1]629; AVX2-FCP-NEXT: vmovaps (%rsi), %xmm7630; AVX2-FCP-NEXT: vmovaps (%rdi), %xmm8631; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm9 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]632; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,1,1,3]633; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1],ymm6[2,3],ymm9[4,5],ymm6[6,7]634; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm4 = xmm5[2],xmm4[2],xmm5[3],xmm4[3]635; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]636; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm5 = xmm8[2],xmm7[2],xmm8[3],xmm7[3]637; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]638; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3],ymm5[4,5],ymm4[6,7]639; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm5 = ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[6],ymm3[6],ymm2[7],ymm3[7]640; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,2,2,3]641; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm7 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]642; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[2,1,3,3]643; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm5 = ymm7[0,1],ymm5[2,3],ymm7[4,5],ymm5[6,7]644; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[4],ymm3[4],ymm2[5],ymm3[5]645; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]646; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]647; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]648; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]649; AVX2-FCP-NEXT: vmovaps %ymm0, 64(%r8)650; AVX2-FCP-NEXT: vmovaps %ymm5, 96(%r8)651; AVX2-FCP-NEXT: vmovaps %ymm4, 32(%r8)652; AVX2-FCP-NEXT: vmovaps %ymm6, (%r8)653; AVX2-FCP-NEXT: vzeroupper654; AVX2-FCP-NEXT: retq655;656; AVX512-LABEL: store_i32_stride4_vf8:657; AVX512: # %bb.0:658; AVX512-NEXT: vmovdqa (%rdi), %ymm0659; AVX512-NEXT: vmovdqa (%rdx), %ymm1660; AVX512-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm0661; AVX512-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm1662; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm2 = [0,8,16,24,1,9,17,25,2,10,18,26,3,11,19,27]663; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm2664; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm3 = [4,12,20,28,5,13,21,29,6,14,22,30,7,15,23,31]665; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm3666; AVX512-NEXT: vmovdqa64 %zmm3, 64(%r8)667; AVX512-NEXT: vmovdqa64 %zmm2, (%r8)668; AVX512-NEXT: vzeroupper669; AVX512-NEXT: retq670;671; AVX512-FCP-LABEL: store_i32_stride4_vf8:672; AVX512-FCP: # %bb.0:673; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm0674; AVX512-FCP-NEXT: vmovdqa (%rdx), %ymm1675; AVX512-FCP-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm0676; AVX512-FCP-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm1677; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [0,8,16,24,1,9,17,25,2,10,18,26,3,11,19,27]678; AVX512-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm2679; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm3 = [4,12,20,28,5,13,21,29,6,14,22,30,7,15,23,31]680; AVX512-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm3681; AVX512-FCP-NEXT: vmovdqa64 %zmm3, 64(%r8)682; AVX512-FCP-NEXT: vmovdqa64 %zmm2, (%r8)683; AVX512-FCP-NEXT: vzeroupper684; AVX512-FCP-NEXT: retq685;686; AVX512DQ-LABEL: store_i32_stride4_vf8:687; AVX512DQ: # %bb.0:688; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm0689; AVX512DQ-NEXT: vmovdqa (%rdx), %ymm1690; AVX512DQ-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm0691; AVX512DQ-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm1692; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm2 = [0,8,16,24,1,9,17,25,2,10,18,26,3,11,19,27]693; AVX512DQ-NEXT: vpermi2d %zmm1, %zmm0, %zmm2694; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm3 = [4,12,20,28,5,13,21,29,6,14,22,30,7,15,23,31]695; AVX512DQ-NEXT: vpermi2d %zmm1, %zmm0, %zmm3696; AVX512DQ-NEXT: vmovdqa64 %zmm3, 64(%r8)697; AVX512DQ-NEXT: vmovdqa64 %zmm2, (%r8)698; AVX512DQ-NEXT: vzeroupper699; AVX512DQ-NEXT: retq700;701; AVX512DQ-FCP-LABEL: store_i32_stride4_vf8:702; AVX512DQ-FCP: # %bb.0:703; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm0704; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %ymm1705; AVX512DQ-FCP-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm0706; AVX512DQ-FCP-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm1707; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [0,8,16,24,1,9,17,25,2,10,18,26,3,11,19,27]708; AVX512DQ-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm2709; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm3 = [4,12,20,28,5,13,21,29,6,14,22,30,7,15,23,31]710; AVX512DQ-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm3711; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, 64(%r8)712; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, (%r8)713; AVX512DQ-FCP-NEXT: vzeroupper714; AVX512DQ-FCP-NEXT: retq715;716; AVX512BW-LABEL: store_i32_stride4_vf8:717; AVX512BW: # %bb.0:718; AVX512BW-NEXT: vmovdqa (%rdi), %ymm0719; AVX512BW-NEXT: vmovdqa (%rdx), %ymm1720; AVX512BW-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm0721; AVX512BW-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm1722; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm2 = [0,8,16,24,1,9,17,25,2,10,18,26,3,11,19,27]723; AVX512BW-NEXT: vpermi2d %zmm1, %zmm0, %zmm2724; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm3 = [4,12,20,28,5,13,21,29,6,14,22,30,7,15,23,31]725; AVX512BW-NEXT: vpermi2d %zmm1, %zmm0, %zmm3726; AVX512BW-NEXT: vmovdqa64 %zmm3, 64(%r8)727; AVX512BW-NEXT: vmovdqa64 %zmm2, (%r8)728; AVX512BW-NEXT: vzeroupper729; AVX512BW-NEXT: retq730;731; AVX512BW-FCP-LABEL: store_i32_stride4_vf8:732; AVX512BW-FCP: # %bb.0:733; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %ymm0734; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %ymm1735; AVX512BW-FCP-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm0736; AVX512BW-FCP-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm1737; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [0,8,16,24,1,9,17,25,2,10,18,26,3,11,19,27]738; AVX512BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm2739; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm3 = [4,12,20,28,5,13,21,29,6,14,22,30,7,15,23,31]740; AVX512BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm3741; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, 64(%r8)742; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, (%r8)743; AVX512BW-FCP-NEXT: vzeroupper744; AVX512BW-FCP-NEXT: retq745;746; AVX512DQ-BW-LABEL: store_i32_stride4_vf8:747; AVX512DQ-BW: # %bb.0:748; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %ymm0749; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %ymm1750; AVX512DQ-BW-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm0751; AVX512DQ-BW-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm1752; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm2 = [0,8,16,24,1,9,17,25,2,10,18,26,3,11,19,27]753; AVX512DQ-BW-NEXT: vpermi2d %zmm1, %zmm0, %zmm2754; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm3 = [4,12,20,28,5,13,21,29,6,14,22,30,7,15,23,31]755; AVX512DQ-BW-NEXT: vpermi2d %zmm1, %zmm0, %zmm3756; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, 64(%r8)757; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, (%r8)758; AVX512DQ-BW-NEXT: vzeroupper759; AVX512DQ-BW-NEXT: retq760;761; AVX512DQ-BW-FCP-LABEL: store_i32_stride4_vf8:762; AVX512DQ-BW-FCP: # %bb.0:763; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %ymm0764; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %ymm1765; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm0766; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm1767; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [0,8,16,24,1,9,17,25,2,10,18,26,3,11,19,27]768; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm2769; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm3 = [4,12,20,28,5,13,21,29,6,14,22,30,7,15,23,31]770; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm3771; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, 64(%r8)772; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, (%r8)773; AVX512DQ-BW-FCP-NEXT: vzeroupper774; AVX512DQ-BW-FCP-NEXT: retq775 %in.vec0 = load <8 x i32>, ptr %in.vecptr0, align 64776 %in.vec1 = load <8 x i32>, ptr %in.vecptr1, align 64777 %in.vec2 = load <8 x i32>, ptr %in.vecptr2, align 64778 %in.vec3 = load <8 x i32>, ptr %in.vecptr3, align 64779 %1 = shufflevector <8 x i32> %in.vec0, <8 x i32> %in.vec1, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>780 %2 = shufflevector <8 x i32> %in.vec2, <8 x i32> %in.vec3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>781 %3 = shufflevector <16 x i32> %1, <16 x i32> %2, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>782 %interleaved.vec = shufflevector <32 x i32> %3, <32 x i32> poison, <32 x i32> <i32 0, i32 8, i32 16, i32 24, i32 1, i32 9, i32 17, i32 25, i32 2, i32 10, i32 18, i32 26, i32 3, i32 11, i32 19, i32 27, i32 4, i32 12, i32 20, i32 28, i32 5, i32 13, i32 21, i32 29, i32 6, i32 14, i32 22, i32 30, i32 7, i32 15, i32 23, i32 31>783 store <32 x i32> %interleaved.vec, ptr %out.vec, align 64784 ret void785}786 787define void @store_i32_stride4_vf16(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %out.vec) nounwind {788; SSE-LABEL: store_i32_stride4_vf16:789; SSE: # %bb.0:790; SSE-NEXT: movaps (%rdi), %xmm5791; SSE-NEXT: movaps 16(%rdi), %xmm11792; SSE-NEXT: movaps 32(%rdi), %xmm4793; SSE-NEXT: movaps 48(%rdi), %xmm2794; SSE-NEXT: movaps (%rsi), %xmm0795; SSE-NEXT: movaps 16(%rsi), %xmm3796; SSE-NEXT: movaps 32(%rsi), %xmm9797; SSE-NEXT: movaps (%rdx), %xmm7798; SSE-NEXT: movaps 16(%rdx), %xmm13799; SSE-NEXT: movaps 32(%rdx), %xmm10800; SSE-NEXT: movaps (%rcx), %xmm8801; SSE-NEXT: movaps 16(%rcx), %xmm14802; SSE-NEXT: movaps 32(%rcx), %xmm12803; SSE-NEXT: movaps %xmm7, %xmm15804; SSE-NEXT: unpcklps {{.*#+}} xmm15 = xmm15[0],xmm8[0],xmm15[1],xmm8[1]805; SSE-NEXT: movaps %xmm5, %xmm6806; SSE-NEXT: unpcklps {{.*#+}} xmm6 = xmm6[0],xmm0[0],xmm6[1],xmm0[1]807; SSE-NEXT: movaps %xmm6, %xmm1808; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm15[1]809; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill810; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm15[0]811; SSE-NEXT: unpckhps {{.*#+}} xmm7 = xmm7[2],xmm8[2],xmm7[3],xmm8[3]812; SSE-NEXT: unpckhps {{.*#+}} xmm5 = xmm5[2],xmm0[2],xmm5[3],xmm0[3]813; SSE-NEXT: movaps %xmm5, %xmm0814; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm7[1]815; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill816; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm7[0]817; SSE-NEXT: movaps %xmm13, %xmm15818; SSE-NEXT: unpcklps {{.*#+}} xmm15 = xmm15[0],xmm14[0],xmm15[1],xmm14[1]819; SSE-NEXT: movaps %xmm11, %xmm7820; SSE-NEXT: unpcklps {{.*#+}} xmm7 = xmm7[0],xmm3[0],xmm7[1],xmm3[1]821; SSE-NEXT: movaps %xmm7, %xmm0822; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm15[1]823; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill824; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm15[0]825; SSE-NEXT: unpckhps {{.*#+}} xmm13 = xmm13[2],xmm14[2],xmm13[3],xmm14[3]826; SSE-NEXT: unpckhps {{.*#+}} xmm11 = xmm11[2],xmm3[2],xmm11[3],xmm3[3]827; SSE-NEXT: movaps %xmm11, %xmm8828; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm13[1]829; SSE-NEXT: movlhps {{.*#+}} xmm11 = xmm11[0],xmm13[0]830; SSE-NEXT: movaps %xmm10, %xmm15831; SSE-NEXT: unpcklps {{.*#+}} xmm15 = xmm15[0],xmm12[0],xmm15[1],xmm12[1]832; SSE-NEXT: movaps %xmm4, %xmm13833; SSE-NEXT: unpcklps {{.*#+}} xmm13 = xmm13[0],xmm9[0],xmm13[1],xmm9[1]834; SSE-NEXT: movaps %xmm13, %xmm14835; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm15[1]836; SSE-NEXT: movlhps {{.*#+}} xmm13 = xmm13[0],xmm15[0]837; SSE-NEXT: movaps 48(%rdx), %xmm15838; SSE-NEXT: unpckhps {{.*#+}} xmm10 = xmm10[2],xmm12[2],xmm10[3],xmm12[3]839; SSE-NEXT: movaps 48(%rcx), %xmm12840; SSE-NEXT: unpckhps {{.*#+}} xmm4 = xmm4[2],xmm9[2],xmm4[3],xmm9[3]841; SSE-NEXT: movaps %xmm4, %xmm9842; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm10[1]843; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm10[0]844; SSE-NEXT: movaps %xmm15, %xmm10845; SSE-NEXT: unpcklps {{.*#+}} xmm10 = xmm10[0],xmm12[0],xmm10[1],xmm12[1]846; SSE-NEXT: movaps 48(%rsi), %xmm1847; SSE-NEXT: movaps %xmm2, %xmm3848; SSE-NEXT: unpcklps {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]849; SSE-NEXT: movaps %xmm3, %xmm0850; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm10[1]851; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm10[0]852; SSE-NEXT: unpckhps {{.*#+}} xmm15 = xmm15[2],xmm12[2],xmm15[3],xmm12[3]853; SSE-NEXT: unpckhps {{.*#+}} xmm2 = xmm2[2],xmm1[2],xmm2[3],xmm1[3]854; SSE-NEXT: movaps %xmm2, %xmm1855; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm15[1]856; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm15[0]857; SSE-NEXT: movaps %xmm2, 224(%r8)858; SSE-NEXT: movaps %xmm1, 240(%r8)859; SSE-NEXT: movaps %xmm3, 192(%r8)860; SSE-NEXT: movaps %xmm0, 208(%r8)861; SSE-NEXT: movaps %xmm4, 160(%r8)862; SSE-NEXT: movaps %xmm9, 176(%r8)863; SSE-NEXT: movaps %xmm13, 128(%r8)864; SSE-NEXT: movaps %xmm14, 144(%r8)865; SSE-NEXT: movaps %xmm11, 96(%r8)866; SSE-NEXT: movaps %xmm8, 112(%r8)867; SSE-NEXT: movaps %xmm7, 64(%r8)868; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload869; SSE-NEXT: movaps %xmm0, 80(%r8)870; SSE-NEXT: movaps %xmm5, 32(%r8)871; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload872; SSE-NEXT: movaps %xmm0, 48(%r8)873; SSE-NEXT: movaps %xmm6, (%r8)874; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload875; SSE-NEXT: movaps %xmm0, 16(%r8)876; SSE-NEXT: retq877;878; AVX-LABEL: store_i32_stride4_vf16:879; AVX: # %bb.0:880; AVX-NEXT: vmovaps (%rsi), %xmm3881; AVX-NEXT: vmovaps 16(%rsi), %xmm0882; AVX-NEXT: vmovaps 32(%rsi), %xmm4883; AVX-NEXT: vmovaps 48(%rsi), %xmm7884; AVX-NEXT: vmovaps (%rdi), %xmm6885; AVX-NEXT: vmovaps 16(%rdi), %xmm1886; AVX-NEXT: vmovaps 32(%rdi), %xmm5887; AVX-NEXT: vmovaps 48(%rdi), %xmm8888; AVX-NEXT: vunpckhps {{.*#+}} xmm2 = xmm6[2],xmm3[2],xmm6[3],xmm3[3]889; AVX-NEXT: vshufps {{.*#+}} xmm9 = xmm2[2,3,2,3]890; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm2, %ymm2891; AVX-NEXT: vmovaps (%rcx), %xmm9892; AVX-NEXT: vmovaps (%rdx), %xmm10893; AVX-NEXT: vunpckhps {{.*#+}} xmm11 = xmm10[2],xmm9[2],xmm10[3],xmm9[3]894; AVX-NEXT: vshufps {{.*#+}} xmm12 = xmm9[2,2,2,2]895; AVX-NEXT: vblendps {{.*#+}} xmm12 = xmm10[0,1,2],xmm12[3]896; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm12, %ymm11897; AVX-NEXT: vmovaps 48(%rcx), %xmm12898; AVX-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm11[2,3],ymm2[4,5],ymm11[6,7]899; AVX-NEXT: vshufps {{.*#+}} xmm11 = xmm6[1,1,1,1]900; AVX-NEXT: vblendps {{.*#+}} xmm11 = xmm11[0],xmm3[1],xmm11[2,3]901; AVX-NEXT: vunpcklps {{.*#+}} xmm3 = xmm6[0],xmm3[0],xmm6[1],xmm3[1]902; AVX-NEXT: vmovaps 48(%rdx), %xmm13903; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm3, %ymm3904; AVX-NEXT: vunpcklps {{.*#+}} xmm6 = xmm10[0],xmm9[0],xmm10[1],xmm9[1]905; AVX-NEXT: vshufps {{.*#+}} xmm9 = xmm6[0,1,0,1]906; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm9, %ymm6907; AVX-NEXT: vblendps {{.*#+}} ymm3 = ymm3[0,1],ymm6[2,3],ymm3[4,5],ymm6[6,7]908; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm8[1,1,1,1]909; AVX-NEXT: vblendps {{.*#+}} xmm6 = xmm6[0],xmm7[1],xmm6[2,3]910; AVX-NEXT: vunpcklps {{.*#+}} xmm9 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]911; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm9, %ymm6912; AVX-NEXT: vunpcklps {{.*#+}} xmm9 = xmm13[0],xmm12[0],xmm13[1],xmm12[1]913; AVX-NEXT: vshufps {{.*#+}} xmm10 = xmm9[0,1,0,1]914; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm10, %ymm9915; AVX-NEXT: vmovaps 32(%rcx), %xmm10916; AVX-NEXT: vblendps {{.*#+}} ymm6 = ymm6[0,1],ymm9[2,3],ymm6[4,5],ymm9[6,7]917; AVX-NEXT: vmovaps 32(%rdx), %xmm9918; AVX-NEXT: vunpckhps {{.*#+}} xmm7 = xmm8[2],xmm7[2],xmm8[3],xmm7[3]919; AVX-NEXT: vshufps {{.*#+}} xmm8 = xmm7[2,3,2,3]920; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm7, %ymm7921; AVX-NEXT: vunpckhps {{.*#+}} xmm8 = xmm13[2],xmm12[2],xmm13[3],xmm12[3]922; AVX-NEXT: vshufps {{.*#+}} xmm11 = xmm12[2,2,2,2]923; AVX-NEXT: vblendps {{.*#+}} xmm11 = xmm13[0,1,2],xmm11[3]924; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm11, %ymm8925; AVX-NEXT: vblendps {{.*#+}} ymm7 = ymm7[0,1],ymm8[2,3],ymm7[4,5],ymm8[6,7]926; AVX-NEXT: vshufps {{.*#+}} xmm8 = xmm5[1,1,1,1]927; AVX-NEXT: vblendps {{.*#+}} xmm8 = xmm8[0],xmm4[1],xmm8[2,3]928; AVX-NEXT: vunpcklps {{.*#+}} xmm11 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]929; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm11, %ymm8930; AVX-NEXT: vunpcklps {{.*#+}} xmm11 = xmm9[0],xmm10[0],xmm9[1],xmm10[1]931; AVX-NEXT: vshufps {{.*#+}} xmm12 = xmm11[0,1,0,1]932; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm12, %ymm11933; AVX-NEXT: vmovaps 16(%rcx), %xmm12934; AVX-NEXT: vblendps {{.*#+}} ymm8 = ymm8[0,1],ymm11[2,3],ymm8[4,5],ymm11[6,7]935; AVX-NEXT: vmovaps 16(%rdx), %xmm11936; AVX-NEXT: vunpckhps {{.*#+}} xmm4 = xmm5[2],xmm4[2],xmm5[3],xmm4[3]937; AVX-NEXT: vshufps {{.*#+}} xmm5 = xmm4[2,3,2,3]938; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm4, %ymm4939; AVX-NEXT: vunpckhps {{.*#+}} xmm5 = xmm9[2],xmm10[2],xmm9[3],xmm10[3]940; AVX-NEXT: vshufps {{.*#+}} xmm10 = xmm10[2,2,2,2]941; AVX-NEXT: vblendps {{.*#+}} xmm9 = xmm9[0,1,2],xmm10[3]942; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm9, %ymm5943; AVX-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1],ymm5[2,3],ymm4[4,5],ymm5[6,7]944; AVX-NEXT: vshufps {{.*#+}} xmm5 = xmm1[1,1,1,1]945; AVX-NEXT: vblendps {{.*#+}} xmm5 = xmm5[0],xmm0[1],xmm5[2,3]946; AVX-NEXT: vunpcklps {{.*#+}} xmm9 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]947; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm9, %ymm5948; AVX-NEXT: vunpcklps {{.*#+}} xmm9 = xmm11[0],xmm12[0],xmm11[1],xmm12[1]949; AVX-NEXT: vshufps {{.*#+}} xmm10 = xmm9[0,1,0,1]950; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm10, %ymm9951; AVX-NEXT: vblendps {{.*#+}} ymm5 = ymm5[0,1],ymm9[2,3],ymm5[4,5],ymm9[6,7]952; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]953; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]954; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0955; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm11[2],xmm12[2],xmm11[3],xmm12[3]956; AVX-NEXT: vshufps {{.*#+}} xmm9 = xmm12[2,2,2,2]957; AVX-NEXT: vblendps {{.*#+}} xmm9 = xmm11[0,1,2],xmm9[3]958; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm9, %ymm1959; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]960; AVX-NEXT: vmovaps %ymm0, 96(%r8)961; AVX-NEXT: vmovaps %ymm5, 64(%r8)962; AVX-NEXT: vmovaps %ymm4, 160(%r8)963; AVX-NEXT: vmovaps %ymm8, 128(%r8)964; AVX-NEXT: vmovaps %ymm7, 224(%r8)965; AVX-NEXT: vmovaps %ymm6, 192(%r8)966; AVX-NEXT: vmovaps %ymm3, (%r8)967; AVX-NEXT: vmovaps %ymm2, 32(%r8)968; AVX-NEXT: vzeroupper969; AVX-NEXT: retq970;971; AVX2-LABEL: store_i32_stride4_vf16:972; AVX2: # %bb.0:973; AVX2-NEXT: vmovaps (%rdi), %ymm0974; AVX2-NEXT: vmovaps 32(%rdi), %ymm2975; AVX2-NEXT: vmovaps (%rsi), %ymm1976; AVX2-NEXT: vmovaps 32(%rsi), %ymm4977; AVX2-NEXT: vmovaps (%rcx), %xmm5978; AVX2-NEXT: vmovaps 32(%rcx), %xmm7979; AVX2-NEXT: vmovaps (%rdx), %xmm6980; AVX2-NEXT: vmovaps 32(%rdx), %xmm8981; AVX2-NEXT: vunpckhps {{.*#+}} xmm3 = xmm6[2],xmm5[2],xmm6[3],xmm5[3]982; AVX2-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,0,2,1]983; AVX2-NEXT: vmovaps (%rsi), %xmm9984; AVX2-NEXT: vmovaps (%rdi), %xmm10985; AVX2-NEXT: vunpckhps {{.*#+}} xmm11 = xmm10[2],xmm9[2],xmm10[3],xmm9[3]986; AVX2-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,1,1,3]987; AVX2-NEXT: vblendps {{.*#+}} ymm3 = ymm11[0,1],ymm3[2,3],ymm11[4,5],ymm3[6,7]988; AVX2-NEXT: vmovaps 32(%rsi), %xmm11989; AVX2-NEXT: vunpcklps {{.*#+}} xmm5 = xmm6[0],xmm5[0],xmm6[1],xmm5[1]990; AVX2-NEXT: vmovaps 32(%rdi), %xmm12991; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,0,2,1]992; AVX2-NEXT: vunpcklps {{.*#+}} xmm6 = xmm10[0],xmm9[0],xmm10[1],xmm9[1]993; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,1,1,3]994; AVX2-NEXT: vblendps {{.*#+}} ymm5 = ymm6[0,1],ymm5[2,3],ymm6[4,5],ymm5[6,7]995; AVX2-NEXT: vunpcklps {{.*#+}} xmm6 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]996; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,0,2,1]997; AVX2-NEXT: vunpcklps {{.*#+}} xmm9 = xmm12[0],xmm11[0],xmm12[1],xmm11[1]998; AVX2-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,1,1,3]999; AVX2-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1],ymm6[2,3],ymm9[4,5],ymm6[6,7]1000; AVX2-NEXT: vmovaps 32(%rdx), %ymm91001; AVX2-NEXT: vunpckhps {{.*#+}} xmm7 = xmm8[2],xmm7[2],xmm8[3],xmm7[3]1002; AVX2-NEXT: vmovaps 32(%rcx), %ymm81003; AVX2-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[0,0,2,1]1004; AVX2-NEXT: vunpckhps {{.*#+}} xmm10 = xmm12[2],xmm11[2],xmm12[3],xmm11[3]1005; AVX2-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,1,1,3]1006; AVX2-NEXT: vblendps {{.*#+}} ymm7 = ymm10[0,1],ymm7[2,3],ymm10[4,5],ymm7[6,7]1007; AVX2-NEXT: vunpcklps {{.*#+}} ymm10 = ymm9[0],ymm8[0],ymm9[1],ymm8[1],ymm9[4],ymm8[4],ymm9[5],ymm8[5]1008; AVX2-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,2,2,3]1009; AVX2-NEXT: vunpcklps {{.*#+}} ymm11 = ymm2[0],ymm4[0],ymm2[1],ymm4[1],ymm2[4],ymm4[4],ymm2[5],ymm4[5]1010; AVX2-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[2,1,3,3]1011; AVX2-NEXT: vblendps {{.*#+}} ymm10 = ymm11[0,1],ymm10[2,3],ymm11[4,5],ymm10[6,7]1012; AVX2-NEXT: vmovaps (%rdx), %ymm111013; AVX2-NEXT: vunpckhps {{.*#+}} ymm8 = ymm9[2],ymm8[2],ymm9[3],ymm8[3],ymm9[6],ymm8[6],ymm9[7],ymm8[7]1014; AVX2-NEXT: vmovaps (%rcx), %ymm91015; AVX2-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,2,2,3]1016; AVX2-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm4[2],ymm2[3],ymm4[3],ymm2[6],ymm4[6],ymm2[7],ymm4[7]1017; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[2,1,3,3]1018; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm8[2,3],ymm2[4,5],ymm8[6,7]1019; AVX2-NEXT: vunpcklps {{.*#+}} ymm4 = ymm11[0],ymm9[0],ymm11[1],ymm9[1],ymm11[4],ymm9[4],ymm11[5],ymm9[5]1020; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,2,3]1021; AVX2-NEXT: vunpcklps {{.*#+}} ymm8 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]1022; AVX2-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[2,1,3,3]1023; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm8[0,1],ymm4[2,3],ymm8[4,5],ymm4[6,7]1024; AVX2-NEXT: vunpckhps {{.*#+}} ymm8 = ymm11[2],ymm9[2],ymm11[3],ymm9[3],ymm11[6],ymm9[6],ymm11[7],ymm9[7]1025; AVX2-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]1026; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm8[0,2,2,3]1027; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]1028; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]1029; AVX2-NEXT: vmovaps %ymm0, 96(%r8)1030; AVX2-NEXT: vmovaps %ymm4, 64(%r8)1031; AVX2-NEXT: vmovaps %ymm2, 224(%r8)1032; AVX2-NEXT: vmovaps %ymm10, 192(%r8)1033; AVX2-NEXT: vmovaps %ymm7, 160(%r8)1034; AVX2-NEXT: vmovaps %ymm6, 128(%r8)1035; AVX2-NEXT: vmovaps %ymm5, (%r8)1036; AVX2-NEXT: vmovaps %ymm3, 32(%r8)1037; AVX2-NEXT: vzeroupper1038; AVX2-NEXT: retq1039;1040; AVX2-FP-LABEL: store_i32_stride4_vf16:1041; AVX2-FP: # %bb.0:1042; AVX2-FP-NEXT: vmovaps (%rdi), %ymm01043; AVX2-FP-NEXT: vmovaps 32(%rdi), %ymm21044; AVX2-FP-NEXT: vmovaps (%rsi), %ymm11045; AVX2-FP-NEXT: vmovaps 32(%rsi), %ymm41046; AVX2-FP-NEXT: vmovaps (%rcx), %xmm51047; AVX2-FP-NEXT: vmovaps 32(%rcx), %xmm71048; AVX2-FP-NEXT: vmovaps (%rdx), %xmm61049; AVX2-FP-NEXT: vmovaps 32(%rdx), %xmm81050; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm3 = xmm6[2],xmm5[2],xmm6[3],xmm5[3]1051; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,0,2,1]1052; AVX2-FP-NEXT: vmovaps (%rsi), %xmm91053; AVX2-FP-NEXT: vmovaps (%rdi), %xmm101054; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm11 = xmm10[2],xmm9[2],xmm10[3],xmm9[3]1055; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,1,1,3]1056; AVX2-FP-NEXT: vblendps {{.*#+}} ymm3 = ymm11[0,1],ymm3[2,3],ymm11[4,5],ymm3[6,7]1057; AVX2-FP-NEXT: vmovaps 32(%rsi), %xmm111058; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm6[0],xmm5[0],xmm6[1],xmm5[1]1059; AVX2-FP-NEXT: vmovaps 32(%rdi), %xmm121060; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,0,2,1]1061; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm6 = xmm10[0],xmm9[0],xmm10[1],xmm9[1]1062; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,1,1,3]1063; AVX2-FP-NEXT: vblendps {{.*#+}} ymm5 = ymm6[0,1],ymm5[2,3],ymm6[4,5],ymm5[6,7]1064; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm6 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]1065; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,0,2,1]1066; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm9 = xmm12[0],xmm11[0],xmm12[1],xmm11[1]1067; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,1,1,3]1068; AVX2-FP-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1],ymm6[2,3],ymm9[4,5],ymm6[6,7]1069; AVX2-FP-NEXT: vmovaps 32(%rdx), %ymm91070; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm7 = xmm8[2],xmm7[2],xmm8[3],xmm7[3]1071; AVX2-FP-NEXT: vmovaps 32(%rcx), %ymm81072; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[0,0,2,1]1073; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm10 = xmm12[2],xmm11[2],xmm12[3],xmm11[3]1074; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,1,1,3]1075; AVX2-FP-NEXT: vblendps {{.*#+}} ymm7 = ymm10[0,1],ymm7[2,3],ymm10[4,5],ymm7[6,7]1076; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm10 = ymm9[0],ymm8[0],ymm9[1],ymm8[1],ymm9[4],ymm8[4],ymm9[5],ymm8[5]1077; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,2,2,3]1078; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm11 = ymm2[0],ymm4[0],ymm2[1],ymm4[1],ymm2[4],ymm4[4],ymm2[5],ymm4[5]1079; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[2,1,3,3]1080; AVX2-FP-NEXT: vblendps {{.*#+}} ymm10 = ymm11[0,1],ymm10[2,3],ymm11[4,5],ymm10[6,7]1081; AVX2-FP-NEXT: vmovaps (%rdx), %ymm111082; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm8 = ymm9[2],ymm8[2],ymm9[3],ymm8[3],ymm9[6],ymm8[6],ymm9[7],ymm8[7]1083; AVX2-FP-NEXT: vmovaps (%rcx), %ymm91084; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,2,2,3]1085; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm4[2],ymm2[3],ymm4[3],ymm2[6],ymm4[6],ymm2[7],ymm4[7]1086; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[2,1,3,3]1087; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm8[2,3],ymm2[4,5],ymm8[6,7]1088; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm4 = ymm11[0],ymm9[0],ymm11[1],ymm9[1],ymm11[4],ymm9[4],ymm11[5],ymm9[5]1089; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,2,3]1090; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm8 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]1091; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[2,1,3,3]1092; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm8[0,1],ymm4[2,3],ymm8[4,5],ymm4[6,7]1093; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm8 = ymm11[2],ymm9[2],ymm11[3],ymm9[3],ymm11[6],ymm9[6],ymm11[7],ymm9[7]1094; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]1095; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm8[0,2,2,3]1096; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]1097; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]1098; AVX2-FP-NEXT: vmovaps %ymm0, 96(%r8)1099; AVX2-FP-NEXT: vmovaps %ymm4, 64(%r8)1100; AVX2-FP-NEXT: vmovaps %ymm2, 224(%r8)1101; AVX2-FP-NEXT: vmovaps %ymm10, 192(%r8)1102; AVX2-FP-NEXT: vmovaps %ymm7, 160(%r8)1103; AVX2-FP-NEXT: vmovaps %ymm6, 128(%r8)1104; AVX2-FP-NEXT: vmovaps %ymm5, (%r8)1105; AVX2-FP-NEXT: vmovaps %ymm3, 32(%r8)1106; AVX2-FP-NEXT: vzeroupper1107; AVX2-FP-NEXT: retq1108;1109; AVX2-FCP-LABEL: store_i32_stride4_vf16:1110; AVX2-FCP: # %bb.0:1111; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm01112; AVX2-FCP-NEXT: vmovaps 32(%rdi), %ymm21113; AVX2-FCP-NEXT: vmovaps (%rsi), %ymm11114; AVX2-FCP-NEXT: vmovaps 32(%rsi), %ymm41115; AVX2-FCP-NEXT: vmovaps (%rcx), %xmm51116; AVX2-FCP-NEXT: vmovaps 32(%rcx), %xmm71117; AVX2-FCP-NEXT: vmovaps (%rdx), %xmm61118; AVX2-FCP-NEXT: vmovaps 32(%rdx), %xmm81119; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm3 = xmm6[2],xmm5[2],xmm6[3],xmm5[3]1120; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,0,2,1]1121; AVX2-FCP-NEXT: vmovaps (%rsi), %xmm91122; AVX2-FCP-NEXT: vmovaps (%rdi), %xmm101123; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm11 = xmm10[2],xmm9[2],xmm10[3],xmm9[3]1124; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,1,1,3]1125; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm3 = ymm11[0,1],ymm3[2,3],ymm11[4,5],ymm3[6,7]1126; AVX2-FCP-NEXT: vmovaps 32(%rsi), %xmm111127; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm6[0],xmm5[0],xmm6[1],xmm5[1]1128; AVX2-FCP-NEXT: vmovaps 32(%rdi), %xmm121129; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,0,2,1]1130; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm6 = xmm10[0],xmm9[0],xmm10[1],xmm9[1]1131; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,1,1,3]1132; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm5 = ymm6[0,1],ymm5[2,3],ymm6[4,5],ymm5[6,7]1133; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm6 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]1134; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,0,2,1]1135; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm9 = xmm12[0],xmm11[0],xmm12[1],xmm11[1]1136; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,1,1,3]1137; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1],ymm6[2,3],ymm9[4,5],ymm6[6,7]1138; AVX2-FCP-NEXT: vmovaps 32(%rdx), %ymm91139; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm7 = xmm8[2],xmm7[2],xmm8[3],xmm7[3]1140; AVX2-FCP-NEXT: vmovaps 32(%rcx), %ymm81141; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[0,0,2,1]1142; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm10 = xmm12[2],xmm11[2],xmm12[3],xmm11[3]1143; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,1,1,3]1144; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm7 = ymm10[0,1],ymm7[2,3],ymm10[4,5],ymm7[6,7]1145; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm10 = ymm9[0],ymm8[0],ymm9[1],ymm8[1],ymm9[4],ymm8[4],ymm9[5],ymm8[5]1146; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,2,2,3]1147; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm11 = ymm2[0],ymm4[0],ymm2[1],ymm4[1],ymm2[4],ymm4[4],ymm2[5],ymm4[5]1148; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[2,1,3,3]1149; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm10 = ymm11[0,1],ymm10[2,3],ymm11[4,5],ymm10[6,7]1150; AVX2-FCP-NEXT: vmovaps (%rdx), %ymm111151; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm8 = ymm9[2],ymm8[2],ymm9[3],ymm8[3],ymm9[6],ymm8[6],ymm9[7],ymm8[7]1152; AVX2-FCP-NEXT: vmovaps (%rcx), %ymm91153; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,2,2,3]1154; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm4[2],ymm2[3],ymm4[3],ymm2[6],ymm4[6],ymm2[7],ymm4[7]1155; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[2,1,3,3]1156; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm8[2,3],ymm2[4,5],ymm8[6,7]1157; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm4 = ymm11[0],ymm9[0],ymm11[1],ymm9[1],ymm11[4],ymm9[4],ymm11[5],ymm9[5]1158; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,2,3]1159; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm8 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]1160; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[2,1,3,3]1161; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm8[0,1],ymm4[2,3],ymm8[4,5],ymm4[6,7]1162; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm8 = ymm11[2],ymm9[2],ymm11[3],ymm9[3],ymm11[6],ymm9[6],ymm11[7],ymm9[7]1163; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]1164; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm8[0,2,2,3]1165; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]1166; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]1167; AVX2-FCP-NEXT: vmovaps %ymm0, 96(%r8)1168; AVX2-FCP-NEXT: vmovaps %ymm4, 64(%r8)1169; AVX2-FCP-NEXT: vmovaps %ymm2, 224(%r8)1170; AVX2-FCP-NEXT: vmovaps %ymm10, 192(%r8)1171; AVX2-FCP-NEXT: vmovaps %ymm7, 160(%r8)1172; AVX2-FCP-NEXT: vmovaps %ymm6, 128(%r8)1173; AVX2-FCP-NEXT: vmovaps %ymm5, (%r8)1174; AVX2-FCP-NEXT: vmovaps %ymm3, 32(%r8)1175; AVX2-FCP-NEXT: vzeroupper1176; AVX2-FCP-NEXT: retq1177;1178; AVX512-LABEL: store_i32_stride4_vf16:1179; AVX512: # %bb.0:1180; AVX512-NEXT: vmovdqa64 (%rdi), %zmm01181; AVX512-NEXT: vmovdqa64 (%rsi), %zmm11182; AVX512-NEXT: vmovdqa64 (%rdx), %zmm21183; AVX512-NEXT: vmovdqa64 (%rcx), %zmm31184; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]1185; AVX512-NEXT: vpermi2d %zmm3, %zmm2, %zmm41186; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm5 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]1187; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm51188; AVX512-NEXT: movb $-86, %al1189; AVX512-NEXT: kmovw %eax, %k11190; AVX512-NEXT: vmovdqa64 %zmm4, %zmm5 {%k1}1191; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]1192; AVX512-NEXT: vpermi2d %zmm3, %zmm2, %zmm41193; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm6 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]1194; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm61195; AVX512-NEXT: vmovdqa64 %zmm4, %zmm6 {%k1}1196; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]1197; AVX512-NEXT: vpermi2d %zmm3, %zmm2, %zmm41198; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm7 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]1199; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm71200; AVX512-NEXT: vmovdqa64 %zmm4, %zmm7 {%k1}1201; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]1202; AVX512-NEXT: vpermi2d %zmm3, %zmm2, %zmm41203; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm2 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]1204; AVX512-NEXT: vpermi2d %zmm1, %zmm0, %zmm21205; AVX512-NEXT: vmovdqa64 %zmm4, %zmm2 {%k1}1206; AVX512-NEXT: vmovdqa64 %zmm2, 192(%r8)1207; AVX512-NEXT: vmovdqa64 %zmm7, 128(%r8)1208; AVX512-NEXT: vmovdqa64 %zmm6, 64(%r8)1209; AVX512-NEXT: vmovdqa64 %zmm5, (%r8)1210; AVX512-NEXT: vzeroupper1211; AVX512-NEXT: retq1212;1213; AVX512-FCP-LABEL: store_i32_stride4_vf16:1214; AVX512-FCP: # %bb.0:1215; AVX512-FCP-NEXT: vmovdqa64 (%rdi), %zmm01216; AVX512-FCP-NEXT: vmovdqa64 (%rsi), %zmm11217; AVX512-FCP-NEXT: vmovdqa64 (%rdx), %zmm21218; AVX512-FCP-NEXT: vmovdqa64 (%rcx), %zmm31219; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]1220; AVX512-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41221; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm5 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]1222; AVX512-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm51223; AVX512-FCP-NEXT: movb $-86, %al1224; AVX512-FCP-NEXT: kmovw %eax, %k11225; AVX512-FCP-NEXT: vmovdqa64 %zmm4, %zmm5 {%k1}1226; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]1227; AVX512-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41228; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]1229; AVX512-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm61230; AVX512-FCP-NEXT: vmovdqa64 %zmm4, %zmm6 {%k1}1231; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]1232; AVX512-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41233; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm7 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]1234; AVX512-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm71235; AVX512-FCP-NEXT: vmovdqa64 %zmm4, %zmm7 {%k1}1236; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]1237; AVX512-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41238; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]1239; AVX512-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm21240; AVX512-FCP-NEXT: vmovdqa64 %zmm4, %zmm2 {%k1}1241; AVX512-FCP-NEXT: vmovdqa64 %zmm2, 192(%r8)1242; AVX512-FCP-NEXT: vmovdqa64 %zmm7, 128(%r8)1243; AVX512-FCP-NEXT: vmovdqa64 %zmm6, 64(%r8)1244; AVX512-FCP-NEXT: vmovdqa64 %zmm5, (%r8)1245; AVX512-FCP-NEXT: vzeroupper1246; AVX512-FCP-NEXT: retq1247;1248; AVX512DQ-LABEL: store_i32_stride4_vf16:1249; AVX512DQ: # %bb.0:1250; AVX512DQ-NEXT: vmovdqa64 (%rdi), %zmm01251; AVX512DQ-NEXT: vmovdqa64 (%rsi), %zmm11252; AVX512DQ-NEXT: vmovdqa64 (%rdx), %zmm21253; AVX512DQ-NEXT: vmovdqa64 (%rcx), %zmm31254; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]1255; AVX512DQ-NEXT: vpermi2d %zmm3, %zmm2, %zmm41256; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm5 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]1257; AVX512DQ-NEXT: vpermi2d %zmm1, %zmm0, %zmm51258; AVX512DQ-NEXT: movb $-86, %al1259; AVX512DQ-NEXT: kmovw %eax, %k11260; AVX512DQ-NEXT: vmovdqa64 %zmm4, %zmm5 {%k1}1261; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]1262; AVX512DQ-NEXT: vpermi2d %zmm3, %zmm2, %zmm41263; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm6 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]1264; AVX512DQ-NEXT: vpermi2d %zmm1, %zmm0, %zmm61265; AVX512DQ-NEXT: vmovdqa64 %zmm4, %zmm6 {%k1}1266; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]1267; AVX512DQ-NEXT: vpermi2d %zmm3, %zmm2, %zmm41268; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm7 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]1269; AVX512DQ-NEXT: vpermi2d %zmm1, %zmm0, %zmm71270; AVX512DQ-NEXT: vmovdqa64 %zmm4, %zmm7 {%k1}1271; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]1272; AVX512DQ-NEXT: vpermi2d %zmm3, %zmm2, %zmm41273; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm2 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]1274; AVX512DQ-NEXT: vpermi2d %zmm1, %zmm0, %zmm21275; AVX512DQ-NEXT: vmovdqa64 %zmm4, %zmm2 {%k1}1276; AVX512DQ-NEXT: vmovdqa64 %zmm2, 192(%r8)1277; AVX512DQ-NEXT: vmovdqa64 %zmm7, 128(%r8)1278; AVX512DQ-NEXT: vmovdqa64 %zmm6, 64(%r8)1279; AVX512DQ-NEXT: vmovdqa64 %zmm5, (%r8)1280; AVX512DQ-NEXT: vzeroupper1281; AVX512DQ-NEXT: retq1282;1283; AVX512DQ-FCP-LABEL: store_i32_stride4_vf16:1284; AVX512DQ-FCP: # %bb.0:1285; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdi), %zmm01286; AVX512DQ-FCP-NEXT: vmovdqa64 (%rsi), %zmm11287; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdx), %zmm21288; AVX512DQ-FCP-NEXT: vmovdqa64 (%rcx), %zmm31289; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]1290; AVX512DQ-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41291; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm5 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]1292; AVX512DQ-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm51293; AVX512DQ-FCP-NEXT: movb $-86, %al1294; AVX512DQ-FCP-NEXT: kmovw %eax, %k11295; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, %zmm5 {%k1}1296; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]1297; AVX512DQ-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41298; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]1299; AVX512DQ-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm61300; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, %zmm6 {%k1}1301; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]1302; AVX512DQ-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41303; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm7 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]1304; AVX512DQ-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm71305; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, %zmm7 {%k1}1306; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]1307; AVX512DQ-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41308; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]1309; AVX512DQ-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm21310; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, %zmm2 {%k1}1311; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, 192(%r8)1312; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm7, 128(%r8)1313; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm6, 64(%r8)1314; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm5, (%r8)1315; AVX512DQ-FCP-NEXT: vzeroupper1316; AVX512DQ-FCP-NEXT: retq1317;1318; AVX512BW-LABEL: store_i32_stride4_vf16:1319; AVX512BW: # %bb.0:1320; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm01321; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm11322; AVX512BW-NEXT: vmovdqa64 (%rdx), %zmm21323; AVX512BW-NEXT: vmovdqa64 (%rcx), %zmm31324; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]1325; AVX512BW-NEXT: vpermi2d %zmm3, %zmm2, %zmm41326; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm5 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]1327; AVX512BW-NEXT: vpermi2d %zmm1, %zmm0, %zmm51328; AVX512BW-NEXT: movb $-86, %al1329; AVX512BW-NEXT: kmovd %eax, %k11330; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm5 {%k1}1331; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]1332; AVX512BW-NEXT: vpermi2d %zmm3, %zmm2, %zmm41333; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm6 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]1334; AVX512BW-NEXT: vpermi2d %zmm1, %zmm0, %zmm61335; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm6 {%k1}1336; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]1337; AVX512BW-NEXT: vpermi2d %zmm3, %zmm2, %zmm41338; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm7 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]1339; AVX512BW-NEXT: vpermi2d %zmm1, %zmm0, %zmm71340; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm7 {%k1}1341; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]1342; AVX512BW-NEXT: vpermi2d %zmm3, %zmm2, %zmm41343; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm2 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]1344; AVX512BW-NEXT: vpermi2d %zmm1, %zmm0, %zmm21345; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm2 {%k1}1346; AVX512BW-NEXT: vmovdqa64 %zmm2, 192(%r8)1347; AVX512BW-NEXT: vmovdqa64 %zmm7, 128(%r8)1348; AVX512BW-NEXT: vmovdqa64 %zmm6, 64(%r8)1349; AVX512BW-NEXT: vmovdqa64 %zmm5, (%r8)1350; AVX512BW-NEXT: vzeroupper1351; AVX512BW-NEXT: retq1352;1353; AVX512BW-FCP-LABEL: store_i32_stride4_vf16:1354; AVX512BW-FCP: # %bb.0:1355; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm01356; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm11357; AVX512BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm21358; AVX512BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm31359; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]1360; AVX512BW-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41361; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm5 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]1362; AVX512BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm51363; AVX512BW-FCP-NEXT: movb $-86, %al1364; AVX512BW-FCP-NEXT: kmovd %eax, %k11365; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm5 {%k1}1366; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]1367; AVX512BW-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41368; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]1369; AVX512BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm61370; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm6 {%k1}1371; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]1372; AVX512BW-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41373; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm7 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]1374; AVX512BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm71375; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm7 {%k1}1376; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]1377; AVX512BW-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41378; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]1379; AVX512BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm21380; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm2 {%k1}1381; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, 192(%r8)1382; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, 128(%r8)1383; AVX512BW-FCP-NEXT: vmovdqa64 %zmm6, 64(%r8)1384; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, (%r8)1385; AVX512BW-FCP-NEXT: vzeroupper1386; AVX512BW-FCP-NEXT: retq1387;1388; AVX512DQ-BW-LABEL: store_i32_stride4_vf16:1389; AVX512DQ-BW: # %bb.0:1390; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm01391; AVX512DQ-BW-NEXT: vmovdqa64 (%rsi), %zmm11392; AVX512DQ-BW-NEXT: vmovdqa64 (%rdx), %zmm21393; AVX512DQ-BW-NEXT: vmovdqa64 (%rcx), %zmm31394; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]1395; AVX512DQ-BW-NEXT: vpermi2d %zmm3, %zmm2, %zmm41396; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm5 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]1397; AVX512DQ-BW-NEXT: vpermi2d %zmm1, %zmm0, %zmm51398; AVX512DQ-BW-NEXT: movb $-86, %al1399; AVX512DQ-BW-NEXT: kmovd %eax, %k11400; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, %zmm5 {%k1}1401; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]1402; AVX512DQ-BW-NEXT: vpermi2d %zmm3, %zmm2, %zmm41403; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm6 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]1404; AVX512DQ-BW-NEXT: vpermi2d %zmm1, %zmm0, %zmm61405; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, %zmm6 {%k1}1406; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]1407; AVX512DQ-BW-NEXT: vpermi2d %zmm3, %zmm2, %zmm41408; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm7 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]1409; AVX512DQ-BW-NEXT: vpermi2d %zmm1, %zmm0, %zmm71410; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, %zmm7 {%k1}1411; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]1412; AVX512DQ-BW-NEXT: vpermi2d %zmm3, %zmm2, %zmm41413; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm2 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]1414; AVX512DQ-BW-NEXT: vpermi2d %zmm1, %zmm0, %zmm21415; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, %zmm2 {%k1}1416; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, 192(%r8)1417; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, 128(%r8)1418; AVX512DQ-BW-NEXT: vmovdqa64 %zmm6, 64(%r8)1419; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, (%r8)1420; AVX512DQ-BW-NEXT: vzeroupper1421; AVX512DQ-BW-NEXT: retq1422;1423; AVX512DQ-BW-FCP-LABEL: store_i32_stride4_vf16:1424; AVX512DQ-BW-FCP: # %bb.0:1425; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm01426; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm11427; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm21428; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm31429; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]1430; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41431; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm5 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]1432; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm51433; AVX512DQ-BW-FCP-NEXT: movb $-86, %al1434; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k11435; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm5 {%k1}1436; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]1437; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41438; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]1439; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm61440; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm6 {%k1}1441; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]1442; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41443; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm7 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]1444; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm71445; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm7 {%k1}1446; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]1447; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm3, %zmm2, %zmm41448; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]1449; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm21450; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm2 {%k1}1451; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, 192(%r8)1452; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, 128(%r8)1453; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm6, 64(%r8)1454; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, (%r8)1455; AVX512DQ-BW-FCP-NEXT: vzeroupper1456; AVX512DQ-BW-FCP-NEXT: retq1457 %in.vec0 = load <16 x i32>, ptr %in.vecptr0, align 641458 %in.vec1 = load <16 x i32>, ptr %in.vecptr1, align 641459 %in.vec2 = load <16 x i32>, ptr %in.vecptr2, align 641460 %in.vec3 = load <16 x i32>, ptr %in.vecptr3, align 641461 %1 = shufflevector <16 x i32> %in.vec0, <16 x i32> %in.vec1, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>1462 %2 = shufflevector <16 x i32> %in.vec2, <16 x i32> %in.vec3, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>1463 %3 = shufflevector <32 x i32> %1, <32 x i32> %2, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>1464 %interleaved.vec = shufflevector <64 x i32> %3, <64 x i32> poison, <64 x i32> <i32 0, i32 16, i32 32, i32 48, i32 1, i32 17, i32 33, i32 49, i32 2, i32 18, i32 34, i32 50, i32 3, i32 19, i32 35, i32 51, i32 4, i32 20, i32 36, i32 52, i32 5, i32 21, i32 37, i32 53, i32 6, i32 22, i32 38, i32 54, i32 7, i32 23, i32 39, i32 55, i32 8, i32 24, i32 40, i32 56, i32 9, i32 25, i32 41, i32 57, i32 10, i32 26, i32 42, i32 58, i32 11, i32 27, i32 43, i32 59, i32 12, i32 28, i32 44, i32 60, i32 13, i32 29, i32 45, i32 61, i32 14, i32 30, i32 46, i32 62, i32 15, i32 31, i32 47, i32 63>1465 store <64 x i32> %interleaved.vec, ptr %out.vec, align 641466 ret void1467}1468 1469define void @store_i32_stride4_vf32(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %out.vec) nounwind {1470; SSE-LABEL: store_i32_stride4_vf32:1471; SSE: # %bb.0:1472; SSE-NEXT: subq $184, %rsp1473; SSE-NEXT: movaps (%rdi), %xmm101474; SSE-NEXT: movaps 16(%rdi), %xmm111475; SSE-NEXT: movaps 32(%rdi), %xmm121476; SSE-NEXT: movaps 48(%rdi), %xmm131477; SSE-NEXT: movaps (%rsi), %xmm51478; SSE-NEXT: movaps 16(%rsi), %xmm21479; SSE-NEXT: movaps 32(%rsi), %xmm01480; SSE-NEXT: movaps (%rdx), %xmm61481; SSE-NEXT: movaps 16(%rdx), %xmm41482; SSE-NEXT: movaps 32(%rdx), %xmm11483; SSE-NEXT: movaps (%rcx), %xmm71484; SSE-NEXT: movaps 16(%rcx), %xmm81485; SSE-NEXT: movaps 32(%rcx), %xmm31486; SSE-NEXT: movaps %xmm6, %xmm91487; SSE-NEXT: unpcklps {{.*#+}} xmm9 = xmm9[0],xmm7[0],xmm9[1],xmm7[1]1488; SSE-NEXT: movaps %xmm10, %xmm141489; SSE-NEXT: unpcklps {{.*#+}} xmm14 = xmm14[0],xmm5[0],xmm14[1],xmm5[1]1490; SSE-NEXT: movaps %xmm14, %xmm151491; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm9[0]1492; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1493; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm9[1]1494; SSE-NEXT: movaps %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1495; SSE-NEXT: unpckhps {{.*#+}} xmm6 = xmm6[2],xmm7[2],xmm6[3],xmm7[3]1496; SSE-NEXT: unpckhps {{.*#+}} xmm10 = xmm10[2],xmm5[2],xmm10[3],xmm5[3]1497; SSE-NEXT: movaps %xmm10, %xmm51498; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm6[0]1499; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1500; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm6[1]1501; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1502; SSE-NEXT: movaps %xmm4, %xmm51503; SSE-NEXT: unpcklps {{.*#+}} xmm5 = xmm5[0],xmm8[0],xmm5[1],xmm8[1]1504; SSE-NEXT: movaps %xmm11, %xmm61505; SSE-NEXT: unpcklps {{.*#+}} xmm6 = xmm6[0],xmm2[0],xmm6[1],xmm2[1]1506; SSE-NEXT: movaps %xmm6, %xmm71507; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm5[0]1508; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1509; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm5[1]1510; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1511; SSE-NEXT: unpckhps {{.*#+}} xmm4 = xmm4[2],xmm8[2],xmm4[3],xmm8[3]1512; SSE-NEXT: unpckhps {{.*#+}} xmm11 = xmm11[2],xmm2[2],xmm11[3],xmm2[3]1513; SSE-NEXT: movaps %xmm11, %xmm21514; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm4[0]1515; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1516; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm4[1]1517; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1518; SSE-NEXT: movaps %xmm1, %xmm21519; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]1520; SSE-NEXT: movaps %xmm12, %xmm41521; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1]1522; SSE-NEXT: movaps %xmm4, %xmm51523; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm2[0]1524; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1525; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]1526; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1527; SSE-NEXT: movaps 48(%rdx), %xmm21528; SSE-NEXT: unpckhps {{.*#+}} xmm1 = xmm1[2],xmm3[2],xmm1[3],xmm3[3]1529; SSE-NEXT: movaps 48(%rcx), %xmm31530; SSE-NEXT: unpckhps {{.*#+}} xmm12 = xmm12[2],xmm0[2],xmm12[3],xmm0[3]1531; SSE-NEXT: movaps %xmm12, %xmm01532; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]1533; SSE-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill1534; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm1[1]1535; SSE-NEXT: movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1536; SSE-NEXT: movaps %xmm2, %xmm01537; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]1538; SSE-NEXT: movaps 48(%rsi), %xmm11539; SSE-NEXT: movaps %xmm13, %xmm41540; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]1541; SSE-NEXT: movaps %xmm4, %xmm51542; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm0[0]1543; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1544; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm0[1]1545; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1546; SSE-NEXT: unpckhps {{.*#+}} xmm2 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]1547; SSE-NEXT: unpckhps {{.*#+}} xmm13 = xmm13[2],xmm1[2],xmm13[3],xmm1[3]1548; SSE-NEXT: movaps %xmm13, %xmm01549; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm2[0]1550; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1551; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm2[1]1552; SSE-NEXT: movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1553; SSE-NEXT: movaps 64(%rdx), %xmm01554; SSE-NEXT: movaps 64(%rcx), %xmm11555; SSE-NEXT: movaps %xmm0, %xmm21556; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1557; SSE-NEXT: movaps 64(%rdi), %xmm131558; SSE-NEXT: movaps 64(%rsi), %xmm31559; SSE-NEXT: movaps %xmm13, %xmm141560; SSE-NEXT: unpcklps {{.*#+}} xmm14 = xmm14[0],xmm3[0],xmm14[1],xmm3[1]1561; SSE-NEXT: movaps %xmm14, %xmm41562; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm2[0]1563; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1564; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm2[1]1565; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]1566; SSE-NEXT: unpckhps {{.*#+}} xmm13 = xmm13[2],xmm3[2],xmm13[3],xmm3[3]1567; SSE-NEXT: movaps %xmm13, %xmm11568; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1569; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1570; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]1571; SSE-NEXT: movaps 80(%rdx), %xmm01572; SSE-NEXT: movaps 80(%rcx), %xmm11573; SSE-NEXT: movaps %xmm0, %xmm21574; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1575; SSE-NEXT: movaps 80(%rdi), %xmm111576; SSE-NEXT: movaps 80(%rsi), %xmm71577; SSE-NEXT: movaps %xmm11, %xmm81578; SSE-NEXT: unpcklps {{.*#+}} xmm8 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]1579; SSE-NEXT: movaps %xmm8, %xmm31580; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm2[0]1581; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1582; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm2[1]1583; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]1584; SSE-NEXT: unpckhps {{.*#+}} xmm11 = xmm11[2],xmm7[2],xmm11[3],xmm7[3]1585; SSE-NEXT: movaps %xmm11, %xmm151586; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm0[0]1587; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm0[1]1588; SSE-NEXT: movaps 96(%rdx), %xmm11589; SSE-NEXT: movaps 96(%rcx), %xmm61590; SSE-NEXT: movaps %xmm1, %xmm01591; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1]1592; SSE-NEXT: movaps 96(%rdi), %xmm51593; SSE-NEXT: movaps 96(%rsi), %xmm41594; SSE-NEXT: movaps %xmm5, %xmm91595; SSE-NEXT: unpcklps {{.*#+}} xmm9 = xmm9[0],xmm4[0],xmm9[1],xmm4[1]1596; SSE-NEXT: movaps %xmm9, %xmm121597; SSE-NEXT: movlhps {{.*#+}} xmm12 = xmm12[0],xmm0[0]1598; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm0[1]1599; SSE-NEXT: unpckhps {{.*#+}} xmm1 = xmm1[2],xmm6[2],xmm1[3],xmm6[3]1600; SSE-NEXT: unpckhps {{.*#+}} xmm5 = xmm5[2],xmm4[2],xmm5[3],xmm4[3]1601; SSE-NEXT: movaps %xmm5, %xmm101602; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm1[0]1603; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]1604; SSE-NEXT: movaps 112(%rdx), %xmm21605; SSE-NEXT: movaps 112(%rcx), %xmm71606; SSE-NEXT: movaps %xmm2, %xmm61607; SSE-NEXT: unpcklps {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1]1608; SSE-NEXT: movaps 112(%rdi), %xmm01609; SSE-NEXT: movaps 112(%rsi), %xmm41610; SSE-NEXT: movaps %xmm0, %xmm11611; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]1612; SSE-NEXT: movaps %xmm1, %xmm31613; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm6[0]1614; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm6[1]1615; SSE-NEXT: unpckhps {{.*#+}} xmm2 = xmm2[2],xmm7[2],xmm2[3],xmm7[3]1616; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm4[2],xmm0[3],xmm4[3]1617; SSE-NEXT: movaps %xmm0, %xmm41618; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm2[0]1619; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]1620; SSE-NEXT: movaps %xmm0, 496(%r8)1621; SSE-NEXT: movaps %xmm4, 480(%r8)1622; SSE-NEXT: movaps %xmm1, 464(%r8)1623; SSE-NEXT: movaps %xmm3, 448(%r8)1624; SSE-NEXT: movaps %xmm5, 432(%r8)1625; SSE-NEXT: movaps %xmm10, 416(%r8)1626; SSE-NEXT: movaps %xmm9, 400(%r8)1627; SSE-NEXT: movaps %xmm12, 384(%r8)1628; SSE-NEXT: movaps %xmm11, 368(%r8)1629; SSE-NEXT: movaps %xmm15, 352(%r8)1630; SSE-NEXT: movaps %xmm8, 336(%r8)1631; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1632; SSE-NEXT: movaps %xmm0, 320(%r8)1633; SSE-NEXT: movaps %xmm13, 304(%r8)1634; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1635; SSE-NEXT: movaps %xmm0, 288(%r8)1636; SSE-NEXT: movaps %xmm14, 272(%r8)1637; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1638; SSE-NEXT: movaps %xmm0, 256(%r8)1639; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1640; SSE-NEXT: movaps %xmm0, 240(%r8)1641; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1642; SSE-NEXT: movaps %xmm0, 224(%r8)1643; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1644; SSE-NEXT: movaps %xmm0, 208(%r8)1645; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1646; SSE-NEXT: movaps %xmm0, 192(%r8)1647; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1648; SSE-NEXT: movaps %xmm0, 176(%r8)1649; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload1650; SSE-NEXT: movaps %xmm0, 160(%r8)1651; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1652; SSE-NEXT: movaps %xmm0, 144(%r8)1653; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1654; SSE-NEXT: movaps %xmm0, 128(%r8)1655; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1656; SSE-NEXT: movaps %xmm0, 112(%r8)1657; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1658; SSE-NEXT: movaps %xmm0, 96(%r8)1659; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1660; SSE-NEXT: movaps %xmm0, 80(%r8)1661; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1662; SSE-NEXT: movaps %xmm0, 64(%r8)1663; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1664; SSE-NEXT: movaps %xmm0, 48(%r8)1665; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1666; SSE-NEXT: movaps %xmm0, 32(%r8)1667; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1668; SSE-NEXT: movaps %xmm0, 16(%r8)1669; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1670; SSE-NEXT: movaps %xmm0, (%r8)1671; SSE-NEXT: addq $184, %rsp1672; SSE-NEXT: retq1673;1674; AVX-LABEL: store_i32_stride4_vf32:1675; AVX: # %bb.0:1676; AVX-NEXT: subq $40, %rsp1677; AVX-NEXT: vmovaps 16(%rsi), %xmm11678; AVX-NEXT: vmovaps 32(%rsi), %xmm91679; AVX-NEXT: vmovaps 48(%rsi), %xmm61680; AVX-NEXT: vmovaps 16(%rdi), %xmm21681; AVX-NEXT: vmovaps 32(%rdi), %xmm101682; AVX-NEXT: vmovaps 48(%rdi), %xmm81683; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm2[2],xmm1[2],xmm2[3],xmm1[3]1684; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm0[2,3,2,3]1685; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm01686; AVX-NEXT: vmovaps 16(%rcx), %xmm31687; AVX-NEXT: vmovaps 32(%rcx), %xmm111688; AVX-NEXT: vmovaps 16(%rdx), %xmm41689; AVX-NEXT: vunpckhps {{.*#+}} xmm5 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]1690; AVX-NEXT: vshufps {{.*#+}} xmm7 = xmm3[2,2,2,2]1691; AVX-NEXT: vblendps {{.*#+}} xmm7 = xmm4[0,1,2],xmm7[3]1692; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm7, %ymm51693; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm5[2,3],ymm0[4,5],ymm5[6,7]1694; AVX-NEXT: vmovups %ymm0, (%rsp) # 32-byte Spill1695; AVX-NEXT: vshufps {{.*#+}} xmm5 = xmm2[1,1,1,1]1696; AVX-NEXT: vblendps {{.*#+}} xmm5 = xmm5[0],xmm1[1],xmm5[2,3]1697; AVX-NEXT: vunpcklps {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1698; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm1, %ymm11699; AVX-NEXT: vunpcklps {{.*#+}} xmm2 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]1700; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm2[0,1,0,1]1701; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm21702; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm2[2,3],ymm1[4,5],ymm2[6,7]1703; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1704; AVX-NEXT: vmovaps 64(%rsi), %xmm31705; AVX-NEXT: vmovaps 64(%rdi), %xmm41706; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm4[1,1,1,1]1707; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm3[1],xmm2[2,3]1708; AVX-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]1709; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm5, %ymm21710; AVX-NEXT: vmovaps 64(%rcx), %xmm51711; AVX-NEXT: vmovaps 64(%rdx), %xmm71712; AVX-NEXT: vunpcklps {{.*#+}} xmm12 = xmm7[0],xmm5[0],xmm7[1],xmm5[1]1713; AVX-NEXT: vshufps {{.*#+}} xmm13 = xmm12[0,1,0,1]1714; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm13, %ymm121715; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm2[0,1],ymm12[2,3],ymm2[4,5],ymm12[6,7]1716; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1717; AVX-NEXT: vunpckhps {{.*#+}} xmm3 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]1718; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm3[2,3,2,3]1719; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm3, %ymm31720; AVX-NEXT: vunpckhps {{.*#+}} xmm4 = xmm7[2],xmm5[2],xmm7[3],xmm5[3]1721; AVX-NEXT: vshufps {{.*#+}} xmm5 = xmm5[2,2,2,2]1722; AVX-NEXT: vblendps {{.*#+}} xmm5 = xmm7[0,1,2],xmm5[3]1723; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm5, %ymm41724; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm3[0,1],ymm4[2,3],ymm3[4,5],ymm4[6,7]1725; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1726; AVX-NEXT: vmovaps 80(%rsi), %xmm51727; AVX-NEXT: vmovaps 80(%rdi), %xmm71728; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm7[1,1,1,1]1729; AVX-NEXT: vblendps {{.*#+}} xmm4 = xmm4[0],xmm5[1],xmm4[2,3]1730; AVX-NEXT: vunpcklps {{.*#+}} xmm12 = xmm7[0],xmm5[0],xmm7[1],xmm5[1]1731; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm12, %ymm41732; AVX-NEXT: vmovaps 80(%rcx), %xmm131733; AVX-NEXT: vmovaps 80(%rdx), %xmm141734; AVX-NEXT: vunpcklps {{.*#+}} xmm12 = xmm14[0],xmm13[0],xmm14[1],xmm13[1]1735; AVX-NEXT: vshufps {{.*#+}} xmm15 = xmm12[0,1,0,1]1736; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm15, %ymm151737; AVX-NEXT: vmovaps 48(%rcx), %xmm121738; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm4[0,1],ymm15[2,3],ymm4[4,5],ymm15[6,7]1739; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1740; AVX-NEXT: vmovaps 32(%rdx), %xmm151741; AVX-NEXT: vunpckhps {{.*#+}} xmm5 = xmm7[2],xmm5[2],xmm7[3],xmm5[3]1742; AVX-NEXT: vshufps {{.*#+}} xmm7 = xmm5[2,3,2,3]1743; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm5, %ymm51744; AVX-NEXT: vunpckhps {{.*#+}} xmm7 = xmm14[2],xmm13[2],xmm14[3],xmm13[3]1745; AVX-NEXT: vshufps {{.*#+}} xmm13 = xmm13[2,2,2,2]1746; AVX-NEXT: vblendps {{.*#+}} xmm13 = xmm14[0,1,2],xmm13[3]1747; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm13, %ymm71748; AVX-NEXT: vblendps {{.*#+}} ymm5 = ymm5[0,1],ymm7[2,3],ymm5[4,5],ymm7[6,7]1749; AVX-NEXT: vshufps {{.*#+}} xmm7 = xmm10[1,1,1,1]1750; AVX-NEXT: vblendps {{.*#+}} xmm7 = xmm7[0],xmm9[1],xmm7[2,3]1751; AVX-NEXT: vunpcklps {{.*#+}} xmm13 = xmm10[0],xmm9[0],xmm10[1],xmm9[1]1752; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm13, %ymm71753; AVX-NEXT: vunpcklps {{.*#+}} xmm13 = xmm15[0],xmm11[0],xmm15[1],xmm11[1]1754; AVX-NEXT: vshufps {{.*#+}} xmm14 = xmm13[0,1,0,1]1755; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm14, %ymm131756; AVX-NEXT: vmovaps 48(%rdx), %xmm141757; AVX-NEXT: vblendps {{.*#+}} ymm7 = ymm7[0,1],ymm13[2,3],ymm7[4,5],ymm13[6,7]1758; AVX-NEXT: vunpckhps {{.*#+}} xmm9 = xmm10[2],xmm9[2],xmm10[3],xmm9[3]1759; AVX-NEXT: vshufps {{.*#+}} xmm10 = xmm9[2,3,2,3]1760; AVX-NEXT: vinsertf128 $1, %xmm10, %ymm9, %ymm91761; AVX-NEXT: vunpckhps {{.*#+}} xmm10 = xmm15[2],xmm11[2],xmm15[3],xmm11[3]1762; AVX-NEXT: vshufps {{.*#+}} xmm11 = xmm11[2,2,2,2]1763; AVX-NEXT: vblendps {{.*#+}} xmm11 = xmm15[0,1,2],xmm11[3]1764; AVX-NEXT: vinsertf128 $1, %xmm10, %ymm11, %ymm101765; AVX-NEXT: vblendps {{.*#+}} ymm9 = ymm9[0,1],ymm10[2,3],ymm9[4,5],ymm10[6,7]1766; AVX-NEXT: vshufps {{.*#+}} xmm10 = xmm8[1,1,1,1]1767; AVX-NEXT: vblendps {{.*#+}} xmm10 = xmm10[0],xmm6[1],xmm10[2,3]1768; AVX-NEXT: vunpcklps {{.*#+}} xmm11 = xmm8[0],xmm6[0],xmm8[1],xmm6[1]1769; AVX-NEXT: vinsertf128 $1, %xmm10, %ymm11, %ymm101770; AVX-NEXT: vunpcklps {{.*#+}} xmm11 = xmm14[0],xmm12[0],xmm14[1],xmm12[1]1771; AVX-NEXT: vshufps {{.*#+}} xmm13 = xmm11[0,1,0,1]1772; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm13, %ymm111773; AVX-NEXT: vblendps {{.*#+}} ymm10 = ymm10[0,1],ymm11[2,3],ymm10[4,5],ymm11[6,7]1774; AVX-NEXT: vunpckhps {{.*#+}} xmm6 = xmm8[2],xmm6[2],xmm8[3],xmm6[3]1775; AVX-NEXT: vshufps {{.*#+}} xmm8 = xmm6[2,3,2,3]1776; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm6, %ymm61777; AVX-NEXT: vunpckhps {{.*#+}} xmm8 = xmm14[2],xmm12[2],xmm14[3],xmm12[3]1778; AVX-NEXT: vshufps {{.*#+}} xmm11 = xmm12[2,2,2,2]1779; AVX-NEXT: vblendps {{.*#+}} xmm11 = xmm14[0,1,2],xmm11[3]1780; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm11, %ymm81781; AVX-NEXT: vblendps {{.*#+}} ymm6 = ymm6[0,1],ymm8[2,3],ymm6[4,5],ymm8[6,7]1782; AVX-NEXT: vmovaps 96(%rsi), %xmm111783; AVX-NEXT: vmovaps 96(%rdi), %xmm121784; AVX-NEXT: vshufps {{.*#+}} xmm8 = xmm12[1,1,1,1]1785; AVX-NEXT: vblendps {{.*#+}} xmm8 = xmm8[0],xmm11[1],xmm8[2,3]1786; AVX-NEXT: vunpcklps {{.*#+}} xmm13 = xmm12[0],xmm11[0],xmm12[1],xmm11[1]1787; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm13, %ymm81788; AVX-NEXT: vmovaps 96(%rcx), %xmm131789; AVX-NEXT: vmovaps 96(%rdx), %xmm141790; AVX-NEXT: vunpcklps {{.*#+}} xmm15 = xmm14[0],xmm13[0],xmm14[1],xmm13[1]1791; AVX-NEXT: vshufps {{.*#+}} xmm0 = xmm15[0,1,0,1]1792; AVX-NEXT: vinsertf128 $1, %xmm15, %ymm0, %ymm01793; AVX-NEXT: vblendps {{.*#+}} ymm8 = ymm8[0,1],ymm0[2,3],ymm8[4,5],ymm0[6,7]1794; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm12[2],xmm11[2],xmm12[3],xmm11[3]1795; AVX-NEXT: vshufps {{.*#+}} xmm11 = xmm0[2,3,2,3]1796; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm0, %ymm01797; AVX-NEXT: vunpckhps {{.*#+}} xmm11 = xmm14[2],xmm13[2],xmm14[3],xmm13[3]1798; AVX-NEXT: vshufps {{.*#+}} xmm12 = xmm13[2,2,2,2]1799; AVX-NEXT: vblendps {{.*#+}} xmm12 = xmm14[0,1,2],xmm12[3]1800; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm12, %ymm111801; AVX-NEXT: vblendps {{.*#+}} ymm11 = ymm0[0,1],ymm11[2,3],ymm0[4,5],ymm11[6,7]1802; AVX-NEXT: vmovaps 112(%rsi), %xmm11803; AVX-NEXT: vmovaps 112(%rdi), %xmm131804; AVX-NEXT: vshufps {{.*#+}} xmm12 = xmm13[1,1,1,1]1805; AVX-NEXT: vblendps {{.*#+}} xmm12 = xmm12[0],xmm1[1],xmm12[2,3]1806; AVX-NEXT: vunpcklps {{.*#+}} xmm14 = xmm13[0],xmm1[0],xmm13[1],xmm1[1]1807; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm14, %ymm121808; AVX-NEXT: vmovaps 112(%rcx), %xmm141809; AVX-NEXT: vmovaps 112(%rdx), %xmm151810; AVX-NEXT: vunpcklps {{.*#+}} xmm0 = xmm15[0],xmm14[0],xmm15[1],xmm14[1]1811; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm0[0,1,0,1]1812; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm2, %ymm01813; AVX-NEXT: vblendps {{.*#+}} ymm12 = ymm12[0,1],ymm0[2,3],ymm12[4,5],ymm0[6,7]1814; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm13[2],xmm1[2],xmm13[3],xmm1[3]1815; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]1816; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm01817; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm15[2],xmm14[2],xmm15[3],xmm14[3]1818; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm14[2,2,2,2]1819; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm15[0,1,2],xmm2[3]1820; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm11821; AVX-NEXT: vmovaps (%rsi), %xmm21822; AVX-NEXT: vblendps {{.*#+}} ymm3 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]1823; AVX-NEXT: vmovaps (%rdi), %xmm11824; AVX-NEXT: vshufps {{.*#+}} xmm13 = xmm1[1,1,1,1]1825; AVX-NEXT: vblendps {{.*#+}} xmm13 = xmm13[0],xmm2[1],xmm13[2,3]1826; AVX-NEXT: vunpcklps {{.*#+}} xmm14 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]1827; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm14, %ymm131828; AVX-NEXT: vmovaps (%rcx), %xmm141829; AVX-NEXT: vmovaps (%rdx), %xmm151830; AVX-NEXT: vunpcklps {{.*#+}} xmm0 = xmm15[0],xmm14[0],xmm15[1],xmm14[1]1831; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm0[0,1,0,1]1832; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm4, %ymm01833; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm13[0,1],ymm0[2,3],ymm13[4,5],ymm0[6,7]1834; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]1835; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm1[2,3,2,3]1836; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm11837; AVX-NEXT: vunpckhps {{.*#+}} xmm2 = xmm15[2],xmm14[2],xmm15[3],xmm14[3]1838; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm14[2,2,2,2]1839; AVX-NEXT: vblendps {{.*#+}} xmm4 = xmm15[0,1,2],xmm4[3]1840; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm21841; AVX-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm2[2,3],ymm1[4,5],ymm2[6,7]1842; AVX-NEXT: vmovaps %ymm1, 32(%r8)1843; AVX-NEXT: vmovaps %ymm0, (%r8)1844; AVX-NEXT: vmovaps %ymm3, 480(%r8)1845; AVX-NEXT: vmovaps %ymm12, 448(%r8)1846; AVX-NEXT: vmovaps %ymm11, 416(%r8)1847; AVX-NEXT: vmovaps %ymm8, 384(%r8)1848; AVX-NEXT: vmovaps %ymm6, 224(%r8)1849; AVX-NEXT: vmovaps %ymm10, 192(%r8)1850; AVX-NEXT: vmovaps %ymm9, 160(%r8)1851; AVX-NEXT: vmovaps %ymm7, 128(%r8)1852; AVX-NEXT: vmovaps %ymm5, 352(%r8)1853; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1854; AVX-NEXT: vmovaps %ymm0, 320(%r8)1855; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1856; AVX-NEXT: vmovaps %ymm0, 288(%r8)1857; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1858; AVX-NEXT: vmovaps %ymm0, 256(%r8)1859; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1860; AVX-NEXT: vmovaps %ymm0, 64(%r8)1861; AVX-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload1862; AVX-NEXT: vmovaps %ymm0, 96(%r8)1863; AVX-NEXT: addq $40, %rsp1864; AVX-NEXT: vzeroupper1865; AVX-NEXT: retq1866;1867; AVX2-LABEL: store_i32_stride4_vf32:1868; AVX2: # %bb.0:1869; AVX2-NEXT: pushq %rax1870; AVX2-NEXT: vmovaps 64(%rdi), %ymm21871; AVX2-NEXT: vmovaps (%rdi), %ymm61872; AVX2-NEXT: vmovaps 64(%rsi), %ymm41873; AVX2-NEXT: vmovaps (%rsi), %ymm71874; AVX2-NEXT: vmovaps (%rcx), %xmm111875; AVX2-NEXT: vmovaps 32(%rcx), %xmm51876; AVX2-NEXT: vmovaps 64(%rcx), %xmm11877; AVX2-NEXT: vmovaps (%rdx), %xmm121878; AVX2-NEXT: vmovaps 32(%rdx), %xmm81879; AVX2-NEXT: vmovaps 64(%rdx), %xmm31880; AVX2-NEXT: vunpcklps {{.*#+}} xmm0 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]1881; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]1882; AVX2-NEXT: vmovaps 32(%rsi), %xmm91883; AVX2-NEXT: vmovaps 64(%rsi), %xmm101884; AVX2-NEXT: vmovaps 32(%rdi), %xmm131885; AVX2-NEXT: vmovaps 64(%rdi), %xmm141886; AVX2-NEXT: vunpcklps {{.*#+}} xmm15 = xmm14[0],xmm10[0],xmm14[1],xmm10[1]1887; AVX2-NEXT: vpermpd {{.*#+}} ymm15 = ymm15[0,1,1,3]1888; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm15[0,1],ymm0[2,3],ymm15[4,5],ymm0[6,7]1889; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1890; AVX2-NEXT: vunpckhps {{.*#+}} xmm1 = xmm3[2],xmm1[2],xmm3[3],xmm1[3]1891; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,0,2,1]1892; AVX2-NEXT: vunpckhps {{.*#+}} xmm3 = xmm14[2],xmm10[2],xmm14[3],xmm10[3]1893; AVX2-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,1,1,3]1894; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm3[0,1],ymm1[2,3],ymm3[4,5],ymm1[6,7]1895; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1896; AVX2-NEXT: vunpcklps {{.*#+}} xmm3 = xmm8[0],xmm5[0],xmm8[1],xmm5[1]1897; AVX2-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,0,2,1]1898; AVX2-NEXT: vunpcklps {{.*#+}} xmm10 = xmm13[0],xmm9[0],xmm13[1],xmm9[1]1899; AVX2-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,1,1,3]1900; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm10[0,1],ymm3[2,3],ymm10[4,5],ymm3[6,7]1901; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1902; AVX2-NEXT: vunpckhps {{.*#+}} xmm5 = xmm8[2],xmm5[2],xmm8[3],xmm5[3]1903; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,0,2,1]1904; AVX2-NEXT: vunpckhps {{.*#+}} xmm8 = xmm13[2],xmm9[2],xmm13[3],xmm9[3]1905; AVX2-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,1,1,3]1906; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm8[0,1],ymm5[2,3],ymm8[4,5],ymm5[6,7]1907; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1908; AVX2-NEXT: vmovaps 96(%rcx), %xmm91909; AVX2-NEXT: vmovaps 96(%rdx), %xmm101910; AVX2-NEXT: vunpcklps {{.*#+}} xmm8 = xmm10[0],xmm9[0],xmm10[1],xmm9[1]1911; AVX2-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,0,2,1]1912; AVX2-NEXT: vmovaps 96(%rsi), %xmm131913; AVX2-NEXT: vmovaps 96(%rdi), %xmm141914; AVX2-NEXT: vunpcklps {{.*#+}} xmm15 = xmm14[0],xmm13[0],xmm14[1],xmm13[1]1915; AVX2-NEXT: vpermpd {{.*#+}} ymm15 = ymm15[0,1,1,3]1916; AVX2-NEXT: vblendps {{.*#+}} ymm8 = ymm15[0,1],ymm8[2,3],ymm15[4,5],ymm8[6,7]1917; AVX2-NEXT: vmovaps (%rsi), %xmm151918; AVX2-NEXT: vunpckhps {{.*#+}} xmm9 = xmm10[2],xmm9[2],xmm10[3],xmm9[3]1919; AVX2-NEXT: vmovaps (%rdi), %xmm01920; AVX2-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,0,2,1]1921; AVX2-NEXT: vunpckhps {{.*#+}} xmm10 = xmm14[2],xmm13[2],xmm14[3],xmm13[3]1922; AVX2-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,1,1,3]1923; AVX2-NEXT: vblendps {{.*#+}} ymm9 = ymm10[0,1],ymm9[2,3],ymm10[4,5],ymm9[6,7]1924; AVX2-NEXT: vunpcklps {{.*#+}} xmm10 = xmm12[0],xmm11[0],xmm12[1],xmm11[1]1925; AVX2-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,0,2,1]1926; AVX2-NEXT: vunpcklps {{.*#+}} xmm13 = xmm0[0],xmm15[0],xmm0[1],xmm15[1]1927; AVX2-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,1,1,3]1928; AVX2-NEXT: vblendps {{.*#+}} ymm10 = ymm13[0,1],ymm10[2,3],ymm13[4,5],ymm10[6,7]1929; AVX2-NEXT: vmovaps (%rdx), %ymm131930; AVX2-NEXT: vunpckhps {{.*#+}} xmm11 = xmm12[2],xmm11[2],xmm12[3],xmm11[3]1931; AVX2-NEXT: vmovaps (%rcx), %ymm141932; AVX2-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,0,2,1]1933; AVX2-NEXT: vunpckhps {{.*#+}} xmm0 = xmm0[2],xmm15[2],xmm0[3],xmm15[3]1934; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,1,1,3]1935; AVX2-NEXT: vblendps {{.*#+}} ymm11 = ymm0[0,1],ymm11[2,3],ymm0[4,5],ymm11[6,7]1936; AVX2-NEXT: vunpckhps {{.*#+}} ymm0 = ymm13[2],ymm14[2],ymm13[3],ymm14[3],ymm13[6],ymm14[6],ymm13[7],ymm14[7]1937; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]1938; AVX2-NEXT: vunpckhps {{.*#+}} ymm12 = ymm6[2],ymm7[2],ymm6[3],ymm7[3],ymm6[6],ymm7[6],ymm6[7],ymm7[7]1939; AVX2-NEXT: vpermpd {{.*#+}} ymm12 = ymm12[2,1,3,3]1940; AVX2-NEXT: vblendps {{.*#+}} ymm12 = ymm12[0,1],ymm0[2,3],ymm12[4,5],ymm0[6,7]1941; AVX2-NEXT: vmovaps 64(%rdx), %ymm01942; AVX2-NEXT: vunpcklps {{.*#+}} ymm13 = ymm13[0],ymm14[0],ymm13[1],ymm14[1],ymm13[4],ymm14[4],ymm13[5],ymm14[5]1943; AVX2-NEXT: vmovaps 64(%rcx), %ymm141944; AVX2-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,2,2,3]1945; AVX2-NEXT: vunpcklps {{.*#+}} ymm6 = ymm6[0],ymm7[0],ymm6[1],ymm7[1],ymm6[4],ymm7[4],ymm6[5],ymm7[5]1946; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[2,1,3,3]1947; AVX2-NEXT: vblendps {{.*#+}} ymm6 = ymm6[0,1],ymm13[2,3],ymm6[4,5],ymm13[6,7]1948; AVX2-NEXT: vunpcklps {{.*#+}} ymm7 = ymm0[0],ymm14[0],ymm0[1],ymm14[1],ymm0[4],ymm14[4],ymm0[5],ymm14[5]1949; AVX2-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[0,2,2,3]1950; AVX2-NEXT: vunpcklps {{.*#+}} ymm13 = ymm2[0],ymm4[0],ymm2[1],ymm4[1],ymm2[4],ymm4[4],ymm2[5],ymm4[5]1951; AVX2-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[2,1,3,3]1952; AVX2-NEXT: vblendps {{.*#+}} ymm7 = ymm13[0,1],ymm7[2,3],ymm13[4,5],ymm7[6,7]1953; AVX2-NEXT: vmovaps 32(%rdi), %ymm131954; AVX2-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm14[2],ymm0[3],ymm14[3],ymm0[6],ymm14[6],ymm0[7],ymm14[7]1955; AVX2-NEXT: vmovaps 32(%rdx), %ymm141956; AVX2-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm4[2],ymm2[3],ymm4[3],ymm2[6],ymm4[6],ymm2[7],ymm4[7]1957; AVX2-NEXT: vmovaps 32(%rcx), %ymm41958; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]1959; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[2,1,3,3]1960; AVX2-NEXT: vblendps {{.*#+}} ymm3 = ymm2[0,1],ymm0[2,3],ymm2[4,5],ymm0[6,7]1961; AVX2-NEXT: vunpcklps {{.*#+}} ymm2 = ymm14[0],ymm4[0],ymm14[1],ymm4[1],ymm14[4],ymm4[4],ymm14[5],ymm4[5]1962; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]1963; AVX2-NEXT: vmovaps 32(%rsi), %ymm151964; AVX2-NEXT: vunpcklps {{.*#+}} ymm1 = ymm13[0],ymm15[0],ymm13[1],ymm15[1],ymm13[4],ymm15[4],ymm13[5],ymm15[5]1965; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]1966; AVX2-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm2[2,3],ymm1[4,5],ymm2[6,7]1967; AVX2-NEXT: vunpckhps {{.*#+}} ymm2 = ymm14[2],ymm4[2],ymm14[3],ymm4[3],ymm14[6],ymm4[6],ymm14[7],ymm4[7]1968; AVX2-NEXT: vunpckhps {{.*#+}} ymm4 = ymm13[2],ymm15[2],ymm13[3],ymm15[3],ymm13[6],ymm15[6],ymm13[7],ymm15[7]1969; AVX2-NEXT: vmovaps 96(%rdx), %ymm131970; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]1971; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[2,1,3,3]1972; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5],ymm2[6,7]1973; AVX2-NEXT: vmovaps 96(%rcx), %ymm41974; AVX2-NEXT: vunpcklps {{.*#+}} ymm14 = ymm13[0],ymm4[0],ymm13[1],ymm4[1],ymm13[4],ymm4[4],ymm13[5],ymm4[5]1975; AVX2-NEXT: vpermpd {{.*#+}} ymm14 = ymm14[0,2,2,3]1976; AVX2-NEXT: vmovaps 96(%rdi), %ymm151977; AVX2-NEXT: vmovaps 96(%rsi), %ymm01978; AVX2-NEXT: vunpcklps {{.*#+}} ymm5 = ymm15[0],ymm0[0],ymm15[1],ymm0[1],ymm15[4],ymm0[4],ymm15[5],ymm0[5]1979; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]1980; AVX2-NEXT: vblendps {{.*#+}} ymm5 = ymm5[0,1],ymm14[2,3],ymm5[4,5],ymm14[6,7]1981; AVX2-NEXT: vunpckhps {{.*#+}} ymm4 = ymm13[2],ymm4[2],ymm13[3],ymm4[3],ymm13[6],ymm4[6],ymm13[7],ymm4[7]1982; AVX2-NEXT: vunpckhps {{.*#+}} ymm0 = ymm15[2],ymm0[2],ymm15[3],ymm0[3],ymm15[6],ymm0[6],ymm15[7],ymm0[7]1983; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,2,3]1984; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]1985; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm4[2,3],ymm0[4,5],ymm4[6,7]1986; AVX2-NEXT: vmovaps %ymm0, 480(%r8)1987; AVX2-NEXT: vmovaps %ymm5, 448(%r8)1988; AVX2-NEXT: vmovaps %ymm2, 224(%r8)1989; AVX2-NEXT: vmovaps %ymm1, 192(%r8)1990; AVX2-NEXT: vmovaps %ymm3, 352(%r8)1991; AVX2-NEXT: vmovaps %ymm7, 320(%r8)1992; AVX2-NEXT: vmovaps %ymm6, 64(%r8)1993; AVX2-NEXT: vmovaps %ymm12, 96(%r8)1994; AVX2-NEXT: vmovaps %ymm11, 32(%r8)1995; AVX2-NEXT: vmovaps %ymm10, (%r8)1996; AVX2-NEXT: vmovaps %ymm9, 416(%r8)1997; AVX2-NEXT: vmovaps %ymm8, 384(%r8)1998; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1999; AVX2-NEXT: vmovaps %ymm0, 160(%r8)2000; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2001; AVX2-NEXT: vmovaps %ymm0, 128(%r8)2002; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2003; AVX2-NEXT: vmovaps %ymm0, 288(%r8)2004; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2005; AVX2-NEXT: vmovaps %ymm0, 256(%r8)2006; AVX2-NEXT: popq %rax2007; AVX2-NEXT: vzeroupper2008; AVX2-NEXT: retq2009;2010; AVX2-FP-LABEL: store_i32_stride4_vf32:2011; AVX2-FP: # %bb.0:2012; AVX2-FP-NEXT: pushq %rax2013; AVX2-FP-NEXT: vmovaps 64(%rdi), %ymm22014; AVX2-FP-NEXT: vmovaps (%rdi), %ymm62015; AVX2-FP-NEXT: vmovaps 64(%rsi), %ymm42016; AVX2-FP-NEXT: vmovaps (%rsi), %ymm72017; AVX2-FP-NEXT: vmovaps (%rcx), %xmm112018; AVX2-FP-NEXT: vmovaps 32(%rcx), %xmm52019; AVX2-FP-NEXT: vmovaps 64(%rcx), %xmm12020; AVX2-FP-NEXT: vmovaps (%rdx), %xmm122021; AVX2-FP-NEXT: vmovaps 32(%rdx), %xmm82022; AVX2-FP-NEXT: vmovaps 64(%rdx), %xmm32023; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm0 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]2024; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]2025; AVX2-FP-NEXT: vmovaps 32(%rsi), %xmm92026; AVX2-FP-NEXT: vmovaps 64(%rsi), %xmm102027; AVX2-FP-NEXT: vmovaps 32(%rdi), %xmm132028; AVX2-FP-NEXT: vmovaps 64(%rdi), %xmm142029; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm15 = xmm14[0],xmm10[0],xmm14[1],xmm10[1]2030; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm15 = ymm15[0,1,1,3]2031; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm15[0,1],ymm0[2,3],ymm15[4,5],ymm0[6,7]2032; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2033; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm3[2],xmm1[2],xmm3[3],xmm1[3]2034; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,0,2,1]2035; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm3 = xmm14[2],xmm10[2],xmm14[3],xmm10[3]2036; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,1,1,3]2037; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm3[0,1],ymm1[2,3],ymm3[4,5],ymm1[6,7]2038; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2039; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm3 = xmm8[0],xmm5[0],xmm8[1],xmm5[1]2040; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,0,2,1]2041; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm10 = xmm13[0],xmm9[0],xmm13[1],xmm9[1]2042; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,1,1,3]2043; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm10[0,1],ymm3[2,3],ymm10[4,5],ymm3[6,7]2044; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2045; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm5 = xmm8[2],xmm5[2],xmm8[3],xmm5[3]2046; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,0,2,1]2047; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm8 = xmm13[2],xmm9[2],xmm13[3],xmm9[3]2048; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,1,1,3]2049; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm8[0,1],ymm5[2,3],ymm8[4,5],ymm5[6,7]2050; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2051; AVX2-FP-NEXT: vmovaps 96(%rcx), %xmm92052; AVX2-FP-NEXT: vmovaps 96(%rdx), %xmm102053; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm8 = xmm10[0],xmm9[0],xmm10[1],xmm9[1]2054; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,0,2,1]2055; AVX2-FP-NEXT: vmovaps 96(%rsi), %xmm132056; AVX2-FP-NEXT: vmovaps 96(%rdi), %xmm142057; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm15 = xmm14[0],xmm13[0],xmm14[1],xmm13[1]2058; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm15 = ymm15[0,1,1,3]2059; AVX2-FP-NEXT: vblendps {{.*#+}} ymm8 = ymm15[0,1],ymm8[2,3],ymm15[4,5],ymm8[6,7]2060; AVX2-FP-NEXT: vmovaps (%rsi), %xmm152061; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm9 = xmm10[2],xmm9[2],xmm10[3],xmm9[3]2062; AVX2-FP-NEXT: vmovaps (%rdi), %xmm02063; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,0,2,1]2064; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm10 = xmm14[2],xmm13[2],xmm14[3],xmm13[3]2065; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,1,1,3]2066; AVX2-FP-NEXT: vblendps {{.*#+}} ymm9 = ymm10[0,1],ymm9[2,3],ymm10[4,5],ymm9[6,7]2067; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm10 = xmm12[0],xmm11[0],xmm12[1],xmm11[1]2068; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,0,2,1]2069; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm13 = xmm0[0],xmm15[0],xmm0[1],xmm15[1]2070; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,1,1,3]2071; AVX2-FP-NEXT: vblendps {{.*#+}} ymm10 = ymm13[0,1],ymm10[2,3],ymm13[4,5],ymm10[6,7]2072; AVX2-FP-NEXT: vmovaps (%rdx), %ymm132073; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm11 = xmm12[2],xmm11[2],xmm12[3],xmm11[3]2074; AVX2-FP-NEXT: vmovaps (%rcx), %ymm142075; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,0,2,1]2076; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm0[2],xmm15[2],xmm0[3],xmm15[3]2077; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,1,1,3]2078; AVX2-FP-NEXT: vblendps {{.*#+}} ymm11 = ymm0[0,1],ymm11[2,3],ymm0[4,5],ymm11[6,7]2079; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm13[2],ymm14[2],ymm13[3],ymm14[3],ymm13[6],ymm14[6],ymm13[7],ymm14[7]2080; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]2081; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm12 = ymm6[2],ymm7[2],ymm6[3],ymm7[3],ymm6[6],ymm7[6],ymm6[7],ymm7[7]2082; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm12 = ymm12[2,1,3,3]2083; AVX2-FP-NEXT: vblendps {{.*#+}} ymm12 = ymm12[0,1],ymm0[2,3],ymm12[4,5],ymm0[6,7]2084; AVX2-FP-NEXT: vmovaps 64(%rdx), %ymm02085; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm13 = ymm13[0],ymm14[0],ymm13[1],ymm14[1],ymm13[4],ymm14[4],ymm13[5],ymm14[5]2086; AVX2-FP-NEXT: vmovaps 64(%rcx), %ymm142087; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,2,2,3]2088; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm6 = ymm6[0],ymm7[0],ymm6[1],ymm7[1],ymm6[4],ymm7[4],ymm6[5],ymm7[5]2089; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[2,1,3,3]2090; AVX2-FP-NEXT: vblendps {{.*#+}} ymm6 = ymm6[0,1],ymm13[2,3],ymm6[4,5],ymm13[6,7]2091; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm7 = ymm0[0],ymm14[0],ymm0[1],ymm14[1],ymm0[4],ymm14[4],ymm0[5],ymm14[5]2092; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[0,2,2,3]2093; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm13 = ymm2[0],ymm4[0],ymm2[1],ymm4[1],ymm2[4],ymm4[4],ymm2[5],ymm4[5]2094; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[2,1,3,3]2095; AVX2-FP-NEXT: vblendps {{.*#+}} ymm7 = ymm13[0,1],ymm7[2,3],ymm13[4,5],ymm7[6,7]2096; AVX2-FP-NEXT: vmovaps 32(%rdi), %ymm132097; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm14[2],ymm0[3],ymm14[3],ymm0[6],ymm14[6],ymm0[7],ymm14[7]2098; AVX2-FP-NEXT: vmovaps 32(%rdx), %ymm142099; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm4[2],ymm2[3],ymm4[3],ymm2[6],ymm4[6],ymm2[7],ymm4[7]2100; AVX2-FP-NEXT: vmovaps 32(%rcx), %ymm42101; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]2102; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[2,1,3,3]2103; AVX2-FP-NEXT: vblendps {{.*#+}} ymm3 = ymm2[0,1],ymm0[2,3],ymm2[4,5],ymm0[6,7]2104; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm14[0],ymm4[0],ymm14[1],ymm4[1],ymm14[4],ymm4[4],ymm14[5],ymm4[5]2105; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]2106; AVX2-FP-NEXT: vmovaps 32(%rsi), %ymm152107; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm1 = ymm13[0],ymm15[0],ymm13[1],ymm15[1],ymm13[4],ymm15[4],ymm13[5],ymm15[5]2108; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]2109; AVX2-FP-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm2[2,3],ymm1[4,5],ymm2[6,7]2110; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm2 = ymm14[2],ymm4[2],ymm14[3],ymm4[3],ymm14[6],ymm4[6],ymm14[7],ymm4[7]2111; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm4 = ymm13[2],ymm15[2],ymm13[3],ymm15[3],ymm13[6],ymm15[6],ymm13[7],ymm15[7]2112; AVX2-FP-NEXT: vmovaps 96(%rdx), %ymm132113; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]2114; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[2,1,3,3]2115; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5],ymm2[6,7]2116; AVX2-FP-NEXT: vmovaps 96(%rcx), %ymm42117; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm14 = ymm13[0],ymm4[0],ymm13[1],ymm4[1],ymm13[4],ymm4[4],ymm13[5],ymm4[5]2118; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm14 = ymm14[0,2,2,3]2119; AVX2-FP-NEXT: vmovaps 96(%rdi), %ymm152120; AVX2-FP-NEXT: vmovaps 96(%rsi), %ymm02121; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm5 = ymm15[0],ymm0[0],ymm15[1],ymm0[1],ymm15[4],ymm0[4],ymm15[5],ymm0[5]2122; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]2123; AVX2-FP-NEXT: vblendps {{.*#+}} ymm5 = ymm5[0,1],ymm14[2,3],ymm5[4,5],ymm14[6,7]2124; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm4 = ymm13[2],ymm4[2],ymm13[3],ymm4[3],ymm13[6],ymm4[6],ymm13[7],ymm4[7]2125; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm15[2],ymm0[2],ymm15[3],ymm0[3],ymm15[6],ymm0[6],ymm15[7],ymm0[7]2126; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,2,3]2127; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2128; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm4[2,3],ymm0[4,5],ymm4[6,7]2129; AVX2-FP-NEXT: vmovaps %ymm0, 480(%r8)2130; AVX2-FP-NEXT: vmovaps %ymm5, 448(%r8)2131; AVX2-FP-NEXT: vmovaps %ymm2, 224(%r8)2132; AVX2-FP-NEXT: vmovaps %ymm1, 192(%r8)2133; AVX2-FP-NEXT: vmovaps %ymm3, 352(%r8)2134; AVX2-FP-NEXT: vmovaps %ymm7, 320(%r8)2135; AVX2-FP-NEXT: vmovaps %ymm6, 64(%r8)2136; AVX2-FP-NEXT: vmovaps %ymm12, 96(%r8)2137; AVX2-FP-NEXT: vmovaps %ymm11, 32(%r8)2138; AVX2-FP-NEXT: vmovaps %ymm10, (%r8)2139; AVX2-FP-NEXT: vmovaps %ymm9, 416(%r8)2140; AVX2-FP-NEXT: vmovaps %ymm8, 384(%r8)2141; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2142; AVX2-FP-NEXT: vmovaps %ymm0, 160(%r8)2143; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2144; AVX2-FP-NEXT: vmovaps %ymm0, 128(%r8)2145; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2146; AVX2-FP-NEXT: vmovaps %ymm0, 288(%r8)2147; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2148; AVX2-FP-NEXT: vmovaps %ymm0, 256(%r8)2149; AVX2-FP-NEXT: popq %rax2150; AVX2-FP-NEXT: vzeroupper2151; AVX2-FP-NEXT: retq2152;2153; AVX2-FCP-LABEL: store_i32_stride4_vf32:2154; AVX2-FCP: # %bb.0:2155; AVX2-FCP-NEXT: pushq %rax2156; AVX2-FCP-NEXT: vmovaps 64(%rdi), %ymm22157; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm62158; AVX2-FCP-NEXT: vmovaps 64(%rsi), %ymm42159; AVX2-FCP-NEXT: vmovaps (%rsi), %ymm72160; AVX2-FCP-NEXT: vmovaps (%rcx), %xmm112161; AVX2-FCP-NEXT: vmovaps 32(%rcx), %xmm52162; AVX2-FCP-NEXT: vmovaps 64(%rcx), %xmm12163; AVX2-FCP-NEXT: vmovaps (%rdx), %xmm122164; AVX2-FCP-NEXT: vmovaps 32(%rdx), %xmm82165; AVX2-FCP-NEXT: vmovaps 64(%rdx), %xmm32166; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm0 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]2167; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]2168; AVX2-FCP-NEXT: vmovaps 32(%rsi), %xmm92169; AVX2-FCP-NEXT: vmovaps 64(%rsi), %xmm102170; AVX2-FCP-NEXT: vmovaps 32(%rdi), %xmm132171; AVX2-FCP-NEXT: vmovaps 64(%rdi), %xmm142172; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm15 = xmm14[0],xmm10[0],xmm14[1],xmm10[1]2173; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm15 = ymm15[0,1,1,3]2174; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm15[0,1],ymm0[2,3],ymm15[4,5],ymm0[6,7]2175; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2176; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm3[2],xmm1[2],xmm3[3],xmm1[3]2177; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,0,2,1]2178; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm3 = xmm14[2],xmm10[2],xmm14[3],xmm10[3]2179; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,1,1,3]2180; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm3[0,1],ymm1[2,3],ymm3[4,5],ymm1[6,7]2181; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2182; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm3 = xmm8[0],xmm5[0],xmm8[1],xmm5[1]2183; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,0,2,1]2184; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm10 = xmm13[0],xmm9[0],xmm13[1],xmm9[1]2185; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,1,1,3]2186; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm10[0,1],ymm3[2,3],ymm10[4,5],ymm3[6,7]2187; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2188; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm5 = xmm8[2],xmm5[2],xmm8[3],xmm5[3]2189; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,0,2,1]2190; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm8 = xmm13[2],xmm9[2],xmm13[3],xmm9[3]2191; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,1,1,3]2192; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm8[0,1],ymm5[2,3],ymm8[4,5],ymm5[6,7]2193; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2194; AVX2-FCP-NEXT: vmovaps 96(%rcx), %xmm92195; AVX2-FCP-NEXT: vmovaps 96(%rdx), %xmm102196; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm8 = xmm10[0],xmm9[0],xmm10[1],xmm9[1]2197; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,0,2,1]2198; AVX2-FCP-NEXT: vmovaps 96(%rsi), %xmm132199; AVX2-FCP-NEXT: vmovaps 96(%rdi), %xmm142200; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm15 = xmm14[0],xmm13[0],xmm14[1],xmm13[1]2201; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm15 = ymm15[0,1,1,3]2202; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm8 = ymm15[0,1],ymm8[2,3],ymm15[4,5],ymm8[6,7]2203; AVX2-FCP-NEXT: vmovaps (%rsi), %xmm152204; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm9 = xmm10[2],xmm9[2],xmm10[3],xmm9[3]2205; AVX2-FCP-NEXT: vmovaps (%rdi), %xmm02206; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,0,2,1]2207; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm10 = xmm14[2],xmm13[2],xmm14[3],xmm13[3]2208; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,1,1,3]2209; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm9 = ymm10[0,1],ymm9[2,3],ymm10[4,5],ymm9[6,7]2210; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm10 = xmm12[0],xmm11[0],xmm12[1],xmm11[1]2211; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,0,2,1]2212; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm13 = xmm0[0],xmm15[0],xmm0[1],xmm15[1]2213; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,1,1,3]2214; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm10 = ymm13[0,1],ymm10[2,3],ymm13[4,5],ymm10[6,7]2215; AVX2-FCP-NEXT: vmovaps (%rdx), %ymm132216; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm11 = xmm12[2],xmm11[2],xmm12[3],xmm11[3]2217; AVX2-FCP-NEXT: vmovaps (%rcx), %ymm142218; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,0,2,1]2219; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm0[2],xmm15[2],xmm0[3],xmm15[3]2220; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,1,1,3]2221; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm11 = ymm0[0,1],ymm11[2,3],ymm0[4,5],ymm11[6,7]2222; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm13[2],ymm14[2],ymm13[3],ymm14[3],ymm13[6],ymm14[6],ymm13[7],ymm14[7]2223; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]2224; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm12 = ymm6[2],ymm7[2],ymm6[3],ymm7[3],ymm6[6],ymm7[6],ymm6[7],ymm7[7]2225; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm12 = ymm12[2,1,3,3]2226; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm12 = ymm12[0,1],ymm0[2,3],ymm12[4,5],ymm0[6,7]2227; AVX2-FCP-NEXT: vmovaps 64(%rdx), %ymm02228; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm13 = ymm13[0],ymm14[0],ymm13[1],ymm14[1],ymm13[4],ymm14[4],ymm13[5],ymm14[5]2229; AVX2-FCP-NEXT: vmovaps 64(%rcx), %ymm142230; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,2,2,3]2231; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm6 = ymm6[0],ymm7[0],ymm6[1],ymm7[1],ymm6[4],ymm7[4],ymm6[5],ymm7[5]2232; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[2,1,3,3]2233; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm6 = ymm6[0,1],ymm13[2,3],ymm6[4,5],ymm13[6,7]2234; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm7 = ymm0[0],ymm14[0],ymm0[1],ymm14[1],ymm0[4],ymm14[4],ymm0[5],ymm14[5]2235; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[0,2,2,3]2236; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm13 = ymm2[0],ymm4[0],ymm2[1],ymm4[1],ymm2[4],ymm4[4],ymm2[5],ymm4[5]2237; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[2,1,3,3]2238; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm7 = ymm13[0,1],ymm7[2,3],ymm13[4,5],ymm7[6,7]2239; AVX2-FCP-NEXT: vmovaps 32(%rdi), %ymm132240; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm14[2],ymm0[3],ymm14[3],ymm0[6],ymm14[6],ymm0[7],ymm14[7]2241; AVX2-FCP-NEXT: vmovaps 32(%rdx), %ymm142242; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm4[2],ymm2[3],ymm4[3],ymm2[6],ymm4[6],ymm2[7],ymm4[7]2243; AVX2-FCP-NEXT: vmovaps 32(%rcx), %ymm42244; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]2245; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[2,1,3,3]2246; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm3 = ymm2[0,1],ymm0[2,3],ymm2[4,5],ymm0[6,7]2247; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm14[0],ymm4[0],ymm14[1],ymm4[1],ymm14[4],ymm4[4],ymm14[5],ymm4[5]2248; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]2249; AVX2-FCP-NEXT: vmovaps 32(%rsi), %ymm152250; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm1 = ymm13[0],ymm15[0],ymm13[1],ymm15[1],ymm13[4],ymm15[4],ymm13[5],ymm15[5]2251; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]2252; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm2[2,3],ymm1[4,5],ymm2[6,7]2253; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm2 = ymm14[2],ymm4[2],ymm14[3],ymm4[3],ymm14[6],ymm4[6],ymm14[7],ymm4[7]2254; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm4 = ymm13[2],ymm15[2],ymm13[3],ymm15[3],ymm13[6],ymm15[6],ymm13[7],ymm15[7]2255; AVX2-FCP-NEXT: vmovaps 96(%rdx), %ymm132256; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]2257; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[2,1,3,3]2258; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5],ymm2[6,7]2259; AVX2-FCP-NEXT: vmovaps 96(%rcx), %ymm42260; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm14 = ymm13[0],ymm4[0],ymm13[1],ymm4[1],ymm13[4],ymm4[4],ymm13[5],ymm4[5]2261; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm14 = ymm14[0,2,2,3]2262; AVX2-FCP-NEXT: vmovaps 96(%rdi), %ymm152263; AVX2-FCP-NEXT: vmovaps 96(%rsi), %ymm02264; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm5 = ymm15[0],ymm0[0],ymm15[1],ymm0[1],ymm15[4],ymm0[4],ymm15[5],ymm0[5]2265; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]2266; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm5 = ymm5[0,1],ymm14[2,3],ymm5[4,5],ymm14[6,7]2267; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm4 = ymm13[2],ymm4[2],ymm13[3],ymm4[3],ymm13[6],ymm4[6],ymm13[7],ymm4[7]2268; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm15[2],ymm0[2],ymm15[3],ymm0[3],ymm15[6],ymm0[6],ymm15[7],ymm0[7]2269; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,2,3]2270; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2271; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm4[2,3],ymm0[4,5],ymm4[6,7]2272; AVX2-FCP-NEXT: vmovaps %ymm0, 480(%r8)2273; AVX2-FCP-NEXT: vmovaps %ymm5, 448(%r8)2274; AVX2-FCP-NEXT: vmovaps %ymm2, 224(%r8)2275; AVX2-FCP-NEXT: vmovaps %ymm1, 192(%r8)2276; AVX2-FCP-NEXT: vmovaps %ymm3, 352(%r8)2277; AVX2-FCP-NEXT: vmovaps %ymm7, 320(%r8)2278; AVX2-FCP-NEXT: vmovaps %ymm6, 64(%r8)2279; AVX2-FCP-NEXT: vmovaps %ymm12, 96(%r8)2280; AVX2-FCP-NEXT: vmovaps %ymm11, 32(%r8)2281; AVX2-FCP-NEXT: vmovaps %ymm10, (%r8)2282; AVX2-FCP-NEXT: vmovaps %ymm9, 416(%r8)2283; AVX2-FCP-NEXT: vmovaps %ymm8, 384(%r8)2284; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2285; AVX2-FCP-NEXT: vmovaps %ymm0, 160(%r8)2286; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2287; AVX2-FCP-NEXT: vmovaps %ymm0, 128(%r8)2288; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2289; AVX2-FCP-NEXT: vmovaps %ymm0, 288(%r8)2290; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2291; AVX2-FCP-NEXT: vmovaps %ymm0, 256(%r8)2292; AVX2-FCP-NEXT: popq %rax2293; AVX2-FCP-NEXT: vzeroupper2294; AVX2-FCP-NEXT: retq2295;2296; AVX512-LABEL: store_i32_stride4_vf32:2297; AVX512: # %bb.0:2298; AVX512-NEXT: vmovdqa64 (%rdi), %zmm02299; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm12300; AVX512-NEXT: vmovdqa64 (%rsi), %zmm22301; AVX512-NEXT: vmovdqa64 64(%rsi), %zmm32302; AVX512-NEXT: vmovdqa64 (%rdx), %zmm42303; AVX512-NEXT: vmovdqa64 64(%rdx), %zmm52304; AVX512-NEXT: vmovdqa64 (%rcx), %zmm62305; AVX512-NEXT: vmovdqa64 64(%rcx), %zmm72306; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm8 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]2307; AVX512-NEXT: vmovdqa64 %zmm4, %zmm92308; AVX512-NEXT: vpermt2d %zmm6, %zmm8, %zmm92309; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm10 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]2310; AVX512-NEXT: vmovdqa64 %zmm0, %zmm112311; AVX512-NEXT: vpermt2d %zmm2, %zmm10, %zmm112312; AVX512-NEXT: movb $-86, %al2313; AVX512-NEXT: kmovw %eax, %k12314; AVX512-NEXT: vmovdqa64 %zmm9, %zmm11 {%k1}2315; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm9 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]2316; AVX512-NEXT: vmovdqa64 %zmm4, %zmm122317; AVX512-NEXT: vpermt2d %zmm6, %zmm9, %zmm122318; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm13 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]2319; AVX512-NEXT: vmovdqa64 %zmm0, %zmm142320; AVX512-NEXT: vpermt2d %zmm2, %zmm13, %zmm142321; AVX512-NEXT: vmovdqa64 %zmm12, %zmm14 {%k1}2322; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm12 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]2323; AVX512-NEXT: vmovdqa64 %zmm4, %zmm152324; AVX512-NEXT: vpermt2d %zmm6, %zmm12, %zmm152325; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm16 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]2326; AVX512-NEXT: vmovdqa64 %zmm0, %zmm172327; AVX512-NEXT: vpermt2d %zmm2, %zmm16, %zmm172328; AVX512-NEXT: vmovdqa64 %zmm15, %zmm17 {%k1}2329; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm15 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]2330; AVX512-NEXT: vpermt2d %zmm6, %zmm15, %zmm42331; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm6 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]2332; AVX512-NEXT: vpermt2d %zmm2, %zmm6, %zmm02333; AVX512-NEXT: vmovdqa64 %zmm4, %zmm0 {%k1}2334; AVX512-NEXT: vpermi2d %zmm7, %zmm5, %zmm82335; AVX512-NEXT: vpermi2d %zmm3, %zmm1, %zmm102336; AVX512-NEXT: vmovdqa64 %zmm8, %zmm10 {%k1}2337; AVX512-NEXT: vpermi2d %zmm7, %zmm5, %zmm92338; AVX512-NEXT: vpermi2d %zmm3, %zmm1, %zmm132339; AVX512-NEXT: vmovdqa64 %zmm9, %zmm13 {%k1}2340; AVX512-NEXT: vpermi2d %zmm7, %zmm5, %zmm122341; AVX512-NEXT: vpermi2d %zmm3, %zmm1, %zmm162342; AVX512-NEXT: vmovdqa64 %zmm12, %zmm16 {%k1}2343; AVX512-NEXT: vpermt2d %zmm7, %zmm15, %zmm52344; AVX512-NEXT: vpermt2d %zmm3, %zmm6, %zmm12345; AVX512-NEXT: vmovdqa64 %zmm5, %zmm1 {%k1}2346; AVX512-NEXT: vmovdqa64 %zmm1, 384(%r8)2347; AVX512-NEXT: vmovdqa64 %zmm16, 448(%r8)2348; AVX512-NEXT: vmovdqa64 %zmm13, 256(%r8)2349; AVX512-NEXT: vmovdqa64 %zmm10, 320(%r8)2350; AVX512-NEXT: vmovdqa64 %zmm0, 128(%r8)2351; AVX512-NEXT: vmovdqa64 %zmm17, 192(%r8)2352; AVX512-NEXT: vmovdqa64 %zmm14, (%r8)2353; AVX512-NEXT: vmovdqa64 %zmm11, 64(%r8)2354; AVX512-NEXT: vzeroupper2355; AVX512-NEXT: retq2356;2357; AVX512-FCP-LABEL: store_i32_stride4_vf32:2358; AVX512-FCP: # %bb.0:2359; AVX512-FCP-NEXT: vmovdqa64 (%rdi), %zmm02360; AVX512-FCP-NEXT: vmovdqa64 64(%rdi), %zmm12361; AVX512-FCP-NEXT: vmovdqa64 (%rsi), %zmm22362; AVX512-FCP-NEXT: vmovdqa64 64(%rsi), %zmm32363; AVX512-FCP-NEXT: vmovdqa64 (%rdx), %zmm42364; AVX512-FCP-NEXT: vmovdqa64 64(%rdx), %zmm52365; AVX512-FCP-NEXT: vmovdqa64 (%rcx), %zmm62366; AVX512-FCP-NEXT: vmovdqa64 64(%rcx), %zmm72367; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm8 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]2368; AVX512-FCP-NEXT: vmovdqa64 %zmm4, %zmm92369; AVX512-FCP-NEXT: vpermt2d %zmm6, %zmm8, %zmm92370; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm10 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]2371; AVX512-FCP-NEXT: vmovdqa64 %zmm0, %zmm112372; AVX512-FCP-NEXT: vpermt2d %zmm2, %zmm10, %zmm112373; AVX512-FCP-NEXT: movb $-86, %al2374; AVX512-FCP-NEXT: kmovw %eax, %k12375; AVX512-FCP-NEXT: vmovdqa64 %zmm9, %zmm11 {%k1}2376; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm9 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]2377; AVX512-FCP-NEXT: vmovdqa64 %zmm4, %zmm122378; AVX512-FCP-NEXT: vpermt2d %zmm6, %zmm9, %zmm122379; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm13 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]2380; AVX512-FCP-NEXT: vmovdqa64 %zmm0, %zmm142381; AVX512-FCP-NEXT: vpermt2d %zmm2, %zmm13, %zmm142382; AVX512-FCP-NEXT: vmovdqa64 %zmm12, %zmm14 {%k1}2383; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm12 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]2384; AVX512-FCP-NEXT: vmovdqa64 %zmm4, %zmm152385; AVX512-FCP-NEXT: vpermt2d %zmm6, %zmm12, %zmm152386; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm16 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]2387; AVX512-FCP-NEXT: vmovdqa64 %zmm0, %zmm172388; AVX512-FCP-NEXT: vpermt2d %zmm2, %zmm16, %zmm172389; AVX512-FCP-NEXT: vmovdqa64 %zmm15, %zmm17 {%k1}2390; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm15 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]2391; AVX512-FCP-NEXT: vpermt2d %zmm6, %zmm15, %zmm42392; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]2393; AVX512-FCP-NEXT: vpermt2d %zmm2, %zmm6, %zmm02394; AVX512-FCP-NEXT: vmovdqa64 %zmm4, %zmm0 {%k1}2395; AVX512-FCP-NEXT: vpermi2d %zmm7, %zmm5, %zmm82396; AVX512-FCP-NEXT: vpermi2d %zmm3, %zmm1, %zmm102397; AVX512-FCP-NEXT: vmovdqa64 %zmm8, %zmm10 {%k1}2398; AVX512-FCP-NEXT: vpermi2d %zmm7, %zmm5, %zmm92399; AVX512-FCP-NEXT: vpermi2d %zmm3, %zmm1, %zmm132400; AVX512-FCP-NEXT: vmovdqa64 %zmm9, %zmm13 {%k1}2401; AVX512-FCP-NEXT: vpermi2d %zmm7, %zmm5, %zmm122402; AVX512-FCP-NEXT: vpermi2d %zmm3, %zmm1, %zmm162403; AVX512-FCP-NEXT: vmovdqa64 %zmm12, %zmm16 {%k1}2404; AVX512-FCP-NEXT: vpermt2d %zmm7, %zmm15, %zmm52405; AVX512-FCP-NEXT: vpermt2d %zmm3, %zmm6, %zmm12406; AVX512-FCP-NEXT: vmovdqa64 %zmm5, %zmm1 {%k1}2407; AVX512-FCP-NEXT: vmovdqa64 %zmm1, 384(%r8)2408; AVX512-FCP-NEXT: vmovdqa64 %zmm16, 448(%r8)2409; AVX512-FCP-NEXT: vmovdqa64 %zmm13, 256(%r8)2410; AVX512-FCP-NEXT: vmovdqa64 %zmm10, 320(%r8)2411; AVX512-FCP-NEXT: vmovdqa64 %zmm0, 128(%r8)2412; AVX512-FCP-NEXT: vmovdqa64 %zmm17, 192(%r8)2413; AVX512-FCP-NEXT: vmovdqa64 %zmm14, (%r8)2414; AVX512-FCP-NEXT: vmovdqa64 %zmm11, 64(%r8)2415; AVX512-FCP-NEXT: vzeroupper2416; AVX512-FCP-NEXT: retq2417;2418; AVX512DQ-LABEL: store_i32_stride4_vf32:2419; AVX512DQ: # %bb.0:2420; AVX512DQ-NEXT: vmovdqa64 (%rdi), %zmm02421; AVX512DQ-NEXT: vmovdqa64 64(%rdi), %zmm12422; AVX512DQ-NEXT: vmovdqa64 (%rsi), %zmm22423; AVX512DQ-NEXT: vmovdqa64 64(%rsi), %zmm32424; AVX512DQ-NEXT: vmovdqa64 (%rdx), %zmm42425; AVX512DQ-NEXT: vmovdqa64 64(%rdx), %zmm52426; AVX512DQ-NEXT: vmovdqa64 (%rcx), %zmm62427; AVX512DQ-NEXT: vmovdqa64 64(%rcx), %zmm72428; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm8 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]2429; AVX512DQ-NEXT: vmovdqa64 %zmm4, %zmm92430; AVX512DQ-NEXT: vpermt2d %zmm6, %zmm8, %zmm92431; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm10 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]2432; AVX512DQ-NEXT: vmovdqa64 %zmm0, %zmm112433; AVX512DQ-NEXT: vpermt2d %zmm2, %zmm10, %zmm112434; AVX512DQ-NEXT: movb $-86, %al2435; AVX512DQ-NEXT: kmovw %eax, %k12436; AVX512DQ-NEXT: vmovdqa64 %zmm9, %zmm11 {%k1}2437; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm9 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]2438; AVX512DQ-NEXT: vmovdqa64 %zmm4, %zmm122439; AVX512DQ-NEXT: vpermt2d %zmm6, %zmm9, %zmm122440; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm13 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]2441; AVX512DQ-NEXT: vmovdqa64 %zmm0, %zmm142442; AVX512DQ-NEXT: vpermt2d %zmm2, %zmm13, %zmm142443; AVX512DQ-NEXT: vmovdqa64 %zmm12, %zmm14 {%k1}2444; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm12 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]2445; AVX512DQ-NEXT: vmovdqa64 %zmm4, %zmm152446; AVX512DQ-NEXT: vpermt2d %zmm6, %zmm12, %zmm152447; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm16 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]2448; AVX512DQ-NEXT: vmovdqa64 %zmm0, %zmm172449; AVX512DQ-NEXT: vpermt2d %zmm2, %zmm16, %zmm172450; AVX512DQ-NEXT: vmovdqa64 %zmm15, %zmm17 {%k1}2451; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm15 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]2452; AVX512DQ-NEXT: vpermt2d %zmm6, %zmm15, %zmm42453; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm6 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]2454; AVX512DQ-NEXT: vpermt2d %zmm2, %zmm6, %zmm02455; AVX512DQ-NEXT: vmovdqa64 %zmm4, %zmm0 {%k1}2456; AVX512DQ-NEXT: vpermi2d %zmm7, %zmm5, %zmm82457; AVX512DQ-NEXT: vpermi2d %zmm3, %zmm1, %zmm102458; AVX512DQ-NEXT: vmovdqa64 %zmm8, %zmm10 {%k1}2459; AVX512DQ-NEXT: vpermi2d %zmm7, %zmm5, %zmm92460; AVX512DQ-NEXT: vpermi2d %zmm3, %zmm1, %zmm132461; AVX512DQ-NEXT: vmovdqa64 %zmm9, %zmm13 {%k1}2462; AVX512DQ-NEXT: vpermi2d %zmm7, %zmm5, %zmm122463; AVX512DQ-NEXT: vpermi2d %zmm3, %zmm1, %zmm162464; AVX512DQ-NEXT: vmovdqa64 %zmm12, %zmm16 {%k1}2465; AVX512DQ-NEXT: vpermt2d %zmm7, %zmm15, %zmm52466; AVX512DQ-NEXT: vpermt2d %zmm3, %zmm6, %zmm12467; AVX512DQ-NEXT: vmovdqa64 %zmm5, %zmm1 {%k1}2468; AVX512DQ-NEXT: vmovdqa64 %zmm1, 384(%r8)2469; AVX512DQ-NEXT: vmovdqa64 %zmm16, 448(%r8)2470; AVX512DQ-NEXT: vmovdqa64 %zmm13, 256(%r8)2471; AVX512DQ-NEXT: vmovdqa64 %zmm10, 320(%r8)2472; AVX512DQ-NEXT: vmovdqa64 %zmm0, 128(%r8)2473; AVX512DQ-NEXT: vmovdqa64 %zmm17, 192(%r8)2474; AVX512DQ-NEXT: vmovdqa64 %zmm14, (%r8)2475; AVX512DQ-NEXT: vmovdqa64 %zmm11, 64(%r8)2476; AVX512DQ-NEXT: vzeroupper2477; AVX512DQ-NEXT: retq2478;2479; AVX512DQ-FCP-LABEL: store_i32_stride4_vf32:2480; AVX512DQ-FCP: # %bb.0:2481; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdi), %zmm02482; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdi), %zmm12483; AVX512DQ-FCP-NEXT: vmovdqa64 (%rsi), %zmm22484; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rsi), %zmm32485; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdx), %zmm42486; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdx), %zmm52487; AVX512DQ-FCP-NEXT: vmovdqa64 (%rcx), %zmm62488; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rcx), %zmm72489; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm8 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]2490; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, %zmm92491; AVX512DQ-FCP-NEXT: vpermt2d %zmm6, %zmm8, %zmm92492; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm10 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]2493; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, %zmm112494; AVX512DQ-FCP-NEXT: vpermt2d %zmm2, %zmm10, %zmm112495; AVX512DQ-FCP-NEXT: movb $-86, %al2496; AVX512DQ-FCP-NEXT: kmovw %eax, %k12497; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm9, %zmm11 {%k1}2498; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm9 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]2499; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, %zmm122500; AVX512DQ-FCP-NEXT: vpermt2d %zmm6, %zmm9, %zmm122501; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm13 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]2502; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, %zmm142503; AVX512DQ-FCP-NEXT: vpermt2d %zmm2, %zmm13, %zmm142504; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm12, %zmm14 {%k1}2505; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm12 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]2506; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, %zmm152507; AVX512DQ-FCP-NEXT: vpermt2d %zmm6, %zmm12, %zmm152508; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm16 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]2509; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, %zmm172510; AVX512DQ-FCP-NEXT: vpermt2d %zmm2, %zmm16, %zmm172511; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm15, %zmm17 {%k1}2512; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm15 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]2513; AVX512DQ-FCP-NEXT: vpermt2d %zmm6, %zmm15, %zmm42514; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]2515; AVX512DQ-FCP-NEXT: vpermt2d %zmm2, %zmm6, %zmm02516; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, %zmm0 {%k1}2517; AVX512DQ-FCP-NEXT: vpermi2d %zmm7, %zmm5, %zmm82518; AVX512DQ-FCP-NEXT: vpermi2d %zmm3, %zmm1, %zmm102519; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm8, %zmm10 {%k1}2520; AVX512DQ-FCP-NEXT: vpermi2d %zmm7, %zmm5, %zmm92521; AVX512DQ-FCP-NEXT: vpermi2d %zmm3, %zmm1, %zmm132522; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm9, %zmm13 {%k1}2523; AVX512DQ-FCP-NEXT: vpermi2d %zmm7, %zmm5, %zmm122524; AVX512DQ-FCP-NEXT: vpermi2d %zmm3, %zmm1, %zmm162525; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm12, %zmm16 {%k1}2526; AVX512DQ-FCP-NEXT: vpermt2d %zmm7, %zmm15, %zmm52527; AVX512DQ-FCP-NEXT: vpermt2d %zmm3, %zmm6, %zmm12528; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm5, %zmm1 {%k1}2529; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, 384(%r8)2530; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm16, 448(%r8)2531; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm13, 256(%r8)2532; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm10, 320(%r8)2533; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, 128(%r8)2534; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm17, 192(%r8)2535; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm14, (%r8)2536; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm11, 64(%r8)2537; AVX512DQ-FCP-NEXT: vzeroupper2538; AVX512DQ-FCP-NEXT: retq2539;2540; AVX512BW-LABEL: store_i32_stride4_vf32:2541; AVX512BW: # %bb.0:2542; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm02543; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm12544; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm22545; AVX512BW-NEXT: vmovdqa64 64(%rsi), %zmm32546; AVX512BW-NEXT: vmovdqa64 (%rdx), %zmm42547; AVX512BW-NEXT: vmovdqa64 64(%rdx), %zmm52548; AVX512BW-NEXT: vmovdqa64 (%rcx), %zmm62549; AVX512BW-NEXT: vmovdqa64 64(%rcx), %zmm72550; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm8 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]2551; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm92552; AVX512BW-NEXT: vpermt2d %zmm6, %zmm8, %zmm92553; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm10 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]2554; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm112555; AVX512BW-NEXT: vpermt2d %zmm2, %zmm10, %zmm112556; AVX512BW-NEXT: movb $-86, %al2557; AVX512BW-NEXT: kmovd %eax, %k12558; AVX512BW-NEXT: vmovdqa64 %zmm9, %zmm11 {%k1}2559; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm9 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]2560; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm122561; AVX512BW-NEXT: vpermt2d %zmm6, %zmm9, %zmm122562; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm13 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]2563; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm142564; AVX512BW-NEXT: vpermt2d %zmm2, %zmm13, %zmm142565; AVX512BW-NEXT: vmovdqa64 %zmm12, %zmm14 {%k1}2566; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm12 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]2567; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm152568; AVX512BW-NEXT: vpermt2d %zmm6, %zmm12, %zmm152569; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm16 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]2570; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm172571; AVX512BW-NEXT: vpermt2d %zmm2, %zmm16, %zmm172572; AVX512BW-NEXT: vmovdqa64 %zmm15, %zmm17 {%k1}2573; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm15 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]2574; AVX512BW-NEXT: vpermt2d %zmm6, %zmm15, %zmm42575; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm6 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]2576; AVX512BW-NEXT: vpermt2d %zmm2, %zmm6, %zmm02577; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm0 {%k1}2578; AVX512BW-NEXT: vpermi2d %zmm7, %zmm5, %zmm82579; AVX512BW-NEXT: vpermi2d %zmm3, %zmm1, %zmm102580; AVX512BW-NEXT: vmovdqa64 %zmm8, %zmm10 {%k1}2581; AVX512BW-NEXT: vpermi2d %zmm7, %zmm5, %zmm92582; AVX512BW-NEXT: vpermi2d %zmm3, %zmm1, %zmm132583; AVX512BW-NEXT: vmovdqa64 %zmm9, %zmm13 {%k1}2584; AVX512BW-NEXT: vpermi2d %zmm7, %zmm5, %zmm122585; AVX512BW-NEXT: vpermi2d %zmm3, %zmm1, %zmm162586; AVX512BW-NEXT: vmovdqa64 %zmm12, %zmm16 {%k1}2587; AVX512BW-NEXT: vpermt2d %zmm7, %zmm15, %zmm52588; AVX512BW-NEXT: vpermt2d %zmm3, %zmm6, %zmm12589; AVX512BW-NEXT: vmovdqa64 %zmm5, %zmm1 {%k1}2590; AVX512BW-NEXT: vmovdqa64 %zmm1, 384(%r8)2591; AVX512BW-NEXT: vmovdqa64 %zmm16, 448(%r8)2592; AVX512BW-NEXT: vmovdqa64 %zmm13, 256(%r8)2593; AVX512BW-NEXT: vmovdqa64 %zmm10, 320(%r8)2594; AVX512BW-NEXT: vmovdqa64 %zmm0, 128(%r8)2595; AVX512BW-NEXT: vmovdqa64 %zmm17, 192(%r8)2596; AVX512BW-NEXT: vmovdqa64 %zmm14, (%r8)2597; AVX512BW-NEXT: vmovdqa64 %zmm11, 64(%r8)2598; AVX512BW-NEXT: vzeroupper2599; AVX512BW-NEXT: retq2600;2601; AVX512BW-FCP-LABEL: store_i32_stride4_vf32:2602; AVX512BW-FCP: # %bb.0:2603; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm02604; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm12605; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm22606; AVX512BW-FCP-NEXT: vmovdqa64 64(%rsi), %zmm32607; AVX512BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm42608; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdx), %zmm52609; AVX512BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm62610; AVX512BW-FCP-NEXT: vmovdqa64 64(%rcx), %zmm72611; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm8 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]2612; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm92613; AVX512BW-FCP-NEXT: vpermt2d %zmm6, %zmm8, %zmm92614; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm10 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]2615; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm112616; AVX512BW-FCP-NEXT: vpermt2d %zmm2, %zmm10, %zmm112617; AVX512BW-FCP-NEXT: movb $-86, %al2618; AVX512BW-FCP-NEXT: kmovd %eax, %k12619; AVX512BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm11 {%k1}2620; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm9 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]2621; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm122622; AVX512BW-FCP-NEXT: vpermt2d %zmm6, %zmm9, %zmm122623; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm13 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]2624; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm142625; AVX512BW-FCP-NEXT: vpermt2d %zmm2, %zmm13, %zmm142626; AVX512BW-FCP-NEXT: vmovdqa64 %zmm12, %zmm14 {%k1}2627; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm12 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]2628; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm152629; AVX512BW-FCP-NEXT: vpermt2d %zmm6, %zmm12, %zmm152630; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm16 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]2631; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm172632; AVX512BW-FCP-NEXT: vpermt2d %zmm2, %zmm16, %zmm172633; AVX512BW-FCP-NEXT: vmovdqa64 %zmm15, %zmm17 {%k1}2634; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm15 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]2635; AVX512BW-FCP-NEXT: vpermt2d %zmm6, %zmm15, %zmm42636; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]2637; AVX512BW-FCP-NEXT: vpermt2d %zmm2, %zmm6, %zmm02638; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm0 {%k1}2639; AVX512BW-FCP-NEXT: vpermi2d %zmm7, %zmm5, %zmm82640; AVX512BW-FCP-NEXT: vpermi2d %zmm3, %zmm1, %zmm102641; AVX512BW-FCP-NEXT: vmovdqa64 %zmm8, %zmm10 {%k1}2642; AVX512BW-FCP-NEXT: vpermi2d %zmm7, %zmm5, %zmm92643; AVX512BW-FCP-NEXT: vpermi2d %zmm3, %zmm1, %zmm132644; AVX512BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm13 {%k1}2645; AVX512BW-FCP-NEXT: vpermi2d %zmm7, %zmm5, %zmm122646; AVX512BW-FCP-NEXT: vpermi2d %zmm3, %zmm1, %zmm162647; AVX512BW-FCP-NEXT: vmovdqa64 %zmm12, %zmm16 {%k1}2648; AVX512BW-FCP-NEXT: vpermt2d %zmm7, %zmm15, %zmm52649; AVX512BW-FCP-NEXT: vpermt2d %zmm3, %zmm6, %zmm12650; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, %zmm1 {%k1}2651; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, 384(%r8)2652; AVX512BW-FCP-NEXT: vmovdqa64 %zmm16, 448(%r8)2653; AVX512BW-FCP-NEXT: vmovdqa64 %zmm13, 256(%r8)2654; AVX512BW-FCP-NEXT: vmovdqa64 %zmm10, 320(%r8)2655; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, 128(%r8)2656; AVX512BW-FCP-NEXT: vmovdqa64 %zmm17, 192(%r8)2657; AVX512BW-FCP-NEXT: vmovdqa64 %zmm14, (%r8)2658; AVX512BW-FCP-NEXT: vmovdqa64 %zmm11, 64(%r8)2659; AVX512BW-FCP-NEXT: vzeroupper2660; AVX512BW-FCP-NEXT: retq2661;2662; AVX512DQ-BW-LABEL: store_i32_stride4_vf32:2663; AVX512DQ-BW: # %bb.0:2664; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm02665; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm12666; AVX512DQ-BW-NEXT: vmovdqa64 (%rsi), %zmm22667; AVX512DQ-BW-NEXT: vmovdqa64 64(%rsi), %zmm32668; AVX512DQ-BW-NEXT: vmovdqa64 (%rdx), %zmm42669; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdx), %zmm52670; AVX512DQ-BW-NEXT: vmovdqa64 (%rcx), %zmm62671; AVX512DQ-BW-NEXT: vmovdqa64 64(%rcx), %zmm72672; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm8 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]2673; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, %zmm92674; AVX512DQ-BW-NEXT: vpermt2d %zmm6, %zmm8, %zmm92675; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm10 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]2676; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, %zmm112677; AVX512DQ-BW-NEXT: vpermt2d %zmm2, %zmm10, %zmm112678; AVX512DQ-BW-NEXT: movb $-86, %al2679; AVX512DQ-BW-NEXT: kmovd %eax, %k12680; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, %zmm11 {%k1}2681; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm9 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]2682; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, %zmm122683; AVX512DQ-BW-NEXT: vpermt2d %zmm6, %zmm9, %zmm122684; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm13 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]2685; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, %zmm142686; AVX512DQ-BW-NEXT: vpermt2d %zmm2, %zmm13, %zmm142687; AVX512DQ-BW-NEXT: vmovdqa64 %zmm12, %zmm14 {%k1}2688; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm12 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]2689; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, %zmm152690; AVX512DQ-BW-NEXT: vpermt2d %zmm6, %zmm12, %zmm152691; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm16 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]2692; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, %zmm172693; AVX512DQ-BW-NEXT: vpermt2d %zmm2, %zmm16, %zmm172694; AVX512DQ-BW-NEXT: vmovdqa64 %zmm15, %zmm17 {%k1}2695; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm15 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]2696; AVX512DQ-BW-NEXT: vpermt2d %zmm6, %zmm15, %zmm42697; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm6 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]2698; AVX512DQ-BW-NEXT: vpermt2d %zmm2, %zmm6, %zmm02699; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, %zmm0 {%k1}2700; AVX512DQ-BW-NEXT: vpermi2d %zmm7, %zmm5, %zmm82701; AVX512DQ-BW-NEXT: vpermi2d %zmm3, %zmm1, %zmm102702; AVX512DQ-BW-NEXT: vmovdqa64 %zmm8, %zmm10 {%k1}2703; AVX512DQ-BW-NEXT: vpermi2d %zmm7, %zmm5, %zmm92704; AVX512DQ-BW-NEXT: vpermi2d %zmm3, %zmm1, %zmm132705; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, %zmm13 {%k1}2706; AVX512DQ-BW-NEXT: vpermi2d %zmm7, %zmm5, %zmm122707; AVX512DQ-BW-NEXT: vpermi2d %zmm3, %zmm1, %zmm162708; AVX512DQ-BW-NEXT: vmovdqa64 %zmm12, %zmm16 {%k1}2709; AVX512DQ-BW-NEXT: vpermt2d %zmm7, %zmm15, %zmm52710; AVX512DQ-BW-NEXT: vpermt2d %zmm3, %zmm6, %zmm12711; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, %zmm1 {%k1}2712; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, 384(%r8)2713; AVX512DQ-BW-NEXT: vmovdqa64 %zmm16, 448(%r8)2714; AVX512DQ-BW-NEXT: vmovdqa64 %zmm13, 256(%r8)2715; AVX512DQ-BW-NEXT: vmovdqa64 %zmm10, 320(%r8)2716; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, 128(%r8)2717; AVX512DQ-BW-NEXT: vmovdqa64 %zmm17, 192(%r8)2718; AVX512DQ-BW-NEXT: vmovdqa64 %zmm14, (%r8)2719; AVX512DQ-BW-NEXT: vmovdqa64 %zmm11, 64(%r8)2720; AVX512DQ-BW-NEXT: vzeroupper2721; AVX512DQ-BW-NEXT: retq2722;2723; AVX512DQ-BW-FCP-LABEL: store_i32_stride4_vf32:2724; AVX512DQ-BW-FCP: # %bb.0:2725; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm02726; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm12727; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm22728; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rsi), %zmm32729; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm42730; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdx), %zmm52731; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm62732; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rcx), %zmm72733; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm8 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]2734; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm92735; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm6, %zmm8, %zmm92736; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm10 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]2737; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm112738; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm2, %zmm10, %zmm112739; AVX512DQ-BW-FCP-NEXT: movb $-86, %al2740; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k12741; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm11 {%k1}2742; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm9 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]2743; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm122744; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm6, %zmm9, %zmm122745; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm13 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]2746; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm142747; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm2, %zmm13, %zmm142748; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm12, %zmm14 {%k1}2749; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm12 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]2750; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm152751; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm6, %zmm12, %zmm152752; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm16 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]2753; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm172754; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm2, %zmm16, %zmm172755; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm15, %zmm17 {%k1}2756; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm15 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]2757; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm6, %zmm15, %zmm42758; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]2759; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm2, %zmm6, %zmm02760; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm0 {%k1}2761; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm7, %zmm5, %zmm82762; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm3, %zmm1, %zmm102763; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm8, %zmm10 {%k1}2764; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm7, %zmm5, %zmm92765; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm3, %zmm1, %zmm132766; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm13 {%k1}2767; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm7, %zmm5, %zmm122768; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm3, %zmm1, %zmm162769; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm12, %zmm16 {%k1}2770; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm7, %zmm15, %zmm52771; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm3, %zmm6, %zmm12772; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, %zmm1 {%k1}2773; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, 384(%r8)2774; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm16, 448(%r8)2775; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm13, 256(%r8)2776; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm10, 320(%r8)2777; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, 128(%r8)2778; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm17, 192(%r8)2779; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm14, (%r8)2780; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm11, 64(%r8)2781; AVX512DQ-BW-FCP-NEXT: vzeroupper2782; AVX512DQ-BW-FCP-NEXT: retq2783 %in.vec0 = load <32 x i32>, ptr %in.vecptr0, align 642784 %in.vec1 = load <32 x i32>, ptr %in.vecptr1, align 642785 %in.vec2 = load <32 x i32>, ptr %in.vecptr2, align 642786 %in.vec3 = load <32 x i32>, ptr %in.vecptr3, align 642787 %1 = shufflevector <32 x i32> %in.vec0, <32 x i32> %in.vec1, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>2788 %2 = shufflevector <32 x i32> %in.vec2, <32 x i32> %in.vec3, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>2789 %3 = shufflevector <64 x i32> %1, <64 x i32> %2, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>2790 %interleaved.vec = shufflevector <128 x i32> %3, <128 x i32> poison, <128 x i32> <i32 0, i32 32, i32 64, i32 96, i32 1, i32 33, i32 65, i32 97, i32 2, i32 34, i32 66, i32 98, i32 3, i32 35, i32 67, i32 99, i32 4, i32 36, i32 68, i32 100, i32 5, i32 37, i32 69, i32 101, i32 6, i32 38, i32 70, i32 102, i32 7, i32 39, i32 71, i32 103, i32 8, i32 40, i32 72, i32 104, i32 9, i32 41, i32 73, i32 105, i32 10, i32 42, i32 74, i32 106, i32 11, i32 43, i32 75, i32 107, i32 12, i32 44, i32 76, i32 108, i32 13, i32 45, i32 77, i32 109, i32 14, i32 46, i32 78, i32 110, i32 15, i32 47, i32 79, i32 111, i32 16, i32 48, i32 80, i32 112, i32 17, i32 49, i32 81, i32 113, i32 18, i32 50, i32 82, i32 114, i32 19, i32 51, i32 83, i32 115, i32 20, i32 52, i32 84, i32 116, i32 21, i32 53, i32 85, i32 117, i32 22, i32 54, i32 86, i32 118, i32 23, i32 55, i32 87, i32 119, i32 24, i32 56, i32 88, i32 120, i32 25, i32 57, i32 89, i32 121, i32 26, i32 58, i32 90, i32 122, i32 27, i32 59, i32 91, i32 123, i32 28, i32 60, i32 92, i32 124, i32 29, i32 61, i32 93, i32 125, i32 30, i32 62, i32 94, i32 126, i32 31, i32 63, i32 95, i32 127>2791 store <128 x i32> %interleaved.vec, ptr %out.vec, align 642792 ret void2793}2794 2795define void @store_i32_stride4_vf64(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %out.vec) nounwind {2796; SSE-LABEL: store_i32_stride4_vf64:2797; SSE: # %bb.0:2798; SSE-NEXT: subq $696, %rsp # imm = 0x2B82799; SSE-NEXT: movaps (%rdi), %xmm102800; SSE-NEXT: movaps 16(%rdi), %xmm112801; SSE-NEXT: movaps 32(%rdi), %xmm122802; SSE-NEXT: movaps 48(%rdi), %xmm132803; SSE-NEXT: movaps (%rsi), %xmm42804; SSE-NEXT: movaps 16(%rsi), %xmm22805; SSE-NEXT: movaps 32(%rsi), %xmm02806; SSE-NEXT: movaps (%rdx), %xmm62807; SSE-NEXT: movaps 16(%rdx), %xmm32808; SSE-NEXT: movaps 32(%rdx), %xmm12809; SSE-NEXT: movaps (%rcx), %xmm72810; SSE-NEXT: movaps 16(%rcx), %xmm82811; SSE-NEXT: movaps 32(%rcx), %xmm52812; SSE-NEXT: movaps %xmm6, %xmm92813; SSE-NEXT: unpcklps {{.*#+}} xmm9 = xmm9[0],xmm7[0],xmm9[1],xmm7[1]2814; SSE-NEXT: movaps %xmm10, %xmm142815; SSE-NEXT: unpcklps {{.*#+}} xmm14 = xmm14[0],xmm4[0],xmm14[1],xmm4[1]2816; SSE-NEXT: movaps %xmm14, %xmm152817; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm9[0]2818; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2819; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm9[1]2820; SSE-NEXT: movaps %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2821; SSE-NEXT: unpckhps {{.*#+}} xmm6 = xmm6[2],xmm7[2],xmm6[3],xmm7[3]2822; SSE-NEXT: unpckhps {{.*#+}} xmm10 = xmm10[2],xmm4[2],xmm10[3],xmm4[3]2823; SSE-NEXT: movaps %xmm10, %xmm42824; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm6[0]2825; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2826; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm6[1]2827; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2828; SSE-NEXT: movaps %xmm3, %xmm42829; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1]2830; SSE-NEXT: movaps %xmm11, %xmm62831; SSE-NEXT: unpcklps {{.*#+}} xmm6 = xmm6[0],xmm2[0],xmm6[1],xmm2[1]2832; SSE-NEXT: movaps %xmm6, %xmm72833; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm4[0]2834; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2835; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm4[1]2836; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2837; SSE-NEXT: unpckhps {{.*#+}} xmm3 = xmm3[2],xmm8[2],xmm3[3],xmm8[3]2838; SSE-NEXT: unpckhps {{.*#+}} xmm11 = xmm11[2],xmm2[2],xmm11[3],xmm2[3]2839; SSE-NEXT: movaps %xmm11, %xmm22840; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm3[0]2841; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2842; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm3[1]2843; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2844; SSE-NEXT: movaps %xmm1, %xmm22845; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]2846; SSE-NEXT: movaps %xmm12, %xmm32847; SSE-NEXT: unpcklps {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]2848; SSE-NEXT: movaps %xmm3, %xmm42849; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm2[0]2850; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2851; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm2[1]2852; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2853; SSE-NEXT: movaps 48(%rdx), %xmm22854; SSE-NEXT: unpckhps {{.*#+}} xmm1 = xmm1[2],xmm5[2],xmm1[3],xmm5[3]2855; SSE-NEXT: movaps 48(%rcx), %xmm32856; SSE-NEXT: unpckhps {{.*#+}} xmm12 = xmm12[2],xmm0[2],xmm12[3],xmm0[3]2857; SSE-NEXT: movaps %xmm12, %xmm02858; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]2859; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2860; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm1[1]2861; SSE-NEXT: movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2862; SSE-NEXT: movaps %xmm2, %xmm02863; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]2864; SSE-NEXT: movaps 48(%rsi), %xmm12865; SSE-NEXT: movaps %xmm13, %xmm42866; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]2867; SSE-NEXT: movaps %xmm4, %xmm52868; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm0[0]2869; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2870; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm0[1]2871; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2872; SSE-NEXT: unpckhps {{.*#+}} xmm2 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]2873; SSE-NEXT: unpckhps {{.*#+}} xmm13 = xmm13[2],xmm1[2],xmm13[3],xmm1[3]2874; SSE-NEXT: movaps %xmm13, %xmm02875; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm2[0]2876; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2877; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm2[1]2878; SSE-NEXT: movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2879; SSE-NEXT: movaps 64(%rdx), %xmm02880; SSE-NEXT: movaps 64(%rcx), %xmm12881; SSE-NEXT: movaps %xmm0, %xmm22882; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2883; SSE-NEXT: movaps 64(%rdi), %xmm52884; SSE-NEXT: movaps 64(%rsi), %xmm32885; SSE-NEXT: movaps %xmm5, %xmm42886; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2887; SSE-NEXT: movaps %xmm4, %xmm62888; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm2[0]2889; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2890; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]2891; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2892; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]2893; SSE-NEXT: unpckhps {{.*#+}} xmm5 = xmm5[2],xmm3[2],xmm5[3],xmm3[3]2894; SSE-NEXT: movaps %xmm5, %xmm12895; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]2896; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2897; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm0[1]2898; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2899; SSE-NEXT: movaps 80(%rdx), %xmm02900; SSE-NEXT: movaps 80(%rcx), %xmm12901; SSE-NEXT: movaps %xmm0, %xmm22902; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2903; SSE-NEXT: movaps 80(%rdi), %xmm52904; SSE-NEXT: movaps 80(%rsi), %xmm32905; SSE-NEXT: movaps %xmm5, %xmm42906; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2907; SSE-NEXT: movaps %xmm4, %xmm62908; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm2[0]2909; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2910; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]2911; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2912; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]2913; SSE-NEXT: unpckhps {{.*#+}} xmm5 = xmm5[2],xmm3[2],xmm5[3],xmm3[3]2914; SSE-NEXT: movaps %xmm5, %xmm12915; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]2916; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2917; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm0[1]2918; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2919; SSE-NEXT: movaps 96(%rdx), %xmm02920; SSE-NEXT: movaps 96(%rcx), %xmm12921; SSE-NEXT: movaps %xmm0, %xmm22922; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2923; SSE-NEXT: movaps 96(%rdi), %xmm52924; SSE-NEXT: movaps 96(%rsi), %xmm32925; SSE-NEXT: movaps %xmm5, %xmm42926; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2927; SSE-NEXT: movaps %xmm4, %xmm62928; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm2[0]2929; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2930; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]2931; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2932; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]2933; SSE-NEXT: unpckhps {{.*#+}} xmm5 = xmm5[2],xmm3[2],xmm5[3],xmm3[3]2934; SSE-NEXT: movaps %xmm5, %xmm12935; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]2936; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2937; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm0[1]2938; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2939; SSE-NEXT: movaps 112(%rdx), %xmm02940; SSE-NEXT: movaps 112(%rcx), %xmm12941; SSE-NEXT: movaps %xmm0, %xmm22942; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2943; SSE-NEXT: movaps 112(%rdi), %xmm52944; SSE-NEXT: movaps 112(%rsi), %xmm32945; SSE-NEXT: movaps %xmm5, %xmm42946; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2947; SSE-NEXT: movaps %xmm4, %xmm62948; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm2[0]2949; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2950; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]2951; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2952; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]2953; SSE-NEXT: unpckhps {{.*#+}} xmm5 = xmm5[2],xmm3[2],xmm5[3],xmm3[3]2954; SSE-NEXT: movaps %xmm5, %xmm12955; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]2956; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2957; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm0[1]2958; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2959; SSE-NEXT: movaps 128(%rdx), %xmm02960; SSE-NEXT: movaps 128(%rcx), %xmm12961; SSE-NEXT: movaps %xmm0, %xmm22962; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2963; SSE-NEXT: movaps 128(%rdi), %xmm52964; SSE-NEXT: movaps 128(%rsi), %xmm32965; SSE-NEXT: movaps %xmm5, %xmm42966; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2967; SSE-NEXT: movaps %xmm4, %xmm62968; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm2[0]2969; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2970; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]2971; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2972; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]2973; SSE-NEXT: unpckhps {{.*#+}} xmm5 = xmm5[2],xmm3[2],xmm5[3],xmm3[3]2974; SSE-NEXT: movaps %xmm5, %xmm12975; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]2976; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2977; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm0[1]2978; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2979; SSE-NEXT: movaps 144(%rdx), %xmm02980; SSE-NEXT: movaps 144(%rcx), %xmm12981; SSE-NEXT: movaps %xmm0, %xmm22982; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2983; SSE-NEXT: movaps 144(%rdi), %xmm52984; SSE-NEXT: movaps 144(%rsi), %xmm32985; SSE-NEXT: movaps %xmm5, %xmm42986; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2987; SSE-NEXT: movaps %xmm4, %xmm62988; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm2[0]2989; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2990; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]2991; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2992; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]2993; SSE-NEXT: unpckhps {{.*#+}} xmm5 = xmm5[2],xmm3[2],xmm5[3],xmm3[3]2994; SSE-NEXT: movaps %xmm5, %xmm12995; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]2996; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2997; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm0[1]2998; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2999; SSE-NEXT: movaps 160(%rdx), %xmm03000; SSE-NEXT: movaps 160(%rcx), %xmm13001; SSE-NEXT: movaps %xmm0, %xmm23002; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]3003; SSE-NEXT: movaps 160(%rdi), %xmm53004; SSE-NEXT: movaps 160(%rsi), %xmm33005; SSE-NEXT: movaps %xmm5, %xmm43006; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3007; SSE-NEXT: movaps %xmm4, %xmm63008; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm2[0]3009; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3010; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]3011; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3012; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]3013; SSE-NEXT: unpckhps {{.*#+}} xmm5 = xmm5[2],xmm3[2],xmm5[3],xmm3[3]3014; SSE-NEXT: movaps %xmm5, %xmm13015; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]3016; SSE-NEXT: movaps %xmm1, (%rsp) # 16-byte Spill3017; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm0[1]3018; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3019; SSE-NEXT: movaps 176(%rdx), %xmm03020; SSE-NEXT: movaps 176(%rcx), %xmm13021; SSE-NEXT: movaps %xmm0, %xmm23022; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]3023; SSE-NEXT: movaps 176(%rdi), %xmm153024; SSE-NEXT: movaps 176(%rsi), %xmm33025; SSE-NEXT: movaps %xmm15, %xmm43026; SSE-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3027; SSE-NEXT: movaps %xmm4, %xmm53028; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm2[0]3029; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3030; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]3031; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3032; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]3033; SSE-NEXT: unpckhps {{.*#+}} xmm15 = xmm15[2],xmm3[2],xmm15[3],xmm3[3]3034; SSE-NEXT: movaps %xmm15, %xmm13035; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]3036; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3037; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]3038; SSE-NEXT: movaps 192(%rdx), %xmm03039; SSE-NEXT: movaps 192(%rcx), %xmm13040; SSE-NEXT: movaps %xmm0, %xmm23041; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]3042; SSE-NEXT: movaps 192(%rdi), %xmm123043; SSE-NEXT: movaps 192(%rsi), %xmm33044; SSE-NEXT: movaps %xmm12, %xmm143045; SSE-NEXT: unpcklps {{.*#+}} xmm14 = xmm14[0],xmm3[0],xmm14[1],xmm3[1]3046; SSE-NEXT: movaps %xmm14, %xmm43047; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm2[0]3048; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3049; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm2[1]3050; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]3051; SSE-NEXT: unpckhps {{.*#+}} xmm12 = xmm12[2],xmm3[2],xmm12[3],xmm3[3]3052; SSE-NEXT: movaps %xmm12, %xmm13053; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]3054; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3055; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm0[1]3056; SSE-NEXT: movaps 208(%rdx), %xmm03057; SSE-NEXT: movaps 208(%rcx), %xmm13058; SSE-NEXT: movaps %xmm0, %xmm23059; SSE-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]3060; SSE-NEXT: movaps 208(%rdi), %xmm133061; SSE-NEXT: movaps 208(%rsi), %xmm73062; SSE-NEXT: movaps %xmm13, %xmm83063; SSE-NEXT: unpcklps {{.*#+}} xmm8 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]3064; SSE-NEXT: movaps %xmm8, %xmm33065; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm2[0]3066; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3067; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm2[1]3068; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]3069; SSE-NEXT: unpckhps {{.*#+}} xmm13 = xmm13[2],xmm7[2],xmm13[3],xmm7[3]3070; SSE-NEXT: movaps %xmm13, %xmm13071; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]3072; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3073; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]3074; SSE-NEXT: movaps 224(%rdx), %xmm13075; SSE-NEXT: movaps 224(%rcx), %xmm63076; SSE-NEXT: movaps %xmm1, %xmm03077; SSE-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1]3078; SSE-NEXT: movaps 224(%rdi), %xmm53079; SSE-NEXT: movaps 224(%rsi), %xmm43080; SSE-NEXT: movaps %xmm5, %xmm93081; SSE-NEXT: unpcklps {{.*#+}} xmm9 = xmm9[0],xmm4[0],xmm9[1],xmm4[1]3082; SSE-NEXT: movaps %xmm9, %xmm113083; SSE-NEXT: movlhps {{.*#+}} xmm11 = xmm11[0],xmm0[0]3084; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm0[1]3085; SSE-NEXT: unpckhps {{.*#+}} xmm1 = xmm1[2],xmm6[2],xmm1[3],xmm6[3]3086; SSE-NEXT: unpckhps {{.*#+}} xmm5 = xmm5[2],xmm4[2],xmm5[3],xmm4[3]3087; SSE-NEXT: movaps %xmm5, %xmm103088; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm1[0]3089; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]3090; SSE-NEXT: movaps 240(%rdx), %xmm23091; SSE-NEXT: movaps 240(%rcx), %xmm73092; SSE-NEXT: movaps %xmm2, %xmm63093; SSE-NEXT: unpcklps {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1]3094; SSE-NEXT: movaps 240(%rdi), %xmm03095; SSE-NEXT: movaps 240(%rsi), %xmm43096; SSE-NEXT: movaps %xmm0, %xmm13097; SSE-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]3098; SSE-NEXT: movaps %xmm1, %xmm33099; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm6[0]3100; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm6[1]3101; SSE-NEXT: unpckhps {{.*#+}} xmm2 = xmm2[2],xmm7[2],xmm2[3],xmm7[3]3102; SSE-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2],xmm4[2],xmm0[3],xmm4[3]3103; SSE-NEXT: movaps %xmm0, %xmm43104; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm2[0]3105; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]3106; SSE-NEXT: movaps %xmm0, 1008(%r8)3107; SSE-NEXT: movaps %xmm4, 992(%r8)3108; SSE-NEXT: movaps %xmm1, 976(%r8)3109; SSE-NEXT: movaps %xmm3, 960(%r8)3110; SSE-NEXT: movaps %xmm5, 944(%r8)3111; SSE-NEXT: movaps %xmm10, 928(%r8)3112; SSE-NEXT: movaps %xmm9, 912(%r8)3113; SSE-NEXT: movaps %xmm11, 896(%r8)3114; SSE-NEXT: movaps %xmm13, 880(%r8)3115; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3116; SSE-NEXT: movaps %xmm0, 864(%r8)3117; SSE-NEXT: movaps %xmm8, 848(%r8)3118; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3119; SSE-NEXT: movaps %xmm0, 832(%r8)3120; SSE-NEXT: movaps %xmm12, 816(%r8)3121; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3122; SSE-NEXT: movaps %xmm0, 800(%r8)3123; SSE-NEXT: movaps %xmm14, 784(%r8)3124; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3125; SSE-NEXT: movaps %xmm0, 768(%r8)3126; SSE-NEXT: movaps %xmm15, 752(%r8)3127; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3128; SSE-NEXT: movaps %xmm0, 736(%r8)3129; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3130; SSE-NEXT: movaps %xmm0, 720(%r8)3131; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3132; SSE-NEXT: movaps %xmm0, 704(%r8)3133; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3134; SSE-NEXT: movaps %xmm0, 688(%r8)3135; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload3136; SSE-NEXT: movaps %xmm0, 672(%r8)3137; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3138; SSE-NEXT: movaps %xmm0, 656(%r8)3139; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3140; SSE-NEXT: movaps %xmm0, 640(%r8)3141; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3142; SSE-NEXT: movaps %xmm0, 624(%r8)3143; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3144; SSE-NEXT: movaps %xmm0, 608(%r8)3145; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3146; SSE-NEXT: movaps %xmm0, 592(%r8)3147; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3148; SSE-NEXT: movaps %xmm0, 576(%r8)3149; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3150; SSE-NEXT: movaps %xmm0, 560(%r8)3151; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3152; SSE-NEXT: movaps %xmm0, 544(%r8)3153; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3154; SSE-NEXT: movaps %xmm0, 528(%r8)3155; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3156; SSE-NEXT: movaps %xmm0, 512(%r8)3157; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3158; SSE-NEXT: movaps %xmm0, 496(%r8)3159; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3160; SSE-NEXT: movaps %xmm0, 480(%r8)3161; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3162; SSE-NEXT: movaps %xmm0, 464(%r8)3163; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3164; SSE-NEXT: movaps %xmm0, 448(%r8)3165; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3166; SSE-NEXT: movaps %xmm0, 432(%r8)3167; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3168; SSE-NEXT: movaps %xmm0, 416(%r8)3169; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3170; SSE-NEXT: movaps %xmm0, 400(%r8)3171; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3172; SSE-NEXT: movaps %xmm0, 384(%r8)3173; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3174; SSE-NEXT: movaps %xmm0, 368(%r8)3175; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3176; SSE-NEXT: movaps %xmm0, 352(%r8)3177; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3178; SSE-NEXT: movaps %xmm0, 336(%r8)3179; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3180; SSE-NEXT: movaps %xmm0, 320(%r8)3181; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3182; SSE-NEXT: movaps %xmm0, 304(%r8)3183; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3184; SSE-NEXT: movaps %xmm0, 288(%r8)3185; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3186; SSE-NEXT: movaps %xmm0, 272(%r8)3187; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3188; SSE-NEXT: movaps %xmm0, 256(%r8)3189; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3190; SSE-NEXT: movaps %xmm0, 240(%r8)3191; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3192; SSE-NEXT: movaps %xmm0, 224(%r8)3193; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3194; SSE-NEXT: movaps %xmm0, 208(%r8)3195; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3196; SSE-NEXT: movaps %xmm0, 192(%r8)3197; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3198; SSE-NEXT: movaps %xmm0, 176(%r8)3199; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3200; SSE-NEXT: movaps %xmm0, 160(%r8)3201; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3202; SSE-NEXT: movaps %xmm0, 144(%r8)3203; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3204; SSE-NEXT: movaps %xmm0, 128(%r8)3205; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3206; SSE-NEXT: movaps %xmm0, 112(%r8)3207; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3208; SSE-NEXT: movaps %xmm0, 96(%r8)3209; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3210; SSE-NEXT: movaps %xmm0, 80(%r8)3211; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3212; SSE-NEXT: movaps %xmm0, 64(%r8)3213; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3214; SSE-NEXT: movaps %xmm0, 48(%r8)3215; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3216; SSE-NEXT: movaps %xmm0, 32(%r8)3217; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3218; SSE-NEXT: movaps %xmm0, 16(%r8)3219; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3220; SSE-NEXT: movaps %xmm0, (%r8)3221; SSE-NEXT: addq $696, %rsp # imm = 0x2B83222; SSE-NEXT: retq3223;3224; AVX-LABEL: store_i32_stride4_vf64:3225; AVX: # %bb.0:3226; AVX-NEXT: subq $552, %rsp # imm = 0x2283227; AVX-NEXT: vmovaps (%rsi), %xmm83228; AVX-NEXT: vmovaps 16(%rsi), %xmm63229; AVX-NEXT: vmovaps 32(%rsi), %xmm33230; AVX-NEXT: vmovaps 48(%rsi), %xmm03231; AVX-NEXT: vmovaps (%rdi), %xmm113232; AVX-NEXT: vmovaps 16(%rdi), %xmm93233; AVX-NEXT: vmovaps 32(%rdi), %xmm43234; AVX-NEXT: vmovaps 48(%rdi), %xmm13235; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm11[1,1,1,1]3236; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm8[1],xmm2[2,3]3237; AVX-NEXT: vunpcklps {{.*#+}} xmm5 = xmm11[0],xmm8[0],xmm11[1],xmm8[1]3238; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm5, %ymm73239; AVX-NEXT: vmovaps (%rcx), %xmm123240; AVX-NEXT: vmovaps 16(%rcx), %xmm103241; AVX-NEXT: vmovaps 32(%rcx), %xmm53242; AVX-NEXT: vmovaps 48(%rcx), %xmm23243; AVX-NEXT: vmovaps (%rdx), %xmm133244; AVX-NEXT: vunpcklps {{.*#+}} xmm14 = xmm13[0],xmm12[0],xmm13[1],xmm12[1]3245; AVX-NEXT: vshufps {{.*#+}} xmm15 = xmm14[0,1,0,1]3246; AVX-NEXT: vinsertf128 $1, %xmm14, %ymm15, %ymm143247; AVX-NEXT: vmovaps 16(%rdx), %xmm153248; AVX-NEXT: vblendps {{.*#+}} ymm7 = ymm7[0,1],ymm14[2,3],ymm7[4,5],ymm14[6,7]3249; AVX-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3250; AVX-NEXT: vmovaps 32(%rdx), %xmm73251; AVX-NEXT: vunpckhps {{.*#+}} xmm8 = xmm11[2],xmm8[2],xmm11[3],xmm8[3]3252; AVX-NEXT: vshufps {{.*#+}} xmm11 = xmm8[2,3,2,3]3253; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm8, %ymm83254; AVX-NEXT: vunpckhps {{.*#+}} xmm11 = xmm13[2],xmm12[2],xmm13[3],xmm12[3]3255; AVX-NEXT: vshufps {{.*#+}} xmm12 = xmm12[2,2,2,2]3256; AVX-NEXT: vblendps {{.*#+}} xmm12 = xmm13[0,1,2],xmm12[3]3257; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm12, %ymm113258; AVX-NEXT: vblendps {{.*#+}} ymm8 = ymm8[0,1],ymm11[2,3],ymm8[4,5],ymm11[6,7]3259; AVX-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3260; AVX-NEXT: vshufps {{.*#+}} xmm8 = xmm9[1,1,1,1]3261; AVX-NEXT: vblendps {{.*#+}} xmm8 = xmm8[0],xmm6[1],xmm8[2,3]3262; AVX-NEXT: vunpcklps {{.*#+}} xmm11 = xmm9[0],xmm6[0],xmm9[1],xmm6[1]3263; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm11, %ymm113264; AVX-NEXT: vunpcklps {{.*#+}} xmm8 = xmm15[0],xmm10[0],xmm15[1],xmm10[1]3265; AVX-NEXT: vshufps {{.*#+}} xmm12 = xmm8[0,1,0,1]3266; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm12, %ymm123267; AVX-NEXT: vmovaps 48(%rdx), %xmm83268; AVX-NEXT: vblendps {{.*#+}} ymm11 = ymm11[0,1],ymm12[2,3],ymm11[4,5],ymm12[6,7]3269; AVX-NEXT: vmovups %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3270; AVX-NEXT: vunpckhps {{.*#+}} xmm6 = xmm9[2],xmm6[2],xmm9[3],xmm6[3]3271; AVX-NEXT: vshufps {{.*#+}} xmm9 = xmm6[2,3,2,3]3272; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm6, %ymm63273; AVX-NEXT: vunpckhps {{.*#+}} xmm9 = xmm15[2],xmm10[2],xmm15[3],xmm10[3]3274; AVX-NEXT: vshufps {{.*#+}} xmm10 = xmm10[2,2,2,2]3275; AVX-NEXT: vblendps {{.*#+}} xmm10 = xmm15[0,1,2],xmm10[3]3276; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm10, %ymm93277; AVX-NEXT: vblendps {{.*#+}} ymm6 = ymm6[0,1],ymm9[2,3],ymm6[4,5],ymm9[6,7]3278; AVX-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3279; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm4[1,1,1,1]3280; AVX-NEXT: vblendps {{.*#+}} xmm6 = xmm6[0],xmm3[1],xmm6[2,3]3281; AVX-NEXT: vunpcklps {{.*#+}} xmm9 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3282; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm9, %ymm63283; AVX-NEXT: vunpcklps {{.*#+}} xmm9 = xmm7[0],xmm5[0],xmm7[1],xmm5[1]3284; AVX-NEXT: vshufps {{.*#+}} xmm10 = xmm9[0,1,0,1]3285; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm10, %ymm93286; AVX-NEXT: vblendps {{.*#+}} ymm6 = ymm6[0,1],ymm9[2,3],ymm6[4,5],ymm9[6,7]3287; AVX-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3288; AVX-NEXT: vunpckhps {{.*#+}} xmm3 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3289; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm3[2,3,2,3]3290; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm3, %ymm33291; AVX-NEXT: vunpckhps {{.*#+}} xmm4 = xmm7[2],xmm5[2],xmm7[3],xmm5[3]3292; AVX-NEXT: vshufps {{.*#+}} xmm5 = xmm5[2,2,2,2]3293; AVX-NEXT: vblendps {{.*#+}} xmm5 = xmm7[0,1,2],xmm5[3]3294; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm5, %ymm43295; AVX-NEXT: vblendps {{.*#+}} ymm3 = ymm3[0,1],ymm4[2,3],ymm3[4,5],ymm4[6,7]3296; AVX-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3297; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm1[1,1,1,1]3298; AVX-NEXT: vblendps {{.*#+}} xmm3 = xmm3[0],xmm0[1],xmm3[2,3]3299; AVX-NEXT: vunpcklps {{.*#+}} xmm4 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3300; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm33301; AVX-NEXT: vunpcklps {{.*#+}} xmm4 = xmm8[0],xmm2[0],xmm8[1],xmm2[1]3302; AVX-NEXT: vshufps {{.*#+}} xmm5 = xmm4[0,1,0,1]3303; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm5, %ymm43304; AVX-NEXT: vblendps {{.*#+}} ymm3 = ymm3[0,1],ymm4[2,3],ymm3[4,5],ymm4[6,7]3305; AVX-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3306; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3307; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]3308; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03309; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm8[2],xmm2[2],xmm8[3],xmm2[3]3310; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm2[2,2,2,2]3311; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm8[0,1,2],xmm2[3]3312; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm13313; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]3314; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3315; AVX-NEXT: vmovaps 64(%rsi), %xmm03316; AVX-NEXT: vmovaps 64(%rdi), %xmm13317; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm1[1,1,1,1]3318; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm0[1],xmm2[2,3]3319; AVX-NEXT: vunpcklps {{.*#+}} xmm3 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3320; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm23321; AVX-NEXT: vmovaps 64(%rcx), %xmm33322; AVX-NEXT: vmovaps 64(%rdx), %xmm43323; AVX-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3324; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm5[0,1,0,1]3325; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm53326; AVX-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm5[2,3],ymm2[4,5],ymm5[6,7]3327; AVX-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3328; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3329; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]3330; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03331; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3332; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm3[2,2,2,2]3333; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm4[0,1,2],xmm2[3]3334; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm13335; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]3336; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3337; AVX-NEXT: vmovaps 80(%rsi), %xmm03338; AVX-NEXT: vmovaps 80(%rdi), %xmm13339; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm1[1,1,1,1]3340; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm0[1],xmm2[2,3]3341; AVX-NEXT: vunpcklps {{.*#+}} xmm3 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3342; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm23343; AVX-NEXT: vmovaps 80(%rcx), %xmm33344; AVX-NEXT: vmovaps 80(%rdx), %xmm43345; AVX-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3346; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm5[0,1,0,1]3347; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm53348; AVX-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm5[2,3],ymm2[4,5],ymm5[6,7]3349; AVX-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3350; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3351; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]3352; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03353; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3354; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm3[2,2,2,2]3355; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm4[0,1,2],xmm2[3]3356; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm13357; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]3358; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3359; AVX-NEXT: vmovaps 96(%rsi), %xmm03360; AVX-NEXT: vmovaps 96(%rdi), %xmm13361; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm1[1,1,1,1]3362; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm0[1],xmm2[2,3]3363; AVX-NEXT: vunpcklps {{.*#+}} xmm3 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3364; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm23365; AVX-NEXT: vmovaps 96(%rcx), %xmm33366; AVX-NEXT: vmovaps 96(%rdx), %xmm43367; AVX-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3368; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm5[0,1,0,1]3369; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm53370; AVX-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm5[2,3],ymm2[4,5],ymm5[6,7]3371; AVX-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3372; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3373; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]3374; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03375; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3376; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm3[2,2,2,2]3377; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm4[0,1,2],xmm2[3]3378; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm13379; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]3380; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3381; AVX-NEXT: vmovaps 112(%rsi), %xmm03382; AVX-NEXT: vmovaps 112(%rdi), %xmm13383; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm1[1,1,1,1]3384; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm0[1],xmm2[2,3]3385; AVX-NEXT: vunpcklps {{.*#+}} xmm3 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3386; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm23387; AVX-NEXT: vmovaps 112(%rcx), %xmm33388; AVX-NEXT: vmovaps 112(%rdx), %xmm43389; AVX-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3390; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm5[0,1,0,1]3391; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm53392; AVX-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm5[2,3],ymm2[4,5],ymm5[6,7]3393; AVX-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3394; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3395; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]3396; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03397; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3398; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm3[2,2,2,2]3399; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm4[0,1,2],xmm2[3]3400; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm13401; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]3402; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3403; AVX-NEXT: vmovaps 128(%rsi), %xmm03404; AVX-NEXT: vmovaps 128(%rdi), %xmm13405; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm1[1,1,1,1]3406; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm0[1],xmm2[2,3]3407; AVX-NEXT: vunpcklps {{.*#+}} xmm3 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3408; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm23409; AVX-NEXT: vmovaps 128(%rcx), %xmm33410; AVX-NEXT: vmovaps 128(%rdx), %xmm43411; AVX-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3412; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm5[0,1,0,1]3413; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm53414; AVX-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm5[2,3],ymm2[4,5],ymm5[6,7]3415; AVX-NEXT: vmovups %ymm2, (%rsp) # 32-byte Spill3416; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3417; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]3418; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03419; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3420; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm3[2,2,2,2]3421; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm4[0,1,2],xmm2[3]3422; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm13423; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]3424; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3425; AVX-NEXT: vmovaps 144(%rsi), %xmm03426; AVX-NEXT: vmovaps 144(%rdi), %xmm13427; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm1[1,1,1,1]3428; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm0[1],xmm2[2,3]3429; AVX-NEXT: vunpcklps {{.*#+}} xmm3 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3430; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm23431; AVX-NEXT: vmovaps 144(%rcx), %xmm33432; AVX-NEXT: vmovaps 144(%rdx), %xmm43433; AVX-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3434; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm5[0,1,0,1]3435; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm53436; AVX-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm5[2,3],ymm2[4,5],ymm5[6,7]3437; AVX-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3438; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3439; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]3440; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03441; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3442; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm3[2,2,2,2]3443; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm4[0,1,2],xmm2[3]3444; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm13445; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]3446; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3447; AVX-NEXT: vmovaps 160(%rsi), %xmm03448; AVX-NEXT: vmovaps 160(%rdi), %xmm13449; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm1[1,1,1,1]3450; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm0[1],xmm2[2,3]3451; AVX-NEXT: vunpcklps {{.*#+}} xmm3 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3452; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm23453; AVX-NEXT: vmovaps 160(%rcx), %xmm33454; AVX-NEXT: vmovaps 160(%rdx), %xmm43455; AVX-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3456; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm5[0,1,0,1]3457; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm53458; AVX-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm5[2,3],ymm2[4,5],ymm5[6,7]3459; AVX-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3460; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3461; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]3462; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03463; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3464; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm3[2,2,2,2]3465; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm4[0,1,2],xmm2[3]3466; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm13467; AVX-NEXT: vblendps {{.*#+}} ymm11 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]3468; AVX-NEXT: vmovaps 176(%rsi), %xmm03469; AVX-NEXT: vmovaps 176(%rdi), %xmm13470; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm1[1,1,1,1]3471; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm0[1],xmm2[2,3]3472; AVX-NEXT: vunpcklps {{.*#+}} xmm3 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3473; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm23474; AVX-NEXT: vmovaps 176(%rcx), %xmm33475; AVX-NEXT: vmovaps 176(%rdx), %xmm43476; AVX-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3477; AVX-NEXT: vshufps {{.*#+}} xmm6 = xmm5[0,1,0,1]3478; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm53479; AVX-NEXT: vblendps {{.*#+}} ymm10 = ymm2[0,1],ymm5[2,3],ymm2[4,5],ymm5[6,7]3480; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3481; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]3482; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03483; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3484; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm3[2,2,2,2]3485; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm4[0,1,2],xmm2[3]3486; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm13487; AVX-NEXT: vblendps {{.*#+}} ymm9 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]3488; AVX-NEXT: vmovaps 192(%rsi), %xmm43489; AVX-NEXT: vmovaps 192(%rdi), %xmm13490; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm1[1,1,1,1]3491; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2,3]3492; AVX-NEXT: vunpcklps {{.*#+}} xmm3 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]3493; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm53494; AVX-NEXT: vmovaps 192(%rcx), %xmm33495; AVX-NEXT: vmovaps 192(%rdx), %xmm23496; AVX-NEXT: vunpcklps {{.*#+}} xmm0 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]3497; AVX-NEXT: vshufps {{.*#+}} xmm14 = xmm0[0,1,0,1]3498; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm14, %ymm03499; AVX-NEXT: vblendps {{.*#+}} ymm8 = ymm5[0,1],ymm0[2,3],ymm5[4,5],ymm0[6,7]3500; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm4[2],xmm1[3],xmm4[3]3501; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]3502; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03503; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]3504; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm3[2,2,2,2]3505; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0,1,2],xmm3[3]3506; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm13507; AVX-NEXT: vblendps {{.*#+}} ymm7 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]3508; AVX-NEXT: vmovaps 208(%rsi), %xmm33509; AVX-NEXT: vmovaps 208(%rdi), %xmm13510; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm1[1,1,1,1]3511; AVX-NEXT: vblendps {{.*#+}} xmm2 = xmm2[0],xmm3[1],xmm2[2,3]3512; AVX-NEXT: vunpcklps {{.*#+}} xmm4 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]3513; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm23514; AVX-NEXT: vmovaps 208(%rcx), %xmm43515; AVX-NEXT: vmovaps 208(%rdx), %xmm143516; AVX-NEXT: vunpcklps {{.*#+}} xmm0 = xmm14[0],xmm4[0],xmm14[1],xmm4[1]3517; AVX-NEXT: vshufps {{.*#+}} xmm15 = xmm0[0,1,0,1]3518; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm15, %ymm03519; AVX-NEXT: vblendps {{.*#+}} ymm6 = ymm2[0,1],ymm0[2,3],ymm2[4,5],ymm0[6,7]3520; AVX-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm3[2],xmm1[3],xmm3[3]3521; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm0[2,3,2,3]3522; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03523; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm14[2],xmm4[2],xmm14[3],xmm4[3]3524; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm4[2,2,2,2]3525; AVX-NEXT: vblendps {{.*#+}} xmm3 = xmm14[0,1,2],xmm3[3]3526; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm3, %ymm13527; AVX-NEXT: vblendps {{.*#+}} ymm5 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]3528; AVX-NEXT: vmovaps 224(%rsi), %xmm33529; AVX-NEXT: vmovaps 224(%rdi), %xmm43530; AVX-NEXT: vshufps {{.*#+}} xmm0 = xmm4[1,1,1,1]3531; AVX-NEXT: vblendps {{.*#+}} xmm0 = xmm0[0],xmm3[1],xmm0[2,3]3532; AVX-NEXT: vunpcklps {{.*#+}} xmm14 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3533; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm14, %ymm13534; AVX-NEXT: vmovaps 224(%rcx), %xmm143535; AVX-NEXT: vmovaps 224(%rdx), %xmm153536; AVX-NEXT: vunpcklps {{.*#+}} xmm0 = xmm15[0],xmm14[0],xmm15[1],xmm14[1]3537; AVX-NEXT: vshufps {{.*#+}} xmm13 = xmm0[0,1,0,1]3538; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm13, %ymm03539; AVX-NEXT: vblendps {{.*#+}} ymm2 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3540; AVX-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3541; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm1[2,3,2,3]3542; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm1, %ymm13543; AVX-NEXT: vunpckhps {{.*#+}} xmm3 = xmm15[2],xmm14[2],xmm15[3],xmm14[3]3544; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm14[2,2,2,2]3545; AVX-NEXT: vblendps {{.*#+}} xmm4 = xmm15[0,1,2],xmm4[3]3546; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm33547; AVX-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm3[2,3],ymm1[4,5],ymm3[6,7]3548; AVX-NEXT: vmovaps 240(%rsi), %xmm33549; AVX-NEXT: vmovaps 240(%rdi), %xmm43550; AVX-NEXT: vshufps {{.*#+}} xmm13 = xmm4[1,1,1,1]3551; AVX-NEXT: vblendps {{.*#+}} xmm13 = xmm13[0],xmm3[1],xmm13[2,3]3552; AVX-NEXT: vunpcklps {{.*#+}} xmm14 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3553; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm14, %ymm133554; AVX-NEXT: vmovaps 240(%rcx), %xmm143555; AVX-NEXT: vmovaps 240(%rdx), %xmm153556; AVX-NEXT: vunpcklps {{.*#+}} xmm0 = xmm15[0],xmm14[0],xmm15[1],xmm14[1]3557; AVX-NEXT: vshufps {{.*#+}} xmm12 = xmm0[0,1,0,1]3558; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm12, %ymm03559; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm13[0,1],ymm0[2,3],ymm13[4,5],ymm0[6,7]3560; AVX-NEXT: vunpckhps {{.*#+}} xmm3 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3561; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm3[2,3,2,3]3562; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm3, %ymm33563; AVX-NEXT: vunpckhps {{.*#+}} xmm4 = xmm15[2],xmm14[2],xmm15[3],xmm14[3]3564; AVX-NEXT: vshufps {{.*#+}} xmm12 = xmm14[2,2,2,2]3565; AVX-NEXT: vblendps {{.*#+}} xmm12 = xmm15[0,1,2],xmm12[3]3566; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm12, %ymm43567; AVX-NEXT: vblendps {{.*#+}} ymm3 = ymm3[0,1],ymm4[2,3],ymm3[4,5],ymm4[6,7]3568; AVX-NEXT: vmovaps %ymm3, 992(%r8)3569; AVX-NEXT: vmovaps %ymm0, 960(%r8)3570; AVX-NEXT: vmovaps %ymm1, 928(%r8)3571; AVX-NEXT: vmovaps %ymm2, 896(%r8)3572; AVX-NEXT: vmovaps %ymm5, 864(%r8)3573; AVX-NEXT: vmovaps %ymm6, 832(%r8)3574; AVX-NEXT: vmovaps %ymm7, 800(%r8)3575; AVX-NEXT: vmovaps %ymm8, 768(%r8)3576; AVX-NEXT: vmovaps %ymm9, 736(%r8)3577; AVX-NEXT: vmovaps %ymm10, 704(%r8)3578; AVX-NEXT: vmovaps %ymm11, 672(%r8)3579; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3580; AVX-NEXT: vmovaps %ymm0, 640(%r8)3581; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3582; AVX-NEXT: vmovaps %ymm0, 608(%r8)3583; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3584; AVX-NEXT: vmovaps %ymm0, 576(%r8)3585; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3586; AVX-NEXT: vmovaps %ymm0, 544(%r8)3587; AVX-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload3588; AVX-NEXT: vmovaps %ymm0, 512(%r8)3589; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3590; AVX-NEXT: vmovaps %ymm0, 480(%r8)3591; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3592; AVX-NEXT: vmovaps %ymm0, 448(%r8)3593; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3594; AVX-NEXT: vmovaps %ymm0, 416(%r8)3595; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3596; AVX-NEXT: vmovaps %ymm0, 384(%r8)3597; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3598; AVX-NEXT: vmovaps %ymm0, 352(%r8)3599; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3600; AVX-NEXT: vmovaps %ymm0, 320(%r8)3601; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3602; AVX-NEXT: vmovaps %ymm0, 288(%r8)3603; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3604; AVX-NEXT: vmovaps %ymm0, 256(%r8)3605; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3606; AVX-NEXT: vmovaps %ymm0, 224(%r8)3607; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3608; AVX-NEXT: vmovaps %ymm0, 192(%r8)3609; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3610; AVX-NEXT: vmovaps %ymm0, 160(%r8)3611; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3612; AVX-NEXT: vmovaps %ymm0, 128(%r8)3613; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3614; AVX-NEXT: vmovaps %ymm0, 96(%r8)3615; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3616; AVX-NEXT: vmovaps %ymm0, 64(%r8)3617; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3618; AVX-NEXT: vmovaps %ymm0, 32(%r8)3619; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3620; AVX-NEXT: vmovaps %ymm0, (%r8)3621; AVX-NEXT: addq $552, %rsp # imm = 0x2283622; AVX-NEXT: vzeroupper3623; AVX-NEXT: retq3624;3625; AVX2-LABEL: store_i32_stride4_vf64:3626; AVX2: # %bb.0:3627; AVX2-NEXT: subq $520, %rsp # imm = 0x2083628; AVX2-NEXT: vmovaps (%rcx), %xmm43629; AVX2-NEXT: vmovaps 32(%rcx), %xmm53630; AVX2-NEXT: vmovaps 64(%rcx), %xmm03631; AVX2-NEXT: vmovaps (%rdx), %xmm63632; AVX2-NEXT: vmovaps 32(%rdx), %xmm73633; AVX2-NEXT: vmovaps 64(%rdx), %xmm13634; AVX2-NEXT: vunpcklps {{.*#+}} xmm2 = xmm6[0],xmm4[0],xmm6[1],xmm4[1]3635; AVX2-NEXT: vpermpd {{.*#+}} ymm8 = ymm2[0,0,2,1]3636; AVX2-NEXT: vmovaps (%rsi), %xmm93637; AVX2-NEXT: vmovaps 32(%rsi), %xmm103638; AVX2-NEXT: vmovaps 64(%rsi), %xmm23639; AVX2-NEXT: vmovaps (%rdi), %xmm113640; AVX2-NEXT: vmovaps 32(%rdi), %xmm123641; AVX2-NEXT: vmovaps 64(%rdi), %xmm33642; AVX2-NEXT: vunpcklps {{.*#+}} xmm13 = xmm11[0],xmm9[0],xmm11[1],xmm9[1]3643; AVX2-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,1,1,3]3644; AVX2-NEXT: vblendps {{.*#+}} ymm8 = ymm13[0,1],ymm8[2,3],ymm13[4,5],ymm8[6,7]3645; AVX2-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3646; AVX2-NEXT: vunpckhps {{.*#+}} xmm4 = xmm6[2],xmm4[2],xmm6[3],xmm4[3]3647; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]3648; AVX2-NEXT: vunpckhps {{.*#+}} xmm6 = xmm11[2],xmm9[2],xmm11[3],xmm9[3]3649; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,1,1,3]3650; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm6[0,1],ymm4[2,3],ymm6[4,5],ymm4[6,7]3651; AVX2-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3652; AVX2-NEXT: vunpcklps {{.*#+}} xmm4 = xmm7[0],xmm5[0],xmm7[1],xmm5[1]3653; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]3654; AVX2-NEXT: vunpcklps {{.*#+}} xmm6 = xmm12[0],xmm10[0],xmm12[1],xmm10[1]3655; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,1,1,3]3656; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm6[0,1],ymm4[2,3],ymm6[4,5],ymm4[6,7]3657; AVX2-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3658; AVX2-NEXT: vunpckhps {{.*#+}} xmm4 = xmm7[2],xmm5[2],xmm7[3],xmm5[3]3659; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]3660; AVX2-NEXT: vunpckhps {{.*#+}} xmm5 = xmm12[2],xmm10[2],xmm12[3],xmm10[3]3661; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]3662; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3],ymm5[4,5],ymm4[6,7]3663; AVX2-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3664; AVX2-NEXT: vunpcklps {{.*#+}} xmm4 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3665; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]3666; AVX2-NEXT: vunpcklps {{.*#+}} xmm5 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]3667; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]3668; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3],ymm5[4,5],ymm4[6,7]3669; AVX2-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3670; AVX2-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3671; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]3672; AVX2-NEXT: vunpckhps {{.*#+}} xmm1 = xmm3[2],xmm2[2],xmm3[3],xmm2[3]3673; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]3674; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3675; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3676; AVX2-NEXT: vmovaps 96(%rcx), %xmm03677; AVX2-NEXT: vmovaps 96(%rdx), %xmm13678; AVX2-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3679; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]3680; AVX2-NEXT: vmovaps 96(%rsi), %xmm33681; AVX2-NEXT: vmovaps 96(%rdi), %xmm43682; AVX2-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3683; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]3684; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]3685; AVX2-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3686; AVX2-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3687; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]3688; AVX2-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3689; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]3690; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3691; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3692; AVX2-NEXT: vmovaps 128(%rcx), %xmm03693; AVX2-NEXT: vmovaps 128(%rdx), %xmm13694; AVX2-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3695; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]3696; AVX2-NEXT: vmovaps 128(%rsi), %xmm33697; AVX2-NEXT: vmovaps 128(%rdi), %xmm43698; AVX2-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3699; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]3700; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]3701; AVX2-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3702; AVX2-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3703; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]3704; AVX2-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3705; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]3706; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3707; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3708; AVX2-NEXT: vmovaps 160(%rcx), %xmm03709; AVX2-NEXT: vmovaps 160(%rdx), %xmm13710; AVX2-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3711; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]3712; AVX2-NEXT: vmovaps 160(%rsi), %xmm33713; AVX2-NEXT: vmovaps 160(%rdi), %xmm43714; AVX2-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3715; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]3716; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]3717; AVX2-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3718; AVX2-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3719; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]3720; AVX2-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3721; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]3722; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3723; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3724; AVX2-NEXT: vmovaps 192(%rcx), %xmm03725; AVX2-NEXT: vmovaps 192(%rdx), %xmm13726; AVX2-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3727; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]3728; AVX2-NEXT: vmovaps 192(%rsi), %xmm33729; AVX2-NEXT: vmovaps 192(%rdi), %xmm43730; AVX2-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3731; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]3732; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]3733; AVX2-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3734; AVX2-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3735; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]3736; AVX2-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3737; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]3738; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3739; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3740; AVX2-NEXT: vmovaps 224(%rcx), %xmm03741; AVX2-NEXT: vmovaps 224(%rdx), %xmm13742; AVX2-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3743; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]3744; AVX2-NEXT: vmovaps 224(%rsi), %xmm33745; AVX2-NEXT: vmovaps 224(%rdi), %xmm43746; AVX2-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3747; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]3748; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]3749; AVX2-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3750; AVX2-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3751; AVX2-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3752; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]3753; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]3754; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3755; AVX2-NEXT: vmovups %ymm0, (%rsp) # 32-byte Spill3756; AVX2-NEXT: vmovaps (%rdx), %ymm03757; AVX2-NEXT: vmovaps (%rcx), %ymm13758; AVX2-NEXT: vunpcklps {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]3759; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]3760; AVX2-NEXT: vmovaps (%rdi), %ymm33761; AVX2-NEXT: vmovaps (%rsi), %ymm43762; AVX2-NEXT: vunpcklps {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[4],ymm4[4],ymm3[5],ymm4[5]3763; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]3764; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]3765; AVX2-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3766; AVX2-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]3767; AVX2-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[6],ymm4[6],ymm3[7],ymm4[7]3768; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]3769; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]3770; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3771; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3772; AVX2-NEXT: vmovaps 32(%rdx), %ymm03773; AVX2-NEXT: vmovaps 32(%rcx), %ymm13774; AVX2-NEXT: vunpcklps {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]3775; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]3776; AVX2-NEXT: vmovaps 32(%rdi), %ymm33777; AVX2-NEXT: vmovaps 32(%rsi), %ymm43778; AVX2-NEXT: vunpcklps {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[4],ymm4[4],ymm3[5],ymm4[5]3779; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]3780; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]3781; AVX2-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3782; AVX2-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]3783; AVX2-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[6],ymm4[6],ymm3[7],ymm4[7]3784; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]3785; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]3786; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3787; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3788; AVX2-NEXT: vmovaps 64(%rdx), %ymm03789; AVX2-NEXT: vmovaps 64(%rcx), %ymm13790; AVX2-NEXT: vunpcklps {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]3791; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]3792; AVX2-NEXT: vmovaps 64(%rdi), %ymm33793; AVX2-NEXT: vmovaps 64(%rsi), %ymm43794; AVX2-NEXT: vunpcklps {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[4],ymm4[4],ymm3[5],ymm4[5]3795; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]3796; AVX2-NEXT: vblendps {{.*#+}} ymm11 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]3797; AVX2-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]3798; AVX2-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[6],ymm4[6],ymm3[7],ymm4[7]3799; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]3800; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]3801; AVX2-NEXT: vblendps {{.*#+}} ymm10 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3802; AVX2-NEXT: vmovaps 96(%rdx), %ymm03803; AVX2-NEXT: vmovaps 96(%rcx), %ymm13804; AVX2-NEXT: vunpcklps {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]3805; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]3806; AVX2-NEXT: vmovaps 96(%rdi), %ymm33807; AVX2-NEXT: vmovaps 96(%rsi), %ymm43808; AVX2-NEXT: vunpcklps {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[4],ymm4[4],ymm3[5],ymm4[5]3809; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]3810; AVX2-NEXT: vblendps {{.*#+}} ymm9 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]3811; AVX2-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]3812; AVX2-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[6],ymm4[6],ymm3[7],ymm4[7]3813; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]3814; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]3815; AVX2-NEXT: vblendps {{.*#+}} ymm8 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3816; AVX2-NEXT: vmovaps 128(%rdx), %ymm33817; AVX2-NEXT: vmovaps 128(%rcx), %ymm13818; AVX2-NEXT: vunpcklps {{.*#+}} ymm2 = ymm3[0],ymm1[0],ymm3[1],ymm1[1],ymm3[4],ymm1[4],ymm3[5],ymm1[5]3819; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm2[0,2,2,3]3820; AVX2-NEXT: vmovaps 128(%rdi), %ymm23821; AVX2-NEXT: vmovaps 128(%rsi), %ymm03822; AVX2-NEXT: vunpcklps {{.*#+}} ymm13 = ymm2[0],ymm0[0],ymm2[1],ymm0[1],ymm2[4],ymm0[4],ymm2[5],ymm0[5]3823; AVX2-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[2,1,3,3]3824; AVX2-NEXT: vblendps {{.*#+}} ymm7 = ymm13[0,1],ymm4[2,3],ymm13[4,5],ymm4[6,7]3825; AVX2-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm1[2],ymm3[3],ymm1[3],ymm3[6],ymm1[6],ymm3[7],ymm1[7]3826; AVX2-NEXT: vunpckhps {{.*#+}} ymm0 = ymm2[2],ymm0[2],ymm2[3],ymm0[3],ymm2[6],ymm0[6],ymm2[7],ymm0[7]3827; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]3828; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]3829; AVX2-NEXT: vblendps {{.*#+}} ymm6 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]3830; AVX2-NEXT: vmovaps 160(%rdx), %ymm23831; AVX2-NEXT: vmovaps 160(%rcx), %ymm33832; AVX2-NEXT: vunpcklps {{.*#+}} ymm1 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[4],ymm3[4],ymm2[5],ymm3[5]3833; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]3834; AVX2-NEXT: vmovaps 160(%rdi), %ymm133835; AVX2-NEXT: vmovaps 160(%rsi), %ymm03836; AVX2-NEXT: vunpcklps {{.*#+}} ymm15 = ymm13[0],ymm0[0],ymm13[1],ymm0[1],ymm13[4],ymm0[4],ymm13[5],ymm0[5]3837; AVX2-NEXT: vpermpd {{.*#+}} ymm15 = ymm15[2,1,3,3]3838; AVX2-NEXT: vblendps {{.*#+}} ymm5 = ymm15[0,1],ymm1[2,3],ymm15[4,5],ymm1[6,7]3839; AVX2-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[6],ymm3[6],ymm2[7],ymm3[7]3840; AVX2-NEXT: vunpckhps {{.*#+}} ymm0 = ymm13[2],ymm0[2],ymm13[3],ymm0[3],ymm13[6],ymm0[6],ymm13[7],ymm0[7]3841; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]3842; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]3843; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]3844; AVX2-NEXT: vmovaps 192(%rdx), %ymm23845; AVX2-NEXT: vmovaps 192(%rcx), %ymm33846; AVX2-NEXT: vunpcklps {{.*#+}} ymm13 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[4],ymm3[4],ymm2[5],ymm3[5]3847; AVX2-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,2,2,3]3848; AVX2-NEXT: vmovaps 192(%rdi), %ymm153849; AVX2-NEXT: vmovaps 192(%rsi), %ymm03850; AVX2-NEXT: vunpcklps {{.*#+}} ymm14 = ymm15[0],ymm0[0],ymm15[1],ymm0[1],ymm15[4],ymm0[4],ymm15[5],ymm0[5]3851; AVX2-NEXT: vpermpd {{.*#+}} ymm14 = ymm14[2,1,3,3]3852; AVX2-NEXT: vblendps {{.*#+}} ymm13 = ymm14[0,1],ymm13[2,3],ymm14[4,5],ymm13[6,7]3853; AVX2-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[6],ymm3[6],ymm2[7],ymm3[7]3854; AVX2-NEXT: vunpckhps {{.*#+}} ymm0 = ymm15[2],ymm0[2],ymm15[3],ymm0[3],ymm15[6],ymm0[6],ymm15[7],ymm0[7]3855; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]3856; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]3857; AVX2-NEXT: vblendps {{.*#+}} ymm1 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]3858; AVX2-NEXT: vmovaps 224(%rdx), %ymm23859; AVX2-NEXT: vmovaps 224(%rcx), %ymm33860; AVX2-NEXT: vunpcklps {{.*#+}} ymm14 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[4],ymm3[4],ymm2[5],ymm3[5]3861; AVX2-NEXT: vpermpd {{.*#+}} ymm14 = ymm14[0,2,2,3]3862; AVX2-NEXT: vmovaps 224(%rdi), %ymm153863; AVX2-NEXT: vmovaps 224(%rsi), %ymm03864; AVX2-NEXT: vunpcklps {{.*#+}} ymm12 = ymm15[0],ymm0[0],ymm15[1],ymm0[1],ymm15[4],ymm0[4],ymm15[5],ymm0[5]3865; AVX2-NEXT: vpermpd {{.*#+}} ymm12 = ymm12[2,1,3,3]3866; AVX2-NEXT: vblendps {{.*#+}} ymm12 = ymm12[0,1],ymm14[2,3],ymm12[4,5],ymm14[6,7]3867; AVX2-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[6],ymm3[6],ymm2[7],ymm3[7]3868; AVX2-NEXT: vunpckhps {{.*#+}} ymm0 = ymm15[2],ymm0[2],ymm15[3],ymm0[3],ymm15[6],ymm0[6],ymm15[7],ymm0[7]3869; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]3870; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]3871; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]3872; AVX2-NEXT: vmovaps %ymm0, 992(%r8)3873; AVX2-NEXT: vmovaps %ymm12, 960(%r8)3874; AVX2-NEXT: vmovaps %ymm1, 864(%r8)3875; AVX2-NEXT: vmovaps %ymm13, 832(%r8)3876; AVX2-NEXT: vmovaps %ymm4, 736(%r8)3877; AVX2-NEXT: vmovaps %ymm5, 704(%r8)3878; AVX2-NEXT: vmovaps %ymm6, 608(%r8)3879; AVX2-NEXT: vmovaps %ymm7, 576(%r8)3880; AVX2-NEXT: vmovaps %ymm8, 480(%r8)3881; AVX2-NEXT: vmovaps %ymm9, 448(%r8)3882; AVX2-NEXT: vmovaps %ymm10, 352(%r8)3883; AVX2-NEXT: vmovaps %ymm11, 320(%r8)3884; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3885; AVX2-NEXT: vmovaps %ymm0, 224(%r8)3886; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3887; AVX2-NEXT: vmovaps %ymm0, 192(%r8)3888; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3889; AVX2-NEXT: vmovaps %ymm0, 96(%r8)3890; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3891; AVX2-NEXT: vmovaps %ymm0, 64(%r8)3892; AVX2-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload3893; AVX2-NEXT: vmovaps %ymm0, 928(%r8)3894; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3895; AVX2-NEXT: vmovaps %ymm0, 896(%r8)3896; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3897; AVX2-NEXT: vmovaps %ymm0, 800(%r8)3898; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3899; AVX2-NEXT: vmovaps %ymm0, 768(%r8)3900; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3901; AVX2-NEXT: vmovaps %ymm0, 672(%r8)3902; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3903; AVX2-NEXT: vmovaps %ymm0, 640(%r8)3904; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3905; AVX2-NEXT: vmovaps %ymm0, 544(%r8)3906; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3907; AVX2-NEXT: vmovaps %ymm0, 512(%r8)3908; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3909; AVX2-NEXT: vmovaps %ymm0, 416(%r8)3910; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3911; AVX2-NEXT: vmovaps %ymm0, 384(%r8)3912; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3913; AVX2-NEXT: vmovaps %ymm0, 288(%r8)3914; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3915; AVX2-NEXT: vmovaps %ymm0, 256(%r8)3916; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3917; AVX2-NEXT: vmovaps %ymm0, 160(%r8)3918; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3919; AVX2-NEXT: vmovaps %ymm0, 128(%r8)3920; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3921; AVX2-NEXT: vmovaps %ymm0, 32(%r8)3922; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3923; AVX2-NEXT: vmovaps %ymm0, (%r8)3924; AVX2-NEXT: addq $520, %rsp # imm = 0x2083925; AVX2-NEXT: vzeroupper3926; AVX2-NEXT: retq3927;3928; AVX2-FP-LABEL: store_i32_stride4_vf64:3929; AVX2-FP: # %bb.0:3930; AVX2-FP-NEXT: subq $520, %rsp # imm = 0x2083931; AVX2-FP-NEXT: vmovaps (%rcx), %xmm43932; AVX2-FP-NEXT: vmovaps 32(%rcx), %xmm53933; AVX2-FP-NEXT: vmovaps 64(%rcx), %xmm03934; AVX2-FP-NEXT: vmovaps (%rdx), %xmm63935; AVX2-FP-NEXT: vmovaps 32(%rdx), %xmm73936; AVX2-FP-NEXT: vmovaps 64(%rdx), %xmm13937; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm2 = xmm6[0],xmm4[0],xmm6[1],xmm4[1]3938; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm8 = ymm2[0,0,2,1]3939; AVX2-FP-NEXT: vmovaps (%rsi), %xmm93940; AVX2-FP-NEXT: vmovaps 32(%rsi), %xmm103941; AVX2-FP-NEXT: vmovaps 64(%rsi), %xmm23942; AVX2-FP-NEXT: vmovaps (%rdi), %xmm113943; AVX2-FP-NEXT: vmovaps 32(%rdi), %xmm123944; AVX2-FP-NEXT: vmovaps 64(%rdi), %xmm33945; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm13 = xmm11[0],xmm9[0],xmm11[1],xmm9[1]3946; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,1,1,3]3947; AVX2-FP-NEXT: vblendps {{.*#+}} ymm8 = ymm13[0,1],ymm8[2,3],ymm13[4,5],ymm8[6,7]3948; AVX2-FP-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3949; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm4 = xmm6[2],xmm4[2],xmm6[3],xmm4[3]3950; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]3951; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm6 = xmm11[2],xmm9[2],xmm11[3],xmm9[3]3952; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,1,1,3]3953; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm6[0,1],ymm4[2,3],ymm6[4,5],ymm4[6,7]3954; AVX2-FP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3955; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm4 = xmm7[0],xmm5[0],xmm7[1],xmm5[1]3956; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]3957; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm6 = xmm12[0],xmm10[0],xmm12[1],xmm10[1]3958; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,1,1,3]3959; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm6[0,1],ymm4[2,3],ymm6[4,5],ymm4[6,7]3960; AVX2-FP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3961; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm4 = xmm7[2],xmm5[2],xmm7[3],xmm5[3]3962; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]3963; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm5 = xmm12[2],xmm10[2],xmm12[3],xmm10[3]3964; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]3965; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3],ymm5[4,5],ymm4[6,7]3966; AVX2-FP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3967; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm4 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3968; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]3969; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]3970; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]3971; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3],ymm5[4,5],ymm4[6,7]3972; AVX2-FP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3973; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3974; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]3975; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm3[2],xmm2[2],xmm3[3],xmm2[3]3976; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]3977; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3978; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3979; AVX2-FP-NEXT: vmovaps 96(%rcx), %xmm03980; AVX2-FP-NEXT: vmovaps 96(%rdx), %xmm13981; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3982; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]3983; AVX2-FP-NEXT: vmovaps 96(%rsi), %xmm33984; AVX2-FP-NEXT: vmovaps 96(%rdi), %xmm43985; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]3986; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]3987; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]3988; AVX2-FP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3989; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]3990; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]3991; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]3992; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]3993; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]3994; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3995; AVX2-FP-NEXT: vmovaps 128(%rcx), %xmm03996; AVX2-FP-NEXT: vmovaps 128(%rdx), %xmm13997; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]3998; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]3999; AVX2-FP-NEXT: vmovaps 128(%rsi), %xmm34000; AVX2-FP-NEXT: vmovaps 128(%rdi), %xmm44001; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]4002; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]4003; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4004; AVX2-FP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4005; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]4006; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]4007; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]4008; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]4009; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4010; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4011; AVX2-FP-NEXT: vmovaps 160(%rcx), %xmm04012; AVX2-FP-NEXT: vmovaps 160(%rdx), %xmm14013; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4014; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]4015; AVX2-FP-NEXT: vmovaps 160(%rsi), %xmm34016; AVX2-FP-NEXT: vmovaps 160(%rdi), %xmm44017; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]4018; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]4019; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4020; AVX2-FP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4021; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]4022; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]4023; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]4024; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]4025; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4026; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4027; AVX2-FP-NEXT: vmovaps 192(%rcx), %xmm04028; AVX2-FP-NEXT: vmovaps 192(%rdx), %xmm14029; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4030; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]4031; AVX2-FP-NEXT: vmovaps 192(%rsi), %xmm34032; AVX2-FP-NEXT: vmovaps 192(%rdi), %xmm44033; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]4034; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]4035; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4036; AVX2-FP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4037; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]4038; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]4039; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]4040; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]4041; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4042; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4043; AVX2-FP-NEXT: vmovaps 224(%rcx), %xmm04044; AVX2-FP-NEXT: vmovaps 224(%rdx), %xmm14045; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4046; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]4047; AVX2-FP-NEXT: vmovaps 224(%rsi), %xmm34048; AVX2-FP-NEXT: vmovaps 224(%rdi), %xmm44049; AVX2-FP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]4050; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]4051; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4052; AVX2-FP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4053; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]4054; AVX2-FP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]4055; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]4056; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]4057; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4058; AVX2-FP-NEXT: vmovups %ymm0, (%rsp) # 32-byte Spill4059; AVX2-FP-NEXT: vmovaps (%rdx), %ymm04060; AVX2-FP-NEXT: vmovaps (%rcx), %ymm14061; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]4062; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4063; AVX2-FP-NEXT: vmovaps (%rdi), %ymm34064; AVX2-FP-NEXT: vmovaps (%rsi), %ymm44065; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[4],ymm4[4],ymm3[5],ymm4[5]4066; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]4067; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4068; AVX2-FP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4069; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]4070; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[6],ymm4[6],ymm3[7],ymm4[7]4071; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]4072; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]4073; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4074; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4075; AVX2-FP-NEXT: vmovaps 32(%rdx), %ymm04076; AVX2-FP-NEXT: vmovaps 32(%rcx), %ymm14077; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]4078; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4079; AVX2-FP-NEXT: vmovaps 32(%rdi), %ymm34080; AVX2-FP-NEXT: vmovaps 32(%rsi), %ymm44081; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[4],ymm4[4],ymm3[5],ymm4[5]4082; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]4083; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4084; AVX2-FP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4085; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]4086; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[6],ymm4[6],ymm3[7],ymm4[7]4087; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]4088; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]4089; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4090; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4091; AVX2-FP-NEXT: vmovaps 64(%rdx), %ymm04092; AVX2-FP-NEXT: vmovaps 64(%rcx), %ymm14093; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]4094; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4095; AVX2-FP-NEXT: vmovaps 64(%rdi), %ymm34096; AVX2-FP-NEXT: vmovaps 64(%rsi), %ymm44097; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[4],ymm4[4],ymm3[5],ymm4[5]4098; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]4099; AVX2-FP-NEXT: vblendps {{.*#+}} ymm11 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4100; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]4101; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[6],ymm4[6],ymm3[7],ymm4[7]4102; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]4103; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]4104; AVX2-FP-NEXT: vblendps {{.*#+}} ymm10 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4105; AVX2-FP-NEXT: vmovaps 96(%rdx), %ymm04106; AVX2-FP-NEXT: vmovaps 96(%rcx), %ymm14107; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]4108; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4109; AVX2-FP-NEXT: vmovaps 96(%rdi), %ymm34110; AVX2-FP-NEXT: vmovaps 96(%rsi), %ymm44111; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[4],ymm4[4],ymm3[5],ymm4[5]4112; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]4113; AVX2-FP-NEXT: vblendps {{.*#+}} ymm9 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4114; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]4115; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[6],ymm4[6],ymm3[7],ymm4[7]4116; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]4117; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]4118; AVX2-FP-NEXT: vblendps {{.*#+}} ymm8 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4119; AVX2-FP-NEXT: vmovaps 128(%rdx), %ymm34120; AVX2-FP-NEXT: vmovaps 128(%rcx), %ymm14121; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm3[0],ymm1[0],ymm3[1],ymm1[1],ymm3[4],ymm1[4],ymm3[5],ymm1[5]4122; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm2[0,2,2,3]4123; AVX2-FP-NEXT: vmovaps 128(%rdi), %ymm24124; AVX2-FP-NEXT: vmovaps 128(%rsi), %ymm04125; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm13 = ymm2[0],ymm0[0],ymm2[1],ymm0[1],ymm2[4],ymm0[4],ymm2[5],ymm0[5]4126; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[2,1,3,3]4127; AVX2-FP-NEXT: vblendps {{.*#+}} ymm7 = ymm13[0,1],ymm4[2,3],ymm13[4,5],ymm4[6,7]4128; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm1[2],ymm3[3],ymm1[3],ymm3[6],ymm1[6],ymm3[7],ymm1[7]4129; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm2[2],ymm0[2],ymm2[3],ymm0[3],ymm2[6],ymm0[6],ymm2[7],ymm0[7]4130; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]4131; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]4132; AVX2-FP-NEXT: vblendps {{.*#+}} ymm6 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]4133; AVX2-FP-NEXT: vmovaps 160(%rdx), %ymm24134; AVX2-FP-NEXT: vmovaps 160(%rcx), %ymm34135; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm1 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[4],ymm3[4],ymm2[5],ymm3[5]4136; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]4137; AVX2-FP-NEXT: vmovaps 160(%rdi), %ymm134138; AVX2-FP-NEXT: vmovaps 160(%rsi), %ymm04139; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm15 = ymm13[0],ymm0[0],ymm13[1],ymm0[1],ymm13[4],ymm0[4],ymm13[5],ymm0[5]4140; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm15 = ymm15[2,1,3,3]4141; AVX2-FP-NEXT: vblendps {{.*#+}} ymm5 = ymm15[0,1],ymm1[2,3],ymm15[4,5],ymm1[6,7]4142; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[6],ymm3[6],ymm2[7],ymm3[7]4143; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm13[2],ymm0[2],ymm13[3],ymm0[3],ymm13[6],ymm0[6],ymm13[7],ymm0[7]4144; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4145; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]4146; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]4147; AVX2-FP-NEXT: vmovaps 192(%rdx), %ymm24148; AVX2-FP-NEXT: vmovaps 192(%rcx), %ymm34149; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm13 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[4],ymm3[4],ymm2[5],ymm3[5]4150; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,2,2,3]4151; AVX2-FP-NEXT: vmovaps 192(%rdi), %ymm154152; AVX2-FP-NEXT: vmovaps 192(%rsi), %ymm04153; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm14 = ymm15[0],ymm0[0],ymm15[1],ymm0[1],ymm15[4],ymm0[4],ymm15[5],ymm0[5]4154; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm14 = ymm14[2,1,3,3]4155; AVX2-FP-NEXT: vblendps {{.*#+}} ymm13 = ymm14[0,1],ymm13[2,3],ymm14[4,5],ymm13[6,7]4156; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[6],ymm3[6],ymm2[7],ymm3[7]4157; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm15[2],ymm0[2],ymm15[3],ymm0[3],ymm15[6],ymm0[6],ymm15[7],ymm0[7]4158; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4159; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]4160; AVX2-FP-NEXT: vblendps {{.*#+}} ymm1 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]4161; AVX2-FP-NEXT: vmovaps 224(%rdx), %ymm24162; AVX2-FP-NEXT: vmovaps 224(%rcx), %ymm34163; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm14 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[4],ymm3[4],ymm2[5],ymm3[5]4164; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm14 = ymm14[0,2,2,3]4165; AVX2-FP-NEXT: vmovaps 224(%rdi), %ymm154166; AVX2-FP-NEXT: vmovaps 224(%rsi), %ymm04167; AVX2-FP-NEXT: vunpcklps {{.*#+}} ymm12 = ymm15[0],ymm0[0],ymm15[1],ymm0[1],ymm15[4],ymm0[4],ymm15[5],ymm0[5]4168; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm12 = ymm12[2,1,3,3]4169; AVX2-FP-NEXT: vblendps {{.*#+}} ymm12 = ymm12[0,1],ymm14[2,3],ymm12[4,5],ymm14[6,7]4170; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[6],ymm3[6],ymm2[7],ymm3[7]4171; AVX2-FP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm15[2],ymm0[2],ymm15[3],ymm0[3],ymm15[6],ymm0[6],ymm15[7],ymm0[7]4172; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4173; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]4174; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]4175; AVX2-FP-NEXT: vmovaps %ymm0, 992(%r8)4176; AVX2-FP-NEXT: vmovaps %ymm12, 960(%r8)4177; AVX2-FP-NEXT: vmovaps %ymm1, 864(%r8)4178; AVX2-FP-NEXT: vmovaps %ymm13, 832(%r8)4179; AVX2-FP-NEXT: vmovaps %ymm4, 736(%r8)4180; AVX2-FP-NEXT: vmovaps %ymm5, 704(%r8)4181; AVX2-FP-NEXT: vmovaps %ymm6, 608(%r8)4182; AVX2-FP-NEXT: vmovaps %ymm7, 576(%r8)4183; AVX2-FP-NEXT: vmovaps %ymm8, 480(%r8)4184; AVX2-FP-NEXT: vmovaps %ymm9, 448(%r8)4185; AVX2-FP-NEXT: vmovaps %ymm10, 352(%r8)4186; AVX2-FP-NEXT: vmovaps %ymm11, 320(%r8)4187; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4188; AVX2-FP-NEXT: vmovaps %ymm0, 224(%r8)4189; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4190; AVX2-FP-NEXT: vmovaps %ymm0, 192(%r8)4191; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4192; AVX2-FP-NEXT: vmovaps %ymm0, 96(%r8)4193; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4194; AVX2-FP-NEXT: vmovaps %ymm0, 64(%r8)4195; AVX2-FP-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload4196; AVX2-FP-NEXT: vmovaps %ymm0, 928(%r8)4197; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4198; AVX2-FP-NEXT: vmovaps %ymm0, 896(%r8)4199; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4200; AVX2-FP-NEXT: vmovaps %ymm0, 800(%r8)4201; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4202; AVX2-FP-NEXT: vmovaps %ymm0, 768(%r8)4203; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4204; AVX2-FP-NEXT: vmovaps %ymm0, 672(%r8)4205; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4206; AVX2-FP-NEXT: vmovaps %ymm0, 640(%r8)4207; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4208; AVX2-FP-NEXT: vmovaps %ymm0, 544(%r8)4209; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4210; AVX2-FP-NEXT: vmovaps %ymm0, 512(%r8)4211; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4212; AVX2-FP-NEXT: vmovaps %ymm0, 416(%r8)4213; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4214; AVX2-FP-NEXT: vmovaps %ymm0, 384(%r8)4215; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4216; AVX2-FP-NEXT: vmovaps %ymm0, 288(%r8)4217; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4218; AVX2-FP-NEXT: vmovaps %ymm0, 256(%r8)4219; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4220; AVX2-FP-NEXT: vmovaps %ymm0, 160(%r8)4221; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4222; AVX2-FP-NEXT: vmovaps %ymm0, 128(%r8)4223; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4224; AVX2-FP-NEXT: vmovaps %ymm0, 32(%r8)4225; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4226; AVX2-FP-NEXT: vmovaps %ymm0, (%r8)4227; AVX2-FP-NEXT: addq $520, %rsp # imm = 0x2084228; AVX2-FP-NEXT: vzeroupper4229; AVX2-FP-NEXT: retq4230;4231; AVX2-FCP-LABEL: store_i32_stride4_vf64:4232; AVX2-FCP: # %bb.0:4233; AVX2-FCP-NEXT: subq $520, %rsp # imm = 0x2084234; AVX2-FCP-NEXT: vmovaps (%rcx), %xmm44235; AVX2-FCP-NEXT: vmovaps 32(%rcx), %xmm54236; AVX2-FCP-NEXT: vmovaps 64(%rcx), %xmm04237; AVX2-FCP-NEXT: vmovaps (%rdx), %xmm64238; AVX2-FCP-NEXT: vmovaps 32(%rdx), %xmm74239; AVX2-FCP-NEXT: vmovaps 64(%rdx), %xmm14240; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm2 = xmm6[0],xmm4[0],xmm6[1],xmm4[1]4241; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm8 = ymm2[0,0,2,1]4242; AVX2-FCP-NEXT: vmovaps (%rsi), %xmm94243; AVX2-FCP-NEXT: vmovaps 32(%rsi), %xmm104244; AVX2-FCP-NEXT: vmovaps 64(%rsi), %xmm24245; AVX2-FCP-NEXT: vmovaps (%rdi), %xmm114246; AVX2-FCP-NEXT: vmovaps 32(%rdi), %xmm124247; AVX2-FCP-NEXT: vmovaps 64(%rdi), %xmm34248; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm13 = xmm11[0],xmm9[0],xmm11[1],xmm9[1]4249; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,1,1,3]4250; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm8 = ymm13[0,1],ymm8[2,3],ymm13[4,5],ymm8[6,7]4251; AVX2-FCP-NEXT: vmovups %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4252; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm4 = xmm6[2],xmm4[2],xmm6[3],xmm4[3]4253; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]4254; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm6 = xmm11[2],xmm9[2],xmm11[3],xmm9[3]4255; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,1,1,3]4256; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm6[0,1],ymm4[2,3],ymm6[4,5],ymm4[6,7]4257; AVX2-FCP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4258; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm4 = xmm7[0],xmm5[0],xmm7[1],xmm5[1]4259; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]4260; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm6 = xmm12[0],xmm10[0],xmm12[1],xmm10[1]4261; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,1,1,3]4262; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm6[0,1],ymm4[2,3],ymm6[4,5],ymm4[6,7]4263; AVX2-FCP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4264; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm4 = xmm7[2],xmm5[2],xmm7[3],xmm5[3]4265; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]4266; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm5 = xmm12[2],xmm10[2],xmm12[3],xmm10[3]4267; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]4268; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3],ymm5[4,5],ymm4[6,7]4269; AVX2-FCP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4270; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm4 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4271; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]4272; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]4273; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]4274; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3],ymm5[4,5],ymm4[6,7]4275; AVX2-FCP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4276; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]4277; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]4278; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm3[2],xmm2[2],xmm3[3],xmm2[3]4279; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]4280; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4281; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4282; AVX2-FCP-NEXT: vmovaps 96(%rcx), %xmm04283; AVX2-FCP-NEXT: vmovaps 96(%rdx), %xmm14284; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4285; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]4286; AVX2-FCP-NEXT: vmovaps 96(%rsi), %xmm34287; AVX2-FCP-NEXT: vmovaps 96(%rdi), %xmm44288; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]4289; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]4290; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4291; AVX2-FCP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4292; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]4293; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]4294; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]4295; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]4296; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4297; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4298; AVX2-FCP-NEXT: vmovaps 128(%rcx), %xmm04299; AVX2-FCP-NEXT: vmovaps 128(%rdx), %xmm14300; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4301; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]4302; AVX2-FCP-NEXT: vmovaps 128(%rsi), %xmm34303; AVX2-FCP-NEXT: vmovaps 128(%rdi), %xmm44304; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]4305; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]4306; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4307; AVX2-FCP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4308; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]4309; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]4310; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]4311; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]4312; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4313; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4314; AVX2-FCP-NEXT: vmovaps 160(%rcx), %xmm04315; AVX2-FCP-NEXT: vmovaps 160(%rdx), %xmm14316; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4317; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]4318; AVX2-FCP-NEXT: vmovaps 160(%rsi), %xmm34319; AVX2-FCP-NEXT: vmovaps 160(%rdi), %xmm44320; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]4321; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]4322; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4323; AVX2-FCP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4324; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]4325; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]4326; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]4327; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]4328; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4329; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4330; AVX2-FCP-NEXT: vmovaps 192(%rcx), %xmm04331; AVX2-FCP-NEXT: vmovaps 192(%rdx), %xmm14332; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4333; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]4334; AVX2-FCP-NEXT: vmovaps 192(%rsi), %xmm34335; AVX2-FCP-NEXT: vmovaps 192(%rdi), %xmm44336; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]4337; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]4338; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4339; AVX2-FCP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4340; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]4341; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]4342; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]4343; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]4344; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4345; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4346; AVX2-FCP-NEXT: vmovaps 224(%rcx), %xmm04347; AVX2-FCP-NEXT: vmovaps 224(%rdx), %xmm14348; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4349; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]4350; AVX2-FCP-NEXT: vmovaps 224(%rsi), %xmm34351; AVX2-FCP-NEXT: vmovaps 224(%rdi), %xmm44352; AVX2-FCP-NEXT: vunpcklps {{.*#+}} xmm5 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]4353; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]4354; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4355; AVX2-FCP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4356; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm0 = xmm1[2],xmm0[2],xmm1[3],xmm0[3]4357; AVX2-FCP-NEXT: vunpckhps {{.*#+}} xmm1 = xmm4[2],xmm3[2],xmm4[3],xmm3[3]4358; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,1]4359; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]4360; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4361; AVX2-FCP-NEXT: vmovups %ymm0, (%rsp) # 32-byte Spill4362; AVX2-FCP-NEXT: vmovaps (%rdx), %ymm04363; AVX2-FCP-NEXT: vmovaps (%rcx), %ymm14364; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]4365; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4366; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm34367; AVX2-FCP-NEXT: vmovaps (%rsi), %ymm44368; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[4],ymm4[4],ymm3[5],ymm4[5]4369; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]4370; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4371; AVX2-FCP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4372; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]4373; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[6],ymm4[6],ymm3[7],ymm4[7]4374; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]4375; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]4376; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4377; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4378; AVX2-FCP-NEXT: vmovaps 32(%rdx), %ymm04379; AVX2-FCP-NEXT: vmovaps 32(%rcx), %ymm14380; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]4381; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4382; AVX2-FCP-NEXT: vmovaps 32(%rdi), %ymm34383; AVX2-FCP-NEXT: vmovaps 32(%rsi), %ymm44384; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[4],ymm4[4],ymm3[5],ymm4[5]4385; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]4386; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4387; AVX2-FCP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4388; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]4389; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[6],ymm4[6],ymm3[7],ymm4[7]4390; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]4391; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]4392; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4393; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4394; AVX2-FCP-NEXT: vmovaps 64(%rdx), %ymm04395; AVX2-FCP-NEXT: vmovaps 64(%rcx), %ymm14396; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]4397; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4398; AVX2-FCP-NEXT: vmovaps 64(%rdi), %ymm34399; AVX2-FCP-NEXT: vmovaps 64(%rsi), %ymm44400; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[4],ymm4[4],ymm3[5],ymm4[5]4401; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]4402; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm11 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4403; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]4404; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[6],ymm4[6],ymm3[7],ymm4[7]4405; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]4406; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]4407; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm10 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4408; AVX2-FCP-NEXT: vmovaps 96(%rdx), %ymm04409; AVX2-FCP-NEXT: vmovaps 96(%rcx), %ymm14410; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]4411; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4412; AVX2-FCP-NEXT: vmovaps 96(%rdi), %ymm34413; AVX2-FCP-NEXT: vmovaps 96(%rsi), %ymm44414; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[4],ymm4[4],ymm3[5],ymm4[5]4415; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[2,1,3,3]4416; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm9 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]4417; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]4418; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[6],ymm4[6],ymm3[7],ymm4[7]4419; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]4420; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]4421; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm8 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]4422; AVX2-FCP-NEXT: vmovaps 128(%rdx), %ymm34423; AVX2-FCP-NEXT: vmovaps 128(%rcx), %ymm14424; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm2 = ymm3[0],ymm1[0],ymm3[1],ymm1[1],ymm3[4],ymm1[4],ymm3[5],ymm1[5]4425; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm2[0,2,2,3]4426; AVX2-FCP-NEXT: vmovaps 128(%rdi), %ymm24427; AVX2-FCP-NEXT: vmovaps 128(%rsi), %ymm04428; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm13 = ymm2[0],ymm0[0],ymm2[1],ymm0[1],ymm2[4],ymm0[4],ymm2[5],ymm0[5]4429; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[2,1,3,3]4430; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm7 = ymm13[0,1],ymm4[2,3],ymm13[4,5],ymm4[6,7]4431; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm1 = ymm3[2],ymm1[2],ymm3[3],ymm1[3],ymm3[6],ymm1[6],ymm3[7],ymm1[7]4432; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm2[2],ymm0[2],ymm2[3],ymm0[3],ymm2[6],ymm0[6],ymm2[7],ymm0[7]4433; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]4434; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]4435; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm6 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]4436; AVX2-FCP-NEXT: vmovaps 160(%rdx), %ymm24437; AVX2-FCP-NEXT: vmovaps 160(%rcx), %ymm34438; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm1 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[4],ymm3[4],ymm2[5],ymm3[5]4439; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]4440; AVX2-FCP-NEXT: vmovaps 160(%rdi), %ymm134441; AVX2-FCP-NEXT: vmovaps 160(%rsi), %ymm04442; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm15 = ymm13[0],ymm0[0],ymm13[1],ymm0[1],ymm13[4],ymm0[4],ymm13[5],ymm0[5]4443; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm15 = ymm15[2,1,3,3]4444; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm5 = ymm15[0,1],ymm1[2,3],ymm15[4,5],ymm1[6,7]4445; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[6],ymm3[6],ymm2[7],ymm3[7]4446; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm13[2],ymm0[2],ymm13[3],ymm0[3],ymm13[6],ymm0[6],ymm13[7],ymm0[7]4447; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4448; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]4449; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]4450; AVX2-FCP-NEXT: vmovaps 192(%rdx), %ymm24451; AVX2-FCP-NEXT: vmovaps 192(%rcx), %ymm34452; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm13 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[4],ymm3[4],ymm2[5],ymm3[5]4453; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,2,2,3]4454; AVX2-FCP-NEXT: vmovaps 192(%rdi), %ymm154455; AVX2-FCP-NEXT: vmovaps 192(%rsi), %ymm04456; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm14 = ymm15[0],ymm0[0],ymm15[1],ymm0[1],ymm15[4],ymm0[4],ymm15[5],ymm0[5]4457; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm14 = ymm14[2,1,3,3]4458; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm13 = ymm14[0,1],ymm13[2,3],ymm14[4,5],ymm13[6,7]4459; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[6],ymm3[6],ymm2[7],ymm3[7]4460; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm15[2],ymm0[2],ymm15[3],ymm0[3],ymm15[6],ymm0[6],ymm15[7],ymm0[7]4461; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4462; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]4463; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm1 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]4464; AVX2-FCP-NEXT: vmovaps 224(%rdx), %ymm24465; AVX2-FCP-NEXT: vmovaps 224(%rcx), %ymm34466; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm14 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[4],ymm3[4],ymm2[5],ymm3[5]4467; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm14 = ymm14[0,2,2,3]4468; AVX2-FCP-NEXT: vmovaps 224(%rdi), %ymm154469; AVX2-FCP-NEXT: vmovaps 224(%rsi), %ymm04470; AVX2-FCP-NEXT: vunpcklps {{.*#+}} ymm12 = ymm15[0],ymm0[0],ymm15[1],ymm0[1],ymm15[4],ymm0[4],ymm15[5],ymm0[5]4471; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm12 = ymm12[2,1,3,3]4472; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm12 = ymm12[0,1],ymm14[2,3],ymm12[4,5],ymm14[6,7]4473; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm2 = ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[6],ymm3[6],ymm2[7],ymm3[7]4474; AVX2-FCP-NEXT: vunpckhps {{.*#+}} ymm0 = ymm15[2],ymm0[2],ymm15[3],ymm0[3],ymm15[6],ymm0[6],ymm15[7],ymm0[7]4475; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,2,3]4476; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]4477; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]4478; AVX2-FCP-NEXT: vmovaps %ymm0, 992(%r8)4479; AVX2-FCP-NEXT: vmovaps %ymm12, 960(%r8)4480; AVX2-FCP-NEXT: vmovaps %ymm1, 864(%r8)4481; AVX2-FCP-NEXT: vmovaps %ymm13, 832(%r8)4482; AVX2-FCP-NEXT: vmovaps %ymm4, 736(%r8)4483; AVX2-FCP-NEXT: vmovaps %ymm5, 704(%r8)4484; AVX2-FCP-NEXT: vmovaps %ymm6, 608(%r8)4485; AVX2-FCP-NEXT: vmovaps %ymm7, 576(%r8)4486; AVX2-FCP-NEXT: vmovaps %ymm8, 480(%r8)4487; AVX2-FCP-NEXT: vmovaps %ymm9, 448(%r8)4488; AVX2-FCP-NEXT: vmovaps %ymm10, 352(%r8)4489; AVX2-FCP-NEXT: vmovaps %ymm11, 320(%r8)4490; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4491; AVX2-FCP-NEXT: vmovaps %ymm0, 224(%r8)4492; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4493; AVX2-FCP-NEXT: vmovaps %ymm0, 192(%r8)4494; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4495; AVX2-FCP-NEXT: vmovaps %ymm0, 96(%r8)4496; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4497; AVX2-FCP-NEXT: vmovaps %ymm0, 64(%r8)4498; AVX2-FCP-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload4499; AVX2-FCP-NEXT: vmovaps %ymm0, 928(%r8)4500; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4501; AVX2-FCP-NEXT: vmovaps %ymm0, 896(%r8)4502; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4503; AVX2-FCP-NEXT: vmovaps %ymm0, 800(%r8)4504; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4505; AVX2-FCP-NEXT: vmovaps %ymm0, 768(%r8)4506; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4507; AVX2-FCP-NEXT: vmovaps %ymm0, 672(%r8)4508; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4509; AVX2-FCP-NEXT: vmovaps %ymm0, 640(%r8)4510; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4511; AVX2-FCP-NEXT: vmovaps %ymm0, 544(%r8)4512; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4513; AVX2-FCP-NEXT: vmovaps %ymm0, 512(%r8)4514; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4515; AVX2-FCP-NEXT: vmovaps %ymm0, 416(%r8)4516; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4517; AVX2-FCP-NEXT: vmovaps %ymm0, 384(%r8)4518; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4519; AVX2-FCP-NEXT: vmovaps %ymm0, 288(%r8)4520; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4521; AVX2-FCP-NEXT: vmovaps %ymm0, 256(%r8)4522; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4523; AVX2-FCP-NEXT: vmovaps %ymm0, 160(%r8)4524; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4525; AVX2-FCP-NEXT: vmovaps %ymm0, 128(%r8)4526; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4527; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%r8)4528; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4529; AVX2-FCP-NEXT: vmovaps %ymm0, (%r8)4530; AVX2-FCP-NEXT: addq $520, %rsp # imm = 0x2084531; AVX2-FCP-NEXT: vzeroupper4532; AVX2-FCP-NEXT: retq4533;4534; AVX512-LABEL: store_i32_stride4_vf64:4535; AVX512: # %bb.0:4536; AVX512-NEXT: vmovdqa64 (%rdi), %zmm04537; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm14538; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm24539; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm34540; AVX512-NEXT: vmovdqa64 (%rsi), %zmm174541; AVX512-NEXT: vmovdqa64 64(%rsi), %zmm234542; AVX512-NEXT: vmovdqa64 128(%rsi), %zmm124543; AVX512-NEXT: vmovdqa64 192(%rsi), %zmm54544; AVX512-NEXT: vmovdqa64 (%rdx), %zmm224545; AVX512-NEXT: vmovdqa64 64(%rdx), %zmm254546; AVX512-NEXT: vmovdqa64 128(%rdx), %zmm134547; AVX512-NEXT: vmovdqa64 192(%rdx), %zmm64548; AVX512-NEXT: vmovdqa64 (%rcx), %zmm214549; AVX512-NEXT: vmovdqa64 64(%rcx), %zmm264550; AVX512-NEXT: vmovdqa64 128(%rcx), %zmm194551; AVX512-NEXT: vmovdqa64 192(%rcx), %zmm94552; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm14 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]4553; AVX512-NEXT: vmovdqa64 %zmm22, %zmm84554; AVX512-NEXT: vpermt2d %zmm21, %zmm14, %zmm84555; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm7 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]4556; AVX512-NEXT: vmovdqa64 %zmm0, %zmm44557; AVX512-NEXT: vpermt2d %zmm17, %zmm7, %zmm44558; AVX512-NEXT: movb $-86, %al4559; AVX512-NEXT: kmovw %eax, %k14560; AVX512-NEXT: vmovdqa64 %zmm8, %zmm4 {%k1}4561; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm16 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]4562; AVX512-NEXT: vmovdqa64 %zmm22, %zmm104563; AVX512-NEXT: vpermt2d %zmm21, %zmm16, %zmm104564; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm11 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]4565; AVX512-NEXT: vmovdqa64 %zmm0, %zmm84566; AVX512-NEXT: vpermt2d %zmm17, %zmm11, %zmm84567; AVX512-NEXT: vmovdqa64 %zmm10, %zmm8 {%k1}4568; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm18 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]4569; AVX512-NEXT: vmovdqa64 %zmm22, %zmm204570; AVX512-NEXT: vpermt2d %zmm21, %zmm18, %zmm204571; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm15 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]4572; AVX512-NEXT: vmovdqa64 %zmm0, %zmm104573; AVX512-NEXT: vpermt2d %zmm17, %zmm15, %zmm104574; AVX512-NEXT: vmovdqa64 %zmm20, %zmm10 {%k1}4575; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm20 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]4576; AVX512-NEXT: vpermt2d %zmm21, %zmm20, %zmm224577; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm21 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]4578; AVX512-NEXT: vpermt2d %zmm17, %zmm21, %zmm04579; AVX512-NEXT: vmovdqa64 %zmm22, %zmm0 {%k1}4580; AVX512-NEXT: vmovdqa64 %zmm25, %zmm224581; AVX512-NEXT: vpermt2d %zmm26, %zmm14, %zmm224582; AVX512-NEXT: vmovdqa64 %zmm1, %zmm174583; AVX512-NEXT: vpermt2d %zmm23, %zmm7, %zmm174584; AVX512-NEXT: vmovdqa64 %zmm22, %zmm17 {%k1}4585; AVX512-NEXT: vmovdqa64 %zmm25, %zmm244586; AVX512-NEXT: vpermt2d %zmm26, %zmm16, %zmm244587; AVX512-NEXT: vmovdqa64 %zmm1, %zmm224588; AVX512-NEXT: vpermt2d %zmm23, %zmm11, %zmm224589; AVX512-NEXT: vmovdqa64 %zmm24, %zmm22 {%k1}4590; AVX512-NEXT: vmovdqa64 %zmm25, %zmm274591; AVX512-NEXT: vpermt2d %zmm26, %zmm18, %zmm274592; AVX512-NEXT: vmovdqa64 %zmm1, %zmm244593; AVX512-NEXT: vpermt2d %zmm23, %zmm15, %zmm244594; AVX512-NEXT: vmovdqa64 %zmm27, %zmm24 {%k1}4595; AVX512-NEXT: vpermt2d %zmm26, %zmm20, %zmm254596; AVX512-NEXT: vpermt2d %zmm23, %zmm21, %zmm14597; AVX512-NEXT: vmovdqa64 %zmm25, %zmm1 {%k1}4598; AVX512-NEXT: vmovdqa64 %zmm13, %zmm234599; AVX512-NEXT: vpermt2d %zmm19, %zmm14, %zmm234600; AVX512-NEXT: vmovdqa64 %zmm2, %zmm254601; AVX512-NEXT: vpermt2d %zmm12, %zmm7, %zmm254602; AVX512-NEXT: vmovdqa64 %zmm23, %zmm25 {%k1}4603; AVX512-NEXT: vmovdqa64 %zmm13, %zmm234604; AVX512-NEXT: vpermt2d %zmm19, %zmm16, %zmm234605; AVX512-NEXT: vmovdqa64 %zmm2, %zmm264606; AVX512-NEXT: vpermt2d %zmm12, %zmm11, %zmm264607; AVX512-NEXT: vmovdqa64 %zmm23, %zmm26 {%k1}4608; AVX512-NEXT: vmovdqa64 %zmm13, %zmm234609; AVX512-NEXT: vpermt2d %zmm19, %zmm18, %zmm234610; AVX512-NEXT: vmovdqa64 %zmm2, %zmm274611; AVX512-NEXT: vpermt2d %zmm12, %zmm15, %zmm274612; AVX512-NEXT: vmovdqa64 %zmm23, %zmm27 {%k1}4613; AVX512-NEXT: vpermt2d %zmm19, %zmm20, %zmm134614; AVX512-NEXT: vpermt2d %zmm12, %zmm21, %zmm24615; AVX512-NEXT: vmovdqa64 %zmm13, %zmm2 {%k1}4616; AVX512-NEXT: vpermi2d %zmm9, %zmm6, %zmm144617; AVX512-NEXT: vpermi2d %zmm5, %zmm3, %zmm74618; AVX512-NEXT: vmovdqa64 %zmm14, %zmm7 {%k1}4619; AVX512-NEXT: vpermi2d %zmm9, %zmm6, %zmm164620; AVX512-NEXT: vpermi2d %zmm5, %zmm3, %zmm114621; AVX512-NEXT: vmovdqa64 %zmm16, %zmm11 {%k1}4622; AVX512-NEXT: vpermi2d %zmm9, %zmm6, %zmm184623; AVX512-NEXT: vpermi2d %zmm5, %zmm3, %zmm154624; AVX512-NEXT: vmovdqa64 %zmm18, %zmm15 {%k1}4625; AVX512-NEXT: vpermt2d %zmm9, %zmm20, %zmm64626; AVX512-NEXT: vpermt2d %zmm5, %zmm21, %zmm34627; AVX512-NEXT: vmovdqa64 %zmm6, %zmm3 {%k1}4628; AVX512-NEXT: vmovdqa64 %zmm3, 896(%r8)4629; AVX512-NEXT: vmovdqa64 %zmm15, 960(%r8)4630; AVX512-NEXT: vmovdqa64 %zmm11, 768(%r8)4631; AVX512-NEXT: vmovdqa64 %zmm7, 832(%r8)4632; AVX512-NEXT: vmovdqa64 %zmm2, 640(%r8)4633; AVX512-NEXT: vmovdqa64 %zmm27, 704(%r8)4634; AVX512-NEXT: vmovdqa64 %zmm26, 512(%r8)4635; AVX512-NEXT: vmovdqa64 %zmm25, 576(%r8)4636; AVX512-NEXT: vmovdqa64 %zmm1, 384(%r8)4637; AVX512-NEXT: vmovdqa64 %zmm24, 448(%r8)4638; AVX512-NEXT: vmovdqa64 %zmm22, 256(%r8)4639; AVX512-NEXT: vmovdqa64 %zmm17, 320(%r8)4640; AVX512-NEXT: vmovdqa64 %zmm0, 128(%r8)4641; AVX512-NEXT: vmovdqa64 %zmm10, 192(%r8)4642; AVX512-NEXT: vmovdqa64 %zmm8, (%r8)4643; AVX512-NEXT: vmovdqa64 %zmm4, 64(%r8)4644; AVX512-NEXT: vzeroupper4645; AVX512-NEXT: retq4646;4647; AVX512-FCP-LABEL: store_i32_stride4_vf64:4648; AVX512-FCP: # %bb.0:4649; AVX512-FCP-NEXT: vmovdqa64 (%rdi), %zmm04650; AVX512-FCP-NEXT: vmovdqa64 64(%rdi), %zmm14651; AVX512-FCP-NEXT: vmovdqa64 128(%rdi), %zmm24652; AVX512-FCP-NEXT: vmovdqa64 192(%rdi), %zmm34653; AVX512-FCP-NEXT: vmovdqa64 (%rsi), %zmm174654; AVX512-FCP-NEXT: vmovdqa64 64(%rsi), %zmm234655; AVX512-FCP-NEXT: vmovdqa64 128(%rsi), %zmm124656; AVX512-FCP-NEXT: vmovdqa64 192(%rsi), %zmm54657; AVX512-FCP-NEXT: vmovdqa64 (%rdx), %zmm224658; AVX512-FCP-NEXT: vmovdqa64 64(%rdx), %zmm254659; AVX512-FCP-NEXT: vmovdqa64 128(%rdx), %zmm134660; AVX512-FCP-NEXT: vmovdqa64 192(%rdx), %zmm64661; AVX512-FCP-NEXT: vmovdqa64 (%rcx), %zmm214662; AVX512-FCP-NEXT: vmovdqa64 64(%rcx), %zmm264663; AVX512-FCP-NEXT: vmovdqa64 128(%rcx), %zmm194664; AVX512-FCP-NEXT: vmovdqa64 192(%rcx), %zmm94665; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm14 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]4666; AVX512-FCP-NEXT: vmovdqa64 %zmm22, %zmm84667; AVX512-FCP-NEXT: vpermt2d %zmm21, %zmm14, %zmm84668; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm7 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]4669; AVX512-FCP-NEXT: vmovdqa64 %zmm0, %zmm44670; AVX512-FCP-NEXT: vpermt2d %zmm17, %zmm7, %zmm44671; AVX512-FCP-NEXT: movb $-86, %al4672; AVX512-FCP-NEXT: kmovw %eax, %k14673; AVX512-FCP-NEXT: vmovdqa64 %zmm8, %zmm4 {%k1}4674; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm16 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]4675; AVX512-FCP-NEXT: vmovdqa64 %zmm22, %zmm104676; AVX512-FCP-NEXT: vpermt2d %zmm21, %zmm16, %zmm104677; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm11 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]4678; AVX512-FCP-NEXT: vmovdqa64 %zmm0, %zmm84679; AVX512-FCP-NEXT: vpermt2d %zmm17, %zmm11, %zmm84680; AVX512-FCP-NEXT: vmovdqa64 %zmm10, %zmm8 {%k1}4681; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm18 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]4682; AVX512-FCP-NEXT: vmovdqa64 %zmm22, %zmm204683; AVX512-FCP-NEXT: vpermt2d %zmm21, %zmm18, %zmm204684; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm15 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]4685; AVX512-FCP-NEXT: vmovdqa64 %zmm0, %zmm104686; AVX512-FCP-NEXT: vpermt2d %zmm17, %zmm15, %zmm104687; AVX512-FCP-NEXT: vmovdqa64 %zmm20, %zmm10 {%k1}4688; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm20 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]4689; AVX512-FCP-NEXT: vpermt2d %zmm21, %zmm20, %zmm224690; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm21 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]4691; AVX512-FCP-NEXT: vpermt2d %zmm17, %zmm21, %zmm04692; AVX512-FCP-NEXT: vmovdqa64 %zmm22, %zmm0 {%k1}4693; AVX512-FCP-NEXT: vmovdqa64 %zmm25, %zmm224694; AVX512-FCP-NEXT: vpermt2d %zmm26, %zmm14, %zmm224695; AVX512-FCP-NEXT: vmovdqa64 %zmm1, %zmm174696; AVX512-FCP-NEXT: vpermt2d %zmm23, %zmm7, %zmm174697; AVX512-FCP-NEXT: vmovdqa64 %zmm22, %zmm17 {%k1}4698; AVX512-FCP-NEXT: vmovdqa64 %zmm25, %zmm244699; AVX512-FCP-NEXT: vpermt2d %zmm26, %zmm16, %zmm244700; AVX512-FCP-NEXT: vmovdqa64 %zmm1, %zmm224701; AVX512-FCP-NEXT: vpermt2d %zmm23, %zmm11, %zmm224702; AVX512-FCP-NEXT: vmovdqa64 %zmm24, %zmm22 {%k1}4703; AVX512-FCP-NEXT: vmovdqa64 %zmm25, %zmm274704; AVX512-FCP-NEXT: vpermt2d %zmm26, %zmm18, %zmm274705; AVX512-FCP-NEXT: vmovdqa64 %zmm1, %zmm244706; AVX512-FCP-NEXT: vpermt2d %zmm23, %zmm15, %zmm244707; AVX512-FCP-NEXT: vmovdqa64 %zmm27, %zmm24 {%k1}4708; AVX512-FCP-NEXT: vpermt2d %zmm26, %zmm20, %zmm254709; AVX512-FCP-NEXT: vpermt2d %zmm23, %zmm21, %zmm14710; AVX512-FCP-NEXT: vmovdqa64 %zmm25, %zmm1 {%k1}4711; AVX512-FCP-NEXT: vmovdqa64 %zmm13, %zmm234712; AVX512-FCP-NEXT: vpermt2d %zmm19, %zmm14, %zmm234713; AVX512-FCP-NEXT: vmovdqa64 %zmm2, %zmm254714; AVX512-FCP-NEXT: vpermt2d %zmm12, %zmm7, %zmm254715; AVX512-FCP-NEXT: vmovdqa64 %zmm23, %zmm25 {%k1}4716; AVX512-FCP-NEXT: vmovdqa64 %zmm13, %zmm234717; AVX512-FCP-NEXT: vpermt2d %zmm19, %zmm16, %zmm234718; AVX512-FCP-NEXT: vmovdqa64 %zmm2, %zmm264719; AVX512-FCP-NEXT: vpermt2d %zmm12, %zmm11, %zmm264720; AVX512-FCP-NEXT: vmovdqa64 %zmm23, %zmm26 {%k1}4721; AVX512-FCP-NEXT: vmovdqa64 %zmm13, %zmm234722; AVX512-FCP-NEXT: vpermt2d %zmm19, %zmm18, %zmm234723; AVX512-FCP-NEXT: vmovdqa64 %zmm2, %zmm274724; AVX512-FCP-NEXT: vpermt2d %zmm12, %zmm15, %zmm274725; AVX512-FCP-NEXT: vmovdqa64 %zmm23, %zmm27 {%k1}4726; AVX512-FCP-NEXT: vpermt2d %zmm19, %zmm20, %zmm134727; AVX512-FCP-NEXT: vpermt2d %zmm12, %zmm21, %zmm24728; AVX512-FCP-NEXT: vmovdqa64 %zmm13, %zmm2 {%k1}4729; AVX512-FCP-NEXT: vpermi2d %zmm9, %zmm6, %zmm144730; AVX512-FCP-NEXT: vpermi2d %zmm5, %zmm3, %zmm74731; AVX512-FCP-NEXT: vmovdqa64 %zmm14, %zmm7 {%k1}4732; AVX512-FCP-NEXT: vpermi2d %zmm9, %zmm6, %zmm164733; AVX512-FCP-NEXT: vpermi2d %zmm5, %zmm3, %zmm114734; AVX512-FCP-NEXT: vmovdqa64 %zmm16, %zmm11 {%k1}4735; AVX512-FCP-NEXT: vpermi2d %zmm9, %zmm6, %zmm184736; AVX512-FCP-NEXT: vpermi2d %zmm5, %zmm3, %zmm154737; AVX512-FCP-NEXT: vmovdqa64 %zmm18, %zmm15 {%k1}4738; AVX512-FCP-NEXT: vpermt2d %zmm9, %zmm20, %zmm64739; AVX512-FCP-NEXT: vpermt2d %zmm5, %zmm21, %zmm34740; AVX512-FCP-NEXT: vmovdqa64 %zmm6, %zmm3 {%k1}4741; AVX512-FCP-NEXT: vmovdqa64 %zmm3, 896(%r8)4742; AVX512-FCP-NEXT: vmovdqa64 %zmm15, 960(%r8)4743; AVX512-FCP-NEXT: vmovdqa64 %zmm11, 768(%r8)4744; AVX512-FCP-NEXT: vmovdqa64 %zmm7, 832(%r8)4745; AVX512-FCP-NEXT: vmovdqa64 %zmm2, 640(%r8)4746; AVX512-FCP-NEXT: vmovdqa64 %zmm27, 704(%r8)4747; AVX512-FCP-NEXT: vmovdqa64 %zmm26, 512(%r8)4748; AVX512-FCP-NEXT: vmovdqa64 %zmm25, 576(%r8)4749; AVX512-FCP-NEXT: vmovdqa64 %zmm1, 384(%r8)4750; AVX512-FCP-NEXT: vmovdqa64 %zmm24, 448(%r8)4751; AVX512-FCP-NEXT: vmovdqa64 %zmm22, 256(%r8)4752; AVX512-FCP-NEXT: vmovdqa64 %zmm17, 320(%r8)4753; AVX512-FCP-NEXT: vmovdqa64 %zmm0, 128(%r8)4754; AVX512-FCP-NEXT: vmovdqa64 %zmm10, 192(%r8)4755; AVX512-FCP-NEXT: vmovdqa64 %zmm8, (%r8)4756; AVX512-FCP-NEXT: vmovdqa64 %zmm4, 64(%r8)4757; AVX512-FCP-NEXT: vzeroupper4758; AVX512-FCP-NEXT: retq4759;4760; AVX512DQ-LABEL: store_i32_stride4_vf64:4761; AVX512DQ: # %bb.0:4762; AVX512DQ-NEXT: vmovdqa64 (%rdi), %zmm04763; AVX512DQ-NEXT: vmovdqa64 64(%rdi), %zmm14764; AVX512DQ-NEXT: vmovdqa64 128(%rdi), %zmm24765; AVX512DQ-NEXT: vmovdqa64 192(%rdi), %zmm34766; AVX512DQ-NEXT: vmovdqa64 (%rsi), %zmm174767; AVX512DQ-NEXT: vmovdqa64 64(%rsi), %zmm234768; AVX512DQ-NEXT: vmovdqa64 128(%rsi), %zmm124769; AVX512DQ-NEXT: vmovdqa64 192(%rsi), %zmm54770; AVX512DQ-NEXT: vmovdqa64 (%rdx), %zmm224771; AVX512DQ-NEXT: vmovdqa64 64(%rdx), %zmm254772; AVX512DQ-NEXT: vmovdqa64 128(%rdx), %zmm134773; AVX512DQ-NEXT: vmovdqa64 192(%rdx), %zmm64774; AVX512DQ-NEXT: vmovdqa64 (%rcx), %zmm214775; AVX512DQ-NEXT: vmovdqa64 64(%rcx), %zmm264776; AVX512DQ-NEXT: vmovdqa64 128(%rcx), %zmm194777; AVX512DQ-NEXT: vmovdqa64 192(%rcx), %zmm94778; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm14 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]4779; AVX512DQ-NEXT: vmovdqa64 %zmm22, %zmm84780; AVX512DQ-NEXT: vpermt2d %zmm21, %zmm14, %zmm84781; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm7 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]4782; AVX512DQ-NEXT: vmovdqa64 %zmm0, %zmm44783; AVX512DQ-NEXT: vpermt2d %zmm17, %zmm7, %zmm44784; AVX512DQ-NEXT: movb $-86, %al4785; AVX512DQ-NEXT: kmovw %eax, %k14786; AVX512DQ-NEXT: vmovdqa64 %zmm8, %zmm4 {%k1}4787; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm16 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]4788; AVX512DQ-NEXT: vmovdqa64 %zmm22, %zmm104789; AVX512DQ-NEXT: vpermt2d %zmm21, %zmm16, %zmm104790; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm11 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]4791; AVX512DQ-NEXT: vmovdqa64 %zmm0, %zmm84792; AVX512DQ-NEXT: vpermt2d %zmm17, %zmm11, %zmm84793; AVX512DQ-NEXT: vmovdqa64 %zmm10, %zmm8 {%k1}4794; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm18 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]4795; AVX512DQ-NEXT: vmovdqa64 %zmm22, %zmm204796; AVX512DQ-NEXT: vpermt2d %zmm21, %zmm18, %zmm204797; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm15 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]4798; AVX512DQ-NEXT: vmovdqa64 %zmm0, %zmm104799; AVX512DQ-NEXT: vpermt2d %zmm17, %zmm15, %zmm104800; AVX512DQ-NEXT: vmovdqa64 %zmm20, %zmm10 {%k1}4801; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm20 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]4802; AVX512DQ-NEXT: vpermt2d %zmm21, %zmm20, %zmm224803; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm21 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]4804; AVX512DQ-NEXT: vpermt2d %zmm17, %zmm21, %zmm04805; AVX512DQ-NEXT: vmovdqa64 %zmm22, %zmm0 {%k1}4806; AVX512DQ-NEXT: vmovdqa64 %zmm25, %zmm224807; AVX512DQ-NEXT: vpermt2d %zmm26, %zmm14, %zmm224808; AVX512DQ-NEXT: vmovdqa64 %zmm1, %zmm174809; AVX512DQ-NEXT: vpermt2d %zmm23, %zmm7, %zmm174810; AVX512DQ-NEXT: vmovdqa64 %zmm22, %zmm17 {%k1}4811; AVX512DQ-NEXT: vmovdqa64 %zmm25, %zmm244812; AVX512DQ-NEXT: vpermt2d %zmm26, %zmm16, %zmm244813; AVX512DQ-NEXT: vmovdqa64 %zmm1, %zmm224814; AVX512DQ-NEXT: vpermt2d %zmm23, %zmm11, %zmm224815; AVX512DQ-NEXT: vmovdqa64 %zmm24, %zmm22 {%k1}4816; AVX512DQ-NEXT: vmovdqa64 %zmm25, %zmm274817; AVX512DQ-NEXT: vpermt2d %zmm26, %zmm18, %zmm274818; AVX512DQ-NEXT: vmovdqa64 %zmm1, %zmm244819; AVX512DQ-NEXT: vpermt2d %zmm23, %zmm15, %zmm244820; AVX512DQ-NEXT: vmovdqa64 %zmm27, %zmm24 {%k1}4821; AVX512DQ-NEXT: vpermt2d %zmm26, %zmm20, %zmm254822; AVX512DQ-NEXT: vpermt2d %zmm23, %zmm21, %zmm14823; AVX512DQ-NEXT: vmovdqa64 %zmm25, %zmm1 {%k1}4824; AVX512DQ-NEXT: vmovdqa64 %zmm13, %zmm234825; AVX512DQ-NEXT: vpermt2d %zmm19, %zmm14, %zmm234826; AVX512DQ-NEXT: vmovdqa64 %zmm2, %zmm254827; AVX512DQ-NEXT: vpermt2d %zmm12, %zmm7, %zmm254828; AVX512DQ-NEXT: vmovdqa64 %zmm23, %zmm25 {%k1}4829; AVX512DQ-NEXT: vmovdqa64 %zmm13, %zmm234830; AVX512DQ-NEXT: vpermt2d %zmm19, %zmm16, %zmm234831; AVX512DQ-NEXT: vmovdqa64 %zmm2, %zmm264832; AVX512DQ-NEXT: vpermt2d %zmm12, %zmm11, %zmm264833; AVX512DQ-NEXT: vmovdqa64 %zmm23, %zmm26 {%k1}4834; AVX512DQ-NEXT: vmovdqa64 %zmm13, %zmm234835; AVX512DQ-NEXT: vpermt2d %zmm19, %zmm18, %zmm234836; AVX512DQ-NEXT: vmovdqa64 %zmm2, %zmm274837; AVX512DQ-NEXT: vpermt2d %zmm12, %zmm15, %zmm274838; AVX512DQ-NEXT: vmovdqa64 %zmm23, %zmm27 {%k1}4839; AVX512DQ-NEXT: vpermt2d %zmm19, %zmm20, %zmm134840; AVX512DQ-NEXT: vpermt2d %zmm12, %zmm21, %zmm24841; AVX512DQ-NEXT: vmovdqa64 %zmm13, %zmm2 {%k1}4842; AVX512DQ-NEXT: vpermi2d %zmm9, %zmm6, %zmm144843; AVX512DQ-NEXT: vpermi2d %zmm5, %zmm3, %zmm74844; AVX512DQ-NEXT: vmovdqa64 %zmm14, %zmm7 {%k1}4845; AVX512DQ-NEXT: vpermi2d %zmm9, %zmm6, %zmm164846; AVX512DQ-NEXT: vpermi2d %zmm5, %zmm3, %zmm114847; AVX512DQ-NEXT: vmovdqa64 %zmm16, %zmm11 {%k1}4848; AVX512DQ-NEXT: vpermi2d %zmm9, %zmm6, %zmm184849; AVX512DQ-NEXT: vpermi2d %zmm5, %zmm3, %zmm154850; AVX512DQ-NEXT: vmovdqa64 %zmm18, %zmm15 {%k1}4851; AVX512DQ-NEXT: vpermt2d %zmm9, %zmm20, %zmm64852; AVX512DQ-NEXT: vpermt2d %zmm5, %zmm21, %zmm34853; AVX512DQ-NEXT: vmovdqa64 %zmm6, %zmm3 {%k1}4854; AVX512DQ-NEXT: vmovdqa64 %zmm3, 896(%r8)4855; AVX512DQ-NEXT: vmovdqa64 %zmm15, 960(%r8)4856; AVX512DQ-NEXT: vmovdqa64 %zmm11, 768(%r8)4857; AVX512DQ-NEXT: vmovdqa64 %zmm7, 832(%r8)4858; AVX512DQ-NEXT: vmovdqa64 %zmm2, 640(%r8)4859; AVX512DQ-NEXT: vmovdqa64 %zmm27, 704(%r8)4860; AVX512DQ-NEXT: vmovdqa64 %zmm26, 512(%r8)4861; AVX512DQ-NEXT: vmovdqa64 %zmm25, 576(%r8)4862; AVX512DQ-NEXT: vmovdqa64 %zmm1, 384(%r8)4863; AVX512DQ-NEXT: vmovdqa64 %zmm24, 448(%r8)4864; AVX512DQ-NEXT: vmovdqa64 %zmm22, 256(%r8)4865; AVX512DQ-NEXT: vmovdqa64 %zmm17, 320(%r8)4866; AVX512DQ-NEXT: vmovdqa64 %zmm0, 128(%r8)4867; AVX512DQ-NEXT: vmovdqa64 %zmm10, 192(%r8)4868; AVX512DQ-NEXT: vmovdqa64 %zmm8, (%r8)4869; AVX512DQ-NEXT: vmovdqa64 %zmm4, 64(%r8)4870; AVX512DQ-NEXT: vzeroupper4871; AVX512DQ-NEXT: retq4872;4873; AVX512DQ-FCP-LABEL: store_i32_stride4_vf64:4874; AVX512DQ-FCP: # %bb.0:4875; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdi), %zmm04876; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdi), %zmm14877; AVX512DQ-FCP-NEXT: vmovdqa64 128(%rdi), %zmm24878; AVX512DQ-FCP-NEXT: vmovdqa64 192(%rdi), %zmm34879; AVX512DQ-FCP-NEXT: vmovdqa64 (%rsi), %zmm174880; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rsi), %zmm234881; AVX512DQ-FCP-NEXT: vmovdqa64 128(%rsi), %zmm124882; AVX512DQ-FCP-NEXT: vmovdqa64 192(%rsi), %zmm54883; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdx), %zmm224884; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdx), %zmm254885; AVX512DQ-FCP-NEXT: vmovdqa64 128(%rdx), %zmm134886; AVX512DQ-FCP-NEXT: vmovdqa64 192(%rdx), %zmm64887; AVX512DQ-FCP-NEXT: vmovdqa64 (%rcx), %zmm214888; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rcx), %zmm264889; AVX512DQ-FCP-NEXT: vmovdqa64 128(%rcx), %zmm194890; AVX512DQ-FCP-NEXT: vmovdqa64 192(%rcx), %zmm94891; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm14 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]4892; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm22, %zmm84893; AVX512DQ-FCP-NEXT: vpermt2d %zmm21, %zmm14, %zmm84894; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm7 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]4895; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, %zmm44896; AVX512DQ-FCP-NEXT: vpermt2d %zmm17, %zmm7, %zmm44897; AVX512DQ-FCP-NEXT: movb $-86, %al4898; AVX512DQ-FCP-NEXT: kmovw %eax, %k14899; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm8, %zmm4 {%k1}4900; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm16 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]4901; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm22, %zmm104902; AVX512DQ-FCP-NEXT: vpermt2d %zmm21, %zmm16, %zmm104903; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm11 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]4904; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, %zmm84905; AVX512DQ-FCP-NEXT: vpermt2d %zmm17, %zmm11, %zmm84906; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm10, %zmm8 {%k1}4907; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm18 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]4908; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm22, %zmm204909; AVX512DQ-FCP-NEXT: vpermt2d %zmm21, %zmm18, %zmm204910; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm15 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]4911; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, %zmm104912; AVX512DQ-FCP-NEXT: vpermt2d %zmm17, %zmm15, %zmm104913; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm20, %zmm10 {%k1}4914; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm20 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]4915; AVX512DQ-FCP-NEXT: vpermt2d %zmm21, %zmm20, %zmm224916; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm21 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]4917; AVX512DQ-FCP-NEXT: vpermt2d %zmm17, %zmm21, %zmm04918; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm22, %zmm0 {%k1}4919; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm25, %zmm224920; AVX512DQ-FCP-NEXT: vpermt2d %zmm26, %zmm14, %zmm224921; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, %zmm174922; AVX512DQ-FCP-NEXT: vpermt2d %zmm23, %zmm7, %zmm174923; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm22, %zmm17 {%k1}4924; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm25, %zmm244925; AVX512DQ-FCP-NEXT: vpermt2d %zmm26, %zmm16, %zmm244926; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, %zmm224927; AVX512DQ-FCP-NEXT: vpermt2d %zmm23, %zmm11, %zmm224928; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm24, %zmm22 {%k1}4929; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm25, %zmm274930; AVX512DQ-FCP-NEXT: vpermt2d %zmm26, %zmm18, %zmm274931; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, %zmm244932; AVX512DQ-FCP-NEXT: vpermt2d %zmm23, %zmm15, %zmm244933; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm27, %zmm24 {%k1}4934; AVX512DQ-FCP-NEXT: vpermt2d %zmm26, %zmm20, %zmm254935; AVX512DQ-FCP-NEXT: vpermt2d %zmm23, %zmm21, %zmm14936; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm25, %zmm1 {%k1}4937; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm13, %zmm234938; AVX512DQ-FCP-NEXT: vpermt2d %zmm19, %zmm14, %zmm234939; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, %zmm254940; AVX512DQ-FCP-NEXT: vpermt2d %zmm12, %zmm7, %zmm254941; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm23, %zmm25 {%k1}4942; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm13, %zmm234943; AVX512DQ-FCP-NEXT: vpermt2d %zmm19, %zmm16, %zmm234944; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, %zmm264945; AVX512DQ-FCP-NEXT: vpermt2d %zmm12, %zmm11, %zmm264946; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm23, %zmm26 {%k1}4947; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm13, %zmm234948; AVX512DQ-FCP-NEXT: vpermt2d %zmm19, %zmm18, %zmm234949; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, %zmm274950; AVX512DQ-FCP-NEXT: vpermt2d %zmm12, %zmm15, %zmm274951; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm23, %zmm27 {%k1}4952; AVX512DQ-FCP-NEXT: vpermt2d %zmm19, %zmm20, %zmm134953; AVX512DQ-FCP-NEXT: vpermt2d %zmm12, %zmm21, %zmm24954; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm13, %zmm2 {%k1}4955; AVX512DQ-FCP-NEXT: vpermi2d %zmm9, %zmm6, %zmm144956; AVX512DQ-FCP-NEXT: vpermi2d %zmm5, %zmm3, %zmm74957; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm14, %zmm7 {%k1}4958; AVX512DQ-FCP-NEXT: vpermi2d %zmm9, %zmm6, %zmm164959; AVX512DQ-FCP-NEXT: vpermi2d %zmm5, %zmm3, %zmm114960; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm16, %zmm11 {%k1}4961; AVX512DQ-FCP-NEXT: vpermi2d %zmm9, %zmm6, %zmm184962; AVX512DQ-FCP-NEXT: vpermi2d %zmm5, %zmm3, %zmm154963; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm18, %zmm15 {%k1}4964; AVX512DQ-FCP-NEXT: vpermt2d %zmm9, %zmm20, %zmm64965; AVX512DQ-FCP-NEXT: vpermt2d %zmm5, %zmm21, %zmm34966; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm6, %zmm3 {%k1}4967; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, 896(%r8)4968; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm15, 960(%r8)4969; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm11, 768(%r8)4970; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm7, 832(%r8)4971; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, 640(%r8)4972; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm27, 704(%r8)4973; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm26, 512(%r8)4974; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm25, 576(%r8)4975; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, 384(%r8)4976; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm24, 448(%r8)4977; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm22, 256(%r8)4978; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm17, 320(%r8)4979; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, 128(%r8)4980; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm10, 192(%r8)4981; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm8, (%r8)4982; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, 64(%r8)4983; AVX512DQ-FCP-NEXT: vzeroupper4984; AVX512DQ-FCP-NEXT: retq4985;4986; AVX512BW-LABEL: store_i32_stride4_vf64:4987; AVX512BW: # %bb.0:4988; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm04989; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm14990; AVX512BW-NEXT: vmovdqa64 128(%rdi), %zmm24991; AVX512BW-NEXT: vmovdqa64 192(%rdi), %zmm34992; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm174993; AVX512BW-NEXT: vmovdqa64 64(%rsi), %zmm234994; AVX512BW-NEXT: vmovdqa64 128(%rsi), %zmm124995; AVX512BW-NEXT: vmovdqa64 192(%rsi), %zmm54996; AVX512BW-NEXT: vmovdqa64 (%rdx), %zmm224997; AVX512BW-NEXT: vmovdqa64 64(%rdx), %zmm254998; AVX512BW-NEXT: vmovdqa64 128(%rdx), %zmm134999; AVX512BW-NEXT: vmovdqa64 192(%rdx), %zmm65000; AVX512BW-NEXT: vmovdqa64 (%rcx), %zmm215001; AVX512BW-NEXT: vmovdqa64 64(%rcx), %zmm265002; AVX512BW-NEXT: vmovdqa64 128(%rcx), %zmm195003; AVX512BW-NEXT: vmovdqa64 192(%rcx), %zmm95004; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm14 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]5005; AVX512BW-NEXT: vmovdqa64 %zmm22, %zmm85006; AVX512BW-NEXT: vpermt2d %zmm21, %zmm14, %zmm85007; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm7 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]5008; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm45009; AVX512BW-NEXT: vpermt2d %zmm17, %zmm7, %zmm45010; AVX512BW-NEXT: movb $-86, %al5011; AVX512BW-NEXT: kmovd %eax, %k15012; AVX512BW-NEXT: vmovdqa64 %zmm8, %zmm4 {%k1}5013; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm16 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]5014; AVX512BW-NEXT: vmovdqa64 %zmm22, %zmm105015; AVX512BW-NEXT: vpermt2d %zmm21, %zmm16, %zmm105016; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm11 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]5017; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm85018; AVX512BW-NEXT: vpermt2d %zmm17, %zmm11, %zmm85019; AVX512BW-NEXT: vmovdqa64 %zmm10, %zmm8 {%k1}5020; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm18 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]5021; AVX512BW-NEXT: vmovdqa64 %zmm22, %zmm205022; AVX512BW-NEXT: vpermt2d %zmm21, %zmm18, %zmm205023; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm15 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]5024; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm105025; AVX512BW-NEXT: vpermt2d %zmm17, %zmm15, %zmm105026; AVX512BW-NEXT: vmovdqa64 %zmm20, %zmm10 {%k1}5027; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm20 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]5028; AVX512BW-NEXT: vpermt2d %zmm21, %zmm20, %zmm225029; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm21 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]5030; AVX512BW-NEXT: vpermt2d %zmm17, %zmm21, %zmm05031; AVX512BW-NEXT: vmovdqa64 %zmm22, %zmm0 {%k1}5032; AVX512BW-NEXT: vmovdqa64 %zmm25, %zmm225033; AVX512BW-NEXT: vpermt2d %zmm26, %zmm14, %zmm225034; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm175035; AVX512BW-NEXT: vpermt2d %zmm23, %zmm7, %zmm175036; AVX512BW-NEXT: vmovdqa64 %zmm22, %zmm17 {%k1}5037; AVX512BW-NEXT: vmovdqa64 %zmm25, %zmm245038; AVX512BW-NEXT: vpermt2d %zmm26, %zmm16, %zmm245039; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm225040; AVX512BW-NEXT: vpermt2d %zmm23, %zmm11, %zmm225041; AVX512BW-NEXT: vmovdqa64 %zmm24, %zmm22 {%k1}5042; AVX512BW-NEXT: vmovdqa64 %zmm25, %zmm275043; AVX512BW-NEXT: vpermt2d %zmm26, %zmm18, %zmm275044; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm245045; AVX512BW-NEXT: vpermt2d %zmm23, %zmm15, %zmm245046; AVX512BW-NEXT: vmovdqa64 %zmm27, %zmm24 {%k1}5047; AVX512BW-NEXT: vpermt2d %zmm26, %zmm20, %zmm255048; AVX512BW-NEXT: vpermt2d %zmm23, %zmm21, %zmm15049; AVX512BW-NEXT: vmovdqa64 %zmm25, %zmm1 {%k1}5050; AVX512BW-NEXT: vmovdqa64 %zmm13, %zmm235051; AVX512BW-NEXT: vpermt2d %zmm19, %zmm14, %zmm235052; AVX512BW-NEXT: vmovdqa64 %zmm2, %zmm255053; AVX512BW-NEXT: vpermt2d %zmm12, %zmm7, %zmm255054; AVX512BW-NEXT: vmovdqa64 %zmm23, %zmm25 {%k1}5055; AVX512BW-NEXT: vmovdqa64 %zmm13, %zmm235056; AVX512BW-NEXT: vpermt2d %zmm19, %zmm16, %zmm235057; AVX512BW-NEXT: vmovdqa64 %zmm2, %zmm265058; AVX512BW-NEXT: vpermt2d %zmm12, %zmm11, %zmm265059; AVX512BW-NEXT: vmovdqa64 %zmm23, %zmm26 {%k1}5060; AVX512BW-NEXT: vmovdqa64 %zmm13, %zmm235061; AVX512BW-NEXT: vpermt2d %zmm19, %zmm18, %zmm235062; AVX512BW-NEXT: vmovdqa64 %zmm2, %zmm275063; AVX512BW-NEXT: vpermt2d %zmm12, %zmm15, %zmm275064; AVX512BW-NEXT: vmovdqa64 %zmm23, %zmm27 {%k1}5065; AVX512BW-NEXT: vpermt2d %zmm19, %zmm20, %zmm135066; AVX512BW-NEXT: vpermt2d %zmm12, %zmm21, %zmm25067; AVX512BW-NEXT: vmovdqa64 %zmm13, %zmm2 {%k1}5068; AVX512BW-NEXT: vpermi2d %zmm9, %zmm6, %zmm145069; AVX512BW-NEXT: vpermi2d %zmm5, %zmm3, %zmm75070; AVX512BW-NEXT: vmovdqa64 %zmm14, %zmm7 {%k1}5071; AVX512BW-NEXT: vpermi2d %zmm9, %zmm6, %zmm165072; AVX512BW-NEXT: vpermi2d %zmm5, %zmm3, %zmm115073; AVX512BW-NEXT: vmovdqa64 %zmm16, %zmm11 {%k1}5074; AVX512BW-NEXT: vpermi2d %zmm9, %zmm6, %zmm185075; AVX512BW-NEXT: vpermi2d %zmm5, %zmm3, %zmm155076; AVX512BW-NEXT: vmovdqa64 %zmm18, %zmm15 {%k1}5077; AVX512BW-NEXT: vpermt2d %zmm9, %zmm20, %zmm65078; AVX512BW-NEXT: vpermt2d %zmm5, %zmm21, %zmm35079; AVX512BW-NEXT: vmovdqa64 %zmm6, %zmm3 {%k1}5080; AVX512BW-NEXT: vmovdqa64 %zmm3, 896(%r8)5081; AVX512BW-NEXT: vmovdqa64 %zmm15, 960(%r8)5082; AVX512BW-NEXT: vmovdqa64 %zmm11, 768(%r8)5083; AVX512BW-NEXT: vmovdqa64 %zmm7, 832(%r8)5084; AVX512BW-NEXT: vmovdqa64 %zmm2, 640(%r8)5085; AVX512BW-NEXT: vmovdqa64 %zmm27, 704(%r8)5086; AVX512BW-NEXT: vmovdqa64 %zmm26, 512(%r8)5087; AVX512BW-NEXT: vmovdqa64 %zmm25, 576(%r8)5088; AVX512BW-NEXT: vmovdqa64 %zmm1, 384(%r8)5089; AVX512BW-NEXT: vmovdqa64 %zmm24, 448(%r8)5090; AVX512BW-NEXT: vmovdqa64 %zmm22, 256(%r8)5091; AVX512BW-NEXT: vmovdqa64 %zmm17, 320(%r8)5092; AVX512BW-NEXT: vmovdqa64 %zmm0, 128(%r8)5093; AVX512BW-NEXT: vmovdqa64 %zmm10, 192(%r8)5094; AVX512BW-NEXT: vmovdqa64 %zmm8, (%r8)5095; AVX512BW-NEXT: vmovdqa64 %zmm4, 64(%r8)5096; AVX512BW-NEXT: vzeroupper5097; AVX512BW-NEXT: retq5098;5099; AVX512BW-FCP-LABEL: store_i32_stride4_vf64:5100; AVX512BW-FCP: # %bb.0:5101; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm05102; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm15103; AVX512BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm25104; AVX512BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm35105; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm175106; AVX512BW-FCP-NEXT: vmovdqa64 64(%rsi), %zmm235107; AVX512BW-FCP-NEXT: vmovdqa64 128(%rsi), %zmm125108; AVX512BW-FCP-NEXT: vmovdqa64 192(%rsi), %zmm55109; AVX512BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm225110; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdx), %zmm255111; AVX512BW-FCP-NEXT: vmovdqa64 128(%rdx), %zmm135112; AVX512BW-FCP-NEXT: vmovdqa64 192(%rdx), %zmm65113; AVX512BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm215114; AVX512BW-FCP-NEXT: vmovdqa64 64(%rcx), %zmm265115; AVX512BW-FCP-NEXT: vmovdqa64 128(%rcx), %zmm195116; AVX512BW-FCP-NEXT: vmovdqa64 192(%rcx), %zmm95117; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm14 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]5118; AVX512BW-FCP-NEXT: vmovdqa64 %zmm22, %zmm85119; AVX512BW-FCP-NEXT: vpermt2d %zmm21, %zmm14, %zmm85120; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm7 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]5121; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm45122; AVX512BW-FCP-NEXT: vpermt2d %zmm17, %zmm7, %zmm45123; AVX512BW-FCP-NEXT: movb $-86, %al5124; AVX512BW-FCP-NEXT: kmovd %eax, %k15125; AVX512BW-FCP-NEXT: vmovdqa64 %zmm8, %zmm4 {%k1}5126; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm16 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]5127; AVX512BW-FCP-NEXT: vmovdqa64 %zmm22, %zmm105128; AVX512BW-FCP-NEXT: vpermt2d %zmm21, %zmm16, %zmm105129; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm11 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]5130; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm85131; AVX512BW-FCP-NEXT: vpermt2d %zmm17, %zmm11, %zmm85132; AVX512BW-FCP-NEXT: vmovdqa64 %zmm10, %zmm8 {%k1}5133; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm18 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]5134; AVX512BW-FCP-NEXT: vmovdqa64 %zmm22, %zmm205135; AVX512BW-FCP-NEXT: vpermt2d %zmm21, %zmm18, %zmm205136; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm15 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]5137; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm105138; AVX512BW-FCP-NEXT: vpermt2d %zmm17, %zmm15, %zmm105139; AVX512BW-FCP-NEXT: vmovdqa64 %zmm20, %zmm10 {%k1}5140; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm20 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]5141; AVX512BW-FCP-NEXT: vpermt2d %zmm21, %zmm20, %zmm225142; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm21 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]5143; AVX512BW-FCP-NEXT: vpermt2d %zmm17, %zmm21, %zmm05144; AVX512BW-FCP-NEXT: vmovdqa64 %zmm22, %zmm0 {%k1}5145; AVX512BW-FCP-NEXT: vmovdqa64 %zmm25, %zmm225146; AVX512BW-FCP-NEXT: vpermt2d %zmm26, %zmm14, %zmm225147; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm175148; AVX512BW-FCP-NEXT: vpermt2d %zmm23, %zmm7, %zmm175149; AVX512BW-FCP-NEXT: vmovdqa64 %zmm22, %zmm17 {%k1}5150; AVX512BW-FCP-NEXT: vmovdqa64 %zmm25, %zmm245151; AVX512BW-FCP-NEXT: vpermt2d %zmm26, %zmm16, %zmm245152; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm225153; AVX512BW-FCP-NEXT: vpermt2d %zmm23, %zmm11, %zmm225154; AVX512BW-FCP-NEXT: vmovdqa64 %zmm24, %zmm22 {%k1}5155; AVX512BW-FCP-NEXT: vmovdqa64 %zmm25, %zmm275156; AVX512BW-FCP-NEXT: vpermt2d %zmm26, %zmm18, %zmm275157; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm245158; AVX512BW-FCP-NEXT: vpermt2d %zmm23, %zmm15, %zmm245159; AVX512BW-FCP-NEXT: vmovdqa64 %zmm27, %zmm24 {%k1}5160; AVX512BW-FCP-NEXT: vpermt2d %zmm26, %zmm20, %zmm255161; AVX512BW-FCP-NEXT: vpermt2d %zmm23, %zmm21, %zmm15162; AVX512BW-FCP-NEXT: vmovdqa64 %zmm25, %zmm1 {%k1}5163; AVX512BW-FCP-NEXT: vmovdqa64 %zmm13, %zmm235164; AVX512BW-FCP-NEXT: vpermt2d %zmm19, %zmm14, %zmm235165; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm255166; AVX512BW-FCP-NEXT: vpermt2d %zmm12, %zmm7, %zmm255167; AVX512BW-FCP-NEXT: vmovdqa64 %zmm23, %zmm25 {%k1}5168; AVX512BW-FCP-NEXT: vmovdqa64 %zmm13, %zmm235169; AVX512BW-FCP-NEXT: vpermt2d %zmm19, %zmm16, %zmm235170; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm265171; AVX512BW-FCP-NEXT: vpermt2d %zmm12, %zmm11, %zmm265172; AVX512BW-FCP-NEXT: vmovdqa64 %zmm23, %zmm26 {%k1}5173; AVX512BW-FCP-NEXT: vmovdqa64 %zmm13, %zmm235174; AVX512BW-FCP-NEXT: vpermt2d %zmm19, %zmm18, %zmm235175; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm275176; AVX512BW-FCP-NEXT: vpermt2d %zmm12, %zmm15, %zmm275177; AVX512BW-FCP-NEXT: vmovdqa64 %zmm23, %zmm27 {%k1}5178; AVX512BW-FCP-NEXT: vpermt2d %zmm19, %zmm20, %zmm135179; AVX512BW-FCP-NEXT: vpermt2d %zmm12, %zmm21, %zmm25180; AVX512BW-FCP-NEXT: vmovdqa64 %zmm13, %zmm2 {%k1}5181; AVX512BW-FCP-NEXT: vpermi2d %zmm9, %zmm6, %zmm145182; AVX512BW-FCP-NEXT: vpermi2d %zmm5, %zmm3, %zmm75183; AVX512BW-FCP-NEXT: vmovdqa64 %zmm14, %zmm7 {%k1}5184; AVX512BW-FCP-NEXT: vpermi2d %zmm9, %zmm6, %zmm165185; AVX512BW-FCP-NEXT: vpermi2d %zmm5, %zmm3, %zmm115186; AVX512BW-FCP-NEXT: vmovdqa64 %zmm16, %zmm11 {%k1}5187; AVX512BW-FCP-NEXT: vpermi2d %zmm9, %zmm6, %zmm185188; AVX512BW-FCP-NEXT: vpermi2d %zmm5, %zmm3, %zmm155189; AVX512BW-FCP-NEXT: vmovdqa64 %zmm18, %zmm15 {%k1}5190; AVX512BW-FCP-NEXT: vpermt2d %zmm9, %zmm20, %zmm65191; AVX512BW-FCP-NEXT: vpermt2d %zmm5, %zmm21, %zmm35192; AVX512BW-FCP-NEXT: vmovdqa64 %zmm6, %zmm3 {%k1}5193; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, 896(%r8)5194; AVX512BW-FCP-NEXT: vmovdqa64 %zmm15, 960(%r8)5195; AVX512BW-FCP-NEXT: vmovdqa64 %zmm11, 768(%r8)5196; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, 832(%r8)5197; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, 640(%r8)5198; AVX512BW-FCP-NEXT: vmovdqa64 %zmm27, 704(%r8)5199; AVX512BW-FCP-NEXT: vmovdqa64 %zmm26, 512(%r8)5200; AVX512BW-FCP-NEXT: vmovdqa64 %zmm25, 576(%r8)5201; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, 384(%r8)5202; AVX512BW-FCP-NEXT: vmovdqa64 %zmm24, 448(%r8)5203; AVX512BW-FCP-NEXT: vmovdqa64 %zmm22, 256(%r8)5204; AVX512BW-FCP-NEXT: vmovdqa64 %zmm17, 320(%r8)5205; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, 128(%r8)5206; AVX512BW-FCP-NEXT: vmovdqa64 %zmm10, 192(%r8)5207; AVX512BW-FCP-NEXT: vmovdqa64 %zmm8, (%r8)5208; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, 64(%r8)5209; AVX512BW-FCP-NEXT: vzeroupper5210; AVX512BW-FCP-NEXT: retq5211;5212; AVX512DQ-BW-LABEL: store_i32_stride4_vf64:5213; AVX512DQ-BW: # %bb.0:5214; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm05215; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm15216; AVX512DQ-BW-NEXT: vmovdqa64 128(%rdi), %zmm25217; AVX512DQ-BW-NEXT: vmovdqa64 192(%rdi), %zmm35218; AVX512DQ-BW-NEXT: vmovdqa64 (%rsi), %zmm175219; AVX512DQ-BW-NEXT: vmovdqa64 64(%rsi), %zmm235220; AVX512DQ-BW-NEXT: vmovdqa64 128(%rsi), %zmm125221; AVX512DQ-BW-NEXT: vmovdqa64 192(%rsi), %zmm55222; AVX512DQ-BW-NEXT: vmovdqa64 (%rdx), %zmm225223; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdx), %zmm255224; AVX512DQ-BW-NEXT: vmovdqa64 128(%rdx), %zmm135225; AVX512DQ-BW-NEXT: vmovdqa64 192(%rdx), %zmm65226; AVX512DQ-BW-NEXT: vmovdqa64 (%rcx), %zmm215227; AVX512DQ-BW-NEXT: vmovdqa64 64(%rcx), %zmm265228; AVX512DQ-BW-NEXT: vmovdqa64 128(%rcx), %zmm195229; AVX512DQ-BW-NEXT: vmovdqa64 192(%rcx), %zmm95230; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm14 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]5231; AVX512DQ-BW-NEXT: vmovdqa64 %zmm22, %zmm85232; AVX512DQ-BW-NEXT: vpermt2d %zmm21, %zmm14, %zmm85233; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm7 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]5234; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, %zmm45235; AVX512DQ-BW-NEXT: vpermt2d %zmm17, %zmm7, %zmm45236; AVX512DQ-BW-NEXT: movb $-86, %al5237; AVX512DQ-BW-NEXT: kmovd %eax, %k15238; AVX512DQ-BW-NEXT: vmovdqa64 %zmm8, %zmm4 {%k1}5239; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm16 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]5240; AVX512DQ-BW-NEXT: vmovdqa64 %zmm22, %zmm105241; AVX512DQ-BW-NEXT: vpermt2d %zmm21, %zmm16, %zmm105242; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm11 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]5243; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, %zmm85244; AVX512DQ-BW-NEXT: vpermt2d %zmm17, %zmm11, %zmm85245; AVX512DQ-BW-NEXT: vmovdqa64 %zmm10, %zmm8 {%k1}5246; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm18 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]5247; AVX512DQ-BW-NEXT: vmovdqa64 %zmm22, %zmm205248; AVX512DQ-BW-NEXT: vpermt2d %zmm21, %zmm18, %zmm205249; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm15 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]5250; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, %zmm105251; AVX512DQ-BW-NEXT: vpermt2d %zmm17, %zmm15, %zmm105252; AVX512DQ-BW-NEXT: vmovdqa64 %zmm20, %zmm10 {%k1}5253; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm20 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]5254; AVX512DQ-BW-NEXT: vpermt2d %zmm21, %zmm20, %zmm225255; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm21 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]5256; AVX512DQ-BW-NEXT: vpermt2d %zmm17, %zmm21, %zmm05257; AVX512DQ-BW-NEXT: vmovdqa64 %zmm22, %zmm0 {%k1}5258; AVX512DQ-BW-NEXT: vmovdqa64 %zmm25, %zmm225259; AVX512DQ-BW-NEXT: vpermt2d %zmm26, %zmm14, %zmm225260; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, %zmm175261; AVX512DQ-BW-NEXT: vpermt2d %zmm23, %zmm7, %zmm175262; AVX512DQ-BW-NEXT: vmovdqa64 %zmm22, %zmm17 {%k1}5263; AVX512DQ-BW-NEXT: vmovdqa64 %zmm25, %zmm245264; AVX512DQ-BW-NEXT: vpermt2d %zmm26, %zmm16, %zmm245265; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, %zmm225266; AVX512DQ-BW-NEXT: vpermt2d %zmm23, %zmm11, %zmm225267; AVX512DQ-BW-NEXT: vmovdqa64 %zmm24, %zmm22 {%k1}5268; AVX512DQ-BW-NEXT: vmovdqa64 %zmm25, %zmm275269; AVX512DQ-BW-NEXT: vpermt2d %zmm26, %zmm18, %zmm275270; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, %zmm245271; AVX512DQ-BW-NEXT: vpermt2d %zmm23, %zmm15, %zmm245272; AVX512DQ-BW-NEXT: vmovdqa64 %zmm27, %zmm24 {%k1}5273; AVX512DQ-BW-NEXT: vpermt2d %zmm26, %zmm20, %zmm255274; AVX512DQ-BW-NEXT: vpermt2d %zmm23, %zmm21, %zmm15275; AVX512DQ-BW-NEXT: vmovdqa64 %zmm25, %zmm1 {%k1}5276; AVX512DQ-BW-NEXT: vmovdqa64 %zmm13, %zmm235277; AVX512DQ-BW-NEXT: vpermt2d %zmm19, %zmm14, %zmm235278; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, %zmm255279; AVX512DQ-BW-NEXT: vpermt2d %zmm12, %zmm7, %zmm255280; AVX512DQ-BW-NEXT: vmovdqa64 %zmm23, %zmm25 {%k1}5281; AVX512DQ-BW-NEXT: vmovdqa64 %zmm13, %zmm235282; AVX512DQ-BW-NEXT: vpermt2d %zmm19, %zmm16, %zmm235283; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, %zmm265284; AVX512DQ-BW-NEXT: vpermt2d %zmm12, %zmm11, %zmm265285; AVX512DQ-BW-NEXT: vmovdqa64 %zmm23, %zmm26 {%k1}5286; AVX512DQ-BW-NEXT: vmovdqa64 %zmm13, %zmm235287; AVX512DQ-BW-NEXT: vpermt2d %zmm19, %zmm18, %zmm235288; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, %zmm275289; AVX512DQ-BW-NEXT: vpermt2d %zmm12, %zmm15, %zmm275290; AVX512DQ-BW-NEXT: vmovdqa64 %zmm23, %zmm27 {%k1}5291; AVX512DQ-BW-NEXT: vpermt2d %zmm19, %zmm20, %zmm135292; AVX512DQ-BW-NEXT: vpermt2d %zmm12, %zmm21, %zmm25293; AVX512DQ-BW-NEXT: vmovdqa64 %zmm13, %zmm2 {%k1}5294; AVX512DQ-BW-NEXT: vpermi2d %zmm9, %zmm6, %zmm145295; AVX512DQ-BW-NEXT: vpermi2d %zmm5, %zmm3, %zmm75296; AVX512DQ-BW-NEXT: vmovdqa64 %zmm14, %zmm7 {%k1}5297; AVX512DQ-BW-NEXT: vpermi2d %zmm9, %zmm6, %zmm165298; AVX512DQ-BW-NEXT: vpermi2d %zmm5, %zmm3, %zmm115299; AVX512DQ-BW-NEXT: vmovdqa64 %zmm16, %zmm11 {%k1}5300; AVX512DQ-BW-NEXT: vpermi2d %zmm9, %zmm6, %zmm185301; AVX512DQ-BW-NEXT: vpermi2d %zmm5, %zmm3, %zmm155302; AVX512DQ-BW-NEXT: vmovdqa64 %zmm18, %zmm15 {%k1}5303; AVX512DQ-BW-NEXT: vpermt2d %zmm9, %zmm20, %zmm65304; AVX512DQ-BW-NEXT: vpermt2d %zmm5, %zmm21, %zmm35305; AVX512DQ-BW-NEXT: vmovdqa64 %zmm6, %zmm3 {%k1}5306; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, 896(%r8)5307; AVX512DQ-BW-NEXT: vmovdqa64 %zmm15, 960(%r8)5308; AVX512DQ-BW-NEXT: vmovdqa64 %zmm11, 768(%r8)5309; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, 832(%r8)5310; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, 640(%r8)5311; AVX512DQ-BW-NEXT: vmovdqa64 %zmm27, 704(%r8)5312; AVX512DQ-BW-NEXT: vmovdqa64 %zmm26, 512(%r8)5313; AVX512DQ-BW-NEXT: vmovdqa64 %zmm25, 576(%r8)5314; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, 384(%r8)5315; AVX512DQ-BW-NEXT: vmovdqa64 %zmm24, 448(%r8)5316; AVX512DQ-BW-NEXT: vmovdqa64 %zmm22, 256(%r8)5317; AVX512DQ-BW-NEXT: vmovdqa64 %zmm17, 320(%r8)5318; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, 128(%r8)5319; AVX512DQ-BW-NEXT: vmovdqa64 %zmm10, 192(%r8)5320; AVX512DQ-BW-NEXT: vmovdqa64 %zmm8, (%r8)5321; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, 64(%r8)5322; AVX512DQ-BW-NEXT: vzeroupper5323; AVX512DQ-BW-NEXT: retq5324;5325; AVX512DQ-BW-FCP-LABEL: store_i32_stride4_vf64:5326; AVX512DQ-BW-FCP: # %bb.0:5327; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm05328; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm15329; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm25330; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm35331; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm175332; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rsi), %zmm235333; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rsi), %zmm125334; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rsi), %zmm55335; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm225336; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdx), %zmm255337; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rdx), %zmm135338; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rdx), %zmm65339; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm215340; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rcx), %zmm265341; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rcx), %zmm195342; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rcx), %zmm95343; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm14 = [0,0,4,20,0,0,5,21,0,0,6,22,0,0,7,23]5344; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm22, %zmm85345; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm21, %zmm14, %zmm85346; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm7 = [4,20,0,0,5,21,0,0,6,22,0,0,7,23,0,0]5347; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm45348; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm17, %zmm7, %zmm45349; AVX512DQ-BW-FCP-NEXT: movb $-86, %al5350; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k15351; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm8, %zmm4 {%k1}5352; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm16 = [0,0,0,16,0,0,1,17,0,0,2,18,0,0,3,19]5353; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm22, %zmm105354; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm21, %zmm16, %zmm105355; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm11 = [0,16,0,0,1,17,0,0,2,18,0,0,3,19,0,0]5356; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm85357; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm17, %zmm11, %zmm85358; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm10, %zmm8 {%k1}5359; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm18 = [0,0,12,28,0,0,13,29,0,0,14,30,0,0,15,31]5360; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm22, %zmm205361; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm21, %zmm18, %zmm205362; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm15 = [12,28,0,0,13,29,0,0,14,30,0,0,15,31,0,0]5363; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm105364; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm17, %zmm15, %zmm105365; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm20, %zmm10 {%k1}5366; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm20 = [0,0,8,24,0,0,9,25,0,0,10,26,0,0,11,27]5367; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm21, %zmm20, %zmm225368; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm21 = [8,24,0,0,9,25,0,0,10,26,0,0,11,27,0,0]5369; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm17, %zmm21, %zmm05370; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm22, %zmm0 {%k1}5371; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm25, %zmm225372; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm26, %zmm14, %zmm225373; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm175374; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm23, %zmm7, %zmm175375; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm22, %zmm17 {%k1}5376; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm25, %zmm245377; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm26, %zmm16, %zmm245378; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm225379; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm23, %zmm11, %zmm225380; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm24, %zmm22 {%k1}5381; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm25, %zmm275382; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm26, %zmm18, %zmm275383; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm245384; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm23, %zmm15, %zmm245385; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm27, %zmm24 {%k1}5386; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm26, %zmm20, %zmm255387; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm23, %zmm21, %zmm15388; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm25, %zmm1 {%k1}5389; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm13, %zmm235390; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm19, %zmm14, %zmm235391; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm255392; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm12, %zmm7, %zmm255393; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm23, %zmm25 {%k1}5394; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm13, %zmm235395; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm19, %zmm16, %zmm235396; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm265397; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm12, %zmm11, %zmm265398; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm23, %zmm26 {%k1}5399; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm13, %zmm235400; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm19, %zmm18, %zmm235401; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm275402; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm12, %zmm15, %zmm275403; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm23, %zmm27 {%k1}5404; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm19, %zmm20, %zmm135405; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm12, %zmm21, %zmm25406; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm13, %zmm2 {%k1}5407; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm9, %zmm6, %zmm145408; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm5, %zmm3, %zmm75409; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm14, %zmm7 {%k1}5410; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm9, %zmm6, %zmm165411; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm5, %zmm3, %zmm115412; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm16, %zmm11 {%k1}5413; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm9, %zmm6, %zmm185414; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm5, %zmm3, %zmm155415; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm18, %zmm15 {%k1}5416; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm9, %zmm20, %zmm65417; AVX512DQ-BW-FCP-NEXT: vpermt2d %zmm5, %zmm21, %zmm35418; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm6, %zmm3 {%k1}5419; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, 896(%r8)5420; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm15, 960(%r8)5421; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm11, 768(%r8)5422; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, 832(%r8)5423; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, 640(%r8)5424; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm27, 704(%r8)5425; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm26, 512(%r8)5426; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm25, 576(%r8)5427; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, 384(%r8)5428; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm24, 448(%r8)5429; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm22, 256(%r8)5430; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm17, 320(%r8)5431; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, 128(%r8)5432; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm10, 192(%r8)5433; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm8, (%r8)5434; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, 64(%r8)5435; AVX512DQ-BW-FCP-NEXT: vzeroupper5436; AVX512DQ-BW-FCP-NEXT: retq5437 %in.vec0 = load <64 x i32>, ptr %in.vecptr0, align 645438 %in.vec1 = load <64 x i32>, ptr %in.vecptr1, align 645439 %in.vec2 = load <64 x i32>, ptr %in.vecptr2, align 645440 %in.vec3 = load <64 x i32>, ptr %in.vecptr3, align 645441 %1 = shufflevector <64 x i32> %in.vec0, <64 x i32> %in.vec1, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>5442 %2 = shufflevector <64 x i32> %in.vec2, <64 x i32> %in.vec3, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>5443 %3 = shufflevector <128 x i32> %1, <128 x i32> %2, <256 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159, i32 160, i32 161, i32 162, i32 163, i32 164, i32 165, i32 166, i32 167, i32 168, i32 169, i32 170, i32 171, i32 172, i32 173, i32 174, i32 175, i32 176, i32 177, i32 178, i32 179, i32 180, i32 181, i32 182, i32 183, i32 184, i32 185, i32 186, i32 187, i32 188, i32 189, i32 190, i32 191, i32 192, i32 193, i32 194, i32 195, i32 196, i32 197, i32 198, i32 199, i32 200, i32 201, i32 202, i32 203, i32 204, i32 205, i32 206, i32 207, i32 208, i32 209, i32 210, i32 211, i32 212, i32 213, i32 214, i32 215, i32 216, i32 217, i32 218, i32 219, i32 220, i32 221, i32 222, i32 223, i32 224, i32 225, i32 226, i32 227, i32 228, i32 229, i32 230, i32 231, i32 232, i32 233, i32 234, i32 235, i32 236, i32 237, i32 238, i32 239, i32 240, i32 241, i32 242, i32 243, i32 244, i32 245, i32 246, i32 247, i32 248, i32 249, i32 250, i32 251, i32 252, i32 253, i32 254, i32 255>5444 %interleaved.vec = shufflevector <256 x i32> %3, <256 x i32> poison, <256 x i32> <i32 0, i32 64, i32 128, i32 192, i32 1, i32 65, i32 129, i32 193, i32 2, i32 66, i32 130, i32 194, i32 3, i32 67, i32 131, i32 195, i32 4, i32 68, i32 132, i32 196, i32 5, i32 69, i32 133, i32 197, i32 6, i32 70, i32 134, i32 198, i32 7, i32 71, i32 135, i32 199, i32 8, i32 72, i32 136, i32 200, i32 9, i32 73, i32 137, i32 201, i32 10, i32 74, i32 138, i32 202, i32 11, i32 75, i32 139, i32 203, i32 12, i32 76, i32 140, i32 204, i32 13, i32 77, i32 141, i32 205, i32 14, i32 78, i32 142, i32 206, i32 15, i32 79, i32 143, i32 207, i32 16, i32 80, i32 144, i32 208, i32 17, i32 81, i32 145, i32 209, i32 18, i32 82, i32 146, i32 210, i32 19, i32 83, i32 147, i32 211, i32 20, i32 84, i32 148, i32 212, i32 21, i32 85, i32 149, i32 213, i32 22, i32 86, i32 150, i32 214, i32 23, i32 87, i32 151, i32 215, i32 24, i32 88, i32 152, i32 216, i32 25, i32 89, i32 153, i32 217, i32 26, i32 90, i32 154, i32 218, i32 27, i32 91, i32 155, i32 219, i32 28, i32 92, i32 156, i32 220, i32 29, i32 93, i32 157, i32 221, i32 30, i32 94, i32 158, i32 222, i32 31, i32 95, i32 159, i32 223, i32 32, i32 96, i32 160, i32 224, i32 33, i32 97, i32 161, i32 225, i32 34, i32 98, i32 162, i32 226, i32 35, i32 99, i32 163, i32 227, i32 36, i32 100, i32 164, i32 228, i32 37, i32 101, i32 165, i32 229, i32 38, i32 102, i32 166, i32 230, i32 39, i32 103, i32 167, i32 231, i32 40, i32 104, i32 168, i32 232, i32 41, i32 105, i32 169, i32 233, i32 42, i32 106, i32 170, i32 234, i32 43, i32 107, i32 171, i32 235, i32 44, i32 108, i32 172, i32 236, i32 45, i32 109, i32 173, i32 237, i32 46, i32 110, i32 174, i32 238, i32 47, i32 111, i32 175, i32 239, i32 48, i32 112, i32 176, i32 240, i32 49, i32 113, i32 177, i32 241, i32 50, i32 114, i32 178, i32 242, i32 51, i32 115, i32 179, i32 243, i32 52, i32 116, i32 180, i32 244, i32 53, i32 117, i32 181, i32 245, i32 54, i32 118, i32 182, i32 246, i32 55, i32 119, i32 183, i32 247, i32 56, i32 120, i32 184, i32 248, i32 57, i32 121, i32 185, i32 249, i32 58, i32 122, i32 186, i32 250, i32 59, i32 123, i32 187, i32 251, i32 60, i32 124, i32 188, i32 252, i32 61, i32 125, i32 189, i32 253, i32 62, i32 126, i32 190, i32 254, i32 63, i32 127, i32 191, i32 255>5445 store <256 x i32> %interleaved.vec, ptr %out.vec, align 645446 ret void5447}5448