3150 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_i64_stride2_vf2(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {19;20; SSE-LABEL: load_i64_stride2_vf2:21; SSE: # %bb.0:22; SSE-NEXT: movaps (%rdi), %xmm023; SSE-NEXT: movaps 16(%rdi), %xmm124; SSE-NEXT: movaps %xmm0, %xmm225; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]26; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]27; SSE-NEXT: movaps %xmm2, (%rsi)28; SSE-NEXT: movaps %xmm0, (%rdx)29; SSE-NEXT: retq30;31; AVX-LABEL: load_i64_stride2_vf2:32; AVX: # %bb.0:33; AVX-NEXT: vmovaps (%rdi), %xmm034; AVX-NEXT: vmovaps 16(%rdi), %xmm135; AVX-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]36; AVX-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]37; AVX-NEXT: vmovaps %xmm2, (%rsi)38; AVX-NEXT: vmovaps %xmm0, (%rdx)39; AVX-NEXT: retq40;41; AVX2-LABEL: load_i64_stride2_vf2:42; AVX2: # %bb.0:43; AVX2-NEXT: vmovaps (%rdi), %xmm044; AVX2-NEXT: vmovaps 16(%rdi), %xmm145; AVX2-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]46; AVX2-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]47; AVX2-NEXT: vmovaps %xmm2, (%rsi)48; AVX2-NEXT: vmovaps %xmm0, (%rdx)49; AVX2-NEXT: retq50;51; AVX2-FP-LABEL: load_i64_stride2_vf2:52; AVX2-FP: # %bb.0:53; AVX2-FP-NEXT: vmovaps (%rdi), %xmm054; AVX2-FP-NEXT: vmovaps 16(%rdi), %xmm155; AVX2-FP-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]56; AVX2-FP-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]57; AVX2-FP-NEXT: vmovaps %xmm2, (%rsi)58; AVX2-FP-NEXT: vmovaps %xmm0, (%rdx)59; AVX2-FP-NEXT: retq60;61; AVX2-FCP-LABEL: load_i64_stride2_vf2:62; AVX2-FCP: # %bb.0:63; AVX2-FCP-NEXT: vmovaps (%rdi), %xmm064; AVX2-FCP-NEXT: vmovaps 16(%rdi), %xmm165; AVX2-FCP-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]66; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]67; AVX2-FCP-NEXT: vmovaps %xmm2, (%rsi)68; AVX2-FCP-NEXT: vmovaps %xmm0, (%rdx)69; AVX2-FCP-NEXT: retq70;71; AVX512-LABEL: load_i64_stride2_vf2:72; AVX512: # %bb.0:73; AVX512-NEXT: vmovaps (%rdi), %xmm074; AVX512-NEXT: vmovaps 16(%rdi), %xmm175; AVX512-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]76; AVX512-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]77; AVX512-NEXT: vmovaps %xmm2, (%rsi)78; AVX512-NEXT: vmovaps %xmm0, (%rdx)79; AVX512-NEXT: retq80;81; AVX512-FCP-LABEL: load_i64_stride2_vf2:82; AVX512-FCP: # %bb.0:83; AVX512-FCP-NEXT: vmovaps (%rdi), %xmm084; AVX512-FCP-NEXT: vmovaps 16(%rdi), %xmm185; AVX512-FCP-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]86; AVX512-FCP-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]87; AVX512-FCP-NEXT: vmovaps %xmm2, (%rsi)88; AVX512-FCP-NEXT: vmovaps %xmm0, (%rdx)89; AVX512-FCP-NEXT: retq90;91; AVX512DQ-LABEL: load_i64_stride2_vf2:92; AVX512DQ: # %bb.0:93; AVX512DQ-NEXT: vmovaps (%rdi), %xmm094; AVX512DQ-NEXT: vmovaps 16(%rdi), %xmm195; AVX512DQ-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]96; AVX512DQ-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]97; AVX512DQ-NEXT: vmovaps %xmm2, (%rsi)98; AVX512DQ-NEXT: vmovaps %xmm0, (%rdx)99; AVX512DQ-NEXT: retq100;101; AVX512DQ-FCP-LABEL: load_i64_stride2_vf2:102; AVX512DQ-FCP: # %bb.0:103; AVX512DQ-FCP-NEXT: vmovaps (%rdi), %xmm0104; AVX512DQ-FCP-NEXT: vmovaps 16(%rdi), %xmm1105; AVX512DQ-FCP-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]106; AVX512DQ-FCP-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]107; AVX512DQ-FCP-NEXT: vmovaps %xmm2, (%rsi)108; AVX512DQ-FCP-NEXT: vmovaps %xmm0, (%rdx)109; AVX512DQ-FCP-NEXT: retq110;111; AVX512BW-LABEL: load_i64_stride2_vf2:112; AVX512BW: # %bb.0:113; AVX512BW-NEXT: vmovaps (%rdi), %xmm0114; AVX512BW-NEXT: vmovaps 16(%rdi), %xmm1115; AVX512BW-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]116; AVX512BW-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]117; AVX512BW-NEXT: vmovaps %xmm2, (%rsi)118; AVX512BW-NEXT: vmovaps %xmm0, (%rdx)119; AVX512BW-NEXT: retq120;121; AVX512BW-FCP-LABEL: load_i64_stride2_vf2:122; AVX512BW-FCP: # %bb.0:123; AVX512BW-FCP-NEXT: vmovaps (%rdi), %xmm0124; AVX512BW-FCP-NEXT: vmovaps 16(%rdi), %xmm1125; AVX512BW-FCP-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]126; AVX512BW-FCP-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]127; AVX512BW-FCP-NEXT: vmovaps %xmm2, (%rsi)128; AVX512BW-FCP-NEXT: vmovaps %xmm0, (%rdx)129; AVX512BW-FCP-NEXT: retq130;131; AVX512DQ-BW-LABEL: load_i64_stride2_vf2:132; AVX512DQ-BW: # %bb.0:133; AVX512DQ-BW-NEXT: vmovaps (%rdi), %xmm0134; AVX512DQ-BW-NEXT: vmovaps 16(%rdi), %xmm1135; AVX512DQ-BW-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]136; AVX512DQ-BW-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]137; AVX512DQ-BW-NEXT: vmovaps %xmm2, (%rsi)138; AVX512DQ-BW-NEXT: vmovaps %xmm0, (%rdx)139; AVX512DQ-BW-NEXT: retq140;141; AVX512DQ-BW-FCP-LABEL: load_i64_stride2_vf2:142; AVX512DQ-BW-FCP: # %bb.0:143; AVX512DQ-BW-FCP-NEXT: vmovaps (%rdi), %xmm0144; AVX512DQ-BW-FCP-NEXT: vmovaps 16(%rdi), %xmm1145; AVX512DQ-BW-FCP-NEXT: vmovlhps {{.*#+}} xmm2 = xmm0[0],xmm1[0]146; AVX512DQ-BW-FCP-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]147; AVX512DQ-BW-FCP-NEXT: vmovaps %xmm2, (%rsi)148; AVX512DQ-BW-FCP-NEXT: vmovaps %xmm0, (%rdx)149; AVX512DQ-BW-FCP-NEXT: retq150 %wide.vec = load <4 x i64>, ptr %in.vec, align 64151 %strided.vec0 = shufflevector <4 x i64> %wide.vec, <4 x i64> poison, <2 x i32> <i32 0, i32 2>152 %strided.vec1 = shufflevector <4 x i64> %wide.vec, <4 x i64> poison, <2 x i32> <i32 1, i32 3>153 store <2 x i64> %strided.vec0, ptr %out.vec0, align 64154 store <2 x i64> %strided.vec1, ptr %out.vec1, align 64155 ret void156}157 158define void @load_i64_stride2_vf4(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {159;160;161;162;163; SSE-LABEL: load_i64_stride2_vf4:164; SSE: # %bb.0:165; SSE-NEXT: movaps (%rdi), %xmm0166; SSE-NEXT: movaps 16(%rdi), %xmm1167; SSE-NEXT: movaps 32(%rdi), %xmm2168; SSE-NEXT: movaps 48(%rdi), %xmm3169; SSE-NEXT: movaps %xmm2, %xmm4170; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm3[0]171; SSE-NEXT: movaps %xmm0, %xmm5172; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm1[0]173; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm3[1]174; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]175; SSE-NEXT: movaps %xmm5, (%rsi)176; SSE-NEXT: movaps %xmm4, 16(%rsi)177; SSE-NEXT: movaps %xmm0, (%rdx)178; SSE-NEXT: movaps %xmm2, 16(%rdx)179; SSE-NEXT: retq180;181; AVX-LABEL: load_i64_stride2_vf4:182; AVX: # %bb.0:183; AVX-NEXT: vmovaps (%rdi), %ymm0184; AVX-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm0[2,3],mem[2,3]185; AVX-NEXT: vinsertf128 $1, 32(%rdi), %ymm0, %ymm0186; AVX-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]187; AVX-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]188; AVX-NEXT: vmovaps %ymm2, (%rsi)189; AVX-NEXT: vmovaps %ymm0, (%rdx)190; AVX-NEXT: vzeroupper191; AVX-NEXT: retq192;193; AVX2-LABEL: load_i64_stride2_vf4:194; AVX2: # %bb.0:195; AVX2-NEXT: vmovaps (%rdi), %ymm0196; AVX2-NEXT: vmovaps 32(%rdi), %ymm1197; AVX2-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]198; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]199; AVX2-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]200; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]201; AVX2-NEXT: vmovaps %ymm2, (%rsi)202; AVX2-NEXT: vmovaps %ymm0, (%rdx)203; AVX2-NEXT: vzeroupper204; AVX2-NEXT: retq205;206; AVX2-FP-LABEL: load_i64_stride2_vf4:207; AVX2-FP: # %bb.0:208; AVX2-FP-NEXT: vmovaps (%rdi), %ymm0209; AVX2-FP-NEXT: vmovaps 32(%rdi), %ymm1210; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]211; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]212; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]213; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]214; AVX2-FP-NEXT: vmovaps %ymm2, (%rsi)215; AVX2-FP-NEXT: vmovaps %ymm0, (%rdx)216; AVX2-FP-NEXT: vzeroupper217; AVX2-FP-NEXT: retq218;219; AVX2-FCP-LABEL: load_i64_stride2_vf4:220; AVX2-FCP: # %bb.0:221; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm0222; AVX2-FCP-NEXT: vmovaps 32(%rdi), %ymm1223; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]224; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]225; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]226; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]227; AVX2-FCP-NEXT: vmovaps %ymm2, (%rsi)228; AVX2-FCP-NEXT: vmovaps %ymm0, (%rdx)229; AVX2-FCP-NEXT: vzeroupper230; AVX2-FCP-NEXT: retq231;232; AVX512-LABEL: load_i64_stride2_vf4:233; AVX512: # %bb.0:234; AVX512-NEXT: vmovaps (%rdi), %ymm0235; AVX512-NEXT: vmovaps 32(%rdi), %ymm1236; AVX512-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]237; AVX512-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]238; AVX512-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]239; AVX512-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]240; AVX512-NEXT: vmovaps %ymm2, (%rsi)241; AVX512-NEXT: vmovaps %ymm0, (%rdx)242; AVX512-NEXT: vzeroupper243; AVX512-NEXT: retq244;245; AVX512-FCP-LABEL: load_i64_stride2_vf4:246; AVX512-FCP: # %bb.0:247; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} ymm0 = [0,2,4,6]248; AVX512-FCP-NEXT: vmovaps (%rdi), %zmm1249; AVX512-FCP-NEXT: vpermpd %zmm1, %zmm0, %zmm0250; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} ymm2 = [1,3,5,7]251; AVX512-FCP-NEXT: vpermpd %zmm1, %zmm2, %zmm1252; AVX512-FCP-NEXT: vmovaps %ymm0, (%rsi)253; AVX512-FCP-NEXT: vmovaps %ymm1, (%rdx)254; AVX512-FCP-NEXT: vzeroupper255; AVX512-FCP-NEXT: retq256;257; AVX512DQ-LABEL: load_i64_stride2_vf4:258; AVX512DQ: # %bb.0:259; AVX512DQ-NEXT: vmovaps (%rdi), %ymm0260; AVX512DQ-NEXT: vmovaps 32(%rdi), %ymm1261; AVX512DQ-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]262; AVX512DQ-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]263; AVX512DQ-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]264; AVX512DQ-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]265; AVX512DQ-NEXT: vmovaps %ymm2, (%rsi)266; AVX512DQ-NEXT: vmovaps %ymm0, (%rdx)267; AVX512DQ-NEXT: vzeroupper268; AVX512DQ-NEXT: retq269;270; AVX512DQ-FCP-LABEL: load_i64_stride2_vf4:271; AVX512DQ-FCP: # %bb.0:272; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} ymm0 = [0,2,4,6]273; AVX512DQ-FCP-NEXT: vmovaps (%rdi), %zmm1274; AVX512DQ-FCP-NEXT: vpermpd %zmm1, %zmm0, %zmm0275; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} ymm2 = [1,3,5,7]276; AVX512DQ-FCP-NEXT: vpermpd %zmm1, %zmm2, %zmm1277; AVX512DQ-FCP-NEXT: vmovaps %ymm0, (%rsi)278; AVX512DQ-FCP-NEXT: vmovaps %ymm1, (%rdx)279; AVX512DQ-FCP-NEXT: vzeroupper280; AVX512DQ-FCP-NEXT: retq281;282; AVX512BW-LABEL: load_i64_stride2_vf4:283; AVX512BW: # %bb.0:284; AVX512BW-NEXT: vmovaps (%rdi), %ymm0285; AVX512BW-NEXT: vmovaps 32(%rdi), %ymm1286; AVX512BW-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]287; AVX512BW-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]288; AVX512BW-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]289; AVX512BW-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]290; AVX512BW-NEXT: vmovaps %ymm2, (%rsi)291; AVX512BW-NEXT: vmovaps %ymm0, (%rdx)292; AVX512BW-NEXT: vzeroupper293; AVX512BW-NEXT: retq294;295; AVX512BW-FCP-LABEL: load_i64_stride2_vf4:296; AVX512BW-FCP: # %bb.0:297; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} ymm0 = [0,2,4,6]298; AVX512BW-FCP-NEXT: vmovaps (%rdi), %zmm1299; AVX512BW-FCP-NEXT: vpermpd %zmm1, %zmm0, %zmm0300; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} ymm2 = [1,3,5,7]301; AVX512BW-FCP-NEXT: vpermpd %zmm1, %zmm2, %zmm1302; AVX512BW-FCP-NEXT: vmovaps %ymm0, (%rsi)303; AVX512BW-FCP-NEXT: vmovaps %ymm1, (%rdx)304; AVX512BW-FCP-NEXT: vzeroupper305; AVX512BW-FCP-NEXT: retq306;307; AVX512DQ-BW-LABEL: load_i64_stride2_vf4:308; AVX512DQ-BW: # %bb.0:309; AVX512DQ-BW-NEXT: vmovaps (%rdi), %ymm0310; AVX512DQ-BW-NEXT: vmovaps 32(%rdi), %ymm1311; AVX512DQ-BW-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]312; AVX512DQ-BW-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]313; AVX512DQ-BW-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]314; AVX512DQ-BW-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]315; AVX512DQ-BW-NEXT: vmovaps %ymm2, (%rsi)316; AVX512DQ-BW-NEXT: vmovaps %ymm0, (%rdx)317; AVX512DQ-BW-NEXT: vzeroupper318; AVX512DQ-BW-NEXT: retq319;320; AVX512DQ-BW-FCP-LABEL: load_i64_stride2_vf4:321; AVX512DQ-BW-FCP: # %bb.0:322; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} ymm0 = [0,2,4,6]323; AVX512DQ-BW-FCP-NEXT: vmovaps (%rdi), %zmm1324; AVX512DQ-BW-FCP-NEXT: vpermpd %zmm1, %zmm0, %zmm0325; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} ymm2 = [1,3,5,7]326; AVX512DQ-BW-FCP-NEXT: vpermpd %zmm1, %zmm2, %zmm1327; AVX512DQ-BW-FCP-NEXT: vmovaps %ymm0, (%rsi)328; AVX512DQ-BW-FCP-NEXT: vmovaps %ymm1, (%rdx)329; AVX512DQ-BW-FCP-NEXT: vzeroupper330; AVX512DQ-BW-FCP-NEXT: retq331 %wide.vec = load <8 x i64>, ptr %in.vec, align 64332 %strided.vec0 = shufflevector <8 x i64> %wide.vec, <8 x i64> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>333 %strided.vec1 = shufflevector <8 x i64> %wide.vec, <8 x i64> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>334 store <4 x i64> %strided.vec0, ptr %out.vec0, align 64335 store <4 x i64> %strided.vec1, ptr %out.vec1, align 64336 ret void337}338 339define void @load_i64_stride2_vf8(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {340;341;342;343; SSE-LABEL: load_i64_stride2_vf8:344; SSE: # %bb.0:345; SSE-NEXT: movaps (%rdi), %xmm0346; SSE-NEXT: movaps 16(%rdi), %xmm1347; SSE-NEXT: movaps 32(%rdi), %xmm2348; SSE-NEXT: movaps 48(%rdi), %xmm3349; SSE-NEXT: movaps 80(%rdi), %xmm4350; SSE-NEXT: movaps 64(%rdi), %xmm5351; SSE-NEXT: movaps 112(%rdi), %xmm6352; SSE-NEXT: movaps 96(%rdi), %xmm7353; SSE-NEXT: movaps %xmm7, %xmm8354; SSE-NEXT: movlhps {{.*#+}} xmm8 = xmm8[0],xmm6[0]355; SSE-NEXT: movaps %xmm5, %xmm9356; SSE-NEXT: movlhps {{.*#+}} xmm9 = xmm9[0],xmm4[0]357; SSE-NEXT: movaps %xmm2, %xmm10358; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm3[0]359; SSE-NEXT: movaps %xmm0, %xmm11360; SSE-NEXT: movlhps {{.*#+}} xmm11 = xmm11[0],xmm1[0]361; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm6[1]362; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm4[1]363; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm3[1]364; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]365; SSE-NEXT: movaps %xmm9, 32(%rsi)366; SSE-NEXT: movaps %xmm8, 48(%rsi)367; SSE-NEXT: movaps %xmm11, (%rsi)368; SSE-NEXT: movaps %xmm10, 16(%rsi)369; SSE-NEXT: movaps %xmm5, 32(%rdx)370; SSE-NEXT: movaps %xmm7, 48(%rdx)371; SSE-NEXT: movaps %xmm0, (%rdx)372; SSE-NEXT: movaps %xmm2, 16(%rdx)373; SSE-NEXT: retq374;375; AVX-LABEL: load_i64_stride2_vf8:376; AVX: # %bb.0:377; AVX-NEXT: vmovaps (%rdi), %ymm0378; AVX-NEXT: vmovaps 64(%rdi), %ymm1379; AVX-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm1[2,3],mem[2,3]380; AVX-NEXT: vinsertf128 $1, 96(%rdi), %ymm1, %ymm1381; AVX-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm1[0],ymm2[0],ymm1[2],ymm2[2]382; AVX-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm0[2,3],mem[2,3]383; AVX-NEXT: vinsertf128 $1, 32(%rdi), %ymm0, %ymm0384; AVX-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm4[0],ymm0[2],ymm4[2]385; AVX-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm2[1],ymm1[3],ymm2[3]386; AVX-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm4[1],ymm0[3],ymm4[3]387; AVX-NEXT: vmovaps %ymm5, (%rsi)388; AVX-NEXT: vmovaps %ymm3, 32(%rsi)389; AVX-NEXT: vmovaps %ymm0, (%rdx)390; AVX-NEXT: vmovaps %ymm1, 32(%rdx)391; AVX-NEXT: vzeroupper392; AVX-NEXT: retq393;394; AVX2-LABEL: load_i64_stride2_vf8:395; AVX2: # %bb.0:396; AVX2-NEXT: vmovaps (%rdi), %ymm0397; AVX2-NEXT: vmovaps 32(%rdi), %ymm1398; AVX2-NEXT: vmovaps 64(%rdi), %ymm2399; AVX2-NEXT: vmovaps 96(%rdi), %ymm3400; AVX2-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]401; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]402; AVX2-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]403; AVX2-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,2,1,3]404; AVX2-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]405; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]406; AVX2-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]407; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]408; AVX2-NEXT: vmovaps %ymm5, (%rsi)409; AVX2-NEXT: vmovaps %ymm4, 32(%rsi)410; AVX2-NEXT: vmovaps %ymm0, (%rdx)411; AVX2-NEXT: vmovaps %ymm2, 32(%rdx)412; AVX2-NEXT: vzeroupper413; AVX2-NEXT: retq414;415; AVX2-FP-LABEL: load_i64_stride2_vf8:416; AVX2-FP: # %bb.0:417; AVX2-FP-NEXT: vmovaps (%rdi), %ymm0418; AVX2-FP-NEXT: vmovaps 32(%rdi), %ymm1419; AVX2-FP-NEXT: vmovaps 64(%rdi), %ymm2420; AVX2-FP-NEXT: vmovaps 96(%rdi), %ymm3421; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]422; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]423; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]424; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,2,1,3]425; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]426; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]427; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]428; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]429; AVX2-FP-NEXT: vmovaps %ymm5, (%rsi)430; AVX2-FP-NEXT: vmovaps %ymm4, 32(%rsi)431; AVX2-FP-NEXT: vmovaps %ymm0, (%rdx)432; AVX2-FP-NEXT: vmovaps %ymm2, 32(%rdx)433; AVX2-FP-NEXT: vzeroupper434; AVX2-FP-NEXT: retq435;436; AVX2-FCP-LABEL: load_i64_stride2_vf8:437; AVX2-FCP: # %bb.0:438; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm0439; AVX2-FCP-NEXT: vmovaps 32(%rdi), %ymm1440; AVX2-FCP-NEXT: vmovaps 64(%rdi), %ymm2441; AVX2-FCP-NEXT: vmovaps 96(%rdi), %ymm3442; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]443; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]444; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]445; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm5 = ymm5[0,2,1,3]446; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]447; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]448; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]449; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]450; AVX2-FCP-NEXT: vmovaps %ymm5, (%rsi)451; AVX2-FCP-NEXT: vmovaps %ymm4, 32(%rsi)452; AVX2-FCP-NEXT: vmovaps %ymm0, (%rdx)453; AVX2-FCP-NEXT: vmovaps %ymm2, 32(%rdx)454; AVX2-FCP-NEXT: vzeroupper455; AVX2-FCP-NEXT: retq456;457; AVX512-LABEL: load_i64_stride2_vf8:458; AVX512: # %bb.0:459; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0460; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1461; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14]462; AVX512-NEXT: vpermi2q %zmm1, %zmm0, %zmm2463; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15]464; AVX512-NEXT: vpermi2q %zmm1, %zmm0, %zmm3465; AVX512-NEXT: vmovdqa64 %zmm2, (%rsi)466; AVX512-NEXT: vmovdqa64 %zmm3, (%rdx)467; AVX512-NEXT: vzeroupper468; AVX512-NEXT: retq469;470; AVX512-FCP-LABEL: load_i64_stride2_vf8:471; AVX512-FCP: # %bb.0:472; AVX512-FCP-NEXT: vmovdqa64 (%rdi), %zmm0473; AVX512-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1474; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14]475; AVX512-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm2476; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15]477; AVX512-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm3478; AVX512-FCP-NEXT: vmovdqa64 %zmm2, (%rsi)479; AVX512-FCP-NEXT: vmovdqa64 %zmm3, (%rdx)480; AVX512-FCP-NEXT: vzeroupper481; AVX512-FCP-NEXT: retq482;483; AVX512DQ-LABEL: load_i64_stride2_vf8:484; AVX512DQ: # %bb.0:485; AVX512DQ-NEXT: vmovdqa64 (%rdi), %zmm0486; AVX512DQ-NEXT: vmovdqa64 64(%rdi), %zmm1487; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14]488; AVX512DQ-NEXT: vpermi2q %zmm1, %zmm0, %zmm2489; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15]490; AVX512DQ-NEXT: vpermi2q %zmm1, %zmm0, %zmm3491; AVX512DQ-NEXT: vmovdqa64 %zmm2, (%rsi)492; AVX512DQ-NEXT: vmovdqa64 %zmm3, (%rdx)493; AVX512DQ-NEXT: vzeroupper494; AVX512DQ-NEXT: retq495;496; AVX512DQ-FCP-LABEL: load_i64_stride2_vf8:497; AVX512DQ-FCP: # %bb.0:498; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdi), %zmm0499; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1500; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14]501; AVX512DQ-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm2502; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15]503; AVX512DQ-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm3504; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, (%rsi)505; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, (%rdx)506; AVX512DQ-FCP-NEXT: vzeroupper507; AVX512DQ-FCP-NEXT: retq508;509; AVX512BW-LABEL: load_i64_stride2_vf8:510; AVX512BW: # %bb.0:511; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm0512; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm1513; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14]514; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm2515; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15]516; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm3517; AVX512BW-NEXT: vmovdqa64 %zmm2, (%rsi)518; AVX512BW-NEXT: vmovdqa64 %zmm3, (%rdx)519; AVX512BW-NEXT: vzeroupper520; AVX512BW-NEXT: retq521;522; AVX512BW-FCP-LABEL: load_i64_stride2_vf8:523; AVX512BW-FCP: # %bb.0:524; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm0525; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1526; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14]527; AVX512BW-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm2528; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15]529; AVX512BW-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm3530; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, (%rsi)531; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, (%rdx)532; AVX512BW-FCP-NEXT: vzeroupper533; AVX512BW-FCP-NEXT: retq534;535; AVX512DQ-BW-LABEL: load_i64_stride2_vf8:536; AVX512DQ-BW: # %bb.0:537; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm0538; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm1539; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14]540; AVX512DQ-BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm2541; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15]542; AVX512DQ-BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm3543; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, (%rsi)544; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, (%rdx)545; AVX512DQ-BW-NEXT: vzeroupper546; AVX512DQ-BW-NEXT: retq547;548; AVX512DQ-BW-FCP-LABEL: load_i64_stride2_vf8:549; AVX512DQ-BW-FCP: # %bb.0:550; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm0551; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1552; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,2,4,6,8,10,12,14]553; AVX512DQ-BW-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm2554; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm3 = [1,3,5,7,9,11,13,15]555; AVX512DQ-BW-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm3556; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, (%rsi)557; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, (%rdx)558; AVX512DQ-BW-FCP-NEXT: vzeroupper559; AVX512DQ-BW-FCP-NEXT: retq560 %wide.vec = load <16 x i64>, ptr %in.vec, align 64561 %strided.vec0 = shufflevector <16 x i64> %wide.vec, <16 x i64> poison, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>562 %strided.vec1 = shufflevector <16 x i64> %wide.vec, <16 x i64> poison, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>563 store <8 x i64> %strided.vec0, ptr %out.vec0, align 64564 store <8 x i64> %strided.vec1, ptr %out.vec1, align 64565 ret void566}567 568define void @load_i64_stride2_vf16(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {569;570;571;572; SSE-LABEL: load_i64_stride2_vf16:573; SSE: # %bb.0:574; SSE-NEXT: movaps (%rdi), %xmm1575; SSE-NEXT: movaps 16(%rdi), %xmm8576; SSE-NEXT: movaps 32(%rdi), %xmm0577; SSE-NEXT: movaps 208(%rdi), %xmm11578; SSE-NEXT: movaps 192(%rdi), %xmm2579; SSE-NEXT: movaps 240(%rdi), %xmm10580; SSE-NEXT: movaps 224(%rdi), %xmm4581; SSE-NEXT: movaps 144(%rdi), %xmm14582; SSE-NEXT: movaps 128(%rdi), %xmm3583; SSE-NEXT: movaps 176(%rdi), %xmm12584; SSE-NEXT: movaps 160(%rdi), %xmm6585; SSE-NEXT: movaps 80(%rdi), %xmm13586; SSE-NEXT: movaps 64(%rdi), %xmm5587; SSE-NEXT: movaps 112(%rdi), %xmm15588; SSE-NEXT: movaps 96(%rdi), %xmm7589; SSE-NEXT: movaps %xmm5, %xmm9590; SSE-NEXT: movlhps {{.*#+}} xmm9 = xmm9[0],xmm13[0]591; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm13[1]592; SSE-NEXT: movaps %xmm7, %xmm13593; SSE-NEXT: movlhps {{.*#+}} xmm13 = xmm13[0],xmm15[0]594; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm15[1]595; SSE-NEXT: movaps %xmm3, %xmm15596; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm14[0]597; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm14[1]598; SSE-NEXT: movaps %xmm6, %xmm14599; SSE-NEXT: movlhps {{.*#+}} xmm14 = xmm14[0],xmm12[0]600; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm12[1]601; SSE-NEXT: movaps %xmm2, %xmm12602; SSE-NEXT: movlhps {{.*#+}} xmm12 = xmm12[0],xmm11[0]603; SSE-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm11[1]604; SSE-NEXT: movaps %xmm4, %xmm11605; SSE-NEXT: movlhps {{.*#+}} xmm11 = xmm11[0],xmm10[0]606; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm10[1]607; SSE-NEXT: movaps %xmm1, %xmm10608; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm8[0]609; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm8[1]610; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill611; SSE-NEXT: movaps 48(%rdi), %xmm8612; SSE-NEXT: movaps %xmm0, %xmm1613; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm8[0]614; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm8[1]615; SSE-NEXT: movaps %xmm12, 96(%rsi)616; SSE-NEXT: movaps %xmm11, 112(%rsi)617; SSE-NEXT: movaps %xmm15, 64(%rsi)618; SSE-NEXT: movaps %xmm14, 80(%rsi)619; SSE-NEXT: movaps %xmm9, 32(%rsi)620; SSE-NEXT: movaps %xmm13, 48(%rsi)621; SSE-NEXT: movaps %xmm10, (%rsi)622; SSE-NEXT: movaps %xmm1, 16(%rsi)623; SSE-NEXT: movaps %xmm4, 112(%rdx)624; SSE-NEXT: movaps %xmm2, 96(%rdx)625; SSE-NEXT: movaps %xmm6, 80(%rdx)626; SSE-NEXT: movaps %xmm3, 64(%rdx)627; SSE-NEXT: movaps %xmm7, 48(%rdx)628; SSE-NEXT: movaps %xmm5, 32(%rdx)629; SSE-NEXT: movaps %xmm0, 16(%rdx)630; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload631; SSE-NEXT: movaps %xmm0, (%rdx)632; SSE-NEXT: retq633;634; AVX-LABEL: load_i64_stride2_vf16:635; AVX: # %bb.0:636; AVX-NEXT: vmovaps (%rdi), %ymm0637; AVX-NEXT: vmovaps 64(%rdi), %ymm1638; AVX-NEXT: vmovaps 128(%rdi), %ymm2639; AVX-NEXT: vmovaps 192(%rdi), %ymm3640; AVX-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm3[2,3],mem[2,3]641; AVX-NEXT: vinsertf128 $1, 224(%rdi), %ymm3, %ymm3642; AVX-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm3[0],ymm4[0],ymm3[2],ymm4[2]643; AVX-NEXT: vperm2f128 {{.*#+}} ymm6 = ymm1[2,3],mem[2,3]644; AVX-NEXT: vinsertf128 $1, 96(%rdi), %ymm1, %ymm1645; AVX-NEXT: vunpcklpd {{.*#+}} ymm7 = ymm1[0],ymm6[0],ymm1[2],ymm6[2]646; AVX-NEXT: vperm2f128 {{.*#+}} ymm8 = ymm0[2,3],mem[2,3]647; AVX-NEXT: vinsertf128 $1, 32(%rdi), %ymm0, %ymm0648; AVX-NEXT: vunpcklpd {{.*#+}} ymm9 = ymm0[0],ymm8[0],ymm0[2],ymm8[2]649; AVX-NEXT: vperm2f128 {{.*#+}} ymm10 = ymm2[2,3],mem[2,3]650; AVX-NEXT: vinsertf128 $1, 160(%rdi), %ymm2, %ymm2651; AVX-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm2[0],ymm10[0],ymm2[2],ymm10[2]652; AVX-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm6[1],ymm1[3],ymm6[3]653; AVX-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm4[1],ymm3[3],ymm4[3]654; AVX-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm8[1],ymm0[3],ymm8[3]655; AVX-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm10[1],ymm2[3],ymm10[3]656; AVX-NEXT: vmovaps %ymm11, 64(%rsi)657; AVX-NEXT: vmovaps %ymm9, (%rsi)658; AVX-NEXT: vmovaps %ymm7, 32(%rsi)659; AVX-NEXT: vmovaps %ymm5, 96(%rsi)660; AVX-NEXT: vmovaps %ymm2, 64(%rdx)661; AVX-NEXT: vmovaps %ymm0, (%rdx)662; AVX-NEXT: vmovaps %ymm3, 96(%rdx)663; AVX-NEXT: vmovaps %ymm1, 32(%rdx)664; AVX-NEXT: vzeroupper665; AVX-NEXT: retq666;667; AVX2-LABEL: load_i64_stride2_vf16:668; AVX2: # %bb.0:669; AVX2-NEXT: vmovaps (%rdi), %ymm0670; AVX2-NEXT: vmovaps 32(%rdi), %ymm1671; AVX2-NEXT: vmovaps 64(%rdi), %ymm2672; AVX2-NEXT: vmovaps 96(%rdi), %ymm3673; AVX2-NEXT: vmovaps 160(%rdi), %ymm4674; AVX2-NEXT: vmovaps 128(%rdi), %ymm5675; AVX2-NEXT: vmovaps 224(%rdi), %ymm6676; AVX2-NEXT: vmovaps 192(%rdi), %ymm7677; AVX2-NEXT: vunpcklpd {{.*#+}} ymm8 = ymm7[0],ymm6[0],ymm7[2],ymm6[2]678; AVX2-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,2,1,3]679; AVX2-NEXT: vunpcklpd {{.*#+}} ymm9 = ymm5[0],ymm4[0],ymm5[2],ymm4[2]680; AVX2-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,2,1,3]681; AVX2-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]682; AVX2-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,2,1,3]683; AVX2-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]684; AVX2-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,2,1,3]685; AVX2-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm7[1],ymm6[1],ymm7[3],ymm6[3]686; AVX2-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,2,1,3]687; AVX2-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm5[1],ymm4[1],ymm5[3],ymm4[3]688; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]689; AVX2-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]690; AVX2-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]691; AVX2-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]692; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]693; AVX2-NEXT: vmovaps %ymm9, 64(%rsi)694; AVX2-NEXT: vmovaps %ymm11, (%rsi)695; AVX2-NEXT: vmovaps %ymm8, 96(%rsi)696; AVX2-NEXT: vmovaps %ymm10, 32(%rsi)697; AVX2-NEXT: vmovaps %ymm4, 64(%rdx)698; AVX2-NEXT: vmovaps %ymm0, (%rdx)699; AVX2-NEXT: vmovaps %ymm6, 96(%rdx)700; AVX2-NEXT: vmovaps %ymm2, 32(%rdx)701; AVX2-NEXT: vzeroupper702; AVX2-NEXT: retq703;704; AVX2-FP-LABEL: load_i64_stride2_vf16:705; AVX2-FP: # %bb.0:706; AVX2-FP-NEXT: vmovaps (%rdi), %ymm0707; AVX2-FP-NEXT: vmovaps 32(%rdi), %ymm1708; AVX2-FP-NEXT: vmovaps 64(%rdi), %ymm2709; AVX2-FP-NEXT: vmovaps 96(%rdi), %ymm3710; AVX2-FP-NEXT: vmovaps 160(%rdi), %ymm4711; AVX2-FP-NEXT: vmovaps 128(%rdi), %ymm5712; AVX2-FP-NEXT: vmovaps 224(%rdi), %ymm6713; AVX2-FP-NEXT: vmovaps 192(%rdi), %ymm7714; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm8 = ymm7[0],ymm6[0],ymm7[2],ymm6[2]715; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,2,1,3]716; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm9 = ymm5[0],ymm4[0],ymm5[2],ymm4[2]717; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,2,1,3]718; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]719; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,2,1,3]720; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]721; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,2,1,3]722; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm7[1],ymm6[1],ymm7[3],ymm6[3]723; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,2,1,3]724; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm5[1],ymm4[1],ymm5[3],ymm4[3]725; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]726; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]727; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]728; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]729; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]730; AVX2-FP-NEXT: vmovaps %ymm9, 64(%rsi)731; AVX2-FP-NEXT: vmovaps %ymm11, (%rsi)732; AVX2-FP-NEXT: vmovaps %ymm8, 96(%rsi)733; AVX2-FP-NEXT: vmovaps %ymm10, 32(%rsi)734; AVX2-FP-NEXT: vmovaps %ymm4, 64(%rdx)735; AVX2-FP-NEXT: vmovaps %ymm0, (%rdx)736; AVX2-FP-NEXT: vmovaps %ymm6, 96(%rdx)737; AVX2-FP-NEXT: vmovaps %ymm2, 32(%rdx)738; AVX2-FP-NEXT: vzeroupper739; AVX2-FP-NEXT: retq740;741; AVX2-FCP-LABEL: load_i64_stride2_vf16:742; AVX2-FCP: # %bb.0:743; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm0744; AVX2-FCP-NEXT: vmovaps 32(%rdi), %ymm1745; AVX2-FCP-NEXT: vmovaps 64(%rdi), %ymm2746; AVX2-FCP-NEXT: vmovaps 96(%rdi), %ymm3747; AVX2-FCP-NEXT: vmovaps 160(%rdi), %ymm4748; AVX2-FCP-NEXT: vmovaps 128(%rdi), %ymm5749; AVX2-FCP-NEXT: vmovaps 224(%rdi), %ymm6750; AVX2-FCP-NEXT: vmovaps 192(%rdi), %ymm7751; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm8 = ymm7[0],ymm6[0],ymm7[2],ymm6[2]752; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm8 = ymm8[0,2,1,3]753; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm9 = ymm5[0],ymm4[0],ymm5[2],ymm4[2]754; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm9 = ymm9[0,2,1,3]755; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm2[0],ymm3[0],ymm2[2],ymm3[2]756; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm10 = ymm10[0,2,1,3]757; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]758; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm11 = ymm11[0,2,1,3]759; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm7[1],ymm6[1],ymm7[3],ymm6[3]760; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm6 = ymm6[0,2,1,3]761; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm5[1],ymm4[1],ymm5[3],ymm4[3]762; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm4[0,2,1,3]763; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm2[1],ymm3[1],ymm2[3],ymm3[3]764; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm2 = ymm2[0,2,1,3]765; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]766; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]767; AVX2-FCP-NEXT: vmovaps %ymm9, 64(%rsi)768; AVX2-FCP-NEXT: vmovaps %ymm11, (%rsi)769; AVX2-FCP-NEXT: vmovaps %ymm8, 96(%rsi)770; AVX2-FCP-NEXT: vmovaps %ymm10, 32(%rsi)771; AVX2-FCP-NEXT: vmovaps %ymm4, 64(%rdx)772; AVX2-FCP-NEXT: vmovaps %ymm0, (%rdx)773; AVX2-FCP-NEXT: vmovaps %ymm6, 96(%rdx)774; AVX2-FCP-NEXT: vmovaps %ymm2, 32(%rdx)775; AVX2-FCP-NEXT: vzeroupper776; AVX2-FCP-NEXT: retq777;778; AVX512-LABEL: load_i64_stride2_vf16:779; AVX512: # %bb.0:780; AVX512-NEXT: vmovdqa64 (%rdi), %zmm0781; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm1782; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm2783; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm3784; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14]785; AVX512-NEXT: vmovdqa64 %zmm0, %zmm5786; AVX512-NEXT: vpermt2q %zmm1, %zmm4, %zmm5787; AVX512-NEXT: vpermi2q %zmm3, %zmm2, %zmm4788; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15]789; AVX512-NEXT: vpermt2q %zmm1, %zmm6, %zmm0790; AVX512-NEXT: vpermt2q %zmm3, %zmm6, %zmm2791; AVX512-NEXT: vmovdqa64 %zmm4, 64(%rsi)792; AVX512-NEXT: vmovdqa64 %zmm5, (%rsi)793; AVX512-NEXT: vmovdqa64 %zmm2, 64(%rdx)794; AVX512-NEXT: vmovdqa64 %zmm0, (%rdx)795; AVX512-NEXT: vzeroupper796; AVX512-NEXT: retq797;798; AVX512-FCP-LABEL: load_i64_stride2_vf16:799; AVX512-FCP: # %bb.0:800; AVX512-FCP-NEXT: vmovdqa64 (%rdi), %zmm0801; AVX512-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1802; AVX512-FCP-NEXT: vmovdqa64 128(%rdi), %zmm2803; AVX512-FCP-NEXT: vmovdqa64 192(%rdi), %zmm3804; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14]805; AVX512-FCP-NEXT: vmovdqa64 %zmm0, %zmm5806; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm4, %zmm5807; AVX512-FCP-NEXT: vpermi2q %zmm3, %zmm2, %zmm4808; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15]809; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm6, %zmm0810; AVX512-FCP-NEXT: vpermt2q %zmm3, %zmm6, %zmm2811; AVX512-FCP-NEXT: vmovdqa64 %zmm4, 64(%rsi)812; AVX512-FCP-NEXT: vmovdqa64 %zmm5, (%rsi)813; AVX512-FCP-NEXT: vmovdqa64 %zmm2, 64(%rdx)814; AVX512-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)815; AVX512-FCP-NEXT: vzeroupper816; AVX512-FCP-NEXT: retq817;818; AVX512DQ-LABEL: load_i64_stride2_vf16:819; AVX512DQ: # %bb.0:820; AVX512DQ-NEXT: vmovdqa64 (%rdi), %zmm0821; AVX512DQ-NEXT: vmovdqa64 64(%rdi), %zmm1822; AVX512DQ-NEXT: vmovdqa64 128(%rdi), %zmm2823; AVX512DQ-NEXT: vmovdqa64 192(%rdi), %zmm3824; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14]825; AVX512DQ-NEXT: vmovdqa64 %zmm0, %zmm5826; AVX512DQ-NEXT: vpermt2q %zmm1, %zmm4, %zmm5827; AVX512DQ-NEXT: vpermi2q %zmm3, %zmm2, %zmm4828; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15]829; AVX512DQ-NEXT: vpermt2q %zmm1, %zmm6, %zmm0830; AVX512DQ-NEXT: vpermt2q %zmm3, %zmm6, %zmm2831; AVX512DQ-NEXT: vmovdqa64 %zmm4, 64(%rsi)832; AVX512DQ-NEXT: vmovdqa64 %zmm5, (%rsi)833; AVX512DQ-NEXT: vmovdqa64 %zmm2, 64(%rdx)834; AVX512DQ-NEXT: vmovdqa64 %zmm0, (%rdx)835; AVX512DQ-NEXT: vzeroupper836; AVX512DQ-NEXT: retq837;838; AVX512DQ-FCP-LABEL: load_i64_stride2_vf16:839; AVX512DQ-FCP: # %bb.0:840; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdi), %zmm0841; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1842; AVX512DQ-FCP-NEXT: vmovdqa64 128(%rdi), %zmm2843; AVX512DQ-FCP-NEXT: vmovdqa64 192(%rdi), %zmm3844; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14]845; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, %zmm5846; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm4, %zmm5847; AVX512DQ-FCP-NEXT: vpermi2q %zmm3, %zmm2, %zmm4848; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15]849; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm6, %zmm0850; AVX512DQ-FCP-NEXT: vpermt2q %zmm3, %zmm6, %zmm2851; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, 64(%rsi)852; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm5, (%rsi)853; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, 64(%rdx)854; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)855; AVX512DQ-FCP-NEXT: vzeroupper856; AVX512DQ-FCP-NEXT: retq857;858; AVX512BW-LABEL: load_i64_stride2_vf16:859; AVX512BW: # %bb.0:860; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm0861; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm1862; AVX512BW-NEXT: vmovdqa64 128(%rdi), %zmm2863; AVX512BW-NEXT: vmovdqa64 192(%rdi), %zmm3864; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14]865; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm5866; AVX512BW-NEXT: vpermt2q %zmm1, %zmm4, %zmm5867; AVX512BW-NEXT: vpermi2q %zmm3, %zmm2, %zmm4868; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15]869; AVX512BW-NEXT: vpermt2q %zmm1, %zmm6, %zmm0870; AVX512BW-NEXT: vpermt2q %zmm3, %zmm6, %zmm2871; AVX512BW-NEXT: vmovdqa64 %zmm4, 64(%rsi)872; AVX512BW-NEXT: vmovdqa64 %zmm5, (%rsi)873; AVX512BW-NEXT: vmovdqa64 %zmm2, 64(%rdx)874; AVX512BW-NEXT: vmovdqa64 %zmm0, (%rdx)875; AVX512BW-NEXT: vzeroupper876; AVX512BW-NEXT: retq877;878; AVX512BW-FCP-LABEL: load_i64_stride2_vf16:879; AVX512BW-FCP: # %bb.0:880; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm0881; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1882; AVX512BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm2883; AVX512BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm3884; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14]885; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm5886; AVX512BW-FCP-NEXT: vpermt2q %zmm1, %zmm4, %zmm5887; AVX512BW-FCP-NEXT: vpermi2q %zmm3, %zmm2, %zmm4888; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15]889; AVX512BW-FCP-NEXT: vpermt2q %zmm1, %zmm6, %zmm0890; AVX512BW-FCP-NEXT: vpermt2q %zmm3, %zmm6, %zmm2891; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, 64(%rsi)892; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, (%rsi)893; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, 64(%rdx)894; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)895; AVX512BW-FCP-NEXT: vzeroupper896; AVX512BW-FCP-NEXT: retq897;898; AVX512DQ-BW-LABEL: load_i64_stride2_vf16:899; AVX512DQ-BW: # %bb.0:900; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm0901; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm1902; AVX512DQ-BW-NEXT: vmovdqa64 128(%rdi), %zmm2903; AVX512DQ-BW-NEXT: vmovdqa64 192(%rdi), %zmm3904; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14]905; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, %zmm5906; AVX512DQ-BW-NEXT: vpermt2q %zmm1, %zmm4, %zmm5907; AVX512DQ-BW-NEXT: vpermi2q %zmm3, %zmm2, %zmm4908; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15]909; AVX512DQ-BW-NEXT: vpermt2q %zmm1, %zmm6, %zmm0910; AVX512DQ-BW-NEXT: vpermt2q %zmm3, %zmm6, %zmm2911; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, 64(%rsi)912; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, (%rsi)913; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, 64(%rdx)914; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, (%rdx)915; AVX512DQ-BW-NEXT: vzeroupper916; AVX512DQ-BW-NEXT: retq917;918; AVX512DQ-BW-FCP-LABEL: load_i64_stride2_vf16:919; AVX512DQ-BW-FCP: # %bb.0:920; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm0921; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1922; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm2923; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm3924; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm4 = [0,2,4,6,8,10,12,14]925; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm5926; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm1, %zmm4, %zmm5927; AVX512DQ-BW-FCP-NEXT: vpermi2q %zmm3, %zmm2, %zmm4928; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm6 = [1,3,5,7,9,11,13,15]929; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm1, %zmm6, %zmm0930; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm3, %zmm6, %zmm2931; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, 64(%rsi)932; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, (%rsi)933; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, 64(%rdx)934; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)935; AVX512DQ-BW-FCP-NEXT: vzeroupper936; AVX512DQ-BW-FCP-NEXT: retq937 %wide.vec = load <32 x i64>, ptr %in.vec, align 64938 %strided.vec0 = shufflevector <32 x i64> %wide.vec, <32 x i64> 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>939 %strided.vec1 = shufflevector <32 x i64> %wide.vec, <32 x i64> 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>940 store <16 x i64> %strided.vec0, ptr %out.vec0, align 64941 store <16 x i64> %strided.vec1, ptr %out.vec1, align 64942 ret void943}944 945define void @load_i64_stride2_vf32(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {946;947;948;949; SSE-LABEL: load_i64_stride2_vf32:950; SSE: # %bb.0:951; SSE-NEXT: subq $152, %rsp952; SSE-NEXT: movaps 208(%rdi), %xmm11953; SSE-NEXT: movaps 192(%rdi), %xmm6954; SSE-NEXT: movaps 80(%rdi), %xmm1955; SSE-NEXT: movaps 64(%rdi), %xmm5956; SSE-NEXT: movaps 240(%rdi), %xmm14957; SSE-NEXT: movaps 224(%rdi), %xmm8958; SSE-NEXT: movaps 112(%rdi), %xmm3959; SSE-NEXT: movaps 96(%rdi), %xmm7960; SSE-NEXT: movaps 272(%rdi), %xmm12961; SSE-NEXT: movaps 144(%rdi), %xmm2962; SSE-NEXT: movaps 128(%rdi), %xmm9963; SSE-NEXT: movaps 304(%rdi), %xmm0964; SSE-NEXT: movaps 288(%rdi), %xmm13965; SSE-NEXT: movaps 176(%rdi), %xmm4966; SSE-NEXT: movaps 160(%rdi), %xmm10967; SSE-NEXT: movaps %xmm7, %xmm15968; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm3[0]969; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill970; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm3[1]971; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill972; SSE-NEXT: movaps %xmm5, %xmm3973; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm1[0]974; SSE-NEXT: movaps %xmm3, (%rsp) # 16-byte Spill975; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]976; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill977; SSE-NEXT: movaps %xmm10, %xmm1978; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm4[0]979; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill980; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm4[1]981; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill982; SSE-NEXT: movaps %xmm9, %xmm1983; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]984; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill985; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm2[1]986; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill987; SSE-NEXT: movaps %xmm8, %xmm1988; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm14[0]989; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill990; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm14[1]991; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill992; SSE-NEXT: movaps %xmm6, %xmm1993; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm11[0]994; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill995; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm11[1]996; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill997; SSE-NEXT: movaps %xmm13, %xmm1998; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]999; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1000; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]1001; SSE-NEXT: movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1002; SSE-NEXT: movaps 256(%rdi), %xmm01003; SSE-NEXT: movaps %xmm0, %xmm11004; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm12[0]1005; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1006; SSE-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm12[1]1007; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1008; SSE-NEXT: movaps 368(%rdi), %xmm01009; SSE-NEXT: movaps 352(%rdi), %xmm151010; SSE-NEXT: movaps %xmm15, %xmm11011; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1012; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1013; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]1014; SSE-NEXT: movaps 336(%rdi), %xmm01015; SSE-NEXT: movaps 320(%rdi), %xmm131016; SSE-NEXT: movaps %xmm13, %xmm111017; SSE-NEXT: movlhps {{.*#+}} xmm11 = xmm11[0],xmm0[0]1018; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]1019; SSE-NEXT: movaps 432(%rdi), %xmm01020; SSE-NEXT: movaps 416(%rdi), %xmm121021; SSE-NEXT: movaps %xmm12, %xmm141022; SSE-NEXT: movlhps {{.*#+}} xmm14 = xmm14[0],xmm0[0]1023; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm0[1]1024; SSE-NEXT: movaps 400(%rdi), %xmm01025; SSE-NEXT: movaps 384(%rdi), %xmm91026; SSE-NEXT: movaps %xmm9, %xmm101027; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm0[0]1028; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm0[1]1029; SSE-NEXT: movaps 496(%rdi), %xmm01030; SSE-NEXT: movaps 480(%rdi), %xmm71031; SSE-NEXT: movaps %xmm7, %xmm61032; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm0[0]1033; SSE-NEXT: unpckhpd {{.*#+}} xmm7 = xmm7[1],xmm0[1]1034; SSE-NEXT: movaps 464(%rdi), %xmm11035; SSE-NEXT: movaps 448(%rdi), %xmm31036; SSE-NEXT: movaps %xmm3, %xmm21037; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]1038; SSE-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1],xmm1[1]1039; SSE-NEXT: movaps 32(%rdi), %xmm81040; SSE-NEXT: movaps 48(%rdi), %xmm11041; SSE-NEXT: movaps %xmm8, %xmm51042; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm1[0]1043; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm1[1]1044; SSE-NEXT: movaps (%rdi), %xmm41045; SSE-NEXT: movaps 16(%rdi), %xmm01046; SSE-NEXT: movaps %xmm4, %xmm11047; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1048; SSE-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm0[1]1049; SSE-NEXT: movaps %xmm2, 224(%rsi)1050; SSE-NEXT: movaps %xmm11, 160(%rsi)1051; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1052; SSE-NEXT: movaps %xmm0, 96(%rsi)1053; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload1054; SSE-NEXT: movaps %xmm0, 32(%rsi)1055; SSE-NEXT: movaps %xmm6, 240(%rsi)1056; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1057; SSE-NEXT: movaps %xmm0, 176(%rsi)1058; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1059; SSE-NEXT: movaps %xmm0, 112(%rsi)1060; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1061; SSE-NEXT: movaps %xmm0, 48(%rsi)1062; SSE-NEXT: movaps %xmm10, 192(%rsi)1063; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1064; SSE-NEXT: movaps %xmm0, 128(%rsi)1065; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1066; SSE-NEXT: movaps %xmm0, 64(%rsi)1067; SSE-NEXT: movaps %xmm1, (%rsi)1068; SSE-NEXT: movaps %xmm14, 208(%rsi)1069; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1070; SSE-NEXT: movaps %xmm0, 144(%rsi)1071; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1072; SSE-NEXT: movaps %xmm0, 80(%rsi)1073; SSE-NEXT: movaps %xmm5, 16(%rsi)1074; SSE-NEXT: movaps %xmm3, 224(%rdx)1075; SSE-NEXT: movaps %xmm7, 240(%rdx)1076; SSE-NEXT: movaps %xmm9, 192(%rdx)1077; SSE-NEXT: movaps %xmm12, 208(%rdx)1078; SSE-NEXT: movaps %xmm13, 160(%rdx)1079; SSE-NEXT: movaps %xmm15, 176(%rdx)1080; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1081; SSE-NEXT: movaps %xmm0, 128(%rdx)1082; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1083; SSE-NEXT: movaps %xmm0, 144(%rdx)1084; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1085; SSE-NEXT: movaps %xmm0, 96(%rdx)1086; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1087; SSE-NEXT: movaps %xmm0, 112(%rdx)1088; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1089; SSE-NEXT: movaps %xmm0, 64(%rdx)1090; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1091; SSE-NEXT: movaps %xmm0, 80(%rdx)1092; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1093; SSE-NEXT: movaps %xmm0, 32(%rdx)1094; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1095; SSE-NEXT: movaps %xmm0, 48(%rdx)1096; SSE-NEXT: movaps %xmm4, (%rdx)1097; SSE-NEXT: movaps %xmm8, 16(%rdx)1098; SSE-NEXT: addq $152, %rsp1099; SSE-NEXT: retq1100;1101; AVX-LABEL: load_i64_stride2_vf32:1102; AVX: # %bb.0:1103; AVX-NEXT: vmovaps 384(%rdi), %ymm41104; AVX-NEXT: vmovaps 256(%rdi), %ymm61105; AVX-NEXT: vmovaps 320(%rdi), %ymm51106; AVX-NEXT: vmovaps (%rdi), %ymm11107; AVX-NEXT: vmovaps 64(%rdi), %ymm21108; AVX-NEXT: vmovaps 128(%rdi), %ymm91109; AVX-NEXT: vmovaps 192(%rdi), %ymm31110; AVX-NEXT: vmovaps 448(%rdi), %ymm01111; AVX-NEXT: vperm2f128 {{.*#+}} ymm8 = ymm0[2,3],mem[2,3]1112; AVX-NEXT: vinsertf128 $1, 480(%rdi), %ymm0, %ymm101113; AVX-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm10[0],ymm8[0],ymm10[2],ymm8[2]1114; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1115; AVX-NEXT: vperm2f128 {{.*#+}} ymm7 = ymm2[2,3],mem[2,3]1116; AVX-NEXT: vinsertf128 $1, 96(%rdi), %ymm2, %ymm111117; AVX-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm11[0],ymm7[0],ymm11[2],ymm7[2]1118; AVX-NEXT: vperm2f128 {{.*#+}} ymm12 = ymm3[2,3],mem[2,3]1119; AVX-NEXT: vinsertf128 $1, 224(%rdi), %ymm3, %ymm131120; AVX-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm13[0],ymm12[0],ymm13[2],ymm12[2]1121; AVX-NEXT: vperm2f128 {{.*#+}} ymm14 = ymm5[2,3],mem[2,3]1122; AVX-NEXT: vinsertf128 $1, 352(%rdi), %ymm5, %ymm151123; AVX-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm15[0],ymm14[0],ymm15[2],ymm14[2]1124; AVX-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm11[1],ymm7[1],ymm11[3],ymm7[3]1125; AVX-NEXT: vperm2f128 {{.*#+}} ymm11 = ymm9[2,3],mem[2,3]1126; AVX-NEXT: vinsertf128 $1, 160(%rdi), %ymm9, %ymm91127; AVX-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm13[1],ymm12[1],ymm13[3],ymm12[3]1128; AVX-NEXT: vperm2f128 {{.*#+}} ymm13 = ymm6[2,3],mem[2,3]1129; AVX-NEXT: vinsertf128 $1, 288(%rdi), %ymm6, %ymm61130; AVX-NEXT: vunpckhpd {{.*#+}} ymm14 = ymm15[1],ymm14[1],ymm15[3],ymm14[3]1131; AVX-NEXT: vperm2f128 {{.*#+}} ymm15 = ymm4[2,3],mem[2,3]1132; AVX-NEXT: vinsertf128 $1, 416(%rdi), %ymm4, %ymm41133; AVX-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm10[1],ymm8[1],ymm10[3],ymm8[3]1134; AVX-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm4[0],ymm15[0],ymm4[2],ymm15[2]1135; AVX-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm4[1],ymm15[1],ymm4[3],ymm15[3]1136; AVX-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm6[0],ymm13[0],ymm6[2],ymm13[2]1137; AVX-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm6[1],ymm13[1],ymm6[3],ymm13[3]1138; AVX-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm9[0],ymm11[0],ymm9[2],ymm11[2]1139; AVX-NEXT: vunpckhpd {{.*#+}} ymm9 = ymm9[1],ymm11[1],ymm9[3],ymm11[3]1140; AVX-NEXT: vperm2f128 {{.*#+}} ymm11 = ymm1[2,3],mem[2,3]1141; AVX-NEXT: vinsertf128 $1, 32(%rdi), %ymm1, %ymm11142; AVX-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm11[0],ymm1[2],ymm11[2]1143; AVX-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm11[1],ymm1[3],ymm11[3]1144; AVX-NEXT: vmovaps %ymm10, 192(%rsi)1145; AVX-NEXT: vmovaps %ymm15, 128(%rsi)1146; AVX-NEXT: vmovaps %ymm13, 64(%rsi)1147; AVX-NEXT: vmovaps %ymm0, (%rsi)1148; AVX-NEXT: vmovaps %ymm5, 160(%rsi)1149; AVX-NEXT: vmovaps %ymm3, 96(%rsi)1150; AVX-NEXT: vmovaps %ymm2, 32(%rsi)1151; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload1152; AVX-NEXT: vmovaps %ymm0, 224(%rsi)1153; AVX-NEXT: vmovaps %ymm1, (%rdx)1154; AVX-NEXT: vmovaps %ymm9, 64(%rdx)1155; AVX-NEXT: vmovaps %ymm6, 128(%rdx)1156; AVX-NEXT: vmovaps %ymm4, 192(%rdx)1157; AVX-NEXT: vmovaps %ymm8, 224(%rdx)1158; AVX-NEXT: vmovaps %ymm14, 160(%rdx)1159; AVX-NEXT: vmovaps %ymm12, 96(%rdx)1160; AVX-NEXT: vmovaps %ymm7, 32(%rdx)1161; AVX-NEXT: vzeroupper1162; AVX-NEXT: retq1163;1164; AVX2-LABEL: load_i64_stride2_vf32:1165; AVX2: # %bb.0:1166; AVX2-NEXT: vmovaps (%rdi), %ymm11167; AVX2-NEXT: vmovaps 64(%rdi), %ymm31168; AVX2-NEXT: vmovaps 96(%rdi), %ymm41169; AVX2-NEXT: vmovaps 416(%rdi), %ymm101170; AVX2-NEXT: vmovaps 384(%rdi), %ymm121171; AVX2-NEXT: vmovaps 288(%rdi), %ymm81172; AVX2-NEXT: vmovaps 256(%rdi), %ymm111173; AVX2-NEXT: vmovaps 160(%rdi), %ymm71174; AVX2-NEXT: vmovaps 128(%rdi), %ymm91175; AVX2-NEXT: vmovaps 480(%rdi), %ymm61176; AVX2-NEXT: vmovaps 448(%rdi), %ymm141177; AVX2-NEXT: vmovaps 352(%rdi), %ymm51178; AVX2-NEXT: vmovaps 320(%rdi), %ymm151179; AVX2-NEXT: vmovaps 224(%rdi), %ymm21180; AVX2-NEXT: vmovaps 192(%rdi), %ymm131181; AVX2-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm13[0],ymm2[0],ymm13[2],ymm2[2]1182; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1183; AVX2-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm13[1],ymm2[1],ymm13[3],ymm2[3]1184; AVX2-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm15[0],ymm5[0],ymm15[2],ymm5[2]1185; AVX2-NEXT: vunpckhpd {{.*#+}} ymm5 = ymm15[1],ymm5[1],ymm15[3],ymm5[3]1186; AVX2-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm14[0],ymm6[0],ymm14[2],ymm6[2]1187; AVX2-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm14[1],ymm6[1],ymm14[3],ymm6[3]1188; AVX2-NEXT: vunpcklpd {{.*#+}} ymm14 = ymm12[0],ymm10[0],ymm12[2],ymm10[2]1189; AVX2-NEXT: vunpckhpd {{.*#+}} ymm10 = ymm12[1],ymm10[1],ymm12[3],ymm10[3]1190; AVX2-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm11[0],ymm8[0],ymm11[2],ymm8[2]1191; AVX2-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm11[1],ymm8[1],ymm11[3],ymm8[3]1192; AVX2-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm9[0],ymm7[0],ymm9[2],ymm7[2]1193; AVX2-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm9[1],ymm7[1],ymm9[3],ymm7[3]1194; AVX2-NEXT: vunpcklpd {{.*#+}} ymm9 = ymm3[0],ymm4[0],ymm3[2],ymm4[2]1195; AVX2-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm4[1],ymm3[3],ymm4[3]1196; AVX2-NEXT: vmovaps 32(%rdi), %ymm41197; AVX2-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm4[0],ymm1[2],ymm4[2]1198; AVX2-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm4[1],ymm1[3],ymm4[3]1199; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm14[0,2,1,3]1200; AVX2-NEXT: vmovaps %ymm4, 192(%rsi)1201; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm12[0,2,1,3]1202; AVX2-NEXT: vmovaps %ymm4, 128(%rsi)1203; AVX2-NEXT: vpermpd {{.*#+}} ymm4 = ymm11[0,2,1,3]1204; AVX2-NEXT: vmovaps %ymm4, 64(%rsi)1205; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]1206; AVX2-NEXT: vmovaps %ymm0, (%rsi)1207; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm15[0,2,1,3]1208; AVX2-NEXT: vmovaps %ymm0, 224(%rsi)1209; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm13[0,2,1,3]1210; AVX2-NEXT: vmovaps %ymm0, 160(%rsi)1211; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload1212; AVX2-NEXT: # ymm0 = mem[0,2,1,3]1213; AVX2-NEXT: vmovaps %ymm0, 96(%rsi)1214; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm9[0,2,1,3]1215; AVX2-NEXT: vmovaps %ymm0, 32(%rsi)1216; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm1[0,2,1,3]1217; AVX2-NEXT: vmovaps %ymm0, (%rdx)1218; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm7[0,2,1,3]1219; AVX2-NEXT: vmovaps %ymm0, 64(%rdx)1220; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm8[0,2,1,3]1221; AVX2-NEXT: vmovaps %ymm0, 128(%rdx)1222; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm10[0,2,1,3]1223; AVX2-NEXT: vmovaps %ymm0, 192(%rdx)1224; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm6[0,2,1,3]1225; AVX2-NEXT: vmovaps %ymm0, 224(%rdx)1226; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm5[0,2,1,3]1227; AVX2-NEXT: vmovaps %ymm0, 160(%rdx)1228; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm2[0,2,1,3]1229; AVX2-NEXT: vmovaps %ymm0, 96(%rdx)1230; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm3[0,2,1,3]1231; AVX2-NEXT: vmovaps %ymm0, 32(%rdx)1232; AVX2-NEXT: vzeroupper1233; AVX2-NEXT: retq1234;1235; AVX2-FP-LABEL: load_i64_stride2_vf32:1236; AVX2-FP: # %bb.0:1237; AVX2-FP-NEXT: vmovaps (%rdi), %ymm11238; AVX2-FP-NEXT: vmovaps 64(%rdi), %ymm31239; AVX2-FP-NEXT: vmovaps 96(%rdi), %ymm41240; AVX2-FP-NEXT: vmovaps 416(%rdi), %ymm101241; AVX2-FP-NEXT: vmovaps 384(%rdi), %ymm121242; AVX2-FP-NEXT: vmovaps 288(%rdi), %ymm81243; AVX2-FP-NEXT: vmovaps 256(%rdi), %ymm111244; AVX2-FP-NEXT: vmovaps 160(%rdi), %ymm71245; AVX2-FP-NEXT: vmovaps 128(%rdi), %ymm91246; AVX2-FP-NEXT: vmovaps 480(%rdi), %ymm61247; AVX2-FP-NEXT: vmovaps 448(%rdi), %ymm141248; AVX2-FP-NEXT: vmovaps 352(%rdi), %ymm51249; AVX2-FP-NEXT: vmovaps 320(%rdi), %ymm151250; AVX2-FP-NEXT: vmovaps 224(%rdi), %ymm21251; AVX2-FP-NEXT: vmovaps 192(%rdi), %ymm131252; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm13[0],ymm2[0],ymm13[2],ymm2[2]1253; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1254; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm13[1],ymm2[1],ymm13[3],ymm2[3]1255; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm15[0],ymm5[0],ymm15[2],ymm5[2]1256; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm5 = ymm15[1],ymm5[1],ymm15[3],ymm5[3]1257; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm14[0],ymm6[0],ymm14[2],ymm6[2]1258; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm14[1],ymm6[1],ymm14[3],ymm6[3]1259; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm14 = ymm12[0],ymm10[0],ymm12[2],ymm10[2]1260; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm10 = ymm12[1],ymm10[1],ymm12[3],ymm10[3]1261; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm11[0],ymm8[0],ymm11[2],ymm8[2]1262; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm11[1],ymm8[1],ymm11[3],ymm8[3]1263; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm9[0],ymm7[0],ymm9[2],ymm7[2]1264; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm9[1],ymm7[1],ymm9[3],ymm7[3]1265; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm9 = ymm3[0],ymm4[0],ymm3[2],ymm4[2]1266; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm4[1],ymm3[3],ymm4[3]1267; AVX2-FP-NEXT: vmovaps 32(%rdi), %ymm41268; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm4[0],ymm1[2],ymm4[2]1269; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm4[1],ymm1[3],ymm4[3]1270; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm14[0,2,1,3]1271; AVX2-FP-NEXT: vmovaps %ymm4, 192(%rsi)1272; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm12[0,2,1,3]1273; AVX2-FP-NEXT: vmovaps %ymm4, 128(%rsi)1274; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm4 = ymm11[0,2,1,3]1275; AVX2-FP-NEXT: vmovaps %ymm4, 64(%rsi)1276; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]1277; AVX2-FP-NEXT: vmovaps %ymm0, (%rsi)1278; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm15[0,2,1,3]1279; AVX2-FP-NEXT: vmovaps %ymm0, 224(%rsi)1280; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm13[0,2,1,3]1281; AVX2-FP-NEXT: vmovaps %ymm0, 160(%rsi)1282; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload1283; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]1284; AVX2-FP-NEXT: vmovaps %ymm0, 96(%rsi)1285; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm9[0,2,1,3]1286; AVX2-FP-NEXT: vmovaps %ymm0, 32(%rsi)1287; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm1[0,2,1,3]1288; AVX2-FP-NEXT: vmovaps %ymm0, (%rdx)1289; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm7[0,2,1,3]1290; AVX2-FP-NEXT: vmovaps %ymm0, 64(%rdx)1291; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm8[0,2,1,3]1292; AVX2-FP-NEXT: vmovaps %ymm0, 128(%rdx)1293; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm10[0,2,1,3]1294; AVX2-FP-NEXT: vmovaps %ymm0, 192(%rdx)1295; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm6[0,2,1,3]1296; AVX2-FP-NEXT: vmovaps %ymm0, 224(%rdx)1297; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm5[0,2,1,3]1298; AVX2-FP-NEXT: vmovaps %ymm0, 160(%rdx)1299; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm2[0,2,1,3]1300; AVX2-FP-NEXT: vmovaps %ymm0, 96(%rdx)1301; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm3[0,2,1,3]1302; AVX2-FP-NEXT: vmovaps %ymm0, 32(%rdx)1303; AVX2-FP-NEXT: vzeroupper1304; AVX2-FP-NEXT: retq1305;1306; AVX2-FCP-LABEL: load_i64_stride2_vf32:1307; AVX2-FCP: # %bb.0:1308; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm11309; AVX2-FCP-NEXT: vmovaps 64(%rdi), %ymm31310; AVX2-FCP-NEXT: vmovaps 96(%rdi), %ymm41311; AVX2-FCP-NEXT: vmovaps 416(%rdi), %ymm101312; AVX2-FCP-NEXT: vmovaps 384(%rdi), %ymm121313; AVX2-FCP-NEXT: vmovaps 288(%rdi), %ymm81314; AVX2-FCP-NEXT: vmovaps 256(%rdi), %ymm111315; AVX2-FCP-NEXT: vmovaps 160(%rdi), %ymm71316; AVX2-FCP-NEXT: vmovaps 128(%rdi), %ymm91317; AVX2-FCP-NEXT: vmovaps 480(%rdi), %ymm61318; AVX2-FCP-NEXT: vmovaps 448(%rdi), %ymm141319; AVX2-FCP-NEXT: vmovaps 352(%rdi), %ymm51320; AVX2-FCP-NEXT: vmovaps 320(%rdi), %ymm151321; AVX2-FCP-NEXT: vmovaps 224(%rdi), %ymm21322; AVX2-FCP-NEXT: vmovaps 192(%rdi), %ymm131323; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm13[0],ymm2[0],ymm13[2],ymm2[2]1324; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1325; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm2 = ymm13[1],ymm2[1],ymm13[3],ymm2[3]1326; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm15[0],ymm5[0],ymm15[2],ymm5[2]1327; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm5 = ymm15[1],ymm5[1],ymm15[3],ymm5[3]1328; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm14[0],ymm6[0],ymm14[2],ymm6[2]1329; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm6 = ymm14[1],ymm6[1],ymm14[3],ymm6[3]1330; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm14 = ymm12[0],ymm10[0],ymm12[2],ymm10[2]1331; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm10 = ymm12[1],ymm10[1],ymm12[3],ymm10[3]1332; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm11[0],ymm8[0],ymm11[2],ymm8[2]1333; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm11[1],ymm8[1],ymm11[3],ymm8[3]1334; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm9[0],ymm7[0],ymm9[2],ymm7[2]1335; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm9[1],ymm7[1],ymm9[3],ymm7[3]1336; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm9 = ymm3[0],ymm4[0],ymm3[2],ymm4[2]1337; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm3[1],ymm4[1],ymm3[3],ymm4[3]1338; AVX2-FCP-NEXT: vmovaps 32(%rdi), %ymm41339; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm4[0],ymm1[2],ymm4[2]1340; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm4[1],ymm1[3],ymm4[3]1341; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm14[0,2,1,3]1342; AVX2-FCP-NEXT: vmovaps %ymm4, 192(%rsi)1343; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm12[0,2,1,3]1344; AVX2-FCP-NEXT: vmovaps %ymm4, 128(%rsi)1345; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm4 = ymm11[0,2,1,3]1346; AVX2-FCP-NEXT: vmovaps %ymm4, 64(%rsi)1347; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]1348; AVX2-FCP-NEXT: vmovaps %ymm0, (%rsi)1349; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm15[0,2,1,3]1350; AVX2-FCP-NEXT: vmovaps %ymm0, 224(%rsi)1351; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm13[0,2,1,3]1352; AVX2-FCP-NEXT: vmovaps %ymm0, 160(%rsi)1353; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload1354; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]1355; AVX2-FCP-NEXT: vmovaps %ymm0, 96(%rsi)1356; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm9[0,2,1,3]1357; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%rsi)1358; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm1[0,2,1,3]1359; AVX2-FCP-NEXT: vmovaps %ymm0, (%rdx)1360; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm7[0,2,1,3]1361; AVX2-FCP-NEXT: vmovaps %ymm0, 64(%rdx)1362; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm8[0,2,1,3]1363; AVX2-FCP-NEXT: vmovaps %ymm0, 128(%rdx)1364; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm10[0,2,1,3]1365; AVX2-FCP-NEXT: vmovaps %ymm0, 192(%rdx)1366; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm6[0,2,1,3]1367; AVX2-FCP-NEXT: vmovaps %ymm0, 224(%rdx)1368; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm5[0,2,1,3]1369; AVX2-FCP-NEXT: vmovaps %ymm0, 160(%rdx)1370; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm2[0,2,1,3]1371; AVX2-FCP-NEXT: vmovaps %ymm0, 96(%rdx)1372; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm3[0,2,1,3]1373; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%rdx)1374; AVX2-FCP-NEXT: vzeroupper1375; AVX2-FCP-NEXT: retq1376;1377; AVX512-LABEL: load_i64_stride2_vf32:1378; AVX512: # %bb.0:1379; AVX512-NEXT: vmovdqa64 (%rdi), %zmm01380; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm11381; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm21382; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm31383; AVX512-NEXT: vmovdqa64 448(%rdi), %zmm41384; AVX512-NEXT: vmovdqa64 384(%rdi), %zmm51385; AVX512-NEXT: vmovdqa64 320(%rdi), %zmm61386; AVX512-NEXT: vmovdqa64 256(%rdi), %zmm71387; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14]1388; AVX512-NEXT: vmovdqa64 %zmm7, %zmm91389; AVX512-NEXT: vpermt2q %zmm6, %zmm8, %zmm91390; AVX512-NEXT: vmovdqa64 %zmm5, %zmm101391; AVX512-NEXT: vpermt2q %zmm4, %zmm8, %zmm101392; AVX512-NEXT: vmovdqa64 %zmm2, %zmm111393; AVX512-NEXT: vpermt2q %zmm3, %zmm8, %zmm111394; AVX512-NEXT: vpermi2q %zmm1, %zmm0, %zmm81395; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15]1396; AVX512-NEXT: vpermt2q %zmm4, %zmm12, %zmm51397; AVX512-NEXT: vpermt2q %zmm6, %zmm12, %zmm71398; AVX512-NEXT: vpermt2q %zmm3, %zmm12, %zmm21399; AVX512-NEXT: vpermt2q %zmm1, %zmm12, %zmm01400; AVX512-NEXT: vmovdqa64 %zmm10, 192(%rsi)1401; AVX512-NEXT: vmovdqa64 %zmm8, (%rsi)1402; AVX512-NEXT: vmovdqa64 %zmm11, 64(%rsi)1403; AVX512-NEXT: vmovdqa64 %zmm9, 128(%rsi)1404; AVX512-NEXT: vmovdqa64 %zmm7, 128(%rdx)1405; AVX512-NEXT: vmovdqa64 %zmm5, 192(%rdx)1406; AVX512-NEXT: vmovdqa64 %zmm0, (%rdx)1407; AVX512-NEXT: vmovdqa64 %zmm2, 64(%rdx)1408; AVX512-NEXT: vzeroupper1409; AVX512-NEXT: retq1410;1411; AVX512-FCP-LABEL: load_i64_stride2_vf32:1412; AVX512-FCP: # %bb.0:1413; AVX512-FCP-NEXT: vmovdqa64 (%rdi), %zmm01414; AVX512-FCP-NEXT: vmovdqa64 64(%rdi), %zmm11415; AVX512-FCP-NEXT: vmovdqa64 128(%rdi), %zmm21416; AVX512-FCP-NEXT: vmovdqa64 192(%rdi), %zmm31417; AVX512-FCP-NEXT: vmovdqa64 448(%rdi), %zmm41418; AVX512-FCP-NEXT: vmovdqa64 384(%rdi), %zmm51419; AVX512-FCP-NEXT: vmovdqa64 320(%rdi), %zmm61420; AVX512-FCP-NEXT: vmovdqa64 256(%rdi), %zmm71421; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14]1422; AVX512-FCP-NEXT: vmovdqa64 %zmm7, %zmm91423; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm8, %zmm91424; AVX512-FCP-NEXT: vmovdqa64 %zmm5, %zmm101425; AVX512-FCP-NEXT: vpermt2q %zmm4, %zmm8, %zmm101426; AVX512-FCP-NEXT: vmovdqa64 %zmm2, %zmm111427; AVX512-FCP-NEXT: vpermt2q %zmm3, %zmm8, %zmm111428; AVX512-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm81429; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15]1430; AVX512-FCP-NEXT: vpermt2q %zmm4, %zmm12, %zmm51431; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm12, %zmm71432; AVX512-FCP-NEXT: vpermt2q %zmm3, %zmm12, %zmm21433; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm12, %zmm01434; AVX512-FCP-NEXT: vmovdqa64 %zmm10, 192(%rsi)1435; AVX512-FCP-NEXT: vmovdqa64 %zmm8, (%rsi)1436; AVX512-FCP-NEXT: vmovdqa64 %zmm11, 64(%rsi)1437; AVX512-FCP-NEXT: vmovdqa64 %zmm9, 128(%rsi)1438; AVX512-FCP-NEXT: vmovdqa64 %zmm7, 128(%rdx)1439; AVX512-FCP-NEXT: vmovdqa64 %zmm5, 192(%rdx)1440; AVX512-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)1441; AVX512-FCP-NEXT: vmovdqa64 %zmm2, 64(%rdx)1442; AVX512-FCP-NEXT: vzeroupper1443; AVX512-FCP-NEXT: retq1444;1445; AVX512DQ-LABEL: load_i64_stride2_vf32:1446; AVX512DQ: # %bb.0:1447; AVX512DQ-NEXT: vmovdqa64 (%rdi), %zmm01448; AVX512DQ-NEXT: vmovdqa64 64(%rdi), %zmm11449; AVX512DQ-NEXT: vmovdqa64 128(%rdi), %zmm21450; AVX512DQ-NEXT: vmovdqa64 192(%rdi), %zmm31451; AVX512DQ-NEXT: vmovdqa64 448(%rdi), %zmm41452; AVX512DQ-NEXT: vmovdqa64 384(%rdi), %zmm51453; AVX512DQ-NEXT: vmovdqa64 320(%rdi), %zmm61454; AVX512DQ-NEXT: vmovdqa64 256(%rdi), %zmm71455; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14]1456; AVX512DQ-NEXT: vmovdqa64 %zmm7, %zmm91457; AVX512DQ-NEXT: vpermt2q %zmm6, %zmm8, %zmm91458; AVX512DQ-NEXT: vmovdqa64 %zmm5, %zmm101459; AVX512DQ-NEXT: vpermt2q %zmm4, %zmm8, %zmm101460; AVX512DQ-NEXT: vmovdqa64 %zmm2, %zmm111461; AVX512DQ-NEXT: vpermt2q %zmm3, %zmm8, %zmm111462; AVX512DQ-NEXT: vpermi2q %zmm1, %zmm0, %zmm81463; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15]1464; AVX512DQ-NEXT: vpermt2q %zmm4, %zmm12, %zmm51465; AVX512DQ-NEXT: vpermt2q %zmm6, %zmm12, %zmm71466; AVX512DQ-NEXT: vpermt2q %zmm3, %zmm12, %zmm21467; AVX512DQ-NEXT: vpermt2q %zmm1, %zmm12, %zmm01468; AVX512DQ-NEXT: vmovdqa64 %zmm10, 192(%rsi)1469; AVX512DQ-NEXT: vmovdqa64 %zmm8, (%rsi)1470; AVX512DQ-NEXT: vmovdqa64 %zmm11, 64(%rsi)1471; AVX512DQ-NEXT: vmovdqa64 %zmm9, 128(%rsi)1472; AVX512DQ-NEXT: vmovdqa64 %zmm7, 128(%rdx)1473; AVX512DQ-NEXT: vmovdqa64 %zmm5, 192(%rdx)1474; AVX512DQ-NEXT: vmovdqa64 %zmm0, (%rdx)1475; AVX512DQ-NEXT: vmovdqa64 %zmm2, 64(%rdx)1476; AVX512DQ-NEXT: vzeroupper1477; AVX512DQ-NEXT: retq1478;1479; AVX512DQ-FCP-LABEL: load_i64_stride2_vf32:1480; AVX512DQ-FCP: # %bb.0:1481; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdi), %zmm01482; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdi), %zmm11483; AVX512DQ-FCP-NEXT: vmovdqa64 128(%rdi), %zmm21484; AVX512DQ-FCP-NEXT: vmovdqa64 192(%rdi), %zmm31485; AVX512DQ-FCP-NEXT: vmovdqa64 448(%rdi), %zmm41486; AVX512DQ-FCP-NEXT: vmovdqa64 384(%rdi), %zmm51487; AVX512DQ-FCP-NEXT: vmovdqa64 320(%rdi), %zmm61488; AVX512DQ-FCP-NEXT: vmovdqa64 256(%rdi), %zmm71489; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14]1490; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm7, %zmm91491; AVX512DQ-FCP-NEXT: vpermt2q %zmm6, %zmm8, %zmm91492; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm5, %zmm101493; AVX512DQ-FCP-NEXT: vpermt2q %zmm4, %zmm8, %zmm101494; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, %zmm111495; AVX512DQ-FCP-NEXT: vpermt2q %zmm3, %zmm8, %zmm111496; AVX512DQ-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm81497; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15]1498; AVX512DQ-FCP-NEXT: vpermt2q %zmm4, %zmm12, %zmm51499; AVX512DQ-FCP-NEXT: vpermt2q %zmm6, %zmm12, %zmm71500; AVX512DQ-FCP-NEXT: vpermt2q %zmm3, %zmm12, %zmm21501; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm12, %zmm01502; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm10, 192(%rsi)1503; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm8, (%rsi)1504; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm11, 64(%rsi)1505; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm9, 128(%rsi)1506; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm7, 128(%rdx)1507; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm5, 192(%rdx)1508; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)1509; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, 64(%rdx)1510; AVX512DQ-FCP-NEXT: vzeroupper1511; AVX512DQ-FCP-NEXT: retq1512;1513; AVX512BW-LABEL: load_i64_stride2_vf32:1514; AVX512BW: # %bb.0:1515; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm01516; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm11517; AVX512BW-NEXT: vmovdqa64 128(%rdi), %zmm21518; AVX512BW-NEXT: vmovdqa64 192(%rdi), %zmm31519; AVX512BW-NEXT: vmovdqa64 448(%rdi), %zmm41520; AVX512BW-NEXT: vmovdqa64 384(%rdi), %zmm51521; AVX512BW-NEXT: vmovdqa64 320(%rdi), %zmm61522; AVX512BW-NEXT: vmovdqa64 256(%rdi), %zmm71523; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14]1524; AVX512BW-NEXT: vmovdqa64 %zmm7, %zmm91525; AVX512BW-NEXT: vpermt2q %zmm6, %zmm8, %zmm91526; AVX512BW-NEXT: vmovdqa64 %zmm5, %zmm101527; AVX512BW-NEXT: vpermt2q %zmm4, %zmm8, %zmm101528; AVX512BW-NEXT: vmovdqa64 %zmm2, %zmm111529; AVX512BW-NEXT: vpermt2q %zmm3, %zmm8, %zmm111530; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm81531; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15]1532; AVX512BW-NEXT: vpermt2q %zmm4, %zmm12, %zmm51533; AVX512BW-NEXT: vpermt2q %zmm6, %zmm12, %zmm71534; AVX512BW-NEXT: vpermt2q %zmm3, %zmm12, %zmm21535; AVX512BW-NEXT: vpermt2q %zmm1, %zmm12, %zmm01536; AVX512BW-NEXT: vmovdqa64 %zmm10, 192(%rsi)1537; AVX512BW-NEXT: vmovdqa64 %zmm8, (%rsi)1538; AVX512BW-NEXT: vmovdqa64 %zmm11, 64(%rsi)1539; AVX512BW-NEXT: vmovdqa64 %zmm9, 128(%rsi)1540; AVX512BW-NEXT: vmovdqa64 %zmm7, 128(%rdx)1541; AVX512BW-NEXT: vmovdqa64 %zmm5, 192(%rdx)1542; AVX512BW-NEXT: vmovdqa64 %zmm0, (%rdx)1543; AVX512BW-NEXT: vmovdqa64 %zmm2, 64(%rdx)1544; AVX512BW-NEXT: vzeroupper1545; AVX512BW-NEXT: retq1546;1547; AVX512BW-FCP-LABEL: load_i64_stride2_vf32:1548; AVX512BW-FCP: # %bb.0:1549; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm01550; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm11551; AVX512BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm21552; AVX512BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm31553; AVX512BW-FCP-NEXT: vmovdqa64 448(%rdi), %zmm41554; AVX512BW-FCP-NEXT: vmovdqa64 384(%rdi), %zmm51555; AVX512BW-FCP-NEXT: vmovdqa64 320(%rdi), %zmm61556; AVX512BW-FCP-NEXT: vmovdqa64 256(%rdi), %zmm71557; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14]1558; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, %zmm91559; AVX512BW-FCP-NEXT: vpermt2q %zmm6, %zmm8, %zmm91560; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, %zmm101561; AVX512BW-FCP-NEXT: vpermt2q %zmm4, %zmm8, %zmm101562; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm111563; AVX512BW-FCP-NEXT: vpermt2q %zmm3, %zmm8, %zmm111564; AVX512BW-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm81565; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15]1566; AVX512BW-FCP-NEXT: vpermt2q %zmm4, %zmm12, %zmm51567; AVX512BW-FCP-NEXT: vpermt2q %zmm6, %zmm12, %zmm71568; AVX512BW-FCP-NEXT: vpermt2q %zmm3, %zmm12, %zmm21569; AVX512BW-FCP-NEXT: vpermt2q %zmm1, %zmm12, %zmm01570; AVX512BW-FCP-NEXT: vmovdqa64 %zmm10, 192(%rsi)1571; AVX512BW-FCP-NEXT: vmovdqa64 %zmm8, (%rsi)1572; AVX512BW-FCP-NEXT: vmovdqa64 %zmm11, 64(%rsi)1573; AVX512BW-FCP-NEXT: vmovdqa64 %zmm9, 128(%rsi)1574; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, 128(%rdx)1575; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, 192(%rdx)1576; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)1577; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, 64(%rdx)1578; AVX512BW-FCP-NEXT: vzeroupper1579; AVX512BW-FCP-NEXT: retq1580;1581; AVX512DQ-BW-LABEL: load_i64_stride2_vf32:1582; AVX512DQ-BW: # %bb.0:1583; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm01584; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm11585; AVX512DQ-BW-NEXT: vmovdqa64 128(%rdi), %zmm21586; AVX512DQ-BW-NEXT: vmovdqa64 192(%rdi), %zmm31587; AVX512DQ-BW-NEXT: vmovdqa64 448(%rdi), %zmm41588; AVX512DQ-BW-NEXT: vmovdqa64 384(%rdi), %zmm51589; AVX512DQ-BW-NEXT: vmovdqa64 320(%rdi), %zmm61590; AVX512DQ-BW-NEXT: vmovdqa64 256(%rdi), %zmm71591; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14]1592; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, %zmm91593; AVX512DQ-BW-NEXT: vpermt2q %zmm6, %zmm8, %zmm91594; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, %zmm101595; AVX512DQ-BW-NEXT: vpermt2q %zmm4, %zmm8, %zmm101596; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, %zmm111597; AVX512DQ-BW-NEXT: vpermt2q %zmm3, %zmm8, %zmm111598; AVX512DQ-BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm81599; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15]1600; AVX512DQ-BW-NEXT: vpermt2q %zmm4, %zmm12, %zmm51601; AVX512DQ-BW-NEXT: vpermt2q %zmm6, %zmm12, %zmm71602; AVX512DQ-BW-NEXT: vpermt2q %zmm3, %zmm12, %zmm21603; AVX512DQ-BW-NEXT: vpermt2q %zmm1, %zmm12, %zmm01604; AVX512DQ-BW-NEXT: vmovdqa64 %zmm10, 192(%rsi)1605; AVX512DQ-BW-NEXT: vmovdqa64 %zmm8, (%rsi)1606; AVX512DQ-BW-NEXT: vmovdqa64 %zmm11, 64(%rsi)1607; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, 128(%rsi)1608; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, 128(%rdx)1609; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, 192(%rdx)1610; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, (%rdx)1611; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, 64(%rdx)1612; AVX512DQ-BW-NEXT: vzeroupper1613; AVX512DQ-BW-NEXT: retq1614;1615; AVX512DQ-BW-FCP-LABEL: load_i64_stride2_vf32:1616; AVX512DQ-BW-FCP: # %bb.0:1617; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm01618; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm11619; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm21620; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm31621; AVX512DQ-BW-FCP-NEXT: vmovdqa64 448(%rdi), %zmm41622; AVX512DQ-BW-FCP-NEXT: vmovdqa64 384(%rdi), %zmm51623; AVX512DQ-BW-FCP-NEXT: vmovdqa64 320(%rdi), %zmm61624; AVX512DQ-BW-FCP-NEXT: vmovdqa64 256(%rdi), %zmm71625; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm8 = [0,2,4,6,8,10,12,14]1626; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, %zmm91627; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm6, %zmm8, %zmm91628; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, %zmm101629; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm4, %zmm8, %zmm101630; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm111631; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm3, %zmm8, %zmm111632; AVX512DQ-BW-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm81633; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm12 = [1,3,5,7,9,11,13,15]1634; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm4, %zmm12, %zmm51635; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm6, %zmm12, %zmm71636; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm3, %zmm12, %zmm21637; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm1, %zmm12, %zmm01638; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm10, 192(%rsi)1639; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm8, (%rsi)1640; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm11, 64(%rsi)1641; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm9, 128(%rsi)1642; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, 128(%rdx)1643; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, 192(%rdx)1644; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)1645; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, 64(%rdx)1646; AVX512DQ-BW-FCP-NEXT: vzeroupper1647; AVX512DQ-BW-FCP-NEXT: retq1648 %wide.vec = load <64 x i64>, ptr %in.vec, align 641649 %strided.vec0 = shufflevector <64 x i64> %wide.vec, <64 x i64> 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>1650 %strided.vec1 = shufflevector <64 x i64> %wide.vec, <64 x i64> 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>1651 store <32 x i64> %strided.vec0, ptr %out.vec0, align 641652 store <32 x i64> %strided.vec1, ptr %out.vec1, align 641653 ret void1654}1655 1656define void @load_i64_stride2_vf64(ptr %in.vec, ptr %out.vec0, ptr %out.vec1) nounwind {1657;1658;1659;1660; SSE-LABEL: load_i64_stride2_vf64:1661; SSE: # %bb.0:1662; SSE-NEXT: subq $664, %rsp # imm = 0x2981663; SSE-NEXT: movaps 304(%rdi), %xmm01664; SSE-NEXT: movaps 272(%rdi), %xmm11665; SSE-NEXT: movaps 256(%rdi), %xmm81666; SSE-NEXT: movaps 240(%rdi), %xmm21667; SSE-NEXT: movaps 224(%rdi), %xmm91668; SSE-NEXT: movaps 208(%rdi), %xmm31669; SSE-NEXT: movaps 192(%rdi), %xmm101670; SSE-NEXT: movaps 176(%rdi), %xmm41671; SSE-NEXT: movaps 160(%rdi), %xmm111672; SSE-NEXT: movaps 144(%rdi), %xmm51673; SSE-NEXT: movaps 128(%rdi), %xmm121674; SSE-NEXT: movaps 112(%rdi), %xmm61675; SSE-NEXT: movaps 96(%rdi), %xmm131676; SSE-NEXT: movaps 80(%rdi), %xmm71677; SSE-NEXT: movaps 64(%rdi), %xmm141678; SSE-NEXT: movaps %xmm14, %xmm151679; SSE-NEXT: movlhps {{.*#+}} xmm15 = xmm15[0],xmm7[0]1680; SSE-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1681; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm7[1]1682; SSE-NEXT: movaps %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1683; SSE-NEXT: movaps %xmm13, %xmm71684; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm6[0]1685; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1686; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm6[1]1687; SSE-NEXT: movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1688; SSE-NEXT: movaps %xmm12, %xmm61689; SSE-NEXT: movlhps {{.*#+}} xmm6 = xmm6[0],xmm5[0]1690; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1691; SSE-NEXT: unpckhpd {{.*#+}} xmm12 = xmm12[1],xmm5[1]1692; SSE-NEXT: movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1693; SSE-NEXT: movaps %xmm11, %xmm51694; SSE-NEXT: movlhps {{.*#+}} xmm5 = xmm5[0],xmm4[0]1695; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1696; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm4[1]1697; SSE-NEXT: movaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1698; SSE-NEXT: movaps %xmm10, %xmm41699; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm3[0]1700; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1701; SSE-NEXT: unpckhpd {{.*#+}} xmm10 = xmm10[1],xmm3[1]1702; SSE-NEXT: movaps %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1703; SSE-NEXT: movaps %xmm9, %xmm31704; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm2[0]1705; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1706; SSE-NEXT: unpckhpd {{.*#+}} xmm9 = xmm9[1],xmm2[1]1707; SSE-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1708; SSE-NEXT: movaps %xmm8, %xmm21709; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm1[0]1710; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1711; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm1[1]1712; SSE-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1713; SSE-NEXT: movaps 288(%rdi), %xmm11714; SSE-NEXT: movaps %xmm1, %xmm21715; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1716; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1717; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1718; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1719; SSE-NEXT: movaps 336(%rdi), %xmm01720; SSE-NEXT: movaps 320(%rdi), %xmm11721; SSE-NEXT: movaps %xmm1, %xmm21722; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1723; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1724; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1725; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1726; SSE-NEXT: movaps 368(%rdi), %xmm01727; SSE-NEXT: movaps 352(%rdi), %xmm11728; SSE-NEXT: movaps %xmm1, %xmm21729; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1730; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1731; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1732; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1733; SSE-NEXT: movaps 400(%rdi), %xmm01734; SSE-NEXT: movaps 384(%rdi), %xmm11735; SSE-NEXT: movaps %xmm1, %xmm21736; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1737; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1738; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1739; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1740; SSE-NEXT: movaps 432(%rdi), %xmm01741; SSE-NEXT: movaps 416(%rdi), %xmm11742; SSE-NEXT: movaps %xmm1, %xmm21743; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1744; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1745; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1746; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1747; SSE-NEXT: movaps 464(%rdi), %xmm01748; SSE-NEXT: movaps 448(%rdi), %xmm11749; SSE-NEXT: movaps %xmm1, %xmm21750; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1751; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1752; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1753; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1754; SSE-NEXT: movaps 496(%rdi), %xmm01755; SSE-NEXT: movaps 480(%rdi), %xmm11756; SSE-NEXT: movaps %xmm1, %xmm21757; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1758; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1759; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1760; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1761; SSE-NEXT: movaps 528(%rdi), %xmm01762; SSE-NEXT: movaps 512(%rdi), %xmm11763; SSE-NEXT: movaps %xmm1, %xmm21764; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1765; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1766; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1767; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1768; SSE-NEXT: movaps 560(%rdi), %xmm01769; SSE-NEXT: movaps 544(%rdi), %xmm11770; SSE-NEXT: movaps %xmm1, %xmm21771; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1772; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1773; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1774; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1775; SSE-NEXT: movaps 592(%rdi), %xmm01776; SSE-NEXT: movaps 576(%rdi), %xmm11777; SSE-NEXT: movaps %xmm1, %xmm21778; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1779; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1780; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1781; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1782; SSE-NEXT: movaps 624(%rdi), %xmm01783; SSE-NEXT: movaps 608(%rdi), %xmm11784; SSE-NEXT: movaps %xmm1, %xmm21785; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1786; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1787; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1788; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1789; SSE-NEXT: movaps 656(%rdi), %xmm01790; SSE-NEXT: movaps 640(%rdi), %xmm11791; SSE-NEXT: movaps %xmm1, %xmm21792; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1793; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1794; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1795; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1796; SSE-NEXT: movaps 688(%rdi), %xmm01797; SSE-NEXT: movaps 672(%rdi), %xmm11798; SSE-NEXT: movaps %xmm1, %xmm21799; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1800; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1801; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1802; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1803; SSE-NEXT: movaps 720(%rdi), %xmm01804; SSE-NEXT: movaps 704(%rdi), %xmm11805; SSE-NEXT: movaps %xmm1, %xmm21806; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1807; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1808; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1809; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1810; SSE-NEXT: movaps 752(%rdi), %xmm01811; SSE-NEXT: movaps 736(%rdi), %xmm11812; SSE-NEXT: movaps %xmm1, %xmm21813; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1814; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1815; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1816; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1817; SSE-NEXT: movaps 784(%rdi), %xmm01818; SSE-NEXT: movaps 768(%rdi), %xmm11819; SSE-NEXT: movaps %xmm1, %xmm21820; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1821; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1822; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1823; SSE-NEXT: movaps %xmm1, (%rsp) # 16-byte Spill1824; SSE-NEXT: movaps 816(%rdi), %xmm01825; SSE-NEXT: movaps 800(%rdi), %xmm11826; SSE-NEXT: movaps %xmm1, %xmm21827; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1828; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1829; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1830; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1831; SSE-NEXT: movaps 848(%rdi), %xmm01832; SSE-NEXT: movaps 832(%rdi), %xmm11833; SSE-NEXT: movaps %xmm1, %xmm121834; SSE-NEXT: movlhps {{.*#+}} xmm12 = xmm12[0],xmm0[0]1835; SSE-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]1836; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1837; SSE-NEXT: movaps 880(%rdi), %xmm01838; SSE-NEXT: movaps 864(%rdi), %xmm151839; SSE-NEXT: movaps %xmm15, %xmm71840; SSE-NEXT: movlhps {{.*#+}} xmm7 = xmm7[0],xmm0[0]1841; SSE-NEXT: unpckhpd {{.*#+}} xmm15 = xmm15[1],xmm0[1]1842; SSE-NEXT: movaps 912(%rdi), %xmm01843; SSE-NEXT: movaps 896(%rdi), %xmm131844; SSE-NEXT: movaps %xmm13, %xmm91845; SSE-NEXT: movlhps {{.*#+}} xmm9 = xmm9[0],xmm0[0]1846; SSE-NEXT: unpckhpd {{.*#+}} xmm13 = xmm13[1],xmm0[1]1847; SSE-NEXT: movaps 944(%rdi), %xmm01848; SSE-NEXT: movaps 928(%rdi), %xmm81849; SSE-NEXT: movaps %xmm8, %xmm21850; SSE-NEXT: movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1851; SSE-NEXT: unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm0[1]1852; SSE-NEXT: movaps 976(%rdi), %xmm01853; SSE-NEXT: movaps 960(%rdi), %xmm61854; SSE-NEXT: movaps %xmm6, %xmm11855; SSE-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1856; SSE-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm0[1]1857; SSE-NEXT: movaps 1008(%rdi), %xmm31858; SSE-NEXT: movaps 992(%rdi), %xmm51859; SSE-NEXT: movaps %xmm5, %xmm41860; SSE-NEXT: movlhps {{.*#+}} xmm4 = xmm4[0],xmm3[0]1861; SSE-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm3[1]1862; SSE-NEXT: movaps (%rdi), %xmm141863; SSE-NEXT: movaps 16(%rdi), %xmm31864; SSE-NEXT: movaps %xmm14, %xmm101865; SSE-NEXT: movlhps {{.*#+}} xmm10 = xmm10[0],xmm3[0]1866; SSE-NEXT: unpckhpd {{.*#+}} xmm14 = xmm14[1],xmm3[1]1867; SSE-NEXT: movaps 32(%rdi), %xmm111868; SSE-NEXT: movaps 48(%rdi), %xmm01869; SSE-NEXT: movaps %xmm11, %xmm31870; SSE-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm0[0]1871; SSE-NEXT: unpckhpd {{.*#+}} xmm11 = xmm11[1],xmm0[1]1872; SSE-NEXT: movaps %xmm4, 496(%rsi)1873; SSE-NEXT: movaps %xmm1, 480(%rsi)1874; SSE-NEXT: movaps %xmm2, 464(%rsi)1875; SSE-NEXT: movaps %xmm9, 448(%rsi)1876; SSE-NEXT: movaps %xmm7, 432(%rsi)1877; SSE-NEXT: movaps %xmm12, 416(%rsi)1878; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1879; SSE-NEXT: movaps %xmm0, 400(%rsi)1880; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1881; SSE-NEXT: movaps %xmm0, 384(%rsi)1882; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1883; SSE-NEXT: movaps %xmm0, 368(%rsi)1884; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1885; SSE-NEXT: movaps %xmm0, 352(%rsi)1886; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1887; SSE-NEXT: movaps %xmm0, 336(%rsi)1888; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1889; SSE-NEXT: movaps %xmm0, 320(%rsi)1890; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1891; SSE-NEXT: movaps %xmm0, 304(%rsi)1892; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1893; SSE-NEXT: movaps %xmm0, 288(%rsi)1894; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1895; SSE-NEXT: movaps %xmm0, 272(%rsi)1896; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1897; SSE-NEXT: movaps %xmm0, 256(%rsi)1898; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1899; SSE-NEXT: movaps %xmm0, 240(%rsi)1900; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1901; SSE-NEXT: movaps %xmm0, 224(%rsi)1902; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1903; SSE-NEXT: movaps %xmm0, 208(%rsi)1904; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1905; SSE-NEXT: movaps %xmm0, 192(%rsi)1906; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1907; SSE-NEXT: movaps %xmm0, 176(%rsi)1908; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1909; SSE-NEXT: movaps %xmm0, 160(%rsi)1910; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1911; SSE-NEXT: movaps %xmm0, 144(%rsi)1912; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1913; SSE-NEXT: movaps %xmm0, 128(%rsi)1914; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1915; SSE-NEXT: movaps %xmm0, 112(%rsi)1916; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1917; SSE-NEXT: movaps %xmm0, 96(%rsi)1918; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1919; SSE-NEXT: movaps %xmm0, 80(%rsi)1920; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1921; SSE-NEXT: movaps %xmm0, 64(%rsi)1922; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1923; SSE-NEXT: movaps %xmm0, 48(%rsi)1924; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1925; SSE-NEXT: movaps %xmm0, 32(%rsi)1926; SSE-NEXT: movaps %xmm3, 16(%rsi)1927; SSE-NEXT: movaps %xmm10, (%rsi)1928; SSE-NEXT: movaps %xmm5, 496(%rdx)1929; SSE-NEXT: movaps %xmm6, 480(%rdx)1930; SSE-NEXT: movaps %xmm8, 464(%rdx)1931; SSE-NEXT: movaps %xmm13, 448(%rdx)1932; SSE-NEXT: movaps %xmm15, 432(%rdx)1933; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1934; SSE-NEXT: movaps %xmm0, 416(%rdx)1935; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1936; SSE-NEXT: movaps %xmm0, 400(%rdx)1937; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload1938; SSE-NEXT: movaps %xmm0, 384(%rdx)1939; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1940; SSE-NEXT: movaps %xmm0, 368(%rdx)1941; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1942; SSE-NEXT: movaps %xmm0, 352(%rdx)1943; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1944; SSE-NEXT: movaps %xmm0, 336(%rdx)1945; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1946; SSE-NEXT: movaps %xmm0, 320(%rdx)1947; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1948; SSE-NEXT: movaps %xmm0, 304(%rdx)1949; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1950; SSE-NEXT: movaps %xmm0, 288(%rdx)1951; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1952; SSE-NEXT: movaps %xmm0, 272(%rdx)1953; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1954; SSE-NEXT: movaps %xmm0, 256(%rdx)1955; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1956; SSE-NEXT: movaps %xmm0, 240(%rdx)1957; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1958; SSE-NEXT: movaps %xmm0, 224(%rdx)1959; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1960; SSE-NEXT: movaps %xmm0, 208(%rdx)1961; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1962; SSE-NEXT: movaps %xmm0, 192(%rdx)1963; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1964; SSE-NEXT: movaps %xmm0, 176(%rdx)1965; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1966; SSE-NEXT: movaps %xmm0, 160(%rdx)1967; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1968; SSE-NEXT: movaps %xmm0, 144(%rdx)1969; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1970; SSE-NEXT: movaps %xmm0, 128(%rdx)1971; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1972; SSE-NEXT: movaps %xmm0, 112(%rdx)1973; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1974; SSE-NEXT: movaps %xmm0, 96(%rdx)1975; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1976; SSE-NEXT: movaps %xmm0, 80(%rdx)1977; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1978; SSE-NEXT: movaps %xmm0, 64(%rdx)1979; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1980; SSE-NEXT: movaps %xmm0, 48(%rdx)1981; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1982; SSE-NEXT: movaps %xmm0, 32(%rdx)1983; SSE-NEXT: movaps %xmm11, 16(%rdx)1984; SSE-NEXT: movaps %xmm14, (%rdx)1985; SSE-NEXT: addq $664, %rsp # imm = 0x2981986; SSE-NEXT: retq1987;1988; AVX-LABEL: load_i64_stride2_vf64:1989; AVX: # %bb.0:1990; AVX-NEXT: subq $424, %rsp # imm = 0x1A81991; AVX-NEXT: vmovaps 384(%rdi), %ymm71992; AVX-NEXT: vmovaps 256(%rdi), %ymm81993; AVX-NEXT: vmovaps 448(%rdi), %ymm21994; AVX-NEXT: vmovaps 320(%rdi), %ymm41995; AVX-NEXT: vmovaps (%rdi), %ymm111996; AVX-NEXT: vmovaps 64(%rdi), %ymm01997; AVX-NEXT: vmovaps 128(%rdi), %ymm51998; AVX-NEXT: vmovaps 192(%rdi), %ymm91999; AVX-NEXT: vperm2f128 {{.*#+}} ymm3 = ymm0[2,3],mem[2,3]2000; AVX-NEXT: vinsertf128 $1, 96(%rdi), %ymm0, %ymm12001; AVX-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm1[0],ymm3[0],ymm1[2],ymm3[2]2002; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2003; AVX-NEXT: vperm2f128 {{.*#+}} ymm6 = ymm9[2,3],mem[2,3]2004; AVX-NEXT: vinsertf128 $1, 224(%rdi), %ymm9, %ymm122005; AVX-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm12[0],ymm6[0],ymm12[2],ymm6[2]2006; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2007; AVX-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm4[2,3],mem[2,3]2008; AVX-NEXT: vinsertf128 $1, 352(%rdi), %ymm4, %ymm92009; AVX-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm9[0],ymm0[0],ymm9[2],ymm0[2]2010; AVX-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2011; AVX-NEXT: vperm2f128 {{.*#+}} ymm10 = ymm2[2,3],mem[2,3]2012; AVX-NEXT: vinsertf128 $1, 480(%rdi), %ymm2, %ymm132013; AVX-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm11[2,3],mem[2,3]2014; AVX-NEXT: vinsertf128 $1, 32(%rdi), %ymm11, %ymm42015; AVX-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm1[1],ymm3[1],ymm1[3],ymm3[3]2016; AVX-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2017; AVX-NEXT: vunpcklpd {{.*#+}} ymm1 = ymm4[0],ymm2[0],ymm4[2],ymm2[2]2018; AVX-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2019; AVX-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm4[1],ymm2[1],ymm4[3],ymm2[3]2020; AVX-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2021; AVX-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm5[2,3],mem[2,3]2022; AVX-NEXT: vinsertf128 $1, 160(%rdi), %ymm5, %ymm22023; AVX-NEXT: vunpckhpd {{.*#+}} ymm3 = ymm12[1],ymm6[1],ymm12[3],ymm6[3]2024; AVX-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2025; AVX-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm2[0],ymm1[0],ymm2[2],ymm1[2]2026; AVX-NEXT: vmovups %ymm3, (%rsp) # 32-byte Spill2027; AVX-NEXT: vunpckhpd {{.*#+}} ymm1 = ymm2[1],ymm1[1],ymm2[3],ymm1[3]2028; AVX-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2029; AVX-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm8[2,3],mem[2,3]2030; AVX-NEXT: vinsertf128 $1, 288(%rdi), %ymm8, %ymm22031; AVX-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm9[1],ymm0[1],ymm9[3],ymm0[3]2032; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2033; AVX-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm2[0],ymm1[0],ymm2[2],ymm1[2]2034; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2035; AVX-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm1[1],ymm2[3],ymm1[3]2036; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2037; AVX-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm13[0],ymm10[0],ymm13[2],ymm10[2]2038; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2039; AVX-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm13[1],ymm10[1],ymm13[3],ymm10[3]2040; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2041; AVX-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm7[2,3],mem[2,3]2042; AVX-NEXT: vinsertf128 $1, 416(%rdi), %ymm7, %ymm12043; AVX-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]2044; AVX-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]2045; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2046; AVX-NEXT: vmovaps 576(%rdi), %ymm02047; AVX-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm0[2,3],mem[2,3]2048; AVX-NEXT: vinsertf128 $1, 608(%rdi), %ymm0, %ymm02049; AVX-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]2050; AVX-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]2051; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2052; AVX-NEXT: vmovaps 512(%rdi), %ymm02053; AVX-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm0[2,3],mem[2,3]2054; AVX-NEXT: vinsertf128 $1, 544(%rdi), %ymm0, %ymm22055; AVX-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm2[0],ymm1[0],ymm2[2],ymm1[2]2056; AVX-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm1[1],ymm2[3],ymm1[3]2057; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2058; AVX-NEXT: vmovaps 704(%rdi), %ymm12059; AVX-NEXT: vperm2f128 {{.*#+}} ymm3 = ymm1[2,3],mem[2,3]2060; AVX-NEXT: vinsertf128 $1, 736(%rdi), %ymm1, %ymm12061; AVX-NEXT: vunpcklpd {{.*#+}} ymm11 = ymm1[0],ymm3[0],ymm1[2],ymm3[2]2062; AVX-NEXT: vunpckhpd {{.*#+}} ymm14 = ymm1[1],ymm3[1],ymm1[3],ymm3[3]2063; AVX-NEXT: vmovaps 640(%rdi), %ymm12064; AVX-NEXT: vperm2f128 {{.*#+}} ymm3 = ymm1[2,3],mem[2,3]2065; AVX-NEXT: vinsertf128 $1, 672(%rdi), %ymm1, %ymm12066; AVX-NEXT: vunpcklpd {{.*#+}} ymm6 = ymm1[0],ymm3[0],ymm1[2],ymm3[2]2067; AVX-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm1[1],ymm3[1],ymm1[3],ymm3[3]2068; AVX-NEXT: vmovaps 832(%rdi), %ymm12069; AVX-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],mem[2,3]2070; AVX-NEXT: vinsertf128 $1, 864(%rdi), %ymm1, %ymm12071; AVX-NEXT: vunpcklpd {{.*#+}} ymm7 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]2072; AVX-NEXT: vunpckhpd {{.*#+}} ymm9 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]2073; AVX-NEXT: vmovaps 768(%rdi), %ymm02074; AVX-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm0[2,3],mem[2,3]2075; AVX-NEXT: vinsertf128 $1, 800(%rdi), %ymm0, %ymm02076; AVX-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]2077; AVX-NEXT: vunpckhpd {{.*#+}} ymm8 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]2078; AVX-NEXT: vmovaps 960(%rdi), %ymm12079; AVX-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],mem[2,3]2080; AVX-NEXT: vinsertf128 $1, 992(%rdi), %ymm1, %ymm12081; AVX-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]2082; AVX-NEXT: vunpckhpd {{.*#+}} ymm5 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]2083; AVX-NEXT: vmovaps 896(%rdi), %ymm12084; AVX-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],mem[2,3]2085; AVX-NEXT: vinsertf128 $1, 928(%rdi), %ymm1, %ymm12086; AVX-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]2087; AVX-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]2088; AVX-NEXT: vmovaps %ymm2, 448(%rsi)2089; AVX-NEXT: vmovaps %ymm3, 384(%rsi)2090; AVX-NEXT: vmovaps %ymm6, 320(%rsi)2091; AVX-NEXT: vmovaps %ymm10, 256(%rsi)2092; AVX-NEXT: vmovaps %ymm13, 192(%rsi)2093; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload2094; AVX-NEXT: vmovaps %ymm1, 128(%rsi)2095; AVX-NEXT: vmovups (%rsp), %ymm1 # 32-byte Reload2096; AVX-NEXT: vmovaps %ymm1, 64(%rsi)2097; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload2098; AVX-NEXT: vmovaps %ymm1, (%rsi)2099; AVX-NEXT: vmovaps %ymm4, 480(%rsi)2100; AVX-NEXT: vmovaps %ymm7, 416(%rsi)2101; AVX-NEXT: vmovaps %ymm11, 352(%rsi)2102; AVX-NEXT: vmovaps %ymm15, 288(%rsi)2103; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload2104; AVX-NEXT: vmovaps %ymm1, 224(%rsi)2105; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload2106; AVX-NEXT: vmovaps %ymm1, 160(%rsi)2107; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload2108; AVX-NEXT: vmovaps %ymm1, 96(%rsi)2109; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload2110; AVX-NEXT: vmovaps %ymm1, 32(%rsi)2111; AVX-NEXT: vmovaps %ymm0, 448(%rdx)2112; AVX-NEXT: vmovaps %ymm5, 480(%rdx)2113; AVX-NEXT: vmovaps %ymm8, 384(%rdx)2114; AVX-NEXT: vmovaps %ymm9, 416(%rdx)2115; AVX-NEXT: vmovaps %ymm12, 320(%rdx)2116; AVX-NEXT: vmovaps %ymm14, 352(%rdx)2117; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2118; AVX-NEXT: vmovaps %ymm0, 256(%rdx)2119; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2120; AVX-NEXT: vmovaps %ymm0, 288(%rdx)2121; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2122; AVX-NEXT: vmovaps %ymm0, 192(%rdx)2123; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2124; AVX-NEXT: vmovaps %ymm0, 224(%rdx)2125; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2126; AVX-NEXT: vmovaps %ymm0, 128(%rdx)2127; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2128; AVX-NEXT: vmovaps %ymm0, 160(%rdx)2129; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2130; AVX-NEXT: vmovaps %ymm0, 64(%rdx)2131; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2132; AVX-NEXT: vmovaps %ymm0, 96(%rdx)2133; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2134; AVX-NEXT: vmovaps %ymm0, (%rdx)2135; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2136; AVX-NEXT: vmovaps %ymm0, 32(%rdx)2137; AVX-NEXT: addq $424, %rsp # imm = 0x1A82138; AVX-NEXT: vzeroupper2139; AVX-NEXT: retq2140;2141; AVX2-LABEL: load_i64_stride2_vf64:2142; AVX2: # %bb.0:2143; AVX2-NEXT: subq $424, %rsp # imm = 0x1A82144; AVX2-NEXT: vmovaps 544(%rdi), %ymm92145; AVX2-NEXT: vmovaps 416(%rdi), %ymm62146; AVX2-NEXT: vmovaps 384(%rdi), %ymm72147; AVX2-NEXT: vmovaps 288(%rdi), %ymm02148; AVX2-NEXT: vmovaps 256(%rdi), %ymm12149; AVX2-NEXT: vmovaps 160(%rdi), %ymm42150; AVX2-NEXT: vmovaps 128(%rdi), %ymm52151; AVX2-NEXT: vmovaps 608(%rdi), %ymm22152; AVX2-NEXT: vmovaps 576(%rdi), %ymm32153; AVX2-NEXT: vmovaps 480(%rdi), %ymm102154; AVX2-NEXT: vmovaps 448(%rdi), %ymm132155; AVX2-NEXT: vmovaps 352(%rdi), %ymm82156; AVX2-NEXT: vmovaps 320(%rdi), %ymm112157; AVX2-NEXT: vmovaps 224(%rdi), %ymm122158; AVX2-NEXT: vmovaps 192(%rdi), %ymm142159; AVX2-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm14[0],ymm12[0],ymm14[2],ymm12[2]2160; AVX2-NEXT: vmovups %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2161; AVX2-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm14[1],ymm12[1],ymm14[3],ymm12[3]2162; AVX2-NEXT: vmovups %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2163; AVX2-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm5[0],ymm4[0],ymm5[2],ymm4[2]2164; AVX2-NEXT: vmovups %ymm12, (%rsp) # 32-byte Spill2165; AVX2-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm5[1],ymm4[1],ymm5[3],ymm4[3]2166; AVX2-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2167; AVX2-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm11[0],ymm8[0],ymm11[2],ymm8[2]2168; AVX2-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2169; AVX2-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm11[1],ymm8[1],ymm11[3],ymm8[3]2170; AVX2-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2171; AVX2-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]2172; AVX2-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2173; AVX2-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]2174; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2175; AVX2-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm13[0],ymm10[0],ymm13[2],ymm10[2]2176; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2177; AVX2-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm13[1],ymm10[1],ymm13[3],ymm10[3]2178; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2179; AVX2-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm7[0],ymm6[0],ymm7[2],ymm6[2]2180; AVX2-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm7[1],ymm6[1],ymm7[3],ymm6[3]2181; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2182; AVX2-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm3[0],ymm2[0],ymm3[2],ymm2[2]2183; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2184; AVX2-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm3[1],ymm2[1],ymm3[3],ymm2[3]2185; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2186; AVX2-NEXT: vmovaps 512(%rdi), %ymm02187; AVX2-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm0[0],ymm9[0],ymm0[2],ymm9[2]2188; AVX2-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm9[1],ymm0[3],ymm9[3]2189; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2190; AVX2-NEXT: vmovaps 736(%rdi), %ymm02191; AVX2-NEXT: vmovaps 704(%rdi), %ymm12192; AVX2-NEXT: vunpcklpd {{.*#+}} ymm14 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]2193; AVX2-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]2194; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2195; AVX2-NEXT: vmovaps 672(%rdi), %ymm02196; AVX2-NEXT: vmovaps 640(%rdi), %ymm22197; AVX2-NEXT: vunpcklpd {{.*#+}} ymm6 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]2198; AVX2-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]2199; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2200; AVX2-NEXT: vmovaps 864(%rdi), %ymm02201; AVX2-NEXT: vmovaps 832(%rdi), %ymm22202; AVX2-NEXT: vunpcklpd {{.*#+}} ymm8 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]2203; AVX2-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]2204; AVX2-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2205; AVX2-NEXT: vmovaps 800(%rdi), %ymm02206; AVX2-NEXT: vmovaps 768(%rdi), %ymm22207; AVX2-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]2208; AVX2-NEXT: vunpckhpd {{.*#+}} ymm11 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]2209; AVX2-NEXT: vmovaps 992(%rdi), %ymm22210; AVX2-NEXT: vmovaps 960(%rdi), %ymm42211; AVX2-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm4[0],ymm2[0],ymm4[2],ymm2[2]2212; AVX2-NEXT: vunpckhpd {{.*#+}} ymm9 = ymm4[1],ymm2[1],ymm4[3],ymm2[3]2213; AVX2-NEXT: vmovaps 928(%rdi), %ymm22214; AVX2-NEXT: vmovaps 896(%rdi), %ymm42215; AVX2-NEXT: vunpcklpd {{.*#+}} ymm1 = ymm4[0],ymm2[0],ymm4[2],ymm2[2]2216; AVX2-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm4[1],ymm2[1],ymm4[3],ymm2[3]2217; AVX2-NEXT: vmovaps 64(%rdi), %ymm122218; AVX2-NEXT: vmovaps 96(%rdi), %ymm152219; AVX2-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm12[0],ymm15[0],ymm12[2],ymm15[2]2220; AVX2-NEXT: vunpckhpd {{.*#+}} ymm15 = ymm12[1],ymm15[1],ymm12[3],ymm15[3]2221; AVX2-NEXT: vmovaps (%rdi), %ymm122222; AVX2-NEXT: vmovaps 32(%rdi), %ymm02223; AVX2-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm12[0],ymm0[0],ymm12[2],ymm0[2]2224; AVX2-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm12[1],ymm0[1],ymm12[3],ymm0[3]2225; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm1[0,2,1,3]2226; AVX2-NEXT: vmovaps %ymm0, 448(%rsi)2227; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm3[0,2,1,3]2228; AVX2-NEXT: vmovaps %ymm0, 384(%rsi)2229; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm6[0,2,1,3]2230; AVX2-NEXT: vmovaps %ymm0, 320(%rsi)2231; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm10[0,2,1,3]2232; AVX2-NEXT: vmovaps %ymm0, 256(%rsi)2233; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm13[0,2,1,3]2234; AVX2-NEXT: vmovaps %ymm0, 192(%rsi)2235; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2236; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2237; AVX2-NEXT: vmovaps %ymm0, 128(%rsi)2238; AVX2-NEXT: vpermpd $216, (%rsp), %ymm0 # 32-byte Folded Reload2239; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2240; AVX2-NEXT: vmovaps %ymm0, 64(%rsi)2241; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm2[0,2,1,3]2242; AVX2-NEXT: vmovaps %ymm0, (%rsi)2243; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm5[0,2,1,3]2244; AVX2-NEXT: vmovaps %ymm0, 480(%rsi)2245; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm8[0,2,1,3]2246; AVX2-NEXT: vmovaps %ymm0, 416(%rsi)2247; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm14[0,2,1,3]2248; AVX2-NEXT: vmovaps %ymm0, 352(%rsi)2249; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2250; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2251; AVX2-NEXT: vmovaps %ymm0, 288(%rsi)2252; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2253; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2254; AVX2-NEXT: vmovaps %ymm0, 224(%rsi)2255; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2256; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2257; AVX2-NEXT: vmovaps %ymm0, 160(%rsi)2258; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2259; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2260; AVX2-NEXT: vmovaps %ymm0, 96(%rsi)2261; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm4[0,2,1,3]2262; AVX2-NEXT: vmovaps %ymm0, 32(%rsi)2263; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm7[0,2,1,3]2264; AVX2-NEXT: vmovaps %ymm0, 448(%rdx)2265; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm9[0,2,1,3]2266; AVX2-NEXT: vmovaps %ymm0, 480(%rdx)2267; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm11[0,2,1,3]2268; AVX2-NEXT: vmovaps %ymm0, 384(%rdx)2269; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2270; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2271; AVX2-NEXT: vmovaps %ymm0, 416(%rdx)2272; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2273; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2274; AVX2-NEXT: vmovaps %ymm0, 320(%rdx)2275; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2276; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2277; AVX2-NEXT: vmovaps %ymm0, 352(%rdx)2278; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2279; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2280; AVX2-NEXT: vmovaps %ymm0, 256(%rdx)2281; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2282; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2283; AVX2-NEXT: vmovaps %ymm0, 288(%rdx)2284; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2285; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2286; AVX2-NEXT: vmovaps %ymm0, 192(%rdx)2287; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2288; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2289; AVX2-NEXT: vmovaps %ymm0, 224(%rdx)2290; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2291; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2292; AVX2-NEXT: vmovaps %ymm0, 128(%rdx)2293; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2294; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2295; AVX2-NEXT: vmovaps %ymm0, 160(%rdx)2296; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2297; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2298; AVX2-NEXT: vmovaps %ymm0, 64(%rdx)2299; AVX2-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2300; AVX2-NEXT: # ymm0 = mem[0,2,1,3]2301; AVX2-NEXT: vmovaps %ymm0, 96(%rdx)2302; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm12[0,2,1,3]2303; AVX2-NEXT: vmovaps %ymm0, (%rdx)2304; AVX2-NEXT: vpermpd {{.*#+}} ymm0 = ymm15[0,2,1,3]2305; AVX2-NEXT: vmovaps %ymm0, 32(%rdx)2306; AVX2-NEXT: addq $424, %rsp # imm = 0x1A82307; AVX2-NEXT: vzeroupper2308; AVX2-NEXT: retq2309;2310; AVX2-FP-LABEL: load_i64_stride2_vf64:2311; AVX2-FP: # %bb.0:2312; AVX2-FP-NEXT: subq $424, %rsp # imm = 0x1A82313; AVX2-FP-NEXT: vmovaps 544(%rdi), %ymm92314; AVX2-FP-NEXT: vmovaps 416(%rdi), %ymm62315; AVX2-FP-NEXT: vmovaps 384(%rdi), %ymm72316; AVX2-FP-NEXT: vmovaps 288(%rdi), %ymm02317; AVX2-FP-NEXT: vmovaps 256(%rdi), %ymm12318; AVX2-FP-NEXT: vmovaps 160(%rdi), %ymm42319; AVX2-FP-NEXT: vmovaps 128(%rdi), %ymm52320; AVX2-FP-NEXT: vmovaps 608(%rdi), %ymm22321; AVX2-FP-NEXT: vmovaps 576(%rdi), %ymm32322; AVX2-FP-NEXT: vmovaps 480(%rdi), %ymm102323; AVX2-FP-NEXT: vmovaps 448(%rdi), %ymm132324; AVX2-FP-NEXT: vmovaps 352(%rdi), %ymm82325; AVX2-FP-NEXT: vmovaps 320(%rdi), %ymm112326; AVX2-FP-NEXT: vmovaps 224(%rdi), %ymm122327; AVX2-FP-NEXT: vmovaps 192(%rdi), %ymm142328; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm14[0],ymm12[0],ymm14[2],ymm12[2]2329; AVX2-FP-NEXT: vmovups %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2330; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm14[1],ymm12[1],ymm14[3],ymm12[3]2331; AVX2-FP-NEXT: vmovups %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2332; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm5[0],ymm4[0],ymm5[2],ymm4[2]2333; AVX2-FP-NEXT: vmovups %ymm12, (%rsp) # 32-byte Spill2334; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm5[1],ymm4[1],ymm5[3],ymm4[3]2335; AVX2-FP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2336; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm11[0],ymm8[0],ymm11[2],ymm8[2]2337; AVX2-FP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2338; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm11[1],ymm8[1],ymm11[3],ymm8[3]2339; AVX2-FP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2340; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]2341; AVX2-FP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2342; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]2343; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2344; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm13[0],ymm10[0],ymm13[2],ymm10[2]2345; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2346; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm13[1],ymm10[1],ymm13[3],ymm10[3]2347; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2348; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm7[0],ymm6[0],ymm7[2],ymm6[2]2349; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm7[1],ymm6[1],ymm7[3],ymm6[3]2350; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2351; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm3[0],ymm2[0],ymm3[2],ymm2[2]2352; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2353; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm3[1],ymm2[1],ymm3[3],ymm2[3]2354; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2355; AVX2-FP-NEXT: vmovaps 512(%rdi), %ymm02356; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm0[0],ymm9[0],ymm0[2],ymm9[2]2357; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm9[1],ymm0[3],ymm9[3]2358; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2359; AVX2-FP-NEXT: vmovaps 736(%rdi), %ymm02360; AVX2-FP-NEXT: vmovaps 704(%rdi), %ymm12361; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm14 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]2362; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]2363; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2364; AVX2-FP-NEXT: vmovaps 672(%rdi), %ymm02365; AVX2-FP-NEXT: vmovaps 640(%rdi), %ymm22366; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm6 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]2367; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]2368; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2369; AVX2-FP-NEXT: vmovaps 864(%rdi), %ymm02370; AVX2-FP-NEXT: vmovaps 832(%rdi), %ymm22371; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm8 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]2372; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]2373; AVX2-FP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2374; AVX2-FP-NEXT: vmovaps 800(%rdi), %ymm02375; AVX2-FP-NEXT: vmovaps 768(%rdi), %ymm22376; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]2377; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm11 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]2378; AVX2-FP-NEXT: vmovaps 992(%rdi), %ymm22379; AVX2-FP-NEXT: vmovaps 960(%rdi), %ymm42380; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm4[0],ymm2[0],ymm4[2],ymm2[2]2381; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm9 = ymm4[1],ymm2[1],ymm4[3],ymm2[3]2382; AVX2-FP-NEXT: vmovaps 928(%rdi), %ymm22383; AVX2-FP-NEXT: vmovaps 896(%rdi), %ymm42384; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm1 = ymm4[0],ymm2[0],ymm4[2],ymm2[2]2385; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm4[1],ymm2[1],ymm4[3],ymm2[3]2386; AVX2-FP-NEXT: vmovaps 64(%rdi), %ymm122387; AVX2-FP-NEXT: vmovaps 96(%rdi), %ymm152388; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm12[0],ymm15[0],ymm12[2],ymm15[2]2389; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm15 = ymm12[1],ymm15[1],ymm12[3],ymm15[3]2390; AVX2-FP-NEXT: vmovaps (%rdi), %ymm122391; AVX2-FP-NEXT: vmovaps 32(%rdi), %ymm02392; AVX2-FP-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm12[0],ymm0[0],ymm12[2],ymm0[2]2393; AVX2-FP-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm12[1],ymm0[1],ymm12[3],ymm0[3]2394; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm1[0,2,1,3]2395; AVX2-FP-NEXT: vmovaps %ymm0, 448(%rsi)2396; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm3[0,2,1,3]2397; AVX2-FP-NEXT: vmovaps %ymm0, 384(%rsi)2398; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm6[0,2,1,3]2399; AVX2-FP-NEXT: vmovaps %ymm0, 320(%rsi)2400; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm10[0,2,1,3]2401; AVX2-FP-NEXT: vmovaps %ymm0, 256(%rsi)2402; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm13[0,2,1,3]2403; AVX2-FP-NEXT: vmovaps %ymm0, 192(%rsi)2404; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2405; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2406; AVX2-FP-NEXT: vmovaps %ymm0, 128(%rsi)2407; AVX2-FP-NEXT: vpermpd $216, (%rsp), %ymm0 # 32-byte Folded Reload2408; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2409; AVX2-FP-NEXT: vmovaps %ymm0, 64(%rsi)2410; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm2[0,2,1,3]2411; AVX2-FP-NEXT: vmovaps %ymm0, (%rsi)2412; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm5[0,2,1,3]2413; AVX2-FP-NEXT: vmovaps %ymm0, 480(%rsi)2414; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm8[0,2,1,3]2415; AVX2-FP-NEXT: vmovaps %ymm0, 416(%rsi)2416; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm14[0,2,1,3]2417; AVX2-FP-NEXT: vmovaps %ymm0, 352(%rsi)2418; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2419; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2420; AVX2-FP-NEXT: vmovaps %ymm0, 288(%rsi)2421; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2422; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2423; AVX2-FP-NEXT: vmovaps %ymm0, 224(%rsi)2424; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2425; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2426; AVX2-FP-NEXT: vmovaps %ymm0, 160(%rsi)2427; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2428; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2429; AVX2-FP-NEXT: vmovaps %ymm0, 96(%rsi)2430; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm4[0,2,1,3]2431; AVX2-FP-NEXT: vmovaps %ymm0, 32(%rsi)2432; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm7[0,2,1,3]2433; AVX2-FP-NEXT: vmovaps %ymm0, 448(%rdx)2434; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm9[0,2,1,3]2435; AVX2-FP-NEXT: vmovaps %ymm0, 480(%rdx)2436; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm11[0,2,1,3]2437; AVX2-FP-NEXT: vmovaps %ymm0, 384(%rdx)2438; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2439; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2440; AVX2-FP-NEXT: vmovaps %ymm0, 416(%rdx)2441; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2442; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2443; AVX2-FP-NEXT: vmovaps %ymm0, 320(%rdx)2444; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2445; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2446; AVX2-FP-NEXT: vmovaps %ymm0, 352(%rdx)2447; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2448; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2449; AVX2-FP-NEXT: vmovaps %ymm0, 256(%rdx)2450; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2451; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2452; AVX2-FP-NEXT: vmovaps %ymm0, 288(%rdx)2453; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2454; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2455; AVX2-FP-NEXT: vmovaps %ymm0, 192(%rdx)2456; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2457; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2458; AVX2-FP-NEXT: vmovaps %ymm0, 224(%rdx)2459; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2460; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2461; AVX2-FP-NEXT: vmovaps %ymm0, 128(%rdx)2462; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2463; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2464; AVX2-FP-NEXT: vmovaps %ymm0, 160(%rdx)2465; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2466; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2467; AVX2-FP-NEXT: vmovaps %ymm0, 64(%rdx)2468; AVX2-FP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2469; AVX2-FP-NEXT: # ymm0 = mem[0,2,1,3]2470; AVX2-FP-NEXT: vmovaps %ymm0, 96(%rdx)2471; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm12[0,2,1,3]2472; AVX2-FP-NEXT: vmovaps %ymm0, (%rdx)2473; AVX2-FP-NEXT: vpermpd {{.*#+}} ymm0 = ymm15[0,2,1,3]2474; AVX2-FP-NEXT: vmovaps %ymm0, 32(%rdx)2475; AVX2-FP-NEXT: addq $424, %rsp # imm = 0x1A82476; AVX2-FP-NEXT: vzeroupper2477; AVX2-FP-NEXT: retq2478;2479; AVX2-FCP-LABEL: load_i64_stride2_vf64:2480; AVX2-FCP: # %bb.0:2481; AVX2-FCP-NEXT: subq $424, %rsp # imm = 0x1A82482; AVX2-FCP-NEXT: vmovaps 544(%rdi), %ymm92483; AVX2-FCP-NEXT: vmovaps 416(%rdi), %ymm62484; AVX2-FCP-NEXT: vmovaps 384(%rdi), %ymm72485; AVX2-FCP-NEXT: vmovaps 288(%rdi), %ymm02486; AVX2-FCP-NEXT: vmovaps 256(%rdi), %ymm12487; AVX2-FCP-NEXT: vmovaps 160(%rdi), %ymm42488; AVX2-FCP-NEXT: vmovaps 128(%rdi), %ymm52489; AVX2-FCP-NEXT: vmovaps 608(%rdi), %ymm22490; AVX2-FCP-NEXT: vmovaps 576(%rdi), %ymm32491; AVX2-FCP-NEXT: vmovaps 480(%rdi), %ymm102492; AVX2-FCP-NEXT: vmovaps 448(%rdi), %ymm132493; AVX2-FCP-NEXT: vmovaps 352(%rdi), %ymm82494; AVX2-FCP-NEXT: vmovaps 320(%rdi), %ymm112495; AVX2-FCP-NEXT: vmovaps 224(%rdi), %ymm122496; AVX2-FCP-NEXT: vmovaps 192(%rdi), %ymm142497; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm15 = ymm14[0],ymm12[0],ymm14[2],ymm12[2]2498; AVX2-FCP-NEXT: vmovups %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2499; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm14[1],ymm12[1],ymm14[3],ymm12[3]2500; AVX2-FCP-NEXT: vmovups %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2501; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm12 = ymm5[0],ymm4[0],ymm5[2],ymm4[2]2502; AVX2-FCP-NEXT: vmovups %ymm12, (%rsp) # 32-byte Spill2503; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm5[1],ymm4[1],ymm5[3],ymm4[3]2504; AVX2-FCP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2505; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm11[0],ymm8[0],ymm11[2],ymm8[2]2506; AVX2-FCP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2507; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm4 = ymm11[1],ymm8[1],ymm11[3],ymm8[3]2508; AVX2-FCP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2509; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]2510; AVX2-FCP-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2511; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]2512; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2513; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm13[0],ymm10[0],ymm13[2],ymm10[2]2514; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2515; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm13[1],ymm10[1],ymm13[3],ymm10[3]2516; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2517; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm13 = ymm7[0],ymm6[0],ymm7[2],ymm6[2]2518; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm7[1],ymm6[1],ymm7[3],ymm6[3]2519; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2520; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm0 = ymm3[0],ymm2[0],ymm3[2],ymm2[2]2521; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2522; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm3[1],ymm2[1],ymm3[3],ymm2[3]2523; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2524; AVX2-FCP-NEXT: vmovaps 512(%rdi), %ymm02525; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm10 = ymm0[0],ymm9[0],ymm0[2],ymm9[2]2526; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm9[1],ymm0[3],ymm9[3]2527; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2528; AVX2-FCP-NEXT: vmovaps 736(%rdi), %ymm02529; AVX2-FCP-NEXT: vmovaps 704(%rdi), %ymm12530; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm14 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]2531; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[3]2532; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2533; AVX2-FCP-NEXT: vmovaps 672(%rdi), %ymm02534; AVX2-FCP-NEXT: vmovaps 640(%rdi), %ymm22535; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm6 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]2536; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]2537; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2538; AVX2-FCP-NEXT: vmovaps 864(%rdi), %ymm02539; AVX2-FCP-NEXT: vmovaps 832(%rdi), %ymm22540; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm8 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]2541; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm0 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]2542; AVX2-FCP-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2543; AVX2-FCP-NEXT: vmovaps 800(%rdi), %ymm02544; AVX2-FCP-NEXT: vmovaps 768(%rdi), %ymm22545; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm3 = ymm2[0],ymm0[0],ymm2[2],ymm0[2]2546; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm11 = ymm2[1],ymm0[1],ymm2[3],ymm0[3]2547; AVX2-FCP-NEXT: vmovaps 992(%rdi), %ymm22548; AVX2-FCP-NEXT: vmovaps 960(%rdi), %ymm42549; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm5 = ymm4[0],ymm2[0],ymm4[2],ymm2[2]2550; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm9 = ymm4[1],ymm2[1],ymm4[3],ymm2[3]2551; AVX2-FCP-NEXT: vmovaps 928(%rdi), %ymm22552; AVX2-FCP-NEXT: vmovaps 896(%rdi), %ymm42553; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm1 = ymm4[0],ymm2[0],ymm4[2],ymm2[2]2554; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm7 = ymm4[1],ymm2[1],ymm4[3],ymm2[3]2555; AVX2-FCP-NEXT: vmovaps 64(%rdi), %ymm122556; AVX2-FCP-NEXT: vmovaps 96(%rdi), %ymm152557; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm4 = ymm12[0],ymm15[0],ymm12[2],ymm15[2]2558; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm15 = ymm12[1],ymm15[1],ymm12[3],ymm15[3]2559; AVX2-FCP-NEXT: vmovaps (%rdi), %ymm122560; AVX2-FCP-NEXT: vmovaps 32(%rdi), %ymm02561; AVX2-FCP-NEXT: vunpcklpd {{.*#+}} ymm2 = ymm12[0],ymm0[0],ymm12[2],ymm0[2]2562; AVX2-FCP-NEXT: vunpckhpd {{.*#+}} ymm12 = ymm12[1],ymm0[1],ymm12[3],ymm0[3]2563; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm1[0,2,1,3]2564; AVX2-FCP-NEXT: vmovaps %ymm0, 448(%rsi)2565; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm3[0,2,1,3]2566; AVX2-FCP-NEXT: vmovaps %ymm0, 384(%rsi)2567; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm6[0,2,1,3]2568; AVX2-FCP-NEXT: vmovaps %ymm0, 320(%rsi)2569; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm10[0,2,1,3]2570; AVX2-FCP-NEXT: vmovaps %ymm0, 256(%rsi)2571; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm13[0,2,1,3]2572; AVX2-FCP-NEXT: vmovaps %ymm0, 192(%rsi)2573; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2574; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2575; AVX2-FCP-NEXT: vmovaps %ymm0, 128(%rsi)2576; AVX2-FCP-NEXT: vpermpd $216, (%rsp), %ymm0 # 32-byte Folded Reload2577; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2578; AVX2-FCP-NEXT: vmovaps %ymm0, 64(%rsi)2579; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm2[0,2,1,3]2580; AVX2-FCP-NEXT: vmovaps %ymm0, (%rsi)2581; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm5[0,2,1,3]2582; AVX2-FCP-NEXT: vmovaps %ymm0, 480(%rsi)2583; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm8[0,2,1,3]2584; AVX2-FCP-NEXT: vmovaps %ymm0, 416(%rsi)2585; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm14[0,2,1,3]2586; AVX2-FCP-NEXT: vmovaps %ymm0, 352(%rsi)2587; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2588; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2589; AVX2-FCP-NEXT: vmovaps %ymm0, 288(%rsi)2590; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2591; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2592; AVX2-FCP-NEXT: vmovaps %ymm0, 224(%rsi)2593; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2594; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2595; AVX2-FCP-NEXT: vmovaps %ymm0, 160(%rsi)2596; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2597; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2598; AVX2-FCP-NEXT: vmovaps %ymm0, 96(%rsi)2599; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm4[0,2,1,3]2600; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%rsi)2601; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm7[0,2,1,3]2602; AVX2-FCP-NEXT: vmovaps %ymm0, 448(%rdx)2603; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm9[0,2,1,3]2604; AVX2-FCP-NEXT: vmovaps %ymm0, 480(%rdx)2605; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm11[0,2,1,3]2606; AVX2-FCP-NEXT: vmovaps %ymm0, 384(%rdx)2607; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2608; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2609; AVX2-FCP-NEXT: vmovaps %ymm0, 416(%rdx)2610; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2611; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2612; AVX2-FCP-NEXT: vmovaps %ymm0, 320(%rdx)2613; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2614; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2615; AVX2-FCP-NEXT: vmovaps %ymm0, 352(%rdx)2616; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2617; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2618; AVX2-FCP-NEXT: vmovaps %ymm0, 256(%rdx)2619; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2620; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2621; AVX2-FCP-NEXT: vmovaps %ymm0, 288(%rdx)2622; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2623; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2624; AVX2-FCP-NEXT: vmovaps %ymm0, 192(%rdx)2625; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2626; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2627; AVX2-FCP-NEXT: vmovaps %ymm0, 224(%rdx)2628; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2629; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2630; AVX2-FCP-NEXT: vmovaps %ymm0, 128(%rdx)2631; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2632; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2633; AVX2-FCP-NEXT: vmovaps %ymm0, 160(%rdx)2634; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2635; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2636; AVX2-FCP-NEXT: vmovaps %ymm0, 64(%rdx)2637; AVX2-FCP-NEXT: vpermpd $216, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload2638; AVX2-FCP-NEXT: # ymm0 = mem[0,2,1,3]2639; AVX2-FCP-NEXT: vmovaps %ymm0, 96(%rdx)2640; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm12[0,2,1,3]2641; AVX2-FCP-NEXT: vmovaps %ymm0, (%rdx)2642; AVX2-FCP-NEXT: vpermpd {{.*#+}} ymm0 = ymm15[0,2,1,3]2643; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%rdx)2644; AVX2-FCP-NEXT: addq $424, %rsp # imm = 0x1A82645; AVX2-FCP-NEXT: vzeroupper2646; AVX2-FCP-NEXT: retq2647;2648; AVX512-LABEL: load_i64_stride2_vf64:2649; AVX512: # %bb.0:2650; AVX512-NEXT: vmovdqa64 (%rdi), %zmm02651; AVX512-NEXT: vmovdqa64 64(%rdi), %zmm12652; AVX512-NEXT: vmovdqa64 128(%rdi), %zmm22653; AVX512-NEXT: vmovdqa64 192(%rdi), %zmm32654; AVX512-NEXT: vmovdqa64 960(%rdi), %zmm42655; AVX512-NEXT: vmovdqa64 896(%rdi), %zmm52656; AVX512-NEXT: vmovdqa64 576(%rdi), %zmm62657; AVX512-NEXT: vmovdqa64 512(%rdi), %zmm72658; AVX512-NEXT: vmovdqa64 704(%rdi), %zmm82659; AVX512-NEXT: vmovdqa64 640(%rdi), %zmm92660; AVX512-NEXT: vmovdqa64 320(%rdi), %zmm102661; AVX512-NEXT: vmovdqa64 256(%rdi), %zmm112662; AVX512-NEXT: vmovdqa64 448(%rdi), %zmm122663; AVX512-NEXT: vmovdqa64 384(%rdi), %zmm132664; AVX512-NEXT: vmovdqa64 832(%rdi), %zmm142665; AVX512-NEXT: vmovdqa64 768(%rdi), %zmm152666; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm16 = [0,2,4,6,8,10,12,14]2667; AVX512-NEXT: vmovdqa64 %zmm15, %zmm172668; AVX512-NEXT: vpermt2q %zmm14, %zmm16, %zmm172669; AVX512-NEXT: vmovdqa64 %zmm13, %zmm182670; AVX512-NEXT: vpermt2q %zmm12, %zmm16, %zmm182671; AVX512-NEXT: vmovdqa64 %zmm11, %zmm192672; AVX512-NEXT: vpermt2q %zmm10, %zmm16, %zmm192673; AVX512-NEXT: vmovdqa64 %zmm9, %zmm202674; AVX512-NEXT: vpermt2q %zmm8, %zmm16, %zmm202675; AVX512-NEXT: vmovdqa64 %zmm7, %zmm212676; AVX512-NEXT: vpermt2q %zmm6, %zmm16, %zmm212677; AVX512-NEXT: vmovdqa64 %zmm5, %zmm222678; AVX512-NEXT: vpermt2q %zmm4, %zmm16, %zmm222679; AVX512-NEXT: vmovdqa64 %zmm2, %zmm232680; AVX512-NEXT: vpermt2q %zmm3, %zmm16, %zmm232681; AVX512-NEXT: vpermi2q %zmm1, %zmm0, %zmm162682; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm24 = [1,3,5,7,9,11,13,15]2683; AVX512-NEXT: vpermt2q %zmm12, %zmm24, %zmm132684; AVX512-NEXT: vpermt2q %zmm10, %zmm24, %zmm112685; AVX512-NEXT: vpermt2q %zmm8, %zmm24, %zmm92686; AVX512-NEXT: vpermt2q %zmm6, %zmm24, %zmm72687; AVX512-NEXT: vpermt2q %zmm4, %zmm24, %zmm52688; AVX512-NEXT: vpermt2q %zmm14, %zmm24, %zmm152689; AVX512-NEXT: vpermt2q %zmm3, %zmm24, %zmm22690; AVX512-NEXT: vpermt2q %zmm1, %zmm24, %zmm02691; AVX512-NEXT: vmovdqa64 %zmm22, 448(%rsi)2692; AVX512-NEXT: vmovdqa64 %zmm21, 256(%rsi)2693; AVX512-NEXT: vmovdqa64 %zmm20, 320(%rsi)2694; AVX512-NEXT: vmovdqa64 %zmm19, 128(%rsi)2695; AVX512-NEXT: vmovdqa64 %zmm18, 192(%rsi)2696; AVX512-NEXT: vmovdqa64 %zmm16, (%rsi)2697; AVX512-NEXT: vmovdqa64 %zmm23, 64(%rsi)2698; AVX512-NEXT: vmovdqa64 %zmm17, 384(%rsi)2699; AVX512-NEXT: vmovdqa64 %zmm15, 384(%rdx)2700; AVX512-NEXT: vmovdqa64 %zmm5, 448(%rdx)2701; AVX512-NEXT: vmovdqa64 %zmm7, 256(%rdx)2702; AVX512-NEXT: vmovdqa64 %zmm9, 320(%rdx)2703; AVX512-NEXT: vmovdqa64 %zmm11, 128(%rdx)2704; AVX512-NEXT: vmovdqa64 %zmm13, 192(%rdx)2705; AVX512-NEXT: vmovdqa64 %zmm0, (%rdx)2706; AVX512-NEXT: vmovdqa64 %zmm2, 64(%rdx)2707; AVX512-NEXT: vzeroupper2708; AVX512-NEXT: retq2709;2710; AVX512-FCP-LABEL: load_i64_stride2_vf64:2711; AVX512-FCP: # %bb.0:2712; AVX512-FCP-NEXT: vmovdqa64 (%rdi), %zmm02713; AVX512-FCP-NEXT: vmovdqa64 64(%rdi), %zmm12714; AVX512-FCP-NEXT: vmovdqa64 128(%rdi), %zmm22715; AVX512-FCP-NEXT: vmovdqa64 192(%rdi), %zmm32716; AVX512-FCP-NEXT: vmovdqa64 960(%rdi), %zmm42717; AVX512-FCP-NEXT: vmovdqa64 896(%rdi), %zmm52718; AVX512-FCP-NEXT: vmovdqa64 576(%rdi), %zmm62719; AVX512-FCP-NEXT: vmovdqa64 512(%rdi), %zmm72720; AVX512-FCP-NEXT: vmovdqa64 704(%rdi), %zmm82721; AVX512-FCP-NEXT: vmovdqa64 640(%rdi), %zmm92722; AVX512-FCP-NEXT: vmovdqa64 320(%rdi), %zmm102723; AVX512-FCP-NEXT: vmovdqa64 256(%rdi), %zmm112724; AVX512-FCP-NEXT: vmovdqa64 448(%rdi), %zmm122725; AVX512-FCP-NEXT: vmovdqa64 384(%rdi), %zmm132726; AVX512-FCP-NEXT: vmovdqa64 832(%rdi), %zmm142727; AVX512-FCP-NEXT: vmovdqa64 768(%rdi), %zmm152728; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm16 = [0,2,4,6,8,10,12,14]2729; AVX512-FCP-NEXT: vmovdqa64 %zmm15, %zmm172730; AVX512-FCP-NEXT: vpermt2q %zmm14, %zmm16, %zmm172731; AVX512-FCP-NEXT: vmovdqa64 %zmm13, %zmm182732; AVX512-FCP-NEXT: vpermt2q %zmm12, %zmm16, %zmm182733; AVX512-FCP-NEXT: vmovdqa64 %zmm11, %zmm192734; AVX512-FCP-NEXT: vpermt2q %zmm10, %zmm16, %zmm192735; AVX512-FCP-NEXT: vmovdqa64 %zmm9, %zmm202736; AVX512-FCP-NEXT: vpermt2q %zmm8, %zmm16, %zmm202737; AVX512-FCP-NEXT: vmovdqa64 %zmm7, %zmm212738; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm16, %zmm212739; AVX512-FCP-NEXT: vmovdqa64 %zmm5, %zmm222740; AVX512-FCP-NEXT: vpermt2q %zmm4, %zmm16, %zmm222741; AVX512-FCP-NEXT: vmovdqa64 %zmm2, %zmm232742; AVX512-FCP-NEXT: vpermt2q %zmm3, %zmm16, %zmm232743; AVX512-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm162744; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm24 = [1,3,5,7,9,11,13,15]2745; AVX512-FCP-NEXT: vpermt2q %zmm12, %zmm24, %zmm132746; AVX512-FCP-NEXT: vpermt2q %zmm10, %zmm24, %zmm112747; AVX512-FCP-NEXT: vpermt2q %zmm8, %zmm24, %zmm92748; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm24, %zmm72749; AVX512-FCP-NEXT: vpermt2q %zmm4, %zmm24, %zmm52750; AVX512-FCP-NEXT: vpermt2q %zmm14, %zmm24, %zmm152751; AVX512-FCP-NEXT: vpermt2q %zmm3, %zmm24, %zmm22752; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm24, %zmm02753; AVX512-FCP-NEXT: vmovdqa64 %zmm22, 448(%rsi)2754; AVX512-FCP-NEXT: vmovdqa64 %zmm21, 256(%rsi)2755; AVX512-FCP-NEXT: vmovdqa64 %zmm20, 320(%rsi)2756; AVX512-FCP-NEXT: vmovdqa64 %zmm19, 128(%rsi)2757; AVX512-FCP-NEXT: vmovdqa64 %zmm18, 192(%rsi)2758; AVX512-FCP-NEXT: vmovdqa64 %zmm16, (%rsi)2759; AVX512-FCP-NEXT: vmovdqa64 %zmm23, 64(%rsi)2760; AVX512-FCP-NEXT: vmovdqa64 %zmm17, 384(%rsi)2761; AVX512-FCP-NEXT: vmovdqa64 %zmm15, 384(%rdx)2762; AVX512-FCP-NEXT: vmovdqa64 %zmm5, 448(%rdx)2763; AVX512-FCP-NEXT: vmovdqa64 %zmm7, 256(%rdx)2764; AVX512-FCP-NEXT: vmovdqa64 %zmm9, 320(%rdx)2765; AVX512-FCP-NEXT: vmovdqa64 %zmm11, 128(%rdx)2766; AVX512-FCP-NEXT: vmovdqa64 %zmm13, 192(%rdx)2767; AVX512-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)2768; AVX512-FCP-NEXT: vmovdqa64 %zmm2, 64(%rdx)2769; AVX512-FCP-NEXT: vzeroupper2770; AVX512-FCP-NEXT: retq2771;2772; AVX512DQ-LABEL: load_i64_stride2_vf64:2773; AVX512DQ: # %bb.0:2774; AVX512DQ-NEXT: vmovdqa64 (%rdi), %zmm02775; AVX512DQ-NEXT: vmovdqa64 64(%rdi), %zmm12776; AVX512DQ-NEXT: vmovdqa64 128(%rdi), %zmm22777; AVX512DQ-NEXT: vmovdqa64 192(%rdi), %zmm32778; AVX512DQ-NEXT: vmovdqa64 960(%rdi), %zmm42779; AVX512DQ-NEXT: vmovdqa64 896(%rdi), %zmm52780; AVX512DQ-NEXT: vmovdqa64 576(%rdi), %zmm62781; AVX512DQ-NEXT: vmovdqa64 512(%rdi), %zmm72782; AVX512DQ-NEXT: vmovdqa64 704(%rdi), %zmm82783; AVX512DQ-NEXT: vmovdqa64 640(%rdi), %zmm92784; AVX512DQ-NEXT: vmovdqa64 320(%rdi), %zmm102785; AVX512DQ-NEXT: vmovdqa64 256(%rdi), %zmm112786; AVX512DQ-NEXT: vmovdqa64 448(%rdi), %zmm122787; AVX512DQ-NEXT: vmovdqa64 384(%rdi), %zmm132788; AVX512DQ-NEXT: vmovdqa64 832(%rdi), %zmm142789; AVX512DQ-NEXT: vmovdqa64 768(%rdi), %zmm152790; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm16 = [0,2,4,6,8,10,12,14]2791; AVX512DQ-NEXT: vmovdqa64 %zmm15, %zmm172792; AVX512DQ-NEXT: vpermt2q %zmm14, %zmm16, %zmm172793; AVX512DQ-NEXT: vmovdqa64 %zmm13, %zmm182794; AVX512DQ-NEXT: vpermt2q %zmm12, %zmm16, %zmm182795; AVX512DQ-NEXT: vmovdqa64 %zmm11, %zmm192796; AVX512DQ-NEXT: vpermt2q %zmm10, %zmm16, %zmm192797; AVX512DQ-NEXT: vmovdqa64 %zmm9, %zmm202798; AVX512DQ-NEXT: vpermt2q %zmm8, %zmm16, %zmm202799; AVX512DQ-NEXT: vmovdqa64 %zmm7, %zmm212800; AVX512DQ-NEXT: vpermt2q %zmm6, %zmm16, %zmm212801; AVX512DQ-NEXT: vmovdqa64 %zmm5, %zmm222802; AVX512DQ-NEXT: vpermt2q %zmm4, %zmm16, %zmm222803; AVX512DQ-NEXT: vmovdqa64 %zmm2, %zmm232804; AVX512DQ-NEXT: vpermt2q %zmm3, %zmm16, %zmm232805; AVX512DQ-NEXT: vpermi2q %zmm1, %zmm0, %zmm162806; AVX512DQ-NEXT: vpmovsxbq {{.*#+}} zmm24 = [1,3,5,7,9,11,13,15]2807; AVX512DQ-NEXT: vpermt2q %zmm12, %zmm24, %zmm132808; AVX512DQ-NEXT: vpermt2q %zmm10, %zmm24, %zmm112809; AVX512DQ-NEXT: vpermt2q %zmm8, %zmm24, %zmm92810; AVX512DQ-NEXT: vpermt2q %zmm6, %zmm24, %zmm72811; AVX512DQ-NEXT: vpermt2q %zmm4, %zmm24, %zmm52812; AVX512DQ-NEXT: vpermt2q %zmm14, %zmm24, %zmm152813; AVX512DQ-NEXT: vpermt2q %zmm3, %zmm24, %zmm22814; AVX512DQ-NEXT: vpermt2q %zmm1, %zmm24, %zmm02815; AVX512DQ-NEXT: vmovdqa64 %zmm22, 448(%rsi)2816; AVX512DQ-NEXT: vmovdqa64 %zmm21, 256(%rsi)2817; AVX512DQ-NEXT: vmovdqa64 %zmm20, 320(%rsi)2818; AVX512DQ-NEXT: vmovdqa64 %zmm19, 128(%rsi)2819; AVX512DQ-NEXT: vmovdqa64 %zmm18, 192(%rsi)2820; AVX512DQ-NEXT: vmovdqa64 %zmm16, (%rsi)2821; AVX512DQ-NEXT: vmovdqa64 %zmm23, 64(%rsi)2822; AVX512DQ-NEXT: vmovdqa64 %zmm17, 384(%rsi)2823; AVX512DQ-NEXT: vmovdqa64 %zmm15, 384(%rdx)2824; AVX512DQ-NEXT: vmovdqa64 %zmm5, 448(%rdx)2825; AVX512DQ-NEXT: vmovdqa64 %zmm7, 256(%rdx)2826; AVX512DQ-NEXT: vmovdqa64 %zmm9, 320(%rdx)2827; AVX512DQ-NEXT: vmovdqa64 %zmm11, 128(%rdx)2828; AVX512DQ-NEXT: vmovdqa64 %zmm13, 192(%rdx)2829; AVX512DQ-NEXT: vmovdqa64 %zmm0, (%rdx)2830; AVX512DQ-NEXT: vmovdqa64 %zmm2, 64(%rdx)2831; AVX512DQ-NEXT: vzeroupper2832; AVX512DQ-NEXT: retq2833;2834; AVX512DQ-FCP-LABEL: load_i64_stride2_vf64:2835; AVX512DQ-FCP: # %bb.0:2836; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdi), %zmm02837; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdi), %zmm12838; AVX512DQ-FCP-NEXT: vmovdqa64 128(%rdi), %zmm22839; AVX512DQ-FCP-NEXT: vmovdqa64 192(%rdi), %zmm32840; AVX512DQ-FCP-NEXT: vmovdqa64 960(%rdi), %zmm42841; AVX512DQ-FCP-NEXT: vmovdqa64 896(%rdi), %zmm52842; AVX512DQ-FCP-NEXT: vmovdqa64 576(%rdi), %zmm62843; AVX512DQ-FCP-NEXT: vmovdqa64 512(%rdi), %zmm72844; AVX512DQ-FCP-NEXT: vmovdqa64 704(%rdi), %zmm82845; AVX512DQ-FCP-NEXT: vmovdqa64 640(%rdi), %zmm92846; AVX512DQ-FCP-NEXT: vmovdqa64 320(%rdi), %zmm102847; AVX512DQ-FCP-NEXT: vmovdqa64 256(%rdi), %zmm112848; AVX512DQ-FCP-NEXT: vmovdqa64 448(%rdi), %zmm122849; AVX512DQ-FCP-NEXT: vmovdqa64 384(%rdi), %zmm132850; AVX512DQ-FCP-NEXT: vmovdqa64 832(%rdi), %zmm142851; AVX512DQ-FCP-NEXT: vmovdqa64 768(%rdi), %zmm152852; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm16 = [0,2,4,6,8,10,12,14]2853; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm15, %zmm172854; AVX512DQ-FCP-NEXT: vpermt2q %zmm14, %zmm16, %zmm172855; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm13, %zmm182856; AVX512DQ-FCP-NEXT: vpermt2q %zmm12, %zmm16, %zmm182857; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm11, %zmm192858; AVX512DQ-FCP-NEXT: vpermt2q %zmm10, %zmm16, %zmm192859; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm9, %zmm202860; AVX512DQ-FCP-NEXT: vpermt2q %zmm8, %zmm16, %zmm202861; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm7, %zmm212862; AVX512DQ-FCP-NEXT: vpermt2q %zmm6, %zmm16, %zmm212863; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm5, %zmm222864; AVX512DQ-FCP-NEXT: vpermt2q %zmm4, %zmm16, %zmm222865; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, %zmm232866; AVX512DQ-FCP-NEXT: vpermt2q %zmm3, %zmm16, %zmm232867; AVX512DQ-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm162868; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm24 = [1,3,5,7,9,11,13,15]2869; AVX512DQ-FCP-NEXT: vpermt2q %zmm12, %zmm24, %zmm132870; AVX512DQ-FCP-NEXT: vpermt2q %zmm10, %zmm24, %zmm112871; AVX512DQ-FCP-NEXT: vpermt2q %zmm8, %zmm24, %zmm92872; AVX512DQ-FCP-NEXT: vpermt2q %zmm6, %zmm24, %zmm72873; AVX512DQ-FCP-NEXT: vpermt2q %zmm4, %zmm24, %zmm52874; AVX512DQ-FCP-NEXT: vpermt2q %zmm14, %zmm24, %zmm152875; AVX512DQ-FCP-NEXT: vpermt2q %zmm3, %zmm24, %zmm22876; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm24, %zmm02877; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm22, 448(%rsi)2878; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm21, 256(%rsi)2879; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm20, 320(%rsi)2880; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm19, 128(%rsi)2881; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm18, 192(%rsi)2882; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm16, (%rsi)2883; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm23, 64(%rsi)2884; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm17, 384(%rsi)2885; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm15, 384(%rdx)2886; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm5, 448(%rdx)2887; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm7, 256(%rdx)2888; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm9, 320(%rdx)2889; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm11, 128(%rdx)2890; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm13, 192(%rdx)2891; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)2892; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, 64(%rdx)2893; AVX512DQ-FCP-NEXT: vzeroupper2894; AVX512DQ-FCP-NEXT: retq2895;2896; AVX512BW-LABEL: load_i64_stride2_vf64:2897; AVX512BW: # %bb.0:2898; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm02899; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm12900; AVX512BW-NEXT: vmovdqa64 128(%rdi), %zmm22901; AVX512BW-NEXT: vmovdqa64 192(%rdi), %zmm32902; AVX512BW-NEXT: vmovdqa64 960(%rdi), %zmm42903; AVX512BW-NEXT: vmovdqa64 896(%rdi), %zmm52904; AVX512BW-NEXT: vmovdqa64 576(%rdi), %zmm62905; AVX512BW-NEXT: vmovdqa64 512(%rdi), %zmm72906; AVX512BW-NEXT: vmovdqa64 704(%rdi), %zmm82907; AVX512BW-NEXT: vmovdqa64 640(%rdi), %zmm92908; AVX512BW-NEXT: vmovdqa64 320(%rdi), %zmm102909; AVX512BW-NEXT: vmovdqa64 256(%rdi), %zmm112910; AVX512BW-NEXT: vmovdqa64 448(%rdi), %zmm122911; AVX512BW-NEXT: vmovdqa64 384(%rdi), %zmm132912; AVX512BW-NEXT: vmovdqa64 832(%rdi), %zmm142913; AVX512BW-NEXT: vmovdqa64 768(%rdi), %zmm152914; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm16 = [0,2,4,6,8,10,12,14]2915; AVX512BW-NEXT: vmovdqa64 %zmm15, %zmm172916; AVX512BW-NEXT: vpermt2q %zmm14, %zmm16, %zmm172917; AVX512BW-NEXT: vmovdqa64 %zmm13, %zmm182918; AVX512BW-NEXT: vpermt2q %zmm12, %zmm16, %zmm182919; AVX512BW-NEXT: vmovdqa64 %zmm11, %zmm192920; AVX512BW-NEXT: vpermt2q %zmm10, %zmm16, %zmm192921; AVX512BW-NEXT: vmovdqa64 %zmm9, %zmm202922; AVX512BW-NEXT: vpermt2q %zmm8, %zmm16, %zmm202923; AVX512BW-NEXT: vmovdqa64 %zmm7, %zmm212924; AVX512BW-NEXT: vpermt2q %zmm6, %zmm16, %zmm212925; AVX512BW-NEXT: vmovdqa64 %zmm5, %zmm222926; AVX512BW-NEXT: vpermt2q %zmm4, %zmm16, %zmm222927; AVX512BW-NEXT: vmovdqa64 %zmm2, %zmm232928; AVX512BW-NEXT: vpermt2q %zmm3, %zmm16, %zmm232929; AVX512BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm162930; AVX512BW-NEXT: vpmovsxbq {{.*#+}} zmm24 = [1,3,5,7,9,11,13,15]2931; AVX512BW-NEXT: vpermt2q %zmm12, %zmm24, %zmm132932; AVX512BW-NEXT: vpermt2q %zmm10, %zmm24, %zmm112933; AVX512BW-NEXT: vpermt2q %zmm8, %zmm24, %zmm92934; AVX512BW-NEXT: vpermt2q %zmm6, %zmm24, %zmm72935; AVX512BW-NEXT: vpermt2q %zmm4, %zmm24, %zmm52936; AVX512BW-NEXT: vpermt2q %zmm14, %zmm24, %zmm152937; AVX512BW-NEXT: vpermt2q %zmm3, %zmm24, %zmm22938; AVX512BW-NEXT: vpermt2q %zmm1, %zmm24, %zmm02939; AVX512BW-NEXT: vmovdqa64 %zmm22, 448(%rsi)2940; AVX512BW-NEXT: vmovdqa64 %zmm21, 256(%rsi)2941; AVX512BW-NEXT: vmovdqa64 %zmm20, 320(%rsi)2942; AVX512BW-NEXT: vmovdqa64 %zmm19, 128(%rsi)2943; AVX512BW-NEXT: vmovdqa64 %zmm18, 192(%rsi)2944; AVX512BW-NEXT: vmovdqa64 %zmm16, (%rsi)2945; AVX512BW-NEXT: vmovdqa64 %zmm23, 64(%rsi)2946; AVX512BW-NEXT: vmovdqa64 %zmm17, 384(%rsi)2947; AVX512BW-NEXT: vmovdqa64 %zmm15, 384(%rdx)2948; AVX512BW-NEXT: vmovdqa64 %zmm5, 448(%rdx)2949; AVX512BW-NEXT: vmovdqa64 %zmm7, 256(%rdx)2950; AVX512BW-NEXT: vmovdqa64 %zmm9, 320(%rdx)2951; AVX512BW-NEXT: vmovdqa64 %zmm11, 128(%rdx)2952; AVX512BW-NEXT: vmovdqa64 %zmm13, 192(%rdx)2953; AVX512BW-NEXT: vmovdqa64 %zmm0, (%rdx)2954; AVX512BW-NEXT: vmovdqa64 %zmm2, 64(%rdx)2955; AVX512BW-NEXT: vzeroupper2956; AVX512BW-NEXT: retq2957;2958; AVX512BW-FCP-LABEL: load_i64_stride2_vf64:2959; AVX512BW-FCP: # %bb.0:2960; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm02961; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm12962; AVX512BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm22963; AVX512BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm32964; AVX512BW-FCP-NEXT: vmovdqa64 960(%rdi), %zmm42965; AVX512BW-FCP-NEXT: vmovdqa64 896(%rdi), %zmm52966; AVX512BW-FCP-NEXT: vmovdqa64 576(%rdi), %zmm62967; AVX512BW-FCP-NEXT: vmovdqa64 512(%rdi), %zmm72968; AVX512BW-FCP-NEXT: vmovdqa64 704(%rdi), %zmm82969; AVX512BW-FCP-NEXT: vmovdqa64 640(%rdi), %zmm92970; AVX512BW-FCP-NEXT: vmovdqa64 320(%rdi), %zmm102971; AVX512BW-FCP-NEXT: vmovdqa64 256(%rdi), %zmm112972; AVX512BW-FCP-NEXT: vmovdqa64 448(%rdi), %zmm122973; AVX512BW-FCP-NEXT: vmovdqa64 384(%rdi), %zmm132974; AVX512BW-FCP-NEXT: vmovdqa64 832(%rdi), %zmm142975; AVX512BW-FCP-NEXT: vmovdqa64 768(%rdi), %zmm152976; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm16 = [0,2,4,6,8,10,12,14]2977; AVX512BW-FCP-NEXT: vmovdqa64 %zmm15, %zmm172978; AVX512BW-FCP-NEXT: vpermt2q %zmm14, %zmm16, %zmm172979; AVX512BW-FCP-NEXT: vmovdqa64 %zmm13, %zmm182980; AVX512BW-FCP-NEXT: vpermt2q %zmm12, %zmm16, %zmm182981; AVX512BW-FCP-NEXT: vmovdqa64 %zmm11, %zmm192982; AVX512BW-FCP-NEXT: vpermt2q %zmm10, %zmm16, %zmm192983; AVX512BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm202984; AVX512BW-FCP-NEXT: vpermt2q %zmm8, %zmm16, %zmm202985; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, %zmm212986; AVX512BW-FCP-NEXT: vpermt2q %zmm6, %zmm16, %zmm212987; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, %zmm222988; AVX512BW-FCP-NEXT: vpermt2q %zmm4, %zmm16, %zmm222989; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm232990; AVX512BW-FCP-NEXT: vpermt2q %zmm3, %zmm16, %zmm232991; AVX512BW-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm162992; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm24 = [1,3,5,7,9,11,13,15]2993; AVX512BW-FCP-NEXT: vpermt2q %zmm12, %zmm24, %zmm132994; AVX512BW-FCP-NEXT: vpermt2q %zmm10, %zmm24, %zmm112995; AVX512BW-FCP-NEXT: vpermt2q %zmm8, %zmm24, %zmm92996; AVX512BW-FCP-NEXT: vpermt2q %zmm6, %zmm24, %zmm72997; AVX512BW-FCP-NEXT: vpermt2q %zmm4, %zmm24, %zmm52998; AVX512BW-FCP-NEXT: vpermt2q %zmm14, %zmm24, %zmm152999; AVX512BW-FCP-NEXT: vpermt2q %zmm3, %zmm24, %zmm23000; AVX512BW-FCP-NEXT: vpermt2q %zmm1, %zmm24, %zmm03001; AVX512BW-FCP-NEXT: vmovdqa64 %zmm22, 448(%rsi)3002; AVX512BW-FCP-NEXT: vmovdqa64 %zmm21, 256(%rsi)3003; AVX512BW-FCP-NEXT: vmovdqa64 %zmm20, 320(%rsi)3004; AVX512BW-FCP-NEXT: vmovdqa64 %zmm19, 128(%rsi)3005; AVX512BW-FCP-NEXT: vmovdqa64 %zmm18, 192(%rsi)3006; AVX512BW-FCP-NEXT: vmovdqa64 %zmm16, (%rsi)3007; AVX512BW-FCP-NEXT: vmovdqa64 %zmm23, 64(%rsi)3008; AVX512BW-FCP-NEXT: vmovdqa64 %zmm17, 384(%rsi)3009; AVX512BW-FCP-NEXT: vmovdqa64 %zmm15, 384(%rdx)3010; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, 448(%rdx)3011; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, 256(%rdx)3012; AVX512BW-FCP-NEXT: vmovdqa64 %zmm9, 320(%rdx)3013; AVX512BW-FCP-NEXT: vmovdqa64 %zmm11, 128(%rdx)3014; AVX512BW-FCP-NEXT: vmovdqa64 %zmm13, 192(%rdx)3015; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)3016; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, 64(%rdx)3017; AVX512BW-FCP-NEXT: vzeroupper3018; AVX512BW-FCP-NEXT: retq3019;3020; AVX512DQ-BW-LABEL: load_i64_stride2_vf64:3021; AVX512DQ-BW: # %bb.0:3022; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm03023; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm13024; AVX512DQ-BW-NEXT: vmovdqa64 128(%rdi), %zmm23025; AVX512DQ-BW-NEXT: vmovdqa64 192(%rdi), %zmm33026; AVX512DQ-BW-NEXT: vmovdqa64 960(%rdi), %zmm43027; AVX512DQ-BW-NEXT: vmovdqa64 896(%rdi), %zmm53028; AVX512DQ-BW-NEXT: vmovdqa64 576(%rdi), %zmm63029; AVX512DQ-BW-NEXT: vmovdqa64 512(%rdi), %zmm73030; AVX512DQ-BW-NEXT: vmovdqa64 704(%rdi), %zmm83031; AVX512DQ-BW-NEXT: vmovdqa64 640(%rdi), %zmm93032; AVX512DQ-BW-NEXT: vmovdqa64 320(%rdi), %zmm103033; AVX512DQ-BW-NEXT: vmovdqa64 256(%rdi), %zmm113034; AVX512DQ-BW-NEXT: vmovdqa64 448(%rdi), %zmm123035; AVX512DQ-BW-NEXT: vmovdqa64 384(%rdi), %zmm133036; AVX512DQ-BW-NEXT: vmovdqa64 832(%rdi), %zmm143037; AVX512DQ-BW-NEXT: vmovdqa64 768(%rdi), %zmm153038; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm16 = [0,2,4,6,8,10,12,14]3039; AVX512DQ-BW-NEXT: vmovdqa64 %zmm15, %zmm173040; AVX512DQ-BW-NEXT: vpermt2q %zmm14, %zmm16, %zmm173041; AVX512DQ-BW-NEXT: vmovdqa64 %zmm13, %zmm183042; AVX512DQ-BW-NEXT: vpermt2q %zmm12, %zmm16, %zmm183043; AVX512DQ-BW-NEXT: vmovdqa64 %zmm11, %zmm193044; AVX512DQ-BW-NEXT: vpermt2q %zmm10, %zmm16, %zmm193045; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, %zmm203046; AVX512DQ-BW-NEXT: vpermt2q %zmm8, %zmm16, %zmm203047; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, %zmm213048; AVX512DQ-BW-NEXT: vpermt2q %zmm6, %zmm16, %zmm213049; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, %zmm223050; AVX512DQ-BW-NEXT: vpermt2q %zmm4, %zmm16, %zmm223051; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, %zmm233052; AVX512DQ-BW-NEXT: vpermt2q %zmm3, %zmm16, %zmm233053; AVX512DQ-BW-NEXT: vpermi2q %zmm1, %zmm0, %zmm163054; AVX512DQ-BW-NEXT: vpmovsxbq {{.*#+}} zmm24 = [1,3,5,7,9,11,13,15]3055; AVX512DQ-BW-NEXT: vpermt2q %zmm12, %zmm24, %zmm133056; AVX512DQ-BW-NEXT: vpermt2q %zmm10, %zmm24, %zmm113057; AVX512DQ-BW-NEXT: vpermt2q %zmm8, %zmm24, %zmm93058; AVX512DQ-BW-NEXT: vpermt2q %zmm6, %zmm24, %zmm73059; AVX512DQ-BW-NEXT: vpermt2q %zmm4, %zmm24, %zmm53060; AVX512DQ-BW-NEXT: vpermt2q %zmm14, %zmm24, %zmm153061; AVX512DQ-BW-NEXT: vpermt2q %zmm3, %zmm24, %zmm23062; AVX512DQ-BW-NEXT: vpermt2q %zmm1, %zmm24, %zmm03063; AVX512DQ-BW-NEXT: vmovdqa64 %zmm22, 448(%rsi)3064; AVX512DQ-BW-NEXT: vmovdqa64 %zmm21, 256(%rsi)3065; AVX512DQ-BW-NEXT: vmovdqa64 %zmm20, 320(%rsi)3066; AVX512DQ-BW-NEXT: vmovdqa64 %zmm19, 128(%rsi)3067; AVX512DQ-BW-NEXT: vmovdqa64 %zmm18, 192(%rsi)3068; AVX512DQ-BW-NEXT: vmovdqa64 %zmm16, (%rsi)3069; AVX512DQ-BW-NEXT: vmovdqa64 %zmm23, 64(%rsi)3070; AVX512DQ-BW-NEXT: vmovdqa64 %zmm17, 384(%rsi)3071; AVX512DQ-BW-NEXT: vmovdqa64 %zmm15, 384(%rdx)3072; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, 448(%rdx)3073; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, 256(%rdx)3074; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, 320(%rdx)3075; AVX512DQ-BW-NEXT: vmovdqa64 %zmm11, 128(%rdx)3076; AVX512DQ-BW-NEXT: vmovdqa64 %zmm13, 192(%rdx)3077; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, (%rdx)3078; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, 64(%rdx)3079; AVX512DQ-BW-NEXT: vzeroupper3080; AVX512DQ-BW-NEXT: retq3081;3082; AVX512DQ-BW-FCP-LABEL: load_i64_stride2_vf64:3083; AVX512DQ-BW-FCP: # %bb.0:3084; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm03085; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm13086; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm23087; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm33088; AVX512DQ-BW-FCP-NEXT: vmovdqa64 960(%rdi), %zmm43089; AVX512DQ-BW-FCP-NEXT: vmovdqa64 896(%rdi), %zmm53090; AVX512DQ-BW-FCP-NEXT: vmovdqa64 576(%rdi), %zmm63091; AVX512DQ-BW-FCP-NEXT: vmovdqa64 512(%rdi), %zmm73092; AVX512DQ-BW-FCP-NEXT: vmovdqa64 704(%rdi), %zmm83093; AVX512DQ-BW-FCP-NEXT: vmovdqa64 640(%rdi), %zmm93094; AVX512DQ-BW-FCP-NEXT: vmovdqa64 320(%rdi), %zmm103095; AVX512DQ-BW-FCP-NEXT: vmovdqa64 256(%rdi), %zmm113096; AVX512DQ-BW-FCP-NEXT: vmovdqa64 448(%rdi), %zmm123097; AVX512DQ-BW-FCP-NEXT: vmovdqa64 384(%rdi), %zmm133098; AVX512DQ-BW-FCP-NEXT: vmovdqa64 832(%rdi), %zmm143099; AVX512DQ-BW-FCP-NEXT: vmovdqa64 768(%rdi), %zmm153100; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm16 = [0,2,4,6,8,10,12,14]3101; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm15, %zmm173102; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm14, %zmm16, %zmm173103; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm13, %zmm183104; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm12, %zmm16, %zmm183105; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm11, %zmm193106; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm10, %zmm16, %zmm193107; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm203108; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm8, %zmm16, %zmm203109; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, %zmm213110; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm6, %zmm16, %zmm213111; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, %zmm223112; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm4, %zmm16, %zmm223113; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm233114; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm3, %zmm16, %zmm233115; AVX512DQ-BW-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm163116; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm24 = [1,3,5,7,9,11,13,15]3117; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm12, %zmm24, %zmm133118; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm10, %zmm24, %zmm113119; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm8, %zmm24, %zmm93120; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm6, %zmm24, %zmm73121; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm4, %zmm24, %zmm53122; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm14, %zmm24, %zmm153123; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm3, %zmm24, %zmm23124; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm1, %zmm24, %zmm03125; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm22, 448(%rsi)3126; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm21, 256(%rsi)3127; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm20, 320(%rsi)3128; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm19, 128(%rsi)3129; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm18, 192(%rsi)3130; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm16, (%rsi)3131; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm23, 64(%rsi)3132; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm17, 384(%rsi)3133; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm15, 384(%rdx)3134; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, 448(%rdx)3135; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, 256(%rdx)3136; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm9, 320(%rdx)3137; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm11, 128(%rdx)3138; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm13, 192(%rdx)3139; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, (%rdx)3140; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, 64(%rdx)3141; AVX512DQ-BW-FCP-NEXT: vzeroupper3142; AVX512DQ-BW-FCP-NEXT: retq3143 %wide.vec = load <128 x i64>, ptr %in.vec, align 643144 %strided.vec0 = shufflevector <128 x i64> %wide.vec, <128 x i64> 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>3145 %strided.vec1 = shufflevector <128 x i64> %wide.vec, <128 x i64> 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>3146 store <64 x i64> %strided.vec0, ptr %out.vec0, align 643147 store <64 x i64> %strided.vec1, ptr %out.vec1, align 643148 ret void3149}3150