3330 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_i64_stride2_vf2(ptr %in.vecptr0, ptr %in.vecptr1, ptr %out.vec) nounwind {19; SSE-LABEL: store_i64_stride2_vf2:20; SSE: # %bb.0:21; SSE-NEXT: movaps (%rdi), %xmm022; SSE-NEXT: movaps (%rsi), %xmm123; SSE-NEXT: movaps %xmm0, %xmm224; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]25; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]26; SSE-NEXT: movaps %xmm0, 16(%rdx)27; SSE-NEXT: movaps %xmm2, (%rdx)28; SSE-NEXT: retq29;30; AVX-LABEL: store_i64_stride2_vf2:31; AVX: # %bb.0:32; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]33; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]34; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]35; AVX-NEXT: vmovapd %ymm0, (%rdx)36; AVX-NEXT: vzeroupper37; AVX-NEXT: retq38;39; AVX2-LABEL: store_i64_stride2_vf2:40; AVX2: # %bb.0:41; AVX2-NEXT: vmovaps (%rdi), %xmm042; AVX2-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm043; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]44; AVX2-NEXT: vmovaps %ymm0, (%rdx)45; AVX2-NEXT: vzeroupper46; AVX2-NEXT: retq47;48; AVX2-FP-LABEL: store_i64_stride2_vf2:49; AVX2-FP: # %bb.0:50; AVX2-FP-NEXT: vmovaps (%rdi), %xmm051; AVX2-FP-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm052; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]53; AVX2-FP-NEXT: vmovaps %ymm0, (%rdx)54; AVX2-FP-NEXT: vzeroupper55; AVX2-FP-NEXT: retq56;57; AVX2-FCP-LABEL: store_i64_stride2_vf2:58; AVX2-FCP: # %bb.0:59; AVX2-FCP-NEXT: vmovaps (%rdi), %xmm060; AVX2-FCP-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm061; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]62; AVX2-FCP-NEXT: vmovaps %ymm0, (%rdx)63; AVX2-FCP-NEXT: vzeroupper64; AVX2-FCP-NEXT: retq65;66; AVX512-LABEL: store_i64_stride2_vf2:67; AVX512: # %bb.0:68; AVX512-NEXT: vmovaps (%rdi), %xmm069; AVX512-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm070; AVX512-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]71; AVX512-NEXT: vmovaps %ymm0, (%rdx)72; AVX512-NEXT: vzeroupper73; AVX512-NEXT: retq74;75; AVX512-FCP-LABEL: store_i64_stride2_vf2:76; AVX512-FCP: # %bb.0:77; AVX512-FCP-NEXT: vmovaps (%rdi), %xmm078; AVX512-FCP-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm079; AVX512-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]80; AVX512-FCP-NEXT: vmovaps %ymm0, (%rdx)81; AVX512-FCP-NEXT: vzeroupper82; AVX512-FCP-NEXT: retq83;84; AVX512DQ-LABEL: store_i64_stride2_vf2:85; AVX512DQ: # %bb.0:86; AVX512DQ-NEXT: vmovaps (%rdi), %xmm087; AVX512DQ-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm088; AVX512DQ-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]89; AVX512DQ-NEXT: vmovaps %ymm0, (%rdx)90; AVX512DQ-NEXT: vzeroupper91; AVX512DQ-NEXT: retq92;93; AVX512DQ-FCP-LABEL: store_i64_stride2_vf2:94; AVX512DQ-FCP: # %bb.0:95; AVX512DQ-FCP-NEXT: vmovaps (%rdi), %xmm096; AVX512DQ-FCP-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm097; AVX512DQ-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]98; AVX512DQ-FCP-NEXT: vmovaps %ymm0, (%rdx)99; AVX512DQ-FCP-NEXT: vzeroupper100; AVX512DQ-FCP-NEXT: retq101;102; AVX512BW-LABEL: store_i64_stride2_vf2:103; AVX512BW: # %bb.0:104; AVX512BW-NEXT: vmovaps (%rdi), %xmm0105; AVX512BW-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0106; AVX512BW-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]107; AVX512BW-NEXT: vmovaps %ymm0, (%rdx)108; AVX512BW-NEXT: vzeroupper109; AVX512BW-NEXT: retq110;111; AVX512BW-FCP-LABEL: store_i64_stride2_vf2:112; AVX512BW-FCP: # %bb.0:113; AVX512BW-FCP-NEXT: vmovaps (%rdi), %xmm0114; AVX512BW-FCP-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0115; AVX512BW-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]116; AVX512BW-FCP-NEXT: vmovaps %ymm0, (%rdx)117; AVX512BW-FCP-NEXT: vzeroupper118; AVX512BW-FCP-NEXT: retq119;120; AVX512DQ-BW-LABEL: store_i64_stride2_vf2:121; AVX512DQ-BW: # %bb.0:122; AVX512DQ-BW-NEXT: vmovaps (%rdi), %xmm0123; AVX512DQ-BW-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0124; AVX512DQ-BW-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]125; AVX512DQ-BW-NEXT: vmovaps %ymm0, (%rdx)126; AVX512DQ-BW-NEXT: vzeroupper127; AVX512DQ-BW-NEXT: retq128;129; AVX512DQ-BW-FCP-LABEL: store_i64_stride2_vf2:130; AVX512DQ-BW-FCP: # %bb.0:131; AVX512DQ-BW-FCP-NEXT: vmovaps (%rdi), %xmm0132; AVX512DQ-BW-FCP-NEXT: vinsertf128 $1, (%rsi), %ymm0, %ymm0133; AVX512DQ-BW-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]134; AVX512DQ-BW-FCP-NEXT: vmovaps %ymm0, (%rdx)135; AVX512DQ-BW-FCP-NEXT: vzeroupper136; AVX512DQ-BW-FCP-NEXT: retq137 %in.vec0 = load <2 x i64>, ptr %in.vecptr0, align 64138 %in.vec1 = load <2 x i64>, ptr %in.vecptr1, align 64139 %1 = shufflevector <2 x i64> %in.vec0, <2 x i64> %in.vec1, <4 x i32> <i32 0, i32 1, i32 2, i32 3>140 %interleaved.vec = shufflevector <4 x i64> %1, <4 x i64> poison, <4 x i32> <i32 0, i32 2, i32 1, i32 3>141 store <4 x i64> %interleaved.vec, ptr %out.vec, align 64142 ret void143}144 145define void @store_i64_stride2_vf4(ptr %in.vecptr0, ptr %in.vecptr1, ptr %out.vec) nounwind {146; SSE-LABEL: store_i64_stride2_vf4:147; SSE: # %bb.0:148; SSE-NEXT: movaps (%rdi), %xmm0149; SSE-NEXT: movaps 16(%rdi), %xmm1150; SSE-NEXT: movaps (%rsi), %xmm2151; SSE-NEXT: movaps 16(%rsi), %xmm3152; SSE-NEXT: movaps %xmm0, %xmm4153; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]154; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm2[0]155; SSE-NEXT: movaps %xmm1, %xmm2156; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm3[1]157; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm3[0]158; SSE-NEXT: movaps %xmm1, 32(%rdx)159; SSE-NEXT: movaps %xmm2, 48(%rdx)160; SSE-NEXT: movaps %xmm0, (%rdx)161; SSE-NEXT: movaps %xmm4, 16(%rdx)162; SSE-NEXT: retq163;164; AVX-LABEL: store_i64_stride2_vf4:165; AVX: # %bb.0:166; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]167; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]168; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]169; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]170; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm2 = mem[0,1,0,1]171; AVX-NEXT: vshufpd {{.*#+}} ymm1 = ymm2[0],ymm1[0],ymm2[3],ymm1[3]172; AVX-NEXT: vmovapd %ymm1, 32(%rdx)173; AVX-NEXT: vmovapd %ymm0, (%rdx)174; AVX-NEXT: vzeroupper175; AVX-NEXT: retq176;177; AVX2-LABEL: store_i64_stride2_vf4:178; AVX2: # %bb.0:179; AVX2-NEXT: vmovaps (%rdi), %ymm0180; AVX2-NEXT: vmovaps (%rsi), %ymm1181; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]182; AVX2-NEXT: vpermpd {{.*#+}} ymm3 = ymm0[0,1,1,3]183; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]184; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]185; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]186; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]187; AVX2-NEXT: vmovaps %ymm0, 32(%rdx)188; AVX2-NEXT: vmovaps %ymm2, (%rdx)189; AVX2-NEXT: vzeroupper190; AVX2-NEXT: retq191;192; AVX2-FP-LABEL: store_i64_stride2_vf4:193; AVX2-FP: # %bb.0:194; AVX2-FP-NEXT: vmovaps (%rdi), %ymm0195; AVX2-FP-NEXT: vmovaps (%rsi), %ymm1196; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]197; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm3 = ymm0[0,1,1,3]198; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]199; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]200; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]201; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]202; AVX2-FP-NEXT: vmovaps %ymm0, 32(%rdx)203; AVX2-FP-NEXT: vmovaps %ymm2, (%rdx)204; AVX2-FP-NEXT: vzeroupper205; AVX2-FP-NEXT: retq206;207; AVX2-FCP-LABEL: store_i64_stride2_vf4:208; AVX2-FCP: # %bb.0:209; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm0210; AVX2-FCP-NEXT: vmovaps (%rsi), %ymm1211; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]212; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm3 = ymm0[0,1,1,3]213; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]214; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]215; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]216; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]217; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%rdx)218; AVX2-FCP-NEXT: vmovaps %ymm2, (%rdx)219; AVX2-FCP-NEXT: vzeroupper220; AVX2-FCP-NEXT: retq221;222; AVX512-LABEL: store_i64_stride2_vf4:223; AVX512: # %bb.0:224; AVX512-NEXT: vmovaps (%rdi), %ymm0225; AVX512-NEXT: vinsertf64x4 $1, (%rsi), %zmm0, %zmm0226; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm1 = [0,4,1,5,2,6,3,7]227; AVX512-NEXT: vpermpd %zmm0, %zmm1, %zmm0228; AVX512-NEXT: vmovaps %zmm0, (%rdx)229; AVX512-NEXT: vzeroupper230; AVX512-NEXT: retq231;232; AVX512-FCP-LABEL: store_i64_stride2_vf4:233; AVX512-FCP: # %bb.0:234; AVX512-FCP-NEXT: vmovaps (%rdi), %ymm0235; AVX512-FCP-NEXT: vinsertf64x4 $1, (%rsi), %zmm0, %zmm0236; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm1 = [0,4,1,5,2,6,3,7]237; AVX512-FCP-NEXT: vpermpd %zmm0, %zmm1, %zmm0238; AVX512-FCP-NEXT: vmovaps %zmm0, (%rdx)239; AVX512-FCP-NEXT: vzeroupper240; AVX512-FCP-NEXT: retq241;242; AVX512DQ-LABEL: store_i64_stride2_vf4:243; AVX512DQ: # %bb.0:244; AVX512DQ-NEXT: vmovaps (%rdi), %ymm0245; AVX512DQ-NEXT: vinsertf64x4 $1, (%rsi), %zmm0, %zmm0246; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm1 = [0,4,1,5,2,6,3,7]247; AVX512DQ-NEXT: vpermpd %zmm0, %zmm1, %zmm0248; AVX512DQ-NEXT: vmovaps %zmm0, (%rdx)249; AVX512DQ-NEXT: vzeroupper250; AVX512DQ-NEXT: retq251;252; AVX512DQ-FCP-LABEL: store_i64_stride2_vf4:253; AVX512DQ-FCP: # %bb.0:254; AVX512DQ-FCP-NEXT: vmovaps (%rdi), %ymm0255; AVX512DQ-FCP-NEXT: vinsertf64x4 $1, (%rsi), %zmm0, %zmm0256; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm1 = [0,4,1,5,2,6,3,7]257; AVX512DQ-FCP-NEXT: vpermpd %zmm0, %zmm1, %zmm0258; AVX512DQ-FCP-NEXT: vmovaps %zmm0, (%rdx)259; AVX512DQ-FCP-NEXT: vzeroupper260; AVX512DQ-FCP-NEXT: retq261;262; AVX512BW-LABEL: store_i64_stride2_vf4:263; AVX512BW: # %bb.0:264; AVX512BW-NEXT: vmovaps (%rdi), %ymm0265; AVX512BW-NEXT: vinsertf64x4 $1, (%rsi), %zmm0, %zmm0266; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm1 = [0,4,1,5,2,6,3,7]267; AVX512BW-NEXT: vpermpd %zmm0, %zmm1, %zmm0268; AVX512BW-NEXT: vmovaps %zmm0, (%rdx)269; AVX512BW-NEXT: vzeroupper270; AVX512BW-NEXT: retq271;272; AVX512BW-FCP-LABEL: store_i64_stride2_vf4:273; AVX512BW-FCP: # %bb.0:274; AVX512BW-FCP-NEXT: vmovaps (%rdi), %ymm0275; AVX512BW-FCP-NEXT: vinsertf64x4 $1, (%rsi), %zmm0, %zmm0276; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm1 = [0,4,1,5,2,6,3,7]277; AVX512BW-FCP-NEXT: vpermpd %zmm0, %zmm1, %zmm0278; AVX512BW-FCP-NEXT: vmovaps %zmm0, (%rdx)279; AVX512BW-FCP-NEXT: vzeroupper280; AVX512BW-FCP-NEXT: retq281;282; AVX512DQ-BW-LABEL: store_i64_stride2_vf4:283; AVX512DQ-BW: # %bb.0:284; AVX512DQ-BW-NEXT: vmovaps (%rdi), %ymm0285; AVX512DQ-BW-NEXT: vinsertf64x4 $1, (%rsi), %zmm0, %zmm0286; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm1 = [0,4,1,5,2,6,3,7]287; AVX512DQ-BW-NEXT: vpermpd %zmm0, %zmm1, %zmm0288; AVX512DQ-BW-NEXT: vmovaps %zmm0, (%rdx)289; AVX512DQ-BW-NEXT: vzeroupper290; AVX512DQ-BW-NEXT: retq291;292; AVX512DQ-BW-FCP-LABEL: store_i64_stride2_vf4:293; AVX512DQ-BW-FCP: # %bb.0:294; AVX512DQ-BW-FCP-NEXT: vmovaps (%rdi), %ymm0295; AVX512DQ-BW-FCP-NEXT: vinsertf64x4 $1, (%rsi), %zmm0, %zmm0296; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm1 = [0,4,1,5,2,6,3,7]297; AVX512DQ-BW-FCP-NEXT: vpermpd %zmm0, %zmm1, %zmm0298; AVX512DQ-BW-FCP-NEXT: vmovaps %zmm0, (%rdx)299; AVX512DQ-BW-FCP-NEXT: vzeroupper300; AVX512DQ-BW-FCP-NEXT: retq301 %in.vec0 = load <4 x i64>, ptr %in.vecptr0, align 64302 %in.vec1 = load <4 x i64>, ptr %in.vecptr1, align 64303 %1 = shufflevector <4 x i64> %in.vec0, <4 x i64> %in.vec1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>304 %interleaved.vec = shufflevector <8 x i64> %1, <8 x i64> poison, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>305 store <8 x i64> %interleaved.vec, ptr %out.vec, align 64306 ret void307}308 309define void @store_i64_stride2_vf8(ptr %in.vecptr0, ptr %in.vecptr1, ptr %out.vec) nounwind {310; SSE-LABEL: store_i64_stride2_vf8:311; SSE: # %bb.0:312; SSE-NEXT: movaps (%rdi), %xmm0313; SSE-NEXT: movaps 16(%rdi), %xmm1314; SSE-NEXT: movaps 32(%rdi), %xmm2315; SSE-NEXT: movaps 48(%rdi), %xmm3316; SSE-NEXT: movaps (%rsi), %xmm4317; SSE-NEXT: movaps 16(%rsi), %xmm5318; SSE-NEXT: movaps 32(%rsi), %xmm6319; SSE-NEXT: movaps 48(%rsi), %xmm7320; SSE-NEXT: movaps %xmm0, %xmm8321; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm4[1]322; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm4[0]323; SSE-NEXT: movaps %xmm1, %xmm4324; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm5[1]325; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm5[0]326; SSE-NEXT: movaps %xmm2, %xmm5327; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm6[1]328; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm6[0]329; SSE-NEXT: movaps %xmm3, %xmm6330; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm7[1]331; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm7[0]332; SSE-NEXT: movaps %xmm3, 96(%rdx)333; SSE-NEXT: movaps %xmm6, 112(%rdx)334; SSE-NEXT: movaps %xmm2, 64(%rdx)335; SSE-NEXT: movaps %xmm5, 80(%rdx)336; SSE-NEXT: movaps %xmm1, 32(%rdx)337; SSE-NEXT: movaps %xmm4, 48(%rdx)338; SSE-NEXT: movaps %xmm0, (%rdx)339; SSE-NEXT: movaps %xmm8, 16(%rdx)340; SSE-NEXT: retq341;342; AVX-LABEL: store_i64_stride2_vf8:343; AVX: # %bb.0:344; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]345; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]346; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]347; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]348; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm2 = mem[0,1,0,1]349; AVX-NEXT: vshufpd {{.*#+}} ymm1 = ymm2[0],ymm1[0],ymm2[3],ymm1[3]350; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm2 = mem[0,1,0,1]351; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm3 = mem[0,1,0,1]352; AVX-NEXT: vshufpd {{.*#+}} ymm2 = ymm3[0],ymm2[0],ymm3[3],ymm2[3]353; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm3 = mem[0,1,0,1]354; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm4 = mem[0,1,0,1]355; AVX-NEXT: vshufpd {{.*#+}} ymm3 = ymm4[0],ymm3[0],ymm4[3],ymm3[3]356; AVX-NEXT: vmovapd %ymm3, 96(%rdx)357; AVX-NEXT: vmovapd %ymm2, 64(%rdx)358; AVX-NEXT: vmovapd %ymm1, (%rdx)359; AVX-NEXT: vmovapd %ymm0, 32(%rdx)360; AVX-NEXT: vzeroupper361; AVX-NEXT: retq362;363; AVX2-LABEL: store_i64_stride2_vf8:364; AVX2: # %bb.0:365; AVX2-NEXT: vmovaps (%rdi), %ymm0366; AVX2-NEXT: vmovaps 32(%rdi), %ymm1367; AVX2-NEXT: vmovaps (%rsi), %ymm2368; AVX2-NEXT: vmovaps 32(%rsi), %ymm3369; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm2[0,2,2,3]370; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm0[2,1,3,3]371; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3],ymm5[4,5],ymm4[6,7]372; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]373; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,1,1,3]374; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]375; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm3[0,2,2,3]376; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm1[2,1,3,3]377; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]378; AVX2-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,0,2,1]379; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]380; AVX2-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm3[2,3],ymm1[4,5],ymm3[6,7]381; AVX2-NEXT: vmovaps %ymm1, 64(%rdx)382; AVX2-NEXT: vmovaps %ymm2, 96(%rdx)383; AVX2-NEXT: vmovaps %ymm0, (%rdx)384; AVX2-NEXT: vmovaps %ymm4, 32(%rdx)385; AVX2-NEXT: vzeroupper386; AVX2-NEXT: retq387;388; AVX2-FP-LABEL: store_i64_stride2_vf8:389; AVX2-FP: # %bb.0:390; AVX2-FP-NEXT: vmovaps (%rdi), %ymm0391; AVX2-FP-NEXT: vmovaps 32(%rdi), %ymm1392; AVX2-FP-NEXT: vmovaps (%rsi), %ymm2393; AVX2-FP-NEXT: vmovaps 32(%rsi), %ymm3394; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm2[0,2,2,3]395; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm0[2,1,3,3]396; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3],ymm5[4,5],ymm4[6,7]397; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]398; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,1,1,3]399; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]400; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm3[0,2,2,3]401; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm1[2,1,3,3]402; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]403; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,0,2,1]404; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]405; AVX2-FP-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm3[2,3],ymm1[4,5],ymm3[6,7]406; AVX2-FP-NEXT: vmovaps %ymm1, 64(%rdx)407; AVX2-FP-NEXT: vmovaps %ymm2, 96(%rdx)408; AVX2-FP-NEXT: vmovaps %ymm0, (%rdx)409; AVX2-FP-NEXT: vmovaps %ymm4, 32(%rdx)410; AVX2-FP-NEXT: vzeroupper411; AVX2-FP-NEXT: retq412;413; AVX2-FCP-LABEL: store_i64_stride2_vf8:414; AVX2-FCP: # %bb.0:415; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm0416; AVX2-FCP-NEXT: vmovaps 32(%rdi), %ymm1417; AVX2-FCP-NEXT: vmovaps (%rsi), %ymm2418; AVX2-FCP-NEXT: vmovaps 32(%rsi), %ymm3419; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm2[0,2,2,3]420; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm0[2,1,3,3]421; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm5[0,1],ymm4[2,3],ymm5[4,5],ymm4[6,7]422; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,0,2,1]423; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,1,1,3]424; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]425; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm3[0,2,2,3]426; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm1[2,1,3,3]427; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5],ymm2[6,7]428; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,0,2,1]429; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]430; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm3[2,3],ymm1[4,5],ymm3[6,7]431; AVX2-FCP-NEXT: vmovaps %ymm1, 64(%rdx)432; AVX2-FCP-NEXT: vmovaps %ymm2, 96(%rdx)433; AVX2-FCP-NEXT: vmovaps %ymm0, (%rdx)434; AVX2-FCP-NEXT: vmovaps %ymm4, 32(%rdx)435; AVX2-FCP-NEXT: vzeroupper436; AVX2-FCP-NEXT: retq437;438; AVX512-LABEL: store_i64_stride2_vf8:439; AVX512: # %bb.0:440; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0441; AVX512-NEXT: vmovdqa64 (%rsi), %zmm1442; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,8,1,9,2,10,3,11]443; AVX512-NEXT: vpermi2q %zmm1, %zmm0, %zmm2444; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm3 = [4,12,5,13,6,14,7,15]445; AVX512-NEXT: vpermi2q %zmm1, %zmm0, %zmm3446; AVX512-NEXT: vmovdqa64 %zmm3, 64(%rdx)447; AVX512-NEXT: vmovdqa64 %zmm2, (%rdx)448; AVX512-NEXT: vzeroupper449; AVX512-NEXT: retq450;451; AVX512-FCP-LABEL: store_i64_stride2_vf8:452; AVX512-FCP: # %bb.0:453; AVX512-FCP-NEXT: vmovdqa64 (%rdi), %zmm0454; AVX512-FCP-NEXT: vmovdqa64 (%rsi), %zmm1455; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,8,1,9,2,10,3,11]456; AVX512-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm2457; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm3 = [4,12,5,13,6,14,7,15]458; AVX512-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm3459; AVX512-FCP-NEXT: vmovdqa64 %zmm3, 64(%rdx)460; AVX512-FCP-NEXT: vmovdqa64 %zmm2, (%rdx)461; AVX512-FCP-NEXT: vzeroupper462; AVX512-FCP-NEXT: retq463;464; AVX512DQ-LABEL: store_i64_stride2_vf8:465; AVX512DQ: # %bb.0:466; AVX512DQ-NEXT: vmovdqa64 (%rdi), %zmm0467; AVX512DQ-NEXT: vmovdqa64 (%rsi), %zmm1468; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,8,1,9,2,10,3,11]469; AVX512DQ-NEXT: vpermi2q %zmm1, %zmm0, %zmm2470; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm3 = [4,12,5,13,6,14,7,15]471; AVX512DQ-NEXT: vpermi2q %zmm1, %zmm0, %zmm3472; AVX512DQ-NEXT: vmovdqa64 %zmm3, 64(%rdx)473; AVX512DQ-NEXT: vmovdqa64 %zmm2, (%rdx)474; AVX512DQ-NEXT: vzeroupper475; AVX512DQ-NEXT: retq476;477; AVX512DQ-FCP-LABEL: store_i64_stride2_vf8:478; AVX512DQ-FCP: # %bb.0:479; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdi), %zmm0480; AVX512DQ-FCP-NEXT: vmovdqa64 (%rsi), %zmm1481; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,8,1,9,2,10,3,11]482; AVX512DQ-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm2483; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm3 = [4,12,5,13,6,14,7,15]484; AVX512DQ-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm3485; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, 64(%rdx)486; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, (%rdx)487; AVX512DQ-FCP-NEXT: vzeroupper488; AVX512DQ-FCP-NEXT: retq489;490; AVX512BW-LABEL: store_i64_stride2_vf8:491; AVX512BW: # %bb.0:492; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm0493; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm1494; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,8,1,9,2,10,3,11]495; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm2496; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm3 = [4,12,5,13,6,14,7,15]497; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm3498; AVX512BW-NEXT: vmovdqa64 %zmm3, 64(%rdx)499; AVX512BW-NEXT: vmovdqa64 %zmm2, (%rdx)500; AVX512BW-NEXT: vzeroupper501; AVX512BW-NEXT: retq502;503; AVX512BW-FCP-LABEL: store_i64_stride2_vf8:504; AVX512BW-FCP: # %bb.0:505; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm0506; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm1507; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,8,1,9,2,10,3,11]508; AVX512BW-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm2509; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm3 = [4,12,5,13,6,14,7,15]510; AVX512BW-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm3511; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, 64(%rdx)512; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, (%rdx)513; AVX512BW-FCP-NEXT: vzeroupper514; AVX512BW-FCP-NEXT: retq515;516; AVX512DQ-BW-LABEL: store_i64_stride2_vf8:517; AVX512DQ-BW: # %bb.0:518; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm0519; AVX512DQ-BW-NEXT: vmovdqa64 (%rsi), %zmm1520; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,8,1,9,2,10,3,11]521; AVX512DQ-BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm2522; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm3 = [4,12,5,13,6,14,7,15]523; AVX512DQ-BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm3524; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, 64(%rdx)525; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, (%rdx)526; AVX512DQ-BW-NEXT: vzeroupper527; AVX512DQ-BW-NEXT: retq528;529; AVX512DQ-BW-FCP-LABEL: store_i64_stride2_vf8:530; AVX512DQ-BW-FCP: # %bb.0:531; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm0532; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm1533; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,8,1,9,2,10,3,11]534; AVX512DQ-BW-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm2535; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm3 = [4,12,5,13,6,14,7,15]536; AVX512DQ-BW-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm3537; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, 64(%rdx)538; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, (%rdx)539; AVX512DQ-BW-FCP-NEXT: vzeroupper540; AVX512DQ-BW-FCP-NEXT: retq541 %in.vec0 = load <8 x i64>, ptr %in.vecptr0, align 64542 %in.vec1 = load <8 x i64>, ptr %in.vecptr1, align 64543 %1 = shufflevector <8 x i64> %in.vec0, <8 x i64> %in.vec1, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>544 %interleaved.vec = shufflevector <16 x i64> %1, <16 x i64> poison, <16 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11, i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>545 store <16 x i64> %interleaved.vec, ptr %out.vec, align 64546 ret void547}548 549define void @store_i64_stride2_vf16(ptr %in.vecptr0, ptr %in.vecptr1, ptr %out.vec) nounwind {550; SSE-LABEL: store_i64_stride2_vf16:551; SSE: # %bb.0:552; SSE-NEXT: movaps 112(%rdi), %xmm0553; SSE-NEXT: movaps 96(%rdi), %xmm6554; SSE-NEXT: movaps 80(%rdi), %xmm4555; SSE-NEXT: movaps 64(%rdi), %xmm3556; SSE-NEXT: movaps (%rdi), %xmm8557; SSE-NEXT: movaps 16(%rdi), %xmm1558; SSE-NEXT: movaps 32(%rdi), %xmm2559; SSE-NEXT: movaps 48(%rdi), %xmm5560; SSE-NEXT: movaps 96(%rsi), %xmm11561; SSE-NEXT: movaps 80(%rsi), %xmm12562; SSE-NEXT: movaps 64(%rsi), %xmm13563; SSE-NEXT: movaps (%rsi), %xmm9564; SSE-NEXT: movaps 16(%rsi), %xmm10565; SSE-NEXT: movaps 32(%rsi), %xmm14566; SSE-NEXT: movaps 48(%rsi), %xmm15567; SSE-NEXT: movaps %xmm8, %xmm7568; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm9[1]569; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill570; SSE-NEXT: movlhps {{.*#+}} xmm8 = xmm8[0],xmm9[0]571; SSE-NEXT: movaps %xmm1, %xmm9572; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm10[1]573; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm10[0]574; SSE-NEXT: movaps %xmm2, %xmm10575; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm14[1]576; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm14[0]577; SSE-NEXT: movaps %xmm5, %xmm14578; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm15[1]579; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm15[0]580; SSE-NEXT: movaps %xmm3, %xmm15581; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm13[1]582; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm13[0]583; SSE-NEXT: movaps %xmm4, %xmm13584; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm12[1]585; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm12[0]586; SSE-NEXT: movaps %xmm6, %xmm12587; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm11[1]588; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm11[0]589; SSE-NEXT: movaps 112(%rsi), %xmm11590; SSE-NEXT: movaps %xmm0, %xmm7591; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm11[1]592; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm11[0]593; SSE-NEXT: movaps %xmm0, 224(%rdx)594; SSE-NEXT: movaps %xmm7, 240(%rdx)595; SSE-NEXT: movaps %xmm6, 192(%rdx)596; SSE-NEXT: movaps %xmm12, 208(%rdx)597; SSE-NEXT: movaps %xmm4, 160(%rdx)598; SSE-NEXT: movaps %xmm13, 176(%rdx)599; SSE-NEXT: movaps %xmm3, 128(%rdx)600; SSE-NEXT: movaps %xmm15, 144(%rdx)601; SSE-NEXT: movaps %xmm5, 96(%rdx)602; SSE-NEXT: movaps %xmm14, 112(%rdx)603; SSE-NEXT: movaps %xmm2, 64(%rdx)604; SSE-NEXT: movaps %xmm10, 80(%rdx)605; SSE-NEXT: movaps %xmm1, 32(%rdx)606; SSE-NEXT: movaps %xmm9, 48(%rdx)607; SSE-NEXT: movaps %xmm8, (%rdx)608; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload609; SSE-NEXT: movaps %xmm0, 16(%rdx)610; SSE-NEXT: retq611;612; AVX-LABEL: store_i64_stride2_vf16:613; AVX: # %bb.0:614; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]615; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]616; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]617; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]618; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm2 = mem[0,1,0,1]619; AVX-NEXT: vshufpd {{.*#+}} ymm1 = ymm2[0],ymm1[0],ymm2[3],ymm1[3]620; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm2 = mem[0,1,0,1]621; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm3 = mem[0,1,0,1]622; AVX-NEXT: vshufpd {{.*#+}} ymm2 = ymm3[0],ymm2[0],ymm3[3],ymm2[3]623; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm3 = mem[0,1,0,1]624; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm4 = mem[0,1,0,1]625; AVX-NEXT: vshufpd {{.*#+}} ymm3 = ymm4[0],ymm3[0],ymm4[3],ymm3[3]626; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm4 = mem[0,1,0,1]627; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm5 = mem[0,1,0,1]628; AVX-NEXT: vshufpd {{.*#+}} ymm4 = ymm5[0],ymm4[0],ymm5[3],ymm4[3]629; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm5 = mem[0,1,0,1]630; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm6 = mem[0,1,0,1]631; AVX-NEXT: vshufpd {{.*#+}} ymm5 = ymm6[0],ymm5[0],ymm6[3],ymm5[3]632; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm6 = mem[0,1,0,1]633; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm7 = mem[0,1,0,1]634; AVX-NEXT: vshufpd {{.*#+}} ymm6 = ymm7[0],ymm6[0],ymm7[3],ymm6[3]635; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm7 = mem[0,1,0,1]636; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm8 = mem[0,1,0,1]637; AVX-NEXT: vshufpd {{.*#+}} ymm7 = ymm8[0],ymm7[0],ymm8[3],ymm7[3]638; AVX-NEXT: vmovapd %ymm7, 32(%rdx)639; AVX-NEXT: vmovapd %ymm6, 96(%rdx)640; AVX-NEXT: vmovapd %ymm5, 64(%rdx)641; AVX-NEXT: vmovapd %ymm4, (%rdx)642; AVX-NEXT: vmovapd %ymm3, 160(%rdx)643; AVX-NEXT: vmovapd %ymm2, 128(%rdx)644; AVX-NEXT: vmovapd %ymm1, 192(%rdx)645; AVX-NEXT: vmovapd %ymm0, 224(%rdx)646; AVX-NEXT: vzeroupper647; AVX-NEXT: retq648;649; AVX2-LABEL: store_i64_stride2_vf16:650; AVX2: # %bb.0:651; AVX2-NEXT: vmovaps (%rdi), %ymm0652; AVX2-NEXT: vmovaps 32(%rdi), %ymm1653; AVX2-NEXT: vmovaps 64(%rdi), %ymm2654; AVX2-NEXT: vmovaps 96(%rdi), %ymm3655; AVX2-NEXT: vmovaps (%rsi), %ymm4656; AVX2-NEXT: vmovaps 32(%rsi), %ymm5657; AVX2-NEXT: vmovaps 64(%rsi), %ymm6658; AVX2-NEXT: vmovaps 96(%rsi), %ymm7659; AVX2-NEXT: vpermpd {{.*#+}} ymm8 = ymm4[0,2,2,3]660; AVX2-NEXT: vpermpd {{.*#+}} ymm9 = ymm0[2,1,3,3]661; AVX2-NEXT: vblendps {{.*#+}} ymm8 = ymm9[0,1],ymm8[2,3],ymm9[4,5],ymm8[6,7]662; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]663; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,1,1,3]664; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm4[2,3],ymm0[4,5],ymm4[6,7]665; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm5[0,2,2,3]666; AVX2-NEXT: vpermpd {{.*#+}} ymm9 = ymm1[2,1,3,3]667; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm9[0,1],ymm4[2,3],ymm9[4,5],ymm4[6,7]668; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,0,2,1]669; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]670; AVX2-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm5[2,3],ymm1[4,5],ymm5[6,7]671; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm6[0,2,2,3]672; AVX2-NEXT: vpermpd {{.*#+}} ymm9 = ymm2[2,1,3,3]673; AVX2-NEXT: vblendps {{.*#+}} ymm5 = ymm9[0,1],ymm5[2,3],ymm9[4,5],ymm5[6,7]674; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,0,2,1]675; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,1,1,3]676; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm6[2,3],ymm2[4,5],ymm6[6,7]677; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm7[0,2,2,3]678; AVX2-NEXT: vpermpd {{.*#+}} ymm9 = ymm3[2,1,3,3]679; AVX2-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1],ymm6[2,3],ymm9[4,5],ymm6[6,7]680; AVX2-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[0,0,2,1]681; AVX2-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,1,1,3]682; AVX2-NEXT: vblendps {{.*#+}} ymm3 = ymm3[0,1],ymm7[2,3],ymm3[4,5],ymm7[6,7]683; AVX2-NEXT: vmovaps %ymm3, 192(%rdx)684; AVX2-NEXT: vmovaps %ymm6, 224(%rdx)685; AVX2-NEXT: vmovaps %ymm2, 128(%rdx)686; AVX2-NEXT: vmovaps %ymm5, 160(%rdx)687; AVX2-NEXT: vmovaps %ymm1, 64(%rdx)688; AVX2-NEXT: vmovaps %ymm4, 96(%rdx)689; AVX2-NEXT: vmovaps %ymm0, (%rdx)690; AVX2-NEXT: vmovaps %ymm8, 32(%rdx)691; AVX2-NEXT: vzeroupper692; AVX2-NEXT: retq693;694; AVX2-FP-LABEL: store_i64_stride2_vf16:695; AVX2-FP: # %bb.0:696; AVX2-FP-NEXT: vmovaps (%rdi), %ymm0697; AVX2-FP-NEXT: vmovaps 32(%rdi), %ymm1698; AVX2-FP-NEXT: vmovaps 64(%rdi), %ymm2699; AVX2-FP-NEXT: vmovaps 96(%rdi), %ymm3700; AVX2-FP-NEXT: vmovaps (%rsi), %ymm4701; AVX2-FP-NEXT: vmovaps 32(%rsi), %ymm5702; AVX2-FP-NEXT: vmovaps 64(%rsi), %ymm6703; AVX2-FP-NEXT: vmovaps 96(%rsi), %ymm7704; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm8 = ymm4[0,2,2,3]705; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm9 = ymm0[2,1,3,3]706; AVX2-FP-NEXT: vblendps {{.*#+}} ymm8 = ymm9[0,1],ymm8[2,3],ymm9[4,5],ymm8[6,7]707; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]708; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,1,1,3]709; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm4[2,3],ymm0[4,5],ymm4[6,7]710; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm5[0,2,2,3]711; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm9 = ymm1[2,1,3,3]712; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm9[0,1],ymm4[2,3],ymm9[4,5],ymm4[6,7]713; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,0,2,1]714; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]715; AVX2-FP-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm5[2,3],ymm1[4,5],ymm5[6,7]716; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm6[0,2,2,3]717; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm9 = ymm2[2,1,3,3]718; AVX2-FP-NEXT: vblendps {{.*#+}} ymm5 = ymm9[0,1],ymm5[2,3],ymm9[4,5],ymm5[6,7]719; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,0,2,1]720; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,1,1,3]721; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm6[2,3],ymm2[4,5],ymm6[6,7]722; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm7[0,2,2,3]723; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm9 = ymm3[2,1,3,3]724; AVX2-FP-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1],ymm6[2,3],ymm9[4,5],ymm6[6,7]725; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[0,0,2,1]726; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,1,1,3]727; AVX2-FP-NEXT: vblendps {{.*#+}} ymm3 = ymm3[0,1],ymm7[2,3],ymm3[4,5],ymm7[6,7]728; AVX2-FP-NEXT: vmovaps %ymm3, 192(%rdx)729; AVX2-FP-NEXT: vmovaps %ymm6, 224(%rdx)730; AVX2-FP-NEXT: vmovaps %ymm2, 128(%rdx)731; AVX2-FP-NEXT: vmovaps %ymm5, 160(%rdx)732; AVX2-FP-NEXT: vmovaps %ymm1, 64(%rdx)733; AVX2-FP-NEXT: vmovaps %ymm4, 96(%rdx)734; AVX2-FP-NEXT: vmovaps %ymm0, (%rdx)735; AVX2-FP-NEXT: vmovaps %ymm8, 32(%rdx)736; AVX2-FP-NEXT: vzeroupper737; AVX2-FP-NEXT: retq738;739; AVX2-FCP-LABEL: store_i64_stride2_vf16:740; AVX2-FCP: # %bb.0:741; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm0742; AVX2-FCP-NEXT: vmovaps 32(%rdi), %ymm1743; AVX2-FCP-NEXT: vmovaps 64(%rdi), %ymm2744; AVX2-FCP-NEXT: vmovaps 96(%rdi), %ymm3745; AVX2-FCP-NEXT: vmovaps (%rsi), %ymm4746; AVX2-FCP-NEXT: vmovaps 32(%rsi), %ymm5747; AVX2-FCP-NEXT: vmovaps 64(%rsi), %ymm6748; AVX2-FCP-NEXT: vmovaps 96(%rsi), %ymm7749; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm8 = ymm4[0,2,2,3]750; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm9 = ymm0[2,1,3,3]751; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm8 = ymm9[0,1],ymm8[2,3],ymm9[4,5],ymm8[6,7]752; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,0,2,1]753; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,1,1,3]754; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm4[2,3],ymm0[4,5],ymm4[6,7]755; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm5[0,2,2,3]756; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm9 = ymm1[2,1,3,3]757; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm9[0,1],ymm4[2,3],ymm9[4,5],ymm4[6,7]758; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,0,2,1]759; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]760; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm5[2,3],ymm1[4,5],ymm5[6,7]761; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm6[0,2,2,3]762; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm9 = ymm2[2,1,3,3]763; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm5 = ymm9[0,1],ymm5[2,3],ymm9[4,5],ymm5[6,7]764; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,0,2,1]765; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,1,1,3]766; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm6[2,3],ymm2[4,5],ymm6[6,7]767; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm7[0,2,2,3]768; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm9 = ymm3[2,1,3,3]769; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1],ymm6[2,3],ymm9[4,5],ymm6[6,7]770; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[0,0,2,1]771; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,1,1,3]772; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm3 = ymm3[0,1],ymm7[2,3],ymm3[4,5],ymm7[6,7]773; AVX2-FCP-NEXT: vmovaps %ymm3, 192(%rdx)774; AVX2-FCP-NEXT: vmovaps %ymm6, 224(%rdx)775; AVX2-FCP-NEXT: vmovaps %ymm2, 128(%rdx)776; AVX2-FCP-NEXT: vmovaps %ymm5, 160(%rdx)777; AVX2-FCP-NEXT: vmovaps %ymm1, 64(%rdx)778; AVX2-FCP-NEXT: vmovaps %ymm4, 96(%rdx)779; AVX2-FCP-NEXT: vmovaps %ymm0, (%rdx)780; AVX2-FCP-NEXT: vmovaps %ymm8, 32(%rdx)781; AVX2-FCP-NEXT: vzeroupper782; AVX2-FCP-NEXT: retq783;784; AVX512-LABEL: store_i64_stride2_vf16:785; AVX512: # %bb.0:786; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0787; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1788; AVX512-NEXT: vmovdqa64 (%rsi), %zmm2789; AVX512-NEXT: vmovdqa64 64(%rsi), %zmm3790; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm4 = [4,12,5,13,6,14,7,15]791; AVX512-NEXT: vmovdqa64 %zmm0, %zmm5792; AVX512-NEXT: vpermt2q %zmm2, %zmm4, %zmm5793; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm6 = [0,8,1,9,2,10,3,11]794; AVX512-NEXT: vpermt2q %zmm2, %zmm6, %zmm0795; AVX512-NEXT: vpermi2q %zmm3, %zmm1, %zmm4796; AVX512-NEXT: vpermt2q %zmm3, %zmm6, %zmm1797; AVX512-NEXT: vmovdqa64 %zmm1, 128(%rdx)798; AVX512-NEXT: vmovdqa64 %zmm4, 192(%rdx)799; AVX512-NEXT: vmovdqa64 %zmm0, (%rdx)800; AVX512-NEXT: vmovdqa64 %zmm5, 64(%rdx)801; AVX512-NEXT: vzeroupper802; AVX512-NEXT: retq803;804; AVX512-FCP-LABEL: store_i64_stride2_vf16:805; AVX512-FCP: # %bb.0:806; AVX512-FCP-NEXT: vmovdqa64 (%rdi), %zmm0807; AVX512-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1808; AVX512-FCP-NEXT: vmovdqa64 (%rsi), %zmm2809; AVX512-FCP-NEXT: vmovdqa64 64(%rsi), %zmm3810; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm4 = [4,12,5,13,6,14,7,15]811; AVX512-FCP-NEXT: vmovdqa64 %zmm0, %zmm5812; AVX512-FCP-NEXT: vpermt2q %zmm2, %zmm4, %zmm5813; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm6 = [0,8,1,9,2,10,3,11]814; AVX512-FCP-NEXT: vpermt2q %zmm2, %zmm6, %zmm0815; AVX512-FCP-NEXT: vpermi2q %zmm3, %zmm1, %zmm4816; AVX512-FCP-NEXT: vpermt2q %zmm3, %zmm6, %zmm1817; AVX512-FCP-NEXT: vmovdqa64 %zmm1, 128(%rdx)818; AVX512-FCP-NEXT: vmovdqa64 %zmm4, 192(%rdx)819; AVX512-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)820; AVX512-FCP-NEXT: vmovdqa64 %zmm5, 64(%rdx)821; AVX512-FCP-NEXT: vzeroupper822; AVX512-FCP-NEXT: retq823;824; AVX512DQ-LABEL: store_i64_stride2_vf16:825; AVX512DQ: # %bb.0:826; AVX512DQ-NEXT: vmovdqa64 (%rdi), %zmm0827; AVX512DQ-NEXT: vmovdqa64 64(%rdi), %zmm1828; AVX512DQ-NEXT: vmovdqa64 (%rsi), %zmm2829; AVX512DQ-NEXT: vmovdqa64 64(%rsi), %zmm3830; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm4 = [4,12,5,13,6,14,7,15]831; AVX512DQ-NEXT: vmovdqa64 %zmm0, %zmm5832; AVX512DQ-NEXT: vpermt2q %zmm2, %zmm4, %zmm5833; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm6 = [0,8,1,9,2,10,3,11]834; AVX512DQ-NEXT: vpermt2q %zmm2, %zmm6, %zmm0835; AVX512DQ-NEXT: vpermi2q %zmm3, %zmm1, %zmm4836; AVX512DQ-NEXT: vpermt2q %zmm3, %zmm6, %zmm1837; AVX512DQ-NEXT: vmovdqa64 %zmm1, 128(%rdx)838; AVX512DQ-NEXT: vmovdqa64 %zmm4, 192(%rdx)839; AVX512DQ-NEXT: vmovdqa64 %zmm0, (%rdx)840; AVX512DQ-NEXT: vmovdqa64 %zmm5, 64(%rdx)841; AVX512DQ-NEXT: vzeroupper842; AVX512DQ-NEXT: retq843;844; AVX512DQ-FCP-LABEL: store_i64_stride2_vf16:845; AVX512DQ-FCP: # %bb.0:846; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdi), %zmm0847; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1848; AVX512DQ-FCP-NEXT: vmovdqa64 (%rsi), %zmm2849; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rsi), %zmm3850; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm4 = [4,12,5,13,6,14,7,15]851; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, %zmm5852; AVX512DQ-FCP-NEXT: vpermt2q %zmm2, %zmm4, %zmm5853; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm6 = [0,8,1,9,2,10,3,11]854; AVX512DQ-FCP-NEXT: vpermt2q %zmm2, %zmm6, %zmm0855; AVX512DQ-FCP-NEXT: vpermi2q %zmm3, %zmm1, %zmm4856; AVX512DQ-FCP-NEXT: vpermt2q %zmm3, %zmm6, %zmm1857; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, 128(%rdx)858; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, 192(%rdx)859; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)860; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm5, 64(%rdx)861; AVX512DQ-FCP-NEXT: vzeroupper862; AVX512DQ-FCP-NEXT: retq863;864; AVX512BW-LABEL: store_i64_stride2_vf16:865; AVX512BW: # %bb.0:866; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm0867; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm1868; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm2869; AVX512BW-NEXT: vmovdqa64 64(%rsi), %zmm3870; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm4 = [4,12,5,13,6,14,7,15]871; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm5872; AVX512BW-NEXT: vpermt2q %zmm2, %zmm4, %zmm5873; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm6 = [0,8,1,9,2,10,3,11]874; AVX512BW-NEXT: vpermt2q %zmm2, %zmm6, %zmm0875; AVX512BW-NEXT: vpermi2q %zmm3, %zmm1, %zmm4876; AVX512BW-NEXT: vpermt2q %zmm3, %zmm6, %zmm1877; AVX512BW-NEXT: vmovdqa64 %zmm1, 128(%rdx)878; AVX512BW-NEXT: vmovdqa64 %zmm4, 192(%rdx)879; AVX512BW-NEXT: vmovdqa64 %zmm0, (%rdx)880; AVX512BW-NEXT: vmovdqa64 %zmm5, 64(%rdx)881; AVX512BW-NEXT: vzeroupper882; AVX512BW-NEXT: retq883;884; AVX512BW-FCP-LABEL: store_i64_stride2_vf16:885; AVX512BW-FCP: # %bb.0:886; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm0887; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1888; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm2889; AVX512BW-FCP-NEXT: vmovdqa64 64(%rsi), %zmm3890; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm4 = [4,12,5,13,6,14,7,15]891; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm5892; AVX512BW-FCP-NEXT: vpermt2q %zmm2, %zmm4, %zmm5893; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm6 = [0,8,1,9,2,10,3,11]894; AVX512BW-FCP-NEXT: vpermt2q %zmm2, %zmm6, %zmm0895; AVX512BW-FCP-NEXT: vpermi2q %zmm3, %zmm1, %zmm4896; AVX512BW-FCP-NEXT: vpermt2q %zmm3, %zmm6, %zmm1897; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, 128(%rdx)898; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, 192(%rdx)899; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)900; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, 64(%rdx)901; AVX512BW-FCP-NEXT: vzeroupper902; AVX512BW-FCP-NEXT: retq903;904; AVX512DQ-BW-LABEL: store_i64_stride2_vf16:905; AVX512DQ-BW: # %bb.0:906; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm0907; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm1908; AVX512DQ-BW-NEXT: vmovdqa64 (%rsi), %zmm2909; AVX512DQ-BW-NEXT: vmovdqa64 64(%rsi), %zmm3910; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm4 = [4,12,5,13,6,14,7,15]911; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, %zmm5912; AVX512DQ-BW-NEXT: vpermt2q %zmm2, %zmm4, %zmm5913; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm6 = [0,8,1,9,2,10,3,11]914; AVX512DQ-BW-NEXT: vpermt2q %zmm2, %zmm6, %zmm0915; AVX512DQ-BW-NEXT: vpermi2q %zmm3, %zmm1, %zmm4916; AVX512DQ-BW-NEXT: vpermt2q %zmm3, %zmm6, %zmm1917; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, 128(%rdx)918; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, 192(%rdx)919; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, (%rdx)920; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, 64(%rdx)921; AVX512DQ-BW-NEXT: vzeroupper922; AVX512DQ-BW-NEXT: retq923;924; AVX512DQ-BW-FCP-LABEL: store_i64_stride2_vf16:925; AVX512DQ-BW-FCP: # %bb.0:926; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm0927; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1928; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm2929; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rsi), %zmm3930; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm4 = [4,12,5,13,6,14,7,15]931; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm5932; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm2, %zmm4, %zmm5933; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm6 = [0,8,1,9,2,10,3,11]934; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm2, %zmm6, %zmm0935; AVX512DQ-BW-FCP-NEXT: vpermi2q %zmm3, %zmm1, %zmm4936; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm3, %zmm6, %zmm1937; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, 128(%rdx)938; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, 192(%rdx)939; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)940; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, 64(%rdx)941; AVX512DQ-BW-FCP-NEXT: vzeroupper942; AVX512DQ-BW-FCP-NEXT: retq943 %in.vec0 = load <16 x i64>, ptr %in.vecptr0, align 64944 %in.vec1 = load <16 x i64>, ptr %in.vecptr1, align 64945 %1 = shufflevector <16 x i64> %in.vec0, <16 x i64> %in.vec1, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>946 %interleaved.vec = shufflevector <32 x i64> %1, <32 x i64> poison, <32 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>947 store <32 x i64> %interleaved.vec, ptr %out.vec, align 64948 ret void949}950 951define void @store_i64_stride2_vf32(ptr %in.vecptr0, ptr %in.vecptr1, ptr %out.vec) nounwind {952; SSE-LABEL: store_i64_stride2_vf32:953; SSE: # %bb.0:954; SSE-NEXT: subq $152, %rsp955; SSE-NEXT: movaps 112(%rdi), %xmm14956; SSE-NEXT: movaps 96(%rdi), %xmm13957; SSE-NEXT: movaps 80(%rdi), %xmm11958; SSE-NEXT: movaps 64(%rdi), %xmm10959; SSE-NEXT: movaps (%rdi), %xmm7960; SSE-NEXT: movaps 16(%rdi), %xmm8961; SSE-NEXT: movaps 32(%rdi), %xmm9962; SSE-NEXT: movaps 48(%rdi), %xmm12963; SSE-NEXT: movaps 96(%rsi), %xmm0964; SSE-NEXT: movaps 80(%rsi), %xmm1965; SSE-NEXT: movaps 64(%rsi), %xmm2966; SSE-NEXT: movaps (%rsi), %xmm3967; SSE-NEXT: movaps 16(%rsi), %xmm4968; SSE-NEXT: movaps 32(%rsi), %xmm5969; SSE-NEXT: movaps 48(%rsi), %xmm6970; SSE-NEXT: movaps %xmm7, %xmm15971; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm3[0]972; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill973; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm3[1]974; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill975; SSE-NEXT: movaps %xmm8, %xmm7976; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm4[0]977; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill978; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm4[1]979; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill980; SSE-NEXT: movaps %xmm9, %xmm4981; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm5[0]982; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill983; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm5[1]984; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill985; SSE-NEXT: movaps %xmm12, %xmm4986; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm6[0]987; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill988; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm6[1]989; SSE-NEXT: movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill990; SSE-NEXT: movaps %xmm10, %xmm3991; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm2[0]992; SSE-NEXT: movaps %xmm3, (%rsp) # 16-byte Spill993; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm2[1]994; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill995; SSE-NEXT: movaps %xmm11, %xmm2996; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]997; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill998; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm1[1]999; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1000; SSE-NEXT: movaps %xmm13, %xmm11001; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1002; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1003; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]1004; SSE-NEXT: movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1005; SSE-NEXT: movaps 112(%rsi), %xmm01006; SSE-NEXT: movaps %xmm14, %xmm11007; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1008; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1009; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm0[1]1010; SSE-NEXT: movaps %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1011; SSE-NEXT: movaps 128(%rdi), %xmm151012; SSE-NEXT: movaps 128(%rsi), %xmm01013; SSE-NEXT: movaps %xmm15, %xmm11014; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1015; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1016; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]1017; SSE-NEXT: movaps 144(%rdi), %xmm131018; SSE-NEXT: movaps 144(%rsi), %xmm01019; SSE-NEXT: movaps %xmm13, %xmm141020; SSE-NEXT: movlhps {{.*#+}} xmm14 = xmm14[0],xmm0[0]1021; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]1022; SSE-NEXT: movaps 160(%rdi), %xmm101023; SSE-NEXT: movaps 160(%rsi), %xmm01024; SSE-NEXT: movaps %xmm10, %xmm121025; SSE-NEXT: movlhps {{.*#+}} xmm12 = xmm12[0],xmm0[0]1026; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm0[1]1027; SSE-NEXT: movaps 176(%rdi), %xmm81028; SSE-NEXT: movaps 176(%rsi), %xmm01029; SSE-NEXT: movaps %xmm8, %xmm111030; SSE-NEXT: movlhps {{.*#+}} xmm11 = xmm11[0],xmm0[0]1031; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm0[1]1032; SSE-NEXT: movaps 192(%rdi), %xmm61033; SSE-NEXT: movaps 192(%rsi), %xmm01034; SSE-NEXT: movaps %xmm6, %xmm91035; SSE-NEXT: movlhps {{.*#+}} xmm9 = xmm9[0],xmm0[0]1036; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm0[1]1037; SSE-NEXT: movaps 208(%rdi), %xmm51038; SSE-NEXT: movaps 208(%rsi), %xmm11039; SSE-NEXT: movaps %xmm5, %xmm71040; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm1[0]1041; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]1042; SSE-NEXT: movaps 224(%rdi), %xmm11043; SSE-NEXT: movaps 224(%rsi), %xmm31044; SSE-NEXT: movaps %xmm1, %xmm21045; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm3[0]1046; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm3[1]1047; SSE-NEXT: movaps 240(%rdi), %xmm31048; SSE-NEXT: movaps 240(%rsi), %xmm41049; SSE-NEXT: movaps %xmm3, %xmm01050; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm4[0]1051; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm4[1]1052; SSE-NEXT: movaps %xmm3, 496(%rdx)1053; SSE-NEXT: movaps %xmm0, 480(%rdx)1054; SSE-NEXT: movaps %xmm1, 464(%rdx)1055; SSE-NEXT: movaps %xmm2, 448(%rdx)1056; SSE-NEXT: movaps %xmm5, 432(%rdx)1057; SSE-NEXT: movaps %xmm7, 416(%rdx)1058; SSE-NEXT: movaps %xmm6, 400(%rdx)1059; SSE-NEXT: movaps %xmm9, 384(%rdx)1060; SSE-NEXT: movaps %xmm8, 368(%rdx)1061; SSE-NEXT: movaps %xmm11, 352(%rdx)1062; SSE-NEXT: movaps %xmm10, 336(%rdx)1063; SSE-NEXT: movaps %xmm12, 320(%rdx)1064; SSE-NEXT: movaps %xmm13, 304(%rdx)1065; SSE-NEXT: movaps %xmm14, 288(%rdx)1066; SSE-NEXT: movaps %xmm15, 272(%rdx)1067; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1068; SSE-NEXT: movaps %xmm0, 256(%rdx)1069; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1070; SSE-NEXT: movaps %xmm0, 240(%rdx)1071; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1072; SSE-NEXT: movaps %xmm0, 224(%rdx)1073; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1074; SSE-NEXT: movaps %xmm0, 208(%rdx)1075; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1076; SSE-NEXT: movaps %xmm0, 192(%rdx)1077; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1078; SSE-NEXT: movaps %xmm0, 176(%rdx)1079; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1080; SSE-NEXT: movaps %xmm0, 160(%rdx)1081; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1082; SSE-NEXT: movaps %xmm0, 144(%rdx)1083; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload1084; SSE-NEXT: movaps %xmm0, 128(%rdx)1085; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1086; SSE-NEXT: movaps %xmm0, 112(%rdx)1087; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1088; SSE-NEXT: movaps %xmm0, 96(%rdx)1089; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1090; SSE-NEXT: movaps %xmm0, 80(%rdx)1091; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1092; SSE-NEXT: movaps %xmm0, 64(%rdx)1093; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1094; SSE-NEXT: movaps %xmm0, 48(%rdx)1095; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1096; SSE-NEXT: movaps %xmm0, 32(%rdx)1097; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1098; SSE-NEXT: movaps %xmm0, 16(%rdx)1099; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1100; SSE-NEXT: movaps %xmm0, (%rdx)1101; SSE-NEXT: addq $152, %rsp1102; SSE-NEXT: retq1103;1104; AVX-LABEL: store_i64_stride2_vf32:1105; AVX: # %bb.0:1106; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]1107; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]1108; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]1109; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1110; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]1111; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm2 = mem[0,1,0,1]1112; AVX-NEXT: vshufpd {{.*#+}} ymm1 = ymm2[0],ymm1[0],ymm2[3],ymm1[3]1113; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm2 = mem[0,1,0,1]1114; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm3 = mem[0,1,0,1]1115; AVX-NEXT: vshufpd {{.*#+}} ymm2 = ymm3[0],ymm2[0],ymm3[3],ymm2[3]1116; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm3 = mem[0,1,0,1]1117; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm4 = mem[0,1,0,1]1118; AVX-NEXT: vshufpd {{.*#+}} ymm3 = ymm4[0],ymm3[0],ymm4[3],ymm3[3]1119; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm4 = mem[0,1,0,1]1120; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm5 = mem[0,1,0,1]1121; AVX-NEXT: vshufpd {{.*#+}} ymm4 = ymm5[0],ymm4[0],ymm5[3],ymm4[3]1122; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm5 = mem[0,1,0,1]1123; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm6 = mem[0,1,0,1]1124; AVX-NEXT: vshufpd {{.*#+}} ymm5 = ymm6[0],ymm5[0],ymm6[3],ymm5[3]1125; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm6 = mem[0,1,0,1]1126; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm7 = mem[0,1,0,1]1127; AVX-NEXT: vshufpd {{.*#+}} ymm6 = ymm7[0],ymm6[0],ymm7[3],ymm6[3]1128; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm7 = mem[0,1,0,1]1129; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm8 = mem[0,1,0,1]1130; AVX-NEXT: vshufpd {{.*#+}} ymm7 = ymm8[0],ymm7[0],ymm8[3],ymm7[3]1131; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm8 = mem[0,1,0,1]1132; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm9 = mem[0,1,0,1]1133; AVX-NEXT: vshufpd {{.*#+}} ymm8 = ymm9[0],ymm8[0],ymm9[3],ymm8[3]1134; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm9 = mem[0,1,0,1]1135; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm10 = mem[0,1,0,1]1136; AVX-NEXT: vshufpd {{.*#+}} ymm9 = ymm10[0],ymm9[0],ymm10[3],ymm9[3]1137; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm10 = mem[0,1,0,1]1138; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm11 = mem[0,1,0,1]1139; AVX-NEXT: vshufpd {{.*#+}} ymm10 = ymm11[0],ymm10[0],ymm11[3],ymm10[3]1140; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm11 = mem[0,1,0,1]1141; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm12 = mem[0,1,0,1]1142; AVX-NEXT: vshufpd {{.*#+}} ymm11 = ymm12[0],ymm11[0],ymm12[3],ymm11[3]1143; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm12 = mem[0,1,0,1]1144; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm13 = mem[0,1,0,1]1145; AVX-NEXT: vshufpd {{.*#+}} ymm12 = ymm13[0],ymm12[0],ymm13[3],ymm12[3]1146; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm13 = mem[0,1,0,1]1147; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm14 = mem[0,1,0,1]1148; AVX-NEXT: vshufpd {{.*#+}} ymm13 = ymm14[0],ymm13[0],ymm14[3],ymm13[3]1149; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm14 = mem[0,1,0,1]1150; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm15 = mem[0,1,0,1]1151; AVX-NEXT: vshufpd {{.*#+}} ymm14 = ymm15[0],ymm14[0],ymm15[3],ymm14[3]1152; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm15 = mem[0,1,0,1]1153; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]1154; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm0[0],ymm15[0],ymm0[3],ymm15[3]1155; AVX-NEXT: vmovapd %ymm0, 416(%rdx)1156; AVX-NEXT: vmovapd %ymm14, 352(%rdx)1157; AVX-NEXT: vmovapd %ymm13, 224(%rdx)1158; AVX-NEXT: vmovapd %ymm12, 32(%rdx)1159; AVX-NEXT: vmovapd %ymm11, 96(%rdx)1160; AVX-NEXT: vmovapd %ymm10, 160(%rdx)1161; AVX-NEXT: vmovapd %ymm9, 384(%rdx)1162; AVX-NEXT: vmovapd %ymm8, 320(%rdx)1163; AVX-NEXT: vmovapd %ymm7, 192(%rdx)1164; AVX-NEXT: vmovapd %ymm6, 128(%rdx)1165; AVX-NEXT: vmovapd %ymm5, 64(%rdx)1166; AVX-NEXT: vmovapd %ymm4, (%rdx)1167; AVX-NEXT: vmovapd %ymm3, 288(%rdx)1168; AVX-NEXT: vmovapd %ymm2, 256(%rdx)1169; AVX-NEXT: vmovapd %ymm1, 448(%rdx)1170; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1171; AVX-NEXT: vmovaps %ymm0, 480(%rdx)1172; AVX-NEXT: vzeroupper1173; AVX-NEXT: retq1174;1175; AVX2-LABEL: store_i64_stride2_vf32:1176; AVX2: # %bb.0:1177; AVX2-NEXT: vmovaps 192(%rdi), %ymm21178; AVX2-NEXT: vmovaps 160(%rdi), %ymm51179; AVX2-NEXT: vmovaps 128(%rdi), %ymm91180; AVX2-NEXT: vmovaps (%rdi), %ymm11181; AVX2-NEXT: vmovaps 32(%rdi), %ymm41182; AVX2-NEXT: vmovaps 64(%rdi), %ymm81183; AVX2-NEXT: vmovaps 96(%rdi), %ymm121184; AVX2-NEXT: vmovaps 192(%rsi), %ymm61185; AVX2-NEXT: vmovaps 160(%rsi), %ymm101186; AVX2-NEXT: vmovaps 128(%rsi), %ymm131187; AVX2-NEXT: vmovaps (%rsi), %ymm31188; AVX2-NEXT: vmovaps 32(%rsi), %ymm71189; AVX2-NEXT: vmovaps 64(%rsi), %ymm111190; AVX2-NEXT: vmovaps 96(%rsi), %ymm141191; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm3[0,2,2,3]1192; AVX2-NEXT: vpermpd {{.*#+}} ymm15 = ymm1[2,1,3,3]1193; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm15[0,1],ymm0[2,3],ymm15[4,5],ymm0[6,7]1194; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1195; AVX2-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,0,2,1]1196; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]1197; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm3[2,3],ymm1[4,5],ymm3[6,7]1198; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1199; AVX2-NEXT: vpermpd {{.*#+}} ymm3 = ymm7[0,2,2,3]1200; AVX2-NEXT: vpermpd {{.*#+}} ymm15 = ymm4[2,1,3,3]1201; AVX2-NEXT: vblendps {{.*#+}} ymm3 = ymm15[0,1],ymm3[2,3],ymm15[4,5],ymm3[6,7]1202; AVX2-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[0,0,2,1]1203; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,1,1,3]1204; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1],ymm7[2,3],ymm4[4,5],ymm7[6,7]1205; AVX2-NEXT: vpermpd {{.*#+}} ymm7 = ymm11[0,2,2,3]1206; AVX2-NEXT: vpermpd {{.*#+}} ymm15 = ymm8[2,1,3,3]1207; AVX2-NEXT: vblendps {{.*#+}} ymm7 = ymm15[0,1],ymm7[2,3],ymm15[4,5],ymm7[6,7]1208; AVX2-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,0,2,1]1209; AVX2-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,1,1,3]1210; AVX2-NEXT: vblendps {{.*#+}} ymm8 = ymm8[0,1],ymm11[2,3],ymm8[4,5],ymm11[6,7]1211; AVX2-NEXT: vpermpd {{.*#+}} ymm11 = ymm14[0,2,2,3]1212; AVX2-NEXT: vpermpd {{.*#+}} ymm15 = ymm12[2,1,3,3]1213; AVX2-NEXT: vblendps {{.*#+}} ymm11 = ymm15[0,1],ymm11[2,3],ymm15[4,5],ymm11[6,7]1214; AVX2-NEXT: vpermpd {{.*#+}} ymm14 = ymm14[0,0,2,1]1215; AVX2-NEXT: vpermpd {{.*#+}} ymm12 = ymm12[0,1,1,3]1216; AVX2-NEXT: vblendps {{.*#+}} ymm12 = ymm12[0,1],ymm14[2,3],ymm12[4,5],ymm14[6,7]1217; AVX2-NEXT: vpermpd {{.*#+}} ymm14 = ymm13[0,2,2,3]1218; AVX2-NEXT: vpermpd {{.*#+}} ymm15 = ymm9[2,1,3,3]1219; AVX2-NEXT: vblendps {{.*#+}} ymm14 = ymm15[0,1],ymm14[2,3],ymm15[4,5],ymm14[6,7]1220; AVX2-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,0,2,1]1221; AVX2-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,1,1,3]1222; AVX2-NEXT: vblendps {{.*#+}} ymm9 = ymm9[0,1],ymm13[2,3],ymm9[4,5],ymm13[6,7]1223; AVX2-NEXT: vpermpd {{.*#+}} ymm13 = ymm10[0,2,2,3]1224; AVX2-NEXT: vpermpd {{.*#+}} ymm15 = ymm5[2,1,3,3]1225; AVX2-NEXT: vblendps {{.*#+}} ymm13 = ymm15[0,1],ymm13[2,3],ymm15[4,5],ymm13[6,7]1226; AVX2-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,0,2,1]1227; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]1228; AVX2-NEXT: vblendps {{.*#+}} ymm5 = ymm5[0,1],ymm10[2,3],ymm5[4,5],ymm10[6,7]1229; AVX2-NEXT: vpermpd {{.*#+}} ymm10 = ymm6[0,2,2,3]1230; AVX2-NEXT: vpermpd {{.*#+}} ymm15 = ymm2[2,1,3,3]1231; AVX2-NEXT: vblendps {{.*#+}} ymm10 = ymm15[0,1],ymm10[2,3],ymm15[4,5],ymm10[6,7]1232; AVX2-NEXT: vmovaps 224(%rdi), %ymm151233; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,0,2,1]1234; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,1,1,3]1235; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm6[2,3],ymm2[4,5],ymm6[6,7]1236; AVX2-NEXT: vmovaps 224(%rsi), %ymm61237; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm6[0,2,2,3]1238; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm15[2,1,3,3]1239; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]1240; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm6[0,0,2,1]1241; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm15[0,1,1,3]1242; AVX2-NEXT: vblendps {{.*#+}} ymm1 = ymm6[0,1],ymm1[2,3],ymm6[4,5],ymm1[6,7]1243; AVX2-NEXT: vmovaps %ymm1, 448(%rdx)1244; AVX2-NEXT: vmovaps %ymm0, 480(%rdx)1245; AVX2-NEXT: vmovaps %ymm2, 384(%rdx)1246; AVX2-NEXT: vmovaps %ymm10, 416(%rdx)1247; AVX2-NEXT: vmovaps %ymm5, 320(%rdx)1248; AVX2-NEXT: vmovaps %ymm13, 352(%rdx)1249; AVX2-NEXT: vmovaps %ymm9, 256(%rdx)1250; AVX2-NEXT: vmovaps %ymm14, 288(%rdx)1251; AVX2-NEXT: vmovaps %ymm12, 192(%rdx)1252; AVX2-NEXT: vmovaps %ymm11, 224(%rdx)1253; AVX2-NEXT: vmovaps %ymm8, 128(%rdx)1254; AVX2-NEXT: vmovaps %ymm7, 160(%rdx)1255; AVX2-NEXT: vmovaps %ymm4, 64(%rdx)1256; AVX2-NEXT: vmovaps %ymm3, 96(%rdx)1257; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1258; AVX2-NEXT: vmovaps %ymm0, (%rdx)1259; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1260; AVX2-NEXT: vmovaps %ymm0, 32(%rdx)1261; AVX2-NEXT: vzeroupper1262; AVX2-NEXT: retq1263;1264; AVX2-FP-LABEL: store_i64_stride2_vf32:1265; AVX2-FP: # %bb.0:1266; AVX2-FP-NEXT: vmovaps 192(%rdi), %ymm21267; AVX2-FP-NEXT: vmovaps 160(%rdi), %ymm51268; AVX2-FP-NEXT: vmovaps 128(%rdi), %ymm91269; AVX2-FP-NEXT: vmovaps (%rdi), %ymm11270; AVX2-FP-NEXT: vmovaps 32(%rdi), %ymm41271; AVX2-FP-NEXT: vmovaps 64(%rdi), %ymm81272; AVX2-FP-NEXT: vmovaps 96(%rdi), %ymm121273; AVX2-FP-NEXT: vmovaps 192(%rsi), %ymm61274; AVX2-FP-NEXT: vmovaps 160(%rsi), %ymm101275; AVX2-FP-NEXT: vmovaps 128(%rsi), %ymm131276; AVX2-FP-NEXT: vmovaps (%rsi), %ymm31277; AVX2-FP-NEXT: vmovaps 32(%rsi), %ymm71278; AVX2-FP-NEXT: vmovaps 64(%rsi), %ymm111279; AVX2-FP-NEXT: vmovaps 96(%rsi), %ymm141280; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm3[0,2,2,3]1281; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm15 = ymm1[2,1,3,3]1282; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm15[0,1],ymm0[2,3],ymm15[4,5],ymm0[6,7]1283; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1284; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,0,2,1]1285; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]1286; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm3[2,3],ymm1[4,5],ymm3[6,7]1287; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1288; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm3 = ymm7[0,2,2,3]1289; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm15 = ymm4[2,1,3,3]1290; AVX2-FP-NEXT: vblendps {{.*#+}} ymm3 = ymm15[0,1],ymm3[2,3],ymm15[4,5],ymm3[6,7]1291; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[0,0,2,1]1292; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,1,1,3]1293; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1],ymm7[2,3],ymm4[4,5],ymm7[6,7]1294; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm7 = ymm11[0,2,2,3]1295; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm15 = ymm8[2,1,3,3]1296; AVX2-FP-NEXT: vblendps {{.*#+}} ymm7 = ymm15[0,1],ymm7[2,3],ymm15[4,5],ymm7[6,7]1297; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,0,2,1]1298; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,1,1,3]1299; AVX2-FP-NEXT: vblendps {{.*#+}} ymm8 = ymm8[0,1],ymm11[2,3],ymm8[4,5],ymm11[6,7]1300; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm11 = ymm14[0,2,2,3]1301; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm15 = ymm12[2,1,3,3]1302; AVX2-FP-NEXT: vblendps {{.*#+}} ymm11 = ymm15[0,1],ymm11[2,3],ymm15[4,5],ymm11[6,7]1303; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm14 = ymm14[0,0,2,1]1304; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm12 = ymm12[0,1,1,3]1305; AVX2-FP-NEXT: vblendps {{.*#+}} ymm12 = ymm12[0,1],ymm14[2,3],ymm12[4,5],ymm14[6,7]1306; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm14 = ymm13[0,2,2,3]1307; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm15 = ymm9[2,1,3,3]1308; AVX2-FP-NEXT: vblendps {{.*#+}} ymm14 = ymm15[0,1],ymm14[2,3],ymm15[4,5],ymm14[6,7]1309; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,0,2,1]1310; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,1,1,3]1311; AVX2-FP-NEXT: vblendps {{.*#+}} ymm9 = ymm9[0,1],ymm13[2,3],ymm9[4,5],ymm13[6,7]1312; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm13 = ymm10[0,2,2,3]1313; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm15 = ymm5[2,1,3,3]1314; AVX2-FP-NEXT: vblendps {{.*#+}} ymm13 = ymm15[0,1],ymm13[2,3],ymm15[4,5],ymm13[6,7]1315; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,0,2,1]1316; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]1317; AVX2-FP-NEXT: vblendps {{.*#+}} ymm5 = ymm5[0,1],ymm10[2,3],ymm5[4,5],ymm10[6,7]1318; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm10 = ymm6[0,2,2,3]1319; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm15 = ymm2[2,1,3,3]1320; AVX2-FP-NEXT: vblendps {{.*#+}} ymm10 = ymm15[0,1],ymm10[2,3],ymm15[4,5],ymm10[6,7]1321; AVX2-FP-NEXT: vmovaps 224(%rdi), %ymm151322; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,0,2,1]1323; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,1,1,3]1324; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm6[2,3],ymm2[4,5],ymm6[6,7]1325; AVX2-FP-NEXT: vmovaps 224(%rsi), %ymm61326; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm6[0,2,2,3]1327; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm15[2,1,3,3]1328; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]1329; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm6[0,0,2,1]1330; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm15[0,1,1,3]1331; AVX2-FP-NEXT: vblendps {{.*#+}} ymm1 = ymm6[0,1],ymm1[2,3],ymm6[4,5],ymm1[6,7]1332; AVX2-FP-NEXT: vmovaps %ymm1, 448(%rdx)1333; AVX2-FP-NEXT: vmovaps %ymm0, 480(%rdx)1334; AVX2-FP-NEXT: vmovaps %ymm2, 384(%rdx)1335; AVX2-FP-NEXT: vmovaps %ymm10, 416(%rdx)1336; AVX2-FP-NEXT: vmovaps %ymm5, 320(%rdx)1337; AVX2-FP-NEXT: vmovaps %ymm13, 352(%rdx)1338; AVX2-FP-NEXT: vmovaps %ymm9, 256(%rdx)1339; AVX2-FP-NEXT: vmovaps %ymm14, 288(%rdx)1340; AVX2-FP-NEXT: vmovaps %ymm12, 192(%rdx)1341; AVX2-FP-NEXT: vmovaps %ymm11, 224(%rdx)1342; AVX2-FP-NEXT: vmovaps %ymm8, 128(%rdx)1343; AVX2-FP-NEXT: vmovaps %ymm7, 160(%rdx)1344; AVX2-FP-NEXT: vmovaps %ymm4, 64(%rdx)1345; AVX2-FP-NEXT: vmovaps %ymm3, 96(%rdx)1346; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1347; AVX2-FP-NEXT: vmovaps %ymm0, (%rdx)1348; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1349; AVX2-FP-NEXT: vmovaps %ymm0, 32(%rdx)1350; AVX2-FP-NEXT: vzeroupper1351; AVX2-FP-NEXT: retq1352;1353; AVX2-FCP-LABEL: store_i64_stride2_vf32:1354; AVX2-FCP: # %bb.0:1355; AVX2-FCP-NEXT: vmovaps 192(%rdi), %ymm21356; AVX2-FCP-NEXT: vmovaps 160(%rdi), %ymm51357; AVX2-FCP-NEXT: vmovaps 128(%rdi), %ymm91358; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm11359; AVX2-FCP-NEXT: vmovaps 32(%rdi), %ymm41360; AVX2-FCP-NEXT: vmovaps 64(%rdi), %ymm81361; AVX2-FCP-NEXT: vmovaps 96(%rdi), %ymm121362; AVX2-FCP-NEXT: vmovaps 192(%rsi), %ymm61363; AVX2-FCP-NEXT: vmovaps 160(%rsi), %ymm101364; AVX2-FCP-NEXT: vmovaps 128(%rsi), %ymm131365; AVX2-FCP-NEXT: vmovaps (%rsi), %ymm31366; AVX2-FCP-NEXT: vmovaps 32(%rsi), %ymm71367; AVX2-FCP-NEXT: vmovaps 64(%rsi), %ymm111368; AVX2-FCP-NEXT: vmovaps 96(%rsi), %ymm141369; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm3[0,2,2,3]1370; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm15 = ymm1[2,1,3,3]1371; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm15[0,1],ymm0[2,3],ymm15[4,5],ymm0[6,7]1372; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1373; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm3 = ymm3[0,0,2,1]1374; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,1,1,3]1375; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm3[2,3],ymm1[4,5],ymm3[6,7]1376; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1377; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm3 = ymm7[0,2,2,3]1378; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm15 = ymm4[2,1,3,3]1379; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm3 = ymm15[0,1],ymm3[2,3],ymm15[4,5],ymm3[6,7]1380; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[0,0,2,1]1381; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,1,1,3]1382; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1],ymm7[2,3],ymm4[4,5],ymm7[6,7]1383; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm7 = ymm11[0,2,2,3]1384; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm15 = ymm8[2,1,3,3]1385; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm7 = ymm15[0,1],ymm7[2,3],ymm15[4,5],ymm7[6,7]1386; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,0,2,1]1387; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,1,1,3]1388; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm8 = ymm8[0,1],ymm11[2,3],ymm8[4,5],ymm11[6,7]1389; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm11 = ymm14[0,2,2,3]1390; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm15 = ymm12[2,1,3,3]1391; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm11 = ymm15[0,1],ymm11[2,3],ymm15[4,5],ymm11[6,7]1392; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm14 = ymm14[0,0,2,1]1393; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm12 = ymm12[0,1,1,3]1394; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm12 = ymm12[0,1],ymm14[2,3],ymm12[4,5],ymm14[6,7]1395; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm14 = ymm13[0,2,2,3]1396; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm15 = ymm9[2,1,3,3]1397; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm14 = ymm15[0,1],ymm14[2,3],ymm15[4,5],ymm14[6,7]1398; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,0,2,1]1399; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,1,1,3]1400; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm9 = ymm9[0,1],ymm13[2,3],ymm9[4,5],ymm13[6,7]1401; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm13 = ymm10[0,2,2,3]1402; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm15 = ymm5[2,1,3,3]1403; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm13 = ymm15[0,1],ymm13[2,3],ymm15[4,5],ymm13[6,7]1404; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,0,2,1]1405; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,1,1,3]1406; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm5 = ymm5[0,1],ymm10[2,3],ymm5[4,5],ymm10[6,7]1407; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm10 = ymm6[0,2,2,3]1408; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm15 = ymm2[2,1,3,3]1409; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm10 = ymm15[0,1],ymm10[2,3],ymm15[4,5],ymm10[6,7]1410; AVX2-FCP-NEXT: vmovaps 224(%rdi), %ymm151411; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,0,2,1]1412; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,1,1,3]1413; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm6[2,3],ymm2[4,5],ymm6[6,7]1414; AVX2-FCP-NEXT: vmovaps 224(%rsi), %ymm61415; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm6[0,2,2,3]1416; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm15[2,1,3,3]1417; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]1418; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm6[0,0,2,1]1419; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm15[0,1,1,3]1420; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm1 = ymm6[0,1],ymm1[2,3],ymm6[4,5],ymm1[6,7]1421; AVX2-FCP-NEXT: vmovaps %ymm1, 448(%rdx)1422; AVX2-FCP-NEXT: vmovaps %ymm0, 480(%rdx)1423; AVX2-FCP-NEXT: vmovaps %ymm2, 384(%rdx)1424; AVX2-FCP-NEXT: vmovaps %ymm10, 416(%rdx)1425; AVX2-FCP-NEXT: vmovaps %ymm5, 320(%rdx)1426; AVX2-FCP-NEXT: vmovaps %ymm13, 352(%rdx)1427; AVX2-FCP-NEXT: vmovaps %ymm9, 256(%rdx)1428; AVX2-FCP-NEXT: vmovaps %ymm14, 288(%rdx)1429; AVX2-FCP-NEXT: vmovaps %ymm12, 192(%rdx)1430; AVX2-FCP-NEXT: vmovaps %ymm11, 224(%rdx)1431; AVX2-FCP-NEXT: vmovaps %ymm8, 128(%rdx)1432; AVX2-FCP-NEXT: vmovaps %ymm7, 160(%rdx)1433; AVX2-FCP-NEXT: vmovaps %ymm4, 64(%rdx)1434; AVX2-FCP-NEXT: vmovaps %ymm3, 96(%rdx)1435; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1436; AVX2-FCP-NEXT: vmovaps %ymm0, (%rdx)1437; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1438; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%rdx)1439; AVX2-FCP-NEXT: vzeroupper1440; AVX2-FCP-NEXT: retq1441;1442; AVX512-LABEL: store_i64_stride2_vf32:1443; AVX512: # %bb.0:1444; AVX512-NEXT: vmovdqa64 (%rdi), %zmm01445; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm11446; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm21447; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm31448; AVX512-NEXT: vmovdqa64 (%rsi), %zmm41449; AVX512-NEXT: vmovdqa64 64(%rsi), %zmm51450; AVX512-NEXT: vmovdqa64 128(%rsi), %zmm61451; AVX512-NEXT: vmovdqa64 192(%rsi), %zmm71452; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm8 = [4,12,5,13,6,14,7,15]1453; AVX512-NEXT: vmovdqa64 %zmm0, %zmm91454; AVX512-NEXT: vpermt2q %zmm4, %zmm8, %zmm91455; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm10 = [0,8,1,9,2,10,3,11]1456; AVX512-NEXT: vpermt2q %zmm4, %zmm10, %zmm01457; AVX512-NEXT: vmovdqa64 %zmm1, %zmm41458; AVX512-NEXT: vpermt2q %zmm5, %zmm8, %zmm41459; AVX512-NEXT: vpermt2q %zmm5, %zmm10, %zmm11460; AVX512-NEXT: vmovdqa64 %zmm2, %zmm51461; AVX512-NEXT: vpermt2q %zmm6, %zmm8, %zmm51462; AVX512-NEXT: vpermt2q %zmm6, %zmm10, %zmm21463; AVX512-NEXT: vpermi2q %zmm7, %zmm3, %zmm81464; AVX512-NEXT: vpermt2q %zmm7, %zmm10, %zmm31465; AVX512-NEXT: vmovdqa64 %zmm3, 384(%rdx)1466; AVX512-NEXT: vmovdqa64 %zmm8, 448(%rdx)1467; AVX512-NEXT: vmovdqa64 %zmm2, 256(%rdx)1468; AVX512-NEXT: vmovdqa64 %zmm5, 320(%rdx)1469; AVX512-NEXT: vmovdqa64 %zmm1, 128(%rdx)1470; AVX512-NEXT: vmovdqa64 %zmm4, 192(%rdx)1471; AVX512-NEXT: vmovdqa64 %zmm0, (%rdx)1472; AVX512-NEXT: vmovdqa64 %zmm9, 64(%rdx)1473; AVX512-NEXT: vzeroupper1474; AVX512-NEXT: retq1475;1476; AVX512-FCP-LABEL: store_i64_stride2_vf32:1477; AVX512-FCP: # %bb.0:1478; AVX512-FCP-NEXT: vmovdqa64 (%rdi), %zmm01479; AVX512-FCP-NEXT: vmovdqa64 64(%rdi), %zmm11480; AVX512-FCP-NEXT: vmovdqa64 128(%rdi), %zmm21481; AVX512-FCP-NEXT: vmovdqa64 192(%rdi), %zmm31482; AVX512-FCP-NEXT: vmovdqa64 (%rsi), %zmm41483; AVX512-FCP-NEXT: vmovdqa64 64(%rsi), %zmm51484; AVX512-FCP-NEXT: vmovdqa64 128(%rsi), %zmm61485; AVX512-FCP-NEXT: vmovdqa64 192(%rsi), %zmm71486; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm8 = [4,12,5,13,6,14,7,15]1487; AVX512-FCP-NEXT: vmovdqa64 %zmm0, %zmm91488; AVX512-FCP-NEXT: vpermt2q %zmm4, %zmm8, %zmm91489; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm10 = [0,8,1,9,2,10,3,11]1490; AVX512-FCP-NEXT: vpermt2q %zmm4, %zmm10, %zmm01491; AVX512-FCP-NEXT: vmovdqa64 %zmm1, %zmm41492; AVX512-FCP-NEXT: vpermt2q %zmm5, %zmm8, %zmm41493; AVX512-FCP-NEXT: vpermt2q %zmm5, %zmm10, %zmm11494; AVX512-FCP-NEXT: vmovdqa64 %zmm2, %zmm51495; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm8, %zmm51496; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm10, %zmm21497; AVX512-FCP-NEXT: vpermi2q %zmm7, %zmm3, %zmm81498; AVX512-FCP-NEXT: vpermt2q %zmm7, %zmm10, %zmm31499; AVX512-FCP-NEXT: vmovdqa64 %zmm3, 384(%rdx)1500; AVX512-FCP-NEXT: vmovdqa64 %zmm8, 448(%rdx)1501; AVX512-FCP-NEXT: vmovdqa64 %zmm2, 256(%rdx)1502; AVX512-FCP-NEXT: vmovdqa64 %zmm5, 320(%rdx)1503; AVX512-FCP-NEXT: vmovdqa64 %zmm1, 128(%rdx)1504; AVX512-FCP-NEXT: vmovdqa64 %zmm4, 192(%rdx)1505; AVX512-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)1506; AVX512-FCP-NEXT: vmovdqa64 %zmm9, 64(%rdx)1507; AVX512-FCP-NEXT: vzeroupper1508; AVX512-FCP-NEXT: retq1509;1510; AVX512DQ-LABEL: store_i64_stride2_vf32:1511; AVX512DQ: # %bb.0:1512; AVX512DQ-NEXT: vmovdqa64 (%rdi), %zmm01513; AVX512DQ-NEXT: vmovdqa64 64(%rdi), %zmm11514; AVX512DQ-NEXT: vmovdqa64 128(%rdi), %zmm21515; AVX512DQ-NEXT: vmovdqa64 192(%rdi), %zmm31516; AVX512DQ-NEXT: vmovdqa64 (%rsi), %zmm41517; AVX512DQ-NEXT: vmovdqa64 64(%rsi), %zmm51518; AVX512DQ-NEXT: vmovdqa64 128(%rsi), %zmm61519; AVX512DQ-NEXT: vmovdqa64 192(%rsi), %zmm71520; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm8 = [4,12,5,13,6,14,7,15]1521; AVX512DQ-NEXT: vmovdqa64 %zmm0, %zmm91522; AVX512DQ-NEXT: vpermt2q %zmm4, %zmm8, %zmm91523; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm10 = [0,8,1,9,2,10,3,11]1524; AVX512DQ-NEXT: vpermt2q %zmm4, %zmm10, %zmm01525; AVX512DQ-NEXT: vmovdqa64 %zmm1, %zmm41526; AVX512DQ-NEXT: vpermt2q %zmm5, %zmm8, %zmm41527; AVX512DQ-NEXT: vpermt2q %zmm5, %zmm10, %zmm11528; AVX512DQ-NEXT: vmovdqa64 %zmm2, %zmm51529; AVX512DQ-NEXT: vpermt2q %zmm6, %zmm8, %zmm51530; AVX512DQ-NEXT: vpermt2q %zmm6, %zmm10, %zmm21531; AVX512DQ-NEXT: vpermi2q %zmm7, %zmm3, %zmm81532; AVX512DQ-NEXT: vpermt2q %zmm7, %zmm10, %zmm31533; AVX512DQ-NEXT: vmovdqa64 %zmm3, 384(%rdx)1534; AVX512DQ-NEXT: vmovdqa64 %zmm8, 448(%rdx)1535; AVX512DQ-NEXT: vmovdqa64 %zmm2, 256(%rdx)1536; AVX512DQ-NEXT: vmovdqa64 %zmm5, 320(%rdx)1537; AVX512DQ-NEXT: vmovdqa64 %zmm1, 128(%rdx)1538; AVX512DQ-NEXT: vmovdqa64 %zmm4, 192(%rdx)1539; AVX512DQ-NEXT: vmovdqa64 %zmm0, (%rdx)1540; AVX512DQ-NEXT: vmovdqa64 %zmm9, 64(%rdx)1541; AVX512DQ-NEXT: vzeroupper1542; AVX512DQ-NEXT: retq1543;1544; AVX512DQ-FCP-LABEL: store_i64_stride2_vf32:1545; AVX512DQ-FCP: # %bb.0:1546; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdi), %zmm01547; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdi), %zmm11548; AVX512DQ-FCP-NEXT: vmovdqa64 128(%rdi), %zmm21549; AVX512DQ-FCP-NEXT: vmovdqa64 192(%rdi), %zmm31550; AVX512DQ-FCP-NEXT: vmovdqa64 (%rsi), %zmm41551; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rsi), %zmm51552; AVX512DQ-FCP-NEXT: vmovdqa64 128(%rsi), %zmm61553; AVX512DQ-FCP-NEXT: vmovdqa64 192(%rsi), %zmm71554; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm8 = [4,12,5,13,6,14,7,15]1555; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, %zmm91556; AVX512DQ-FCP-NEXT: vpermt2q %zmm4, %zmm8, %zmm91557; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm10 = [0,8,1,9,2,10,3,11]1558; AVX512DQ-FCP-NEXT: vpermt2q %zmm4, %zmm10, %zmm01559; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, %zmm41560; AVX512DQ-FCP-NEXT: vpermt2q %zmm5, %zmm8, %zmm41561; AVX512DQ-FCP-NEXT: vpermt2q %zmm5, %zmm10, %zmm11562; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, %zmm51563; AVX512DQ-FCP-NEXT: vpermt2q %zmm6, %zmm8, %zmm51564; AVX512DQ-FCP-NEXT: vpermt2q %zmm6, %zmm10, %zmm21565; AVX512DQ-FCP-NEXT: vpermi2q %zmm7, %zmm3, %zmm81566; AVX512DQ-FCP-NEXT: vpermt2q %zmm7, %zmm10, %zmm31567; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, 384(%rdx)1568; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm8, 448(%rdx)1569; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, 256(%rdx)1570; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm5, 320(%rdx)1571; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, 128(%rdx)1572; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, 192(%rdx)1573; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)1574; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm9, 64(%rdx)1575; AVX512DQ-FCP-NEXT: vzeroupper1576; AVX512DQ-FCP-NEXT: retq1577;1578; AVX512BW-LABEL: store_i64_stride2_vf32:1579; AVX512BW: # %bb.0:1580; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm01581; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm11582; AVX512BW-NEXT: vmovdqa64 128(%rdi), %zmm21583; AVX512BW-NEXT: vmovdqa64 192(%rdi), %zmm31584; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm41585; AVX512BW-NEXT: vmovdqa64 64(%rsi), %zmm51586; AVX512BW-NEXT: vmovdqa64 128(%rsi), %zmm61587; AVX512BW-NEXT: vmovdqa64 192(%rsi), %zmm71588; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm8 = [4,12,5,13,6,14,7,15]1589; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm91590; AVX512BW-NEXT: vpermt2q %zmm4, %zmm8, %zmm91591; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm10 = [0,8,1,9,2,10,3,11]1592; AVX512BW-NEXT: vpermt2q %zmm4, %zmm10, %zmm01593; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm41594; AVX512BW-NEXT: vpermt2q %zmm5, %zmm8, %zmm41595; AVX512BW-NEXT: vpermt2q %zmm5, %zmm10, %zmm11596; AVX512BW-NEXT: vmovdqa64 %zmm2, %zmm51597; AVX512BW-NEXT: vpermt2q %zmm6, %zmm8, %zmm51598; AVX512BW-NEXT: vpermt2q %zmm6, %zmm10, %zmm21599; AVX512BW-NEXT: vpermi2q %zmm7, %zmm3, %zmm81600; AVX512BW-NEXT: vpermt2q %zmm7, %zmm10, %zmm31601; AVX512BW-NEXT: vmovdqa64 %zmm3, 384(%rdx)1602; AVX512BW-NEXT: vmovdqa64 %zmm8, 448(%rdx)1603; AVX512BW-NEXT: vmovdqa64 %zmm2, 256(%rdx)1604; AVX512BW-NEXT: vmovdqa64 %zmm5, 320(%rdx)1605; AVX512BW-NEXT: vmovdqa64 %zmm1, 128(%rdx)1606; AVX512BW-NEXT: vmovdqa64 %zmm4, 192(%rdx)1607; AVX512BW-NEXT: vmovdqa64 %zmm0, (%rdx)1608; AVX512BW-NEXT: vmovdqa64 %zmm9, 64(%rdx)1609; AVX512BW-NEXT: vzeroupper1610; AVX512BW-NEXT: retq1611;1612; AVX512BW-FCP-LABEL: store_i64_stride2_vf32:1613; AVX512BW-FCP: # %bb.0:1614; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm01615; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm11616; AVX512BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm21617; AVX512BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm31618; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm41619; AVX512BW-FCP-NEXT: vmovdqa64 64(%rsi), %zmm51620; AVX512BW-FCP-NEXT: vmovdqa64 128(%rsi), %zmm61621; AVX512BW-FCP-NEXT: vmovdqa64 192(%rsi), %zmm71622; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm8 = [4,12,5,13,6,14,7,15]1623; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm91624; AVX512BW-FCP-NEXT: vpermt2q %zmm4, %zmm8, %zmm91625; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm10 = [0,8,1,9,2,10,3,11]1626; AVX512BW-FCP-NEXT: vpermt2q %zmm4, %zmm10, %zmm01627; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm41628; AVX512BW-FCP-NEXT: vpermt2q %zmm5, %zmm8, %zmm41629; AVX512BW-FCP-NEXT: vpermt2q %zmm5, %zmm10, %zmm11630; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm51631; AVX512BW-FCP-NEXT: vpermt2q %zmm6, %zmm8, %zmm51632; AVX512BW-FCP-NEXT: vpermt2q %zmm6, %zmm10, %zmm21633; AVX512BW-FCP-NEXT: vpermi2q %zmm7, %zmm3, %zmm81634; AVX512BW-FCP-NEXT: vpermt2q %zmm7, %zmm10, %zmm31635; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, 384(%rdx)1636; AVX512BW-FCP-NEXT: vmovdqa64 %zmm8, 448(%rdx)1637; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, 256(%rdx)1638; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, 320(%rdx)1639; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, 128(%rdx)1640; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, 192(%rdx)1641; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)1642; AVX512BW-FCP-NEXT: vmovdqa64 %zmm9, 64(%rdx)1643; AVX512BW-FCP-NEXT: vzeroupper1644; AVX512BW-FCP-NEXT: retq1645;1646; AVX512DQ-BW-LABEL: store_i64_stride2_vf32:1647; AVX512DQ-BW: # %bb.0:1648; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm01649; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm11650; AVX512DQ-BW-NEXT: vmovdqa64 128(%rdi), %zmm21651; AVX512DQ-BW-NEXT: vmovdqa64 192(%rdi), %zmm31652; AVX512DQ-BW-NEXT: vmovdqa64 (%rsi), %zmm41653; AVX512DQ-BW-NEXT: vmovdqa64 64(%rsi), %zmm51654; AVX512DQ-BW-NEXT: vmovdqa64 128(%rsi), %zmm61655; AVX512DQ-BW-NEXT: vmovdqa64 192(%rsi), %zmm71656; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm8 = [4,12,5,13,6,14,7,15]1657; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, %zmm91658; AVX512DQ-BW-NEXT: vpermt2q %zmm4, %zmm8, %zmm91659; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm10 = [0,8,1,9,2,10,3,11]1660; AVX512DQ-BW-NEXT: vpermt2q %zmm4, %zmm10, %zmm01661; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, %zmm41662; AVX512DQ-BW-NEXT: vpermt2q %zmm5, %zmm8, %zmm41663; AVX512DQ-BW-NEXT: vpermt2q %zmm5, %zmm10, %zmm11664; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, %zmm51665; AVX512DQ-BW-NEXT: vpermt2q %zmm6, %zmm8, %zmm51666; AVX512DQ-BW-NEXT: vpermt2q %zmm6, %zmm10, %zmm21667; AVX512DQ-BW-NEXT: vpermi2q %zmm7, %zmm3, %zmm81668; AVX512DQ-BW-NEXT: vpermt2q %zmm7, %zmm10, %zmm31669; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, 384(%rdx)1670; AVX512DQ-BW-NEXT: vmovdqa64 %zmm8, 448(%rdx)1671; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, 256(%rdx)1672; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, 320(%rdx)1673; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, 128(%rdx)1674; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, 192(%rdx)1675; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, (%rdx)1676; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, 64(%rdx)1677; AVX512DQ-BW-NEXT: vzeroupper1678; AVX512DQ-BW-NEXT: retq1679;1680; AVX512DQ-BW-FCP-LABEL: store_i64_stride2_vf32:1681; AVX512DQ-BW-FCP: # %bb.0:1682; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm01683; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm11684; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm21685; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm31686; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm41687; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rsi), %zmm51688; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rsi), %zmm61689; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rsi), %zmm71690; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm8 = [4,12,5,13,6,14,7,15]1691; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm91692; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm4, %zmm8, %zmm91693; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm10 = [0,8,1,9,2,10,3,11]1694; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm4, %zmm10, %zmm01695; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm41696; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm5, %zmm8, %zmm41697; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm5, %zmm10, %zmm11698; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm51699; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm6, %zmm8, %zmm51700; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm6, %zmm10, %zmm21701; AVX512DQ-BW-FCP-NEXT: vpermi2q %zmm7, %zmm3, %zmm81702; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm7, %zmm10, %zmm31703; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, 384(%rdx)1704; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm8, 448(%rdx)1705; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, 256(%rdx)1706; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, 320(%rdx)1707; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, 128(%rdx)1708; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, 192(%rdx)1709; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)1710; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm9, 64(%rdx)1711; AVX512DQ-BW-FCP-NEXT: vzeroupper1712; AVX512DQ-BW-FCP-NEXT: retq1713 %in.vec0 = load <32 x i64>, ptr %in.vecptr0, align 641714 %in.vec1 = load <32 x i64>, ptr %in.vecptr1, align 641715 %1 = shufflevector <32 x i64> %in.vec0, <32 x i64> %in.vec1, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>1716 %interleaved.vec = shufflevector <64 x i64> %1, <64 x i64> poison, <64 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>1717 store <64 x i64> %interleaved.vec, ptr %out.vec, align 641718 ret void1719}1720 1721define void @store_i64_stride2_vf64(ptr %in.vecptr0, ptr %in.vecptr1, ptr %out.vec) nounwind {1722; SSE-LABEL: store_i64_stride2_vf64:1723; SSE: # %bb.0:1724; SSE-NEXT: subq $664, %rsp # imm = 0x2981725; SSE-NEXT: movaps 112(%rdi), %xmm141726; SSE-NEXT: movaps 96(%rdi), %xmm131727; SSE-NEXT: movaps 80(%rdi), %xmm111728; SSE-NEXT: movaps 64(%rdi), %xmm101729; SSE-NEXT: movaps (%rdi), %xmm71730; SSE-NEXT: movaps 16(%rdi), %xmm81731; SSE-NEXT: movaps 32(%rdi), %xmm91732; SSE-NEXT: movaps 48(%rdi), %xmm121733; SSE-NEXT: movaps 96(%rsi), %xmm01734; SSE-NEXT: movaps 80(%rsi), %xmm11735; SSE-NEXT: movaps 64(%rsi), %xmm21736; SSE-NEXT: movaps (%rsi), %xmm31737; SSE-NEXT: movaps 16(%rsi), %xmm41738; SSE-NEXT: movaps 32(%rsi), %xmm51739; SSE-NEXT: movaps 48(%rsi), %xmm61740; SSE-NEXT: movaps %xmm7, %xmm151741; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm3[0]1742; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1743; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm3[1]1744; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1745; SSE-NEXT: movaps %xmm8, %xmm31746; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm4[0]1747; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1748; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm4[1]1749; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1750; SSE-NEXT: movaps %xmm9, %xmm31751; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm5[0]1752; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1753; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm5[1]1754; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1755; SSE-NEXT: movaps %xmm12, %xmm31756; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm6[0]1757; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1758; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm6[1]1759; SSE-NEXT: movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1760; SSE-NEXT: movaps %xmm10, %xmm31761; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm2[0]1762; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1763; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm2[1]1764; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1765; SSE-NEXT: movaps %xmm11, %xmm21766; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]1767; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1768; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm1[1]1769; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1770; SSE-NEXT: movaps %xmm13, %xmm11771; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1772; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1773; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]1774; SSE-NEXT: movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1775; SSE-NEXT: movaps 112(%rsi), %xmm01776; SSE-NEXT: movaps %xmm14, %xmm11777; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1778; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1779; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm0[1]1780; SSE-NEXT: movaps %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1781; SSE-NEXT: movaps 128(%rdi), %xmm11782; SSE-NEXT: movaps 128(%rsi), %xmm01783; SSE-NEXT: movaps %xmm1, %xmm21784; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1785; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1786; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1787; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1788; SSE-NEXT: movaps 144(%rdi), %xmm11789; SSE-NEXT: movaps 144(%rsi), %xmm01790; SSE-NEXT: movaps %xmm1, %xmm21791; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1792; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1793; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1794; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1795; SSE-NEXT: movaps 160(%rdi), %xmm11796; SSE-NEXT: movaps 160(%rsi), %xmm01797; SSE-NEXT: movaps %xmm1, %xmm21798; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1799; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1800; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1801; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1802; SSE-NEXT: movaps 176(%rdi), %xmm11803; SSE-NEXT: movaps 176(%rsi), %xmm01804; SSE-NEXT: movaps %xmm1, %xmm21805; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1806; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1807; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1808; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1809; SSE-NEXT: movaps 192(%rdi), %xmm11810; SSE-NEXT: movaps 192(%rsi), %xmm01811; SSE-NEXT: movaps %xmm1, %xmm21812; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1813; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1814; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1815; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1816; SSE-NEXT: movaps 208(%rdi), %xmm11817; SSE-NEXT: movaps 208(%rsi), %xmm01818; SSE-NEXT: movaps %xmm1, %xmm21819; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1820; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1821; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1822; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1823; SSE-NEXT: movaps 224(%rdi), %xmm11824; SSE-NEXT: movaps 224(%rsi), %xmm01825; SSE-NEXT: movaps %xmm1, %xmm21826; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1827; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1828; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1829; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1830; SSE-NEXT: movaps 240(%rdi), %xmm11831; SSE-NEXT: movaps 240(%rsi), %xmm01832; SSE-NEXT: movaps %xmm1, %xmm21833; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1834; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1835; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1836; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1837; SSE-NEXT: movaps 256(%rdi), %xmm11838; SSE-NEXT: movaps 256(%rsi), %xmm01839; SSE-NEXT: movaps %xmm1, %xmm21840; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1841; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1842; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1843; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1844; SSE-NEXT: movaps 272(%rdi), %xmm11845; SSE-NEXT: movaps 272(%rsi), %xmm01846; SSE-NEXT: movaps %xmm1, %xmm21847; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1848; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1849; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1850; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1851; SSE-NEXT: movaps 288(%rdi), %xmm11852; SSE-NEXT: movaps 288(%rsi), %xmm01853; SSE-NEXT: movaps %xmm1, %xmm21854; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1855; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1856; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1857; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1858; SSE-NEXT: movaps 304(%rdi), %xmm11859; SSE-NEXT: movaps 304(%rsi), %xmm01860; SSE-NEXT: movaps %xmm1, %xmm21861; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1862; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1863; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1864; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1865; SSE-NEXT: movaps 320(%rdi), %xmm11866; SSE-NEXT: movaps 320(%rsi), %xmm01867; SSE-NEXT: movaps %xmm1, %xmm21868; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1869; SSE-NEXT: movaps %xmm2, (%rsp) # 16-byte Spill1870; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1871; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1872; SSE-NEXT: movaps 336(%rdi), %xmm11873; SSE-NEXT: movaps 336(%rsi), %xmm01874; SSE-NEXT: movaps %xmm1, %xmm21875; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1876; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1877; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1878; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1879; SSE-NEXT: movaps 352(%rdi), %xmm11880; SSE-NEXT: movaps 352(%rsi), %xmm01881; SSE-NEXT: movaps %xmm1, %xmm21882; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1883; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1884; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1885; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1886; SSE-NEXT: movaps 368(%rdi), %xmm151887; SSE-NEXT: movaps 368(%rsi), %xmm01888; SSE-NEXT: movaps %xmm15, %xmm11889; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1890; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1891; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]1892; SSE-NEXT: movaps 384(%rdi), %xmm131893; SSE-NEXT: movaps 384(%rsi), %xmm01894; SSE-NEXT: movaps %xmm13, %xmm11895; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1896; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1897; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]1898; SSE-NEXT: movaps 400(%rdi), %xmm111899; SSE-NEXT: movaps 400(%rsi), %xmm01900; SSE-NEXT: movaps %xmm11, %xmm11901; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1902; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1903; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm0[1]1904; SSE-NEXT: movaps 416(%rdi), %xmm121905; SSE-NEXT: movaps 416(%rsi), %xmm01906; SSE-NEXT: movaps %xmm12, %xmm141907; SSE-NEXT: movlhps {{.*#+}} xmm14 = xmm14[0],xmm0[0]1908; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm0[1]1909; SSE-NEXT: movaps 432(%rdi), %xmm81910; SSE-NEXT: movaps 432(%rsi), %xmm01911; SSE-NEXT: movaps %xmm8, %xmm101912; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm0[0]1913; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm0[1]1914; SSE-NEXT: movaps 448(%rdi), %xmm61915; SSE-NEXT: movaps 448(%rsi), %xmm01916; SSE-NEXT: movaps %xmm6, %xmm91917; SSE-NEXT: movlhps {{.*#+}} xmm9 = xmm9[0],xmm0[0]1918; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm0[1]1919; SSE-NEXT: movaps 464(%rdi), %xmm51920; SSE-NEXT: movaps 464(%rsi), %xmm11921; SSE-NEXT: movaps %xmm5, %xmm71922; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm1[0]1923; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]1924; SSE-NEXT: movaps 480(%rdi), %xmm11925; SSE-NEXT: movaps 480(%rsi), %xmm31926; SSE-NEXT: movaps %xmm1, %xmm21927; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm3[0]1928; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm3[1]1929; SSE-NEXT: movaps 496(%rdi), %xmm31930; SSE-NEXT: movaps 496(%rsi), %xmm41931; SSE-NEXT: movaps %xmm3, %xmm01932; SSE-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm4[0]1933; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm4[1]1934; SSE-NEXT: movaps %xmm3, 1008(%rdx)1935; SSE-NEXT: movaps %xmm0, 992(%rdx)1936; SSE-NEXT: movaps %xmm1, 976(%rdx)1937; SSE-NEXT: movaps %xmm2, 960(%rdx)1938; SSE-NEXT: movaps %xmm5, 944(%rdx)1939; SSE-NEXT: movaps %xmm7, 928(%rdx)1940; SSE-NEXT: movaps %xmm6, 912(%rdx)1941; SSE-NEXT: movaps %xmm9, 896(%rdx)1942; SSE-NEXT: movaps %xmm8, 880(%rdx)1943; SSE-NEXT: movaps %xmm10, 864(%rdx)1944; SSE-NEXT: movaps %xmm12, 848(%rdx)1945; SSE-NEXT: movaps %xmm14, 832(%rdx)1946; SSE-NEXT: movaps %xmm11, 816(%rdx)1947; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1948; SSE-NEXT: movaps %xmm0, 800(%rdx)1949; SSE-NEXT: movaps %xmm13, 784(%rdx)1950; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1951; SSE-NEXT: movaps %xmm0, 768(%rdx)1952; SSE-NEXT: movaps %xmm15, 752(%rdx)1953; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1954; SSE-NEXT: movaps %xmm0, 736(%rdx)1955; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1956; SSE-NEXT: movaps %xmm0, 720(%rdx)1957; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1958; SSE-NEXT: movaps %xmm0, 704(%rdx)1959; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1960; SSE-NEXT: movaps %xmm0, 688(%rdx)1961; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1962; SSE-NEXT: movaps %xmm0, 672(%rdx)1963; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1964; SSE-NEXT: movaps %xmm0, 656(%rdx)1965; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload1966; SSE-NEXT: movaps %xmm0, 640(%rdx)1967; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1968; SSE-NEXT: movaps %xmm0, 624(%rdx)1969; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1970; SSE-NEXT: movaps %xmm0, 608(%rdx)1971; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1972; SSE-NEXT: movaps %xmm0, 592(%rdx)1973; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1974; SSE-NEXT: movaps %xmm0, 576(%rdx)1975; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1976; SSE-NEXT: movaps %xmm0, 560(%rdx)1977; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1978; SSE-NEXT: movaps %xmm0, 544(%rdx)1979; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1980; SSE-NEXT: movaps %xmm0, 528(%rdx)1981; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1982; SSE-NEXT: movaps %xmm0, 512(%rdx)1983; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1984; SSE-NEXT: movaps %xmm0, 496(%rdx)1985; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1986; SSE-NEXT: movaps %xmm0, 480(%rdx)1987; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1988; SSE-NEXT: movaps %xmm0, 464(%rdx)1989; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1990; SSE-NEXT: movaps %xmm0, 448(%rdx)1991; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1992; SSE-NEXT: movaps %xmm0, 432(%rdx)1993; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1994; SSE-NEXT: movaps %xmm0, 416(%rdx)1995; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1996; SSE-NEXT: movaps %xmm0, 400(%rdx)1997; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1998; SSE-NEXT: movaps %xmm0, 384(%rdx)1999; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2000; SSE-NEXT: movaps %xmm0, 368(%rdx)2001; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2002; SSE-NEXT: movaps %xmm0, 352(%rdx)2003; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2004; SSE-NEXT: movaps %xmm0, 336(%rdx)2005; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2006; SSE-NEXT: movaps %xmm0, 320(%rdx)2007; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2008; SSE-NEXT: movaps %xmm0, 304(%rdx)2009; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2010; SSE-NEXT: movaps %xmm0, 288(%rdx)2011; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2012; SSE-NEXT: movaps %xmm0, 272(%rdx)2013; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2014; SSE-NEXT: movaps %xmm0, 256(%rdx)2015; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2016; SSE-NEXT: movaps %xmm0, 240(%rdx)2017; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2018; SSE-NEXT: movaps %xmm0, 224(%rdx)2019; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2020; SSE-NEXT: movaps %xmm0, 208(%rdx)2021; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2022; SSE-NEXT: movaps %xmm0, 192(%rdx)2023; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2024; SSE-NEXT: movaps %xmm0, 176(%rdx)2025; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2026; SSE-NEXT: movaps %xmm0, 160(%rdx)2027; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2028; SSE-NEXT: movaps %xmm0, 144(%rdx)2029; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2030; SSE-NEXT: movaps %xmm0, 128(%rdx)2031; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2032; SSE-NEXT: movaps %xmm0, 112(%rdx)2033; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2034; SSE-NEXT: movaps %xmm0, 96(%rdx)2035; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2036; SSE-NEXT: movaps %xmm0, 80(%rdx)2037; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2038; SSE-NEXT: movaps %xmm0, 64(%rdx)2039; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2040; SSE-NEXT: movaps %xmm0, 48(%rdx)2041; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2042; SSE-NEXT: movaps %xmm0, 32(%rdx)2043; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2044; SSE-NEXT: movaps %xmm0, 16(%rdx)2045; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2046; SSE-NEXT: movaps %xmm0, (%rdx)2047; SSE-NEXT: addq $664, %rsp # imm = 0x2982048; SSE-NEXT: retq2049;2050; AVX-LABEL: store_i64_stride2_vf64:2051; AVX: # %bb.0:2052; AVX-NEXT: subq $424, %rsp # imm = 0x1A82053; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2054; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2055; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2056; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2057; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2058; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2059; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2060; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2061; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2062; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2063; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2064; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2065; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2066; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2067; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2068; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2069; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2070; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2071; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2072; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2073; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2074; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2075; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2076; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2077; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2078; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2079; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2080; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2081; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2082; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2083; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2084; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2085; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2086; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2087; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2088; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2089; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2090; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2091; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2092; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2093; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2094; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2095; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2096; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2097; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2098; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2099; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2100; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2101; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2102; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2103; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2104; AVX-NEXT: vmovupd %ymm0, (%rsp) # 32-byte Spill2105; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2106; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2107; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2108; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2109; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2110; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2111; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2112; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2113; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2114; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2115; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2116; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2117; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2118; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2119; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2120; AVX-NEXT: vmovupd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2121; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2122; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2123; AVX-NEXT: vshufpd {{.*#+}} ymm6 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2124; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2125; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2126; AVX-NEXT: vshufpd {{.*#+}} ymm5 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2127; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2128; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2129; AVX-NEXT: vshufpd {{.*#+}} ymm4 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2130; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2131; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2132; AVX-NEXT: vshufpd {{.*#+}} ymm3 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2133; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2134; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2135; AVX-NEXT: vshufpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2136; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2137; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm1 = mem[0,1,0,1]2138; AVX-NEXT: vshufpd {{.*#+}} ymm1 = ymm1[0],ymm0[0],ymm1[3],ymm0[3]2139; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]2140; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm8 = mem[0,1,0,1]2141; AVX-NEXT: vshufpd {{.*#+}} ymm0 = ymm8[0],ymm0[0],ymm8[3],ymm0[3]2142; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm8 = mem[0,1,0,1]2143; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm9 = mem[0,1,0,1]2144; AVX-NEXT: vshufpd {{.*#+}} ymm8 = ymm9[0],ymm8[0],ymm9[3],ymm8[3]2145; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm9 = mem[0,1,0,1]2146; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm10 = mem[0,1,0,1]2147; AVX-NEXT: vshufpd {{.*#+}} ymm9 = ymm10[0],ymm9[0],ymm10[3],ymm9[3]2148; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm10 = mem[0,1,0,1]2149; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm11 = mem[0,1,0,1]2150; AVX-NEXT: vshufpd {{.*#+}} ymm10 = ymm11[0],ymm10[0],ymm11[3],ymm10[3]2151; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm11 = mem[0,1,0,1]2152; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm12 = mem[0,1,0,1]2153; AVX-NEXT: vshufpd {{.*#+}} ymm11 = ymm12[0],ymm11[0],ymm12[3],ymm11[3]2154; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm12 = mem[0,1,0,1]2155; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm13 = mem[0,1,0,1]2156; AVX-NEXT: vshufpd {{.*#+}} ymm12 = ymm13[0],ymm12[0],ymm13[3],ymm12[3]2157; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm13 = mem[0,1,0,1]2158; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm14 = mem[0,1,0,1]2159; AVX-NEXT: vshufpd {{.*#+}} ymm13 = ymm14[0],ymm13[0],ymm14[3],ymm13[3]2160; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm14 = mem[0,1,0,1]2161; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm15 = mem[0,1,0,1]2162; AVX-NEXT: vshufpd {{.*#+}} ymm14 = ymm15[0],ymm14[0],ymm15[3],ymm14[3]2163; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm15 = mem[0,1,0,1]2164; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm7 = mem[0,1,0,1]2165; AVX-NEXT: vshufpd {{.*#+}} ymm7 = ymm7[0],ymm15[0],ymm7[3],ymm15[3]2166; AVX-NEXT: vmovapd %ymm7, 992(%rdx)2167; AVX-NEXT: vmovapd %ymm14, 960(%rdx)2168; AVX-NEXT: vmovapd %ymm13, 928(%rdx)2169; AVX-NEXT: vmovapd %ymm12, 896(%rdx)2170; AVX-NEXT: vmovapd %ymm11, 864(%rdx)2171; AVX-NEXT: vmovapd %ymm10, 832(%rdx)2172; AVX-NEXT: vmovapd %ymm9, 800(%rdx)2173; AVX-NEXT: vmovapd %ymm8, 768(%rdx)2174; AVX-NEXT: vmovapd %ymm0, 736(%rdx)2175; AVX-NEXT: vmovapd %ymm1, 704(%rdx)2176; AVX-NEXT: vmovapd %ymm2, 672(%rdx)2177; AVX-NEXT: vmovapd %ymm3, 640(%rdx)2178; AVX-NEXT: vmovapd %ymm4, 608(%rdx)2179; AVX-NEXT: vmovapd %ymm5, 576(%rdx)2180; AVX-NEXT: vmovapd %ymm6, 544(%rdx)2181; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2182; AVX-NEXT: vmovaps %ymm0, 512(%rdx)2183; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2184; AVX-NEXT: vmovaps %ymm0, 480(%rdx)2185; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2186; AVX-NEXT: vmovaps %ymm0, 448(%rdx)2187; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2188; AVX-NEXT: vmovaps %ymm0, 416(%rdx)2189; AVX-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload2190; AVX-NEXT: vmovaps %ymm0, 384(%rdx)2191; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2192; AVX-NEXT: vmovaps %ymm0, 352(%rdx)2193; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2194; AVX-NEXT: vmovaps %ymm0, 320(%rdx)2195; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2196; AVX-NEXT: vmovaps %ymm0, 288(%rdx)2197; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2198; AVX-NEXT: vmovaps %ymm0, 256(%rdx)2199; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2200; AVX-NEXT: vmovaps %ymm0, 224(%rdx)2201; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2202; AVX-NEXT: vmovaps %ymm0, 192(%rdx)2203; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2204; AVX-NEXT: vmovaps %ymm0, 160(%rdx)2205; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2206; AVX-NEXT: vmovaps %ymm0, 128(%rdx)2207; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2208; AVX-NEXT: vmovaps %ymm0, 96(%rdx)2209; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2210; AVX-NEXT: vmovaps %ymm0, 64(%rdx)2211; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2212; AVX-NEXT: vmovaps %ymm0, 32(%rdx)2213; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2214; AVX-NEXT: vmovaps %ymm0, (%rdx)2215; AVX-NEXT: addq $424, %rsp # imm = 0x1A82216; AVX-NEXT: vzeroupper2217; AVX-NEXT: retq2218;2219; AVX2-LABEL: store_i64_stride2_vf64:2220; AVX2: # %bb.0:2221; AVX2-NEXT: subq $456, %rsp # imm = 0x1C82222; AVX2-NEXT: vmovaps 192(%rdi), %ymm02223; AVX2-NEXT: vmovaps 160(%rdi), %ymm12224; AVX2-NEXT: vmovaps 128(%rdi), %ymm22225; AVX2-NEXT: vmovaps (%rdi), %ymm72226; AVX2-NEXT: vmovaps 32(%rdi), %ymm82227; AVX2-NEXT: vmovaps 64(%rdi), %ymm62228; AVX2-NEXT: vmovaps 96(%rdi), %ymm42229; AVX2-NEXT: vmovaps 192(%rsi), %ymm32230; AVX2-NEXT: vmovaps 160(%rsi), %ymm52231; AVX2-NEXT: vmovaps 128(%rsi), %ymm92232; AVX2-NEXT: vmovaps (%rsi), %ymm102233; AVX2-NEXT: vmovaps 32(%rsi), %ymm112234; AVX2-NEXT: vmovaps 64(%rsi), %ymm122235; AVX2-NEXT: vmovaps 96(%rsi), %ymm132236; AVX2-NEXT: vpermpd {{.*#+}} ymm14 = ymm10[0,0,2,1]2237; AVX2-NEXT: vpermpd {{.*#+}} ymm15 = ymm7[0,1,1,3]2238; AVX2-NEXT: vblendps {{.*#+}} ymm14 = ymm15[0,1],ymm14[2,3],ymm15[4,5],ymm14[6,7]2239; AVX2-NEXT: vmovups %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2240; AVX2-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,2,2,3]2241; AVX2-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[2,1,3,3]2242; AVX2-NEXT: vblendps {{.*#+}} ymm7 = ymm7[0,1],ymm10[2,3],ymm7[4,5],ymm10[6,7]2243; AVX2-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2244; AVX2-NEXT: vpermpd {{.*#+}} ymm7 = ymm11[0,0,2,1]2245; AVX2-NEXT: vpermpd {{.*#+}} ymm10 = ymm8[0,1,1,3]2246; AVX2-NEXT: vblendps {{.*#+}} ymm7 = ymm10[0,1],ymm7[2,3],ymm10[4,5],ymm7[6,7]2247; AVX2-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2248; AVX2-NEXT: vpermpd {{.*#+}} ymm7 = ymm11[0,2,2,3]2249; AVX2-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[2,1,3,3]2250; AVX2-NEXT: vblendps {{.*#+}} ymm7 = ymm8[0,1],ymm7[2,3],ymm8[4,5],ymm7[6,7]2251; AVX2-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2252; AVX2-NEXT: vpermpd {{.*#+}} ymm7 = ymm12[0,0,2,1]2253; AVX2-NEXT: vpermpd {{.*#+}} ymm8 = ymm6[0,1,1,3]2254; AVX2-NEXT: vblendps {{.*#+}} ymm7 = ymm8[0,1],ymm7[2,3],ymm8[4,5],ymm7[6,7]2255; AVX2-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2256; AVX2-NEXT: vpermpd {{.*#+}} ymm7 = ymm12[0,2,2,3]2257; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[2,1,3,3]2258; AVX2-NEXT: vblendps {{.*#+}} ymm6 = ymm6[0,1],ymm7[2,3],ymm6[4,5],ymm7[6,7]2259; AVX2-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2260; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm13[0,0,2,1]2261; AVX2-NEXT: vpermpd {{.*#+}} ymm7 = ymm4[0,1,1,3]2262; AVX2-NEXT: vblendps {{.*#+}} ymm6 = ymm7[0,1],ymm6[2,3],ymm7[4,5],ymm6[6,7]2263; AVX2-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2264; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm13[0,2,2,3]2265; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[2,1,3,3]2266; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1],ymm6[2,3],ymm4[4,5],ymm6[6,7]2267; AVX2-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2268; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm9[0,0,2,1]2269; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm2[0,1,1,3]2270; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm6[0,1],ymm4[2,3],ymm6[4,5],ymm4[6,7]2271; AVX2-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2272; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm9[0,2,2,3]2273; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[2,1,3,3]2274; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm4[2,3],ymm2[4,5],ymm4[6,7]2275; AVX2-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2276; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm5[0,0,2,1]2277; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm1[0,1,1,3]2278; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5],ymm2[6,7]2279; AVX2-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2280; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm5[0,2,2,3]2281; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]2282; AVX2-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm2[2,3],ymm1[4,5],ymm2[6,7]2283; AVX2-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2284; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm3[0,0,2,1]2285; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm0[0,1,1,3]2286; AVX2-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5],ymm1[6,7]2287; AVX2-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2288; AVX2-NEXT: vmovaps 224(%rdi), %ymm12289; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm3[0,2,2,3]2290; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2291; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]2292; AVX2-NEXT: vmovups %ymm0, (%rsp) # 32-byte Spill2293; AVX2-NEXT: vmovaps 224(%rsi), %ymm02294; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm0[0,0,2,1]2295; AVX2-NEXT: vpermpd {{.*#+}} ymm3 = ymm1[0,1,1,3]2296; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]2297; AVX2-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2298; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]2299; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]2300; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2301; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2302; AVX2-NEXT: vmovaps 256(%rdi), %ymm02303; AVX2-NEXT: vmovaps 256(%rsi), %ymm12304; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]2305; AVX2-NEXT: vpermpd {{.*#+}} ymm3 = ymm0[0,1,1,3]2306; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]2307; AVX2-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2308; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]2309; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2310; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2311; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2312; AVX2-NEXT: vmovaps 288(%rdi), %ymm02313; AVX2-NEXT: vmovaps 288(%rsi), %ymm12314; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]2315; AVX2-NEXT: vpermpd {{.*#+}} ymm3 = ymm0[0,1,1,3]2316; AVX2-NEXT: vblendps {{.*#+}} ymm12 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]2317; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]2318; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2319; AVX2-NEXT: vblendps {{.*#+}} ymm10 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2320; AVX2-NEXT: vmovaps 320(%rdi), %ymm02321; AVX2-NEXT: vmovaps 320(%rsi), %ymm12322; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]2323; AVX2-NEXT: vpermpd {{.*#+}} ymm3 = ymm0[0,1,1,3]2324; AVX2-NEXT: vblendps {{.*#+}} ymm8 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]2325; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]2326; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2327; AVX2-NEXT: vblendps {{.*#+}} ymm7 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2328; AVX2-NEXT: vmovaps 352(%rdi), %ymm02329; AVX2-NEXT: vmovaps 352(%rsi), %ymm12330; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]2331; AVX2-NEXT: vpermpd {{.*#+}} ymm9 = ymm0[0,1,1,3]2332; AVX2-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1],ymm2[2,3],ymm9[4,5],ymm2[6,7]2333; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]2334; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2335; AVX2-NEXT: vblendps {{.*#+}} ymm5 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2336; AVX2-NEXT: vmovaps 384(%rdi), %ymm92337; AVX2-NEXT: vmovaps 384(%rsi), %ymm02338; AVX2-NEXT: vpermpd {{.*#+}} ymm1 = ymm0[0,0,2,1]2339; AVX2-NEXT: vpermpd {{.*#+}} ymm11 = ymm9[0,1,1,3]2340; AVX2-NEXT: vblendps {{.*#+}} ymm4 = ymm11[0,1],ymm1[2,3],ymm11[4,5],ymm1[6,7]2341; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]2342; AVX2-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[2,1,3,3]2343; AVX2-NEXT: vblendps {{.*#+}} ymm3 = ymm9[0,1],ymm0[2,3],ymm9[4,5],ymm0[6,7]2344; AVX2-NEXT: vmovaps 416(%rdi), %ymm92345; AVX2-NEXT: vmovaps 416(%rsi), %ymm112346; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm11[0,0,2,1]2347; AVX2-NEXT: vpermpd {{.*#+}} ymm13 = ymm9[0,1,1,3]2348; AVX2-NEXT: vblendps {{.*#+}} ymm2 = ymm13[0,1],ymm0[2,3],ymm13[4,5],ymm0[6,7]2349; AVX2-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,2,2,3]2350; AVX2-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[2,1,3,3]2351; AVX2-NEXT: vblendps {{.*#+}} ymm9 = ymm9[0,1],ymm11[2,3],ymm9[4,5],ymm11[6,7]2352; AVX2-NEXT: vmovaps 448(%rdi), %ymm112353; AVX2-NEXT: vmovaps 448(%rsi), %ymm132354; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm13[0,0,2,1]2355; AVX2-NEXT: vpermpd {{.*#+}} ymm15 = ymm11[0,1,1,3]2356; AVX2-NEXT: vblendps {{.*#+}} ymm1 = ymm15[0,1],ymm0[2,3],ymm15[4,5],ymm0[6,7]2357; AVX2-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,2,2,3]2358; AVX2-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[2,1,3,3]2359; AVX2-NEXT: vblendps {{.*#+}} ymm11 = ymm11[0,1],ymm13[2,3],ymm11[4,5],ymm13[6,7]2360; AVX2-NEXT: vmovaps 480(%rdi), %ymm132361; AVX2-NEXT: vmovaps 480(%rsi), %ymm152362; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm15[0,0,2,1]2363; AVX2-NEXT: vpermpd {{.*#+}} ymm14 = ymm13[0,1,1,3]2364; AVX2-NEXT: vblendps {{.*#+}} ymm0 = ymm14[0,1],ymm0[2,3],ymm14[4,5],ymm0[6,7]2365; AVX2-NEXT: vpermpd {{.*#+}} ymm14 = ymm15[0,2,2,3]2366; AVX2-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[2,1,3,3]2367; AVX2-NEXT: vblendps {{.*#+}} ymm13 = ymm13[0,1],ymm14[2,3],ymm13[4,5],ymm14[6,7]2368; AVX2-NEXT: vmovaps %ymm13, 992(%rdx)2369; AVX2-NEXT: vmovaps %ymm0, 960(%rdx)2370; AVX2-NEXT: vmovaps %ymm11, 928(%rdx)2371; AVX2-NEXT: vmovaps %ymm1, 896(%rdx)2372; AVX2-NEXT: vmovaps %ymm9, 864(%rdx)2373; AVX2-NEXT: vmovaps %ymm2, 832(%rdx)2374; AVX2-NEXT: vmovaps %ymm3, 800(%rdx)2375; AVX2-NEXT: vmovaps %ymm4, 768(%rdx)2376; AVX2-NEXT: vmovaps %ymm5, 736(%rdx)2377; AVX2-NEXT: vmovaps %ymm6, 704(%rdx)2378; AVX2-NEXT: vmovaps %ymm7, 672(%rdx)2379; AVX2-NEXT: vmovaps %ymm8, 640(%rdx)2380; AVX2-NEXT: vmovaps %ymm10, 608(%rdx)2381; AVX2-NEXT: vmovaps %ymm12, 576(%rdx)2382; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2383; AVX2-NEXT: vmovaps %ymm0, 544(%rdx)2384; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2385; AVX2-NEXT: vmovaps %ymm0, 512(%rdx)2386; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2387; AVX2-NEXT: vmovaps %ymm0, 480(%rdx)2388; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2389; AVX2-NEXT: vmovaps %ymm0, 448(%rdx)2390; AVX2-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload2391; AVX2-NEXT: vmovaps %ymm0, 416(%rdx)2392; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2393; AVX2-NEXT: vmovaps %ymm0, 384(%rdx)2394; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2395; AVX2-NEXT: vmovaps %ymm0, 352(%rdx)2396; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2397; AVX2-NEXT: vmovaps %ymm0, 320(%rdx)2398; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2399; AVX2-NEXT: vmovaps %ymm0, 288(%rdx)2400; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2401; AVX2-NEXT: vmovaps %ymm0, 256(%rdx)2402; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2403; AVX2-NEXT: vmovaps %ymm0, 224(%rdx)2404; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2405; AVX2-NEXT: vmovaps %ymm0, 192(%rdx)2406; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2407; AVX2-NEXT: vmovaps %ymm0, 160(%rdx)2408; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2409; AVX2-NEXT: vmovaps %ymm0, 128(%rdx)2410; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2411; AVX2-NEXT: vmovaps %ymm0, 96(%rdx)2412; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2413; AVX2-NEXT: vmovaps %ymm0, 64(%rdx)2414; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2415; AVX2-NEXT: vmovaps %ymm0, 32(%rdx)2416; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2417; AVX2-NEXT: vmovaps %ymm0, (%rdx)2418; AVX2-NEXT: addq $456, %rsp # imm = 0x1C82419; AVX2-NEXT: vzeroupper2420; AVX2-NEXT: retq2421;2422; AVX2-FP-LABEL: store_i64_stride2_vf64:2423; AVX2-FP: # %bb.0:2424; AVX2-FP-NEXT: subq $456, %rsp # imm = 0x1C82425; AVX2-FP-NEXT: vmovaps 192(%rdi), %ymm02426; AVX2-FP-NEXT: vmovaps 160(%rdi), %ymm12427; AVX2-FP-NEXT: vmovaps 128(%rdi), %ymm22428; AVX2-FP-NEXT: vmovaps (%rdi), %ymm72429; AVX2-FP-NEXT: vmovaps 32(%rdi), %ymm82430; AVX2-FP-NEXT: vmovaps 64(%rdi), %ymm62431; AVX2-FP-NEXT: vmovaps 96(%rdi), %ymm42432; AVX2-FP-NEXT: vmovaps 192(%rsi), %ymm32433; AVX2-FP-NEXT: vmovaps 160(%rsi), %ymm52434; AVX2-FP-NEXT: vmovaps 128(%rsi), %ymm92435; AVX2-FP-NEXT: vmovaps (%rsi), %ymm102436; AVX2-FP-NEXT: vmovaps 32(%rsi), %ymm112437; AVX2-FP-NEXT: vmovaps 64(%rsi), %ymm122438; AVX2-FP-NEXT: vmovaps 96(%rsi), %ymm132439; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm14 = ymm10[0,0,2,1]2440; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm15 = ymm7[0,1,1,3]2441; AVX2-FP-NEXT: vblendps {{.*#+}} ymm14 = ymm15[0,1],ymm14[2,3],ymm15[4,5],ymm14[6,7]2442; AVX2-FP-NEXT: vmovups %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2443; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,2,2,3]2444; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[2,1,3,3]2445; AVX2-FP-NEXT: vblendps {{.*#+}} ymm7 = ymm7[0,1],ymm10[2,3],ymm7[4,5],ymm10[6,7]2446; AVX2-FP-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2447; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm7 = ymm11[0,0,2,1]2448; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm10 = ymm8[0,1,1,3]2449; AVX2-FP-NEXT: vblendps {{.*#+}} ymm7 = ymm10[0,1],ymm7[2,3],ymm10[4,5],ymm7[6,7]2450; AVX2-FP-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2451; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm7 = ymm11[0,2,2,3]2452; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[2,1,3,3]2453; AVX2-FP-NEXT: vblendps {{.*#+}} ymm7 = ymm8[0,1],ymm7[2,3],ymm8[4,5],ymm7[6,7]2454; AVX2-FP-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2455; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm7 = ymm12[0,0,2,1]2456; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm8 = ymm6[0,1,1,3]2457; AVX2-FP-NEXT: vblendps {{.*#+}} ymm7 = ymm8[0,1],ymm7[2,3],ymm8[4,5],ymm7[6,7]2458; AVX2-FP-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2459; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm7 = ymm12[0,2,2,3]2460; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[2,1,3,3]2461; AVX2-FP-NEXT: vblendps {{.*#+}} ymm6 = ymm6[0,1],ymm7[2,3],ymm6[4,5],ymm7[6,7]2462; AVX2-FP-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2463; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm13[0,0,2,1]2464; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm7 = ymm4[0,1,1,3]2465; AVX2-FP-NEXT: vblendps {{.*#+}} ymm6 = ymm7[0,1],ymm6[2,3],ymm7[4,5],ymm6[6,7]2466; AVX2-FP-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2467; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm13[0,2,2,3]2468; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[2,1,3,3]2469; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1],ymm6[2,3],ymm4[4,5],ymm6[6,7]2470; AVX2-FP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2471; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm9[0,0,2,1]2472; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm2[0,1,1,3]2473; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm6[0,1],ymm4[2,3],ymm6[4,5],ymm4[6,7]2474; AVX2-FP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2475; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm9[0,2,2,3]2476; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[2,1,3,3]2477; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm4[2,3],ymm2[4,5],ymm4[6,7]2478; AVX2-FP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2479; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm5[0,0,2,1]2480; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm1[0,1,1,3]2481; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5],ymm2[6,7]2482; AVX2-FP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2483; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm5[0,2,2,3]2484; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]2485; AVX2-FP-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm2[2,3],ymm1[4,5],ymm2[6,7]2486; AVX2-FP-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2487; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm3[0,0,2,1]2488; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm0[0,1,1,3]2489; AVX2-FP-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5],ymm1[6,7]2490; AVX2-FP-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2491; AVX2-FP-NEXT: vmovaps 224(%rdi), %ymm12492; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm3[0,2,2,3]2493; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2494; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]2495; AVX2-FP-NEXT: vmovups %ymm0, (%rsp) # 32-byte Spill2496; AVX2-FP-NEXT: vmovaps 224(%rsi), %ymm02497; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm0[0,0,2,1]2498; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm3 = ymm1[0,1,1,3]2499; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]2500; AVX2-FP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2501; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]2502; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]2503; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2504; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2505; AVX2-FP-NEXT: vmovaps 256(%rdi), %ymm02506; AVX2-FP-NEXT: vmovaps 256(%rsi), %ymm12507; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]2508; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm3 = ymm0[0,1,1,3]2509; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]2510; AVX2-FP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2511; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]2512; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2513; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2514; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2515; AVX2-FP-NEXT: vmovaps 288(%rdi), %ymm02516; AVX2-FP-NEXT: vmovaps 288(%rsi), %ymm12517; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]2518; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm3 = ymm0[0,1,1,3]2519; AVX2-FP-NEXT: vblendps {{.*#+}} ymm12 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]2520; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]2521; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2522; AVX2-FP-NEXT: vblendps {{.*#+}} ymm10 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2523; AVX2-FP-NEXT: vmovaps 320(%rdi), %ymm02524; AVX2-FP-NEXT: vmovaps 320(%rsi), %ymm12525; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]2526; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm3 = ymm0[0,1,1,3]2527; AVX2-FP-NEXT: vblendps {{.*#+}} ymm8 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]2528; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]2529; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2530; AVX2-FP-NEXT: vblendps {{.*#+}} ymm7 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2531; AVX2-FP-NEXT: vmovaps 352(%rdi), %ymm02532; AVX2-FP-NEXT: vmovaps 352(%rsi), %ymm12533; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]2534; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm9 = ymm0[0,1,1,3]2535; AVX2-FP-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1],ymm2[2,3],ymm9[4,5],ymm2[6,7]2536; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]2537; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2538; AVX2-FP-NEXT: vblendps {{.*#+}} ymm5 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2539; AVX2-FP-NEXT: vmovaps 384(%rdi), %ymm92540; AVX2-FP-NEXT: vmovaps 384(%rsi), %ymm02541; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm1 = ymm0[0,0,2,1]2542; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm11 = ymm9[0,1,1,3]2543; AVX2-FP-NEXT: vblendps {{.*#+}} ymm4 = ymm11[0,1],ymm1[2,3],ymm11[4,5],ymm1[6,7]2544; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]2545; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[2,1,3,3]2546; AVX2-FP-NEXT: vblendps {{.*#+}} ymm3 = ymm9[0,1],ymm0[2,3],ymm9[4,5],ymm0[6,7]2547; AVX2-FP-NEXT: vmovaps 416(%rdi), %ymm92548; AVX2-FP-NEXT: vmovaps 416(%rsi), %ymm112549; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm11[0,0,2,1]2550; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm13 = ymm9[0,1,1,3]2551; AVX2-FP-NEXT: vblendps {{.*#+}} ymm2 = ymm13[0,1],ymm0[2,3],ymm13[4,5],ymm0[6,7]2552; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,2,2,3]2553; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[2,1,3,3]2554; AVX2-FP-NEXT: vblendps {{.*#+}} ymm9 = ymm9[0,1],ymm11[2,3],ymm9[4,5],ymm11[6,7]2555; AVX2-FP-NEXT: vmovaps 448(%rdi), %ymm112556; AVX2-FP-NEXT: vmovaps 448(%rsi), %ymm132557; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm13[0,0,2,1]2558; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm15 = ymm11[0,1,1,3]2559; AVX2-FP-NEXT: vblendps {{.*#+}} ymm1 = ymm15[0,1],ymm0[2,3],ymm15[4,5],ymm0[6,7]2560; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,2,2,3]2561; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[2,1,3,3]2562; AVX2-FP-NEXT: vblendps {{.*#+}} ymm11 = ymm11[0,1],ymm13[2,3],ymm11[4,5],ymm13[6,7]2563; AVX2-FP-NEXT: vmovaps 480(%rdi), %ymm132564; AVX2-FP-NEXT: vmovaps 480(%rsi), %ymm152565; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm15[0,0,2,1]2566; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm14 = ymm13[0,1,1,3]2567; AVX2-FP-NEXT: vblendps {{.*#+}} ymm0 = ymm14[0,1],ymm0[2,3],ymm14[4,5],ymm0[6,7]2568; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm14 = ymm15[0,2,2,3]2569; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[2,1,3,3]2570; AVX2-FP-NEXT: vblendps {{.*#+}} ymm13 = ymm13[0,1],ymm14[2,3],ymm13[4,5],ymm14[6,7]2571; AVX2-FP-NEXT: vmovaps %ymm13, 992(%rdx)2572; AVX2-FP-NEXT: vmovaps %ymm0, 960(%rdx)2573; AVX2-FP-NEXT: vmovaps %ymm11, 928(%rdx)2574; AVX2-FP-NEXT: vmovaps %ymm1, 896(%rdx)2575; AVX2-FP-NEXT: vmovaps %ymm9, 864(%rdx)2576; AVX2-FP-NEXT: vmovaps %ymm2, 832(%rdx)2577; AVX2-FP-NEXT: vmovaps %ymm3, 800(%rdx)2578; AVX2-FP-NEXT: vmovaps %ymm4, 768(%rdx)2579; AVX2-FP-NEXT: vmovaps %ymm5, 736(%rdx)2580; AVX2-FP-NEXT: vmovaps %ymm6, 704(%rdx)2581; AVX2-FP-NEXT: vmovaps %ymm7, 672(%rdx)2582; AVX2-FP-NEXT: vmovaps %ymm8, 640(%rdx)2583; AVX2-FP-NEXT: vmovaps %ymm10, 608(%rdx)2584; AVX2-FP-NEXT: vmovaps %ymm12, 576(%rdx)2585; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2586; AVX2-FP-NEXT: vmovaps %ymm0, 544(%rdx)2587; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2588; AVX2-FP-NEXT: vmovaps %ymm0, 512(%rdx)2589; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2590; AVX2-FP-NEXT: vmovaps %ymm0, 480(%rdx)2591; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2592; AVX2-FP-NEXT: vmovaps %ymm0, 448(%rdx)2593; AVX2-FP-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload2594; AVX2-FP-NEXT: vmovaps %ymm0, 416(%rdx)2595; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2596; AVX2-FP-NEXT: vmovaps %ymm0, 384(%rdx)2597; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2598; AVX2-FP-NEXT: vmovaps %ymm0, 352(%rdx)2599; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2600; AVX2-FP-NEXT: vmovaps %ymm0, 320(%rdx)2601; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2602; AVX2-FP-NEXT: vmovaps %ymm0, 288(%rdx)2603; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2604; AVX2-FP-NEXT: vmovaps %ymm0, 256(%rdx)2605; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2606; AVX2-FP-NEXT: vmovaps %ymm0, 224(%rdx)2607; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2608; AVX2-FP-NEXT: vmovaps %ymm0, 192(%rdx)2609; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2610; AVX2-FP-NEXT: vmovaps %ymm0, 160(%rdx)2611; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2612; AVX2-FP-NEXT: vmovaps %ymm0, 128(%rdx)2613; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2614; AVX2-FP-NEXT: vmovaps %ymm0, 96(%rdx)2615; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2616; AVX2-FP-NEXT: vmovaps %ymm0, 64(%rdx)2617; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2618; AVX2-FP-NEXT: vmovaps %ymm0, 32(%rdx)2619; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2620; AVX2-FP-NEXT: vmovaps %ymm0, (%rdx)2621; AVX2-FP-NEXT: addq $456, %rsp # imm = 0x1C82622; AVX2-FP-NEXT: vzeroupper2623; AVX2-FP-NEXT: retq2624;2625; AVX2-FCP-LABEL: store_i64_stride2_vf64:2626; AVX2-FCP: # %bb.0:2627; AVX2-FCP-NEXT: subq $456, %rsp # imm = 0x1C82628; AVX2-FCP-NEXT: vmovaps 192(%rdi), %ymm02629; AVX2-FCP-NEXT: vmovaps 160(%rdi), %ymm12630; AVX2-FCP-NEXT: vmovaps 128(%rdi), %ymm22631; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm72632; AVX2-FCP-NEXT: vmovaps 32(%rdi), %ymm82633; AVX2-FCP-NEXT: vmovaps 64(%rdi), %ymm62634; AVX2-FCP-NEXT: vmovaps 96(%rdi), %ymm42635; AVX2-FCP-NEXT: vmovaps 192(%rsi), %ymm32636; AVX2-FCP-NEXT: vmovaps 160(%rsi), %ymm52637; AVX2-FCP-NEXT: vmovaps 128(%rsi), %ymm92638; AVX2-FCP-NEXT: vmovaps (%rsi), %ymm102639; AVX2-FCP-NEXT: vmovaps 32(%rsi), %ymm112640; AVX2-FCP-NEXT: vmovaps 64(%rsi), %ymm122641; AVX2-FCP-NEXT: vmovaps 96(%rsi), %ymm132642; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm14 = ymm10[0,0,2,1]2643; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm15 = ymm7[0,1,1,3]2644; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm14 = ymm15[0,1],ymm14[2,3],ymm15[4,5],ymm14[6,7]2645; AVX2-FCP-NEXT: vmovups %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2646; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,2,2,3]2647; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm7 = ymm7[2,1,3,3]2648; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm7 = ymm7[0,1],ymm10[2,3],ymm7[4,5],ymm10[6,7]2649; AVX2-FCP-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2650; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm7 = ymm11[0,0,2,1]2651; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm10 = ymm8[0,1,1,3]2652; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm7 = ymm10[0,1],ymm7[2,3],ymm10[4,5],ymm7[6,7]2653; AVX2-FCP-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2654; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm7 = ymm11[0,2,2,3]2655; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[2,1,3,3]2656; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm7 = ymm8[0,1],ymm7[2,3],ymm8[4,5],ymm7[6,7]2657; AVX2-FCP-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2658; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm7 = ymm12[0,0,2,1]2659; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm8 = ymm6[0,1,1,3]2660; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm7 = ymm8[0,1],ymm7[2,3],ymm8[4,5],ymm7[6,7]2661; AVX2-FCP-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2662; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm7 = ymm12[0,2,2,3]2663; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[2,1,3,3]2664; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm6 = ymm6[0,1],ymm7[2,3],ymm6[4,5],ymm7[6,7]2665; AVX2-FCP-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2666; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm13[0,0,2,1]2667; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm7 = ymm4[0,1,1,3]2668; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm6 = ymm7[0,1],ymm6[2,3],ymm7[4,5],ymm6[6,7]2669; AVX2-FCP-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2670; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm13[0,2,2,3]2671; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[2,1,3,3]2672; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm4[0,1],ymm6[2,3],ymm4[4,5],ymm6[6,7]2673; AVX2-FCP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2674; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm9[0,0,2,1]2675; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm2[0,1,1,3]2676; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm6[0,1],ymm4[2,3],ymm6[4,5],ymm4[6,7]2677; AVX2-FCP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2678; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm9[0,2,2,3]2679; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[2,1,3,3]2680; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm4[2,3],ymm2[4,5],ymm4[6,7]2681; AVX2-FCP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2682; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm5[0,0,2,1]2683; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm1[0,1,1,3]2684; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5],ymm2[6,7]2685; AVX2-FCP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2686; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm5[0,2,2,3]2687; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]2688; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm2[2,3],ymm1[4,5],ymm2[6,7]2689; AVX2-FCP-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2690; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm3[0,0,2,1]2691; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm0[0,1,1,3]2692; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3],ymm2[4,5],ymm1[6,7]2693; AVX2-FCP-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2694; AVX2-FCP-NEXT: vmovaps 224(%rdi), %ymm12695; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm3[0,2,2,3]2696; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2697; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3],ymm0[4,5],ymm2[6,7]2698; AVX2-FCP-NEXT: vmovups %ymm0, (%rsp) # 32-byte Spill2699; AVX2-FCP-NEXT: vmovaps 224(%rsi), %ymm02700; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm0[0,0,2,1]2701; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm3 = ymm1[0,1,1,3]2702; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]2703; AVX2-FCP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2704; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]2705; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[2,1,3,3]2706; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3],ymm1[4,5],ymm0[6,7]2707; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2708; AVX2-FCP-NEXT: vmovaps 256(%rdi), %ymm02709; AVX2-FCP-NEXT: vmovaps 256(%rsi), %ymm12710; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]2711; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm3 = ymm0[0,1,1,3]2712; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]2713; AVX2-FCP-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2714; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]2715; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2716; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2717; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2718; AVX2-FCP-NEXT: vmovaps 288(%rdi), %ymm02719; AVX2-FCP-NEXT: vmovaps 288(%rsi), %ymm12720; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]2721; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm3 = ymm0[0,1,1,3]2722; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm12 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]2723; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]2724; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2725; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm10 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2726; AVX2-FCP-NEXT: vmovaps 320(%rdi), %ymm02727; AVX2-FCP-NEXT: vmovaps 320(%rsi), %ymm12728; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]2729; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm3 = ymm0[0,1,1,3]2730; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm8 = ymm3[0,1],ymm2[2,3],ymm3[4,5],ymm2[6,7]2731; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]2732; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2733; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm7 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2734; AVX2-FCP-NEXT: vmovaps 352(%rdi), %ymm02735; AVX2-FCP-NEXT: vmovaps 352(%rsi), %ymm12736; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm1[0,0,2,1]2737; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm9 = ymm0[0,1,1,3]2738; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm6 = ymm9[0,1],ymm2[2,3],ymm9[4,5],ymm2[6,7]2739; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3]2740; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,1,3,3]2741; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm5 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]2742; AVX2-FCP-NEXT: vmovaps 384(%rdi), %ymm92743; AVX2-FCP-NEXT: vmovaps 384(%rsi), %ymm02744; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm1 = ymm0[0,0,2,1]2745; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm11 = ymm9[0,1,1,3]2746; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm4 = ymm11[0,1],ymm1[2,3],ymm11[4,5],ymm1[6,7]2747; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3]2748; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[2,1,3,3]2749; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm3 = ymm9[0,1],ymm0[2,3],ymm9[4,5],ymm0[6,7]2750; AVX2-FCP-NEXT: vmovaps 416(%rdi), %ymm92751; AVX2-FCP-NEXT: vmovaps 416(%rsi), %ymm112752; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm11[0,0,2,1]2753; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm13 = ymm9[0,1,1,3]2754; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm2 = ymm13[0,1],ymm0[2,3],ymm13[4,5],ymm0[6,7]2755; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,2,2,3]2756; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[2,1,3,3]2757; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm9 = ymm9[0,1],ymm11[2,3],ymm9[4,5],ymm11[6,7]2758; AVX2-FCP-NEXT: vmovaps 448(%rdi), %ymm112759; AVX2-FCP-NEXT: vmovaps 448(%rsi), %ymm132760; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm13[0,0,2,1]2761; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm15 = ymm11[0,1,1,3]2762; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm1 = ymm15[0,1],ymm0[2,3],ymm15[4,5],ymm0[6,7]2763; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[0,2,2,3]2764; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[2,1,3,3]2765; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm11 = ymm11[0,1],ymm13[2,3],ymm11[4,5],ymm13[6,7]2766; AVX2-FCP-NEXT: vmovaps 480(%rdi), %ymm132767; AVX2-FCP-NEXT: vmovaps 480(%rsi), %ymm152768; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm15[0,0,2,1]2769; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm14 = ymm13[0,1,1,3]2770; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm0 = ymm14[0,1],ymm0[2,3],ymm14[4,5],ymm0[6,7]2771; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm14 = ymm15[0,2,2,3]2772; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm13 = ymm13[2,1,3,3]2773; AVX2-FCP-NEXT: vblendps {{.*#+}} ymm13 = ymm13[0,1],ymm14[2,3],ymm13[4,5],ymm14[6,7]2774; AVX2-FCP-NEXT: vmovaps %ymm13, 992(%rdx)2775; AVX2-FCP-NEXT: vmovaps %ymm0, 960(%rdx)2776; AVX2-FCP-NEXT: vmovaps %ymm11, 928(%rdx)2777; AVX2-FCP-NEXT: vmovaps %ymm1, 896(%rdx)2778; AVX2-FCP-NEXT: vmovaps %ymm9, 864(%rdx)2779; AVX2-FCP-NEXT: vmovaps %ymm2, 832(%rdx)2780; AVX2-FCP-NEXT: vmovaps %ymm3, 800(%rdx)2781; AVX2-FCP-NEXT: vmovaps %ymm4, 768(%rdx)2782; AVX2-FCP-NEXT: vmovaps %ymm5, 736(%rdx)2783; AVX2-FCP-NEXT: vmovaps %ymm6, 704(%rdx)2784; AVX2-FCP-NEXT: vmovaps %ymm7, 672(%rdx)2785; AVX2-FCP-NEXT: vmovaps %ymm8, 640(%rdx)2786; AVX2-FCP-NEXT: vmovaps %ymm10, 608(%rdx)2787; AVX2-FCP-NEXT: vmovaps %ymm12, 576(%rdx)2788; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2789; AVX2-FCP-NEXT: vmovaps %ymm0, 544(%rdx)2790; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2791; AVX2-FCP-NEXT: vmovaps %ymm0, 512(%rdx)2792; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2793; AVX2-FCP-NEXT: vmovaps %ymm0, 480(%rdx)2794; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2795; AVX2-FCP-NEXT: vmovaps %ymm0, 448(%rdx)2796; AVX2-FCP-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload2797; AVX2-FCP-NEXT: vmovaps %ymm0, 416(%rdx)2798; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2799; AVX2-FCP-NEXT: vmovaps %ymm0, 384(%rdx)2800; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2801; AVX2-FCP-NEXT: vmovaps %ymm0, 352(%rdx)2802; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2803; AVX2-FCP-NEXT: vmovaps %ymm0, 320(%rdx)2804; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2805; AVX2-FCP-NEXT: vmovaps %ymm0, 288(%rdx)2806; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2807; AVX2-FCP-NEXT: vmovaps %ymm0, 256(%rdx)2808; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2809; AVX2-FCP-NEXT: vmovaps %ymm0, 224(%rdx)2810; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2811; AVX2-FCP-NEXT: vmovaps %ymm0, 192(%rdx)2812; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2813; AVX2-FCP-NEXT: vmovaps %ymm0, 160(%rdx)2814; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2815; AVX2-FCP-NEXT: vmovaps %ymm0, 128(%rdx)2816; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2817; AVX2-FCP-NEXT: vmovaps %ymm0, 96(%rdx)2818; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2819; AVX2-FCP-NEXT: vmovaps %ymm0, 64(%rdx)2820; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2821; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%rdx)2822; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2823; AVX2-FCP-NEXT: vmovaps %ymm0, (%rdx)2824; AVX2-FCP-NEXT: addq $456, %rsp # imm = 0x1C82825; AVX2-FCP-NEXT: vzeroupper2826; AVX2-FCP-NEXT: retq2827;2828; AVX512-LABEL: store_i64_stride2_vf64:2829; AVX512: # %bb.0:2830; AVX512-NEXT: vmovdqa64 448(%rdi), %zmm02831; AVX512-NEXT: vmovdqa64 384(%rdi), %zmm12832; AVX512-NEXT: vmovdqa64 320(%rdi), %zmm22833; AVX512-NEXT: vmovdqa64 256(%rdi), %zmm32834; AVX512-NEXT: vmovdqa64 (%rdi), %zmm42835; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm52836; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm62837; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm72838; AVX512-NEXT: vmovdqa64 448(%rsi), %zmm82839; AVX512-NEXT: vmovdqa64 384(%rsi), %zmm92840; AVX512-NEXT: vmovdqa64 320(%rsi), %zmm102841; AVX512-NEXT: vmovdqa64 256(%rsi), %zmm112842; AVX512-NEXT: vmovdqa64 (%rsi), %zmm122843; AVX512-NEXT: vmovdqa64 64(%rsi), %zmm132844; AVX512-NEXT: vmovdqa64 128(%rsi), %zmm142845; AVX512-NEXT: vmovdqa64 192(%rsi), %zmm152846; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm16 = [4,12,5,13,6,14,7,15]2847; AVX512-NEXT: vmovdqa64 %zmm4, %zmm172848; AVX512-NEXT: vpermt2q %zmm12, %zmm16, %zmm172849; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm18 = [0,8,1,9,2,10,3,11]2850; AVX512-NEXT: vpermt2q %zmm12, %zmm18, %zmm42851; AVX512-NEXT: vmovdqa64 %zmm5, %zmm122852; AVX512-NEXT: vpermt2q %zmm13, %zmm16, %zmm122853; AVX512-NEXT: vpermt2q %zmm13, %zmm18, %zmm52854; AVX512-NEXT: vmovdqa64 %zmm6, %zmm132855; AVX512-NEXT: vpermt2q %zmm14, %zmm16, %zmm132856; AVX512-NEXT: vpermt2q %zmm14, %zmm18, %zmm62857; AVX512-NEXT: vmovdqa64 %zmm7, %zmm142858; AVX512-NEXT: vpermt2q %zmm15, %zmm16, %zmm142859; AVX512-NEXT: vpermt2q %zmm15, %zmm18, %zmm72860; AVX512-NEXT: vmovdqa64 %zmm3, %zmm152861; AVX512-NEXT: vpermt2q %zmm11, %zmm16, %zmm152862; AVX512-NEXT: vpermt2q %zmm11, %zmm18, %zmm32863; AVX512-NEXT: vmovdqa64 %zmm2, %zmm112864; AVX512-NEXT: vpermt2q %zmm10, %zmm16, %zmm112865; AVX512-NEXT: vpermt2q %zmm10, %zmm18, %zmm22866; AVX512-NEXT: vmovdqa64 %zmm1, %zmm102867; AVX512-NEXT: vpermt2q %zmm9, %zmm16, %zmm102868; AVX512-NEXT: vpermt2q %zmm9, %zmm18, %zmm12869; AVX512-NEXT: vpermi2q %zmm8, %zmm0, %zmm162870; AVX512-NEXT: vpermt2q %zmm8, %zmm18, %zmm02871; AVX512-NEXT: vmovdqa64 %zmm0, 896(%rdx)2872; AVX512-NEXT: vmovdqa64 %zmm16, 960(%rdx)2873; AVX512-NEXT: vmovdqa64 %zmm1, 768(%rdx)2874; AVX512-NEXT: vmovdqa64 %zmm10, 832(%rdx)2875; AVX512-NEXT: vmovdqa64 %zmm2, 640(%rdx)2876; AVX512-NEXT: vmovdqa64 %zmm11, 704(%rdx)2877; AVX512-NEXT: vmovdqa64 %zmm3, 512(%rdx)2878; AVX512-NEXT: vmovdqa64 %zmm15, 576(%rdx)2879; AVX512-NEXT: vmovdqa64 %zmm7, 384(%rdx)2880; AVX512-NEXT: vmovdqa64 %zmm14, 448(%rdx)2881; AVX512-NEXT: vmovdqa64 %zmm6, 256(%rdx)2882; AVX512-NEXT: vmovdqa64 %zmm13, 320(%rdx)2883; AVX512-NEXT: vmovdqa64 %zmm5, 128(%rdx)2884; AVX512-NEXT: vmovdqa64 %zmm12, 192(%rdx)2885; AVX512-NEXT: vmovdqa64 %zmm4, (%rdx)2886; AVX512-NEXT: vmovdqa64 %zmm17, 64(%rdx)2887; AVX512-NEXT: vzeroupper2888; AVX512-NEXT: retq2889;2890; AVX512-FCP-LABEL: store_i64_stride2_vf64:2891; AVX512-FCP: # %bb.0:2892; AVX512-FCP-NEXT: vmovdqa64 448(%rdi), %zmm02893; AVX512-FCP-NEXT: vmovdqa64 384(%rdi), %zmm12894; AVX512-FCP-NEXT: vmovdqa64 320(%rdi), %zmm22895; AVX512-FCP-NEXT: vmovdqa64 256(%rdi), %zmm32896; AVX512-FCP-NEXT: vmovdqa64 (%rdi), %zmm42897; AVX512-FCP-NEXT: vmovdqa64 64(%rdi), %zmm52898; AVX512-FCP-NEXT: vmovdqa64 128(%rdi), %zmm62899; AVX512-FCP-NEXT: vmovdqa64 192(%rdi), %zmm72900; AVX512-FCP-NEXT: vmovdqa64 448(%rsi), %zmm82901; AVX512-FCP-NEXT: vmovdqa64 384(%rsi), %zmm92902; AVX512-FCP-NEXT: vmovdqa64 320(%rsi), %zmm102903; AVX512-FCP-NEXT: vmovdqa64 256(%rsi), %zmm112904; AVX512-FCP-NEXT: vmovdqa64 (%rsi), %zmm122905; AVX512-FCP-NEXT: vmovdqa64 64(%rsi), %zmm132906; AVX512-FCP-NEXT: vmovdqa64 128(%rsi), %zmm142907; AVX512-FCP-NEXT: vmovdqa64 192(%rsi), %zmm152908; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm16 = [4,12,5,13,6,14,7,15]2909; AVX512-FCP-NEXT: vmovdqa64 %zmm4, %zmm172910; AVX512-FCP-NEXT: vpermt2q %zmm12, %zmm16, %zmm172911; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm18 = [0,8,1,9,2,10,3,11]2912; AVX512-FCP-NEXT: vpermt2q %zmm12, %zmm18, %zmm42913; AVX512-FCP-NEXT: vmovdqa64 %zmm5, %zmm122914; AVX512-FCP-NEXT: vpermt2q %zmm13, %zmm16, %zmm122915; AVX512-FCP-NEXT: vpermt2q %zmm13, %zmm18, %zmm52916; AVX512-FCP-NEXT: vmovdqa64 %zmm6, %zmm132917; AVX512-FCP-NEXT: vpermt2q %zmm14, %zmm16, %zmm132918; AVX512-FCP-NEXT: vpermt2q %zmm14, %zmm18, %zmm62919; AVX512-FCP-NEXT: vmovdqa64 %zmm7, %zmm142920; AVX512-FCP-NEXT: vpermt2q %zmm15, %zmm16, %zmm142921; AVX512-FCP-NEXT: vpermt2q %zmm15, %zmm18, %zmm72922; AVX512-FCP-NEXT: vmovdqa64 %zmm3, %zmm152923; AVX512-FCP-NEXT: vpermt2q %zmm11, %zmm16, %zmm152924; AVX512-FCP-NEXT: vpermt2q %zmm11, %zmm18, %zmm32925; AVX512-FCP-NEXT: vmovdqa64 %zmm2, %zmm112926; AVX512-FCP-NEXT: vpermt2q %zmm10, %zmm16, %zmm112927; AVX512-FCP-NEXT: vpermt2q %zmm10, %zmm18, %zmm22928; AVX512-FCP-NEXT: vmovdqa64 %zmm1, %zmm102929; AVX512-FCP-NEXT: vpermt2q %zmm9, %zmm16, %zmm102930; AVX512-FCP-NEXT: vpermt2q %zmm9, %zmm18, %zmm12931; AVX512-FCP-NEXT: vpermi2q %zmm8, %zmm0, %zmm162932; AVX512-FCP-NEXT: vpermt2q %zmm8, %zmm18, %zmm02933; AVX512-FCP-NEXT: vmovdqa64 %zmm0, 896(%rdx)2934; AVX512-FCP-NEXT: vmovdqa64 %zmm16, 960(%rdx)2935; AVX512-FCP-NEXT: vmovdqa64 %zmm1, 768(%rdx)2936; AVX512-FCP-NEXT: vmovdqa64 %zmm10, 832(%rdx)2937; AVX512-FCP-NEXT: vmovdqa64 %zmm2, 640(%rdx)2938; AVX512-FCP-NEXT: vmovdqa64 %zmm11, 704(%rdx)2939; AVX512-FCP-NEXT: vmovdqa64 %zmm3, 512(%rdx)2940; AVX512-FCP-NEXT: vmovdqa64 %zmm15, 576(%rdx)2941; AVX512-FCP-NEXT: vmovdqa64 %zmm7, 384(%rdx)2942; AVX512-FCP-NEXT: vmovdqa64 %zmm14, 448(%rdx)2943; AVX512-FCP-NEXT: vmovdqa64 %zmm6, 256(%rdx)2944; AVX512-FCP-NEXT: vmovdqa64 %zmm13, 320(%rdx)2945; AVX512-FCP-NEXT: vmovdqa64 %zmm5, 128(%rdx)2946; AVX512-FCP-NEXT: vmovdqa64 %zmm12, 192(%rdx)2947; AVX512-FCP-NEXT: vmovdqa64 %zmm4, (%rdx)2948; AVX512-FCP-NEXT: vmovdqa64 %zmm17, 64(%rdx)2949; AVX512-FCP-NEXT: vzeroupper2950; AVX512-FCP-NEXT: retq2951;2952; AVX512DQ-LABEL: store_i64_stride2_vf64:2953; AVX512DQ: # %bb.0:2954; AVX512DQ-NEXT: vmovdqa64 448(%rdi), %zmm02955; AVX512DQ-NEXT: vmovdqa64 384(%rdi), %zmm12956; AVX512DQ-NEXT: vmovdqa64 320(%rdi), %zmm22957; AVX512DQ-NEXT: vmovdqa64 256(%rdi), %zmm32958; AVX512DQ-NEXT: vmovdqa64 (%rdi), %zmm42959; AVX512DQ-NEXT: vmovdqa64 64(%rdi), %zmm52960; AVX512DQ-NEXT: vmovdqa64 128(%rdi), %zmm62961; AVX512DQ-NEXT: vmovdqa64 192(%rdi), %zmm72962; AVX512DQ-NEXT: vmovdqa64 448(%rsi), %zmm82963; AVX512DQ-NEXT: vmovdqa64 384(%rsi), %zmm92964; AVX512DQ-NEXT: vmovdqa64 320(%rsi), %zmm102965; AVX512DQ-NEXT: vmovdqa64 256(%rsi), %zmm112966; AVX512DQ-NEXT: vmovdqa64 (%rsi), %zmm122967; AVX512DQ-NEXT: vmovdqa64 64(%rsi), %zmm132968; AVX512DQ-NEXT: vmovdqa64 128(%rsi), %zmm142969; AVX512DQ-NEXT: vmovdqa64 192(%rsi), %zmm152970; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm16 = [4,12,5,13,6,14,7,15]2971; AVX512DQ-NEXT: vmovdqa64 %zmm4, %zmm172972; AVX512DQ-NEXT: vpermt2q %zmm12, %zmm16, %zmm172973; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm18 = [0,8,1,9,2,10,3,11]2974; AVX512DQ-NEXT: vpermt2q %zmm12, %zmm18, %zmm42975; AVX512DQ-NEXT: vmovdqa64 %zmm5, %zmm122976; AVX512DQ-NEXT: vpermt2q %zmm13, %zmm16, %zmm122977; AVX512DQ-NEXT: vpermt2q %zmm13, %zmm18, %zmm52978; AVX512DQ-NEXT: vmovdqa64 %zmm6, %zmm132979; AVX512DQ-NEXT: vpermt2q %zmm14, %zmm16, %zmm132980; AVX512DQ-NEXT: vpermt2q %zmm14, %zmm18, %zmm62981; AVX512DQ-NEXT: vmovdqa64 %zmm7, %zmm142982; AVX512DQ-NEXT: vpermt2q %zmm15, %zmm16, %zmm142983; AVX512DQ-NEXT: vpermt2q %zmm15, %zmm18, %zmm72984; AVX512DQ-NEXT: vmovdqa64 %zmm3, %zmm152985; AVX512DQ-NEXT: vpermt2q %zmm11, %zmm16, %zmm152986; AVX512DQ-NEXT: vpermt2q %zmm11, %zmm18, %zmm32987; AVX512DQ-NEXT: vmovdqa64 %zmm2, %zmm112988; AVX512DQ-NEXT: vpermt2q %zmm10, %zmm16, %zmm112989; AVX512DQ-NEXT: vpermt2q %zmm10, %zmm18, %zmm22990; AVX512DQ-NEXT: vmovdqa64 %zmm1, %zmm102991; AVX512DQ-NEXT: vpermt2q %zmm9, %zmm16, %zmm102992; AVX512DQ-NEXT: vpermt2q %zmm9, %zmm18, %zmm12993; AVX512DQ-NEXT: vpermi2q %zmm8, %zmm0, %zmm162994; AVX512DQ-NEXT: vpermt2q %zmm8, %zmm18, %zmm02995; AVX512DQ-NEXT: vmovdqa64 %zmm0, 896(%rdx)2996; AVX512DQ-NEXT: vmovdqa64 %zmm16, 960(%rdx)2997; AVX512DQ-NEXT: vmovdqa64 %zmm1, 768(%rdx)2998; AVX512DQ-NEXT: vmovdqa64 %zmm10, 832(%rdx)2999; AVX512DQ-NEXT: vmovdqa64 %zmm2, 640(%rdx)3000; AVX512DQ-NEXT: vmovdqa64 %zmm11, 704(%rdx)3001; AVX512DQ-NEXT: vmovdqa64 %zmm3, 512(%rdx)3002; AVX512DQ-NEXT: vmovdqa64 %zmm15, 576(%rdx)3003; AVX512DQ-NEXT: vmovdqa64 %zmm7, 384(%rdx)3004; AVX512DQ-NEXT: vmovdqa64 %zmm14, 448(%rdx)3005; AVX512DQ-NEXT: vmovdqa64 %zmm6, 256(%rdx)3006; AVX512DQ-NEXT: vmovdqa64 %zmm13, 320(%rdx)3007; AVX512DQ-NEXT: vmovdqa64 %zmm5, 128(%rdx)3008; AVX512DQ-NEXT: vmovdqa64 %zmm12, 192(%rdx)3009; AVX512DQ-NEXT: vmovdqa64 %zmm4, (%rdx)3010; AVX512DQ-NEXT: vmovdqa64 %zmm17, 64(%rdx)3011; AVX512DQ-NEXT: vzeroupper3012; AVX512DQ-NEXT: retq3013;3014; AVX512DQ-FCP-LABEL: store_i64_stride2_vf64:3015; AVX512DQ-FCP: # %bb.0:3016; AVX512DQ-FCP-NEXT: vmovdqa64 448(%rdi), %zmm03017; AVX512DQ-FCP-NEXT: vmovdqa64 384(%rdi), %zmm13018; AVX512DQ-FCP-NEXT: vmovdqa64 320(%rdi), %zmm23019; AVX512DQ-FCP-NEXT: vmovdqa64 256(%rdi), %zmm33020; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdi), %zmm43021; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdi), %zmm53022; AVX512DQ-FCP-NEXT: vmovdqa64 128(%rdi), %zmm63023; AVX512DQ-FCP-NEXT: vmovdqa64 192(%rdi), %zmm73024; AVX512DQ-FCP-NEXT: vmovdqa64 448(%rsi), %zmm83025; AVX512DQ-FCP-NEXT: vmovdqa64 384(%rsi), %zmm93026; AVX512DQ-FCP-NEXT: vmovdqa64 320(%rsi), %zmm103027; AVX512DQ-FCP-NEXT: vmovdqa64 256(%rsi), %zmm113028; AVX512DQ-FCP-NEXT: vmovdqa64 (%rsi), %zmm123029; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rsi), %zmm133030; AVX512DQ-FCP-NEXT: vmovdqa64 128(%rsi), %zmm143031; AVX512DQ-FCP-NEXT: vmovdqa64 192(%rsi), %zmm153032; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm16 = [4,12,5,13,6,14,7,15]3033; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, %zmm173034; AVX512DQ-FCP-NEXT: vpermt2q %zmm12, %zmm16, %zmm173035; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm18 = [0,8,1,9,2,10,3,11]3036; AVX512DQ-FCP-NEXT: vpermt2q %zmm12, %zmm18, %zmm43037; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm5, %zmm123038; AVX512DQ-FCP-NEXT: vpermt2q %zmm13, %zmm16, %zmm123039; AVX512DQ-FCP-NEXT: vpermt2q %zmm13, %zmm18, %zmm53040; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm6, %zmm133041; AVX512DQ-FCP-NEXT: vpermt2q %zmm14, %zmm16, %zmm133042; AVX512DQ-FCP-NEXT: vpermt2q %zmm14, %zmm18, %zmm63043; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm7, %zmm143044; AVX512DQ-FCP-NEXT: vpermt2q %zmm15, %zmm16, %zmm143045; AVX512DQ-FCP-NEXT: vpermt2q %zmm15, %zmm18, %zmm73046; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, %zmm153047; AVX512DQ-FCP-NEXT: vpermt2q %zmm11, %zmm16, %zmm153048; AVX512DQ-FCP-NEXT: vpermt2q %zmm11, %zmm18, %zmm33049; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, %zmm113050; AVX512DQ-FCP-NEXT: vpermt2q %zmm10, %zmm16, %zmm113051; AVX512DQ-FCP-NEXT: vpermt2q %zmm10, %zmm18, %zmm23052; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, %zmm103053; AVX512DQ-FCP-NEXT: vpermt2q %zmm9, %zmm16, %zmm103054; AVX512DQ-FCP-NEXT: vpermt2q %zmm9, %zmm18, %zmm13055; AVX512DQ-FCP-NEXT: vpermi2q %zmm8, %zmm0, %zmm163056; AVX512DQ-FCP-NEXT: vpermt2q %zmm8, %zmm18, %zmm03057; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, 896(%rdx)3058; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm16, 960(%rdx)3059; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, 768(%rdx)3060; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm10, 832(%rdx)3061; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, 640(%rdx)3062; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm11, 704(%rdx)3063; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, 512(%rdx)3064; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm15, 576(%rdx)3065; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm7, 384(%rdx)3066; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm14, 448(%rdx)3067; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm6, 256(%rdx)3068; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm13, 320(%rdx)3069; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm5, 128(%rdx)3070; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm12, 192(%rdx)3071; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, (%rdx)3072; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm17, 64(%rdx)3073; AVX512DQ-FCP-NEXT: vzeroupper3074; AVX512DQ-FCP-NEXT: retq3075;3076; AVX512BW-LABEL: store_i64_stride2_vf64:3077; AVX512BW: # %bb.0:3078; AVX512BW-NEXT: vmovdqa64 448(%rdi), %zmm03079; AVX512BW-NEXT: vmovdqa64 384(%rdi), %zmm13080; AVX512BW-NEXT: vmovdqa64 320(%rdi), %zmm23081; AVX512BW-NEXT: vmovdqa64 256(%rdi), %zmm33082; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm43083; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm53084; AVX512BW-NEXT: vmovdqa64 128(%rdi), %zmm63085; AVX512BW-NEXT: vmovdqa64 192(%rdi), %zmm73086; AVX512BW-NEXT: vmovdqa64 448(%rsi), %zmm83087; AVX512BW-NEXT: vmovdqa64 384(%rsi), %zmm93088; AVX512BW-NEXT: vmovdqa64 320(%rsi), %zmm103089; AVX512BW-NEXT: vmovdqa64 256(%rsi), %zmm113090; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm123091; AVX512BW-NEXT: vmovdqa64 64(%rsi), %zmm133092; AVX512BW-NEXT: vmovdqa64 128(%rsi), %zmm143093; AVX512BW-NEXT: vmovdqa64 192(%rsi), %zmm153094; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm16 = [4,12,5,13,6,14,7,15]3095; AVX512BW-NEXT: vmovdqa64 %zmm4, %zmm173096; AVX512BW-NEXT: vpermt2q %zmm12, %zmm16, %zmm173097; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm18 = [0,8,1,9,2,10,3,11]3098; AVX512BW-NEXT: vpermt2q %zmm12, %zmm18, %zmm43099; AVX512BW-NEXT: vmovdqa64 %zmm5, %zmm123100; AVX512BW-NEXT: vpermt2q %zmm13, %zmm16, %zmm123101; AVX512BW-NEXT: vpermt2q %zmm13, %zmm18, %zmm53102; AVX512BW-NEXT: vmovdqa64 %zmm6, %zmm133103; AVX512BW-NEXT: vpermt2q %zmm14, %zmm16, %zmm133104; AVX512BW-NEXT: vpermt2q %zmm14, %zmm18, %zmm63105; AVX512BW-NEXT: vmovdqa64 %zmm7, %zmm143106; AVX512BW-NEXT: vpermt2q %zmm15, %zmm16, %zmm143107; AVX512BW-NEXT: vpermt2q %zmm15, %zmm18, %zmm73108; AVX512BW-NEXT: vmovdqa64 %zmm3, %zmm153109; AVX512BW-NEXT: vpermt2q %zmm11, %zmm16, %zmm153110; AVX512BW-NEXT: vpermt2q %zmm11, %zmm18, %zmm33111; AVX512BW-NEXT: vmovdqa64 %zmm2, %zmm113112; AVX512BW-NEXT: vpermt2q %zmm10, %zmm16, %zmm113113; AVX512BW-NEXT: vpermt2q %zmm10, %zmm18, %zmm23114; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm103115; AVX512BW-NEXT: vpermt2q %zmm9, %zmm16, %zmm103116; AVX512BW-NEXT: vpermt2q %zmm9, %zmm18, %zmm13117; AVX512BW-NEXT: vpermi2q %zmm8, %zmm0, %zmm163118; AVX512BW-NEXT: vpermt2q %zmm8, %zmm18, %zmm03119; AVX512BW-NEXT: vmovdqa64 %zmm0, 896(%rdx)3120; AVX512BW-NEXT: vmovdqa64 %zmm16, 960(%rdx)3121; AVX512BW-NEXT: vmovdqa64 %zmm1, 768(%rdx)3122; AVX512BW-NEXT: vmovdqa64 %zmm10, 832(%rdx)3123; AVX512BW-NEXT: vmovdqa64 %zmm2, 640(%rdx)3124; AVX512BW-NEXT: vmovdqa64 %zmm11, 704(%rdx)3125; AVX512BW-NEXT: vmovdqa64 %zmm3, 512(%rdx)3126; AVX512BW-NEXT: vmovdqa64 %zmm15, 576(%rdx)3127; AVX512BW-NEXT: vmovdqa64 %zmm7, 384(%rdx)3128; AVX512BW-NEXT: vmovdqa64 %zmm14, 448(%rdx)3129; AVX512BW-NEXT: vmovdqa64 %zmm6, 256(%rdx)3130; AVX512BW-NEXT: vmovdqa64 %zmm13, 320(%rdx)3131; AVX512BW-NEXT: vmovdqa64 %zmm5, 128(%rdx)3132; AVX512BW-NEXT: vmovdqa64 %zmm12, 192(%rdx)3133; AVX512BW-NEXT: vmovdqa64 %zmm4, (%rdx)3134; AVX512BW-NEXT: vmovdqa64 %zmm17, 64(%rdx)3135; AVX512BW-NEXT: vzeroupper3136; AVX512BW-NEXT: retq3137;3138; AVX512BW-FCP-LABEL: store_i64_stride2_vf64:3139; AVX512BW-FCP: # %bb.0:3140; AVX512BW-FCP-NEXT: vmovdqa64 448(%rdi), %zmm03141; AVX512BW-FCP-NEXT: vmovdqa64 384(%rdi), %zmm13142; AVX512BW-FCP-NEXT: vmovdqa64 320(%rdi), %zmm23143; AVX512BW-FCP-NEXT: vmovdqa64 256(%rdi), %zmm33144; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm43145; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm53146; AVX512BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm63147; AVX512BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm73148; AVX512BW-FCP-NEXT: vmovdqa64 448(%rsi), %zmm83149; AVX512BW-FCP-NEXT: vmovdqa64 384(%rsi), %zmm93150; AVX512BW-FCP-NEXT: vmovdqa64 320(%rsi), %zmm103151; AVX512BW-FCP-NEXT: vmovdqa64 256(%rsi), %zmm113152; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm123153; AVX512BW-FCP-NEXT: vmovdqa64 64(%rsi), %zmm133154; AVX512BW-FCP-NEXT: vmovdqa64 128(%rsi), %zmm143155; AVX512BW-FCP-NEXT: vmovdqa64 192(%rsi), %zmm153156; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm16 = [4,12,5,13,6,14,7,15]3157; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm173158; AVX512BW-FCP-NEXT: vpermt2q %zmm12, %zmm16, %zmm173159; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm18 = [0,8,1,9,2,10,3,11]3160; AVX512BW-FCP-NEXT: vpermt2q %zmm12, %zmm18, %zmm43161; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, %zmm123162; AVX512BW-FCP-NEXT: vpermt2q %zmm13, %zmm16, %zmm123163; AVX512BW-FCP-NEXT: vpermt2q %zmm13, %zmm18, %zmm53164; AVX512BW-FCP-NEXT: vmovdqa64 %zmm6, %zmm133165; AVX512BW-FCP-NEXT: vpermt2q %zmm14, %zmm16, %zmm133166; AVX512BW-FCP-NEXT: vpermt2q %zmm14, %zmm18, %zmm63167; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, %zmm143168; AVX512BW-FCP-NEXT: vpermt2q %zmm15, %zmm16, %zmm143169; AVX512BW-FCP-NEXT: vpermt2q %zmm15, %zmm18, %zmm73170; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, %zmm153171; AVX512BW-FCP-NEXT: vpermt2q %zmm11, %zmm16, %zmm153172; AVX512BW-FCP-NEXT: vpermt2q %zmm11, %zmm18, %zmm33173; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm113174; AVX512BW-FCP-NEXT: vpermt2q %zmm10, %zmm16, %zmm113175; AVX512BW-FCP-NEXT: vpermt2q %zmm10, %zmm18, %zmm23176; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm103177; AVX512BW-FCP-NEXT: vpermt2q %zmm9, %zmm16, %zmm103178; AVX512BW-FCP-NEXT: vpermt2q %zmm9, %zmm18, %zmm13179; AVX512BW-FCP-NEXT: vpermi2q %zmm8, %zmm0, %zmm163180; AVX512BW-FCP-NEXT: vpermt2q %zmm8, %zmm18, %zmm03181; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, 896(%rdx)3182; AVX512BW-FCP-NEXT: vmovdqa64 %zmm16, 960(%rdx)3183; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, 768(%rdx)3184; AVX512BW-FCP-NEXT: vmovdqa64 %zmm10, 832(%rdx)3185; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, 640(%rdx)3186; AVX512BW-FCP-NEXT: vmovdqa64 %zmm11, 704(%rdx)3187; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, 512(%rdx)3188; AVX512BW-FCP-NEXT: vmovdqa64 %zmm15, 576(%rdx)3189; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, 384(%rdx)3190; AVX512BW-FCP-NEXT: vmovdqa64 %zmm14, 448(%rdx)3191; AVX512BW-FCP-NEXT: vmovdqa64 %zmm6, 256(%rdx)3192; AVX512BW-FCP-NEXT: vmovdqa64 %zmm13, 320(%rdx)3193; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, 128(%rdx)3194; AVX512BW-FCP-NEXT: vmovdqa64 %zmm12, 192(%rdx)3195; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, (%rdx)3196; AVX512BW-FCP-NEXT: vmovdqa64 %zmm17, 64(%rdx)3197; AVX512BW-FCP-NEXT: vzeroupper3198; AVX512BW-FCP-NEXT: retq3199;3200; AVX512DQ-BW-LABEL: store_i64_stride2_vf64:3201; AVX512DQ-BW: # %bb.0:3202; AVX512DQ-BW-NEXT: vmovdqa64 448(%rdi), %zmm03203; AVX512DQ-BW-NEXT: vmovdqa64 384(%rdi), %zmm13204; AVX512DQ-BW-NEXT: vmovdqa64 320(%rdi), %zmm23205; AVX512DQ-BW-NEXT: vmovdqa64 256(%rdi), %zmm33206; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm43207; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm53208; AVX512DQ-BW-NEXT: vmovdqa64 128(%rdi), %zmm63209; AVX512DQ-BW-NEXT: vmovdqa64 192(%rdi), %zmm73210; AVX512DQ-BW-NEXT: vmovdqa64 448(%rsi), %zmm83211; AVX512DQ-BW-NEXT: vmovdqa64 384(%rsi), %zmm93212; AVX512DQ-BW-NEXT: vmovdqa64 320(%rsi), %zmm103213; AVX512DQ-BW-NEXT: vmovdqa64 256(%rsi), %zmm113214; AVX512DQ-BW-NEXT: vmovdqa64 (%rsi), %zmm123215; AVX512DQ-BW-NEXT: vmovdqa64 64(%rsi), %zmm133216; AVX512DQ-BW-NEXT: vmovdqa64 128(%rsi), %zmm143217; AVX512DQ-BW-NEXT: vmovdqa64 192(%rsi), %zmm153218; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm16 = [4,12,5,13,6,14,7,15]3219; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, %zmm173220; AVX512DQ-BW-NEXT: vpermt2q %zmm12, %zmm16, %zmm173221; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm18 = [0,8,1,9,2,10,3,11]3222; AVX512DQ-BW-NEXT: vpermt2q %zmm12, %zmm18, %zmm43223; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, %zmm123224; AVX512DQ-BW-NEXT: vpermt2q %zmm13, %zmm16, %zmm123225; AVX512DQ-BW-NEXT: vpermt2q %zmm13, %zmm18, %zmm53226; AVX512DQ-BW-NEXT: vmovdqa64 %zmm6, %zmm133227; AVX512DQ-BW-NEXT: vpermt2q %zmm14, %zmm16, %zmm133228; AVX512DQ-BW-NEXT: vpermt2q %zmm14, %zmm18, %zmm63229; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, %zmm143230; AVX512DQ-BW-NEXT: vpermt2q %zmm15, %zmm16, %zmm143231; AVX512DQ-BW-NEXT: vpermt2q %zmm15, %zmm18, %zmm73232; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, %zmm153233; AVX512DQ-BW-NEXT: vpermt2q %zmm11, %zmm16, %zmm153234; AVX512DQ-BW-NEXT: vpermt2q %zmm11, %zmm18, %zmm33235; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, %zmm113236; AVX512DQ-BW-NEXT: vpermt2q %zmm10, %zmm16, %zmm113237; AVX512DQ-BW-NEXT: vpermt2q %zmm10, %zmm18, %zmm23238; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, %zmm103239; AVX512DQ-BW-NEXT: vpermt2q %zmm9, %zmm16, %zmm103240; AVX512DQ-BW-NEXT: vpermt2q %zmm9, %zmm18, %zmm13241; AVX512DQ-BW-NEXT: vpermi2q %zmm8, %zmm0, %zmm163242; AVX512DQ-BW-NEXT: vpermt2q %zmm8, %zmm18, %zmm03243; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, 896(%rdx)3244; AVX512DQ-BW-NEXT: vmovdqa64 %zmm16, 960(%rdx)3245; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, 768(%rdx)3246; AVX512DQ-BW-NEXT: vmovdqa64 %zmm10, 832(%rdx)3247; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, 640(%rdx)3248; AVX512DQ-BW-NEXT: vmovdqa64 %zmm11, 704(%rdx)3249; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, 512(%rdx)3250; AVX512DQ-BW-NEXT: vmovdqa64 %zmm15, 576(%rdx)3251; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, 384(%rdx)3252; AVX512DQ-BW-NEXT: vmovdqa64 %zmm14, 448(%rdx)3253; AVX512DQ-BW-NEXT: vmovdqa64 %zmm6, 256(%rdx)3254; AVX512DQ-BW-NEXT: vmovdqa64 %zmm13, 320(%rdx)3255; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, 128(%rdx)3256; AVX512DQ-BW-NEXT: vmovdqa64 %zmm12, 192(%rdx)3257; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, (%rdx)3258; AVX512DQ-BW-NEXT: vmovdqa64 %zmm17, 64(%rdx)3259; AVX512DQ-BW-NEXT: vzeroupper3260; AVX512DQ-BW-NEXT: retq3261;3262; AVX512DQ-BW-FCP-LABEL: store_i64_stride2_vf64:3263; AVX512DQ-BW-FCP: # %bb.0:3264; AVX512DQ-BW-FCP-NEXT: vmovdqa64 448(%rdi), %zmm03265; AVX512DQ-BW-FCP-NEXT: vmovdqa64 384(%rdi), %zmm13266; AVX512DQ-BW-FCP-NEXT: vmovdqa64 320(%rdi), %zmm23267; AVX512DQ-BW-FCP-NEXT: vmovdqa64 256(%rdi), %zmm33268; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm43269; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm53270; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm63271; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm73272; AVX512DQ-BW-FCP-NEXT: vmovdqa64 448(%rsi), %zmm83273; AVX512DQ-BW-FCP-NEXT: vmovdqa64 384(%rsi), %zmm93274; AVX512DQ-BW-FCP-NEXT: vmovdqa64 320(%rsi), %zmm103275; AVX512DQ-BW-FCP-NEXT: vmovdqa64 256(%rsi), %zmm113276; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm123277; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rsi), %zmm133278; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rsi), %zmm143279; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rsi), %zmm153280; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm16 = [4,12,5,13,6,14,7,15]3281; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, %zmm173282; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm12, %zmm16, %zmm173283; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm18 = [0,8,1,9,2,10,3,11]3284; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm12, %zmm18, %zmm43285; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, %zmm123286; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm13, %zmm16, %zmm123287; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm13, %zmm18, %zmm53288; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm6, %zmm133289; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm14, %zmm16, %zmm133290; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm14, %zmm18, %zmm63291; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, %zmm143292; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm15, %zmm16, %zmm143293; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm15, %zmm18, %zmm73294; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, %zmm153295; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm11, %zmm16, %zmm153296; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm11, %zmm18, %zmm33297; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm113298; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm10, %zmm16, %zmm113299; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm10, %zmm18, %zmm23300; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm103301; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm9, %zmm16, %zmm103302; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm9, %zmm18, %zmm13303; AVX512DQ-BW-FCP-NEXT: vpermi2q %zmm8, %zmm0, %zmm163304; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm8, %zmm18, %zmm03305; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, 896(%rdx)3306; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm16, 960(%rdx)3307; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, 768(%rdx)3308; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm10, 832(%rdx)3309; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, 640(%rdx)3310; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm11, 704(%rdx)3311; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, 512(%rdx)3312; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm15, 576(%rdx)3313; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, 384(%rdx)3314; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm14, 448(%rdx)3315; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm6, 256(%rdx)3316; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm13, 320(%rdx)3317; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, 128(%rdx)3318; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm12, 192(%rdx)3319; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, (%rdx)3320; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm17, 64(%rdx)3321; AVX512DQ-BW-FCP-NEXT: vzeroupper3322; AVX512DQ-BW-FCP-NEXT: retq3323 %in.vec0 = load <64 x i64>, ptr %in.vecptr0, align 643324 %in.vec1 = load <64 x i64>, ptr %in.vecptr1, align 643325 %1 = shufflevector <64 x i64> %in.vec0, <64 x i64> %in.vec1, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>3326 %interleaved.vec = shufflevector <128 x i64> %1, <128 x i64> poison, <128 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>3327 store <128 x i64> %interleaved.vec, ptr %out.vec, align 643328 ret void3329}3330