brintos

brintos / llvm-project-archived public Read only

0
0
Text · 83.5 KiB · 995d641 Raw
1750 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 loads.17 18define void @load_i32_stride2_vf2(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {19; SSE-LABEL: load_i32_stride2_vf2:20; SSE:       # %bb.0:21; SSE-NEXT:    movdqa (%rdi), %xmm022; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[0,2,2,3]23; SSE-NEXT:    movq %xmm1, (%rsi)24; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,3,2,3]25; SSE-NEXT:    movq %xmm0, (%rdx)26; SSE-NEXT:    retq27;28; AVX-LABEL: load_i32_stride2_vf2:29; AVX:       # %bb.0:30; AVX-NEXT:    vmovaps (%rdi), %xmm031; AVX-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[0,2,2,3]32; AVX-NEXT:    vmovlps %xmm1, (%rsi)33; AVX-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3,2,3]34; AVX-NEXT:    vmovlps %xmm0, (%rdx)35; AVX-NEXT:    retq36;37; AVX2-LABEL: load_i32_stride2_vf2:38; AVX2:       # %bb.0:39; AVX2-NEXT:    vmovaps (%rdi), %xmm040; AVX2-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[0,2,2,3]41; AVX2-NEXT:    vmovlps %xmm1, (%rsi)42; AVX2-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3,2,3]43; AVX2-NEXT:    vmovlps %xmm0, (%rdx)44; AVX2-NEXT:    retq45;46; AVX2-FP-LABEL: load_i32_stride2_vf2:47; AVX2-FP:       # %bb.0:48; AVX2-FP-NEXT:    vmovaps (%rdi), %xmm049; AVX2-FP-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[0,2,2,3]50; AVX2-FP-NEXT:    vmovlps %xmm1, (%rsi)51; AVX2-FP-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3,2,3]52; AVX2-FP-NEXT:    vmovlps %xmm0, (%rdx)53; AVX2-FP-NEXT:    retq54;55; AVX2-FCP-LABEL: load_i32_stride2_vf2:56; AVX2-FCP:       # %bb.0:57; AVX2-FCP-NEXT:    vmovaps (%rdi), %xmm058; AVX2-FCP-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[0,2,2,3]59; AVX2-FCP-NEXT:    vmovlps %xmm1, (%rsi)60; AVX2-FCP-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3,2,3]61; AVX2-FCP-NEXT:    vmovlps %xmm0, (%rdx)62; AVX2-FCP-NEXT:    retq63;64; AVX512-LABEL: load_i32_stride2_vf2:65; AVX512:       # %bb.0:66; AVX512-NEXT:    vmovaps (%rdi), %xmm067; AVX512-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[0,2,2,3]68; AVX512-NEXT:    vmovlps %xmm1, (%rsi)69; AVX512-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3,2,3]70; AVX512-NEXT:    vmovlps %xmm0, (%rdx)71; AVX512-NEXT:    retq72;73; AVX512-FCP-LABEL: load_i32_stride2_vf2:74; AVX512-FCP:       # %bb.0:75; AVX512-FCP-NEXT:    vmovaps (%rdi), %xmm076; AVX512-FCP-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[0,2,2,3]77; AVX512-FCP-NEXT:    vmovlps %xmm1, (%rsi)78; AVX512-FCP-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3,2,3]79; AVX512-FCP-NEXT:    vmovlps %xmm0, (%rdx)80; AVX512-FCP-NEXT:    retq81;82; AVX512DQ-LABEL: load_i32_stride2_vf2:83; AVX512DQ:       # %bb.0:84; AVX512DQ-NEXT:    vmovaps (%rdi), %xmm085; AVX512DQ-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[0,2,2,3]86; AVX512DQ-NEXT:    vmovlps %xmm1, (%rsi)87; AVX512DQ-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3,2,3]88; AVX512DQ-NEXT:    vmovlps %xmm0, (%rdx)89; AVX512DQ-NEXT:    retq90;91; AVX512DQ-FCP-LABEL: load_i32_stride2_vf2:92; AVX512DQ-FCP:       # %bb.0:93; AVX512DQ-FCP-NEXT:    vmovaps (%rdi), %xmm094; AVX512DQ-FCP-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[0,2,2,3]95; AVX512DQ-FCP-NEXT:    vmovlps %xmm1, (%rsi)96; AVX512DQ-FCP-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3,2,3]97; AVX512DQ-FCP-NEXT:    vmovlps %xmm0, (%rdx)98; AVX512DQ-FCP-NEXT:    retq99;100; AVX512BW-LABEL: load_i32_stride2_vf2:101; AVX512BW:       # %bb.0:102; AVX512BW-NEXT:    vmovaps (%rdi), %xmm0103; AVX512BW-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[0,2,2,3]104; AVX512BW-NEXT:    vmovlps %xmm1, (%rsi)105; AVX512BW-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3,2,3]106; AVX512BW-NEXT:    vmovlps %xmm0, (%rdx)107; AVX512BW-NEXT:    retq108;109; AVX512BW-FCP-LABEL: load_i32_stride2_vf2:110; AVX512BW-FCP:       # %bb.0:111; AVX512BW-FCP-NEXT:    vmovaps (%rdi), %xmm0112; AVX512BW-FCP-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[0,2,2,3]113; AVX512BW-FCP-NEXT:    vmovlps %xmm1, (%rsi)114; AVX512BW-FCP-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3,2,3]115; AVX512BW-FCP-NEXT:    vmovlps %xmm0, (%rdx)116; AVX512BW-FCP-NEXT:    retq117;118; AVX512DQ-BW-LABEL: load_i32_stride2_vf2:119; AVX512DQ-BW:       # %bb.0:120; AVX512DQ-BW-NEXT:    vmovaps (%rdi), %xmm0121; AVX512DQ-BW-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[0,2,2,3]122; AVX512DQ-BW-NEXT:    vmovlps %xmm1, (%rsi)123; AVX512DQ-BW-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3,2,3]124; AVX512DQ-BW-NEXT:    vmovlps %xmm0, (%rdx)125; AVX512DQ-BW-NEXT:    retq126;127; AVX512DQ-BW-FCP-LABEL: load_i32_stride2_vf2:128; AVX512DQ-BW-FCP:       # %bb.0:129; AVX512DQ-BW-FCP-NEXT:    vmovaps (%rdi), %xmm0130; AVX512DQ-BW-FCP-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[0,2,2,3]131; AVX512DQ-BW-FCP-NEXT:    vmovlps %xmm1, (%rsi)132; AVX512DQ-BW-FCP-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3,2,3]133; AVX512DQ-BW-FCP-NEXT:    vmovlps %xmm0, (%rdx)134; AVX512DQ-BW-FCP-NEXT:    retq135  %wide.vec = load <4 x i32>, ptr %in.vec, align 64136  %strided.vec0 = shufflevector <4 x i32> %wide.vec, <4 x i32> poison, <2 x i32> <i32 0, i32 2>137  %strided.vec1 = shufflevector <4 x i32> %wide.vec, <4 x i32> poison, <2 x i32> <i32 1, i32 3>138  store <2 x i32> %strided.vec0, ptr %out.vec0, align 64139  store <2 x i32> %strided.vec1, ptr %out.vec1, align 64140  ret void141}142 143define void @load_i32_stride2_vf4(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {144; SSE-LABEL: load_i32_stride2_vf4:145; SSE:       # %bb.0:146; SSE-NEXT:    movaps (%rdi), %xmm0147; SSE-NEXT:    movaps 16(%rdi), %xmm1148; SSE-NEXT:    movaps %xmm0, %xmm2149; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,2],xmm1[0,2]150; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,3],xmm1[1,3]151; SSE-NEXT:    movaps %xmm2, (%rsi)152; SSE-NEXT:    movaps %xmm0, (%rdx)153; SSE-NEXT:    retq154;155; AVX-LABEL: load_i32_stride2_vf4:156; AVX:       # %bb.0:157; AVX-NEXT:    vmovaps (%rdi), %xmm0158; AVX-NEXT:    vmovaps 16(%rdi), %xmm1159; AVX-NEXT:    vshufps {{.*#+}} xmm2 = xmm0[0,2],xmm1[0,2]160; AVX-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3],xmm1[1,3]161; AVX-NEXT:    vmovaps %xmm2, (%rsi)162; AVX-NEXT:    vmovaps %xmm0, (%rdx)163; AVX-NEXT:    retq164;165; AVX2-LABEL: load_i32_stride2_vf4:166; AVX2:       # %bb.0:167; AVX2-NEXT:    vmovaps (%rdi), %xmm0168; AVX2-NEXT:    vmovaps 16(%rdi), %xmm1169; AVX2-NEXT:    vshufps {{.*#+}} xmm2 = xmm0[0,2],xmm1[0,2]170; AVX2-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3],xmm1[1,3]171; AVX2-NEXT:    vmovaps %xmm2, (%rsi)172; AVX2-NEXT:    vmovaps %xmm0, (%rdx)173; AVX2-NEXT:    retq174;175; AVX2-FP-LABEL: load_i32_stride2_vf4:176; AVX2-FP:       # %bb.0:177; AVX2-FP-NEXT:    vmovaps (%rdi), %xmm0178; AVX2-FP-NEXT:    vmovaps 16(%rdi), %xmm1179; AVX2-FP-NEXT:    vshufps {{.*#+}} xmm2 = xmm0[0,2],xmm1[0,2]180; AVX2-FP-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3],xmm1[1,3]181; AVX2-FP-NEXT:    vmovaps %xmm2, (%rsi)182; AVX2-FP-NEXT:    vmovaps %xmm0, (%rdx)183; AVX2-FP-NEXT:    retq184;185; AVX2-FCP-LABEL: load_i32_stride2_vf4:186; AVX2-FCP:       # %bb.0:187; AVX2-FCP-NEXT:    vmovaps (%rdi), %xmm0188; AVX2-FCP-NEXT:    vmovaps 16(%rdi), %xmm1189; AVX2-FCP-NEXT:    vshufps {{.*#+}} xmm2 = xmm0[0,2],xmm1[0,2]190; AVX2-FCP-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[1,3],xmm1[1,3]191; AVX2-FCP-NEXT:    vmovaps %xmm2, (%rsi)192; AVX2-FCP-NEXT:    vmovaps %xmm0, (%rdx)193; AVX2-FCP-NEXT:    retq194;195; AVX512-LABEL: load_i32_stride2_vf4:196; AVX512:       # %bb.0:197; AVX512-NEXT:    vmovdqa (%rdi), %ymm0198; AVX512-NEXT:    vmovaps (%rdi), %xmm1199; AVX512-NEXT:    vshufps {{.*#+}} xmm1 = xmm1[1,3],mem[1,3]200; AVX512-NEXT:    vpmovqd %ymm0, (%rsi)201; AVX512-NEXT:    vmovaps %xmm1, (%rdx)202; AVX512-NEXT:    vzeroupper203; AVX512-NEXT:    retq204;205; AVX512-FCP-LABEL: load_i32_stride2_vf4:206; AVX512-FCP:       # %bb.0:207; AVX512-FCP-NEXT:    vmovdqa (%rdi), %ymm0208; AVX512-FCP-NEXT:    vmovaps (%rdi), %xmm1209; AVX512-FCP-NEXT:    vshufps {{.*#+}} xmm1 = xmm1[1,3],mem[1,3]210; AVX512-FCP-NEXT:    vpmovqd %ymm0, (%rsi)211; AVX512-FCP-NEXT:    vmovaps %xmm1, (%rdx)212; AVX512-FCP-NEXT:    vzeroupper213; AVX512-FCP-NEXT:    retq214;215; AVX512DQ-LABEL: load_i32_stride2_vf4:216; AVX512DQ:       # %bb.0:217; AVX512DQ-NEXT:    vmovdqa (%rdi), %ymm0218; AVX512DQ-NEXT:    vmovaps (%rdi), %xmm1219; AVX512DQ-NEXT:    vshufps {{.*#+}} xmm1 = xmm1[1,3],mem[1,3]220; AVX512DQ-NEXT:    vpmovqd %ymm0, (%rsi)221; AVX512DQ-NEXT:    vmovaps %xmm1, (%rdx)222; AVX512DQ-NEXT:    vzeroupper223; AVX512DQ-NEXT:    retq224;225; AVX512DQ-FCP-LABEL: load_i32_stride2_vf4:226; AVX512DQ-FCP:       # %bb.0:227; AVX512DQ-FCP-NEXT:    vmovdqa (%rdi), %ymm0228; AVX512DQ-FCP-NEXT:    vmovaps (%rdi), %xmm1229; AVX512DQ-FCP-NEXT:    vshufps {{.*#+}} xmm1 = xmm1[1,3],mem[1,3]230; AVX512DQ-FCP-NEXT:    vpmovqd %ymm0, (%rsi)231; AVX512DQ-FCP-NEXT:    vmovaps %xmm1, (%rdx)232; AVX512DQ-FCP-NEXT:    vzeroupper233; AVX512DQ-FCP-NEXT:    retq234;235; AVX512BW-LABEL: load_i32_stride2_vf4:236; AVX512BW:       # %bb.0:237; AVX512BW-NEXT:    vmovdqa (%rdi), %ymm0238; AVX512BW-NEXT:    vmovaps (%rdi), %xmm1239; AVX512BW-NEXT:    vshufps {{.*#+}} xmm1 = xmm1[1,3],mem[1,3]240; AVX512BW-NEXT:    vpmovqd %ymm0, (%rsi)241; AVX512BW-NEXT:    vmovaps %xmm1, (%rdx)242; AVX512BW-NEXT:    vzeroupper243; AVX512BW-NEXT:    retq244;245; AVX512BW-FCP-LABEL: load_i32_stride2_vf4:246; AVX512BW-FCP:       # %bb.0:247; AVX512BW-FCP-NEXT:    vmovdqa (%rdi), %ymm0248; AVX512BW-FCP-NEXT:    vmovaps (%rdi), %xmm1249; AVX512BW-FCP-NEXT:    vshufps {{.*#+}} xmm1 = xmm1[1,3],mem[1,3]250; AVX512BW-FCP-NEXT:    vpmovqd %ymm0, (%rsi)251; AVX512BW-FCP-NEXT:    vmovaps %xmm1, (%rdx)252; AVX512BW-FCP-NEXT:    vzeroupper253; AVX512BW-FCP-NEXT:    retq254;255; AVX512DQ-BW-LABEL: load_i32_stride2_vf4:256; AVX512DQ-BW:       # %bb.0:257; AVX512DQ-BW-NEXT:    vmovdqa (%rdi), %ymm0258; AVX512DQ-BW-NEXT:    vmovaps (%rdi), %xmm1259; AVX512DQ-BW-NEXT:    vshufps {{.*#+}} xmm1 = xmm1[1,3],mem[1,3]260; AVX512DQ-BW-NEXT:    vpmovqd %ymm0, (%rsi)261; AVX512DQ-BW-NEXT:    vmovaps %xmm1, (%rdx)262; AVX512DQ-BW-NEXT:    vzeroupper263; AVX512DQ-BW-NEXT:    retq264;265; AVX512DQ-BW-FCP-LABEL: load_i32_stride2_vf4:266; AVX512DQ-BW-FCP:       # %bb.0:267; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdi), %ymm0268; AVX512DQ-BW-FCP-NEXT:    vmovaps (%rdi), %xmm1269; AVX512DQ-BW-FCP-NEXT:    vshufps {{.*#+}} xmm1 = xmm1[1,3],mem[1,3]270; AVX512DQ-BW-FCP-NEXT:    vpmovqd %ymm0, (%rsi)271; AVX512DQ-BW-FCP-NEXT:    vmovaps %xmm1, (%rdx)272; AVX512DQ-BW-FCP-NEXT:    vzeroupper273; AVX512DQ-BW-FCP-NEXT:    retq274  %wide.vec = load <8 x i32>, ptr %in.vec, align 64275  %strided.vec0 = shufflevector <8 x i32> %wide.vec, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>276  %strided.vec1 = shufflevector <8 x i32> %wide.vec, <8 x i32> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>277  store <4 x i32> %strided.vec0, ptr %out.vec0, align 64278  store <4 x i32> %strided.vec1, ptr %out.vec1, align 64279  ret void280}281 282define void @load_i32_stride2_vf8(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {283; SSE-LABEL: load_i32_stride2_vf8:284; SSE:       # %bb.0:285; SSE-NEXT:    movaps (%rdi), %xmm0286; SSE-NEXT:    movaps 16(%rdi), %xmm1287; SSE-NEXT:    movaps 32(%rdi), %xmm2288; SSE-NEXT:    movaps 48(%rdi), %xmm3289; SSE-NEXT:    movaps %xmm2, %xmm4290; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,2],xmm3[0,2]291; SSE-NEXT:    movaps %xmm0, %xmm5292; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,2],xmm1[0,2]293; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,3],xmm3[1,3]294; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,3],xmm1[1,3]295; SSE-NEXT:    movaps %xmm5, (%rsi)296; SSE-NEXT:    movaps %xmm4, 16(%rsi)297; SSE-NEXT:    movaps %xmm0, (%rdx)298; SSE-NEXT:    movaps %xmm2, 16(%rdx)299; SSE-NEXT:    retq300;301; AVX-LABEL: load_i32_stride2_vf8:302; AVX:       # %bb.0:303; AVX-NEXT:    vmovaps (%rdi), %ymm0304; AVX-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm0[2,3],mem[2,3]305; AVX-NEXT:    vinsertf128 $1, 32(%rdi), %ymm0, %ymm0306; AVX-NEXT:    vshufps {{.*#+}} ymm2 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]307; AVX-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]308; AVX-NEXT:    vmovaps %ymm2, (%rsi)309; AVX-NEXT:    vmovaps %ymm0, (%rdx)310; AVX-NEXT:    vzeroupper311; AVX-NEXT:    retq312;313; AVX2-LABEL: load_i32_stride2_vf8:314; AVX2:       # %bb.0:315; AVX2-NEXT:    vmovaps (%rdi), %ymm0316; AVX2-NEXT:    vmovaps 32(%rdi), %ymm1317; AVX2-NEXT:    vshufps {{.*#+}} ymm2 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]318; AVX2-NEXT:    vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]319; AVX2-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]320; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]321; AVX2-NEXT:    vmovaps %ymm2, (%rsi)322; AVX2-NEXT:    vmovaps %ymm0, (%rdx)323; AVX2-NEXT:    vzeroupper324; AVX2-NEXT:    retq325;326; AVX2-FP-LABEL: load_i32_stride2_vf8:327; AVX2-FP:       # %bb.0:328; AVX2-FP-NEXT:    vmovaps (%rdi), %ymm0329; AVX2-FP-NEXT:    vmovaps 32(%rdi), %ymm1330; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm2 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]331; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]332; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]333; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]334; AVX2-FP-NEXT:    vmovaps %ymm2, (%rsi)335; AVX2-FP-NEXT:    vmovaps %ymm0, (%rdx)336; AVX2-FP-NEXT:    vzeroupper337; AVX2-FP-NEXT:    retq338;339; AVX2-FCP-LABEL: load_i32_stride2_vf8:340; AVX2-FCP:       # %bb.0:341; AVX2-FCP-NEXT:    vmovaps (%rdi), %ymm0342; AVX2-FCP-NEXT:    vmovaps 32(%rdi), %ymm1343; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm2 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]344; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]345; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]346; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]347; AVX2-FCP-NEXT:    vmovaps %ymm2, (%rsi)348; AVX2-FCP-NEXT:    vmovaps %ymm0, (%rdx)349; AVX2-FCP-NEXT:    vzeroupper350; AVX2-FCP-NEXT:    retq351;352; AVX512-LABEL: load_i32_stride2_vf8:353; AVX512:       # %bb.0:354; AVX512-NEXT:    vmovdqa64 (%rdi), %zmm0355; AVX512-NEXT:    vmovaps (%rdi), %ymm1356; AVX512-NEXT:    vshufps {{.*#+}} ymm1 = ymm1[1,3],mem[1,3],ymm1[5,7],mem[5,7]357; AVX512-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[0,2,1,3]358; AVX512-NEXT:    vpmovqd %zmm0, (%rsi)359; AVX512-NEXT:    vmovaps %ymm1, (%rdx)360; AVX512-NEXT:    vzeroupper361; AVX512-NEXT:    retq362;363; AVX512-FCP-LABEL: load_i32_stride2_vf8:364; AVX512-FCP:       # %bb.0:365; AVX512-FCP-NEXT:    vmovdqa64 (%rdi), %zmm0366; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [1,3,5,7,9,11,13,15]367; AVX512-FCP-NEXT:    vpermps (%rdi), %zmm1, %zmm1368; AVX512-FCP-NEXT:    vpmovqd %zmm0, (%rsi)369; AVX512-FCP-NEXT:    vmovaps %ymm1, (%rdx)370; AVX512-FCP-NEXT:    vzeroupper371; AVX512-FCP-NEXT:    retq372;373; AVX512DQ-LABEL: load_i32_stride2_vf8:374; AVX512DQ:       # %bb.0:375; AVX512DQ-NEXT:    vmovdqa64 (%rdi), %zmm0376; AVX512DQ-NEXT:    vmovaps (%rdi), %ymm1377; AVX512DQ-NEXT:    vshufps {{.*#+}} ymm1 = ymm1[1,3],mem[1,3],ymm1[5,7],mem[5,7]378; AVX512DQ-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[0,2,1,3]379; AVX512DQ-NEXT:    vpmovqd %zmm0, (%rsi)380; AVX512DQ-NEXT:    vmovaps %ymm1, (%rdx)381; AVX512DQ-NEXT:    vzeroupper382; AVX512DQ-NEXT:    retq383;384; AVX512DQ-FCP-LABEL: load_i32_stride2_vf8:385; AVX512DQ-FCP:       # %bb.0:386; AVX512DQ-FCP-NEXT:    vmovdqa64 (%rdi), %zmm0387; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [1,3,5,7,9,11,13,15]388; AVX512DQ-FCP-NEXT:    vpermps (%rdi), %zmm1, %zmm1389; AVX512DQ-FCP-NEXT:    vpmovqd %zmm0, (%rsi)390; AVX512DQ-FCP-NEXT:    vmovaps %ymm1, (%rdx)391; AVX512DQ-FCP-NEXT:    vzeroupper392; AVX512DQ-FCP-NEXT:    retq393;394; AVX512BW-LABEL: load_i32_stride2_vf8:395; AVX512BW:       # %bb.0:396; AVX512BW-NEXT:    vmovdqa64 (%rdi), %zmm0397; AVX512BW-NEXT:    vmovaps (%rdi), %ymm1398; AVX512BW-NEXT:    vshufps {{.*#+}} ymm1 = ymm1[1,3],mem[1,3],ymm1[5,7],mem[5,7]399; AVX512BW-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[0,2,1,3]400; AVX512BW-NEXT:    vpmovqd %zmm0, (%rsi)401; AVX512BW-NEXT:    vmovaps %ymm1, (%rdx)402; AVX512BW-NEXT:    vzeroupper403; AVX512BW-NEXT:    retq404;405; AVX512BW-FCP-LABEL: load_i32_stride2_vf8:406; AVX512BW-FCP:       # %bb.0:407; AVX512BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm0408; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [1,3,5,7,9,11,13,15]409; AVX512BW-FCP-NEXT:    vpermps (%rdi), %zmm1, %zmm1410; AVX512BW-FCP-NEXT:    vpmovqd %zmm0, (%rsi)411; AVX512BW-FCP-NEXT:    vmovaps %ymm1, (%rdx)412; AVX512BW-FCP-NEXT:    vzeroupper413; AVX512BW-FCP-NEXT:    retq414;415; AVX512DQ-BW-LABEL: load_i32_stride2_vf8:416; AVX512DQ-BW:       # %bb.0:417; AVX512DQ-BW-NEXT:    vmovdqa64 (%rdi), %zmm0418; AVX512DQ-BW-NEXT:    vmovaps (%rdi), %ymm1419; AVX512DQ-BW-NEXT:    vshufps {{.*#+}} ymm1 = ymm1[1,3],mem[1,3],ymm1[5,7],mem[5,7]420; AVX512DQ-BW-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[0,2,1,3]421; AVX512DQ-BW-NEXT:    vpmovqd %zmm0, (%rsi)422; AVX512DQ-BW-NEXT:    vmovaps %ymm1, (%rdx)423; AVX512DQ-BW-NEXT:    vzeroupper424; AVX512DQ-BW-NEXT:    retq425;426; AVX512DQ-BW-FCP-LABEL: load_i32_stride2_vf8:427; AVX512DQ-BW-FCP:       # %bb.0:428; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm0429; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [1,3,5,7,9,11,13,15]430; AVX512DQ-BW-FCP-NEXT:    vpermps (%rdi), %zmm1, %zmm1431; AVX512DQ-BW-FCP-NEXT:    vpmovqd %zmm0, (%rsi)432; AVX512DQ-BW-FCP-NEXT:    vmovaps %ymm1, (%rdx)433; AVX512DQ-BW-FCP-NEXT:    vzeroupper434; AVX512DQ-BW-FCP-NEXT:    retq435  %wide.vec = load <16 x i32>, ptr %in.vec, align 64436  %strided.vec0 = shufflevector <16 x i32> %wide.vec, <16 x i32> poison, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>437  %strided.vec1 = shufflevector <16 x i32> %wide.vec, <16 x i32> poison, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>438  store <8 x i32> %strided.vec0, ptr %out.vec0, align 64439  store <8 x i32> %strided.vec1, ptr %out.vec1, align 64440  ret void441}442 443define void @load_i32_stride2_vf16(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {444; SSE-LABEL: load_i32_stride2_vf16:445; SSE:       # %bb.0:446; SSE-NEXT:    movaps (%rdi), %xmm0447; SSE-NEXT:    movaps 16(%rdi), %xmm1448; SSE-NEXT:    movaps 32(%rdi), %xmm2449; SSE-NEXT:    movaps 48(%rdi), %xmm3450; SSE-NEXT:    movaps 80(%rdi), %xmm4451; SSE-NEXT:    movaps 64(%rdi), %xmm5452; SSE-NEXT:    movaps 112(%rdi), %xmm6453; SSE-NEXT:    movaps 96(%rdi), %xmm7454; SSE-NEXT:    movaps %xmm7, %xmm8455; SSE-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,2],xmm6[0,2]456; SSE-NEXT:    movaps %xmm5, %xmm9457; SSE-NEXT:    shufps {{.*#+}} xmm9 = xmm9[0,2],xmm4[0,2]458; SSE-NEXT:    movaps %xmm2, %xmm10459; SSE-NEXT:    shufps {{.*#+}} xmm10 = xmm10[0,2],xmm3[0,2]460; SSE-NEXT:    movaps %xmm0, %xmm11461; SSE-NEXT:    shufps {{.*#+}} xmm11 = xmm11[0,2],xmm1[0,2]462; SSE-NEXT:    shufps {{.*#+}} xmm7 = xmm7[1,3],xmm6[1,3]463; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[1,3],xmm4[1,3]464; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,3],xmm3[1,3]465; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,3],xmm1[1,3]466; SSE-NEXT:    movaps %xmm9, 32(%rsi)467; SSE-NEXT:    movaps %xmm8, 48(%rsi)468; SSE-NEXT:    movaps %xmm11, (%rsi)469; SSE-NEXT:    movaps %xmm10, 16(%rsi)470; SSE-NEXT:    movaps %xmm5, 32(%rdx)471; SSE-NEXT:    movaps %xmm7, 48(%rdx)472; SSE-NEXT:    movaps %xmm0, (%rdx)473; SSE-NEXT:    movaps %xmm2, 16(%rdx)474; SSE-NEXT:    retq475;476; AVX-LABEL: load_i32_stride2_vf16:477; AVX:       # %bb.0:478; AVX-NEXT:    vmovaps (%rdi), %ymm0479; AVX-NEXT:    vmovaps 64(%rdi), %ymm1480; AVX-NEXT:    vperm2f128 {{.*#+}} ymm2 = ymm1[2,3],mem[2,3]481; AVX-NEXT:    vinsertf128 $1, 96(%rdi), %ymm1, %ymm1482; AVX-NEXT:    vshufps {{.*#+}} ymm3 = ymm1[0,2],ymm2[0,2],ymm1[4,6],ymm2[4,6]483; AVX-NEXT:    vperm2f128 {{.*#+}} ymm4 = ymm0[2,3],mem[2,3]484; AVX-NEXT:    vinsertf128 $1, 32(%rdi), %ymm0, %ymm0485; AVX-NEXT:    vshufps {{.*#+}} ymm5 = ymm0[0,2],ymm4[0,2],ymm0[4,6],ymm4[4,6]486; AVX-NEXT:    vshufps {{.*#+}} ymm1 = ymm1[1,3],ymm2[1,3],ymm1[5,7],ymm2[5,7]487; AVX-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm4[1,3],ymm0[5,7],ymm4[5,7]488; AVX-NEXT:    vmovaps %ymm5, (%rsi)489; AVX-NEXT:    vmovaps %ymm3, 32(%rsi)490; AVX-NEXT:    vmovaps %ymm0, (%rdx)491; AVX-NEXT:    vmovaps %ymm1, 32(%rdx)492; AVX-NEXT:    vzeroupper493; AVX-NEXT:    retq494;495; AVX2-LABEL: load_i32_stride2_vf16:496; AVX2:       # %bb.0:497; AVX2-NEXT:    vmovaps (%rdi), %ymm0498; AVX2-NEXT:    vmovaps 32(%rdi), %ymm1499; AVX2-NEXT:    vmovaps 64(%rdi), %ymm2500; AVX2-NEXT:    vmovaps 96(%rdi), %ymm3501; AVX2-NEXT:    vshufps {{.*#+}} ymm4 = ymm2[0,2],ymm3[0,2],ymm2[4,6],ymm3[4,6]502; AVX2-NEXT:    vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]503; AVX2-NEXT:    vshufps {{.*#+}} ymm5 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]504; AVX2-NEXT:    vpermpd {{.*#+}} ymm5 = ymm5[0,2,1,3]505; AVX2-NEXT:    vshufps {{.*#+}} ymm2 = ymm2[1,3],ymm3[1,3],ymm2[5,7],ymm3[5,7]506; AVX2-NEXT:    vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]507; AVX2-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]508; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]509; AVX2-NEXT:    vmovaps %ymm5, (%rsi)510; AVX2-NEXT:    vmovaps %ymm4, 32(%rsi)511; AVX2-NEXT:    vmovaps %ymm0, (%rdx)512; AVX2-NEXT:    vmovaps %ymm2, 32(%rdx)513; AVX2-NEXT:    vzeroupper514; AVX2-NEXT:    retq515;516; AVX2-FP-LABEL: load_i32_stride2_vf16:517; AVX2-FP:       # %bb.0:518; AVX2-FP-NEXT:    vmovaps (%rdi), %ymm0519; AVX2-FP-NEXT:    vmovaps 32(%rdi), %ymm1520; AVX2-FP-NEXT:    vmovaps 64(%rdi), %ymm2521; AVX2-FP-NEXT:    vmovaps 96(%rdi), %ymm3522; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm4 = ymm2[0,2],ymm3[0,2],ymm2[4,6],ymm3[4,6]523; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]524; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm5 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]525; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm5 = ymm5[0,2,1,3]526; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm2 = ymm2[1,3],ymm3[1,3],ymm2[5,7],ymm3[5,7]527; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]528; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]529; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]530; AVX2-FP-NEXT:    vmovaps %ymm5, (%rsi)531; AVX2-FP-NEXT:    vmovaps %ymm4, 32(%rsi)532; AVX2-FP-NEXT:    vmovaps %ymm0, (%rdx)533; AVX2-FP-NEXT:    vmovaps %ymm2, 32(%rdx)534; AVX2-FP-NEXT:    vzeroupper535; AVX2-FP-NEXT:    retq536;537; AVX2-FCP-LABEL: load_i32_stride2_vf16:538; AVX2-FCP:       # %bb.0:539; AVX2-FCP-NEXT:    vmovaps (%rdi), %ymm0540; AVX2-FCP-NEXT:    vmovaps 32(%rdi), %ymm1541; AVX2-FCP-NEXT:    vmovaps 64(%rdi), %ymm2542; AVX2-FCP-NEXT:    vmovaps 96(%rdi), %ymm3543; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm4 = ymm2[0,2],ymm3[0,2],ymm2[4,6],ymm3[4,6]544; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]545; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm5 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]546; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm5 = ymm5[0,2,1,3]547; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm2 = ymm2[1,3],ymm3[1,3],ymm2[5,7],ymm3[5,7]548; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]549; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]550; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]551; AVX2-FCP-NEXT:    vmovaps %ymm5, (%rsi)552; AVX2-FCP-NEXT:    vmovaps %ymm4, 32(%rsi)553; AVX2-FCP-NEXT:    vmovaps %ymm0, (%rdx)554; AVX2-FCP-NEXT:    vmovaps %ymm2, 32(%rdx)555; AVX2-FCP-NEXT:    vzeroupper556; AVX2-FCP-NEXT:    retq557;558; AVX512-LABEL: load_i32_stride2_vf16:559; AVX512:       # %bb.0:560; AVX512-NEXT:    vmovdqa64 (%rdi), %zmm0561; AVX512-NEXT:    vmovdqa64 64(%rdi), %zmm1562; AVX512-NEXT:    vpmovsxbd {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]563; AVX512-NEXT:    vpermi2d %zmm1, %zmm0, %zmm2564; AVX512-NEXT:    vpmovsxbd {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]565; AVX512-NEXT:    vpermi2d %zmm1, %zmm0, %zmm3566; AVX512-NEXT:    vmovdqa64 %zmm2, (%rsi)567; AVX512-NEXT:    vmovdqa64 %zmm3, (%rdx)568; AVX512-NEXT:    vzeroupper569; AVX512-NEXT:    retq570;571; AVX512-FCP-LABEL: load_i32_stride2_vf16:572; AVX512-FCP:       # %bb.0:573; AVX512-FCP-NEXT:    vmovdqa64 (%rdi), %zmm0574; AVX512-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm1575; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]576; AVX512-FCP-NEXT:    vpermi2d %zmm1, %zmm0, %zmm2577; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]578; AVX512-FCP-NEXT:    vpermi2d %zmm1, %zmm0, %zmm3579; AVX512-FCP-NEXT:    vmovdqa64 %zmm2, (%rsi)580; AVX512-FCP-NEXT:    vmovdqa64 %zmm3, (%rdx)581; AVX512-FCP-NEXT:    vzeroupper582; AVX512-FCP-NEXT:    retq583;584; AVX512DQ-LABEL: load_i32_stride2_vf16:585; AVX512DQ:       # %bb.0:586; AVX512DQ-NEXT:    vmovdqa64 (%rdi), %zmm0587; AVX512DQ-NEXT:    vmovdqa64 64(%rdi), %zmm1588; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]589; AVX512DQ-NEXT:    vpermi2d %zmm1, %zmm0, %zmm2590; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]591; AVX512DQ-NEXT:    vpermi2d %zmm1, %zmm0, %zmm3592; AVX512DQ-NEXT:    vmovdqa64 %zmm2, (%rsi)593; AVX512DQ-NEXT:    vmovdqa64 %zmm3, (%rdx)594; AVX512DQ-NEXT:    vzeroupper595; AVX512DQ-NEXT:    retq596;597; AVX512DQ-FCP-LABEL: load_i32_stride2_vf16:598; AVX512DQ-FCP:       # %bb.0:599; AVX512DQ-FCP-NEXT:    vmovdqa64 (%rdi), %zmm0600; AVX512DQ-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm1601; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]602; AVX512DQ-FCP-NEXT:    vpermi2d %zmm1, %zmm0, %zmm2603; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]604; AVX512DQ-FCP-NEXT:    vpermi2d %zmm1, %zmm0, %zmm3605; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm2, (%rsi)606; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm3, (%rdx)607; AVX512DQ-FCP-NEXT:    vzeroupper608; AVX512DQ-FCP-NEXT:    retq609;610; AVX512BW-LABEL: load_i32_stride2_vf16:611; AVX512BW:       # %bb.0:612; AVX512BW-NEXT:    vmovdqa64 (%rdi), %zmm0613; AVX512BW-NEXT:    vmovdqa64 64(%rdi), %zmm1614; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]615; AVX512BW-NEXT:    vpermi2d %zmm1, %zmm0, %zmm2616; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]617; AVX512BW-NEXT:    vpermi2d %zmm1, %zmm0, %zmm3618; AVX512BW-NEXT:    vmovdqa64 %zmm2, (%rsi)619; AVX512BW-NEXT:    vmovdqa64 %zmm3, (%rdx)620; AVX512BW-NEXT:    vzeroupper621; AVX512BW-NEXT:    retq622;623; AVX512BW-FCP-LABEL: load_i32_stride2_vf16:624; AVX512BW-FCP:       # %bb.0:625; AVX512BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm0626; AVX512BW-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm1627; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]628; AVX512BW-FCP-NEXT:    vpermi2d %zmm1, %zmm0, %zmm2629; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]630; AVX512BW-FCP-NEXT:    vpermi2d %zmm1, %zmm0, %zmm3631; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm2, (%rsi)632; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm3, (%rdx)633; AVX512BW-FCP-NEXT:    vzeroupper634; AVX512BW-FCP-NEXT:    retq635;636; AVX512DQ-BW-LABEL: load_i32_stride2_vf16:637; AVX512DQ-BW:       # %bb.0:638; AVX512DQ-BW-NEXT:    vmovdqa64 (%rdi), %zmm0639; AVX512DQ-BW-NEXT:    vmovdqa64 64(%rdi), %zmm1640; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]641; AVX512DQ-BW-NEXT:    vpermi2d %zmm1, %zmm0, %zmm2642; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]643; AVX512DQ-BW-NEXT:    vpermi2d %zmm1, %zmm0, %zmm3644; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm2, (%rsi)645; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm3, (%rdx)646; AVX512DQ-BW-NEXT:    vzeroupper647; AVX512DQ-BW-NEXT:    retq648;649; AVX512DQ-BW-FCP-LABEL: load_i32_stride2_vf16:650; AVX512DQ-BW-FCP:       # %bb.0:651; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm0652; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm1653; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]654; AVX512DQ-BW-FCP-NEXT:    vpermi2d %zmm1, %zmm0, %zmm2655; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]656; AVX512DQ-BW-FCP-NEXT:    vpermi2d %zmm1, %zmm0, %zmm3657; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm2, (%rsi)658; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm3, (%rdx)659; AVX512DQ-BW-FCP-NEXT:    vzeroupper660; AVX512DQ-BW-FCP-NEXT:    retq661  %wide.vec = load <32 x i32>, ptr %in.vec, align 64662  %strided.vec0 = shufflevector <32 x i32> %wide.vec, <32 x i32> poison, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>663  %strided.vec1 = shufflevector <32 x i32> %wide.vec, <32 x i32> poison, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>664  store <16 x i32> %strided.vec0, ptr %out.vec0, align 64665  store <16 x i32> %strided.vec1, ptr %out.vec1, align 64666  ret void667}668 669define void @load_i32_stride2_vf32(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {670; SSE-LABEL: load_i32_stride2_vf32:671; SSE:       # %bb.0:672; SSE-NEXT:    movaps (%rdi), %xmm1673; SSE-NEXT:    movaps 16(%rdi), %xmm8674; SSE-NEXT:    movaps 32(%rdi), %xmm0675; SSE-NEXT:    movaps 208(%rdi), %xmm11676; SSE-NEXT:    movaps 192(%rdi), %xmm2677; SSE-NEXT:    movaps 240(%rdi), %xmm10678; SSE-NEXT:    movaps 224(%rdi), %xmm4679; SSE-NEXT:    movaps 144(%rdi), %xmm14680; SSE-NEXT:    movaps 128(%rdi), %xmm3681; SSE-NEXT:    movaps 176(%rdi), %xmm12682; SSE-NEXT:    movaps 160(%rdi), %xmm6683; SSE-NEXT:    movaps 80(%rdi), %xmm13684; SSE-NEXT:    movaps 64(%rdi), %xmm5685; SSE-NEXT:    movaps 112(%rdi), %xmm15686; SSE-NEXT:    movaps 96(%rdi), %xmm7687; SSE-NEXT:    movaps %xmm5, %xmm9688; SSE-NEXT:    shufps {{.*#+}} xmm9 = xmm9[0,2],xmm13[0,2]689; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[1,3],xmm13[1,3]690; SSE-NEXT:    movaps %xmm7, %xmm13691; SSE-NEXT:    shufps {{.*#+}} xmm13 = xmm13[0,2],xmm15[0,2]692; SSE-NEXT:    shufps {{.*#+}} xmm7 = xmm7[1,3],xmm15[1,3]693; SSE-NEXT:    movaps %xmm3, %xmm15694; SSE-NEXT:    shufps {{.*#+}} xmm15 = xmm15[0,2],xmm14[0,2]695; SSE-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,3],xmm14[1,3]696; SSE-NEXT:    movaps %xmm6, %xmm14697; SSE-NEXT:    shufps {{.*#+}} xmm14 = xmm14[0,2],xmm12[0,2]698; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[1,3],xmm12[1,3]699; SSE-NEXT:    movaps %xmm2, %xmm12700; SSE-NEXT:    shufps {{.*#+}} xmm12 = xmm12[0,2],xmm11[0,2]701; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,3],xmm11[1,3]702; SSE-NEXT:    movaps %xmm4, %xmm11703; SSE-NEXT:    shufps {{.*#+}} xmm11 = xmm11[0,2],xmm10[0,2]704; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[1,3],xmm10[1,3]705; SSE-NEXT:    movaps %xmm1, %xmm10706; SSE-NEXT:    shufps {{.*#+}} xmm10 = xmm10[0,2],xmm8[0,2]707; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,3],xmm8[1,3]708; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill709; SSE-NEXT:    movaps 48(%rdi), %xmm8710; SSE-NEXT:    movaps %xmm0, %xmm1711; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,2],xmm8[0,2]712; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,3],xmm8[1,3]713; SSE-NEXT:    movaps %xmm12, 96(%rsi)714; SSE-NEXT:    movaps %xmm11, 112(%rsi)715; SSE-NEXT:    movaps %xmm15, 64(%rsi)716; SSE-NEXT:    movaps %xmm14, 80(%rsi)717; SSE-NEXT:    movaps %xmm9, 32(%rsi)718; SSE-NEXT:    movaps %xmm13, 48(%rsi)719; SSE-NEXT:    movaps %xmm10, (%rsi)720; SSE-NEXT:    movaps %xmm1, 16(%rsi)721; SSE-NEXT:    movaps %xmm4, 112(%rdx)722; SSE-NEXT:    movaps %xmm2, 96(%rdx)723; SSE-NEXT:    movaps %xmm6, 80(%rdx)724; SSE-NEXT:    movaps %xmm3, 64(%rdx)725; SSE-NEXT:    movaps %xmm7, 48(%rdx)726; SSE-NEXT:    movaps %xmm5, 32(%rdx)727; SSE-NEXT:    movaps %xmm0, 16(%rdx)728; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload729; SSE-NEXT:    movaps %xmm0, (%rdx)730; SSE-NEXT:    retq731;732; AVX-LABEL: load_i32_stride2_vf32:733; AVX:       # %bb.0:734; AVX-NEXT:    vmovaps (%rdi), %ymm0735; AVX-NEXT:    vmovaps 64(%rdi), %ymm1736; AVX-NEXT:    vmovaps 128(%rdi), %ymm2737; AVX-NEXT:    vmovaps 192(%rdi), %ymm3738; AVX-NEXT:    vperm2f128 {{.*#+}} ymm4 = ymm3[2,3],mem[2,3]739; AVX-NEXT:    vinsertf128 $1, 224(%rdi), %ymm3, %ymm3740; AVX-NEXT:    vshufps {{.*#+}} ymm5 = ymm3[0,2],ymm4[0,2],ymm3[4,6],ymm4[4,6]741; AVX-NEXT:    vperm2f128 {{.*#+}} ymm6 = ymm1[2,3],mem[2,3]742; AVX-NEXT:    vinsertf128 $1, 96(%rdi), %ymm1, %ymm1743; AVX-NEXT:    vshufps {{.*#+}} ymm7 = ymm1[0,2],ymm6[0,2],ymm1[4,6],ymm6[4,6]744; AVX-NEXT:    vperm2f128 {{.*#+}} ymm8 = ymm0[2,3],mem[2,3]745; AVX-NEXT:    vinsertf128 $1, 32(%rdi), %ymm0, %ymm0746; AVX-NEXT:    vshufps {{.*#+}} ymm9 = ymm0[0,2],ymm8[0,2],ymm0[4,6],ymm8[4,6]747; AVX-NEXT:    vperm2f128 {{.*#+}} ymm10 = ymm2[2,3],mem[2,3]748; AVX-NEXT:    vinsertf128 $1, 160(%rdi), %ymm2, %ymm2749; AVX-NEXT:    vshufps {{.*#+}} ymm11 = ymm2[0,2],ymm10[0,2],ymm2[4,6],ymm10[4,6]750; AVX-NEXT:    vshufps {{.*#+}} ymm1 = ymm1[1,3],ymm6[1,3],ymm1[5,7],ymm6[5,7]751; AVX-NEXT:    vshufps {{.*#+}} ymm3 = ymm3[1,3],ymm4[1,3],ymm3[5,7],ymm4[5,7]752; AVX-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm8[1,3],ymm0[5,7],ymm8[5,7]753; AVX-NEXT:    vshufps {{.*#+}} ymm2 = ymm2[1,3],ymm10[1,3],ymm2[5,7],ymm10[5,7]754; AVX-NEXT:    vmovaps %ymm11, 64(%rsi)755; AVX-NEXT:    vmovaps %ymm9, (%rsi)756; AVX-NEXT:    vmovaps %ymm7, 32(%rsi)757; AVX-NEXT:    vmovaps %ymm5, 96(%rsi)758; AVX-NEXT:    vmovaps %ymm2, 64(%rdx)759; AVX-NEXT:    vmovaps %ymm0, (%rdx)760; AVX-NEXT:    vmovaps %ymm3, 96(%rdx)761; AVX-NEXT:    vmovaps %ymm1, 32(%rdx)762; AVX-NEXT:    vzeroupper763; AVX-NEXT:    retq764;765; AVX2-LABEL: load_i32_stride2_vf32:766; AVX2:       # %bb.0:767; AVX2-NEXT:    vmovaps (%rdi), %ymm0768; AVX2-NEXT:    vmovaps 32(%rdi), %ymm1769; AVX2-NEXT:    vmovaps 64(%rdi), %ymm2770; AVX2-NEXT:    vmovaps 96(%rdi), %ymm3771; AVX2-NEXT:    vmovaps 160(%rdi), %ymm4772; AVX2-NEXT:    vmovaps 128(%rdi), %ymm5773; AVX2-NEXT:    vmovaps 224(%rdi), %ymm6774; AVX2-NEXT:    vmovaps 192(%rdi), %ymm7775; AVX2-NEXT:    vshufps {{.*#+}} ymm8 = ymm7[0,2],ymm6[0,2],ymm7[4,6],ymm6[4,6]776; AVX2-NEXT:    vpermpd {{.*#+}} ymm8 = ymm8[0,2,1,3]777; AVX2-NEXT:    vshufps {{.*#+}} ymm9 = ymm5[0,2],ymm4[0,2],ymm5[4,6],ymm4[4,6]778; AVX2-NEXT:    vpermpd {{.*#+}} ymm9 = ymm9[0,2,1,3]779; AVX2-NEXT:    vshufps {{.*#+}} ymm10 = ymm2[0,2],ymm3[0,2],ymm2[4,6],ymm3[4,6]780; AVX2-NEXT:    vpermpd {{.*#+}} ymm10 = ymm10[0,2,1,3]781; AVX2-NEXT:    vshufps {{.*#+}} ymm11 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]782; AVX2-NEXT:    vpermpd {{.*#+}} ymm11 = ymm11[0,2,1,3]783; AVX2-NEXT:    vshufps {{.*#+}} ymm6 = ymm7[1,3],ymm6[1,3],ymm7[5,7],ymm6[5,7]784; AVX2-NEXT:    vpermpd {{.*#+}} ymm6 = ymm6[0,2,1,3]785; AVX2-NEXT:    vshufps {{.*#+}} ymm4 = ymm5[1,3],ymm4[1,3],ymm5[5,7],ymm4[5,7]786; AVX2-NEXT:    vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]787; AVX2-NEXT:    vshufps {{.*#+}} ymm2 = ymm2[1,3],ymm3[1,3],ymm2[5,7],ymm3[5,7]788; AVX2-NEXT:    vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]789; AVX2-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]790; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]791; AVX2-NEXT:    vmovaps %ymm9, 64(%rsi)792; AVX2-NEXT:    vmovaps %ymm11, (%rsi)793; AVX2-NEXT:    vmovaps %ymm8, 96(%rsi)794; AVX2-NEXT:    vmovaps %ymm10, 32(%rsi)795; AVX2-NEXT:    vmovaps %ymm4, 64(%rdx)796; AVX2-NEXT:    vmovaps %ymm0, (%rdx)797; AVX2-NEXT:    vmovaps %ymm6, 96(%rdx)798; AVX2-NEXT:    vmovaps %ymm2, 32(%rdx)799; AVX2-NEXT:    vzeroupper800; AVX2-NEXT:    retq801;802; AVX2-FP-LABEL: load_i32_stride2_vf32:803; AVX2-FP:       # %bb.0:804; AVX2-FP-NEXT:    vmovaps (%rdi), %ymm0805; AVX2-FP-NEXT:    vmovaps 32(%rdi), %ymm1806; AVX2-FP-NEXT:    vmovaps 64(%rdi), %ymm2807; AVX2-FP-NEXT:    vmovaps 96(%rdi), %ymm3808; AVX2-FP-NEXT:    vmovaps 160(%rdi), %ymm4809; AVX2-FP-NEXT:    vmovaps 128(%rdi), %ymm5810; AVX2-FP-NEXT:    vmovaps 224(%rdi), %ymm6811; AVX2-FP-NEXT:    vmovaps 192(%rdi), %ymm7812; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm8 = ymm7[0,2],ymm6[0,2],ymm7[4,6],ymm6[4,6]813; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm8 = ymm8[0,2,1,3]814; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm9 = ymm5[0,2],ymm4[0,2],ymm5[4,6],ymm4[4,6]815; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm9 = ymm9[0,2,1,3]816; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm10 = ymm2[0,2],ymm3[0,2],ymm2[4,6],ymm3[4,6]817; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm10 = ymm10[0,2,1,3]818; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm11 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]819; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm11 = ymm11[0,2,1,3]820; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm6 = ymm7[1,3],ymm6[1,3],ymm7[5,7],ymm6[5,7]821; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm6 = ymm6[0,2,1,3]822; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm4 = ymm5[1,3],ymm4[1,3],ymm5[5,7],ymm4[5,7]823; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]824; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm2 = ymm2[1,3],ymm3[1,3],ymm2[5,7],ymm3[5,7]825; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]826; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]827; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]828; AVX2-FP-NEXT:    vmovaps %ymm9, 64(%rsi)829; AVX2-FP-NEXT:    vmovaps %ymm11, (%rsi)830; AVX2-FP-NEXT:    vmovaps %ymm8, 96(%rsi)831; AVX2-FP-NEXT:    vmovaps %ymm10, 32(%rsi)832; AVX2-FP-NEXT:    vmovaps %ymm4, 64(%rdx)833; AVX2-FP-NEXT:    vmovaps %ymm0, (%rdx)834; AVX2-FP-NEXT:    vmovaps %ymm6, 96(%rdx)835; AVX2-FP-NEXT:    vmovaps %ymm2, 32(%rdx)836; AVX2-FP-NEXT:    vzeroupper837; AVX2-FP-NEXT:    retq838;839; AVX2-FCP-LABEL: load_i32_stride2_vf32:840; AVX2-FCP:       # %bb.0:841; AVX2-FCP-NEXT:    vmovaps (%rdi), %ymm0842; AVX2-FCP-NEXT:    vmovaps 32(%rdi), %ymm1843; AVX2-FCP-NEXT:    vmovaps 64(%rdi), %ymm2844; AVX2-FCP-NEXT:    vmovaps 96(%rdi), %ymm3845; AVX2-FCP-NEXT:    vmovaps 160(%rdi), %ymm4846; AVX2-FCP-NEXT:    vmovaps 128(%rdi), %ymm5847; AVX2-FCP-NEXT:    vmovaps 224(%rdi), %ymm6848; AVX2-FCP-NEXT:    vmovaps 192(%rdi), %ymm7849; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm8 = ymm7[0,2],ymm6[0,2],ymm7[4,6],ymm6[4,6]850; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm8 = ymm8[0,2,1,3]851; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm9 = ymm5[0,2],ymm4[0,2],ymm5[4,6],ymm4[4,6]852; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm9 = ymm9[0,2,1,3]853; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm10 = ymm2[0,2],ymm3[0,2],ymm2[4,6],ymm3[4,6]854; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm10 = ymm10[0,2,1,3]855; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm11 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]856; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm11 = ymm11[0,2,1,3]857; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm6 = ymm7[1,3],ymm6[1,3],ymm7[5,7],ymm6[5,7]858; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm6 = ymm6[0,2,1,3]859; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm4 = ymm5[1,3],ymm4[1,3],ymm5[5,7],ymm4[5,7]860; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]861; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm2 = ymm2[1,3],ymm3[1,3],ymm2[5,7],ymm3[5,7]862; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]863; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm1[1,3],ymm0[5,7],ymm1[5,7]864; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]865; AVX2-FCP-NEXT:    vmovaps %ymm9, 64(%rsi)866; AVX2-FCP-NEXT:    vmovaps %ymm11, (%rsi)867; AVX2-FCP-NEXT:    vmovaps %ymm8, 96(%rsi)868; AVX2-FCP-NEXT:    vmovaps %ymm10, 32(%rsi)869; AVX2-FCP-NEXT:    vmovaps %ymm4, 64(%rdx)870; AVX2-FCP-NEXT:    vmovaps %ymm0, (%rdx)871; AVX2-FCP-NEXT:    vmovaps %ymm6, 96(%rdx)872; AVX2-FCP-NEXT:    vmovaps %ymm2, 32(%rdx)873; AVX2-FCP-NEXT:    vzeroupper874; AVX2-FCP-NEXT:    retq875;876; AVX512-LABEL: load_i32_stride2_vf32:877; AVX512:       # %bb.0:878; AVX512-NEXT:    vmovdqa64 (%rdi), %zmm0879; AVX512-NEXT:    vmovdqa64 64(%rdi), %zmm1880; AVX512-NEXT:    vmovdqa64 128(%rdi), %zmm2881; AVX512-NEXT:    vmovdqa64 192(%rdi), %zmm3882; AVX512-NEXT:    vpmovsxbd {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]883; AVX512-NEXT:    vmovdqa64 %zmm0, %zmm5884; AVX512-NEXT:    vpermt2d %zmm1, %zmm4, %zmm5885; AVX512-NEXT:    vpermi2d %zmm3, %zmm2, %zmm4886; AVX512-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]887; AVX512-NEXT:    vpermt2d %zmm1, %zmm6, %zmm0888; AVX512-NEXT:    vpermt2d %zmm3, %zmm6, %zmm2889; AVX512-NEXT:    vmovdqa64 %zmm4, 64(%rsi)890; AVX512-NEXT:    vmovdqa64 %zmm5, (%rsi)891; AVX512-NEXT:    vmovdqa64 %zmm2, 64(%rdx)892; AVX512-NEXT:    vmovdqa64 %zmm0, (%rdx)893; AVX512-NEXT:    vzeroupper894; AVX512-NEXT:    retq895;896; AVX512-FCP-LABEL: load_i32_stride2_vf32:897; AVX512-FCP:       # %bb.0:898; AVX512-FCP-NEXT:    vmovdqa64 (%rdi), %zmm0899; AVX512-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm1900; AVX512-FCP-NEXT:    vmovdqa64 128(%rdi), %zmm2901; AVX512-FCP-NEXT:    vmovdqa64 192(%rdi), %zmm3902; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]903; AVX512-FCP-NEXT:    vmovdqa64 %zmm0, %zmm5904; AVX512-FCP-NEXT:    vpermt2d %zmm1, %zmm4, %zmm5905; AVX512-FCP-NEXT:    vpermi2d %zmm3, %zmm2, %zmm4906; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]907; AVX512-FCP-NEXT:    vpermt2d %zmm1, %zmm6, %zmm0908; AVX512-FCP-NEXT:    vpermt2d %zmm3, %zmm6, %zmm2909; AVX512-FCP-NEXT:    vmovdqa64 %zmm4, 64(%rsi)910; AVX512-FCP-NEXT:    vmovdqa64 %zmm5, (%rsi)911; AVX512-FCP-NEXT:    vmovdqa64 %zmm2, 64(%rdx)912; AVX512-FCP-NEXT:    vmovdqa64 %zmm0, (%rdx)913; AVX512-FCP-NEXT:    vzeroupper914; AVX512-FCP-NEXT:    retq915;916; AVX512DQ-LABEL: load_i32_stride2_vf32:917; AVX512DQ:       # %bb.0:918; AVX512DQ-NEXT:    vmovdqa64 (%rdi), %zmm0919; AVX512DQ-NEXT:    vmovdqa64 64(%rdi), %zmm1920; AVX512DQ-NEXT:    vmovdqa64 128(%rdi), %zmm2921; AVX512DQ-NEXT:    vmovdqa64 192(%rdi), %zmm3922; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]923; AVX512DQ-NEXT:    vmovdqa64 %zmm0, %zmm5924; AVX512DQ-NEXT:    vpermt2d %zmm1, %zmm4, %zmm5925; AVX512DQ-NEXT:    vpermi2d %zmm3, %zmm2, %zmm4926; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]927; AVX512DQ-NEXT:    vpermt2d %zmm1, %zmm6, %zmm0928; AVX512DQ-NEXT:    vpermt2d %zmm3, %zmm6, %zmm2929; AVX512DQ-NEXT:    vmovdqa64 %zmm4, 64(%rsi)930; AVX512DQ-NEXT:    vmovdqa64 %zmm5, (%rsi)931; AVX512DQ-NEXT:    vmovdqa64 %zmm2, 64(%rdx)932; AVX512DQ-NEXT:    vmovdqa64 %zmm0, (%rdx)933; AVX512DQ-NEXT:    vzeroupper934; AVX512DQ-NEXT:    retq935;936; AVX512DQ-FCP-LABEL: load_i32_stride2_vf32:937; AVX512DQ-FCP:       # %bb.0:938; AVX512DQ-FCP-NEXT:    vmovdqa64 (%rdi), %zmm0939; AVX512DQ-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm1940; AVX512DQ-FCP-NEXT:    vmovdqa64 128(%rdi), %zmm2941; AVX512DQ-FCP-NEXT:    vmovdqa64 192(%rdi), %zmm3942; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]943; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm0, %zmm5944; AVX512DQ-FCP-NEXT:    vpermt2d %zmm1, %zmm4, %zmm5945; AVX512DQ-FCP-NEXT:    vpermi2d %zmm3, %zmm2, %zmm4946; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]947; AVX512DQ-FCP-NEXT:    vpermt2d %zmm1, %zmm6, %zmm0948; AVX512DQ-FCP-NEXT:    vpermt2d %zmm3, %zmm6, %zmm2949; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm4, 64(%rsi)950; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm5, (%rsi)951; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm2, 64(%rdx)952; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm0, (%rdx)953; AVX512DQ-FCP-NEXT:    vzeroupper954; AVX512DQ-FCP-NEXT:    retq955;956; AVX512BW-LABEL: load_i32_stride2_vf32:957; AVX512BW:       # %bb.0:958; AVX512BW-NEXT:    vmovdqa64 (%rdi), %zmm0959; AVX512BW-NEXT:    vmovdqa64 64(%rdi), %zmm1960; AVX512BW-NEXT:    vmovdqa64 128(%rdi), %zmm2961; AVX512BW-NEXT:    vmovdqa64 192(%rdi), %zmm3962; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]963; AVX512BW-NEXT:    vmovdqa64 %zmm0, %zmm5964; AVX512BW-NEXT:    vpermt2d %zmm1, %zmm4, %zmm5965; AVX512BW-NEXT:    vpermi2d %zmm3, %zmm2, %zmm4966; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]967; AVX512BW-NEXT:    vpermt2d %zmm1, %zmm6, %zmm0968; AVX512BW-NEXT:    vpermt2d %zmm3, %zmm6, %zmm2969; AVX512BW-NEXT:    vmovdqa64 %zmm4, 64(%rsi)970; AVX512BW-NEXT:    vmovdqa64 %zmm5, (%rsi)971; AVX512BW-NEXT:    vmovdqa64 %zmm2, 64(%rdx)972; AVX512BW-NEXT:    vmovdqa64 %zmm0, (%rdx)973; AVX512BW-NEXT:    vzeroupper974; AVX512BW-NEXT:    retq975;976; AVX512BW-FCP-LABEL: load_i32_stride2_vf32:977; AVX512BW-FCP:       # %bb.0:978; AVX512BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm0979; AVX512BW-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm1980; AVX512BW-FCP-NEXT:    vmovdqa64 128(%rdi), %zmm2981; AVX512BW-FCP-NEXT:    vmovdqa64 192(%rdi), %zmm3982; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]983; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm0, %zmm5984; AVX512BW-FCP-NEXT:    vpermt2d %zmm1, %zmm4, %zmm5985; AVX512BW-FCP-NEXT:    vpermi2d %zmm3, %zmm2, %zmm4986; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]987; AVX512BW-FCP-NEXT:    vpermt2d %zmm1, %zmm6, %zmm0988; AVX512BW-FCP-NEXT:    vpermt2d %zmm3, %zmm6, %zmm2989; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm4, 64(%rsi)990; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm5, (%rsi)991; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm2, 64(%rdx)992; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm0, (%rdx)993; AVX512BW-FCP-NEXT:    vzeroupper994; AVX512BW-FCP-NEXT:    retq995;996; AVX512DQ-BW-LABEL: load_i32_stride2_vf32:997; AVX512DQ-BW:       # %bb.0:998; AVX512DQ-BW-NEXT:    vmovdqa64 (%rdi), %zmm0999; AVX512DQ-BW-NEXT:    vmovdqa64 64(%rdi), %zmm11000; AVX512DQ-BW-NEXT:    vmovdqa64 128(%rdi), %zmm21001; AVX512DQ-BW-NEXT:    vmovdqa64 192(%rdi), %zmm31002; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]1003; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm0, %zmm51004; AVX512DQ-BW-NEXT:    vpermt2d %zmm1, %zmm4, %zmm51005; AVX512DQ-BW-NEXT:    vpermi2d %zmm3, %zmm2, %zmm41006; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]1007; AVX512DQ-BW-NEXT:    vpermt2d %zmm1, %zmm6, %zmm01008; AVX512DQ-BW-NEXT:    vpermt2d %zmm3, %zmm6, %zmm21009; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm4, 64(%rsi)1010; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm5, (%rsi)1011; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm2, 64(%rdx)1012; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm0, (%rdx)1013; AVX512DQ-BW-NEXT:    vzeroupper1014; AVX512DQ-BW-NEXT:    retq1015;1016; AVX512DQ-BW-FCP-LABEL: load_i32_stride2_vf32:1017; AVX512DQ-BW-FCP:       # %bb.0:1018; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm01019; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm11020; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 128(%rdi), %zmm21021; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 192(%rdi), %zmm31022; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]1023; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm0, %zmm51024; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm1, %zmm4, %zmm51025; AVX512DQ-BW-FCP-NEXT:    vpermi2d %zmm3, %zmm2, %zmm41026; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]1027; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm1, %zmm6, %zmm01028; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm3, %zmm6, %zmm21029; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm4, 64(%rsi)1030; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm5, (%rsi)1031; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm2, 64(%rdx)1032; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm0, (%rdx)1033; AVX512DQ-BW-FCP-NEXT:    vzeroupper1034; AVX512DQ-BW-FCP-NEXT:    retq1035  %wide.vec = load <64 x i32>, ptr %in.vec, align 641036  %strided.vec0 = shufflevector <64 x i32> %wide.vec, <64 x i32> poison, <32 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30, i32 32, i32 34, i32 36, i32 38, i32 40, i32 42, i32 44, i32 46, i32 48, i32 50, i32 52, i32 54, i32 56, i32 58, i32 60, i32 62>1037  %strided.vec1 = shufflevector <64 x i32> %wide.vec, <64 x i32> poison, <32 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31, i32 33, i32 35, i32 37, i32 39, i32 41, i32 43, i32 45, i32 47, i32 49, i32 51, i32 53, i32 55, i32 57, i32 59, i32 61, i32 63>1038  store <32 x i32> %strided.vec0, ptr %out.vec0, align 641039  store <32 x i32> %strided.vec1, ptr %out.vec1, align 641040  ret void1041}1042 1043define void @load_i32_stride2_vf64(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {1044; SSE-LABEL: load_i32_stride2_vf64:1045; SSE:       # %bb.0:1046; SSE-NEXT:    subq $152, %rsp1047; SSE-NEXT:    movaps 208(%rdi), %xmm111048; SSE-NEXT:    movaps 192(%rdi), %xmm61049; SSE-NEXT:    movaps 80(%rdi), %xmm11050; SSE-NEXT:    movaps 64(%rdi), %xmm51051; SSE-NEXT:    movaps 240(%rdi), %xmm141052; SSE-NEXT:    movaps 224(%rdi), %xmm81053; SSE-NEXT:    movaps 112(%rdi), %xmm31054; SSE-NEXT:    movaps 96(%rdi), %xmm71055; SSE-NEXT:    movaps 272(%rdi), %xmm121056; SSE-NEXT:    movaps 144(%rdi), %xmm21057; SSE-NEXT:    movaps 128(%rdi), %xmm91058; SSE-NEXT:    movaps 304(%rdi), %xmm01059; SSE-NEXT:    movaps 288(%rdi), %xmm131060; SSE-NEXT:    movaps 176(%rdi), %xmm41061; SSE-NEXT:    movaps 160(%rdi), %xmm101062; SSE-NEXT:    movaps %xmm7, %xmm151063; SSE-NEXT:    shufps {{.*#+}} xmm15 = xmm15[0,2],xmm3[0,2]1064; SSE-NEXT:    movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1065; SSE-NEXT:    shufps {{.*#+}} xmm7 = xmm7[1,3],xmm3[1,3]1066; SSE-NEXT:    movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1067; SSE-NEXT:    movaps %xmm5, %xmm31068; SSE-NEXT:    shufps {{.*#+}} xmm3 = xmm3[0,2],xmm1[0,2]1069; SSE-NEXT:    movaps %xmm3, (%rsp) # 16-byte Spill1070; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[1,3],xmm1[1,3]1071; SSE-NEXT:    movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1072; SSE-NEXT:    movaps %xmm10, %xmm11073; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,2],xmm4[0,2]1074; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1075; SSE-NEXT:    shufps {{.*#+}} xmm10 = xmm10[1,3],xmm4[1,3]1076; SSE-NEXT:    movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1077; SSE-NEXT:    movaps %xmm9, %xmm11078; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,2],xmm2[0,2]1079; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1080; SSE-NEXT:    shufps {{.*#+}} xmm9 = xmm9[1,3],xmm2[1,3]1081; SSE-NEXT:    movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1082; SSE-NEXT:    movaps %xmm8, %xmm11083; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,2],xmm14[0,2]1084; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1085; SSE-NEXT:    shufps {{.*#+}} xmm8 = xmm8[1,3],xmm14[1,3]1086; SSE-NEXT:    movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1087; SSE-NEXT:    movaps %xmm6, %xmm11088; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,2],xmm11[0,2]1089; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1090; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[1,3],xmm11[1,3]1091; SSE-NEXT:    movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1092; SSE-NEXT:    movaps %xmm13, %xmm11093; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,2],xmm0[0,2]1094; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1095; SSE-NEXT:    shufps {{.*#+}} xmm13 = xmm13[1,3],xmm0[1,3]1096; SSE-NEXT:    movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1097; SSE-NEXT:    movaps 256(%rdi), %xmm01098; SSE-NEXT:    movaps %xmm0, %xmm11099; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,2],xmm12[0,2]1100; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1101; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,3],xmm12[1,3]1102; SSE-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1103; SSE-NEXT:    movaps 368(%rdi), %xmm01104; SSE-NEXT:    movaps 352(%rdi), %xmm151105; SSE-NEXT:    movaps %xmm15, %xmm11106; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,2],xmm0[0,2]1107; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1108; SSE-NEXT:    shufps {{.*#+}} xmm15 = xmm15[1,3],xmm0[1,3]1109; SSE-NEXT:    movaps 336(%rdi), %xmm01110; SSE-NEXT:    movaps 320(%rdi), %xmm131111; SSE-NEXT:    movaps %xmm13, %xmm111112; SSE-NEXT:    shufps {{.*#+}} xmm11 = xmm11[0,2],xmm0[0,2]1113; SSE-NEXT:    shufps {{.*#+}} xmm13 = xmm13[1,3],xmm0[1,3]1114; SSE-NEXT:    movaps 432(%rdi), %xmm01115; SSE-NEXT:    movaps 416(%rdi), %xmm121116; SSE-NEXT:    movaps %xmm12, %xmm141117; SSE-NEXT:    shufps {{.*#+}} xmm14 = xmm14[0,2],xmm0[0,2]1118; SSE-NEXT:    shufps {{.*#+}} xmm12 = xmm12[1,3],xmm0[1,3]1119; SSE-NEXT:    movaps 400(%rdi), %xmm01120; SSE-NEXT:    movaps 384(%rdi), %xmm91121; SSE-NEXT:    movaps %xmm9, %xmm101122; SSE-NEXT:    shufps {{.*#+}} xmm10 = xmm10[0,2],xmm0[0,2]1123; SSE-NEXT:    shufps {{.*#+}} xmm9 = xmm9[1,3],xmm0[1,3]1124; SSE-NEXT:    movaps 496(%rdi), %xmm01125; SSE-NEXT:    movaps 480(%rdi), %xmm71126; SSE-NEXT:    movaps %xmm7, %xmm61127; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[0,2],xmm0[0,2]1128; SSE-NEXT:    shufps {{.*#+}} xmm7 = xmm7[1,3],xmm0[1,3]1129; SSE-NEXT:    movaps 464(%rdi), %xmm11130; SSE-NEXT:    movaps 448(%rdi), %xmm31131; SSE-NEXT:    movaps %xmm3, %xmm21132; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,2],xmm1[0,2]1133; SSE-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,3],xmm1[1,3]1134; SSE-NEXT:    movaps 32(%rdi), %xmm81135; SSE-NEXT:    movaps 48(%rdi), %xmm11136; SSE-NEXT:    movaps %xmm8, %xmm51137; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,2],xmm1[0,2]1138; SSE-NEXT:    shufps {{.*#+}} xmm8 = xmm8[1,3],xmm1[1,3]1139; SSE-NEXT:    movaps (%rdi), %xmm41140; SSE-NEXT:    movaps 16(%rdi), %xmm01141; SSE-NEXT:    movaps %xmm4, %xmm11142; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,2],xmm0[0,2]1143; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[1,3],xmm0[1,3]1144; SSE-NEXT:    movaps %xmm2, 224(%rsi)1145; SSE-NEXT:    movaps %xmm11, 160(%rsi)1146; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1147; SSE-NEXT:    movaps %xmm0, 96(%rsi)1148; SSE-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload1149; SSE-NEXT:    movaps %xmm0, 32(%rsi)1150; SSE-NEXT:    movaps %xmm6, 240(%rsi)1151; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1152; SSE-NEXT:    movaps %xmm0, 176(%rsi)1153; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1154; SSE-NEXT:    movaps %xmm0, 112(%rsi)1155; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1156; SSE-NEXT:    movaps %xmm0, 48(%rsi)1157; SSE-NEXT:    movaps %xmm10, 192(%rsi)1158; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1159; SSE-NEXT:    movaps %xmm0, 128(%rsi)1160; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1161; SSE-NEXT:    movaps %xmm0, 64(%rsi)1162; SSE-NEXT:    movaps %xmm1, (%rsi)1163; SSE-NEXT:    movaps %xmm14, 208(%rsi)1164; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1165; SSE-NEXT:    movaps %xmm0, 144(%rsi)1166; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1167; SSE-NEXT:    movaps %xmm0, 80(%rsi)1168; SSE-NEXT:    movaps %xmm5, 16(%rsi)1169; SSE-NEXT:    movaps %xmm3, 224(%rdx)1170; SSE-NEXT:    movaps %xmm7, 240(%rdx)1171; SSE-NEXT:    movaps %xmm9, 192(%rdx)1172; SSE-NEXT:    movaps %xmm12, 208(%rdx)1173; SSE-NEXT:    movaps %xmm13, 160(%rdx)1174; SSE-NEXT:    movaps %xmm15, 176(%rdx)1175; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1176; SSE-NEXT:    movaps %xmm0, 128(%rdx)1177; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1178; SSE-NEXT:    movaps %xmm0, 144(%rdx)1179; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1180; SSE-NEXT:    movaps %xmm0, 96(%rdx)1181; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1182; SSE-NEXT:    movaps %xmm0, 112(%rdx)1183; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1184; SSE-NEXT:    movaps %xmm0, 64(%rdx)1185; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1186; SSE-NEXT:    movaps %xmm0, 80(%rdx)1187; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1188; SSE-NEXT:    movaps %xmm0, 32(%rdx)1189; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1190; SSE-NEXT:    movaps %xmm0, 48(%rdx)1191; SSE-NEXT:    movaps %xmm4, (%rdx)1192; SSE-NEXT:    movaps %xmm8, 16(%rdx)1193; SSE-NEXT:    addq $152, %rsp1194; SSE-NEXT:    retq1195;1196; AVX-LABEL: load_i32_stride2_vf64:1197; AVX:       # %bb.0:1198; AVX-NEXT:    vmovaps 384(%rdi), %ymm41199; AVX-NEXT:    vmovaps 256(%rdi), %ymm61200; AVX-NEXT:    vmovaps 320(%rdi), %ymm51201; AVX-NEXT:    vmovaps (%rdi), %ymm11202; AVX-NEXT:    vmovaps 64(%rdi), %ymm21203; AVX-NEXT:    vmovaps 128(%rdi), %ymm91204; AVX-NEXT:    vmovaps 192(%rdi), %ymm31205; AVX-NEXT:    vmovaps 448(%rdi), %ymm01206; AVX-NEXT:    vperm2f128 {{.*#+}} ymm8 = ymm0[2,3],mem[2,3]1207; AVX-NEXT:    vinsertf128 $1, 480(%rdi), %ymm0, %ymm101208; AVX-NEXT:    vshufps {{.*#+}} ymm0 = ymm10[0,2],ymm8[0,2],ymm10[4,6],ymm8[4,6]1209; AVX-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1210; AVX-NEXT:    vperm2f128 {{.*#+}} ymm7 = ymm2[2,3],mem[2,3]1211; AVX-NEXT:    vinsertf128 $1, 96(%rdi), %ymm2, %ymm111212; AVX-NEXT:    vshufps {{.*#+}} ymm2 = ymm11[0,2],ymm7[0,2],ymm11[4,6],ymm7[4,6]1213; AVX-NEXT:    vperm2f128 {{.*#+}} ymm12 = ymm3[2,3],mem[2,3]1214; AVX-NEXT:    vinsertf128 $1, 224(%rdi), %ymm3, %ymm131215; AVX-NEXT:    vshufps {{.*#+}} ymm3 = ymm13[0,2],ymm12[0,2],ymm13[4,6],ymm12[4,6]1216; AVX-NEXT:    vperm2f128 {{.*#+}} ymm14 = ymm5[2,3],mem[2,3]1217; AVX-NEXT:    vinsertf128 $1, 352(%rdi), %ymm5, %ymm151218; AVX-NEXT:    vshufps {{.*#+}} ymm5 = ymm15[0,2],ymm14[0,2],ymm15[4,6],ymm14[4,6]1219; AVX-NEXT:    vshufps {{.*#+}} ymm7 = ymm11[1,3],ymm7[1,3],ymm11[5,7],ymm7[5,7]1220; AVX-NEXT:    vperm2f128 {{.*#+}} ymm11 = ymm9[2,3],mem[2,3]1221; AVX-NEXT:    vinsertf128 $1, 160(%rdi), %ymm9, %ymm91222; AVX-NEXT:    vshufps {{.*#+}} ymm12 = ymm13[1,3],ymm12[1,3],ymm13[5,7],ymm12[5,7]1223; AVX-NEXT:    vperm2f128 {{.*#+}} ymm13 = ymm6[2,3],mem[2,3]1224; AVX-NEXT:    vinsertf128 $1, 288(%rdi), %ymm6, %ymm61225; AVX-NEXT:    vshufps {{.*#+}} ymm14 = ymm15[1,3],ymm14[1,3],ymm15[5,7],ymm14[5,7]1226; AVX-NEXT:    vperm2f128 {{.*#+}} ymm15 = ymm4[2,3],mem[2,3]1227; AVX-NEXT:    vinsertf128 $1, 416(%rdi), %ymm4, %ymm41228; AVX-NEXT:    vshufps {{.*#+}} ymm8 = ymm10[1,3],ymm8[1,3],ymm10[5,7],ymm8[5,7]1229; AVX-NEXT:    vshufps {{.*#+}} ymm10 = ymm4[0,2],ymm15[0,2],ymm4[4,6],ymm15[4,6]1230; AVX-NEXT:    vshufps {{.*#+}} ymm4 = ymm4[1,3],ymm15[1,3],ymm4[5,7],ymm15[5,7]1231; AVX-NEXT:    vshufps {{.*#+}} ymm15 = ymm6[0,2],ymm13[0,2],ymm6[4,6],ymm13[4,6]1232; AVX-NEXT:    vshufps {{.*#+}} ymm6 = ymm6[1,3],ymm13[1,3],ymm6[5,7],ymm13[5,7]1233; AVX-NEXT:    vshufps {{.*#+}} ymm13 = ymm9[0,2],ymm11[0,2],ymm9[4,6],ymm11[4,6]1234; AVX-NEXT:    vshufps {{.*#+}} ymm9 = ymm9[1,3],ymm11[1,3],ymm9[5,7],ymm11[5,7]1235; AVX-NEXT:    vperm2f128 {{.*#+}} ymm11 = ymm1[2,3],mem[2,3]1236; AVX-NEXT:    vinsertf128 $1, 32(%rdi), %ymm1, %ymm11237; AVX-NEXT:    vshufps {{.*#+}} ymm0 = ymm1[0,2],ymm11[0,2],ymm1[4,6],ymm11[4,6]1238; AVX-NEXT:    vshufps {{.*#+}} ymm1 = ymm1[1,3],ymm11[1,3],ymm1[5,7],ymm11[5,7]1239; AVX-NEXT:    vmovaps %ymm10, 192(%rsi)1240; AVX-NEXT:    vmovaps %ymm15, 128(%rsi)1241; AVX-NEXT:    vmovaps %ymm13, 64(%rsi)1242; AVX-NEXT:    vmovaps %ymm0, (%rsi)1243; AVX-NEXT:    vmovaps %ymm5, 160(%rsi)1244; AVX-NEXT:    vmovaps %ymm3, 96(%rsi)1245; AVX-NEXT:    vmovaps %ymm2, 32(%rsi)1246; AVX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1247; AVX-NEXT:    vmovaps %ymm0, 224(%rsi)1248; AVX-NEXT:    vmovaps %ymm1, (%rdx)1249; AVX-NEXT:    vmovaps %ymm9, 64(%rdx)1250; AVX-NEXT:    vmovaps %ymm6, 128(%rdx)1251; AVX-NEXT:    vmovaps %ymm4, 192(%rdx)1252; AVX-NEXT:    vmovaps %ymm8, 224(%rdx)1253; AVX-NEXT:    vmovaps %ymm14, 160(%rdx)1254; AVX-NEXT:    vmovaps %ymm12, 96(%rdx)1255; AVX-NEXT:    vmovaps %ymm7, 32(%rdx)1256; AVX-NEXT:    vzeroupper1257; AVX-NEXT:    retq1258;1259; AVX2-LABEL: load_i32_stride2_vf64:1260; AVX2:       # %bb.0:1261; AVX2-NEXT:    vmovaps (%rdi), %ymm11262; AVX2-NEXT:    vmovaps 64(%rdi), %ymm31263; AVX2-NEXT:    vmovaps 96(%rdi), %ymm41264; AVX2-NEXT:    vmovaps 416(%rdi), %ymm101265; AVX2-NEXT:    vmovaps 384(%rdi), %ymm121266; AVX2-NEXT:    vmovaps 288(%rdi), %ymm81267; AVX2-NEXT:    vmovaps 256(%rdi), %ymm111268; AVX2-NEXT:    vmovaps 160(%rdi), %ymm71269; AVX2-NEXT:    vmovaps 128(%rdi), %ymm91270; AVX2-NEXT:    vmovaps 480(%rdi), %ymm61271; AVX2-NEXT:    vmovaps 448(%rdi), %ymm141272; AVX2-NEXT:    vmovaps 352(%rdi), %ymm51273; AVX2-NEXT:    vmovaps 320(%rdi), %ymm151274; AVX2-NEXT:    vmovaps 224(%rdi), %ymm21275; AVX2-NEXT:    vmovaps 192(%rdi), %ymm131276; AVX2-NEXT:    vshufps {{.*#+}} ymm0 = ymm13[0,2],ymm2[0,2],ymm13[4,6],ymm2[4,6]1277; AVX2-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1278; AVX2-NEXT:    vshufps {{.*#+}} ymm2 = ymm13[1,3],ymm2[1,3],ymm13[5,7],ymm2[5,7]1279; AVX2-NEXT:    vshufps {{.*#+}} ymm13 = ymm15[0,2],ymm5[0,2],ymm15[4,6],ymm5[4,6]1280; AVX2-NEXT:    vshufps {{.*#+}} ymm5 = ymm15[1,3],ymm5[1,3],ymm15[5,7],ymm5[5,7]1281; AVX2-NEXT:    vshufps {{.*#+}} ymm15 = ymm14[0,2],ymm6[0,2],ymm14[4,6],ymm6[4,6]1282; AVX2-NEXT:    vshufps {{.*#+}} ymm6 = ymm14[1,3],ymm6[1,3],ymm14[5,7],ymm6[5,7]1283; AVX2-NEXT:    vshufps {{.*#+}} ymm14 = ymm12[0,2],ymm10[0,2],ymm12[4,6],ymm10[4,6]1284; AVX2-NEXT:    vshufps {{.*#+}} ymm10 = ymm12[1,3],ymm10[1,3],ymm12[5,7],ymm10[5,7]1285; AVX2-NEXT:    vshufps {{.*#+}} ymm12 = ymm11[0,2],ymm8[0,2],ymm11[4,6],ymm8[4,6]1286; AVX2-NEXT:    vshufps {{.*#+}} ymm8 = ymm11[1,3],ymm8[1,3],ymm11[5,7],ymm8[5,7]1287; AVX2-NEXT:    vshufps {{.*#+}} ymm11 = ymm9[0,2],ymm7[0,2],ymm9[4,6],ymm7[4,6]1288; AVX2-NEXT:    vshufps {{.*#+}} ymm7 = ymm9[1,3],ymm7[1,3],ymm9[5,7],ymm7[5,7]1289; AVX2-NEXT:    vshufps {{.*#+}} ymm9 = ymm3[0,2],ymm4[0,2],ymm3[4,6],ymm4[4,6]1290; AVX2-NEXT:    vshufps {{.*#+}} ymm3 = ymm3[1,3],ymm4[1,3],ymm3[5,7],ymm4[5,7]1291; AVX2-NEXT:    vmovaps 32(%rdi), %ymm41292; AVX2-NEXT:    vshufps {{.*#+}} ymm0 = ymm1[0,2],ymm4[0,2],ymm1[4,6],ymm4[4,6]1293; AVX2-NEXT:    vshufps {{.*#+}} ymm1 = ymm1[1,3],ymm4[1,3],ymm1[5,7],ymm4[5,7]1294; AVX2-NEXT:    vpermpd {{.*#+}} ymm4 = ymm14[0,2,1,3]1295; AVX2-NEXT:    vmovaps %ymm4, 192(%rsi)1296; AVX2-NEXT:    vpermpd {{.*#+}} ymm4 = ymm12[0,2,1,3]1297; AVX2-NEXT:    vmovaps %ymm4, 128(%rsi)1298; AVX2-NEXT:    vpermpd {{.*#+}} ymm4 = ymm11[0,2,1,3]1299; AVX2-NEXT:    vmovaps %ymm4, 64(%rsi)1300; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]1301; AVX2-NEXT:    vmovaps %ymm0, (%rsi)1302; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm15[0,2,1,3]1303; AVX2-NEXT:    vmovaps %ymm0, 224(%rsi)1304; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm13[0,2,1,3]1305; AVX2-NEXT:    vmovaps %ymm0, 160(%rsi)1306; AVX2-NEXT:    vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload1307; AVX2-NEXT:    # ymm0 = mem[0,2,1,3]1308; AVX2-NEXT:    vmovaps %ymm0, 96(%rsi)1309; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm9[0,2,1,3]1310; AVX2-NEXT:    vmovaps %ymm0, 32(%rsi)1311; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm1[0,2,1,3]1312; AVX2-NEXT:    vmovaps %ymm0, (%rdx)1313; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm7[0,2,1,3]1314; AVX2-NEXT:    vmovaps %ymm0, 64(%rdx)1315; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm8[0,2,1,3]1316; AVX2-NEXT:    vmovaps %ymm0, 128(%rdx)1317; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm10[0,2,1,3]1318; AVX2-NEXT:    vmovaps %ymm0, 192(%rdx)1319; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm6[0,2,1,3]1320; AVX2-NEXT:    vmovaps %ymm0, 224(%rdx)1321; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm5[0,2,1,3]1322; AVX2-NEXT:    vmovaps %ymm0, 160(%rdx)1323; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm2[0,2,1,3]1324; AVX2-NEXT:    vmovaps %ymm0, 96(%rdx)1325; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm3[0,2,1,3]1326; AVX2-NEXT:    vmovaps %ymm0, 32(%rdx)1327; AVX2-NEXT:    vzeroupper1328; AVX2-NEXT:    retq1329;1330; AVX2-FP-LABEL: load_i32_stride2_vf64:1331; AVX2-FP:       # %bb.0:1332; AVX2-FP-NEXT:    vmovaps (%rdi), %ymm11333; AVX2-FP-NEXT:    vmovaps 64(%rdi), %ymm31334; AVX2-FP-NEXT:    vmovaps 96(%rdi), %ymm41335; AVX2-FP-NEXT:    vmovaps 416(%rdi), %ymm101336; AVX2-FP-NEXT:    vmovaps 384(%rdi), %ymm121337; AVX2-FP-NEXT:    vmovaps 288(%rdi), %ymm81338; AVX2-FP-NEXT:    vmovaps 256(%rdi), %ymm111339; AVX2-FP-NEXT:    vmovaps 160(%rdi), %ymm71340; AVX2-FP-NEXT:    vmovaps 128(%rdi), %ymm91341; AVX2-FP-NEXT:    vmovaps 480(%rdi), %ymm61342; AVX2-FP-NEXT:    vmovaps 448(%rdi), %ymm141343; AVX2-FP-NEXT:    vmovaps 352(%rdi), %ymm51344; AVX2-FP-NEXT:    vmovaps 320(%rdi), %ymm151345; AVX2-FP-NEXT:    vmovaps 224(%rdi), %ymm21346; AVX2-FP-NEXT:    vmovaps 192(%rdi), %ymm131347; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm0 = ymm13[0,2],ymm2[0,2],ymm13[4,6],ymm2[4,6]1348; AVX2-FP-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1349; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm2 = ymm13[1,3],ymm2[1,3],ymm13[5,7],ymm2[5,7]1350; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm13 = ymm15[0,2],ymm5[0,2],ymm15[4,6],ymm5[4,6]1351; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm5 = ymm15[1,3],ymm5[1,3],ymm15[5,7],ymm5[5,7]1352; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm15 = ymm14[0,2],ymm6[0,2],ymm14[4,6],ymm6[4,6]1353; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm6 = ymm14[1,3],ymm6[1,3],ymm14[5,7],ymm6[5,7]1354; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm14 = ymm12[0,2],ymm10[0,2],ymm12[4,6],ymm10[4,6]1355; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm10 = ymm12[1,3],ymm10[1,3],ymm12[5,7],ymm10[5,7]1356; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm12 = ymm11[0,2],ymm8[0,2],ymm11[4,6],ymm8[4,6]1357; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm8 = ymm11[1,3],ymm8[1,3],ymm11[5,7],ymm8[5,7]1358; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm11 = ymm9[0,2],ymm7[0,2],ymm9[4,6],ymm7[4,6]1359; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm7 = ymm9[1,3],ymm7[1,3],ymm9[5,7],ymm7[5,7]1360; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm9 = ymm3[0,2],ymm4[0,2],ymm3[4,6],ymm4[4,6]1361; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm3 = ymm3[1,3],ymm4[1,3],ymm3[5,7],ymm4[5,7]1362; AVX2-FP-NEXT:    vmovaps 32(%rdi), %ymm41363; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm0 = ymm1[0,2],ymm4[0,2],ymm1[4,6],ymm4[4,6]1364; AVX2-FP-NEXT:    vshufps {{.*#+}} ymm1 = ymm1[1,3],ymm4[1,3],ymm1[5,7],ymm4[5,7]1365; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm4 = ymm14[0,2,1,3]1366; AVX2-FP-NEXT:    vmovaps %ymm4, 192(%rsi)1367; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm4 = ymm12[0,2,1,3]1368; AVX2-FP-NEXT:    vmovaps %ymm4, 128(%rsi)1369; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm4 = ymm11[0,2,1,3]1370; AVX2-FP-NEXT:    vmovaps %ymm4, 64(%rsi)1371; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]1372; AVX2-FP-NEXT:    vmovaps %ymm0, (%rsi)1373; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm15[0,2,1,3]1374; AVX2-FP-NEXT:    vmovaps %ymm0, 224(%rsi)1375; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm13[0,2,1,3]1376; AVX2-FP-NEXT:    vmovaps %ymm0, 160(%rsi)1377; AVX2-FP-NEXT:    vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload1378; AVX2-FP-NEXT:    # ymm0 = mem[0,2,1,3]1379; AVX2-FP-NEXT:    vmovaps %ymm0, 96(%rsi)1380; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm9[0,2,1,3]1381; AVX2-FP-NEXT:    vmovaps %ymm0, 32(%rsi)1382; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm1[0,2,1,3]1383; AVX2-FP-NEXT:    vmovaps %ymm0, (%rdx)1384; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm7[0,2,1,3]1385; AVX2-FP-NEXT:    vmovaps %ymm0, 64(%rdx)1386; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm8[0,2,1,3]1387; AVX2-FP-NEXT:    vmovaps %ymm0, 128(%rdx)1388; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm10[0,2,1,3]1389; AVX2-FP-NEXT:    vmovaps %ymm0, 192(%rdx)1390; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm6[0,2,1,3]1391; AVX2-FP-NEXT:    vmovaps %ymm0, 224(%rdx)1392; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm5[0,2,1,3]1393; AVX2-FP-NEXT:    vmovaps %ymm0, 160(%rdx)1394; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm2[0,2,1,3]1395; AVX2-FP-NEXT:    vmovaps %ymm0, 96(%rdx)1396; AVX2-FP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm3[0,2,1,3]1397; AVX2-FP-NEXT:    vmovaps %ymm0, 32(%rdx)1398; AVX2-FP-NEXT:    vzeroupper1399; AVX2-FP-NEXT:    retq1400;1401; AVX2-FCP-LABEL: load_i32_stride2_vf64:1402; AVX2-FCP:       # %bb.0:1403; AVX2-FCP-NEXT:    vmovaps (%rdi), %ymm11404; AVX2-FCP-NEXT:    vmovaps 64(%rdi), %ymm31405; AVX2-FCP-NEXT:    vmovaps 96(%rdi), %ymm41406; AVX2-FCP-NEXT:    vmovaps 416(%rdi), %ymm101407; AVX2-FCP-NEXT:    vmovaps 384(%rdi), %ymm121408; AVX2-FCP-NEXT:    vmovaps 288(%rdi), %ymm81409; AVX2-FCP-NEXT:    vmovaps 256(%rdi), %ymm111410; AVX2-FCP-NEXT:    vmovaps 160(%rdi), %ymm71411; AVX2-FCP-NEXT:    vmovaps 128(%rdi), %ymm91412; AVX2-FCP-NEXT:    vmovaps 480(%rdi), %ymm61413; AVX2-FCP-NEXT:    vmovaps 448(%rdi), %ymm141414; AVX2-FCP-NEXT:    vmovaps 352(%rdi), %ymm51415; AVX2-FCP-NEXT:    vmovaps 320(%rdi), %ymm151416; AVX2-FCP-NEXT:    vmovaps 224(%rdi), %ymm21417; AVX2-FCP-NEXT:    vmovaps 192(%rdi), %ymm131418; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm0 = ymm13[0,2],ymm2[0,2],ymm13[4,6],ymm2[4,6]1419; AVX2-FCP-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1420; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm2 = ymm13[1,3],ymm2[1,3],ymm13[5,7],ymm2[5,7]1421; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm13 = ymm15[0,2],ymm5[0,2],ymm15[4,6],ymm5[4,6]1422; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm5 = ymm15[1,3],ymm5[1,3],ymm15[5,7],ymm5[5,7]1423; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm15 = ymm14[0,2],ymm6[0,2],ymm14[4,6],ymm6[4,6]1424; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm6 = ymm14[1,3],ymm6[1,3],ymm14[5,7],ymm6[5,7]1425; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm14 = ymm12[0,2],ymm10[0,2],ymm12[4,6],ymm10[4,6]1426; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm10 = ymm12[1,3],ymm10[1,3],ymm12[5,7],ymm10[5,7]1427; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm12 = ymm11[0,2],ymm8[0,2],ymm11[4,6],ymm8[4,6]1428; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm8 = ymm11[1,3],ymm8[1,3],ymm11[5,7],ymm8[5,7]1429; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm11 = ymm9[0,2],ymm7[0,2],ymm9[4,6],ymm7[4,6]1430; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm7 = ymm9[1,3],ymm7[1,3],ymm9[5,7],ymm7[5,7]1431; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm9 = ymm3[0,2],ymm4[0,2],ymm3[4,6],ymm4[4,6]1432; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm3 = ymm3[1,3],ymm4[1,3],ymm3[5,7],ymm4[5,7]1433; AVX2-FCP-NEXT:    vmovaps 32(%rdi), %ymm41434; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm0 = ymm1[0,2],ymm4[0,2],ymm1[4,6],ymm4[4,6]1435; AVX2-FCP-NEXT:    vshufps {{.*#+}} ymm1 = ymm1[1,3],ymm4[1,3],ymm1[5,7],ymm4[5,7]1436; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm4 = ymm14[0,2,1,3]1437; AVX2-FCP-NEXT:    vmovaps %ymm4, 192(%rsi)1438; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm4 = ymm12[0,2,1,3]1439; AVX2-FCP-NEXT:    vmovaps %ymm4, 128(%rsi)1440; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm4 = ymm11[0,2,1,3]1441; AVX2-FCP-NEXT:    vmovaps %ymm4, 64(%rsi)1442; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]1443; AVX2-FCP-NEXT:    vmovaps %ymm0, (%rsi)1444; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm15[0,2,1,3]1445; AVX2-FCP-NEXT:    vmovaps %ymm0, 224(%rsi)1446; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm13[0,2,1,3]1447; AVX2-FCP-NEXT:    vmovaps %ymm0, 160(%rsi)1448; AVX2-FCP-NEXT:    vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload1449; AVX2-FCP-NEXT:    # ymm0 = mem[0,2,1,3]1450; AVX2-FCP-NEXT:    vmovaps %ymm0, 96(%rsi)1451; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm9[0,2,1,3]1452; AVX2-FCP-NEXT:    vmovaps %ymm0, 32(%rsi)1453; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm1[0,2,1,3]1454; AVX2-FCP-NEXT:    vmovaps %ymm0, (%rdx)1455; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm7[0,2,1,3]1456; AVX2-FCP-NEXT:    vmovaps %ymm0, 64(%rdx)1457; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm8[0,2,1,3]1458; AVX2-FCP-NEXT:    vmovaps %ymm0, 128(%rdx)1459; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm10[0,2,1,3]1460; AVX2-FCP-NEXT:    vmovaps %ymm0, 192(%rdx)1461; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm6[0,2,1,3]1462; AVX2-FCP-NEXT:    vmovaps %ymm0, 224(%rdx)1463; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm5[0,2,1,3]1464; AVX2-FCP-NEXT:    vmovaps %ymm0, 160(%rdx)1465; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm2[0,2,1,3]1466; AVX2-FCP-NEXT:    vmovaps %ymm0, 96(%rdx)1467; AVX2-FCP-NEXT:    vpermpd {{.*#+}} ymm0 = ymm3[0,2,1,3]1468; AVX2-FCP-NEXT:    vmovaps %ymm0, 32(%rdx)1469; AVX2-FCP-NEXT:    vzeroupper1470; AVX2-FCP-NEXT:    retq1471;1472; AVX512-LABEL: load_i32_stride2_vf64:1473; AVX512:       # %bb.0:1474; AVX512-NEXT:    vmovdqa64 (%rdi), %zmm01475; AVX512-NEXT:    vmovdqa64 64(%rdi), %zmm11476; AVX512-NEXT:    vmovdqa64 128(%rdi), %zmm21477; AVX512-NEXT:    vmovdqa64 192(%rdi), %zmm31478; AVX512-NEXT:    vmovdqa64 448(%rdi), %zmm41479; AVX512-NEXT:    vmovdqa64 384(%rdi), %zmm51480; AVX512-NEXT:    vmovdqa64 320(%rdi), %zmm61481; AVX512-NEXT:    vmovdqa64 256(%rdi), %zmm71482; AVX512-NEXT:    vpmovsxbd {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]1483; AVX512-NEXT:    vmovdqa64 %zmm7, %zmm91484; AVX512-NEXT:    vpermt2d %zmm6, %zmm8, %zmm91485; AVX512-NEXT:    vmovdqa64 %zmm5, %zmm101486; AVX512-NEXT:    vpermt2d %zmm4, %zmm8, %zmm101487; AVX512-NEXT:    vmovdqa64 %zmm2, %zmm111488; AVX512-NEXT:    vpermt2d %zmm3, %zmm8, %zmm111489; AVX512-NEXT:    vpermi2d %zmm1, %zmm0, %zmm81490; AVX512-NEXT:    vpmovsxbd {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]1491; AVX512-NEXT:    vpermt2d %zmm4, %zmm12, %zmm51492; AVX512-NEXT:    vpermt2d %zmm6, %zmm12, %zmm71493; AVX512-NEXT:    vpermt2d %zmm3, %zmm12, %zmm21494; AVX512-NEXT:    vpermt2d %zmm1, %zmm12, %zmm01495; AVX512-NEXT:    vmovdqa64 %zmm10, 192(%rsi)1496; AVX512-NEXT:    vmovdqa64 %zmm8, (%rsi)1497; AVX512-NEXT:    vmovdqa64 %zmm11, 64(%rsi)1498; AVX512-NEXT:    vmovdqa64 %zmm9, 128(%rsi)1499; AVX512-NEXT:    vmovdqa64 %zmm7, 128(%rdx)1500; AVX512-NEXT:    vmovdqa64 %zmm5, 192(%rdx)1501; AVX512-NEXT:    vmovdqa64 %zmm0, (%rdx)1502; AVX512-NEXT:    vmovdqa64 %zmm2, 64(%rdx)1503; AVX512-NEXT:    vzeroupper1504; AVX512-NEXT:    retq1505;1506; AVX512-FCP-LABEL: load_i32_stride2_vf64:1507; AVX512-FCP:       # %bb.0:1508; AVX512-FCP-NEXT:    vmovdqa64 (%rdi), %zmm01509; AVX512-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm11510; AVX512-FCP-NEXT:    vmovdqa64 128(%rdi), %zmm21511; AVX512-FCP-NEXT:    vmovdqa64 192(%rdi), %zmm31512; AVX512-FCP-NEXT:    vmovdqa64 448(%rdi), %zmm41513; AVX512-FCP-NEXT:    vmovdqa64 384(%rdi), %zmm51514; AVX512-FCP-NEXT:    vmovdqa64 320(%rdi), %zmm61515; AVX512-FCP-NEXT:    vmovdqa64 256(%rdi), %zmm71516; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]1517; AVX512-FCP-NEXT:    vmovdqa64 %zmm7, %zmm91518; AVX512-FCP-NEXT:    vpermt2d %zmm6, %zmm8, %zmm91519; AVX512-FCP-NEXT:    vmovdqa64 %zmm5, %zmm101520; AVX512-FCP-NEXT:    vpermt2d %zmm4, %zmm8, %zmm101521; AVX512-FCP-NEXT:    vmovdqa64 %zmm2, %zmm111522; AVX512-FCP-NEXT:    vpermt2d %zmm3, %zmm8, %zmm111523; AVX512-FCP-NEXT:    vpermi2d %zmm1, %zmm0, %zmm81524; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]1525; AVX512-FCP-NEXT:    vpermt2d %zmm4, %zmm12, %zmm51526; AVX512-FCP-NEXT:    vpermt2d %zmm6, %zmm12, %zmm71527; AVX512-FCP-NEXT:    vpermt2d %zmm3, %zmm12, %zmm21528; AVX512-FCP-NEXT:    vpermt2d %zmm1, %zmm12, %zmm01529; AVX512-FCP-NEXT:    vmovdqa64 %zmm10, 192(%rsi)1530; AVX512-FCP-NEXT:    vmovdqa64 %zmm8, (%rsi)1531; AVX512-FCP-NEXT:    vmovdqa64 %zmm11, 64(%rsi)1532; AVX512-FCP-NEXT:    vmovdqa64 %zmm9, 128(%rsi)1533; AVX512-FCP-NEXT:    vmovdqa64 %zmm7, 128(%rdx)1534; AVX512-FCP-NEXT:    vmovdqa64 %zmm5, 192(%rdx)1535; AVX512-FCP-NEXT:    vmovdqa64 %zmm0, (%rdx)1536; AVX512-FCP-NEXT:    vmovdqa64 %zmm2, 64(%rdx)1537; AVX512-FCP-NEXT:    vzeroupper1538; AVX512-FCP-NEXT:    retq1539;1540; AVX512DQ-LABEL: load_i32_stride2_vf64:1541; AVX512DQ:       # %bb.0:1542; AVX512DQ-NEXT:    vmovdqa64 (%rdi), %zmm01543; AVX512DQ-NEXT:    vmovdqa64 64(%rdi), %zmm11544; AVX512DQ-NEXT:    vmovdqa64 128(%rdi), %zmm21545; AVX512DQ-NEXT:    vmovdqa64 192(%rdi), %zmm31546; AVX512DQ-NEXT:    vmovdqa64 448(%rdi), %zmm41547; AVX512DQ-NEXT:    vmovdqa64 384(%rdi), %zmm51548; AVX512DQ-NEXT:    vmovdqa64 320(%rdi), %zmm61549; AVX512DQ-NEXT:    vmovdqa64 256(%rdi), %zmm71550; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]1551; AVX512DQ-NEXT:    vmovdqa64 %zmm7, %zmm91552; AVX512DQ-NEXT:    vpermt2d %zmm6, %zmm8, %zmm91553; AVX512DQ-NEXT:    vmovdqa64 %zmm5, %zmm101554; AVX512DQ-NEXT:    vpermt2d %zmm4, %zmm8, %zmm101555; AVX512DQ-NEXT:    vmovdqa64 %zmm2, %zmm111556; AVX512DQ-NEXT:    vpermt2d %zmm3, %zmm8, %zmm111557; AVX512DQ-NEXT:    vpermi2d %zmm1, %zmm0, %zmm81558; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]1559; AVX512DQ-NEXT:    vpermt2d %zmm4, %zmm12, %zmm51560; AVX512DQ-NEXT:    vpermt2d %zmm6, %zmm12, %zmm71561; AVX512DQ-NEXT:    vpermt2d %zmm3, %zmm12, %zmm21562; AVX512DQ-NEXT:    vpermt2d %zmm1, %zmm12, %zmm01563; AVX512DQ-NEXT:    vmovdqa64 %zmm10, 192(%rsi)1564; AVX512DQ-NEXT:    vmovdqa64 %zmm8, (%rsi)1565; AVX512DQ-NEXT:    vmovdqa64 %zmm11, 64(%rsi)1566; AVX512DQ-NEXT:    vmovdqa64 %zmm9, 128(%rsi)1567; AVX512DQ-NEXT:    vmovdqa64 %zmm7, 128(%rdx)1568; AVX512DQ-NEXT:    vmovdqa64 %zmm5, 192(%rdx)1569; AVX512DQ-NEXT:    vmovdqa64 %zmm0, (%rdx)1570; AVX512DQ-NEXT:    vmovdqa64 %zmm2, 64(%rdx)1571; AVX512DQ-NEXT:    vzeroupper1572; AVX512DQ-NEXT:    retq1573;1574; AVX512DQ-FCP-LABEL: load_i32_stride2_vf64:1575; AVX512DQ-FCP:       # %bb.0:1576; AVX512DQ-FCP-NEXT:    vmovdqa64 (%rdi), %zmm01577; AVX512DQ-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm11578; AVX512DQ-FCP-NEXT:    vmovdqa64 128(%rdi), %zmm21579; AVX512DQ-FCP-NEXT:    vmovdqa64 192(%rdi), %zmm31580; AVX512DQ-FCP-NEXT:    vmovdqa64 448(%rdi), %zmm41581; AVX512DQ-FCP-NEXT:    vmovdqa64 384(%rdi), %zmm51582; AVX512DQ-FCP-NEXT:    vmovdqa64 320(%rdi), %zmm61583; AVX512DQ-FCP-NEXT:    vmovdqa64 256(%rdi), %zmm71584; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]1585; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm7, %zmm91586; AVX512DQ-FCP-NEXT:    vpermt2d %zmm6, %zmm8, %zmm91587; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm5, %zmm101588; AVX512DQ-FCP-NEXT:    vpermt2d %zmm4, %zmm8, %zmm101589; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm2, %zmm111590; AVX512DQ-FCP-NEXT:    vpermt2d %zmm3, %zmm8, %zmm111591; AVX512DQ-FCP-NEXT:    vpermi2d %zmm1, %zmm0, %zmm81592; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]1593; AVX512DQ-FCP-NEXT:    vpermt2d %zmm4, %zmm12, %zmm51594; AVX512DQ-FCP-NEXT:    vpermt2d %zmm6, %zmm12, %zmm71595; AVX512DQ-FCP-NEXT:    vpermt2d %zmm3, %zmm12, %zmm21596; AVX512DQ-FCP-NEXT:    vpermt2d %zmm1, %zmm12, %zmm01597; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm10, 192(%rsi)1598; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm8, (%rsi)1599; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm11, 64(%rsi)1600; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm9, 128(%rsi)1601; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm7, 128(%rdx)1602; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm5, 192(%rdx)1603; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm0, (%rdx)1604; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm2, 64(%rdx)1605; AVX512DQ-FCP-NEXT:    vzeroupper1606; AVX512DQ-FCP-NEXT:    retq1607;1608; AVX512BW-LABEL: load_i32_stride2_vf64:1609; AVX512BW:       # %bb.0:1610; AVX512BW-NEXT:    vmovdqa64 (%rdi), %zmm01611; AVX512BW-NEXT:    vmovdqa64 64(%rdi), %zmm11612; AVX512BW-NEXT:    vmovdqa64 128(%rdi), %zmm21613; AVX512BW-NEXT:    vmovdqa64 192(%rdi), %zmm31614; AVX512BW-NEXT:    vmovdqa64 448(%rdi), %zmm41615; AVX512BW-NEXT:    vmovdqa64 384(%rdi), %zmm51616; AVX512BW-NEXT:    vmovdqa64 320(%rdi), %zmm61617; AVX512BW-NEXT:    vmovdqa64 256(%rdi), %zmm71618; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]1619; AVX512BW-NEXT:    vmovdqa64 %zmm7, %zmm91620; AVX512BW-NEXT:    vpermt2d %zmm6, %zmm8, %zmm91621; AVX512BW-NEXT:    vmovdqa64 %zmm5, %zmm101622; AVX512BW-NEXT:    vpermt2d %zmm4, %zmm8, %zmm101623; AVX512BW-NEXT:    vmovdqa64 %zmm2, %zmm111624; AVX512BW-NEXT:    vpermt2d %zmm3, %zmm8, %zmm111625; AVX512BW-NEXT:    vpermi2d %zmm1, %zmm0, %zmm81626; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]1627; AVX512BW-NEXT:    vpermt2d %zmm4, %zmm12, %zmm51628; AVX512BW-NEXT:    vpermt2d %zmm6, %zmm12, %zmm71629; AVX512BW-NEXT:    vpermt2d %zmm3, %zmm12, %zmm21630; AVX512BW-NEXT:    vpermt2d %zmm1, %zmm12, %zmm01631; AVX512BW-NEXT:    vmovdqa64 %zmm10, 192(%rsi)1632; AVX512BW-NEXT:    vmovdqa64 %zmm8, (%rsi)1633; AVX512BW-NEXT:    vmovdqa64 %zmm11, 64(%rsi)1634; AVX512BW-NEXT:    vmovdqa64 %zmm9, 128(%rsi)1635; AVX512BW-NEXT:    vmovdqa64 %zmm7, 128(%rdx)1636; AVX512BW-NEXT:    vmovdqa64 %zmm5, 192(%rdx)1637; AVX512BW-NEXT:    vmovdqa64 %zmm0, (%rdx)1638; AVX512BW-NEXT:    vmovdqa64 %zmm2, 64(%rdx)1639; AVX512BW-NEXT:    vzeroupper1640; AVX512BW-NEXT:    retq1641;1642; AVX512BW-FCP-LABEL: load_i32_stride2_vf64:1643; AVX512BW-FCP:       # %bb.0:1644; AVX512BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm01645; AVX512BW-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm11646; AVX512BW-FCP-NEXT:    vmovdqa64 128(%rdi), %zmm21647; AVX512BW-FCP-NEXT:    vmovdqa64 192(%rdi), %zmm31648; AVX512BW-FCP-NEXT:    vmovdqa64 448(%rdi), %zmm41649; AVX512BW-FCP-NEXT:    vmovdqa64 384(%rdi), %zmm51650; AVX512BW-FCP-NEXT:    vmovdqa64 320(%rdi), %zmm61651; AVX512BW-FCP-NEXT:    vmovdqa64 256(%rdi), %zmm71652; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]1653; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm7, %zmm91654; AVX512BW-FCP-NEXT:    vpermt2d %zmm6, %zmm8, %zmm91655; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm5, %zmm101656; AVX512BW-FCP-NEXT:    vpermt2d %zmm4, %zmm8, %zmm101657; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm2, %zmm111658; AVX512BW-FCP-NEXT:    vpermt2d %zmm3, %zmm8, %zmm111659; AVX512BW-FCP-NEXT:    vpermi2d %zmm1, %zmm0, %zmm81660; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]1661; AVX512BW-FCP-NEXT:    vpermt2d %zmm4, %zmm12, %zmm51662; AVX512BW-FCP-NEXT:    vpermt2d %zmm6, %zmm12, %zmm71663; AVX512BW-FCP-NEXT:    vpermt2d %zmm3, %zmm12, %zmm21664; AVX512BW-FCP-NEXT:    vpermt2d %zmm1, %zmm12, %zmm01665; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm10, 192(%rsi)1666; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm8, (%rsi)1667; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm11, 64(%rsi)1668; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm9, 128(%rsi)1669; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm7, 128(%rdx)1670; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm5, 192(%rdx)1671; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm0, (%rdx)1672; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm2, 64(%rdx)1673; AVX512BW-FCP-NEXT:    vzeroupper1674; AVX512BW-FCP-NEXT:    retq1675;1676; AVX512DQ-BW-LABEL: load_i32_stride2_vf64:1677; AVX512DQ-BW:       # %bb.0:1678; AVX512DQ-BW-NEXT:    vmovdqa64 (%rdi), %zmm01679; AVX512DQ-BW-NEXT:    vmovdqa64 64(%rdi), %zmm11680; AVX512DQ-BW-NEXT:    vmovdqa64 128(%rdi), %zmm21681; AVX512DQ-BW-NEXT:    vmovdqa64 192(%rdi), %zmm31682; AVX512DQ-BW-NEXT:    vmovdqa64 448(%rdi), %zmm41683; AVX512DQ-BW-NEXT:    vmovdqa64 384(%rdi), %zmm51684; AVX512DQ-BW-NEXT:    vmovdqa64 320(%rdi), %zmm61685; AVX512DQ-BW-NEXT:    vmovdqa64 256(%rdi), %zmm71686; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]1687; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm7, %zmm91688; AVX512DQ-BW-NEXT:    vpermt2d %zmm6, %zmm8, %zmm91689; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm5, %zmm101690; AVX512DQ-BW-NEXT:    vpermt2d %zmm4, %zmm8, %zmm101691; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm2, %zmm111692; AVX512DQ-BW-NEXT:    vpermt2d %zmm3, %zmm8, %zmm111693; AVX512DQ-BW-NEXT:    vpermi2d %zmm1, %zmm0, %zmm81694; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]1695; AVX512DQ-BW-NEXT:    vpermt2d %zmm4, %zmm12, %zmm51696; AVX512DQ-BW-NEXT:    vpermt2d %zmm6, %zmm12, %zmm71697; AVX512DQ-BW-NEXT:    vpermt2d %zmm3, %zmm12, %zmm21698; AVX512DQ-BW-NEXT:    vpermt2d %zmm1, %zmm12, %zmm01699; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm10, 192(%rsi)1700; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm8, (%rsi)1701; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm11, 64(%rsi)1702; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm9, 128(%rsi)1703; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm7, 128(%rdx)1704; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm5, 192(%rdx)1705; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm0, (%rdx)1706; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm2, 64(%rdx)1707; AVX512DQ-BW-NEXT:    vzeroupper1708; AVX512DQ-BW-NEXT:    retq1709;1710; AVX512DQ-BW-FCP-LABEL: load_i32_stride2_vf64:1711; AVX512DQ-BW-FCP:       # %bb.0:1712; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm01713; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm11714; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 128(%rdi), %zmm21715; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 192(%rdi), %zmm31716; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 448(%rdi), %zmm41717; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 384(%rdi), %zmm51718; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 320(%rdi), %zmm61719; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 256(%rdi), %zmm71720; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]1721; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm7, %zmm91722; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm6, %zmm8, %zmm91723; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm5, %zmm101724; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm4, %zmm8, %zmm101725; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm2, %zmm111726; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm3, %zmm8, %zmm111727; AVX512DQ-BW-FCP-NEXT:    vpermi2d %zmm1, %zmm0, %zmm81728; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]1729; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm4, %zmm12, %zmm51730; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm6, %zmm12, %zmm71731; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm3, %zmm12, %zmm21732; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm1, %zmm12, %zmm01733; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm10, 192(%rsi)1734; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm8, (%rsi)1735; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm11, 64(%rsi)1736; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm9, 128(%rsi)1737; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm7, 128(%rdx)1738; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm5, 192(%rdx)1739; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm0, (%rdx)1740; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm2, 64(%rdx)1741; AVX512DQ-BW-FCP-NEXT:    vzeroupper1742; AVX512DQ-BW-FCP-NEXT:    retq1743  %wide.vec = load <128 x i32>, ptr %in.vec, align 641744  %strided.vec0 = shufflevector <128 x i32> %wide.vec, <128 x i32> poison, <64 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30, i32 32, i32 34, i32 36, i32 38, i32 40, i32 42, i32 44, i32 46, i32 48, i32 50, i32 52, i32 54, i32 56, i32 58, i32 60, i32 62, i32 64, i32 66, i32 68, i32 70, i32 72, i32 74, i32 76, i32 78, i32 80, i32 82, i32 84, i32 86, i32 88, i32 90, i32 92, i32 94, i32 96, i32 98, i32 100, i32 102, i32 104, i32 106, i32 108, i32 110, i32 112, i32 114, i32 116, i32 118, i32 120, i32 122, i32 124, i32 126>1745  %strided.vec1 = shufflevector <128 x i32> %wide.vec, <128 x i32> poison, <64 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31, i32 33, i32 35, i32 37, i32 39, i32 41, i32 43, i32 45, i32 47, i32 49, i32 51, i32 53, i32 55, i32 57, i32 59, i32 61, i32 63, i32 65, i32 67, i32 69, i32 71, i32 73, i32 75, i32 77, i32 79, i32 81, i32 83, i32 85, i32 87, i32 89, i32 91, i32 93, i32 95, i32 97, i32 99, i32 101, i32 103, i32 105, i32 107, i32 109, i32 111, i32 113, i32 115, i32 117, i32 119, i32 121, i32 123, i32 125, i32 127>1746  store <64 x i32> %strided.vec0, ptr %out.vec0, align 641747  store <64 x i32> %strided.vec1, ptr %out.vec1, align 641748  ret void1749}1750