8342 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s --check-prefixes=SSE3; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx | FileCheck %s --check-prefixes=AVX4; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s --check-prefixes=AVX25; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX2-FP6; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX2-FCP7; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX5128; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX512-FCP9; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq | FileCheck %s --check-prefixes=AVX512DQ10; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX512DQ-FCP11; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw | FileCheck %s --check-prefixes=AVX512BW12; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX512BW-FCP13; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw | FileCheck %s --check-prefixes=AVX512DQ-BW14; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX512DQ-BW-FCP15 16; These patterns are produced by LoopVectorizer for interleaved stores.17 18define void @store_i16_stride5_vf2(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {19; SSE-LABEL: store_i16_stride5_vf2:20; SSE: # %bb.0:21; SSE-NEXT: movdqa (%rdi), %xmm022; SSE-NEXT: movdqa (%rdx), %xmm123; SSE-NEXT: movdqa (%r8), %xmm224; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]25; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]26; SSE-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]27; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm0[0,2,1,3,4,5,6,7]28; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,4]29; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,3,2,1]30; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,3,2,4,5,6,7]31; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,7,5]32; SSE-NEXT: movdqa {{.*#+}} xmm3 = [65535,65535,65535,65535,0,65535,65535,65535]33; SSE-NEXT: pand %xmm3, %xmm134; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,1,0,1]35; SSE-NEXT: pandn %xmm4, %xmm336; SSE-NEXT: por %xmm1, %xmm337; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero38; SSE-NEXT: psrld $16, %xmm239; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]40; SSE-NEXT: movd %xmm0, 16(%r9)41; SSE-NEXT: movdqa %xmm3, (%r9)42; SSE-NEXT: retq43;44; AVX-LABEL: store_i16_stride5_vf2:45; AVX: # %bb.0:46; AVX-NEXT: vmovdqa (%rdi), %xmm047; AVX-NEXT: vmovdqa (%rdx), %xmm148; AVX-NEXT: vmovdqa (%r8), %xmm249; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]50; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]51; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]52; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,4,5,8,9,12,13,u,u,2,3,6,7,10,11]53; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm2[0,1,0,1]54; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm3[4],xmm0[5,6,7]55; AVX-NEXT: vpsrlq $48, %xmm1, %xmm156; AVX-NEXT: vpsrld $16, %xmm2, %xmm257; AVX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]58; AVX-NEXT: vmovd %xmm1, 16(%r9)59; AVX-NEXT: vmovdqa %xmm0, (%r9)60; AVX-NEXT: retq61;62; AVX2-LABEL: store_i16_stride5_vf2:63; AVX2: # %bb.0:64; AVX2-NEXT: vmovdqa (%rdi), %xmm065; AVX2-NEXT: vmovdqa (%rdx), %xmm166; AVX2-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]67; AVX2-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]68; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]69; AVX2-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm070; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13,u,u,2,3,6,7,10,11,u,u,18,19,u,u,u,u,u,u,u,u,u,u,u,u]71; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]72; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,3,0,3,4,7,4,7]73; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm0[3,3,3,3,4,5,6,7,11,11,11,11,12,13,14,15]74; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,65535,0,65535,65535,65535,0,65535,0,0,0,0,0,0]75; AVX2-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm076; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm177; AVX2-NEXT: vmovd %xmm1, 16(%r9)78; AVX2-NEXT: vmovdqa %xmm0, (%r9)79; AVX2-NEXT: vzeroupper80; AVX2-NEXT: retq81;82; AVX2-FP-LABEL: store_i16_stride5_vf2:83; AVX2-FP: # %bb.0:84; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm085; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm186; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]87; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]88; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]89; AVX2-FP-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm090; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,ymm0[2,3,6,7,10,11],zero,zero,ymm0[18,19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero91; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]92; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1],zero,zero,zero,zero,zero,zero,ymm0[30,31],zero,zero,ymm0[30,31,30,31,16,17,18,19,28,29,30,31]93; AVX2-FP-NEXT: vpor %ymm0, %ymm1, %ymm094; AVX2-FP-NEXT: vextracti128 $1, %ymm0, %xmm195; AVX2-FP-NEXT: vmovd %xmm1, 16(%r9)96; AVX2-FP-NEXT: vmovdqa %xmm0, (%r9)97; AVX2-FP-NEXT: vzeroupper98; AVX2-FP-NEXT: retq99;100; AVX2-FCP-LABEL: store_i16_stride5_vf2:101; AVX2-FCP: # %bb.0:102; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm0103; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm1104; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]105; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]106; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]107; AVX2-FCP-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0108; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,ymm0[2,3,6,7,10,11],zero,zero,ymm0[18,19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero109; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]110; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1],zero,zero,zero,zero,zero,zero,ymm0[30,31],zero,zero,ymm0[30,31,30,31,16,17,18,19,28,29,30,31]111; AVX2-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0112; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1113; AVX2-FCP-NEXT: vmovd %xmm1, 16(%r9)114; AVX2-FCP-NEXT: vmovdqa %xmm0, (%r9)115; AVX2-FCP-NEXT: vzeroupper116; AVX2-FCP-NEXT: retq117;118; AVX512-LABEL: store_i16_stride5_vf2:119; AVX512: # %bb.0:120; AVX512-NEXT: vmovdqa (%rdi), %xmm0121; AVX512-NEXT: vmovdqa (%rdx), %xmm1122; AVX512-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]123; AVX512-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]124; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]125; AVX512-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0126; AVX512-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,ymm0[2,3,6,7,10,11],zero,zero,ymm0[18,19,u,u,u,u,u,u,u,u,u,u,u,u]127; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]128; AVX512-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1],zero,zero,zero,zero,zero,zero,ymm0[30,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero129; AVX512-NEXT: vpor %ymm0, %ymm1, %ymm0130; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm1131; AVX512-NEXT: vmovd %xmm1, 16(%r9)132; AVX512-NEXT: vmovdqa %xmm0, (%r9)133; AVX512-NEXT: vzeroupper134; AVX512-NEXT: retq135;136; AVX512-FCP-LABEL: store_i16_stride5_vf2:137; AVX512-FCP: # %bb.0:138; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm0139; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm1140; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]141; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]142; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]143; AVX512-FCP-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0144; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,ymm0[2,3,6,7,10,11],zero,zero,ymm0[18,19,u,u,u,u,u,u,u,u,u,u,u,u]145; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]146; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1],zero,zero,zero,zero,zero,zero,ymm0[30,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero147; AVX512-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0148; AVX512-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1149; AVX512-FCP-NEXT: vmovd %xmm1, 16(%r9)150; AVX512-FCP-NEXT: vmovdqa %xmm0, (%r9)151; AVX512-FCP-NEXT: vzeroupper152; AVX512-FCP-NEXT: retq153;154; AVX512DQ-LABEL: store_i16_stride5_vf2:155; AVX512DQ: # %bb.0:156; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm0157; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm1158; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]159; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]160; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]161; AVX512DQ-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0162; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,ymm0[2,3,6,7,10,11],zero,zero,ymm0[18,19,u,u,u,u,u,u,u,u,u,u,u,u]163; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]164; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1],zero,zero,zero,zero,zero,zero,ymm0[30,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero165; AVX512DQ-NEXT: vpor %ymm0, %ymm1, %ymm0166; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm1167; AVX512DQ-NEXT: vmovd %xmm1, 16(%r9)168; AVX512DQ-NEXT: vmovdqa %xmm0, (%r9)169; AVX512DQ-NEXT: vzeroupper170; AVX512DQ-NEXT: retq171;172; AVX512DQ-FCP-LABEL: store_i16_stride5_vf2:173; AVX512DQ-FCP: # %bb.0:174; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm0175; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm1176; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]177; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]178; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]179; AVX512DQ-FCP-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0180; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,ymm0[2,3,6,7,10,11],zero,zero,ymm0[18,19,u,u,u,u,u,u,u,u,u,u,u,u]181; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]182; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1],zero,zero,zero,zero,zero,zero,ymm0[30,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero183; AVX512DQ-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0184; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1185; AVX512DQ-FCP-NEXT: vmovd %xmm1, 16(%r9)186; AVX512DQ-FCP-NEXT: vmovdqa %xmm0, (%r9)187; AVX512DQ-FCP-NEXT: vzeroupper188; AVX512DQ-FCP-NEXT: retq189;190; AVX512BW-LABEL: store_i16_stride5_vf2:191; AVX512BW: # %bb.0:192; AVX512BW-NEXT: vmovdqa (%rdi), %xmm0193; AVX512BW-NEXT: vmovdqa (%rdx), %xmm1194; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]195; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]196; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]197; AVX512BW-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0198; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm1 = [0,2,4,6,8,1,3,5,7,9,0,0,0,0,0,0]199; AVX512BW-NEXT: vpermw %ymm0, %ymm1, %ymm0200; AVX512BW-NEXT: vextracti128 $1, %ymm0, %xmm1201; AVX512BW-NEXT: vmovd %xmm1, 16(%r9)202; AVX512BW-NEXT: vmovdqa %xmm0, (%r9)203; AVX512BW-NEXT: vzeroupper204; AVX512BW-NEXT: retq205;206; AVX512BW-FCP-LABEL: store_i16_stride5_vf2:207; AVX512BW-FCP: # %bb.0:208; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm0209; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm1210; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]211; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]212; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]213; AVX512BW-FCP-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0214; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm1 = [0,2,4,6,8,1,3,5,7,9,0,0,0,0,0,0]215; AVX512BW-FCP-NEXT: vpermw %ymm0, %ymm1, %ymm0216; AVX512BW-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1217; AVX512BW-FCP-NEXT: vmovd %xmm1, 16(%r9)218; AVX512BW-FCP-NEXT: vmovdqa %xmm0, (%r9)219; AVX512BW-FCP-NEXT: vzeroupper220; AVX512BW-FCP-NEXT: retq221;222; AVX512DQ-BW-LABEL: store_i16_stride5_vf2:223; AVX512DQ-BW: # %bb.0:224; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm0225; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm1226; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]227; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]228; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]229; AVX512DQ-BW-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0230; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm1 = [0,2,4,6,8,1,3,5,7,9,0,0,0,0,0,0]231; AVX512DQ-BW-NEXT: vpermw %ymm0, %ymm1, %ymm0232; AVX512DQ-BW-NEXT: vextracti128 $1, %ymm0, %xmm1233; AVX512DQ-BW-NEXT: vmovd %xmm1, 16(%r9)234; AVX512DQ-BW-NEXT: vmovdqa %xmm0, (%r9)235; AVX512DQ-BW-NEXT: vzeroupper236; AVX512DQ-BW-NEXT: retq237;238; AVX512DQ-BW-FCP-LABEL: store_i16_stride5_vf2:239; AVX512DQ-BW-FCP: # %bb.0:240; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm0241; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm1242; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]243; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]244; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]245; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0246; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm1 = [0,2,4,6,8,1,3,5,7,9,0,0,0,0,0,0]247; AVX512DQ-BW-FCP-NEXT: vpermw %ymm0, %ymm1, %ymm0248; AVX512DQ-BW-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1249; AVX512DQ-BW-FCP-NEXT: vmovd %xmm1, 16(%r9)250; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm0, (%r9)251; AVX512DQ-BW-FCP-NEXT: vzeroupper252; AVX512DQ-BW-FCP-NEXT: retq253 %in.vec0 = load <2 x i16>, ptr %in.vecptr0, align 64254 %in.vec1 = load <2 x i16>, ptr %in.vecptr1, align 64255 %in.vec2 = load <2 x i16>, ptr %in.vecptr2, align 64256 %in.vec3 = load <2 x i16>, ptr %in.vecptr3, align 64257 %in.vec4 = load <2 x i16>, ptr %in.vecptr4, align 64258 %1 = shufflevector <2 x i16> %in.vec0, <2 x i16> %in.vec1, <4 x i32> <i32 0, i32 1, i32 2, i32 3>259 %2 = shufflevector <2 x i16> %in.vec2, <2 x i16> %in.vec3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>260 %3 = shufflevector <4 x i16> %1, <4 x i16> %2, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>261 %4 = shufflevector <2 x i16> %in.vec4, <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>262 %5 = shufflevector <8 x i16> %3, <8 x i16> %4, <10 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>263 %interleaved.vec = shufflevector <10 x i16> %5, <10 x i16> poison, <10 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 1, i32 3, i32 5, i32 7, i32 9>264 store <10 x i16> %interleaved.vec, ptr %out.vec, align 64265 ret void266}267 268define void @store_i16_stride5_vf4(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {269; SSE-LABEL: store_i16_stride5_vf4:270; SSE: # %bb.0:271; SSE-NEXT: movq {{.*#+}} xmm2 = mem[0],zero272; SSE-NEXT: movq {{.*#+}} xmm6 = mem[0],zero273; SSE-NEXT: movq {{.*#+}} xmm3 = mem[0],zero274; SSE-NEXT: movq {{.*#+}} xmm1 = mem[0],zero275; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero276; SSE-NEXT: movdqa %xmm1, %xmm4277; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3]278; SSE-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3]279; SSE-NEXT: punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm3[0],xmm6[1],xmm3[1],xmm6[2],xmm3[2],xmm6[3],xmm3[3]280; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm6[3,3,3,3]281; SSE-NEXT: psrldq {{.*#+}} xmm6 = xmm6[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero282; SSE-NEXT: movdqa {{.*#+}} xmm7 = [65535,65535,65535,0,0,65535,65535,65535]283; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[2,1,2,3]284; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,1,1,3,4,5,6,7]285; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,6,7]286; SSE-NEXT: pand %xmm7, %xmm4287; SSE-NEXT: pandn %xmm6, %xmm7288; SSE-NEXT: por %xmm4, %xmm7289; SSE-NEXT: movdqa {{.*#+}} xmm4 = [65535,0,65535,65535,65535,65535,0,65535]290; SSE-NEXT: pand %xmm4, %xmm7291; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm0[0,1,0,1]292; SSE-NEXT: pandn %xmm6, %xmm4293; SSE-NEXT: por %xmm7, %xmm4294; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]295; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,1,2,2,4,5,6,7]296; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,0,2,1]297; SSE-NEXT: movdqa {{.*#+}} xmm7 = [65535,65535,0,0,65535,65535,65535,0]298; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,1,3,2,4,5,6,7]299; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,1,1]300; SSE-NEXT: pand %xmm7, %xmm2301; SSE-NEXT: pandn %xmm3, %xmm7302; SSE-NEXT: por %xmm2, %xmm7303; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,65535,0,65535,65535,65535]304; SSE-NEXT: pand %xmm2, %xmm7305; SSE-NEXT: pandn %xmm6, %xmm2306; SSE-NEXT: por %xmm7, %xmm2307; SSE-NEXT: movdqa {{.*#+}} xmm3 = [65535,65535,65535,0,65535,65535,65535,65535]308; SSE-NEXT: psrlq $48, %xmm1309; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1]310; SSE-NEXT: pand %xmm3, %xmm5311; SSE-NEXT: pandn %xmm0, %xmm3312; SSE-NEXT: por %xmm5, %xmm3313; SSE-NEXT: movq %xmm3, 32(%r9)314; SSE-NEXT: movdqa %xmm2, (%r9)315; SSE-NEXT: movdqa %xmm4, 16(%r9)316; SSE-NEXT: retq317;318; AVX-LABEL: store_i16_stride5_vf4:319; AVX: # %bb.0:320; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero321; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero322; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]323; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero324; AVX-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero325; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]326; AVX-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero327; AVX-NEXT: vpsrldq {{.*#+}} xmm3 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero328; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm1[3,1,2,3]329; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,3,1,3,4,5,6,7]330; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1,2,3,4,5,6,7]331; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm2[3],xmm3[4,5,6,7]332; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm1[10,11,10,11,u,u,u,u,4,5,12,13,u,u,u,u]333; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm0[3,1,2,1]334; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,2,0,4,5,6,7]335; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2,3],xmm4[4,5],xmm5[6,7]336; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,1,0,1]337; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm2[1],xmm4[2,3,4,5],xmm2[6],xmm4[7]338; AVX-NEXT: vmovdqa {{.*#+}} xmm5 = [0,1,8,9,0,1,8,9,u,u,2,3,10,11,2,3]339; AVX-NEXT: vpshufb %xmm5, %xmm1, %xmm1340; AVX-NEXT: vpshufb %xmm5, %xmm0, %xmm0341; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5,6],xmm1[7]342; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm2[4],xmm0[5,6,7]343; AVX-NEXT: vmovdqa %xmm0, (%r9)344; AVX-NEXT: vmovdqa %xmm4, 16(%r9)345; AVX-NEXT: vmovq %xmm3, 32(%r9)346; AVX-NEXT: retq347;348; AVX2-LABEL: store_i16_stride5_vf4:349; AVX2: # %bb.0:350; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero351; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero352; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]353; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero354; AVX2-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero355; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]356; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2357; AVX2-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero358; AVX2-NEXT: vpbroadcastq %xmm3, %ymm3359; AVX2-NEXT: vmovdqa {{.*#+}} ymm4 = [0,1,8,9,0,1,8,9,u,u,2,3,10,11,2,3,10,11,u,u,4,5,12,13,4,5,12,13,u,u,6,7]360; AVX2-NEXT: vpshufb %ymm4, %ymm2, %ymm5361; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]362; AVX2-NEXT: vpshufb %ymm4, %ymm2, %ymm2363; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5,6],ymm2[7],ymm5[8,9],ymm2[10,11],ymm5[12,13,14],ymm2[15]364; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]365; AVX2-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm2366; AVX2-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero367; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]368; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,3,1,3,4,5,6,7]369; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]370; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]371; AVX2-NEXT: vmovq %xmm0, 32(%r9)372; AVX2-NEXT: vmovdqa %ymm2, (%r9)373; AVX2-NEXT: vzeroupper374; AVX2-NEXT: retq375;376; AVX2-FP-LABEL: store_i16_stride5_vf4:377; AVX2-FP: # %bb.0:378; AVX2-FP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero379; AVX2-FP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero380; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]381; AVX2-FP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero382; AVX2-FP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero383; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]384; AVX2-FP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2385; AVX2-FP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero386; AVX2-FP-NEXT: vpbroadcastq %xmm3, %ymm3387; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,1,8,9,0,1,8,9,u,u,2,3,10,11,2,3,10,11,u,u,4,5,12,13,4,5,12,13,u,u,6,7]388; AVX2-FP-NEXT: vpshufb %ymm4, %ymm2, %ymm5389; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]390; AVX2-FP-NEXT: vpshufb %ymm4, %ymm2, %ymm2391; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5,6],ymm2[7],ymm5[8,9],ymm2[10,11],ymm5[12,13,14],ymm2[15]392; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]393; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm2394; AVX2-FP-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero395; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,u,6,7,14,15,u,u,u,u,u,u,u,u,u,u]396; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]397; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]398; AVX2-FP-NEXT: vmovq %xmm0, 32(%r9)399; AVX2-FP-NEXT: vmovdqa %ymm2, (%r9)400; AVX2-FP-NEXT: vzeroupper401; AVX2-FP-NEXT: retq402;403; AVX2-FCP-LABEL: store_i16_stride5_vf4:404; AVX2-FCP: # %bb.0:405; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero406; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero407; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]408; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero409; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero410; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]411; AVX2-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2412; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero413; AVX2-FCP-NEXT: vpbroadcastq %xmm3, %ymm3414; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,1,8,9,0,1,8,9,u,u,2,3,10,11,2,3,10,11,u,u,4,5,12,13,4,5,12,13,u,u,6,7]415; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm5416; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]417; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm2418; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5,6],ymm2[7],ymm5[8,9],ymm2[10,11],ymm5[12,13,14],ymm2[15]419; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]420; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm2421; AVX2-FCP-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero422; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,u,6,7,14,15,u,u,u,u,u,u,u,u,u,u]423; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]424; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]425; AVX2-FCP-NEXT: vmovq %xmm0, 32(%r9)426; AVX2-FCP-NEXT: vmovdqa %ymm2, (%r9)427; AVX2-FCP-NEXT: vzeroupper428; AVX2-FCP-NEXT: retq429;430; AVX512-LABEL: store_i16_stride5_vf4:431; AVX512: # %bb.0:432; AVX512-NEXT: movq (%r8), %rax433; AVX512-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero434; AVX512-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero435; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]436; AVX512-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero437; AVX512-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero438; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]439; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2440; AVX512-NEXT: vpbroadcastq %rax, %ymm3441; AVX512-NEXT: vmovdqa {{.*#+}} ymm4 = [0,1,8,9,0,1,8,9,u,u,2,3,10,11,2,3,10,11,u,u,4,5,12,13,4,5,12,13,u,u,6,7]442; AVX512-NEXT: vpshufb %ymm4, %ymm2, %ymm5443; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]444; AVX512-NEXT: vpshufb %ymm4, %ymm2, %ymm2445; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5,6],ymm2[7],ymm5[8,9],ymm2[10,11],ymm5[12,13,14],ymm2[15]446; AVX512-NEXT: vpternlogq {{.*#+}} ymm2 = ymm3 ^ (mem & (ymm2 ^ ymm3))447; AVX512-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero448; AVX512-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]449; AVX512-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,3,1,3,4,5,6,7]450; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]451; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]452; AVX512-NEXT: vmovq %xmm0, 32(%r9)453; AVX512-NEXT: vmovdqa %ymm2, (%r9)454; AVX512-NEXT: vzeroupper455; AVX512-NEXT: retq456;457; AVX512-FCP-LABEL: store_i16_stride5_vf4:458; AVX512-FCP: # %bb.0:459; AVX512-FCP-NEXT: movq (%r8), %rax460; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero461; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero462; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]463; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero464; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero465; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]466; AVX512-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2467; AVX512-FCP-NEXT: vpbroadcastq %rax, %ymm3468; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,1,8,9,0,1,8,9,u,u,2,3,10,11,2,3,10,11,u,u,4,5,12,13,4,5,12,13,u,u,6,7]469; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm5470; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]471; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm2472; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5,6],ymm2[7],ymm5[8,9],ymm2[10,11],ymm5[12,13,14],ymm2[15]473; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm2 = ymm3 ^ (mem & (ymm2 ^ ymm3))474; AVX512-FCP-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero475; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,u,6,7,14,15,u,u,8,9,10,11,12,13,14,15]476; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]477; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]478; AVX512-FCP-NEXT: vmovq %xmm0, 32(%r9)479; AVX512-FCP-NEXT: vmovdqa %ymm2, (%r9)480; AVX512-FCP-NEXT: vzeroupper481; AVX512-FCP-NEXT: retq482;483; AVX512DQ-LABEL: store_i16_stride5_vf4:484; AVX512DQ: # %bb.0:485; AVX512DQ-NEXT: movq (%r8), %rax486; AVX512DQ-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero487; AVX512DQ-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero488; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]489; AVX512DQ-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero490; AVX512DQ-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero491; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]492; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2493; AVX512DQ-NEXT: vpbroadcastq %rax, %ymm3494; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm4 = [0,1,8,9,0,1,8,9,u,u,2,3,10,11,2,3,10,11,u,u,4,5,12,13,4,5,12,13,u,u,6,7]495; AVX512DQ-NEXT: vpshufb %ymm4, %ymm2, %ymm5496; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]497; AVX512DQ-NEXT: vpshufb %ymm4, %ymm2, %ymm2498; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5,6],ymm2[7],ymm5[8,9],ymm2[10,11],ymm5[12,13,14],ymm2[15]499; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm2 = ymm3 ^ (mem & (ymm2 ^ ymm3))500; AVX512DQ-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero501; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]502; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,3,1,3,4,5,6,7]503; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]504; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]505; AVX512DQ-NEXT: vmovq %xmm0, 32(%r9)506; AVX512DQ-NEXT: vmovdqa %ymm2, (%r9)507; AVX512DQ-NEXT: vzeroupper508; AVX512DQ-NEXT: retq509;510; AVX512DQ-FCP-LABEL: store_i16_stride5_vf4:511; AVX512DQ-FCP: # %bb.0:512; AVX512DQ-FCP-NEXT: movq (%r8), %rax513; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero514; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero515; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]516; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero517; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero518; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]519; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2520; AVX512DQ-FCP-NEXT: vpbroadcastq %rax, %ymm3521; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,1,8,9,0,1,8,9,u,u,2,3,10,11,2,3,10,11,u,u,4,5,12,13,4,5,12,13,u,u,6,7]522; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm5523; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]524; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm2525; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0,1],ymm2[2,3],ymm5[4,5,6],ymm2[7],ymm5[8,9],ymm2[10,11],ymm5[12,13,14],ymm2[15]526; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm2 = ymm3 ^ (mem & (ymm2 ^ ymm3))527; AVX512DQ-FCP-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero528; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,u,6,7,14,15,u,u,8,9,10,11,12,13,14,15]529; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]530; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]531; AVX512DQ-FCP-NEXT: vmovq %xmm0, 32(%r9)532; AVX512DQ-FCP-NEXT: vmovdqa %ymm2, (%r9)533; AVX512DQ-FCP-NEXT: vzeroupper534; AVX512DQ-FCP-NEXT: retq535;536; AVX512BW-LABEL: store_i16_stride5_vf4:537; AVX512BW: # %bb.0:538; AVX512BW-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero539; AVX512BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero540; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]541; AVX512BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero542; AVX512BW-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero543; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]544; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0545; AVX512BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero546; AVX512BW-NEXT: vinserti32x4 $2, %xmm1, %zmm0, %zmm0547; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm1 = [0,4,8,12,16,1,5,9,13,17,2,6,10,14,18,3,7,11,15,19,0,0,0,0,0,0,0,0,0,0,0,0]548; AVX512BW-NEXT: vpermw %zmm0, %zmm1, %zmm0549; AVX512BW-NEXT: vextracti32x4 $2, %zmm0, %xmm1550; AVX512BW-NEXT: vmovq %xmm1, 32(%r9)551; AVX512BW-NEXT: vmovdqa %ymm0, (%r9)552; AVX512BW-NEXT: vzeroupper553; AVX512BW-NEXT: retq554;555; AVX512BW-FCP-LABEL: store_i16_stride5_vf4:556; AVX512BW-FCP: # %bb.0:557; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero558; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero559; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]560; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero561; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero562; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]563; AVX512BW-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0564; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero565; AVX512BW-FCP-NEXT: vinserti32x4 $2, %xmm1, %zmm0, %zmm0566; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm1 = [0,4,8,12,16,1,5,9,13,17,2,6,10,14,18,3,7,11,15,19,0,0,0,0,0,0,0,0,0,0,0,0]567; AVX512BW-FCP-NEXT: vpermw %zmm0, %zmm1, %zmm0568; AVX512BW-FCP-NEXT: vextracti32x4 $2, %zmm0, %xmm1569; AVX512BW-FCP-NEXT: vmovq %xmm1, 32(%r9)570; AVX512BW-FCP-NEXT: vmovdqa %ymm0, (%r9)571; AVX512BW-FCP-NEXT: vzeroupper572; AVX512BW-FCP-NEXT: retq573;574; AVX512DQ-BW-LABEL: store_i16_stride5_vf4:575; AVX512DQ-BW: # %bb.0:576; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero577; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero578; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]579; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero580; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero581; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]582; AVX512DQ-BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0583; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero584; AVX512DQ-BW-NEXT: vinserti32x4 $2, %xmm1, %zmm0, %zmm0585; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm1 = [0,4,8,12,16,1,5,9,13,17,2,6,10,14,18,3,7,11,15,19,0,0,0,0,0,0,0,0,0,0,0,0]586; AVX512DQ-BW-NEXT: vpermw %zmm0, %zmm1, %zmm0587; AVX512DQ-BW-NEXT: vextracti32x4 $2, %zmm0, %xmm1588; AVX512DQ-BW-NEXT: vmovq %xmm1, 32(%r9)589; AVX512DQ-BW-NEXT: vmovdqa %ymm0, (%r9)590; AVX512DQ-BW-NEXT: vzeroupper591; AVX512DQ-BW-NEXT: retq592;593; AVX512DQ-BW-FCP-LABEL: store_i16_stride5_vf4:594; AVX512DQ-BW-FCP: # %bb.0:595; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero596; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero597; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]598; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero599; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero600; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]601; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0602; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero603; AVX512DQ-BW-FCP-NEXT: vinserti32x4 $2, %xmm1, %zmm0, %zmm0604; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm1 = [0,4,8,12,16,1,5,9,13,17,2,6,10,14,18,3,7,11,15,19,0,0,0,0,0,0,0,0,0,0,0,0]605; AVX512DQ-BW-FCP-NEXT: vpermw %zmm0, %zmm1, %zmm0606; AVX512DQ-BW-FCP-NEXT: vextracti32x4 $2, %zmm0, %xmm1607; AVX512DQ-BW-FCP-NEXT: vmovq %xmm1, 32(%r9)608; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm0, (%r9)609; AVX512DQ-BW-FCP-NEXT: vzeroupper610; AVX512DQ-BW-FCP-NEXT: retq611 %in.vec0 = load <4 x i16>, ptr %in.vecptr0, align 64612 %in.vec1 = load <4 x i16>, ptr %in.vecptr1, align 64613 %in.vec2 = load <4 x i16>, ptr %in.vecptr2, align 64614 %in.vec3 = load <4 x i16>, ptr %in.vecptr3, align 64615 %in.vec4 = load <4 x i16>, ptr %in.vecptr4, align 64616 %1 = shufflevector <4 x i16> %in.vec0, <4 x i16> %in.vec1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>617 %2 = shufflevector <4 x i16> %in.vec2, <4 x i16> %in.vec3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>618 %3 = shufflevector <8 x i16> %1, <8 x i16> %2, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>619 %4 = shufflevector <4 x i16> %in.vec4, <4 x i16> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>620 %5 = shufflevector <16 x i16> %3, <16 x i16> %4, <20 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19>621 %interleaved.vec = shufflevector <20 x i16> %5, <20 x i16> poison, <20 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 1, i32 5, i32 9, i32 13, i32 17, i32 2, i32 6, i32 10, i32 14, i32 18, i32 3, i32 7, i32 11, i32 15, i32 19>622 store <20 x i16> %interleaved.vec, ptr %out.vec, align 64623 ret void624}625 626define void @store_i16_stride5_vf8(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {627; SSE-LABEL: store_i16_stride5_vf8:628; SSE: # %bb.0:629; SSE-NEXT: movdqa (%rdi), %xmm5630; SSE-NEXT: movdqa (%rsi), %xmm7631; SSE-NEXT: movdqa (%rdx), %xmm2632; SSE-NEXT: movdqa (%rcx), %xmm3633; SSE-NEXT: movdqa (%r8), %xmm6634; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,0,65535,65535,65535]635; SSE-NEXT: movdqa %xmm0, %xmm1636; SSE-NEXT: pandn %xmm5, %xmm1637; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm7[3,3,3,3,4,5,6,7]638; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,4,4]639; SSE-NEXT: pand %xmm0, %xmm4640; SSE-NEXT: por %xmm1, %xmm4641; SSE-NEXT: movdqa {{.*#+}} xmm8 = [0,65535,65535,65535,0,0,65535,65535]642; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm2[1,1,2,2]643; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,0,65535,65535,65535,65535,0]644; SSE-NEXT: pand %xmm1, %xmm9645; SSE-NEXT: pshuflw {{.*#+}} xmm10 = xmm3[3,3,3,3,4,5,6,7]646; SSE-NEXT: pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,4,4,4]647; SSE-NEXT: movdqa %xmm1, %xmm11648; SSE-NEXT: pandn %xmm10, %xmm11649; SSE-NEXT: por %xmm9, %xmm11650; SSE-NEXT: pand %xmm8, %xmm11651; SSE-NEXT: pandn %xmm4, %xmm8652; SSE-NEXT: por %xmm11, %xmm8653; SSE-NEXT: movdqa {{.*#+}} xmm4 = [65535,65535,65535,0,65535,65535,65535,65535]654; SSE-NEXT: pand %xmm4, %xmm8655; SSE-NEXT: pandn %xmm6, %xmm4656; SSE-NEXT: por %xmm8, %xmm4657; SSE-NEXT: movdqa %xmm2, %xmm8658; SSE-NEXT: punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm3[0],xmm8[1],xmm3[1],xmm8[2],xmm3[2],xmm8[3],xmm3[3]659; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm8[0,1,2,2,4,5,6,7]660; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm8[0,0,2,1]661; SSE-NEXT: movdqa {{.*#+}} xmm10 = [65535,65535,0,0,65535,65535,65535,0]662; SSE-NEXT: movdqa %xmm5, %xmm9663; SSE-NEXT: punpcklwd {{.*#+}} xmm9 = xmm9[0],xmm7[0],xmm9[1],xmm7[1],xmm9[2],xmm7[2],xmm9[3],xmm7[3]664; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm9[0,1,3,2,4,5,6,7]665; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm11[0,1,1,1]666; SSE-NEXT: pand %xmm10, %xmm11667; SSE-NEXT: pandn %xmm8, %xmm10668; SSE-NEXT: por %xmm11, %xmm10669; SSE-NEXT: pand %xmm0, %xmm10670; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm6[0,1,0,1]671; SSE-NEXT: pandn %xmm8, %xmm0672; SSE-NEXT: por %xmm10, %xmm0673; SSE-NEXT: movdqa %xmm5, %xmm10674; SSE-NEXT: punpckhwd {{.*#+}} xmm5 = xmm5[4],xmm7[4],xmm5[5],xmm7[5],xmm5[6],xmm7[6],xmm5[7],xmm7[7]675; SSE-NEXT: psrlq $48, %xmm7676; SSE-NEXT: punpckhqdq {{.*#+}} xmm10 = xmm10[1],xmm7[1]677; SSE-NEXT: movdqa {{.*#+}} xmm7 = [65535,65535,65535,0,0,65535,65535,65535]678; SSE-NEXT: movdqa %xmm7, %xmm11679; SSE-NEXT: pandn %xmm10, %xmm11680; SSE-NEXT: movdqa %xmm2, %xmm10681; SSE-NEXT: punpckhwd {{.*#+}} xmm10 = xmm10[4],xmm3[4],xmm10[5],xmm3[5],xmm10[6],xmm3[6],xmm10[7],xmm3[7]682; SSE-NEXT: pshufhw {{.*#+}} xmm12 = xmm10[0,1,2,3,4,5,7,6]683; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm12[2,1,3,3]684; SSE-NEXT: pand %xmm7, %xmm12685; SSE-NEXT: por %xmm11, %xmm12686; SSE-NEXT: pand %xmm1, %xmm12687; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[2,3,2,3]688; SSE-NEXT: pandn %xmm6, %xmm1689; SSE-NEXT: por %xmm12, %xmm1690; SSE-NEXT: pslldq {{.*#+}} xmm10 = zero,zero,xmm10[0,1,2,3,4,5,6,7,8,9,10,11,12,13]691; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[0,2,3,3,4,5,6,7]692; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,1,2,2]693; SSE-NEXT: pand %xmm7, %xmm5694; SSE-NEXT: pandn %xmm10, %xmm7695; SSE-NEXT: por %xmm5, %xmm7696; SSE-NEXT: movdqa {{.*#+}} xmm5 = [0,65535,65535,65535,65535,0,65535,65535]697; SSE-NEXT: pand %xmm5, %xmm7698; SSE-NEXT: pandn %xmm6, %xmm5699; SSE-NEXT: por %xmm7, %xmm5700; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm9[0,1,2,3,4,5,6,6]701; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[2,3,2,3]702; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]703; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm3[2,2,2,2,4,5,6,7]704; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,4,6,7]705; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]706; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1]707; SSE-NEXT: movdqa {{.*#+}} xmm3 = [65535,0,65535,65535,65535,65535,0,65535]708; SSE-NEXT: pand %xmm3, %xmm2709; SSE-NEXT: pandn %xmm8, %xmm3710; SSE-NEXT: por %xmm2, %xmm3711; SSE-NEXT: movdqa %xmm3, 16(%r9)712; SSE-NEXT: movdqa %xmm5, 48(%r9)713; SSE-NEXT: movdqa %xmm1, 64(%r9)714; SSE-NEXT: movdqa %xmm0, (%r9)715; SSE-NEXT: movdqa %xmm4, 32(%r9)716; SSE-NEXT: retq717;718; AVX-LABEL: store_i16_stride5_vf8:719; AVX: # %bb.0:720; AVX-NEXT: vmovdqa (%rdi), %xmm2721; AVX-NEXT: vmovdqa (%rsi), %xmm5722; AVX-NEXT: vmovdqa (%rdx), %xmm3723; AVX-NEXT: vmovdqa (%rcx), %xmm4724; AVX-NEXT: vmovdqa (%r8), %xmm0725; AVX-NEXT: vpsrlq $48, %xmm5, %xmm1726; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm1 = xmm2[1],xmm1[1]727; AVX-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]728; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm6[0,1,2,3,4,5,7,6]729; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[2,1,3,3]730; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm7[0,1,2],xmm1[3,4],xmm7[5,6,7]731; AVX-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]732; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[0,1,2,2,4,5,6,7]733; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,0,2,1]734; AVX-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3]735; AVX-NEXT: vpshuflw {{.*#+}} xmm9 = xmm8[0,1,3,2,4,5,6,7]736; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm9[0,1,1,1]737; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm9[0,1],xmm7[2,3],xmm9[4,5,6],xmm7[7]738; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm0[0,1,0,1]739; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2,3],xmm9[4],xmm7[5,6,7]740; AVX-NEXT: vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,6,6]741; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm8[0,2,2,3]742; AVX-NEXT: vpunpcklwd {{.*#+}} xmm10 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]743; AVX-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[2,2,2,2,4,5,6,7]744; AVX-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,5,4,6,7]745; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm10[0,1],xmm8[2,3],xmm10[4,5],xmm8[6,7]746; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0],xmm9[1],xmm8[2,3,4,5],xmm9[6],xmm8[7]747; AVX-NEXT: vpslldq {{.*#+}} xmm6 = zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9,10,11,12,13]748; AVX-NEXT: vpunpckhwd {{.*#+}} xmm9 = xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]749; AVX-NEXT: vpshuflw {{.*#+}} xmm9 = xmm9[0,2,3,3,4,5,6,7]750; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm9[0,1,2,2]751; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm9[0,1,2],xmm6[3,4],xmm9[5,6,7]752; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm0[2,3,2,3]753; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm9[0],xmm6[1,2,3,4],xmm9[5],xmm6[6,7]754; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[3,3,3,3,4,5,6,7]755; AVX-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]756; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm5[0,1,2,3],xmm2[4],xmm5[5,6,7]757; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[1,1,2,2]758; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[3,3,3,3,4,5,6,7]759; AVX-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,4,4]760; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm4[2],xmm3[3,4,5,6],xmm4[7]761; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1,2,3],xmm2[4,5],xmm3[6,7]762; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm2[0,1,2],xmm0[3],xmm2[4,5,6,7]763; AVX-NEXT: vmovdqa %xmm0, 32(%r9)764; AVX-NEXT: vmovdqa %xmm6, 48(%r9)765; AVX-NEXT: vmovdqa %xmm8, 16(%r9)766; AVX-NEXT: vmovdqa %xmm7, (%r9)767; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1],xmm9[2],xmm1[3,4,5,6],xmm9[7]768; AVX-NEXT: vmovdqa %xmm0, 64(%r9)769; AVX-NEXT: retq770;771; AVX2-LABEL: store_i16_stride5_vf8:772; AVX2: # %bb.0:773; AVX2-NEXT: vmovdqa (%rdi), %xmm0774; AVX2-NEXT: vmovdqa (%rsi), %xmm2775; AVX2-NEXT: vmovdqa (%rdx), %xmm1776; AVX2-NEXT: vmovdqa (%rcx), %xmm3777; AVX2-NEXT: vmovdqa (%r8), %xmm4778; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm5779; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm6780; AVX2-NEXT: vpshufhw {{.*#+}} ymm7 = ymm5[0,1,2,3,5,6,4,7,8,9,10,11,13,14,12,15]781; AVX2-NEXT: vpshufd {{.*#+}} ymm7 = ymm7[0,2,3,2,4,6,7,6]782; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm5[2,3,0,1]783; AVX2-NEXT: vpshufb {{.*#+}} ymm8 = ymm8[6,7,10,11,u,u,6,7,u,u,8,9,12,13,u,u,22,23,26,27,u,u,22,23,u,u,24,25,28,29,u,u]784; AVX2-NEXT: vpblendw {{.*#+}} ymm7 = ymm8[0,1],ymm7[2],ymm8[3],ymm7[4],ymm8[5,6],ymm7[7],ymm8[8,9],ymm7[10],ymm8[11],ymm7[12],ymm8[13,14],ymm7[15]785; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]786; AVX2-NEXT: vpshufb {{.*#+}} ymm8 = ymm8[u,u,u,u,6,7,10,11,u,u,u,u,u,u,8,9,u,u,u,u,22,23,26,27,u,u,u,u,u,u,24,25]787; AVX2-NEXT: vpshuflw {{.*#+}} ymm9 = ymm6[3,3,3,3,4,5,6,7,11,11,11,11,12,13,14,15]788; AVX2-NEXT: vpshufhw {{.*#+}} ymm9 = ymm9[0,1,2,3,5,5,4,7,8,9,10,11,13,13,12,15]789; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2,3],ymm9[4,5,6],ymm8[7],ymm9[8,9],ymm8[10,11],ymm9[12,13,14],ymm8[15]790; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]791; AVX2-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm7792; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]793; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]794; AVX2-NEXT: vpblendvb %ymm8, %ymm7, %ymm4, %ymm4795; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]796; AVX2-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,ymm6[0,1,8,9,12,13],zero,zero,zero,zero,ymm6[2,3,18,19,18,19],zero,zero,zero,zero,ymm6[28,29,20,21,28,29],zero,zero797; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,2,0,2]798; AVX2-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[0,1,8,9],zero,zero,zero,zero,zero,zero,ymm5[2,3,10,11],zero,zero,zero,zero,zero,zero,ymm5[20,21,28,29],zero,zero,zero,zero,zero,zero,ymm5[22,23]799; AVX2-NEXT: vpor %ymm6, %ymm5, %ymm5800; AVX2-NEXT: vpbroadcastq (%r8), %ymm6801; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]802; AVX2-NEXT: vpblendvb %ymm7, %ymm5, %ymm6, %ymm5803; AVX2-NEXT: vpsrlq $48, %xmm2, %xmm2804; AVX2-NEXT: vpunpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm2[1]805; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]806; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,7,6]807; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[2,1,3,3]808; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]809; AVX2-NEXT: vpbroadcastd 12(%r8), %xmm1810; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]811; AVX2-NEXT: vmovdqa %xmm0, 64(%r9)812; AVX2-NEXT: vmovdqa %ymm5, (%r9)813; AVX2-NEXT: vmovdqa %ymm4, 32(%r9)814; AVX2-NEXT: vzeroupper815; AVX2-NEXT: retq816;817; AVX2-FP-LABEL: store_i16_stride5_vf8:818; AVX2-FP: # %bb.0:819; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm0820; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm2821; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm1822; AVX2-FP-NEXT: vmovdqa (%rcx), %xmm3823; AVX2-FP-NEXT: vmovdqa (%r8), %xmm4824; AVX2-FP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm5825; AVX2-FP-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm6826; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm7 = [6,7,10,11,10,11,6,7,8,9,8,9,12,13,12,13,22,23,26,27,26,27,22,23,24,25,24,25,28,29,28,29]827; AVX2-FP-NEXT: vpshufb %ymm7, %ymm5, %ymm8828; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm5[2,3,0,1]829; AVX2-FP-NEXT: vpshufb %ymm7, %ymm9, %ymm7830; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm7 = ymm7[0,1],ymm8[2],ymm7[3],ymm8[4],ymm7[5,6],ymm8[7],ymm7[8,9],ymm8[10],ymm7[11],ymm8[12],ymm7[13,14],ymm8[15]831; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm8 = [6,7,6,7,6,7,10,11,10,11,10,11,8,9,8,9,22,23,22,23,22,23,26,27,26,27,26,27,24,25,24,25]832; AVX2-FP-NEXT: vpshufb %ymm8, %ymm6, %ymm9833; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm6[2,3,0,1]834; AVX2-FP-NEXT: vpshufb %ymm8, %ymm10, %ymm8835; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2,3],ymm9[4,5,6],ymm8[7],ymm9[8,9],ymm8[10,11],ymm9[12,13,14],ymm8[15]836; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]837; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm7838; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]839; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]840; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm7, %ymm4, %ymm4841; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]842; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,ymm6[0,1,8,9,12,13],zero,zero,zero,zero,ymm6[2,3,18,19,18,19],zero,zero,zero,zero,ymm6[28,29,20,21,28,29],zero,zero843; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,2,0,2]844; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[0,1,8,9],zero,zero,zero,zero,zero,zero,ymm5[2,3,10,11],zero,zero,zero,zero,zero,zero,ymm5[20,21,28,29],zero,zero,zero,zero,zero,zero,ymm5[22,23]845; AVX2-FP-NEXT: vpor %ymm6, %ymm5, %ymm5846; AVX2-FP-NEXT: vpbroadcastq (%r8), %ymm6847; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]848; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm5, %ymm6, %ymm5849; AVX2-FP-NEXT: vpsrlq $48, %xmm2, %xmm2850; AVX2-FP-NEXT: vpunpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm2[1]851; AVX2-FP-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]852; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,10,11,u,u,u,u,u,u,12,13,14,15,u,u]853; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]854; AVX2-FP-NEXT: vpbroadcastd 12(%r8), %xmm1855; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]856; AVX2-FP-NEXT: vmovdqa %xmm0, 64(%r9)857; AVX2-FP-NEXT: vmovdqa %ymm5, (%r9)858; AVX2-FP-NEXT: vmovdqa %ymm4, 32(%r9)859; AVX2-FP-NEXT: vzeroupper860; AVX2-FP-NEXT: retq861;862; AVX2-FCP-LABEL: store_i16_stride5_vf8:863; AVX2-FCP: # %bb.0:864; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm0865; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm1866; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm2867; AVX2-FCP-NEXT: vmovdqa (%rcx), %xmm3868; AVX2-FCP-NEXT: vmovdqa (%r8), %xmm4869; AVX2-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm5870; AVX2-FCP-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm6871; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm7 = [1,5,2,6,2,6,0,0]872; AVX2-FCP-NEXT: vpermd %ymm6, %ymm7, %ymm7873; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,ymm7[2,3,6,7,2,3],zero,zero,zero,zero,ymm7[8,9,12,13,16,17],zero,zero,zero,zero,ymm7[18,19,22,23,28,29],zero,zero,zero,zero874; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [5,2,6,0,2,6,3,7]875; AVX2-FCP-NEXT: vpermd %ymm5, %ymm8, %ymm8876; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm8[2,3],zero,zero,zero,zero,zero,zero,ymm8[4,5,8,9],zero,zero,zero,zero,zero,zero,ymm8[18,19,22,23],zero,zero,zero,zero,zero,zero,ymm8[24,25,28,29]877; AVX2-FCP-NEXT: vpor %ymm7, %ymm8, %ymm7878; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]879; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]880; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm7, %ymm4, %ymm4881; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]882; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,ymm6[0,1,8,9,12,13],zero,zero,zero,zero,ymm6[2,3,18,19,18,19],zero,zero,zero,zero,ymm6[28,29,20,21,28,29],zero,zero883; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,2,0,2]884; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[0,1,8,9],zero,zero,zero,zero,zero,zero,ymm5[2,3,10,11],zero,zero,zero,zero,zero,zero,ymm5[20,21,28,29],zero,zero,zero,zero,zero,zero,ymm5[22,23]885; AVX2-FCP-NEXT: vpor %ymm6, %ymm5, %ymm5886; AVX2-FCP-NEXT: vpbroadcastq (%r8), %ymm6887; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]888; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm5, %ymm6, %ymm5889; AVX2-FCP-NEXT: vpsrlq $48, %xmm1, %xmm1890; AVX2-FCP-NEXT: vpunpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]891; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]892; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[8,9,10,11,u,u,u,u,u,u,12,13,14,15,u,u]893; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]894; AVX2-FCP-NEXT: vpbroadcastd 12(%r8), %xmm1895; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]896; AVX2-FCP-NEXT: vmovdqa %xmm0, 64(%r9)897; AVX2-FCP-NEXT: vmovdqa %ymm5, (%r9)898; AVX2-FCP-NEXT: vmovdqa %ymm4, 32(%r9)899; AVX2-FCP-NEXT: vzeroupper900; AVX2-FCP-NEXT: retq901;902; AVX512-LABEL: store_i16_stride5_vf8:903; AVX512: # %bb.0:904; AVX512-NEXT: vmovdqa (%rdi), %xmm2905; AVX512-NEXT: vmovdqa (%rsi), %xmm3906; AVX512-NEXT: vmovdqa (%rdx), %xmm0907; AVX512-NEXT: vmovdqa (%rcx), %xmm1908; AVX512-NEXT: vmovdqa (%r8), %xmm4909; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm5910; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm5[2,3,0,1]911; AVX512-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,6,7,u,u,u,u,u,u,u,u,8,9,u,u,u,u,u,u,26,27,u,u,u,u,u,u,u,u]912; AVX512-NEXT: vpshufd {{.*#+}} ymm7 = ymm5[1,1,2,3,5,5,6,7]913; AVX512-NEXT: vpshufhw {{.*#+}} ymm7 = ymm7[0,1,2,3,5,5,4,7,8,9,10,11,13,13,12,15]914; AVX512-NEXT: vpblendw {{.*#+}} ymm6 = ymm7[0,1],ymm6[2,3],ymm7[4,5,6],ymm6[7],ymm7[8,9],ymm6[10,11],ymm7[12,13,14],ymm6[15]915; AVX512-NEXT: vmovdqa {{.*#+}} ymm7 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]916; AVX512-NEXT: vpandn %ymm6, %ymm7, %ymm6917; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,2,2,0]918; AVX512-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,zero,zero,ymm5[0,1,8,9,u,u],zero,zero,zero,zero,ymm5[2,3,18,19,u,u],zero,zero,zero,zero,ymm5[28,29,20,21,u,u],zero,zero919; AVX512-NEXT: vinserti64x4 $1, %ymm6, %zmm5, %zmm5920; AVX512-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm6921; AVX512-NEXT: vpshufhw {{.*#+}} ymm8 = ymm6[0,1,2,3,5,6,4,7,8,9,10,11,13,14,12,15]922; AVX512-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[0,2,3,2,4,6,7,6]923; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm6[2,3,0,1]924; AVX512-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[6,7,u,u,u,u,u,u,u,u,8,9,u,u,u,u,u,u,26,27,u,u,u,u,u,u,u,u,28,29,u,u]925; AVX512-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2],ymm9[3],ymm8[4],ymm9[5,6],ymm8[7],ymm9[8,9],ymm8[10],ymm9[11],ymm8[12],ymm9[13,14],ymm8[15]926; AVX512-NEXT: vpand %ymm7, %ymm8, %ymm7927; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,0,2]928; AVX512-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[0,1,8,9],zero,zero,zero,zero,ymm6[u,u,2,3,10,11],zero,zero,zero,zero,ymm6[u,u,20,21,28,29],zero,zero,zero,zero,ymm6[u,u,22,23]929; AVX512-NEXT: vinserti64x4 $1, %ymm7, %zmm6, %zmm6930; AVX512-NEXT: vporq %zmm5, %zmm6, %zmm5931; AVX512-NEXT: vpbroadcastq (%r8), %ymm6932; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]933; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm6, %zmm4934; AVX512-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm5))935; AVX512-NEXT: vpsrlq $48, %xmm3, %xmm3936; AVX512-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm3[1]937; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]938; AVX512-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,6]939; AVX512-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,1,3,3]940; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3,4],xmm0[5,6,7]941; AVX512-NEXT: vpbroadcastd 12(%r8), %xmm1942; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]943; AVX512-NEXT: vmovdqa %xmm0, 64(%r9)944; AVX512-NEXT: vmovdqa64 %zmm4, (%r9)945; AVX512-NEXT: vzeroupper946; AVX512-NEXT: retq947;948; AVX512-FCP-LABEL: store_i16_stride5_vf8:949; AVX512-FCP: # %bb.0:950; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm1951; AVX512-FCP-NEXT: vmovdqa (%rsi), %xmm2952; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm0953; AVX512-FCP-NEXT: vmovdqa (%rcx), %xmm3954; AVX512-FCP-NEXT: vmovdqa (%r8), %xmm4955; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [1,9,2,10,2,10,0,0]956; AVX512-FCP-NEXT: vpermi2d %ymm3, %ymm0, %ymm5957; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,ymm5[2,3,6,7,u,u],zero,zero,zero,zero,ymm5[8,9,12,13,u,u],zero,zero,zero,zero,ymm5[18,19,22,23,u,u],zero,zero,zero,zero958; AVX512-FCP-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm6959; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]960; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,ymm6[0,1,8,9,u,u],zero,zero,zero,zero,ymm6[2,3,18,19,u,u],zero,zero,zero,zero,ymm6[28,29,20,21,u,u],zero,zero961; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm6, %zmm5962; AVX512-FCP-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm6963; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm6[0,2,0,2]964; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[0,1,8,9],zero,zero,zero,zero,ymm7[u,u,2,3,10,11],zero,zero,zero,zero,ymm7[u,u,20,21,28,29],zero,zero,zero,zero,ymm7[u,u,22,23]965; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [5,2,6,0,2,6,3,7]966; AVX512-FCP-NEXT: vpermd %ymm6, %ymm8, %ymm6967; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[2,3],zero,zero,zero,zero,ymm6[u,u,4,5,8,9],zero,zero,zero,zero,ymm6[u,u,18,19,22,23],zero,zero,zero,zero,ymm6[u,u,24,25,28,29]968; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm7, %zmm6969; AVX512-FCP-NEXT: vporq %zmm5, %zmm6, %zmm5970; AVX512-FCP-NEXT: vpbroadcastq (%r8), %ymm6971; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]972; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm6, %zmm4973; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm5))974; AVX512-FCP-NEXT: vpsrlq $48, %xmm2, %xmm2975; AVX512-FCP-NEXT: vpunpckhqdq {{.*#+}} xmm1 = xmm1[1],xmm2[1]976; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]977; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,10,11,u,u,u,u,u,u,12,13,14,15,u,u]978; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3,4],xmm0[5,6,7]979; AVX512-FCP-NEXT: vpbroadcastd 12(%r8), %xmm1980; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]981; AVX512-FCP-NEXT: vmovdqa %xmm0, 64(%r9)982; AVX512-FCP-NEXT: vmovdqa64 %zmm4, (%r9)983; AVX512-FCP-NEXT: vzeroupper984; AVX512-FCP-NEXT: retq985;986; AVX512DQ-LABEL: store_i16_stride5_vf8:987; AVX512DQ: # %bb.0:988; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm2989; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm3990; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm0991; AVX512DQ-NEXT: vmovdqa (%rcx), %xmm1992; AVX512DQ-NEXT: vmovdqa (%r8), %xmm4993; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm5994; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm5[2,3,0,1]995; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,6,7,u,u,u,u,u,u,u,u,8,9,u,u,u,u,u,u,26,27,u,u,u,u,u,u,u,u]996; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm7 = ymm5[1,1,2,3,5,5,6,7]997; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm7 = ymm7[0,1,2,3,5,5,4,7,8,9,10,11,13,13,12,15]998; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm6 = ymm7[0,1],ymm6[2,3],ymm7[4,5,6],ymm6[7],ymm7[8,9],ymm6[10,11],ymm7[12,13,14],ymm6[15]999; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm7 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]1000; AVX512DQ-NEXT: vpandn %ymm6, %ymm7, %ymm61001; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,2,2,0]1002; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,zero,zero,ymm5[0,1,8,9,u,u],zero,zero,zero,zero,ymm5[2,3,18,19,u,u],zero,zero,zero,zero,ymm5[28,29,20,21,u,u],zero,zero1003; AVX512DQ-NEXT: vinserti64x4 $1, %ymm6, %zmm5, %zmm51004; AVX512DQ-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm61005; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm8 = ymm6[0,1,2,3,5,6,4,7,8,9,10,11,13,14,12,15]1006; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[0,2,3,2,4,6,7,6]1007; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm6[2,3,0,1]1008; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[6,7,u,u,u,u,u,u,u,u,8,9,u,u,u,u,u,u,26,27,u,u,u,u,u,u,u,u,28,29,u,u]1009; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2],ymm9[3],ymm8[4],ymm9[5,6],ymm8[7],ymm9[8,9],ymm8[10],ymm9[11],ymm8[12],ymm9[13,14],ymm8[15]1010; AVX512DQ-NEXT: vpand %ymm7, %ymm8, %ymm71011; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,0,2]1012; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[0,1,8,9],zero,zero,zero,zero,ymm6[u,u,2,3,10,11],zero,zero,zero,zero,ymm6[u,u,20,21,28,29],zero,zero,zero,zero,ymm6[u,u,22,23]1013; AVX512DQ-NEXT: vinserti64x4 $1, %ymm7, %zmm6, %zmm61014; AVX512DQ-NEXT: vporq %zmm5, %zmm6, %zmm51015; AVX512DQ-NEXT: vpbroadcastq (%r8), %ymm61016; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]1017; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm6, %zmm41018; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm5))1019; AVX512DQ-NEXT: vpsrlq $48, %xmm3, %xmm31020; AVX512DQ-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm3[1]1021; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]1022; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,6]1023; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,1,3,3]1024; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3,4],xmm0[5,6,7]1025; AVX512DQ-NEXT: vpbroadcastd 12(%r8), %xmm11026; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]1027; AVX512DQ-NEXT: vmovdqa %xmm0, 64(%r9)1028; AVX512DQ-NEXT: vmovdqa64 %zmm4, (%r9)1029; AVX512DQ-NEXT: vzeroupper1030; AVX512DQ-NEXT: retq1031;1032; AVX512DQ-FCP-LABEL: store_i16_stride5_vf8:1033; AVX512DQ-FCP: # %bb.0:1034; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm11035; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %xmm21036; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm01037; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %xmm31038; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %xmm41039; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [1,9,2,10,2,10,0,0]1040; AVX512DQ-FCP-NEXT: vpermi2d %ymm3, %ymm0, %ymm51041; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,ymm5[2,3,6,7,u,u],zero,zero,zero,zero,ymm5[8,9,12,13,u,u],zero,zero,zero,zero,ymm5[18,19,22,23,u,u],zero,zero,zero,zero1042; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm61043; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]1044; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,ymm6[0,1,8,9,u,u],zero,zero,zero,zero,ymm6[2,3,18,19,u,u],zero,zero,zero,zero,ymm6[28,29,20,21,u,u],zero,zero1045; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm6, %zmm51046; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm61047; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm6[0,2,0,2]1048; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[0,1,8,9],zero,zero,zero,zero,ymm7[u,u,2,3,10,11],zero,zero,zero,zero,ymm7[u,u,20,21,28,29],zero,zero,zero,zero,ymm7[u,u,22,23]1049; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [5,2,6,0,2,6,3,7]1050; AVX512DQ-FCP-NEXT: vpermd %ymm6, %ymm8, %ymm61051; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[2,3],zero,zero,zero,zero,ymm6[u,u,4,5,8,9],zero,zero,zero,zero,ymm6[u,u,18,19,22,23],zero,zero,zero,zero,ymm6[u,u,24,25,28,29]1052; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm7, %zmm61053; AVX512DQ-FCP-NEXT: vporq %zmm5, %zmm6, %zmm51054; AVX512DQ-FCP-NEXT: vpbroadcastq (%r8), %ymm61055; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]1056; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm6, %zmm41057; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm5))1058; AVX512DQ-FCP-NEXT: vpsrlq $48, %xmm2, %xmm21059; AVX512DQ-FCP-NEXT: vpunpckhqdq {{.*#+}} xmm1 = xmm1[1],xmm2[1]1060; AVX512DQ-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]1061; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,10,11,u,u,u,u,u,u,12,13,14,15,u,u]1062; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3,4],xmm0[5,6,7]1063; AVX512DQ-FCP-NEXT: vpbroadcastd 12(%r8), %xmm11064; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]1065; AVX512DQ-FCP-NEXT: vmovdqa %xmm0, 64(%r9)1066; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, (%r9)1067; AVX512DQ-FCP-NEXT: vzeroupper1068; AVX512DQ-FCP-NEXT: retq1069;1070; AVX512BW-LABEL: store_i16_stride5_vf8:1071; AVX512BW: # %bb.0:1072; AVX512BW-NEXT: vmovdqa (%rdi), %xmm01073; AVX512BW-NEXT: vmovdqa (%rdx), %xmm11074; AVX512BW-NEXT: vmovdqa (%r8), %xmm21075; AVX512BW-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11076; AVX512BW-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01077; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm01078; AVX512BW-NEXT: vpmovsxbw {{.*#+}} xmm1 = [22,30,38,7,15,23,31,39]1079; AVX512BW-NEXT: vpermi2w %zmm2, %zmm0, %zmm11080; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm3 = [0,8,16,24,32,1,9,17,25,33,2,10,18,26,34,3,11,19,27,35,4,12,20,28,36,5,13,21,29,37,6,14]1081; AVX512BW-NEXT: vpermi2w %zmm2, %zmm0, %zmm31082; AVX512BW-NEXT: vmovdqa64 %zmm3, (%r9)1083; AVX512BW-NEXT: vmovdqa %xmm1, 64(%r9)1084; AVX512BW-NEXT: vzeroupper1085; AVX512BW-NEXT: retq1086;1087; AVX512BW-FCP-LABEL: store_i16_stride5_vf8:1088; AVX512BW-FCP: # %bb.0:1089; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm01090; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm11091; AVX512BW-FCP-NEXT: vmovdqa (%r8), %xmm21092; AVX512BW-FCP-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11093; AVX512BW-FCP-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01094; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm01095; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm1 = [22,30,38,7,15,23,31,39]1096; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm0, %zmm11097; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm3 = [0,8,16,24,32,1,9,17,25,33,2,10,18,26,34,3,11,19,27,35,4,12,20,28,36,5,13,21,29,37,6,14]1098; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm0, %zmm31099; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, (%r9)1100; AVX512BW-FCP-NEXT: vmovdqa %xmm1, 64(%r9)1101; AVX512BW-FCP-NEXT: vzeroupper1102; AVX512BW-FCP-NEXT: retq1103;1104; AVX512DQ-BW-LABEL: store_i16_stride5_vf8:1105; AVX512DQ-BW: # %bb.0:1106; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm01107; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm11108; AVX512DQ-BW-NEXT: vmovdqa (%r8), %xmm21109; AVX512DQ-BW-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11110; AVX512DQ-BW-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01111; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm01112; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} xmm1 = [22,30,38,7,15,23,31,39]1113; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm0, %zmm11114; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm3 = [0,8,16,24,32,1,9,17,25,33,2,10,18,26,34,3,11,19,27,35,4,12,20,28,36,5,13,21,29,37,6,14]1115; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm0, %zmm31116; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, (%r9)1117; AVX512DQ-BW-NEXT: vmovdqa %xmm1, 64(%r9)1118; AVX512DQ-BW-NEXT: vzeroupper1119; AVX512DQ-BW-NEXT: retq1120;1121; AVX512DQ-BW-FCP-LABEL: store_i16_stride5_vf8:1122; AVX512DQ-BW-FCP: # %bb.0:1123; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm01124; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm11125; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r8), %xmm21126; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11127; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01128; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm01129; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm1 = [22,30,38,7,15,23,31,39]1130; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm0, %zmm11131; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm3 = [0,8,16,24,32,1,9,17,25,33,2,10,18,26,34,3,11,19,27,35,4,12,20,28,36,5,13,21,29,37,6,14]1132; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm0, %zmm31133; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, (%r9)1134; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm1, 64(%r9)1135; AVX512DQ-BW-FCP-NEXT: vzeroupper1136; AVX512DQ-BW-FCP-NEXT: retq1137 %in.vec0 = load <8 x i16>, ptr %in.vecptr0, align 641138 %in.vec1 = load <8 x i16>, ptr %in.vecptr1, align 641139 %in.vec2 = load <8 x i16>, ptr %in.vecptr2, align 641140 %in.vec3 = load <8 x i16>, ptr %in.vecptr3, align 641141 %in.vec4 = load <8 x i16>, ptr %in.vecptr4, align 641142 %1 = shufflevector <8 x i16> %in.vec0, <8 x i16> %in.vec1, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>1143 %2 = shufflevector <8 x i16> %in.vec2, <8 x i16> %in.vec3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>1144 %3 = shufflevector <16 x i16> %1, <16 x i16> %2, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>1145 %4 = shufflevector <8 x i16> %in.vec4, <8 x i16> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1146 %5 = shufflevector <32 x i16> %3, <32 x i16> %4, <40 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39>1147 %interleaved.vec = shufflevector <40 x i16> %5, <40 x i16> poison, <40 x i32> <i32 0, i32 8, i32 16, i32 24, i32 32, i32 1, i32 9, i32 17, i32 25, i32 33, i32 2, i32 10, i32 18, i32 26, i32 34, i32 3, i32 11, i32 19, i32 27, i32 35, i32 4, i32 12, i32 20, i32 28, i32 36, i32 5, i32 13, i32 21, i32 29, i32 37, i32 6, i32 14, i32 22, i32 30, i32 38, i32 7, i32 15, i32 23, i32 31, i32 39>1148 store <40 x i16> %interleaved.vec, ptr %out.vec, align 641149 ret void1150}1151 1152define void @store_i16_stride5_vf16(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {1153; SSE-LABEL: store_i16_stride5_vf16:1154; SSE: # %bb.0:1155; SSE-NEXT: movdqa (%rdi), %xmm151156; SSE-NEXT: movdqa 16(%rdi), %xmm51157; SSE-NEXT: movdqa (%rsi), %xmm81158; SSE-NEXT: movdqa 16(%rsi), %xmm01159; SSE-NEXT: movdqa 16(%rdx), %xmm101160; SSE-NEXT: movdqa (%rcx), %xmm141161; SSE-NEXT: movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1162; SSE-NEXT: movdqa 16(%rcx), %xmm111163; SSE-NEXT: movdqa 16(%r8), %xmm31164; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,0,65535,65535,65535]1165; SSE-NEXT: movdqa %xmm1, %xmm21166; SSE-NEXT: pandn %xmm5, %xmm21167; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm0[3,3,3,3,4,5,6,7]1168; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,4,4]1169; SSE-NEXT: pand %xmm1, %xmm41170; SSE-NEXT: por %xmm2, %xmm41171; SSE-NEXT: movdqa {{.*#+}} xmm12 = [0,65535,65535,65535,0,0,65535,65535]1172; SSE-NEXT: movdqa %xmm12, %xmm61173; SSE-NEXT: pandn %xmm4, %xmm61174; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm10[1,1,2,2]1175; SSE-NEXT: movdqa {{.*#+}} xmm9 = [65535,65535,0,65535,65535,65535,65535,0]1176; SSE-NEXT: pand %xmm9, %xmm41177; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm11[3,3,3,3,4,5,6,7]1178; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]1179; SSE-NEXT: movdqa %xmm9, %xmm131180; SSE-NEXT: pandn %xmm7, %xmm131181; SSE-NEXT: por %xmm4, %xmm131182; SSE-NEXT: pand %xmm12, %xmm131183; SSE-NEXT: por %xmm6, %xmm131184; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,65535,65535,65535,65535]1185; SSE-NEXT: pand %xmm2, %xmm131186; SSE-NEXT: movdqa %xmm2, %xmm11187; SSE-NEXT: pandn %xmm3, %xmm11188; SSE-NEXT: por %xmm13, %xmm11189; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1190; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,0,65535,65535,65535]1191; SSE-NEXT: movdqa %xmm1, %xmm71192; SSE-NEXT: pandn %xmm15, %xmm71193; SSE-NEXT: movdqa %xmm15, %xmm61194; SSE-NEXT: pshuflw {{.*#+}} xmm13 = xmm8[3,3,3,3,4,5,6,7]1195; SSE-NEXT: pshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,4,4,4]1196; SSE-NEXT: pand %xmm1, %xmm131197; SSE-NEXT: por %xmm7, %xmm131198; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm14[3,3,3,3,4,5,6,7]1199; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]1200; SSE-NEXT: movdqa %xmm9, %xmm141201; SSE-NEXT: pandn %xmm7, %xmm141202; SSE-NEXT: movdqa (%rdx), %xmm41203; SSE-NEXT: pshufd {{.*#+}} xmm15 = xmm4[1,1,2,2]1204; SSE-NEXT: pand %xmm9, %xmm151205; SSE-NEXT: por %xmm15, %xmm141206; SSE-NEXT: pand %xmm12, %xmm141207; SSE-NEXT: pandn %xmm13, %xmm121208; SSE-NEXT: movdqa (%r8), %xmm11209; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1210; SSE-NEXT: por %xmm14, %xmm121211; SSE-NEXT: pand %xmm2, %xmm121212; SSE-NEXT: pandn %xmm1, %xmm21213; SSE-NEXT: por %xmm12, %xmm21214; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1215; SSE-NEXT: movdqa %xmm5, %xmm121216; SSE-NEXT: movdqa %xmm5, %xmm131217; SSE-NEXT: punpckhwd {{.*#+}} xmm13 = xmm13[4],xmm0[4],xmm13[5],xmm0[5],xmm13[6],xmm0[6],xmm13[7],xmm0[7]1218; SSE-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3]1219; SSE-NEXT: psrlq $48, %xmm01220; SSE-NEXT: punpckhqdq {{.*#+}} xmm12 = xmm12[1],xmm0[1]1221; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,0,0,65535,65535,65535]1222; SSE-NEXT: movdqa %xmm1, %xmm141223; SSE-NEXT: pandn %xmm12, %xmm141224; SSE-NEXT: movdqa %xmm10, %xmm151225; SSE-NEXT: punpckhwd {{.*#+}} xmm15 = xmm15[4],xmm11[4],xmm15[5],xmm11[5],xmm15[6],xmm11[6],xmm15[7],xmm11[7]1226; SSE-NEXT: pshufhw {{.*#+}} xmm12 = xmm15[0,1,2,3,4,5,7,6]1227; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm12[2,1,3,3]1228; SSE-NEXT: pand %xmm1, %xmm01229; SSE-NEXT: por %xmm14, %xmm01230; SSE-NEXT: pand %xmm9, %xmm01231; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm3[2,3,2,3]1232; SSE-NEXT: movdqa %xmm9, %xmm71233; SSE-NEXT: pandn %xmm2, %xmm71234; SSE-NEXT: por %xmm0, %xmm71235; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1236; SSE-NEXT: pslldq {{.*#+}} xmm15 = zero,zero,xmm15[0,1,2,3,4,5,6,7,8,9,10,11,12,13]1237; SSE-NEXT: movdqa %xmm1, %xmm01238; SSE-NEXT: pandn %xmm15, %xmm01239; SSE-NEXT: pshuflw {{.*#+}} xmm13 = xmm13[0,2,3,3,4,5,6,7]1240; SSE-NEXT: pshufd {{.*#+}} xmm13 = xmm13[0,1,2,2]1241; SSE-NEXT: pand %xmm1, %xmm131242; SSE-NEXT: por %xmm0, %xmm131243; SSE-NEXT: movdqa {{.*#+}} xmm15 = [0,65535,65535,65535,65535,0,65535,65535]1244; SSE-NEXT: movdqa %xmm15, %xmm141245; SSE-NEXT: pandn %xmm2, %xmm141246; SSE-NEXT: pand %xmm15, %xmm131247; SSE-NEXT: por %xmm13, %xmm141248; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm5[0,1,2,3,4,5,6,6]1249; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]1250; SSE-NEXT: movdqa %xmm11, %xmm21251; SSE-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm10[0],xmm2[1],xmm10[1],xmm2[2],xmm10[2],xmm2[3],xmm10[3]1252; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[2,2,2,2,4,5,6,7]1253; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,4,6,7]1254; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]1255; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]1256; SSE-NEXT: movdqa {{.*#+}} xmm13 = [65535,0,65535,65535,65535,65535,0,65535]1257; SSE-NEXT: pand %xmm13, %xmm21258; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,1,0,1]1259; SSE-NEXT: movdqa %xmm13, %xmm121260; SSE-NEXT: pandn %xmm0, %xmm121261; SSE-NEXT: por %xmm2, %xmm121262; SSE-NEXT: punpcklwd {{.*#+}} xmm10 = xmm10[0],xmm11[0],xmm10[1],xmm11[1],xmm10[2],xmm11[2],xmm10[3],xmm11[3]1263; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm10[0,1,2,2,4,5,6,7]1264; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,2,1]1265; SSE-NEXT: movdqa {{.*#+}} xmm10 = [65535,65535,0,0,65535,65535,65535,0]1266; SSE-NEXT: movdqa %xmm10, %xmm111267; SSE-NEXT: pandn %xmm2, %xmm111268; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm5[0,1,3,2,4,5,6,7]1269; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,1,1]1270; SSE-NEXT: pand %xmm10, %xmm21271; SSE-NEXT: por %xmm11, %xmm21272; SSE-NEXT: movdqa {{.*#+}} xmm3 = [65535,65535,65535,65535,0,65535,65535,65535]1273; SSE-NEXT: movdqa %xmm3, %xmm71274; SSE-NEXT: pandn %xmm0, %xmm71275; SSE-NEXT: pand %xmm3, %xmm21276; SSE-NEXT: por %xmm2, %xmm71277; SSE-NEXT: movdqa %xmm6, %xmm111278; SSE-NEXT: punpckhwd {{.*#+}} xmm11 = xmm11[4],xmm8[4],xmm11[5],xmm8[5],xmm11[6],xmm8[6],xmm11[7],xmm8[7]1279; SSE-NEXT: movdqa %xmm6, %xmm01280; SSE-NEXT: punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],xmm8[3]1281; SSE-NEXT: psrlq $48, %xmm81282; SSE-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm8[1]1283; SSE-NEXT: movdqa %xmm1, %xmm21284; SSE-NEXT: pandn %xmm0, %xmm21285; SSE-NEXT: movdqa %xmm4, %xmm01286; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload1287; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]1288; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm0[0,1,2,3,4,5,7,6]1289; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm8[2,1,3,3]1290; SSE-NEXT: pand %xmm1, %xmm81291; SSE-NEXT: por %xmm2, %xmm81292; SSE-NEXT: pand %xmm9, %xmm81293; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload1294; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm5[2,3,2,3]1295; SSE-NEXT: pandn %xmm2, %xmm91296; SSE-NEXT: por %xmm8, %xmm91297; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]1298; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm11[0,2,3,3,4,5,6,7]1299; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm8[0,1,2,2]1300; SSE-NEXT: pand %xmm1, %xmm81301; SSE-NEXT: pandn %xmm0, %xmm11302; SSE-NEXT: por %xmm8, %xmm11303; SSE-NEXT: pand %xmm15, %xmm11304; SSE-NEXT: pandn %xmm2, %xmm151305; SSE-NEXT: por %xmm1, %xmm151306; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm6[0,1,2,3,4,5,6,6]1307; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]1308; SSE-NEXT: movdqa %xmm3, %xmm11309; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3]1310; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,2,2,2,4,5,6,7]1311; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,4,6,7]1312; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]1313; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]1314; SSE-NEXT: pand %xmm13, %xmm11315; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,1,0,1]1316; SSE-NEXT: pandn %xmm0, %xmm131317; SSE-NEXT: por %xmm1, %xmm131318; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]1319; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm4[0,1,2,2,4,5,6,7]1320; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,0,2,1]1321; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm6[0,1,3,2,4,5,6,7]1322; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,1,1]1323; SSE-NEXT: pand %xmm10, %xmm21324; SSE-NEXT: pandn %xmm1, %xmm101325; SSE-NEXT: por %xmm2, %xmm101326; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,0,65535,65535,65535]1327; SSE-NEXT: pand %xmm1, %xmm101328; SSE-NEXT: pandn %xmm0, %xmm11329; SSE-NEXT: por %xmm10, %xmm11330; SSE-NEXT: movdqa %xmm1, (%r9)1331; SSE-NEXT: movdqa %xmm13, 16(%r9)1332; SSE-NEXT: movdqa %xmm15, 48(%r9)1333; SSE-NEXT: movdqa %xmm9, 64(%r9)1334; SSE-NEXT: movdqa %xmm7, 80(%r9)1335; SSE-NEXT: movdqa %xmm12, 96(%r9)1336; SSE-NEXT: movdqa %xmm14, 128(%r9)1337; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1338; SSE-NEXT: movaps %xmm0, 144(%r9)1339; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1340; SSE-NEXT: movaps %xmm0, 32(%r9)1341; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1342; SSE-NEXT: movaps %xmm0, 112(%r9)1343; SSE-NEXT: retq1344;1345; AVX-LABEL: store_i16_stride5_vf16:1346; AVX: # %bb.0:1347; AVX-NEXT: vmovdqa (%rcx), %xmm21348; AVX-NEXT: vmovdqa 16(%rcx), %xmm91349; AVX-NEXT: vmovdqa (%rdx), %xmm51350; AVX-NEXT: vmovdqa 16(%rdx), %xmm101351; AVX-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm10[4],xmm9[4],xmm10[5],xmm9[5],xmm10[6],xmm9[6],xmm10[7],xmm9[7]1352; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]1353; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,6]1354; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,1,3,3]1355; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm01356; AVX-NEXT: vmovaps {{.*#+}} ymm6 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535]1357; AVX-NEXT: vandnps %ymm0, %ymm6, %ymm01358; AVX-NEXT: vmovdqa (%rdi), %xmm31359; AVX-NEXT: vmovdqa 16(%rdi), %xmm81360; AVX-NEXT: vmovdqa (%rsi), %xmm41361; AVX-NEXT: vmovdqa 16(%rsi), %xmm121362; AVX-NEXT: vpsrlq $48, %xmm12, %xmm11363; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm1 = xmm8[1],xmm1[1]1364; AVX-NEXT: vpunpckhwd {{.*#+}} xmm7 = xmm8[4],xmm12[4],xmm8[5],xmm12[5],xmm8[6],xmm12[6],xmm8[7],xmm12[7]1365; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[0,2,3,3,4,5,6,7]1366; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,1,2,2]1367; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm7, %ymm11368; AVX-NEXT: vandps %ymm6, %ymm1, %ymm11369; AVX-NEXT: vorps %ymm0, %ymm1, %ymm11370; AVX-NEXT: vextractf128 $1, %ymm1, %xmm01371; AVX-NEXT: vmovdqa 16(%r8), %xmm111372; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm11[2,3,2,3]1373; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm7[2],xmm0[3,4,5,6],xmm7[7]1374; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1375; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm7[0],xmm1[1,2,3,4],xmm7[5],xmm1[6,7]1376; AVX-NEXT: vpsrlq $48, %xmm4, %xmm71377; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm7 = xmm3[1],xmm7[1]1378; AVX-NEXT: vpunpcklwd {{.*#+}} xmm13 = xmm8[0],xmm12[0],xmm8[1],xmm12[1],xmm8[2],xmm12[2],xmm8[3],xmm12[3]1379; AVX-NEXT: vpshuflw {{.*#+}} xmm14 = xmm13[0,1,3,2,4,5,6,7]1380; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm14[0,1,1,1]1381; AVX-NEXT: vinsertf128 $1, %xmm14, %ymm7, %ymm141382; AVX-NEXT: vpunpckhwd {{.*#+}} xmm7 = xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]1383; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm7[0,1,2,3,4,5,7,6]1384; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm15[2,1,3,3]1385; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3]1386; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]1387; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]1388; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm15, %ymm01389; AVX-NEXT: vandnps %ymm14, %ymm6, %ymm141390; AVX-NEXT: vandps %ymm6, %ymm0, %ymm01391; AVX-NEXT: vorps %ymm0, %ymm14, %ymm61392; AVX-NEXT: vextractf128 $1, %ymm6, %xmm01393; AVX-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[3,3,3,3,4,5,6,7]1394; AVX-NEXT: vpshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,4,4,4]1395; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm12[0,1,2,3],xmm8[4],xmm12[5,6,7]1396; AVX-NEXT: vpshufhw {{.*#+}} xmm12 = xmm13[0,1,2,3,4,5,6,6]1397; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm12[0,2,2,3]1398; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm12, %ymm121399; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm10[1,1,2,2]1400; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm9[3,3,3,3,4,5,6,7]1401; AVX-NEXT: vpshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,4,4,4]1402; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm8[0,1],xmm13[2],xmm8[3,4,5,6],xmm13[7]1403; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm11[0,1,0,1]1404; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm0[0,1,2,3],xmm14[4],xmm0[5,6,7]1405; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm9[0],xmm10[0],xmm9[1],xmm10[1],xmm9[2],xmm10[2],xmm9[3],xmm10[3]1406; AVX-NEXT: vmovaps {{.*#+}} ymm15 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]1407; AVX-NEXT: vandnps %ymm12, %ymm15, %ymm91408; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,2,2,2,4,5,6,7]1409; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,4,6,7]1410; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm0, %ymm01411; AVX-NEXT: vandps %ymm0, %ymm15, %ymm01412; AVX-NEXT: vorps %ymm0, %ymm9, %ymm01413; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm0[0],xmm14[1],xmm0[2,3,4,5],xmm14[6],xmm0[7]1414; AVX-NEXT: vextractf128 $1, %ymm0, %xmm01415; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm0[0,1,2],xmm11[3],xmm0[4,5,6,7]1416; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3]1417; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]1418; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]1419; AVX-NEXT: vpunpcklwd {{.*#+}} xmm11 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3]1420; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm11[1,1,2,3]1421; AVX-NEXT: vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,5,4,6,7]1422; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm0, %ymm01423; AVX-NEXT: vpunpcklwd {{.*#+}} xmm11 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]1424; AVX-NEXT: vpshuflw {{.*#+}} xmm12 = xmm11[0,1,3,2,4,5,6,7]1425; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm12[0,1,1,1]1426; AVX-NEXT: vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,5,6,6]1427; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm11[0,2,2,3]1428; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm12, %ymm121429; AVX-NEXT: vmovdqa (%r8), %xmm111430; AVX-NEXT: vandnps %ymm0, %ymm15, %ymm01431; AVX-NEXT: vandps %ymm15, %ymm12, %ymm121432; AVX-NEXT: vorps %ymm0, %ymm12, %ymm01433; AVX-NEXT: vextractf128 $1, %ymm0, %xmm121434; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm11[0,1,0,1]1435; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0],xmm13[1],xmm12[2,3,4,5],xmm13[6],xmm12[7]1436; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm13[4],xmm0[5,6,7]1437; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[1,1,2,2]1438; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[3,3,3,3,4,5,6,7]1439; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,4,4]1440; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm5[0,1],xmm2[2],xmm5[3,4,5,6],xmm2[7]1441; AVX-NEXT: vpslldq {{.*#+}} xmm5 = zero,zero,xmm7[0,1,2,3,4,5,6,7,8,9,10,11,12,13]1442; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm2, %ymm21443; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm4[3,3,3,3,4,5,6,7]1444; AVX-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]1445; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3],xmm3[4],xmm5[5,6,7]1446; AVX-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]1447; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,2,3,3,4,5,6,7]1448; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,2,2]1449; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm5, %ymm31450; AVX-NEXT: vmovaps {{.*#+}} ymm4 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]1451; AVX-NEXT: vandnps %ymm2, %ymm4, %ymm21452; AVX-NEXT: vandps %ymm4, %ymm3, %ymm31453; AVX-NEXT: vorps %ymm2, %ymm3, %ymm21454; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm11[2,3,2,3]1455; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm6[0,1],xmm3[2],xmm6[3,4,5,6],xmm3[7]1456; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm2[0,1,2],xmm11[3],xmm2[4,5,6,7]1457; AVX-NEXT: vextractf128 $1, %ymm2, %xmm21458; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0],xmm2[1,2,3,4],xmm3[5],xmm2[6,7]1459; AVX-NEXT: vmovdqa %xmm2, 48(%r9)1460; AVX-NEXT: vmovdqa %xmm5, 32(%r9)1461; AVX-NEXT: vmovdqa %xmm0, (%r9)1462; AVX-NEXT: vmovdqa %xmm12, 16(%r9)1463; AVX-NEXT: vmovdqa %xmm10, 112(%r9)1464; AVX-NEXT: vmovdqa %xmm9, 96(%r9)1465; AVX-NEXT: vmovdqa %xmm4, 64(%r9)1466; AVX-NEXT: vmovdqa %xmm8, 80(%r9)1467; AVX-NEXT: vmovdqa %xmm1, 128(%r9)1468; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1469; AVX-NEXT: vmovaps %xmm0, 144(%r9)1470; AVX-NEXT: vzeroupper1471; AVX-NEXT: retq1472;1473; AVX2-LABEL: store_i16_stride5_vf16:1474; AVX2: # %bb.0:1475; AVX2-NEXT: vmovdqa (%rdi), %ymm01476; AVX2-NEXT: vmovdqa (%rsi), %ymm21477; AVX2-NEXT: vmovdqa (%rdx), %ymm31478; AVX2-NEXT: vmovdqa (%rcx), %ymm41479; AVX2-NEXT: vmovdqa (%r8), %ymm11480; AVX2-NEXT: vmovdqa (%rdx), %xmm71481; AVX2-NEXT: vmovdqa (%rcx), %xmm81482; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]1483; AVX2-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]1484; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]1485; AVX2-NEXT: vmovdqa (%rsi), %xmm91486; AVX2-NEXT: vmovdqa (%rdi), %xmm61487; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm6[0],xmm9[0],xmm6[1],xmm9[1],xmm6[2],xmm9[2],xmm6[3],xmm9[3]1488; AVX2-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[0,2,1,3]1489; AVX2-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,5,6]1490; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]1491; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]1492; AVX2-NEXT: vpblendvb %ymm10, %ymm6, %ymm5, %ymm51493; AVX2-NEXT: vpbroadcastq (%r8), %ymm61494; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]1495; AVX2-NEXT: vpblendvb %ymm10, %ymm5, %ymm6, %ymm51496; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm3[1,1,1,2,5,5,5,6]1497; AVX2-NEXT: vpshufb {{.*#+}} ymm10 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,u,u,22,23,22,23,u,u,20,21,u,u,24,25]1498; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm10[0],ymm6[1],ymm10[2,3],ymm6[4],ymm10[5],ymm6[6],ymm10[7,8],ymm6[9],ymm10[10,11],ymm6[12],ymm10[13],ymm6[14],ymm10[15]1499; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,3,2,3]1500; AVX2-NEXT: vpshufd {{.*#+}} ymm10 = ymm0[0,1,2,1,4,5,6,5]1501; AVX2-NEXT: vpshuflw {{.*#+}} ymm11 = ymm2[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]1502; AVX2-NEXT: vpshufhw {{.*#+}} ymm11 = ymm11[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]1503; AVX2-NEXT: vpblendw {{.*#+}} ymm10 = ymm11[0,1],ymm10[2],ymm11[3],ymm10[4],ymm11[5,6],ymm10[7],ymm11[8,9],ymm10[10],ymm11[11],ymm10[12],ymm11[13,14],ymm10[15]1504; AVX2-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,3,2,3]1505; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]1506; AVX2-NEXT: vpblendvb %ymm11, %ymm6, %ymm10, %ymm61507; AVX2-NEXT: vpbroadcastq 16(%r8), %ymm101508; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]1509; AVX2-NEXT: vpblendvb %ymm11, %ymm6, %ymm10, %ymm61510; AVX2-NEXT: vpbroadcastq 8(%rdi), %xmm101511; AVX2-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]1512; AVX2-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0],xmm10[1],xmm9[2,3],xmm10[4],xmm9[5],xmm10[6],xmm9[7]1513; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]1514; AVX2-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[1,2,2,2]1515; AVX2-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]1516; AVX2-NEXT: vpblendw {{.*#+}} xmm7 = xmm8[0],xmm7[1],xmm8[2],xmm7[3],xmm8[4,5],xmm7[6],xmm8[7]1517; AVX2-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,0,0]1518; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]1519; AVX2-NEXT: vpblendvb %ymm8, %ymm9, %ymm7, %ymm71520; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm1[0,1,1,1]1521; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]1522; AVX2-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm71523; AVX2-NEXT: vpshufd {{.*#+}} ymm8 = ymm0[2,3,2,3,6,7,6,7]1524; AVX2-NEXT: vpshufhw {{.*#+}} ymm9 = ymm2[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]1525; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,3,2,2,6,7,6,6]1526; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2],ymm8[3],ymm9[4,5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10],ymm8[11],ymm9[12,13],ymm8[14],ymm9[15]1527; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,3,2,2]1528; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm3[3,2,3,3,7,6,7,7]1529; AVX2-NEXT: vpshufhw {{.*#+}} ymm10 = ymm4[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]1530; AVX2-NEXT: vpshufd {{.*#+}} ymm10 = ymm10[2,3,2,3,6,7,6,7]1531; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0],ymm9[1],ymm10[2],ymm9[3,4],ymm10[5,6,7,8],ymm9[9],ymm10[10],ymm9[11,12],ymm10[13,14,15]1532; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,2]1533; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0]1534; AVX2-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm81535; AVX2-NEXT: vpbroadcastq 24(%r8), %ymm91536; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]1537; AVX2-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm81538; AVX2-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]1539; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[3,0,3,0,7,4,7,4]1540; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2],ymm4[3],ymm3[4,5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10],ymm4[11],ymm3[12,13],ymm4[14],ymm3[15]1541; AVX2-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]1542; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,1,2,2]1543; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]1544; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]1545; AVX2-NEXT: vpblendvb %ymm2, %ymm3, %ymm0, %ymm01546; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,1,2,2]1547; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]1548; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm01549; AVX2-NEXT: vmovdqa %ymm0, 64(%r9)1550; AVX2-NEXT: vmovdqa %ymm8, 128(%r9)1551; AVX2-NEXT: vmovdqa %ymm7, 32(%r9)1552; AVX2-NEXT: vmovdqa %ymm6, 96(%r9)1553; AVX2-NEXT: vmovdqa %ymm5, (%r9)1554; AVX2-NEXT: vzeroupper1555; AVX2-NEXT: retq1556;1557; AVX2-FP-LABEL: store_i16_stride5_vf16:1558; AVX2-FP: # %bb.0:1559; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm01560; AVX2-FP-NEXT: vmovdqa (%rsi), %ymm21561; AVX2-FP-NEXT: vmovdqa (%rdx), %ymm31562; AVX2-FP-NEXT: vmovdqa (%rcx), %ymm41563; AVX2-FP-NEXT: vmovdqa (%r8), %ymm11564; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm61565; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm51566; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3]1567; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]1568; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]1569; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm71570; AVX2-FP-NEXT: vmovdqa (%rcx), %xmm81571; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm9 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]1572; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]1573; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]1574; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]1575; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm5, %ymm9, %ymm51576; AVX2-FP-NEXT: vpbroadcastq (%r8), %ymm91577; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]1578; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm5, %ymm9, %ymm51579; AVX2-FP-NEXT: vpbroadcastq 8(%rdi), %xmm91580; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]1581; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0],xmm9[1],xmm6[2,3],xmm9[4],xmm6[5],xmm9[6],xmm6[7]1582; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]1583; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[1,2,2,2]1584; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]1585; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm7 = xmm8[0],xmm7[1],xmm8[2],xmm7[3],xmm8[4,5],xmm7[6],xmm8[7]1586; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,0,0]1587; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]1588; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm6, %ymm7, %ymm61589; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm1[0,1,1,1]1590; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]1591; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm6, %ymm7, %ymm61592; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm7 = ymm3[1,1,1,2,5,5,5,6]1593; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm8 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,u,u,22,23,22,23,u,u,20,21,u,u,24,25]1594; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm7 = ymm8[0],ymm7[1],ymm8[2,3],ymm7[4],ymm8[5],ymm7[6],ymm8[7,8],ymm7[9],ymm8[10,11],ymm7[12],ymm8[13],ymm7[14],ymm8[15]1595; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,3,2,3]1596; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm8 = ymm0[0,1,2,1,4,5,6,5]1597; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,18,19,u,u,20,21,u,u,24,25,24,25,u,u]1598; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2],ymm9[3],ymm8[4],ymm9[5,6],ymm8[7],ymm9[8,9],ymm8[10],ymm9[11],ymm8[12],ymm9[13,14],ymm8[15]1599; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,3,2,3]1600; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]1601; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm71602; AVX2-FP-NEXT: vpbroadcastq 16(%r8), %ymm81603; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]1604; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm71605; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm8 = ymm0[2,3,2,3,6,7,6,7]1606; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,30,31,u,u,26,27,u,u,30,31,28,29,u,u,28,29]1607; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2],ymm8[3],ymm9[4,5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10],ymm8[11],ymm9[12,13],ymm8[14],ymm9[15]1608; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,3,2,2]1609; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm9 = ymm3[3,2,3,3,7,6,7,7]1610; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm10 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,u,u,30,31,u,u,u,u,28,29,30,31,30,31]1611; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0],ymm9[1],ymm10[2],ymm9[3,4],ymm10[5,6,7,8],ymm9[9],ymm10[10],ymm9[11,12],ymm10[13,14,15]1612; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,2]1613; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0]1614; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm81615; AVX2-FP-NEXT: vpbroadcastq 24(%r8), %ymm91616; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]1617; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm81618; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]1619; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[3,0,3,0,7,4,7,4]1620; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2],ymm4[3],ymm3[4,5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10],ymm4[11],ymm3[12,13],ymm4[14],ymm3[15]1621; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]1622; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,1,2,2]1623; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]1624; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]1625; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm3, %ymm0, %ymm01626; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,1,2,2]1627; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]1628; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm01629; AVX2-FP-NEXT: vmovdqa %ymm0, 64(%r9)1630; AVX2-FP-NEXT: vmovdqa %ymm8, 128(%r9)1631; AVX2-FP-NEXT: vmovdqa %ymm7, 96(%r9)1632; AVX2-FP-NEXT: vmovdqa %ymm6, 32(%r9)1633; AVX2-FP-NEXT: vmovdqa %ymm5, (%r9)1634; AVX2-FP-NEXT: vzeroupper1635; AVX2-FP-NEXT: retq1636;1637; AVX2-FCP-LABEL: store_i16_stride5_vf16:1638; AVX2-FCP: # %bb.0:1639; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm01640; AVX2-FCP-NEXT: vmovdqa (%rsi), %ymm21641; AVX2-FCP-NEXT: vmovdqa (%rdx), %ymm31642; AVX2-FCP-NEXT: vmovdqa (%rcx), %ymm41643; AVX2-FCP-NEXT: vmovdqa (%r8), %ymm11644; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm61645; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm51646; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3]1647; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]1648; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]1649; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm71650; AVX2-FCP-NEXT: vmovdqa (%rcx), %xmm81651; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm9 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]1652; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]1653; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]1654; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]1655; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm5, %ymm9, %ymm51656; AVX2-FCP-NEXT: vpbroadcastq (%r8), %ymm91657; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]1658; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm5, %ymm9, %ymm51659; AVX2-FCP-NEXT: vpbroadcastq 8(%rdi), %xmm91660; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]1661; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0],xmm9[1],xmm6[2,3],xmm9[4],xmm6[5],xmm9[6],xmm6[7]1662; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]1663; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[1,2,2,2]1664; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]1665; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm8[0],xmm7[1],xmm8[2],xmm7[3],xmm8[4,5],xmm7[6],xmm8[7]1666; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,0,0]1667; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]1668; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm6, %ymm7, %ymm61669; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm1[0,1,1,1]1670; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]1671; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm6, %ymm7, %ymm61672; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm7 = ymm3[1,1,1,2,5,5,5,6]1673; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,u,u,22,23,22,23,u,u,20,21,u,u,24,25]1674; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm8[0],ymm7[1],ymm8[2,3],ymm7[4],ymm8[5],ymm7[6],ymm8[7,8],ymm7[9],ymm8[10,11],ymm7[12],ymm8[13],ymm7[14],ymm8[15]1675; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,3,2,3]1676; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm8 = ymm0[0,1,2,1,4,5,6,5]1677; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,18,19,u,u,20,21,u,u,24,25,24,25,u,u]1678; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2],ymm9[3],ymm8[4],ymm9[5,6],ymm8[7],ymm9[8,9],ymm8[10],ymm9[11],ymm8[12],ymm9[13,14],ymm8[15]1679; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,3,2,3]1680; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]1681; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm71682; AVX2-FCP-NEXT: vpbroadcastq 16(%r8), %ymm81683; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]1684; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm71685; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm8 = ymm0[2,3,2,3,6,7,6,7]1686; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,30,31,u,u,26,27,u,u,30,31,28,29,u,u,28,29]1687; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2],ymm8[3],ymm9[4,5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10],ymm8[11],ymm9[12,13],ymm8[14],ymm9[15]1688; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,3,2,2]1689; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm9 = ymm3[3,2,3,3,7,6,7,7]1690; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,u,u,30,31,u,u,u,u,28,29,30,31,30,31]1691; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0],ymm9[1],ymm10[2],ymm9[3,4],ymm10[5,6,7,8],ymm9[9],ymm10[10],ymm9[11,12],ymm10[13,14,15]1692; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,2]1693; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0]1694; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm81695; AVX2-FCP-NEXT: vpbroadcastq 24(%r8), %ymm91696; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]1697; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm81698; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]1699; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[3,0,3,0,7,4,7,4]1700; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2],ymm4[3],ymm3[4,5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10],ymm4[11],ymm3[12,13],ymm4[14],ymm3[15]1701; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]1702; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,1,2,2]1703; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]1704; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]1705; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm3, %ymm0, %ymm01706; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,1,2,2]1707; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]1708; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm01709; AVX2-FCP-NEXT: vmovdqa %ymm0, 64(%r9)1710; AVX2-FCP-NEXT: vmovdqa %ymm8, 128(%r9)1711; AVX2-FCP-NEXT: vmovdqa %ymm7, 96(%r9)1712; AVX2-FCP-NEXT: vmovdqa %ymm6, 32(%r9)1713; AVX2-FCP-NEXT: vmovdqa %ymm5, (%r9)1714; AVX2-FCP-NEXT: vzeroupper1715; AVX2-FCP-NEXT: retq1716;1717; AVX512-LABEL: store_i16_stride5_vf16:1718; AVX512: # %bb.0:1719; AVX512-NEXT: vmovdqa (%rdi), %ymm01720; AVX512-NEXT: vmovdqa (%rsi), %ymm11721; AVX512-NEXT: vmovdqa (%rdx), %ymm21722; AVX512-NEXT: vmovdqa (%rcx), %ymm31723; AVX512-NEXT: vmovdqa (%r8), %ymm41724; AVX512-NEXT: vpbroadcastq 8(%rdi), %xmm51725; AVX512-NEXT: vmovdqa (%rsi), %xmm61726; AVX512-NEXT: vpshufb {{.*#+}} xmm7 = xmm6[6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]1727; AVX512-NEXT: vpblendw {{.*#+}} xmm5 = xmm7[0],xmm5[1],xmm7[2,3],xmm5[4],xmm7[5],xmm5[6],xmm7[7]1728; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]1729; AVX512-NEXT: vmovdqa (%rdx), %xmm71730; AVX512-NEXT: vpshufd {{.*#+}} xmm8 = xmm7[1,2,2,2]1731; AVX512-NEXT: vmovdqa (%rcx), %xmm91732; AVX512-NEXT: vpshufb {{.*#+}} xmm10 = xmm9[10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]1733; AVX512-NEXT: vpblendw {{.*#+}} xmm8 = xmm10[0],xmm8[1],xmm10[2],xmm8[3],xmm10[4,5],xmm8[6],xmm10[7]1734; AVX512-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,1,0,0]1735; AVX512-NEXT: vpternlogq {{.*#+}} ymm8 = ymm8 ^ (mem & (ymm8 ^ ymm5))1736; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm9[0],xmm7[0],xmm9[1],xmm7[1],xmm9[2],xmm7[2],xmm9[3],xmm7[3]1737; AVX512-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]1738; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]1739; AVX512-NEXT: vmovdqa (%rdi), %xmm71740; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3]1741; AVX512-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[0,2,1,3]1742; AVX512-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,5,6]1743; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]1744; AVX512-NEXT: vmovdqa {{.*#+}} ymm7 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]1745; AVX512-NEXT: vpternlogq {{.*#+}} ymm6 = ymm5 ^ (ymm7 & (ymm6 ^ ymm5))1746; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm6[0,1,2,3],zmm8[0,1,2,3]1747; AVX512-NEXT: vpbroadcastq (%r8), %ymm61748; AVX512-NEXT: vpermq {{.*#+}} ymm8 = ymm4[0,1,1,1]1749; AVX512-NEXT: vinserti64x4 $1, %ymm8, %zmm6, %zmm61750; AVX512-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm5))1751; AVX512-NEXT: vpshufb {{.*#+}} ymm5 = ymm1[u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,16,17,u,u,u,u,u,u,u,u,18,19,u,u]1752; AVX512-NEXT: vpermq {{.*#+}} ymm8 = ymm0[1,1,2,2]1753; AVX512-NEXT: vpblendw {{.*#+}} ymm5 = ymm8[0],ymm5[1],ymm8[2,3],ymm5[4],ymm8[5],ymm5[6],ymm8[7,8],ymm5[9],ymm8[10,11],ymm5[12],ymm8[13],ymm5[14],ymm8[15]1754; AVX512-NEXT: vpshufb {{.*#+}} ymm8 = ymm3[u,u,12,13,u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,16,17,u,u,u,u,u,u,u,u]1755; AVX512-NEXT: vpshufd {{.*#+}} ymm9 = ymm2[3,0,3,0,7,4,7,4]1756; AVX512-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2],ymm8[3],ymm9[4,5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10],ymm8[11],ymm9[12,13],ymm8[14],ymm9[15]1757; AVX512-NEXT: vmovdqa {{.*#+}} ymm9 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535]1758; AVX512-NEXT: vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm9 & (ymm8 ^ ymm5))1759; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm0[0,1,2,1,4,5,6,5]1760; AVX512-NEXT: vprolq $16, %ymm1, %ymm101761; AVX512-NEXT: vpblendw {{.*#+}} ymm5 = ymm10[0,1],ymm5[2],ymm10[3],ymm5[4],ymm10[5,6],ymm5[7],ymm10[8,9],ymm5[10],ymm10[11],ymm5[12],ymm10[13,14],ymm5[15]1762; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,3,2,3]1763; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm2[1,1,1,2,5,5,5,6]1764; AVX512-NEXT: vpshufb {{.*#+}} ymm11 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,u,u,22,23,22,23,u,u,20,21,u,u,24,25]1765; AVX512-NEXT: vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1],ymm11[2,3],ymm10[4],ymm11[5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10,11],ymm10[12],ymm11[13],ymm10[14],ymm11[15]1766; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,3,2,3]1767; AVX512-NEXT: vpternlogq {{.*#+}} ymm10 = ymm5 ^ (ymm7 & (ymm10 ^ ymm5))1768; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm10[0,1,2,3]1769; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[14,15],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[16,17],zero,zero,zero,zero,zero,zero1770; AVX512-NEXT: vpbroadcastq 16(%r8), %ymm71771; AVX512-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm7, %ymm71772; AVX512-NEXT: vinserti64x4 $1, %ymm7, %zmm4, %zmm41773; AVX512-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 | (zmm5 & mem)1774; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[3,2,3,3,7,6,7,7]1775; AVX512-NEXT: vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]1776; AVX512-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[2,3,2,3,6,7,6,7]1777; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3,4],ymm3[5,6,7,8],ymm2[9],ymm3[10],ymm2[11,12],ymm3[13,14,15]1778; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,2]1779; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]1780; AVX512-NEXT: vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]1781; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,3,2,2,6,7,6,6]1782; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]1783; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]1784; AVX512-NEXT: vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm9 & (ymm0 ^ ymm2))1785; AVX512-NEXT: vmovdqa {{.*#+}} ymm1 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]1786; AVX512-NEXT: vpternlogq {{.*#+}} ymm1 = m64bcst ^ (ymm1 & (ymm0 ^ m64bcst))1787; AVX512-NEXT: vmovdqa %ymm1, 128(%r9)1788; AVX512-NEXT: vmovdqa64 %zmm4, 64(%r9)1789; AVX512-NEXT: vmovdqa64 %zmm6, (%r9)1790; AVX512-NEXT: vzeroupper1791; AVX512-NEXT: retq1792;1793; AVX512-FCP-LABEL: store_i16_stride5_vf16:1794; AVX512-FCP: # %bb.0:1795; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm01796; AVX512-FCP-NEXT: vmovdqa (%rsi), %ymm11797; AVX512-FCP-NEXT: vmovdqa (%rdx), %ymm21798; AVX512-FCP-NEXT: vmovdqa (%rcx), %ymm31799; AVX512-FCP-NEXT: vmovdqa (%r8), %ymm41800; AVX512-FCP-NEXT: vpbroadcastq 8(%rdi), %xmm51801; AVX512-FCP-NEXT: vmovdqa (%rsi), %xmm61802; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm6[6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]1803; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm5 = xmm7[0],xmm5[1],xmm7[2,3],xmm5[4],xmm7[5],xmm5[6],xmm7[7]1804; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]1805; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm71806; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm8 = xmm7[1,2,2,2]1807; AVX512-FCP-NEXT: vmovdqa (%rcx), %xmm91808; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm10 = xmm9[10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]1809; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm8 = xmm10[0],xmm8[1],xmm10[2],xmm8[3],xmm10[4,5],xmm8[6],xmm10[7]1810; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,1,0,0]1811; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm8 = ymm8 ^ (mem & (ymm8 ^ ymm5))1812; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm9[0],xmm7[0],xmm9[1],xmm7[1],xmm9[2],xmm7[2],xmm9[3],xmm7[3]1813; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]1814; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]1815; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm71816; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3]1817; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]1818; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]1819; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm7 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]1820; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm6 = ymm5 ^ (ymm7 & (ymm6 ^ ymm5))1821; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm6[0,1,2,3],zmm8[0,1,2,3]1822; AVX512-FCP-NEXT: vpbroadcastq (%r8), %ymm61823; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm4[0,1,1,1]1824; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm6, %zmm61825; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm5))1826; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm1[u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,16,17,u,u,u,u,u,u,u,u,18,19,u,u]1827; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm0[1,1,2,2]1828; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm8[0],ymm5[1],ymm8[2,3],ymm5[4],ymm8[5],ymm5[6],ymm8[7,8],ymm5[9],ymm8[10,11],ymm5[12],ymm8[13],ymm5[14],ymm8[15]1829; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm3[u,u,12,13,u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,16,17,u,u,u,u,u,u,u,u]1830; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm9 = ymm2[3,0,3,0,7,4,7,4]1831; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2],ymm8[3],ymm9[4,5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10],ymm8[11],ymm9[12,13],ymm8[14],ymm9[15]1832; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm9 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535]1833; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm9 & (ymm8 ^ ymm5))1834; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm0[0,1,2,1,4,5,6,5]1835; AVX512-FCP-NEXT: vprolq $16, %ymm1, %ymm101836; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm10[0,1],ymm5[2],ymm10[3],ymm5[4],ymm10[5,6],ymm5[7],ymm10[8,9],ymm5[10],ymm10[11],ymm5[12],ymm10[13,14],ymm5[15]1837; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,3,2,3]1838; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm10 = ymm2[1,1,1,2,5,5,5,6]1839; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm11 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,u,u,22,23,22,23,u,u,20,21,u,u,24,25]1840; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1],ymm11[2,3],ymm10[4],ymm11[5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10,11],ymm10[12],ymm11[13],ymm10[14],ymm11[15]1841; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,3,2,3]1842; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm10 = ymm5 ^ (ymm7 & (ymm10 ^ ymm5))1843; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm10[0,1,2,3]1844; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[14,15],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[16,17],zero,zero,zero,zero,zero,zero1845; AVX512-FCP-NEXT: vpbroadcastq 16(%r8), %ymm71846; AVX512-FCP-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm7, %ymm71847; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm7, %zmm4, %zmm41848; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 | (zmm5 & mem)1849; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[3,2,3,3,7,6,7,7]1850; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,u,u,30,31,u,u,u,u,28,29,30,31,30,31]1851; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3,4],ymm3[5,6,7,8],ymm2[9],ymm3[10],ymm2[11,12],ymm3[13,14,15]1852; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,2]1853; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]1854; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,30,31,u,u,26,27,u,u,30,31,28,29,u,u,28,29]1855; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]1856; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]1857; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm9 & (ymm0 ^ ymm2))1858; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]1859; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm1 = m64bcst ^ (ymm1 & (ymm0 ^ m64bcst))1860; AVX512-FCP-NEXT: vmovdqa %ymm1, 128(%r9)1861; AVX512-FCP-NEXT: vmovdqa64 %zmm4, 64(%r9)1862; AVX512-FCP-NEXT: vmovdqa64 %zmm6, (%r9)1863; AVX512-FCP-NEXT: vzeroupper1864; AVX512-FCP-NEXT: retq1865;1866; AVX512DQ-LABEL: store_i16_stride5_vf16:1867; AVX512DQ: # %bb.0:1868; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm01869; AVX512DQ-NEXT: vmovdqa (%rsi), %ymm11870; AVX512DQ-NEXT: vmovdqa (%rdx), %ymm21871; AVX512DQ-NEXT: vmovdqa (%rcx), %ymm31872; AVX512DQ-NEXT: vmovdqa (%r8), %ymm41873; AVX512DQ-NEXT: vpbroadcastq 8(%rdi), %xmm51874; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm61875; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm7 = xmm6[6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]1876; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm5 = xmm7[0],xmm5[1],xmm7[2,3],xmm5[4],xmm7[5],xmm5[6],xmm7[7]1877; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]1878; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm71879; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm8 = xmm7[1,2,2,2]1880; AVX512DQ-NEXT: vmovdqa (%rcx), %xmm91881; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm10 = xmm9[10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]1882; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm8 = xmm10[0],xmm8[1],xmm10[2],xmm8[3],xmm10[4,5],xmm8[6],xmm10[7]1883; AVX512DQ-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,1,0,0]1884; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm8 = ymm8 ^ (mem & (ymm8 ^ ymm5))1885; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm9[0],xmm7[0],xmm9[1],xmm7[1],xmm9[2],xmm7[2],xmm9[3],xmm7[3]1886; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]1887; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]1888; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm71889; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3]1890; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[0,2,1,3]1891; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,5,6]1892; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]1893; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm7 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]1894; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm6 = ymm5 ^ (ymm7 & (ymm6 ^ ymm5))1895; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm6[0,1,2,3],zmm8[0,1,2,3]1896; AVX512DQ-NEXT: vpbroadcastq (%r8), %ymm61897; AVX512DQ-NEXT: vpermq {{.*#+}} ymm8 = ymm4[0,1,1,1]1898; AVX512DQ-NEXT: vinserti64x4 $1, %ymm8, %zmm6, %zmm61899; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm5))1900; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm5 = ymm1[u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,16,17,u,u,u,u,u,u,u,u,18,19,u,u]1901; AVX512DQ-NEXT: vpermq {{.*#+}} ymm8 = ymm0[1,1,2,2]1902; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm5 = ymm8[0],ymm5[1],ymm8[2,3],ymm5[4],ymm8[5],ymm5[6],ymm8[7,8],ymm5[9],ymm8[10,11],ymm5[12],ymm8[13],ymm5[14],ymm8[15]1903; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm8 = ymm3[u,u,12,13,u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,16,17,u,u,u,u,u,u,u,u]1904; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm9 = ymm2[3,0,3,0,7,4,7,4]1905; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2],ymm8[3],ymm9[4,5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10],ymm8[11],ymm9[12,13],ymm8[14],ymm9[15]1906; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm9 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535]1907; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm9 & (ymm8 ^ ymm5))1908; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm0[0,1,2,1,4,5,6,5]1909; AVX512DQ-NEXT: vprolq $16, %ymm1, %ymm101910; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm5 = ymm10[0,1],ymm5[2],ymm10[3],ymm5[4],ymm10[5,6],ymm5[7],ymm10[8,9],ymm5[10],ymm10[11],ymm5[12],ymm10[13,14],ymm5[15]1911; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,3,2,3]1912; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm2[1,1,1,2,5,5,5,6]1913; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm11 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,u,u,22,23,22,23,u,u,20,21,u,u,24,25]1914; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1],ymm11[2,3],ymm10[4],ymm11[5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10,11],ymm10[12],ymm11[13],ymm10[14],ymm11[15]1915; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,3,2,3]1916; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm10 = ymm5 ^ (ymm7 & (ymm10 ^ ymm5))1917; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm10[0,1,2,3]1918; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[14,15],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[16,17],zero,zero,zero,zero,zero,zero1919; AVX512DQ-NEXT: vpbroadcastq 16(%r8), %ymm71920; AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm7, %ymm71921; AVX512DQ-NEXT: vinserti64x4 $1, %ymm7, %zmm4, %zmm41922; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 | (zmm5 & mem)1923; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[3,2,3,3,7,6,7,7]1924; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]1925; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[2,3,2,3,6,7,6,7]1926; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3,4],ymm3[5,6,7,8],ymm2[9],ymm3[10],ymm2[11,12],ymm3[13,14,15]1927; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,2]1928; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]1929; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]1930; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,3,2,2,6,7,6,6]1931; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]1932; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]1933; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm9 & (ymm0 ^ ymm2))1934; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm1 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]1935; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm1 = m64bcst ^ (ymm1 & (ymm0 ^ m64bcst))1936; AVX512DQ-NEXT: vmovdqa %ymm1, 128(%r9)1937; AVX512DQ-NEXT: vmovdqa64 %zmm4, 64(%r9)1938; AVX512DQ-NEXT: vmovdqa64 %zmm6, (%r9)1939; AVX512DQ-NEXT: vzeroupper1940; AVX512DQ-NEXT: retq1941;1942; AVX512DQ-FCP-LABEL: store_i16_stride5_vf16:1943; AVX512DQ-FCP: # %bb.0:1944; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm01945; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %ymm11946; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %ymm21947; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %ymm31948; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %ymm41949; AVX512DQ-FCP-NEXT: vpbroadcastq 8(%rdi), %xmm51950; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %xmm61951; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm6[6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]1952; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm5 = xmm7[0],xmm5[1],xmm7[2,3],xmm5[4],xmm7[5],xmm5[6],xmm7[7]1953; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]1954; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm71955; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm8 = xmm7[1,2,2,2]1956; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %xmm91957; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm10 = xmm9[10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]1958; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm8 = xmm10[0],xmm8[1],xmm10[2],xmm8[3],xmm10[4,5],xmm8[6],xmm10[7]1959; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,1,0,0]1960; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm8 = ymm8 ^ (mem & (ymm8 ^ ymm5))1961; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm9[0],xmm7[0],xmm9[1],xmm7[1],xmm9[2],xmm7[2],xmm9[3],xmm7[3]1962; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]1963; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]1964; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm71965; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3]1966; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]1967; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]1968; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm7 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]1969; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm6 = ymm5 ^ (ymm7 & (ymm6 ^ ymm5))1970; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm6[0,1,2,3],zmm8[0,1,2,3]1971; AVX512DQ-FCP-NEXT: vpbroadcastq (%r8), %ymm61972; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm4[0,1,1,1]1973; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm6, %zmm61974; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm5))1975; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm1[u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,16,17,u,u,u,u,u,u,u,u,18,19,u,u]1976; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm0[1,1,2,2]1977; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm8[0],ymm5[1],ymm8[2,3],ymm5[4],ymm8[5],ymm5[6],ymm8[7,8],ymm5[9],ymm8[10,11],ymm5[12],ymm8[13],ymm5[14],ymm8[15]1978; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm3[u,u,12,13,u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,16,17,u,u,u,u,u,u,u,u]1979; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm9 = ymm2[3,0,3,0,7,4,7,4]1980; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2],ymm8[3],ymm9[4,5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10],ymm8[11],ymm9[12,13],ymm8[14],ymm9[15]1981; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm9 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535]1982; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm9 & (ymm8 ^ ymm5))1983; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm0[0,1,2,1,4,5,6,5]1984; AVX512DQ-FCP-NEXT: vprolq $16, %ymm1, %ymm101985; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm10[0,1],ymm5[2],ymm10[3],ymm5[4],ymm10[5,6],ymm5[7],ymm10[8,9],ymm5[10],ymm10[11],ymm5[12],ymm10[13,14],ymm5[15]1986; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,3,2,3]1987; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm10 = ymm2[1,1,1,2,5,5,5,6]1988; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm11 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,u,u,22,23,22,23,u,u,20,21,u,u,24,25]1989; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1],ymm11[2,3],ymm10[4],ymm11[5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10,11],ymm10[12],ymm11[13],ymm10[14],ymm11[15]1990; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,3,2,3]1991; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm10 = ymm5 ^ (ymm7 & (ymm10 ^ ymm5))1992; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm10[0,1,2,3]1993; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[14,15],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[16,17],zero,zero,zero,zero,zero,zero1994; AVX512DQ-FCP-NEXT: vpbroadcastq 16(%r8), %ymm71995; AVX512DQ-FCP-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm7, %ymm71996; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm7, %zmm4, %zmm41997; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 | (zmm5 & mem)1998; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[3,2,3,3,7,6,7,7]1999; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,u,u,30,31,u,u,u,u,28,29,30,31,30,31]2000; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3,4],ymm3[5,6,7,8],ymm2[9],ymm3[10],ymm2[11,12],ymm3[13,14,15]2001; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,2]2002; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]2003; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,30,31,u,u,26,27,u,u,30,31,28,29,u,u,28,29]2004; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]2005; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]2006; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm9 & (ymm0 ^ ymm2))2007; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]2008; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm1 = m64bcst ^ (ymm1 & (ymm0 ^ m64bcst))2009; AVX512DQ-FCP-NEXT: vmovdqa %ymm1, 128(%r9)2010; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, 64(%r9)2011; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm6, (%r9)2012; AVX512DQ-FCP-NEXT: vzeroupper2013; AVX512DQ-FCP-NEXT: retq2014;2015; AVX512BW-LABEL: store_i16_stride5_vf16:2016; AVX512BW: # %bb.0:2017; AVX512BW-NEXT: vmovdqa (%rdi), %ymm02018; AVX512BW-NEXT: vmovdqa (%rdx), %ymm12019; AVX512BW-NEXT: vmovdqa (%r8), %ymm22020; AVX512BW-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm02021; AVX512BW-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm12022; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,13,29,45,61,0,14,30,46,62,0,15,31,47,63,0]2023; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm32024; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm4 = [0,16,32,48,0,1,17,33,49,0,2,18,34,50,0,3,19,35,51,0,4,20,36,52,0,5,21,37,53,0,6,22]2025; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm42026; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]2027; AVX512BW-NEXT: vpermi2w %zmm2, %zmm4, %zmm52028; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm4 = [6,22,0,39,55,7,23,0,40,56,8,24,0,41,57,9,25,0,42,58,10,26,0,43,59,11,27,0,44,60,12,28]2029; AVX512BW-NEXT: vpermi2w %zmm0, %zmm1, %zmm42030; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm0 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]2031; AVX512BW-NEXT: vpermi2w %zmm2, %zmm4, %zmm02032; AVX512BW-NEXT: vmovdqa64 %zmm0, 64(%r9)2033; AVX512BW-NEXT: vmovdqa64 %zmm5, (%r9)2034; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm0 = [28,1,2,3,4,29,6,7,8,9,30,11,12,13,14,31]2035; AVX512BW-NEXT: vpermi2w %ymm2, %ymm3, %ymm02036; AVX512BW-NEXT: vmovdqa %ymm0, 128(%r9)2037; AVX512BW-NEXT: vzeroupper2038; AVX512BW-NEXT: retq2039;2040; AVX512BW-FCP-LABEL: store_i16_stride5_vf16:2041; AVX512BW-FCP: # %bb.0:2042; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %ymm02043; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %ymm12044; AVX512BW-FCP-NEXT: vmovdqa (%r8), %ymm22045; AVX512BW-FCP-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm02046; AVX512BW-FCP-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm12047; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,13,29,45,61,0,14,30,46,62,0,15,31,47,63,0]2048; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm32049; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm4 = [0,16,32,48,0,1,17,33,49,0,2,18,34,50,0,3,19,35,51,0,4,20,36,52,0,5,21,37,53,0,6,22]2050; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm42051; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]2052; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm4, %zmm52053; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm4 = [6,22,0,39,55,7,23,0,40,56,8,24,0,41,57,9,25,0,42,58,10,26,0,43,59,11,27,0,44,60,12,28]2054; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm1, %zmm42055; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm0 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]2056; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm4, %zmm02057; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, 64(%r9)2058; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, (%r9)2059; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm0 = [28,1,2,3,4,29,6,7,8,9,30,11,12,13,14,31]2060; AVX512BW-FCP-NEXT: vpermi2w %ymm2, %ymm3, %ymm02061; AVX512BW-FCP-NEXT: vmovdqa %ymm0, 128(%r9)2062; AVX512BW-FCP-NEXT: vzeroupper2063; AVX512BW-FCP-NEXT: retq2064;2065; AVX512DQ-BW-LABEL: store_i16_stride5_vf16:2066; AVX512DQ-BW: # %bb.0:2067; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %ymm02068; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %ymm12069; AVX512DQ-BW-NEXT: vmovdqa (%r8), %ymm22070; AVX512DQ-BW-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm02071; AVX512DQ-BW-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm12072; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,13,29,45,61,0,14,30,46,62,0,15,31,47,63,0]2073; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm32074; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm4 = [0,16,32,48,0,1,17,33,49,0,2,18,34,50,0,3,19,35,51,0,4,20,36,52,0,5,21,37,53,0,6,22]2075; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm42076; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]2077; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm4, %zmm52078; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm4 = [6,22,0,39,55,7,23,0,40,56,8,24,0,41,57,9,25,0,42,58,10,26,0,43,59,11,27,0,44,60,12,28]2079; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm1, %zmm42080; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm0 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]2081; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm4, %zmm02082; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, 64(%r9)2083; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, (%r9)2084; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm0 = [28,1,2,3,4,29,6,7,8,9,30,11,12,13,14,31]2085; AVX512DQ-BW-NEXT: vpermi2w %ymm2, %ymm3, %ymm02086; AVX512DQ-BW-NEXT: vmovdqa %ymm0, 128(%r9)2087; AVX512DQ-BW-NEXT: vzeroupper2088; AVX512DQ-BW-NEXT: retq2089;2090; AVX512DQ-BW-FCP-LABEL: store_i16_stride5_vf16:2091; AVX512DQ-BW-FCP: # %bb.0:2092; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %ymm02093; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %ymm12094; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r8), %ymm22095; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm02096; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm12097; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,13,29,45,61,0,14,30,46,62,0,15,31,47,63,0]2098; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm32099; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm4 = [0,16,32,48,0,1,17,33,49,0,2,18,34,50,0,3,19,35,51,0,4,20,36,52,0,5,21,37,53,0,6,22]2100; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm42101; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]2102; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm4, %zmm52103; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm4 = [6,22,0,39,55,7,23,0,40,56,8,24,0,41,57,9,25,0,42,58,10,26,0,43,59,11,27,0,44,60,12,28]2104; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm1, %zmm42105; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm0 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]2106; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm4, %zmm02107; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, 64(%r9)2108; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, (%r9)2109; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm0 = [28,1,2,3,4,29,6,7,8,9,30,11,12,13,14,31]2110; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm2, %ymm3, %ymm02111; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm0, 128(%r9)2112; AVX512DQ-BW-FCP-NEXT: vzeroupper2113; AVX512DQ-BW-FCP-NEXT: retq2114 %in.vec0 = load <16 x i16>, ptr %in.vecptr0, align 642115 %in.vec1 = load <16 x i16>, ptr %in.vecptr1, align 642116 %in.vec2 = load <16 x i16>, ptr %in.vecptr2, align 642117 %in.vec3 = load <16 x i16>, ptr %in.vecptr3, align 642118 %in.vec4 = load <16 x i16>, ptr %in.vecptr4, align 642119 %1 = shufflevector <16 x i16> %in.vec0, <16 x i16> %in.vec1, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>2120 %2 = shufflevector <16 x i16> %in.vec2, <16 x i16> %in.vec3, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>2121 %3 = shufflevector <32 x i16> %1, <32 x i16> %2, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>2122 %4 = shufflevector <16 x i16> %in.vec4, <16 x i16> poison, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>2123 %5 = shufflevector <64 x i16> %3, <64 x i16> %4, <80 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79>2124 %interleaved.vec = shufflevector <80 x i16> %5, <80 x i16> poison, <80 x i32> <i32 0, i32 16, i32 32, i32 48, i32 64, i32 1, i32 17, i32 33, i32 49, i32 65, i32 2, i32 18, i32 34, i32 50, i32 66, i32 3, i32 19, i32 35, i32 51, i32 67, i32 4, i32 20, i32 36, i32 52, i32 68, i32 5, i32 21, i32 37, i32 53, i32 69, i32 6, i32 22, i32 38, i32 54, i32 70, i32 7, i32 23, i32 39, i32 55, i32 71, i32 8, i32 24, i32 40, i32 56, i32 72, i32 9, i32 25, i32 41, i32 57, i32 73, i32 10, i32 26, i32 42, i32 58, i32 74, i32 11, i32 27, i32 43, i32 59, i32 75, i32 12, i32 28, i32 44, i32 60, i32 76, i32 13, i32 29, i32 45, i32 61, i32 77, i32 14, i32 30, i32 46, i32 62, i32 78, i32 15, i32 31, i32 47, i32 63, i32 79>2125 store <80 x i16> %interleaved.vec, ptr %out.vec, align 642126 ret void2127}2128 2129define void @store_i16_stride5_vf32(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {2130; SSE-LABEL: store_i16_stride5_vf32:2131; SSE: # %bb.0:2132; SSE-NEXT: subq $248, %rsp2133; SSE-NEXT: movdqa (%rdi), %xmm52134; SSE-NEXT: movdqa 16(%rdi), %xmm92135; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2136; SSE-NEXT: movdqa (%rsi), %xmm62137; SSE-NEXT: movdqa 16(%rsi), %xmm122138; SSE-NEXT: movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2139; SSE-NEXT: movdqa (%rdx), %xmm22140; SSE-NEXT: movdqa (%rcx), %xmm82141; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2142; SSE-NEXT: movdqa 16(%rcx), %xmm142143; SSE-NEXT: movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2144; SSE-NEXT: movdqa (%r8), %xmm02145; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2146; SSE-NEXT: movdqa {{.*#+}} xmm15 = [65535,65535,65535,65535,0,65535,65535,65535]2147; SSE-NEXT: movdqa %xmm15, %xmm12148; SSE-NEXT: pandn %xmm5, %xmm12149; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm6[3,3,3,3,4,5,6,7]2150; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]2151; SSE-NEXT: pand %xmm15, %xmm32152; SSE-NEXT: por %xmm1, %xmm32153; SSE-NEXT: movdqa {{.*#+}} xmm1 = [0,65535,65535,65535,0,0,65535,65535]2154; SSE-NEXT: movdqa %xmm1, %xmm42155; SSE-NEXT: pandn %xmm3, %xmm42156; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm2[1,1,2,2]2157; SSE-NEXT: movdqa {{.*#+}} xmm13 = [65535,65535,0,65535,65535,65535,65535,0]2158; SSE-NEXT: pand %xmm13, %xmm72159; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm8[3,3,3,3,4,5,6,7]2160; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]2161; SSE-NEXT: movdqa %xmm13, %xmm112162; SSE-NEXT: pandn %xmm8, %xmm112163; SSE-NEXT: por %xmm7, %xmm112164; SSE-NEXT: pand %xmm1, %xmm112165; SSE-NEXT: por %xmm4, %xmm112166; SSE-NEXT: movdqa {{.*#+}} xmm10 = [65535,65535,65535,0,65535,65535,65535,65535]2167; SSE-NEXT: pand %xmm10, %xmm112168; SSE-NEXT: movdqa %xmm10, %xmm32169; SSE-NEXT: pandn %xmm0, %xmm32170; SSE-NEXT: por %xmm11, %xmm32171; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2172; SSE-NEXT: movdqa %xmm15, %xmm42173; SSE-NEXT: pandn %xmm9, %xmm42174; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm12[3,3,3,3,4,5,6,7]2175; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]2176; SSE-NEXT: pand %xmm15, %xmm72177; SSE-NEXT: por %xmm4, %xmm72178; SSE-NEXT: movdqa %xmm1, %xmm82179; SSE-NEXT: pandn %xmm7, %xmm82180; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm14[3,3,3,3,4,5,6,7]2181; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,4,4]2182; SSE-NEXT: movdqa %xmm13, %xmm72183; SSE-NEXT: pandn %xmm4, %xmm72184; SSE-NEXT: movdqa 16(%rdx), %xmm142185; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm14[1,1,2,2]2186; SSE-NEXT: pand %xmm13, %xmm112187; SSE-NEXT: por %xmm11, %xmm72188; SSE-NEXT: pand %xmm1, %xmm72189; SSE-NEXT: por %xmm8, %xmm72190; SSE-NEXT: movdqa 16(%r8), %xmm42191; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2192; SSE-NEXT: pand %xmm10, %xmm72193; SSE-NEXT: movdqa %xmm10, %xmm32194; SSE-NEXT: pandn %xmm4, %xmm32195; SSE-NEXT: por %xmm7, %xmm32196; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2197; SSE-NEXT: movdqa 32(%rdi), %xmm32198; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2199; SSE-NEXT: movdqa %xmm15, %xmm72200; SSE-NEXT: pandn %xmm3, %xmm72201; SSE-NEXT: movdqa 32(%rsi), %xmm32202; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2203; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm3[3,3,3,3,4,5,6,7]2204; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]2205; SSE-NEXT: pand %xmm15, %xmm82206; SSE-NEXT: por %xmm7, %xmm82207; SSE-NEXT: movdqa %xmm1, %xmm72208; SSE-NEXT: pandn %xmm8, %xmm72209; SSE-NEXT: movdqa 32(%rcx), %xmm32210; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2211; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm3[3,3,3,3,4,5,6,7]2212; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]2213; SSE-NEXT: movdqa %xmm13, %xmm122214; SSE-NEXT: pandn %xmm8, %xmm122215; SSE-NEXT: movdqa 32(%rdx), %xmm112216; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm11[1,1,2,2]2217; SSE-NEXT: pand %xmm13, %xmm82218; SSE-NEXT: por %xmm8, %xmm122219; SSE-NEXT: pand %xmm1, %xmm122220; SSE-NEXT: por %xmm7, %xmm122221; SSE-NEXT: pand %xmm10, %xmm122222; SSE-NEXT: movdqa 32(%r8), %xmm72223; SSE-NEXT: movdqa %xmm7, (%rsp) # 16-byte Spill2224; SSE-NEXT: movdqa %xmm10, %xmm32225; SSE-NEXT: pandn %xmm7, %xmm32226; SSE-NEXT: por %xmm12, %xmm32227; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2228; SSE-NEXT: movdqa 48(%rdi), %xmm32229; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2230; SSE-NEXT: movdqa %xmm15, %xmm72231; SSE-NEXT: pandn %xmm3, %xmm72232; SSE-NEXT: movdqa 48(%rsi), %xmm32233; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2234; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm3[3,3,3,3,4,5,6,7]2235; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]2236; SSE-NEXT: pand %xmm15, %xmm82237; SSE-NEXT: por %xmm7, %xmm82238; SSE-NEXT: movdqa 48(%rcx), %xmm32239; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2240; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm3[3,3,3,3,4,5,6,7]2241; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]2242; SSE-NEXT: movdqa %xmm13, %xmm122243; SSE-NEXT: pandn %xmm7, %xmm122244; SSE-NEXT: movdqa 48(%rdx), %xmm32245; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2246; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm3[1,1,2,2]2247; SSE-NEXT: pand %xmm13, %xmm72248; SSE-NEXT: por %xmm7, %xmm122249; SSE-NEXT: pand %xmm1, %xmm122250; SSE-NEXT: pandn %xmm8, %xmm12251; SSE-NEXT: por %xmm12, %xmm12252; SSE-NEXT: pand %xmm10, %xmm12253; SSE-NEXT: movdqa 48(%r8), %xmm32254; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2255; SSE-NEXT: pandn %xmm3, %xmm102256; SSE-NEXT: por %xmm1, %xmm102257; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2258; SSE-NEXT: movdqa %xmm2, %xmm12259; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2260; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]2261; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]2262; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm1[0,0,2,1]2263; SSE-NEXT: movdqa {{.*#+}} xmm3 = [65535,65535,0,0,65535,65535,65535,0]2264; SSE-NEXT: movdqa %xmm3, %xmm82265; SSE-NEXT: pandn %xmm7, %xmm82266; SSE-NEXT: movdqa %xmm5, %xmm72267; SSE-NEXT: punpcklwd {{.*#+}} xmm7 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3]2268; SSE-NEXT: pshuflw {{.*#+}} xmm12 = xmm7[0,1,3,2,4,5,6,7]2269; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm12[0,1,1,1]2270; SSE-NEXT: pand %xmm3, %xmm122271; SSE-NEXT: por %xmm8, %xmm122272; SSE-NEXT: pand %xmm15, %xmm122273; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload2274; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm4[0,1,0,1]2275; SSE-NEXT: movdqa %xmm15, %xmm12276; SSE-NEXT: pandn %xmm8, %xmm12277; SSE-NEXT: por %xmm12, %xmm12278; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2279; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,6,6]2280; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[2,3,2,3]2281; SSE-NEXT: movdqa %xmm0, %xmm122282; SSE-NEXT: punpcklwd {{.*#+}} xmm12 = xmm12[0],xmm2[0],xmm12[1],xmm2[1],xmm12[2],xmm2[2],xmm12[3],xmm2[3]2283; SSE-NEXT: pshuflw {{.*#+}} xmm12 = xmm12[2,2,2,2,4,5,6,7]2284; SSE-NEXT: pshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,5,4,6,7]2285; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm12[0,2,2,3]2286; SSE-NEXT: punpckldq {{.*#+}} xmm12 = xmm12[0],xmm7[0],xmm12[1],xmm7[1]2287; SSE-NEXT: movdqa {{.*#+}} xmm9 = [65535,0,65535,65535,65535,65535,0,65535]2288; SSE-NEXT: movdqa %xmm9, %xmm12289; SSE-NEXT: pandn %xmm8, %xmm12290; SSE-NEXT: pand %xmm9, %xmm122291; SSE-NEXT: por %xmm12, %xmm12292; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2293; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]2294; SSE-NEXT: movdqa %xmm2, %xmm72295; SSE-NEXT: pslldq {{.*#+}} xmm7 = zero,zero,xmm7[0,1,2,3,4,5,6,7,8,9,10,11,12,13]2296; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,65535,65535,0,0,65535,65535,65535]2297; SSE-NEXT: movdqa %xmm0, %xmm82298; SSE-NEXT: pandn %xmm7, %xmm82299; SSE-NEXT: movdqa %xmm5, %xmm72300; SSE-NEXT: punpckhwd {{.*#+}} xmm7 = xmm7[4],xmm6[4],xmm7[5],xmm6[5],xmm7[6],xmm6[6],xmm7[7],xmm6[7]2301; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[0,2,3,3,4,5,6,7]2302; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm7[0,1,2,2]2303; SSE-NEXT: pand %xmm0, %xmm122304; SSE-NEXT: por %xmm8, %xmm122305; SSE-NEXT: movdqa {{.*#+}} xmm10 = [0,65535,65535,65535,65535,0,65535,65535]2306; SSE-NEXT: pand %xmm10, %xmm122307; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm4[2,3,2,3]2308; SSE-NEXT: movdqa %xmm10, %xmm12309; SSE-NEXT: pandn %xmm8, %xmm12310; SSE-NEXT: por %xmm12, %xmm12311; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2312; SSE-NEXT: psrlq $48, %xmm62313; SSE-NEXT: punpckhqdq {{.*#+}} xmm5 = xmm5[1],xmm6[1]2314; SSE-NEXT: movdqa %xmm0, %xmm62315; SSE-NEXT: pandn %xmm5, %xmm62316; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,6]2317; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,1,3,3]2318; SSE-NEXT: pand %xmm0, %xmm22319; SSE-NEXT: por %xmm6, %xmm22320; SSE-NEXT: movdqa %xmm13, %xmm12321; SSE-NEXT: pandn %xmm8, %xmm12322; SSE-NEXT: pand %xmm13, %xmm22323; SSE-NEXT: por %xmm2, %xmm12324; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2325; SSE-NEXT: movdqa %xmm14, %xmm22326; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload2327; SSE-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3]2328; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,1,2,2,4,5,6,7]2329; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,2,1]2330; SSE-NEXT: movdqa %xmm3, %xmm52331; SSE-NEXT: pandn %xmm2, %xmm52332; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2333; SSE-NEXT: movdqa %xmm1, %xmm22334; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload2335; SSE-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1],xmm2[2],xmm7[2],xmm2[3],xmm7[3]2336; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm2[0,1,3,2,4,5,6,7]2337; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[0,1,1,1]2338; SSE-NEXT: pand %xmm3, %xmm62339; SSE-NEXT: por %xmm5, %xmm62340; SSE-NEXT: pand %xmm15, %xmm62341; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload2342; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,1,0,1]2343; SSE-NEXT: movdqa %xmm15, %xmm122344; SSE-NEXT: pandn %xmm5, %xmm122345; SSE-NEXT: por %xmm6, %xmm122346; SSE-NEXT: movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2347; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6,6]2348; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,3,2,3]2349; SSE-NEXT: movdqa %xmm8, %xmm62350; SSE-NEXT: punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm14[0],xmm6[1],xmm14[1],xmm6[2],xmm14[2],xmm6[3],xmm14[3]2351; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm6[2,2,2,2,4,5,6,7]2352; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,4,6,7]2353; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[0,2,2,3]2354; SSE-NEXT: punpckldq {{.*#+}} xmm6 = xmm6[0],xmm2[0],xmm6[1],xmm2[1]2355; SSE-NEXT: movdqa %xmm9, %xmm22356; SSE-NEXT: pandn %xmm5, %xmm22357; SSE-NEXT: pand %xmm9, %xmm62358; SSE-NEXT: por %xmm6, %xmm22359; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2360; SSE-NEXT: punpckhwd {{.*#+}} xmm14 = xmm14[4],xmm8[4],xmm14[5],xmm8[5],xmm14[6],xmm8[6],xmm14[7],xmm8[7]2361; SSE-NEXT: movdqa %xmm14, %xmm22362; SSE-NEXT: pslldq {{.*#+}} xmm2 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13]2363; SSE-NEXT: movdqa %xmm0, %xmm52364; SSE-NEXT: pandn %xmm2, %xmm52365; SSE-NEXT: movdqa %xmm1, %xmm22366; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm7[4],xmm2[5],xmm7[5],xmm2[6],xmm7[6],xmm2[7],xmm7[7]2367; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,2,3,3,4,5,6,7]2368; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,2,2]2369; SSE-NEXT: pand %xmm0, %xmm22370; SSE-NEXT: por %xmm5, %xmm22371; SSE-NEXT: pand %xmm10, %xmm22372; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm4[2,3,2,3]2373; SSE-NEXT: movdqa %xmm10, %xmm42374; SSE-NEXT: pandn %xmm5, %xmm42375; SSE-NEXT: por %xmm2, %xmm42376; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2377; SSE-NEXT: movdqa %xmm7, %xmm22378; SSE-NEXT: psrlq $48, %xmm22379; SSE-NEXT: punpckhqdq {{.*#+}} xmm1 = xmm1[1],xmm2[1]2380; SSE-NEXT: movdqa %xmm0, %xmm22381; SSE-NEXT: pandn %xmm1, %xmm22382; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm14[0,1,2,3,4,5,7,6]2383; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[2,1,3,3]2384; SSE-NEXT: pand %xmm0, %xmm42385; SSE-NEXT: por %xmm2, %xmm42386; SSE-NEXT: movdqa %xmm13, %xmm12387; SSE-NEXT: pandn %xmm5, %xmm12388; SSE-NEXT: pand %xmm13, %xmm42389; SSE-NEXT: por %xmm4, %xmm12390; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2391; SSE-NEXT: movdqa %xmm11, %xmm22392; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload2393; SSE-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3]2394; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,1,2,2,4,5,6,7]2395; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,2,1]2396; SSE-NEXT: movdqa %xmm3, %xmm42397; SSE-NEXT: pandn %xmm2, %xmm42398; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload2399; SSE-NEXT: movdqa %xmm7, %xmm22400; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload2401; SSE-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3]2402; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm2[0,1,3,2,4,5,6,7]2403; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,1,1,1]2404; SSE-NEXT: pand %xmm3, %xmm52405; SSE-NEXT: por %xmm4, %xmm52406; SSE-NEXT: pand %xmm15, %xmm52407; SSE-NEXT: movdqa (%rsp), %xmm12 # 16-byte Reload2408; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm12[0,1,0,1]2409; SSE-NEXT: movdqa %xmm15, %xmm42410; SSE-NEXT: pandn %xmm1, %xmm42411; SSE-NEXT: por %xmm5, %xmm42412; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2413; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6,6]2414; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,3,2,3]2415; SSE-NEXT: movdqa %xmm8, %xmm52416; SSE-NEXT: movdqa %xmm8, %xmm42417; SSE-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm11[0],xmm5[1],xmm11[1],xmm5[2],xmm11[2],xmm5[3],xmm11[3]2418; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]2419; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,4,6,7]2420; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3]2421; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]2422; SSE-NEXT: movdqa %xmm9, %xmm82423; SSE-NEXT: pandn %xmm1, %xmm82424; SSE-NEXT: pand %xmm9, %xmm52425; SSE-NEXT: por %xmm5, %xmm82426; SSE-NEXT: punpckhwd {{.*#+}} xmm11 = xmm11[4],xmm4[4],xmm11[5],xmm4[5],xmm11[6],xmm4[6],xmm11[7],xmm4[7]2427; SSE-NEXT: movdqa %xmm11, %xmm12428; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]2429; SSE-NEXT: movdqa %xmm0, %xmm52430; SSE-NEXT: pandn %xmm1, %xmm52431; SSE-NEXT: movdqa %xmm7, %xmm42432; SSE-NEXT: movdqa %xmm7, %xmm12433; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]2434; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,2,3,3,4,5,6,7]2435; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,2,2]2436; SSE-NEXT: pand %xmm0, %xmm12437; SSE-NEXT: por %xmm5, %xmm12438; SSE-NEXT: pand %xmm10, %xmm12439; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm12[2,3,2,3]2440; SSE-NEXT: movdqa %xmm10, %xmm92441; SSE-NEXT: pandn %xmm2, %xmm92442; SSE-NEXT: por %xmm1, %xmm92443; SSE-NEXT: movdqa %xmm6, %xmm12444; SSE-NEXT: psrlq $48, %xmm12445; SSE-NEXT: punpckhqdq {{.*#+}} xmm4 = xmm4[1],xmm1[1]2446; SSE-NEXT: movdqa %xmm0, %xmm12447; SSE-NEXT: pandn %xmm4, %xmm12448; SSE-NEXT: pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,5,7,6]2449; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm11[2,1,3,3]2450; SSE-NEXT: pand %xmm0, %xmm112451; SSE-NEXT: por %xmm1, %xmm112452; SSE-NEXT: movdqa %xmm13, %xmm142453; SSE-NEXT: pandn %xmm2, %xmm142454; SSE-NEXT: pand %xmm13, %xmm112455; SSE-NEXT: por %xmm11, %xmm142456; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2457; SSE-NEXT: movdqa %xmm1, %xmm22458; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload2459; SSE-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3]2460; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,1,2,2,4,5,6,7]2461; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,2,1]2462; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload2463; SSE-NEXT: movdqa %xmm7, %xmm112464; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload2465; SSE-NEXT: punpcklwd {{.*#+}} xmm11 = xmm11[0],xmm5[0],xmm11[1],xmm5[1],xmm11[2],xmm5[2],xmm11[3],xmm5[3]2466; SSE-NEXT: pshuflw {{.*#+}} xmm12 = xmm11[0,1,3,2,4,5,6,7]2467; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm12[0,1,1,1]2468; SSE-NEXT: pand %xmm3, %xmm122469; SSE-NEXT: pandn %xmm2, %xmm32470; SSE-NEXT: por %xmm12, %xmm32471; SSE-NEXT: pand %xmm15, %xmm32472; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload2473; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[0,1,0,1]2474; SSE-NEXT: pandn %xmm2, %xmm152475; SSE-NEXT: por %xmm3, %xmm152476; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm11[0,1,2,3,4,5,6,6]2477; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,3,2,3]2478; SSE-NEXT: movdqa %xmm6, %xmm112479; SSE-NEXT: movdqa %xmm1, %xmm122480; SSE-NEXT: punpcklwd {{.*#+}} xmm11 = xmm11[0],xmm1[0],xmm11[1],xmm1[1],xmm11[2],xmm1[2],xmm11[3],xmm1[3]2481; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm11[2,2,2,2,4,5,6,7]2482; SSE-NEXT: pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,5,4,6,7]2483; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm11[0,2,2,3]2484; SSE-NEXT: punpckldq {{.*#+}} xmm11 = xmm11[0],xmm3[0],xmm11[1],xmm3[1]2485; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,0,65535,65535,65535,65535,0,65535]2486; SSE-NEXT: pand %xmm1, %xmm112487; SSE-NEXT: pandn %xmm2, %xmm12488; SSE-NEXT: por %xmm11, %xmm12489; SSE-NEXT: movdqa %xmm12, %xmm32490; SSE-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm6[4],xmm3[5],xmm6[5],xmm3[6],xmm6[6],xmm3[7],xmm6[7]2491; SSE-NEXT: movdqa %xmm3, %xmm22492; SSE-NEXT: movdqa %xmm3, %xmm62493; SSE-NEXT: pslldq {{.*#+}} xmm2 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13]2494; SSE-NEXT: movdqa %xmm0, %xmm32495; SSE-NEXT: pandn %xmm2, %xmm32496; SSE-NEXT: movdqa %xmm7, %xmm22497; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]2498; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,2,3,3,4,5,6,7]2499; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,2,2]2500; SSE-NEXT: pand %xmm0, %xmm22501; SSE-NEXT: por %xmm3, %xmm22502; SSE-NEXT: pand %xmm10, %xmm22503; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm4[2,3,2,3]2504; SSE-NEXT: pandn %xmm3, %xmm102505; SSE-NEXT: por %xmm2, %xmm102506; SSE-NEXT: psrlq $48, %xmm52507; SSE-NEXT: punpckhqdq {{.*#+}} xmm7 = xmm7[1],xmm5[1]2508; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm6[0,1,2,3,4,5,7,6]2509; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,1,3,3]2510; SSE-NEXT: pand %xmm0, %xmm22511; SSE-NEXT: pandn %xmm7, %xmm02512; SSE-NEXT: por %xmm2, %xmm02513; SSE-NEXT: pand %xmm13, %xmm02514; SSE-NEXT: pandn %xmm3, %xmm132515; SSE-NEXT: por %xmm0, %xmm132516; SSE-NEXT: movdqa %xmm13, 304(%r9)2517; SSE-NEXT: movdqa %xmm10, 288(%r9)2518; SSE-NEXT: movdqa %xmm1, 256(%r9)2519; SSE-NEXT: movdqa %xmm15, 240(%r9)2520; SSE-NEXT: movdqa %xmm14, 224(%r9)2521; SSE-NEXT: movdqa %xmm9, 208(%r9)2522; SSE-NEXT: movdqa %xmm8, 176(%r9)2523; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2524; SSE-NEXT: movaps %xmm0, 160(%r9)2525; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2526; SSE-NEXT: movaps %xmm0, 144(%r9)2527; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2528; SSE-NEXT: movaps %xmm0, 128(%r9)2529; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2530; SSE-NEXT: movaps %xmm0, 96(%r9)2531; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2532; SSE-NEXT: movaps %xmm0, 80(%r9)2533; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2534; SSE-NEXT: movaps %xmm0, 64(%r9)2535; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2536; SSE-NEXT: movaps %xmm0, 48(%r9)2537; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2538; SSE-NEXT: movaps %xmm0, 16(%r9)2539; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2540; SSE-NEXT: movaps %xmm0, (%r9)2541; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2542; SSE-NEXT: movaps %xmm0, 272(%r9)2543; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2544; SSE-NEXT: movaps %xmm0, 192(%r9)2545; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2546; SSE-NEXT: movaps %xmm0, 112(%r9)2547; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2548; SSE-NEXT: movaps %xmm0, 32(%r9)2549; SSE-NEXT: addq $248, %rsp2550; SSE-NEXT: retq2551;2552; AVX-LABEL: store_i16_stride5_vf32:2553; AVX: # %bb.0:2554; AVX-NEXT: subq $56, %rsp2555; AVX-NEXT: vmovdqa 32(%rdi), %xmm152556; AVX-NEXT: vmovdqa 48(%rdi), %xmm42557; AVX-NEXT: vmovdqa 32(%rsi), %xmm112558; AVX-NEXT: vmovdqa 48(%rsi), %xmm62559; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm6[3,3,3,3,4,5,6,7]2560; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]2561; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm4[4],xmm0[5,6,7]2562; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3]2563; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm0[0,1,2,3,4,5,6,6]2564; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]2565; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm12566; AVX-NEXT: vmovaps {{.*#+}} ymm10 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]2567; AVX-NEXT: vandnps %ymm1, %ymm10, %ymm22568; AVX-NEXT: vmovdqa 32(%rdx), %xmm122569; AVX-NEXT: vmovdqa 48(%rdx), %xmm12570; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm1[1,1,2,2]2571; AVX-NEXT: vmovdqa 32(%rcx), %xmm132572; AVX-NEXT: vmovdqa 48(%rcx), %xmm32573; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm3[3,3,3,3,4,5,6,7]2574; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]2575; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1],xmm7[2],xmm5[3,4,5,6],xmm7[7]2576; AVX-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]2577; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[2,2,2,2,4,5,6,7]2578; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,5,4,6,7]2579; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm7, %ymm52580; AVX-NEXT: vandps %ymm5, %ymm10, %ymm52581; AVX-NEXT: vorps %ymm2, %ymm5, %ymm52582; AVX-NEXT: vmovdqa 48(%r8), %xmm22583; AVX-NEXT: vpunpckhwd {{.*#+}} xmm7 = xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]2584; AVX-NEXT: vpslldq {{.*#+}} xmm8 = zero,zero,xmm7[0,1,2,3,4,5,6,7,8,9,10,11,12,13]2585; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,7,6]2586; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[2,1,3,3]2587; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm8, %ymm72588; AVX-NEXT: vmovaps {{.*#+}} ymm14 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535]2589; AVX-NEXT: vandnps %ymm7, %ymm14, %ymm72590; AVX-NEXT: vpsrlq $48, %xmm6, %xmm82591; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm8 = xmm4[1],xmm8[1]2592; AVX-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm4[4],xmm6[4],xmm4[5],xmm6[5],xmm4[6],xmm6[6],xmm4[7],xmm6[7]2593; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,2,3,3,4,5,6,7]2594; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,1,2,2]2595; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm4, %ymm42596; AVX-NEXT: vandps %ymm4, %ymm14, %ymm42597; AVX-NEXT: vorps %ymm7, %ymm4, %ymm42598; AVX-NEXT: vextractf128 $1, %ymm4, %xmm62599; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm2[2,3,2,3]2600; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1],xmm7[2],xmm6[3,4,5,6],xmm7[7]2601; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2602; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm7[0],xmm4[1,2,3,4],xmm7[5],xmm4[6,7]2603; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2604; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm12[1,1,2,2]2605; AVX-NEXT: vpshuflw {{.*#+}} xmm6 = xmm13[3,3,3,3,4,5,6,7]2606; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]2607; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm4[0,1],xmm6[2],xmm4[3,4,5,6],xmm6[7]2608; AVX-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm12[4],xmm13[4],xmm12[5],xmm13[5],xmm12[6],xmm13[6],xmm12[7],xmm13[7]2609; AVX-NEXT: vpslldq {{.*#+}} xmm7 = zero,zero,xmm4[0,1,2,3,4,5,6,7,8,9,10,11,12,13]2610; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm6, %ymm62611; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm11[3,3,3,3,4,5,6,7]2612; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]2613; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2,3],xmm15[4],xmm7[5,6,7]2614; AVX-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm15[4],xmm11[4],xmm15[5],xmm11[5],xmm15[6],xmm11[6],xmm15[7],xmm11[7]2615; AVX-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[0,2,3,3,4,5,6,7]2616; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm8[0,1,2,2]2617; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm7, %ymm72618; AVX-NEXT: vmovaps {{.*#+}} ymm8 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]2619; AVX-NEXT: vandnps %ymm6, %ymm8, %ymm62620; AVX-NEXT: vandps %ymm7, %ymm8, %ymm72621; AVX-NEXT: vorps %ymm6, %ymm7, %ymm72622; AVX-NEXT: vpsrlq $48, %xmm11, %xmm62623; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm6 = xmm15[1],xmm6[1]2624; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,2,4,5,6,7]2625; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,1,1]2626; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm6, %ymm62627; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]2628; AVX-NEXT: vextractf128 $1, %ymm5, %xmm12629; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm4[0,1,2,3,4,5,7,6]2630; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[2,1,3,3]2631; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]2632; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]2633; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm3, %ymm32634; AVX-NEXT: vmovdqa 32(%r8), %xmm02635; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm2[3],xmm1[4,5,6,7]2636; AVX-NEXT: vmovdqa %xmm1, (%rsp) # 16-byte Spill2637; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm2[0,1,0,1]2638; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm5[0],xmm1[1],xmm5[2,3,4,5],xmm1[6],xmm5[7]2639; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2640; AVX-NEXT: vandnps %ymm6, %ymm14, %ymm22641; AVX-NEXT: vandps %ymm3, %ymm14, %ymm32642; AVX-NEXT: vorps %ymm2, %ymm3, %ymm22643; AVX-NEXT: vextractf128 $1, %ymm2, %xmm32644; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0,1,2,3],xmm1[4],xmm3[5,6,7]2645; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2646; AVX-NEXT: vextractf128 $1, %ymm7, %xmm12647; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[2,3,2,3]2648; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0],xmm1[1,2,3,4],xmm3[5],xmm1[6,7]2649; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2650; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1],xmm3[2],xmm2[3,4,5,6],xmm3[7]2651; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2652; AVX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm12[0],xmm13[0],xmm12[1],xmm13[1],xmm12[2],xmm13[2],xmm12[3],xmm13[3]2653; AVX-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm13[0],xmm12[0],xmm13[1],xmm12[1],xmm13[2],xmm12[2],xmm13[3],xmm12[3]2654; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]2655; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,2,1]2656; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[1,1,2,3]2657; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,4,6,7]2658; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm12659; AVX-NEXT: vmovdqa 16(%rdx), %xmm92660; AVX-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm15[0],xmm11[0],xmm15[1],xmm11[1],xmm15[2],xmm11[2],xmm15[3],xmm11[3]2661; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm2[0,1,3,2,4,5,6,7]2662; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,1,1]2663; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6,6]2664; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]2665; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm22666; AVX-NEXT: vmovdqa 16(%rcx), %xmm62667; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm7[0,1,2],xmm0[3],xmm7[4,5,6,7]2668; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2669; AVX-NEXT: vandnps %ymm1, %ymm10, %ymm12670; AVX-NEXT: vandps %ymm2, %ymm10, %ymm22671; AVX-NEXT: vorps %ymm1, %ymm2, %ymm12672; AVX-NEXT: vextractf128 $1, %ymm1, %xmm22673; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]2674; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm0[1],xmm2[2,3,4,5],xmm0[6],xmm2[7]2675; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2676; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3],xmm0[4],xmm1[5,6,7]2677; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2678; AVX-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm9[4],xmm6[4],xmm9[5],xmm6[5],xmm9[6],xmm6[6],xmm9[7],xmm6[7]2679; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]2680; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,6]2681; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,1,3,3]2682; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm22683; AVX-NEXT: vmovdqa 16(%rdi), %xmm12684; AVX-NEXT: vmovdqa 16(%rsi), %xmm02685; AVX-NEXT: vpsrlq $48, %xmm0, %xmm32686; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm3 = xmm1[1],xmm3[1]2687; AVX-NEXT: vpunpckhwd {{.*#+}} xmm5 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]2688; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,2,3,3,4,5,6,7]2689; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[0,1,2,2]2690; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm5, %ymm32691; AVX-NEXT: vandnps %ymm2, %ymm14, %ymm22692; AVX-NEXT: vandps %ymm3, %ymm14, %ymm32693; AVX-NEXT: vorps %ymm2, %ymm3, %ymm22694; AVX-NEXT: vmovdqa 16(%r8), %xmm82695; AVX-NEXT: vextractf128 $1, %ymm2, %xmm32696; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm8[2,3,2,3]2697; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm7[2],xmm3[3,4,5,6],xmm7[7]2698; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2699; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm7[0],xmm2[1,2,3,4],xmm7[5],xmm2[6,7]2700; AVX-NEXT: vmovdqa (%rdi), %xmm152701; AVX-NEXT: vmovdqa (%rsi), %xmm72702; AVX-NEXT: vpsrlq $48, %xmm7, %xmm22703; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm15[1],xmm2[1]2704; AVX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]2705; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm3[0,1,3,2,4,5,6,7]2706; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,1,1,1]2707; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm2, %ymm22708; AVX-NEXT: vmovdqa (%rdx), %xmm52709; AVX-NEXT: vmovdqa (%rcx), %xmm42710; AVX-NEXT: vpunpckhwd {{.*#+}} xmm10 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]2711; AVX-NEXT: vpshufhw {{.*#+}} xmm12 = xmm10[0,1,2,3,4,5,7,6]2712; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm12[2,1,3,3]2713; AVX-NEXT: vpunpcklwd {{.*#+}} xmm13 = xmm9[0],xmm6[0],xmm9[1],xmm6[1],xmm9[2],xmm6[2],xmm9[3],xmm6[3]2714; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[0,1,2,2,4,5,6,7]2715; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm13[0,0,2,1]2716; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm12, %ymm122717; AVX-NEXT: vandnps %ymm2, %ymm14, %ymm22718; AVX-NEXT: vandps %ymm14, %ymm12, %ymm122719; AVX-NEXT: vorps %ymm2, %ymm12, %ymm22720; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]2721; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]2722; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]2723; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm3[0,1,2,3,4,5,6,6]2724; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]2725; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm02726; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm6[3,3,3,3,4,5,6,7]2727; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]2728; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm9[1,1,2,2]2729; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0,1],xmm1[2],xmm3[3,4,5,6],xmm1[7]2730; AVX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm6[0],xmm9[0],xmm6[1],xmm9[1],xmm6[2],xmm9[2],xmm6[3],xmm9[3]2731; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,2,2,2,4,5,6,7]2732; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,4,6,7]2733; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm3, %ymm12734; AVX-NEXT: vmovaps {{.*#+}} ymm12 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]2735; AVX-NEXT: vandnps %ymm0, %ymm12, %ymm02736; AVX-NEXT: vandps %ymm1, %ymm12, %ymm12737; AVX-NEXT: vorps %ymm0, %ymm1, %ymm32738; AVX-NEXT: vextractf128 $1, %ymm3, %xmm02739; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm8[3],xmm0[4,5,6,7]2740; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm8[0,1,0,1]2741; AVX-NEXT: vextractf128 $1, %ymm2, %xmm12742; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3],xmm6[4],xmm1[5,6,7]2743; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm6[1],xmm3[2,3,4,5],xmm6[6],xmm3[7]2744; AVX-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]2745; AVX-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,1,2,2,4,5,6,7]2746; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[0,0,2,1]2747; AVX-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]2748; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm8[1,1,2,3]2749; AVX-NEXT: vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,5,4,6,7]2750; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm6, %ymm62751; AVX-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm15[0],xmm7[0],xmm15[1],xmm7[1],xmm15[2],xmm7[2],xmm15[3],xmm7[3]2752; AVX-NEXT: vpshuflw {{.*#+}} xmm9 = xmm8[0,1,3,2,4,5,6,7]2753; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm9[0,1,1,1]2754; AVX-NEXT: vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,6,6]2755; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm8[0,2,2,3]2756; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm9, %ymm82757; AVX-NEXT: vandnps %ymm6, %ymm12, %ymm62758; AVX-NEXT: vandps %ymm12, %ymm8, %ymm82759; AVX-NEXT: vorps %ymm6, %ymm8, %ymm62760; AVX-NEXT: vmovdqa (%r8), %xmm82761; AVX-NEXT: vextractf128 $1, %ymm6, %xmm92762; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm8[0,1,0,1]2763; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0],xmm12[1],xmm9[2,3,4,5],xmm12[6],xmm9[7]2764; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1,2,3],xmm12[4],xmm6[5,6,7]2765; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[1,1,2,2]2766; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[3,3,3,3,4,5,6,7]2767; AVX-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,4,4]2768; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0,1],xmm4[2],xmm5[3,4,5,6],xmm4[7]2769; AVX-NEXT: vpslldq {{.*#+}} xmm5 = zero,zero,xmm10[0,1,2,3,4,5,6,7,8,9,10,11,12,13]2770; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm4, %ymm42771; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm7[3,3,3,3,4,5,6,7]2772; AVX-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]2773; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3],xmm15[4],xmm5[5,6,7]2774; AVX-NEXT: vpunpckhwd {{.*#+}} xmm7 = xmm15[4],xmm7[4],xmm15[5],xmm7[5],xmm15[6],xmm7[6],xmm15[7],xmm7[7]2775; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[0,2,3,3,4,5,6,7]2776; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,1,2,2]2777; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm5, %ymm52778; AVX-NEXT: vmovaps {{.*#+}} ymm7 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]2779; AVX-NEXT: vandnps %ymm4, %ymm7, %ymm42780; AVX-NEXT: vandps %ymm7, %ymm5, %ymm52781; AVX-NEXT: vorps %ymm4, %ymm5, %ymm42782; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm8[2,3,2,3]2783; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm5[2],xmm2[3,4,5,6],xmm5[7]2784; AVX-NEXT: vextractf128 $1, %ymm4, %xmm72785; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm7[1,2,3,4],xmm5[5],xmm7[6,7]2786; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2],xmm8[3],xmm4[4,5,6,7]2787; AVX-NEXT: vmovdqa %xmm4, 32(%r9)2788; AVX-NEXT: vmovdqa %xmm5, 48(%r9)2789; AVX-NEXT: vmovdqa %xmm6, (%r9)2790; AVX-NEXT: vmovdqa %xmm9, 16(%r9)2791; AVX-NEXT: vmovdqa %xmm3, 96(%r9)2792; AVX-NEXT: vmovdqa %xmm0, 112(%r9)2793; AVX-NEXT: vmovdqa %xmm2, 64(%r9)2794; AVX-NEXT: vmovdqa %xmm1, 80(%r9)2795; AVX-NEXT: vmovdqa %xmm11, 128(%r9)2796; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2797; AVX-NEXT: vmovaps %xmm0, 144(%r9)2798; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2799; AVX-NEXT: vmovaps %xmm0, 160(%r9)2800; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2801; AVX-NEXT: vmovaps %xmm0, 176(%r9)2802; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2803; AVX-NEXT: vmovaps %xmm0, 224(%r9)2804; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2805; AVX-NEXT: vmovaps %xmm0, 240(%r9)2806; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2807; AVX-NEXT: vmovaps %xmm0, 192(%r9)2808; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2809; AVX-NEXT: vmovaps %xmm0, 208(%r9)2810; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2811; AVX-NEXT: vmovaps %xmm0, 288(%r9)2812; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2813; AVX-NEXT: vmovaps %xmm0, 304(%r9)2814; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2815; AVX-NEXT: vmovaps %xmm0, 256(%r9)2816; AVX-NEXT: vmovaps (%rsp), %xmm0 # 16-byte Reload2817; AVX-NEXT: vmovaps %xmm0, 272(%r9)2818; AVX-NEXT: addq $56, %rsp2819; AVX-NEXT: vzeroupper2820; AVX-NEXT: retq2821;2822; AVX2-LABEL: store_i16_stride5_vf32:2823; AVX2: # %bb.0:2824; AVX2-NEXT: subq $72, %rsp2825; AVX2-NEXT: vmovdqa (%rdi), %ymm22826; AVX2-NEXT: vmovdqa 32(%rdi), %ymm42827; AVX2-NEXT: vmovdqa 32(%rsi), %ymm32828; AVX2-NEXT: vmovdqa (%r8), %ymm12829; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2830; AVX2-NEXT: vmovdqa (%rdx), %xmm62831; AVX2-NEXT: vmovdqa 32(%rdx), %xmm82832; AVX2-NEXT: vmovdqa (%rcx), %xmm72833; AVX2-NEXT: vmovdqa 32(%rcx), %xmm92834; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3]2835; AVX2-NEXT: vmovdqa {{.*#+}} xmm5 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]2836; AVX2-NEXT: vpshufb %xmm5, %xmm0, %xmm02837; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]2838; AVX2-NEXT: vmovdqa (%rsi), %xmm122839; AVX2-NEXT: vmovdqa 32(%rsi), %xmm102840; AVX2-NEXT: vmovdqa (%rdi), %xmm112841; AVX2-NEXT: vmovdqa 32(%rdi), %xmm132842; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3]2843; AVX2-NEXT: vpshufd {{.*#+}} xmm11 = xmm11[0,2,1,3]2844; AVX2-NEXT: vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,5,6]2845; AVX2-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,1,0,1]2846; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]2847; AVX2-NEXT: vpblendvb %ymm14, %ymm11, %ymm0, %ymm02848; AVX2-NEXT: vpbroadcastq (%r8), %ymm112849; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]2850; AVX2-NEXT: vpblendvb %ymm15, %ymm0, %ymm11, %ymm02851; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2852; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3]2853; AVX2-NEXT: vpshufb %xmm5, %xmm0, %xmm02854; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]2855; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm13[0],xmm10[0],xmm13[1],xmm10[1],xmm13[2],xmm10[2],xmm13[3],xmm10[3]2856; AVX2-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[0,2,1,3]2857; AVX2-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,5,6]2858; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]2859; AVX2-NEXT: vpblendvb %ymm14, %ymm5, %ymm0, %ymm02860; AVX2-NEXT: vpbroadcastq 32(%r8), %ymm52861; AVX2-NEXT: vpblendvb %ymm15, %ymm0, %ymm5, %ymm02862; AVX2-NEXT: vmovdqu %ymm0, (%rsp) # 32-byte Spill2863; AVX2-NEXT: vmovdqa {{.*#+}} xmm11 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]2864; AVX2-NEXT: vpshufb %xmm11, %xmm12, %xmm02865; AVX2-NEXT: vpbroadcastq 8(%rdi), %xmm122866; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm12[1],xmm0[2,3],xmm12[4],xmm0[5],xmm12[6],xmm0[7]2867; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]2868; AVX2-NEXT: vmovdqa {{.*#+}} xmm14 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]2869; AVX2-NEXT: vpshufb %xmm14, %xmm7, %xmm72870; AVX2-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[1,2,2,2]2871; AVX2-NEXT: vpblendw {{.*#+}} xmm6 = xmm7[0],xmm6[1],xmm7[2],xmm6[3],xmm7[4,5],xmm6[6],xmm7[7]2872; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,1,0,0]2873; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm13 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]2874; AVX2-NEXT: vpblendvb %ymm13, %ymm0, %ymm6, %ymm02875; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm1[0,1,1,1]2876; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]2877; AVX2-NEXT: vpblendvb %ymm12, %ymm0, %ymm6, %ymm02878; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2879; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm4[2,3,2,3,6,7,6,7]2880; AVX2-NEXT: vpshufhw {{.*#+}} ymm7 = ymm3[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]2881; AVX2-NEXT: vpshufd {{.*#+}} ymm7 = ymm7[2,3,2,2,6,7,6,6]2882; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm7[0],ymm0[1],ymm7[2],ymm0[3],ymm7[4,5],ymm0[6],ymm7[7,8],ymm0[9],ymm7[10],ymm0[11],ymm7[12,13],ymm0[14],ymm7[15]2883; AVX2-NEXT: vmovdqa (%rsi), %ymm52884; AVX2-NEXT: vpshufb %xmm11, %xmm10, %xmm102885; AVX2-NEXT: vpbroadcastq 40(%rdi), %xmm112886; AVX2-NEXT: vpblendw {{.*#+}} xmm15 = xmm10[0],xmm11[1],xmm10[2,3],xmm11[4],xmm10[5],xmm11[6],xmm10[7]2887; AVX2-NEXT: vmovdqa 32(%rdx), %ymm102888; AVX2-NEXT: vpshufb %xmm14, %xmm9, %xmm92889; AVX2-NEXT: vmovdqa 32(%rcx), %ymm112890; AVX2-NEXT: vpshufd {{.*#+}} xmm8 = xmm8[1,2,2,2]2891; AVX2-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0],xmm8[1],xmm9[2],xmm8[3],xmm9[4,5],xmm8[6],xmm9[7]2892; AVX2-NEXT: vmovdqa 32(%r8), %ymm62893; AVX2-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2894; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]2895; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm15[0,1,0,1]2896; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,0,0]2897; AVX2-NEXT: vpblendvb %ymm13, %ymm14, %ymm9, %ymm92898; AVX2-NEXT: vpshufd {{.*#+}} ymm13 = ymm10[3,2,3,3,7,6,7,7]2899; AVX2-NEXT: vpshufhw {{.*#+}} ymm14 = ymm11[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]2900; AVX2-NEXT: vpshufd {{.*#+}} ymm14 = ymm14[2,3,2,3,6,7,6,7]2901; AVX2-NEXT: vpblendw {{.*#+}} ymm13 = ymm14[0],ymm13[1],ymm14[2],ymm13[3,4],ymm14[5,6,7,8],ymm13[9],ymm14[10],ymm13[11,12],ymm14[13,14,15]2902; AVX2-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,2,3,2]2903; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm14 = [0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0]2904; AVX2-NEXT: vpblendvb %ymm14, %ymm0, %ymm13, %ymm12905; AVX2-NEXT: vpermq {{.*#+}} ymm13 = ymm6[0,1,1,1]2906; AVX2-NEXT: vpblendvb %ymm12, %ymm9, %ymm13, %ymm02907; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2908; AVX2-NEXT: vpshufd {{.*#+}} ymm12 = ymm2[2,3,2,3,6,7,6,7]2909; AVX2-NEXT: vmovdqa %ymm5, %ymm92910; AVX2-NEXT: vpshufhw {{.*#+}} ymm13 = ymm5[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]2911; AVX2-NEXT: vpshufd {{.*#+}} ymm13 = ymm13[2,3,2,2,6,7,6,6]2912; AVX2-NEXT: vpblendw {{.*#+}} ymm12 = ymm13[0],ymm12[1],ymm13[2],ymm12[3],ymm13[4,5],ymm12[6],ymm13[7,8],ymm12[9],ymm13[10],ymm12[11],ymm13[12,13],ymm12[14],ymm13[15]2913; AVX2-NEXT: vmovdqa (%rcx), %ymm132914; AVX2-NEXT: vpshufhw {{.*#+}} ymm15 = ymm13[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]2915; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm15[2,3,2,3,6,7,6,7]2916; AVX2-NEXT: vmovdqa (%rdx), %ymm152917; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm15[3,2,3,3,7,6,7,7]2918; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm5[1],ymm0[2],ymm5[3,4],ymm0[5,6,7,8],ymm5[9],ymm0[10],ymm5[11,12],ymm0[13,14,15]2919; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm12[2,3,2,2]2920; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,2]2921; AVX2-NEXT: vpblendvb %ymm14, %ymm5, %ymm0, %ymm02922; AVX2-NEXT: vpbroadcastq 56(%r8), %ymm52923; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm14 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]2924; AVX2-NEXT: vpblendvb %ymm14, %ymm1, %ymm5, %ymm122925; AVX2-NEXT: vpbroadcastq 24(%r8), %ymm12926; AVX2-NEXT: vpblendvb %ymm14, %ymm0, %ymm1, %ymm142927; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]2928; AVX2-NEXT: # ymm0 = mem[0,1,0,1]2929; AVX2-NEXT: vpshufb %ymm0, %ymm11, %ymm12930; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm10[1,1,1,2,5,5,5,6]2931; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm5[1],ymm1[2,3],ymm5[4],ymm1[5],ymm5[6],ymm1[7,8],ymm5[9],ymm1[10,11],ymm5[12],ymm1[13],ymm5[14],ymm1[15]2932; AVX2-NEXT: vpshuflw {{.*#+}} ymm5 = ymm3[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]2933; AVX2-NEXT: vpshufhw {{.*#+}} ymm5 = ymm5[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]2934; AVX2-NEXT: vmovdqa %ymm4, %ymm72935; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm4[0,1,2,1,4,5,6,5]2936; AVX2-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0,1],ymm6[2],ymm5[3],ymm6[4],ymm5[5,6],ymm6[7],ymm5[8,9],ymm6[10],ymm5[11],ymm6[12],ymm5[13,14],ymm6[15]2937; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]2938; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,3,2,3]2939; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]2940; AVX2-NEXT: vpblendvb %ymm6, %ymm1, %ymm5, %ymm12941; AVX2-NEXT: vpshufb %ymm0, %ymm13, %ymm02942; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm15[1,1,1,2,5,5,5,6]2943; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm5[1],ymm0[2,3],ymm5[4],ymm0[5],ymm5[6],ymm0[7,8],ymm5[9],ymm0[10,11],ymm5[12],ymm0[13],ymm5[14],ymm0[15]2944; AVX2-NEXT: vpshuflw {{.*#+}} ymm5 = ymm9[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]2945; AVX2-NEXT: vpshufhw {{.*#+}} ymm5 = ymm5[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]2946; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm2[0,1,2,1,4,5,6,5]2947; AVX2-NEXT: vmovdqa %ymm2, %ymm82948; AVX2-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1],ymm4[2],ymm5[3],ymm4[4],ymm5[5,6],ymm4[7],ymm5[8,9],ymm4[10],ymm5[11],ymm4[12],ymm5[13,14],ymm4[15]2949; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]2950; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,3,2,3]2951; AVX2-NEXT: vpblendvb %ymm6, %ymm0, %ymm4, %ymm42952; AVX2-NEXT: vpbroadcastq 48(%r8), %ymm02953; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]2954; AVX2-NEXT: vpblendvb %ymm5, %ymm1, %ymm0, %ymm02955; AVX2-NEXT: vpbroadcastq 16(%r8), %ymm12956; AVX2-NEXT: vpblendvb %ymm5, %ymm4, %ymm1, %ymm12957; AVX2-NEXT: vmovdqa {{.*#+}} ymm4 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]2958; AVX2-NEXT: vpshufb %ymm4, %ymm11, %ymm52959; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm10[3,0,3,0,7,4,7,4]2960; AVX2-NEXT: vpblendw {{.*#+}} ymm5 = ymm6[0],ymm5[1],ymm6[2],ymm5[3],ymm6[4,5],ymm5[6],ymm6[7,8],ymm5[9],ymm6[10],ymm5[11],ymm6[12,13],ymm5[14],ymm6[15]2961; AVX2-NEXT: vmovdqa {{.*#+}} ymm6 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]2962; AVX2-NEXT: vpshufb %ymm6, %ymm3, %ymm32963; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm7[1,1,2,2]2964; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]2965; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]2966; AVX2-NEXT: vpblendvb %ymm3, %ymm5, %ymm2, %ymm22967; AVX2-NEXT: vpshufb %ymm4, %ymm13, %ymm42968; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm15[3,0,3,0,7,4,7,4]2969; AVX2-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]2970; AVX2-NEXT: vpshufb %ymm6, %ymm9, %ymm52971; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm8[1,1,2,2]2972; AVX2-NEXT: vpblendw {{.*#+}} ymm5 = ymm6[0],ymm5[1],ymm6[2,3],ymm5[4],ymm6[5],ymm5[6],ymm6[7,8],ymm5[9],ymm6[10,11],ymm5[12],ymm6[13],ymm5[14],ymm6[15]2973; AVX2-NEXT: vpblendvb %ymm3, %ymm4, %ymm5, %ymm32974; AVX2-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload2975; AVX2-NEXT: # ymm4 = mem[1,1,2,2]2976; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]2977; AVX2-NEXT: vpblendvb %ymm5, %ymm2, %ymm4, %ymm22978; AVX2-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload2979; AVX2-NEXT: # ymm4 = mem[1,1,2,2]2980; AVX2-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm32981; AVX2-NEXT: vmovdqa %ymm3, 64(%r9)2982; AVX2-NEXT: vmovdqa %ymm2, 224(%r9)2983; AVX2-NEXT: vmovdqa %ymm1, 96(%r9)2984; AVX2-NEXT: vmovdqa %ymm14, 128(%r9)2985; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload2986; AVX2-NEXT: vmovaps %ymm1, 192(%r9)2987; AVX2-NEXT: vmovdqa %ymm12, 288(%r9)2988; AVX2-NEXT: vmovdqa %ymm0, 256(%r9)2989; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2990; AVX2-NEXT: vmovaps %ymm0, 32(%r9)2991; AVX2-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload2992; AVX2-NEXT: vmovaps %ymm0, 160(%r9)2993; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2994; AVX2-NEXT: vmovaps %ymm0, (%r9)2995; AVX2-NEXT: addq $72, %rsp2996; AVX2-NEXT: vzeroupper2997; AVX2-NEXT: retq2998;2999; AVX2-FP-LABEL: store_i16_stride5_vf32:3000; AVX2-FP: # %bb.0:3001; AVX2-FP-NEXT: subq $40, %rsp3002; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm53003; AVX2-FP-NEXT: vmovdqa 32(%rdi), %ymm33004; AVX2-FP-NEXT: vmovdqa 32(%rsi), %ymm43005; AVX2-FP-NEXT: vmovdqa (%r8), %ymm13006; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3007; AVX2-FP-NEXT: vmovdqa 32(%r8), %ymm23008; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3009; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm03010; AVX2-FP-NEXT: vmovdqa 32(%rsi), %xmm83011; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm7 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]3012; AVX2-FP-NEXT: vpshufb %xmm7, %xmm0, %xmm63013; AVX2-FP-NEXT: vpbroadcastq 8(%rdi), %xmm93014; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0],xmm9[1],xmm6[2,3],xmm9[4],xmm6[5],xmm9[6],xmm6[7]3015; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]3016; AVX2-FP-NEXT: vmovdqa (%rcx), %xmm133017; AVX2-FP-NEXT: vmovdqa 32(%rcx), %xmm113018; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm10 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]3019; AVX2-FP-NEXT: vpshufb %xmm10, %xmm13, %xmm93020; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm143021; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm12 = xmm14[1,2,2,2]3022; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0],xmm12[1],xmm9[2],xmm12[3],xmm9[4,5],xmm12[6],xmm9[7]3023; AVX2-FP-NEXT: vpermq {{.*#+}} ymm12 = ymm9[0,1,0,0]3024; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]3025; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm6, %ymm12, %ymm123026; AVX2-FP-NEXT: vpermq {{.*#+}} ymm15 = ymm1[0,1,1,1]3027; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]3028; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm12, %ymm15, %ymm13029; AVX2-FP-NEXT: vmovdqu %ymm1, (%rsp) # 32-byte Spill3030; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm123031; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm12[0],xmm0[0],xmm12[1],xmm0[1],xmm12[2],xmm0[2],xmm12[3],xmm0[3]3032; AVX2-FP-NEXT: vmovdqa 32(%rdx), %xmm123033; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm13 = xmm13[0],xmm14[0],xmm13[1],xmm14[1],xmm13[2],xmm14[2],xmm13[3],xmm14[3]3034; AVX2-FP-NEXT: vpshufb %xmm7, %xmm8, %xmm73035; AVX2-FP-NEXT: vpbroadcastq 40(%rdi), %xmm143036; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0],xmm14[1],xmm7[2,3],xmm14[4],xmm7[5],xmm14[6],xmm7[7]3037; AVX2-FP-NEXT: vpshufb %xmm10, %xmm11, %xmm103038; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm14 = xmm12[1,2,2,2]3039; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0],xmm14[1],xmm10[2],xmm14[3],xmm10[4,5],xmm14[6],xmm10[7]3040; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]3041; AVX2-FP-NEXT: vpshufb %xmm14, %xmm0, %xmm03042; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]3043; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,0,1]3044; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,1,0,0]3045; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm7, %ymm10, %ymm73046; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm15 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]3047; AVX2-FP-NEXT: vpshufb %xmm15, %xmm13, %xmm93048; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]3049; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]3050; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm0, %ymm9, %ymm03051; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm2[0,1,1,1]3052; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm7, %ymm9, %ymm13053; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3054; AVX2-FP-NEXT: vpbroadcastq (%r8), %ymm73055; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm1 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]3056; AVX2-FP-NEXT: vpblendvb %ymm1, %ymm0, %ymm7, %ymm03057; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3058; AVX2-FP-NEXT: vmovdqa 32(%rdi), %xmm03059; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],xmm8[3]3060; AVX2-FP-NEXT: vmovdqa 32(%rdx), %ymm93061; AVX2-FP-NEXT: vpshufb %xmm14, %xmm0, %xmm03062; AVX2-FP-NEXT: vmovdqa 32(%rcx), %ymm103063; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]3064; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3]3065; AVX2-FP-NEXT: vpshufb %xmm15, %xmm8, %xmm83066; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,1,0,1]3067; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm0, %ymm8, %ymm03068; AVX2-FP-NEXT: vpbroadcastq 32(%r8), %ymm83069; AVX2-FP-NEXT: vpblendvb %ymm1, %ymm0, %ymm8, %ymm83070; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]3071; AVX2-FP-NEXT: # ymm0 = mem[0,1,0,1]3072; AVX2-FP-NEXT: vpshufb %ymm0, %ymm4, %ymm13073; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm11 = ymm3[2,3,2,3,6,7,6,7]3074; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm11[1],ymm1[2],ymm11[3],ymm1[4,5],ymm11[6],ymm1[7,8],ymm11[9],ymm1[10],ymm11[11],ymm1[12,13],ymm11[14],ymm1[15]3075; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,2]3076; AVX2-FP-NEXT: vpbroadcastq {{.*#+}} ymm12 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]3077; AVX2-FP-NEXT: vpshufb %ymm12, %ymm10, %ymm113078; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm13 = ymm9[3,2,3,3,7,6,7,7]3079; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm11 = ymm11[0],ymm13[1],ymm11[2],ymm13[3,4],ymm11[5,6,7,8],ymm13[9],ymm11[10],ymm13[11,12],ymm11[13,14,15]3080; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,3,2]3081; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0]3082; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm1, %ymm11, %ymm13083; AVX2-FP-NEXT: vmovdqa (%rsi), %ymm113084; AVX2-FP-NEXT: vpshufb %ymm0, %ymm11, %ymm03085; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm14 = ymm5[2,3,2,3,6,7,6,7]3086; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm14[1],ymm0[2],ymm14[3],ymm0[4,5],ymm14[6],ymm0[7,8],ymm14[9],ymm0[10],ymm14[11],ymm0[12,13],ymm14[14],ymm0[15]3087; AVX2-FP-NEXT: vmovdqa (%rcx), %ymm143088; AVX2-FP-NEXT: vpshufb %ymm12, %ymm14, %ymm123089; AVX2-FP-NEXT: vmovdqa (%rdx), %ymm153090; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm6 = ymm15[3,2,3,3,7,6,7,7]3091; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm6 = ymm12[0],ymm6[1],ymm12[2],ymm6[3,4],ymm12[5,6,7,8],ymm6[9],ymm12[10],ymm6[11,12],ymm12[13,14,15]3092; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]3093; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,3,2]3094; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm0, %ymm6, %ymm03095; AVX2-FP-NEXT: vpbroadcastq 56(%r8), %ymm63096; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]3097; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm1, %ymm6, %ymm123098; AVX2-FP-NEXT: vpbroadcastq 24(%r8), %ymm13099; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm0, %ymm1, %ymm133100; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]3101; AVX2-FP-NEXT: # ymm2 = mem[0,1,0,1]3102; AVX2-FP-NEXT: vpshufb %ymm2, %ymm10, %ymm13103; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm6 = ymm9[1,1,1,2,5,5,5,6]3104; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm6[1],ymm1[2,3],ymm6[4],ymm1[5],ymm6[6],ymm1[7,8],ymm6[9],ymm1[10,11],ymm6[12],ymm1[13],ymm6[14],ymm1[15]3105; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm6 = [22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0,22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0]3106; AVX2-FP-NEXT: # ymm6 = mem[0,1,0,1]3107; AVX2-FP-NEXT: vpshufb %ymm6, %ymm4, %ymm03108; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm7 = ymm3[0,1,2,1,4,5,6,5]3109; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm7[2],ymm0[3],ymm7[4],ymm0[5,6],ymm7[7],ymm0[8,9],ymm7[10],ymm0[11],ymm7[12],ymm0[13,14],ymm7[15]3110; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]3111; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]3112; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]3113; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm1, %ymm0, %ymm03114; AVX2-FP-NEXT: vpshufb %ymm2, %ymm14, %ymm13115; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm2 = ymm15[1,1,1,2,5,5,5,6]3116; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]3117; AVX2-FP-NEXT: vpshufb %ymm6, %ymm11, %ymm23118; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm6 = ymm5[0,1,2,1,4,5,6,5]3119; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm6[2],ymm2[3],ymm6[4],ymm2[5,6],ymm6[7],ymm2[8,9],ymm6[10],ymm2[11],ymm6[12],ymm2[13,14],ymm6[15]3120; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]3121; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]3122; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm1, %ymm2, %ymm13123; AVX2-FP-NEXT: vpbroadcastq 48(%r8), %ymm23124; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]3125; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm0, %ymm2, %ymm03126; AVX2-FP-NEXT: vpbroadcastq 16(%r8), %ymm23127; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm1, %ymm2, %ymm13128; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm2 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]3129; AVX2-FP-NEXT: vpshufb %ymm2, %ymm10, %ymm63130; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm7 = ymm9[3,0,3,0,7,4,7,4]3131; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm6 = ymm7[0],ymm6[1],ymm7[2],ymm6[3],ymm7[4,5],ymm6[6],ymm7[7,8],ymm6[9],ymm7[10],ymm6[11],ymm7[12,13],ymm6[14],ymm7[15]3132; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm7 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]3133; AVX2-FP-NEXT: vpshufb %ymm7, %ymm4, %ymm43134; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[1,1,2,2]3135; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2,3],ymm4[4],ymm3[5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10,11],ymm4[12],ymm3[13],ymm4[14],ymm3[15]3136; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]3137; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm6, %ymm3, %ymm33138; AVX2-FP-NEXT: vpshufb %ymm2, %ymm14, %ymm23139; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm6 = ymm15[3,0,3,0,7,4,7,4]3140; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm6[0],ymm2[1],ymm6[2],ymm2[3],ymm6[4,5],ymm2[6],ymm6[7,8],ymm2[9],ymm6[10],ymm2[11],ymm6[12,13],ymm2[14],ymm6[15]3141; AVX2-FP-NEXT: vpshufb %ymm7, %ymm11, %ymm63142; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[1,1,2,2]3143; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0],ymm6[1],ymm5[2,3],ymm6[4],ymm5[5],ymm6[6],ymm5[7,8],ymm6[9],ymm5[10,11],ymm6[12],ymm5[13],ymm6[14],ymm5[15]3144; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm2, %ymm5, %ymm23145; AVX2-FP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload3146; AVX2-FP-NEXT: # ymm4 = mem[1,1,2,2]3147; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]3148; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm33149; AVX2-FP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload3150; AVX2-FP-NEXT: # ymm4 = mem[1,1,2,2]3151; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm2, %ymm4, %ymm23152; AVX2-FP-NEXT: vmovdqa %ymm2, 64(%r9)3153; AVX2-FP-NEXT: vmovdqa %ymm3, 224(%r9)3154; AVX2-FP-NEXT: vmovdqa %ymm1, 96(%r9)3155; AVX2-FP-NEXT: vmovdqa %ymm13, 128(%r9)3156; AVX2-FP-NEXT: vmovdqa %ymm12, 288(%r9)3157; AVX2-FP-NEXT: vmovdqa %ymm0, 256(%r9)3158; AVX2-FP-NEXT: vmovdqa %ymm8, 160(%r9)3159; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3160; AVX2-FP-NEXT: vmovaps %ymm0, 192(%r9)3161; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3162; AVX2-FP-NEXT: vmovaps %ymm0, (%r9)3163; AVX2-FP-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload3164; AVX2-FP-NEXT: vmovaps %ymm0, 32(%r9)3165; AVX2-FP-NEXT: addq $40, %rsp3166; AVX2-FP-NEXT: vzeroupper3167; AVX2-FP-NEXT: retq3168;3169; AVX2-FCP-LABEL: store_i16_stride5_vf32:3170; AVX2-FCP: # %bb.0:3171; AVX2-FCP-NEXT: subq $40, %rsp3172; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm53173; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %ymm33174; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %ymm43175; AVX2-FCP-NEXT: vmovdqa (%r8), %ymm13176; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3177; AVX2-FCP-NEXT: vmovdqa 32(%r8), %ymm23178; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3179; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm03180; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %xmm83181; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm7 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]3182; AVX2-FCP-NEXT: vpshufb %xmm7, %xmm0, %xmm63183; AVX2-FCP-NEXT: vpbroadcastq 8(%rdi), %xmm93184; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0],xmm9[1],xmm6[2,3],xmm9[4],xmm6[5],xmm9[6],xmm6[7]3185; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]3186; AVX2-FCP-NEXT: vmovdqa (%rcx), %xmm133187; AVX2-FCP-NEXT: vmovdqa 32(%rcx), %xmm113188; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm10 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]3189; AVX2-FCP-NEXT: vpshufb %xmm10, %xmm13, %xmm93190; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm143191; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm12 = xmm14[1,2,2,2]3192; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0],xmm12[1],xmm9[2],xmm12[3],xmm9[4,5],xmm12[6],xmm9[7]3193; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm12 = ymm9[0,1,0,0]3194; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]3195; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm6, %ymm12, %ymm123196; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm15 = ymm1[0,1,1,1]3197; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]3198; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm12, %ymm15, %ymm13199; AVX2-FCP-NEXT: vmovdqu %ymm1, (%rsp) # 32-byte Spill3200; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm123201; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm12[0],xmm0[0],xmm12[1],xmm0[1],xmm12[2],xmm0[2],xmm12[3],xmm0[3]3202; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %xmm123203; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm13 = xmm13[0],xmm14[0],xmm13[1],xmm14[1],xmm13[2],xmm14[2],xmm13[3],xmm14[3]3204; AVX2-FCP-NEXT: vpshufb %xmm7, %xmm8, %xmm73205; AVX2-FCP-NEXT: vpbroadcastq 40(%rdi), %xmm143206; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0],xmm14[1],xmm7[2,3],xmm14[4],xmm7[5],xmm14[6],xmm7[7]3207; AVX2-FCP-NEXT: vpshufb %xmm10, %xmm11, %xmm103208; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm14 = xmm12[1,2,2,2]3209; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0],xmm14[1],xmm10[2],xmm14[3],xmm10[4,5],xmm14[6],xmm10[7]3210; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]3211; AVX2-FCP-NEXT: vpshufb %xmm14, %xmm0, %xmm03212; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]3213; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,0,1]3214; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,1,0,0]3215; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm7, %ymm10, %ymm73216; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm15 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]3217; AVX2-FCP-NEXT: vpshufb %xmm15, %xmm13, %xmm93218; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]3219; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]3220; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm0, %ymm9, %ymm03221; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm2[0,1,1,1]3222; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm7, %ymm9, %ymm13223; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3224; AVX2-FCP-NEXT: vpbroadcastq (%r8), %ymm73225; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm1 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]3226; AVX2-FCP-NEXT: vpblendvb %ymm1, %ymm0, %ymm7, %ymm03227; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3228; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %xmm03229; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],xmm8[3]3230; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %ymm93231; AVX2-FCP-NEXT: vpshufb %xmm14, %xmm0, %xmm03232; AVX2-FCP-NEXT: vmovdqa 32(%rcx), %ymm103233; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]3234; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3]3235; AVX2-FCP-NEXT: vpshufb %xmm15, %xmm8, %xmm83236; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,1,0,1]3237; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm0, %ymm8, %ymm03238; AVX2-FCP-NEXT: vpbroadcastq 32(%r8), %ymm83239; AVX2-FCP-NEXT: vpblendvb %ymm1, %ymm0, %ymm8, %ymm83240; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]3241; AVX2-FCP-NEXT: # ymm0 = mem[0,1,0,1]3242; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm4, %ymm13243; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm11 = ymm3[2,3,2,3,6,7,6,7]3244; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm11[1],ymm1[2],ymm11[3],ymm1[4,5],ymm11[6],ymm1[7,8],ymm11[9],ymm1[10],ymm11[11],ymm1[12,13],ymm11[14],ymm1[15]3245; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,2]3246; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm12 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]3247; AVX2-FCP-NEXT: vpshufb %ymm12, %ymm10, %ymm113248; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm9[3,2,3,3,7,6,7,7]3249; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm11[0],ymm13[1],ymm11[2],ymm13[3,4],ymm11[5,6,7,8],ymm13[9],ymm11[10],ymm13[11,12],ymm11[13,14,15]3250; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,3,2]3251; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0]3252; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm1, %ymm11, %ymm13253; AVX2-FCP-NEXT: vmovdqa (%rsi), %ymm113254; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm11, %ymm03255; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm14 = ymm5[2,3,2,3,6,7,6,7]3256; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm14[1],ymm0[2],ymm14[3],ymm0[4,5],ymm14[6],ymm0[7,8],ymm14[9],ymm0[10],ymm14[11],ymm0[12,13],ymm14[14],ymm0[15]3257; AVX2-FCP-NEXT: vmovdqa (%rcx), %ymm143258; AVX2-FCP-NEXT: vpshufb %ymm12, %ymm14, %ymm123259; AVX2-FCP-NEXT: vmovdqa (%rdx), %ymm153260; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm15[3,2,3,3,7,6,7,7]3261; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm12[0],ymm6[1],ymm12[2],ymm6[3,4],ymm12[5,6,7,8],ymm6[9],ymm12[10],ymm6[11,12],ymm12[13,14,15]3262; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]3263; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,3,2]3264; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm0, %ymm6, %ymm03265; AVX2-FCP-NEXT: vpbroadcastq 56(%r8), %ymm63266; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]3267; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm1, %ymm6, %ymm123268; AVX2-FCP-NEXT: vpbroadcastq 24(%r8), %ymm13269; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm0, %ymm1, %ymm133270; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]3271; AVX2-FCP-NEXT: # ymm2 = mem[0,1,0,1]3272; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm10, %ymm13273; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm9[1,1,1,2,5,5,5,6]3274; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm6[1],ymm1[2,3],ymm6[4],ymm1[5],ymm6[6],ymm1[7,8],ymm6[9],ymm1[10,11],ymm6[12],ymm1[13],ymm6[14],ymm1[15]3275; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm6 = [22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0,22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0]3276; AVX2-FCP-NEXT: # ymm6 = mem[0,1,0,1]3277; AVX2-FCP-NEXT: vpshufb %ymm6, %ymm4, %ymm03278; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm7 = ymm3[0,1,2,1,4,5,6,5]3279; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm7[2],ymm0[3],ymm7[4],ymm0[5,6],ymm7[7],ymm0[8,9],ymm7[10],ymm0[11],ymm7[12],ymm0[13,14],ymm7[15]3280; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]3281; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]3282; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]3283; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm1, %ymm0, %ymm03284; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm14, %ymm13285; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm15[1,1,1,2,5,5,5,6]3286; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]3287; AVX2-FCP-NEXT: vpshufb %ymm6, %ymm11, %ymm23288; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm5[0,1,2,1,4,5,6,5]3289; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm6[2],ymm2[3],ymm6[4],ymm2[5,6],ymm6[7],ymm2[8,9],ymm6[10],ymm2[11],ymm6[12],ymm2[13,14],ymm6[15]3290; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]3291; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]3292; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm1, %ymm2, %ymm13293; AVX2-FCP-NEXT: vpbroadcastq 48(%r8), %ymm23294; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]3295; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm0, %ymm2, %ymm03296; AVX2-FCP-NEXT: vpbroadcastq 16(%r8), %ymm23297; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm1, %ymm2, %ymm13298; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm2 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]3299; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm10, %ymm63300; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm7 = ymm9[3,0,3,0,7,4,7,4]3301; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm7[0],ymm6[1],ymm7[2],ymm6[3],ymm7[4,5],ymm6[6],ymm7[7,8],ymm6[9],ymm7[10],ymm6[11],ymm7[12,13],ymm6[14],ymm7[15]3302; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm7 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]3303; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm4, %ymm43304; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[1,1,2,2]3305; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2,3],ymm4[4],ymm3[5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10,11],ymm4[12],ymm3[13],ymm4[14],ymm3[15]3306; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]3307; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm6, %ymm3, %ymm33308; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm14, %ymm23309; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm15[3,0,3,0,7,4,7,4]3310; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm6[0],ymm2[1],ymm6[2],ymm2[3],ymm6[4,5],ymm2[6],ymm6[7,8],ymm2[9],ymm6[10],ymm2[11],ymm6[12,13],ymm2[14],ymm6[15]3311; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm11, %ymm63312; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[1,1,2,2]3313; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0],ymm6[1],ymm5[2,3],ymm6[4],ymm5[5],ymm6[6],ymm5[7,8],ymm6[9],ymm5[10,11],ymm6[12],ymm5[13],ymm6[14],ymm5[15]3314; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm2, %ymm5, %ymm23315; AVX2-FCP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload3316; AVX2-FCP-NEXT: # ymm4 = mem[1,1,2,2]3317; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]3318; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm33319; AVX2-FCP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload3320; AVX2-FCP-NEXT: # ymm4 = mem[1,1,2,2]3321; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm2, %ymm4, %ymm23322; AVX2-FCP-NEXT: vmovdqa %ymm2, 64(%r9)3323; AVX2-FCP-NEXT: vmovdqa %ymm3, 224(%r9)3324; AVX2-FCP-NEXT: vmovdqa %ymm1, 96(%r9)3325; AVX2-FCP-NEXT: vmovdqa %ymm13, 128(%r9)3326; AVX2-FCP-NEXT: vmovdqa %ymm12, 288(%r9)3327; AVX2-FCP-NEXT: vmovdqa %ymm0, 256(%r9)3328; AVX2-FCP-NEXT: vmovdqa %ymm8, 160(%r9)3329; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3330; AVX2-FCP-NEXT: vmovaps %ymm0, 192(%r9)3331; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3332; AVX2-FCP-NEXT: vmovaps %ymm0, (%r9)3333; AVX2-FCP-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload3334; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%r9)3335; AVX2-FCP-NEXT: addq $40, %rsp3336; AVX2-FCP-NEXT: vzeroupper3337; AVX2-FCP-NEXT: retq3338;3339; AVX512-LABEL: store_i16_stride5_vf32:3340; AVX512: # %bb.0:3341; AVX512-NEXT: vmovdqa 32(%rdx), %xmm103342; AVX512-NEXT: vmovdqa (%rcx), %xmm93343; AVX512-NEXT: vmovdqa 32(%rcx), %xmm113344; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm11[0],xmm10[0],xmm11[1],xmm10[1],xmm11[2],xmm10[2],xmm11[3],xmm10[3]3345; AVX512-NEXT: vmovdqa {{.*#+}} xmm1 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]3346; AVX512-NEXT: vpshufb %xmm1, %xmm0, %xmm03347; AVX512-NEXT: vmovdqa64 %xmm1, %xmm233348; AVX512-NEXT: vmovdqa64 (%rdx), %ymm183349; AVX512-NEXT: vmovdqa 32(%rdx), %ymm53350; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm18[3,2,3,3,7,6,7,7]3351; AVX512-NEXT: vmovdqa (%rcx), %ymm73352; AVX512-NEXT: vpshufhw {{.*#+}} ymm2 = ymm7[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]3353; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[2,3,2,3,6,7,6,7]3354; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2],ymm1[3,4],ymm2[5,6,7,8],ymm1[9],ymm2[10],ymm1[11,12],ymm2[13,14,15]3355; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,2]3356; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[0,1,0,1]3357; AVX512-NEXT: vmovdqa (%rsi), %xmm33358; AVX512-NEXT: vmovdqa 32(%rsi), %xmm13359; AVX512-NEXT: vmovdqa (%rdi), %xmm83360; AVX512-NEXT: vmovdqa 32(%rdi), %xmm23361; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]3362; AVX512-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]3363; AVX512-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,5,6]3364; AVX512-NEXT: vmovdqa (%rdi), %ymm43365; AVX512-NEXT: vpshufd {{.*#+}} ymm12 = ymm4[2,3,2,3,6,7,6,7]3366; AVX512-NEXT: vmovdqa (%rsi), %ymm63367; AVX512-NEXT: vpshufhw {{.*#+}} ymm14 = ymm6[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]3368; AVX512-NEXT: vpshufd {{.*#+}} ymm14 = ymm14[2,3,2,2,6,7,6,6]3369; AVX512-NEXT: vpblendw {{.*#+}} ymm12 = ymm14[0],ymm12[1],ymm14[2],ymm12[3],ymm14[4,5],ymm12[6],ymm14[7,8],ymm12[9],ymm14[10],ymm12[11],ymm14[12,13],ymm12[14],ymm14[15]3370; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,3,2,2]3371; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm12 = zmm12[0,1,2,3],zmm2[0,1,0,1]3372; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm17 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]3373; AVX512-NEXT: vpternlogq {{.*#+}} zmm12 = zmm0 ^ (zmm17 & (zmm12 ^ zmm0))3374; AVX512-NEXT: vpbroadcastq 24(%r8), %ymm03375; AVX512-NEXT: vpbroadcastq 32(%r8), %ymm23376; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm193377; AVX512-NEXT: vpternlogq {{.*#+}} zmm19 = zmm19 ^ (mem & (zmm19 ^ zmm12))3378; AVX512-NEXT: vmovdqa 32(%rsi), %ymm143379; AVX512-NEXT: vmovdqa {{.*#+}} ymm2 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]3380; AVX512-NEXT: vpshufb %ymm2, %ymm14, %ymm03381; AVX512-NEXT: vmovdqa64 %ymm2, %ymm213382; AVX512-NEXT: vmovdqa64 32(%rdi), %ymm163383; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm16[1,1,2,2]3384; AVX512-NEXT: vpblendw {{.*#+}} ymm12 = ymm12[0],ymm0[1],ymm12[2,3],ymm0[4],ymm12[5],ymm0[6],ymm12[7,8],ymm0[9],ymm12[10,11],ymm0[12],ymm12[13],ymm0[14],ymm12[15]3385; AVX512-NEXT: vmovdqa {{.*#+}} xmm0 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]3386; AVX512-NEXT: vpshufb %xmm0, %xmm1, %xmm13387; AVX512-NEXT: vpbroadcastq 40(%rdi), %xmm153388; AVX512-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm15[1],xmm1[2,3],xmm15[4],xmm1[5],xmm15[6],xmm1[7]3389; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]3390; AVX512-NEXT: vinserti64x4 $1, %ymm12, %zmm1, %zmm123391; AVX512-NEXT: vmovdqa 32(%rcx), %ymm153392; AVX512-NEXT: vmovdqa {{.*#+}} ymm2 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]3393; AVX512-NEXT: vpshufb %ymm2, %ymm15, %ymm13394; AVX512-NEXT: vmovdqa64 %ymm2, %ymm223395; AVX512-NEXT: vpshufd {{.*#+}} ymm13 = ymm5[3,0,3,0,7,4,7,4]3396; AVX512-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0],ymm1[1],ymm13[2],ymm1[3],ymm13[4,5],ymm1[6],ymm13[7,8],ymm1[9],ymm13[10],ymm1[11],ymm13[12,13],ymm1[14],ymm13[15]3397; AVX512-NEXT: vmovdqa {{.*#+}} xmm1 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]3398; AVX512-NEXT: vpshufb %xmm1, %xmm11, %xmm113399; AVX512-NEXT: vpshufd {{.*#+}} xmm10 = xmm10[1,2,2,2]3400; AVX512-NEXT: vpblendw {{.*#+}} xmm10 = xmm11[0],xmm10[1],xmm11[2],xmm10[3],xmm11[4,5],xmm10[6],xmm11[7]3401; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,1,0,0]3402; AVX512-NEXT: vinserti64x4 $1, %ymm13, %zmm10, %zmm133403; AVX512-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (mem & (zmm13 ^ zmm12))3404; AVX512-NEXT: vmovdqa (%r8), %ymm103405; AVX512-NEXT: vmovdqa 32(%r8), %ymm113406; AVX512-NEXT: vmovdqa {{.*#+}} ymm12 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]3407; AVX512-NEXT: vpshufb %ymm12, %ymm11, %ymm23408; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm20 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]3409; AVX512-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,1,1,1]3410; AVX512-NEXT: vpandnq %ymm11, %ymm20, %ymm113411; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm11, %zmm113412; AVX512-NEXT: vpternlogq {{.*#+}} zmm11 = zmm11 | (zmm13 & zmm20)3413; AVX512-NEXT: vpshufb %xmm0, %xmm3, %xmm03414; AVX512-NEXT: vpbroadcastq 8(%rdi), %xmm23415; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2,3],xmm2[4],xmm0[5],xmm2[6],xmm0[7]3416; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm8[0],xmm3[0],xmm8[1],xmm3[1],xmm8[2],xmm3[2],xmm8[3],xmm3[3]3417; AVX512-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]3418; AVX512-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,5,6]3419; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm2[0,1,0,1],zmm0[0,1,0,1]3420; AVX512-NEXT: vmovdqa (%rdx), %xmm23421; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm9[0],xmm2[0],xmm9[1],xmm2[1],xmm9[2],xmm2[2],xmm9[3],xmm2[3]3422; AVX512-NEXT: vmovdqa64 %xmm23, %xmm83423; AVX512-NEXT: vpshufb %xmm8, %xmm3, %xmm33424; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,0,1]3425; AVX512-NEXT: vpshufb %xmm1, %xmm9, %xmm13426; AVX512-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[1,2,2,2]3427; AVX512-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3],xmm1[4,5],xmm2[6],xmm1[7]3428; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,0,0]3429; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm3, %zmm13430; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm2 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]3431; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm2 & (zmm1 ^ zmm0))3432; AVX512-NEXT: vpbroadcastq (%r8), %ymm03433; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm10[0,1,1,1]3434; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm0, %zmm03435; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm1))3436; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm16[0,1,2,1,4,5,6,5]3437; AVX512-NEXT: vprolq $16, %ymm14, %ymm33438; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm3[0,1],ymm1[2],ymm3[3],ymm1[4],ymm3[5,6],ymm1[7],ymm3[8,9],ymm1[10],ymm3[11],ymm1[12],ymm3[13,14],ymm1[15]3439; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]3440; AVX512-NEXT: vpshufd {{.*#+}} ymm3 = ymm16[2,3,2,3,6,7,6,7]3441; AVX512-NEXT: vpshufhw {{.*#+}} ymm8 = ymm14[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]3442; AVX512-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[2,3,2,2,6,7,6,6]3443; AVX512-NEXT: vpblendw {{.*#+}} ymm3 = ymm8[0],ymm3[1],ymm8[2],ymm3[3],ymm8[4,5],ymm3[6],ymm8[7,8],ymm3[9],ymm8[10],ymm3[11],ymm8[12,13],ymm3[14],ymm8[15]3444; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,2,2]3445; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm1, %zmm13446; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]3447; AVX512-NEXT: # ymm3 = mem[0,1,0,1]3448; AVX512-NEXT: vpshufb %ymm3, %ymm15, %ymm83449; AVX512-NEXT: vpshufd {{.*#+}} ymm9 = ymm5[1,1,1,2,5,5,5,6]3450; AVX512-NEXT: vpblendw {{.*#+}} ymm8 = ymm8[0],ymm9[1],ymm8[2,3],ymm9[4],ymm8[5],ymm9[6],ymm8[7,8],ymm9[9],ymm8[10,11],ymm9[12],ymm8[13],ymm9[14],ymm8[15]3451; AVX512-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,3,2,3]3452; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[3,2,3,3,7,6,7,7]3453; AVX512-NEXT: vpshufhw {{.*#+}} ymm9 = ymm15[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]3454; AVX512-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,3,2,3,6,7,6,7]3455; AVX512-NEXT: vpblendw {{.*#+}} ymm5 = ymm9[0],ymm5[1],ymm9[2],ymm5[3,4],ymm9[5,6,7,8],ymm5[9],ymm9[10],ymm5[11,12],ymm9[13,14,15]3456; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,3,2]3457; AVX512-NEXT: vinserti64x4 $1, %ymm5, %zmm8, %zmm53458; AVX512-NEXT: vpternlogq {{.*#+}} zmm5 = zmm1 ^ (zmm2 & (zmm5 ^ zmm1))3459; AVX512-NEXT: vpbroadcastq 48(%r8), %ymm13460; AVX512-NEXT: vpbroadcastq 56(%r8), %ymm23461; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm13462; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm2 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]3463; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm2 & (zmm1 ^ zmm5))3464; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm4[0,1,2,1,4,5,6,5]3465; AVX512-NEXT: vprolq $16, %ymm6, %ymm83466; AVX512-NEXT: vpblendw {{.*#+}} ymm5 = ymm8[0,1],ymm5[2],ymm8[3],ymm5[4],ymm8[5,6],ymm5[7],ymm8[8,9],ymm5[10],ymm8[11],ymm5[12],ymm8[13,14],ymm5[15]3467; AVX512-NEXT: vmovdqa64 %ymm21, %ymm83468; AVX512-NEXT: vpshufb %ymm8, %ymm6, %ymm63469; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm4[1,1,2,2]3470; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm6[1],ymm4[2,3],ymm6[4],ymm4[5],ymm6[6],ymm4[7,8],ymm6[9],ymm4[10,11],ymm6[12],ymm4[13],ymm6[14],ymm4[15]3471; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm4 = zmm4[0,1,2,3],zmm5[2,3,2,3]3472; AVX512-NEXT: vpshufb %ymm3, %ymm7, %ymm33473; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm18[1,1,1,2,5,5,5,6]3474; AVX512-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm5[1],ymm3[2,3],ymm5[4],ymm3[5],ymm5[6],ymm3[7,8],ymm5[9],ymm3[10,11],ymm5[12],ymm3[13],ymm5[14],ymm3[15]3475; AVX512-NEXT: vmovdqa64 %ymm22, %ymm53476; AVX512-NEXT: vpshufb %ymm5, %ymm7, %ymm53477; AVX512-NEXT: vpshufd {{.*#+}} ymm6 = ymm18[3,0,3,0,7,4,7,4]3478; AVX512-NEXT: vpblendw {{.*#+}} ymm5 = ymm6[0],ymm5[1],ymm6[2],ymm5[3],ymm6[4,5],ymm5[6],ymm6[7,8],ymm5[9],ymm6[10],ymm5[11],ymm6[12,13],ymm5[14],ymm6[15]3479; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm3 = zmm5[0,1,2,3],zmm3[2,3,2,3]3480; AVX512-NEXT: vpternlogq {{.*#+}} zmm3 = zmm4 ^ (zmm17 & (zmm3 ^ zmm4))3481; AVX512-NEXT: vpandnq 16(%r8){1to4}, %ymm2, %ymm23482; AVX512-NEXT: vpshufb %ymm12, %ymm10, %ymm43483; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm4, %zmm23484; AVX512-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 | (zmm3 & mem)3485; AVX512-NEXT: vmovdqa64 %zmm2, 64(%r9)3486; AVX512-NEXT: vmovdqa64 %zmm1, 256(%r9)3487; AVX512-NEXT: vmovdqa64 %zmm0, (%r9)3488; AVX512-NEXT: vmovdqa64 %zmm11, 192(%r9)3489; AVX512-NEXT: vmovdqa64 %zmm19, 128(%r9)3490; AVX512-NEXT: vzeroupper3491; AVX512-NEXT: retq3492;3493; AVX512-FCP-LABEL: store_i16_stride5_vf32:3494; AVX512-FCP: # %bb.0:3495; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %ymm103496; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]3497; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm10, %ymm13498; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %ymm133499; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm13[1,1,2,2]3500; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13],ymm1[14],ymm2[15]3501; AVX512-FCP-NEXT: vmovdqa64 (%rsi), %xmm183502; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %xmm33503; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]3504; AVX512-FCP-NEXT: vpshufb %xmm0, %xmm3, %xmm23505; AVX512-FCP-NEXT: vmovdqa64 %xmm3, %xmm223506; AVX512-FCP-NEXT: vmovdqa64 %xmm0, %xmm193507; AVX512-FCP-NEXT: vpbroadcastq 40(%rdi), %xmm33508; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1],xmm2[2,3],xmm3[4],xmm2[5],xmm3[6],xmm2[7]3509; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,1]3510; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm23511; AVX512-FCP-NEXT: vmovdqa (%rcx), %ymm93512; AVX512-FCP-NEXT: vmovdqa 32(%rcx), %ymm143513; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]3514; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm14, %ymm33515; AVX512-FCP-NEXT: vmovdqa (%rdx), %ymm83516; AVX512-FCP-NEXT: vmovdqa64 32(%rdx), %ymm163517; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm7 = ymm16[3,0,3,0,7,4,7,4]3518; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm7[0],ymm3[1],ymm7[2],ymm3[3],ymm7[4,5],ymm3[6],ymm7[7,8],ymm3[9],ymm7[10],ymm3[11],ymm7[12,13],ymm3[14],ymm7[15]3519; AVX512-FCP-NEXT: vmovdqa 32(%rcx), %xmm53520; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]3521; AVX512-FCP-NEXT: vpshufb %xmm0, %xmm5, %xmm73522; AVX512-FCP-NEXT: vmovdqa64 %xmm5, %xmm233523; AVX512-FCP-NEXT: vmovdqa64 %xmm0, %xmm213524; AVX512-FCP-NEXT: vmovdqa 32(%rdx), %xmm113525; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm12 = xmm11[1,2,2,2]3526; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0],xmm12[1],xmm7[2],xmm12[3],xmm7[4,5],xmm12[6],xmm7[7]3527; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,0,0]3528; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm7, %zmm123529; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm12 = zmm12 ^ (mem & (zmm12 ^ zmm2))3530; AVX512-FCP-NEXT: vmovdqa (%r8), %ymm63531; AVX512-FCP-NEXT: vmovdqa 32(%r8), %ymm33532; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm7 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]3533; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm3, %ymm153534; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm17 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]3535; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,1,1]3536; AVX512-FCP-NEXT: vpandnq %ymm3, %ymm17, %ymm33537; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm15, %zmm3, %zmm33538; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 | (zmm12 & zmm17)3539; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm123540; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm12[0,1,2,1,4,5,6,5]3541; AVX512-FCP-NEXT: vmovdqa (%rsi), %ymm153542; AVX512-FCP-NEXT: vprolq $16, %ymm15, %ymm23543; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0,1],ymm0[2],ymm2[3],ymm0[4],ymm2[5,6],ymm0[7],ymm2[8,9],ymm0[10],ymm2[11],ymm0[12],ymm2[13,14],ymm0[15]3544; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm15, %ymm23545; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm12[1,1,2,2]3546; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm2[1],ymm4[2,3],ymm2[4],ymm4[5],ymm2[6],ymm4[7,8],ymm2[9],ymm4[10,11],ymm2[12],ymm4[13],ymm2[14],ymm4[15]3547; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm2 = zmm2[0,1,2,3],zmm0[2,3,2,3]3548; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]3549; AVX512-FCP-NEXT: # ymm0 = mem[0,1,0,1]3550; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm9, %ymm43551; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm8[1,1,1,2,5,5,5,6]3552; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm5[1],ymm4[2,3],ymm5[4],ymm4[5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10,11],ymm5[12],ymm4[13],ymm5[14],ymm4[15]3553; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm9, %ymm13554; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm8[3,0,3,0,7,4,7,4]3555; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm5[0],ymm1[1],ymm5[2],ymm1[3],ymm5[4,5],ymm1[6],ymm5[7,8],ymm1[9],ymm5[10],ymm1[11],ymm5[12,13],ymm1[14],ymm5[15]3556; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm1 = zmm1[0,1,2,3],zmm4[2,3,2,3]3557; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm17 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]3558; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm2 ^ (zmm17 & (zmm1 ^ zmm2))3559; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm2 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]3560; AVX512-FCP-NEXT: vpandnq 16(%r8){1to4}, %ymm2, %ymm43561; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm6, %ymm53562; AVX512-FCP-NEXT: vmovdqa64 %ymm6, %ymm203563; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm5, %zmm73564; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 | (zmm1 & mem)3565; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]3566; AVX512-FCP-NEXT: # ymm1 = mem[0,1,0,1]3567; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm10, %ymm43568; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm13[2,3,2,3,6,7,6,7]3569; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm5[1],ymm4[2],ymm5[3],ymm4[4,5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10],ymm5[11],ymm4[12,13],ymm5[14],ymm4[15]3570; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm13[0,1,2,1,4,5,6,5]3571; AVX512-FCP-NEXT: vprolq $16, %ymm10, %ymm103572; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm10[0,1],ymm5[2],ymm10[3],ymm5[4],ymm10[5,6],ymm5[7],ymm10[8,9],ymm5[10],ymm10[11],ymm5[12],ymm10[13,14],ymm5[15]3573; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm10 = [2,3,2,3,10,11,10,10]3574; AVX512-FCP-NEXT: vpermi2q %zmm4, %zmm5, %zmm103575; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} ymm4 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]3576; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm14, %ymm53577; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm16[3,2,3,3,7,6,7,7]3578; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0],ymm13[1],ymm5[2],ymm13[3,4],ymm5[5,6,7,8],ymm13[9],ymm5[10],ymm13[11,12],ymm5[13,14,15]3579; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm14, %ymm03580; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm16[1,1,1,2,5,5,5,6]3581; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm13[1],ymm0[2,3],ymm13[4],ymm0[5],ymm13[6],ymm0[7,8],ymm13[9],ymm0[10,11],ymm13[12],ymm0[13],ymm13[14],ymm0[15]3582; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm13 = [2,3,2,3,10,10,11,10]3583; AVX512-FCP-NEXT: vpermi2q %zmm5, %zmm0, %zmm133584; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm14 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]3585; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm13 = zmm10 ^ (zmm14 & (zmm13 ^ zmm10))3586; AVX512-FCP-NEXT: vpbroadcastq 48(%r8), %ymm03587; AVX512-FCP-NEXT: vpbroadcastq 56(%r8), %ymm53588; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm0, %zmm103589; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm2 & (zmm10 ^ zmm13))3590; AVX512-FCP-NEXT: vmovdqa64 %xmm23, %xmm03591; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm11[0],xmm0[1],xmm11[1],xmm0[2],xmm11[2],xmm0[3],xmm11[3]3592; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]3593; AVX512-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm23594; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm9, %ymm43595; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm8[3,2,3,3,7,6,7,7]3596; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm5[1],ymm4[2],ymm5[3,4],ymm4[5,6,7,8],ymm5[9],ymm4[10],ymm5[11,12],ymm4[13,14,15]3597; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm8 = [2,2,3,2,8,9,8,9]3598; AVX512-FCP-NEXT: vpermi2q %zmm2, %zmm4, %zmm83599; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm63600; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %xmm23601; AVX512-FCP-NEXT: vmovdqa64 %xmm22, %xmm43602; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3]3603; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm5 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]3604; AVX512-FCP-NEXT: vpshufb %xmm5, %xmm2, %xmm23605; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm15, %ymm13606; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm12[2,3,2,3,6,7,6,7]3607; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm4[1],ymm1[2],ymm4[3],ymm1[4,5],ymm4[6],ymm1[7,8],ymm4[9],ymm1[10],ymm4[11],ymm1[12,13],ymm4[14],ymm1[15]3608; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm4 = [2,3,2,2,8,9,8,9]3609; AVX512-FCP-NEXT: vpermi2q %zmm2, %zmm1, %zmm43610; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm8 ^ (zmm17 & (zmm4 ^ zmm8))3611; AVX512-FCP-NEXT: vpbroadcastq 24(%r8), %ymm13612; AVX512-FCP-NEXT: vpbroadcastq 32(%r8), %ymm23613; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm13614; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm4))3615; AVX512-FCP-NEXT: vmovdqa (%rcx), %xmm23616; AVX512-FCP-NEXT: vmovdqa64 %xmm21, %xmm43617; AVX512-FCP-NEXT: vpshufb %xmm4, %xmm2, %xmm43618; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm83619; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm9 = xmm8[1,2,2,2]3620; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm9[1],xmm4[2],xmm9[3],xmm4[4,5],xmm9[6],xmm4[7]3621; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3]3622; AVX512-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm03623; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,1,0,1,8,9,8,8]3624; AVX512-FCP-NEXT: vpermi2q %zmm4, %zmm0, %zmm23625; AVX512-FCP-NEXT: vmovdqa64 %xmm18, %xmm83626; AVX512-FCP-NEXT: vmovdqa64 %xmm19, %xmm03627; AVX512-FCP-NEXT: vpshufb %xmm0, %xmm8, %xmm03628; AVX512-FCP-NEXT: vpbroadcastq 8(%rdi), %xmm43629; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm4[1],xmm0[2,3],xmm4[4],xmm0[5],xmm4[6],xmm0[7]3630; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],xmm8[3]3631; AVX512-FCP-NEXT: vpshufb %xmm5, %xmm4, %xmm43632; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm4[0,1,0,1],zmm0[0,1,0,1]3633; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm2 ^ (zmm14 & (zmm0 ^ zmm2))3634; AVX512-FCP-NEXT: vpbroadcastq (%r8), %ymm23635; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm20[0,1,1,1]3636; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm2, %zmm23637; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm0))3638; AVX512-FCP-NEXT: vmovdqa64 %zmm2, (%r9)3639; AVX512-FCP-NEXT: vmovdqa64 %zmm1, 128(%r9)3640; AVX512-FCP-NEXT: vmovdqa64 %zmm10, 256(%r9)3641; AVX512-FCP-NEXT: vmovdqa64 %zmm7, 64(%r9)3642; AVX512-FCP-NEXT: vmovdqa64 %zmm3, 192(%r9)3643; AVX512-FCP-NEXT: vzeroupper3644; AVX512-FCP-NEXT: retq3645;3646; AVX512DQ-LABEL: store_i16_stride5_vf32:3647; AVX512DQ: # %bb.0:3648; AVX512DQ-NEXT: vmovdqa 32(%rdx), %xmm103649; AVX512DQ-NEXT: vmovdqa (%rcx), %xmm93650; AVX512DQ-NEXT: vmovdqa 32(%rcx), %xmm113651; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm11[0],xmm10[0],xmm11[1],xmm10[1],xmm11[2],xmm10[2],xmm11[3],xmm10[3]3652; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm1 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]3653; AVX512DQ-NEXT: vpshufb %xmm1, %xmm0, %xmm03654; AVX512DQ-NEXT: vmovdqa64 %xmm1, %xmm233655; AVX512DQ-NEXT: vmovdqa64 (%rdx), %ymm183656; AVX512DQ-NEXT: vmovdqa 32(%rdx), %ymm53657; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm18[3,2,3,3,7,6,7,7]3658; AVX512DQ-NEXT: vmovdqa (%rcx), %ymm73659; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm2 = ymm7[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]3660; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[2,3,2,3,6,7,6,7]3661; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2],ymm1[3,4],ymm2[5,6,7,8],ymm1[9],ymm2[10],ymm1[11,12],ymm2[13,14,15]3662; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,2]3663; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[0,1,0,1]3664; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm33665; AVX512DQ-NEXT: vmovdqa 32(%rsi), %xmm13666; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm83667; AVX512DQ-NEXT: vmovdqa 32(%rdi), %xmm23668; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]3669; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]3670; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,5,6]3671; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm43672; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm12 = ymm4[2,3,2,3,6,7,6,7]3673; AVX512DQ-NEXT: vmovdqa (%rsi), %ymm63674; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm14 = ymm6[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]3675; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm14 = ymm14[2,3,2,2,6,7,6,6]3676; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm12 = ymm14[0],ymm12[1],ymm14[2],ymm12[3],ymm14[4,5],ymm12[6],ymm14[7,8],ymm12[9],ymm14[10],ymm12[11],ymm14[12,13],ymm12[14],ymm14[15]3677; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,3,2,2]3678; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm12 = zmm12[0,1,2,3],zmm2[0,1,0,1]3679; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm17 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]3680; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm12 = zmm0 ^ (zmm17 & (zmm12 ^ zmm0))3681; AVX512DQ-NEXT: vpbroadcastq 24(%r8), %ymm03682; AVX512DQ-NEXT: vpbroadcastq 32(%r8), %ymm23683; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm193684; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm19 = zmm19 ^ (mem & (zmm19 ^ zmm12))3685; AVX512DQ-NEXT: vmovdqa 32(%rsi), %ymm143686; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm2 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]3687; AVX512DQ-NEXT: vpshufb %ymm2, %ymm14, %ymm03688; AVX512DQ-NEXT: vmovdqa64 %ymm2, %ymm213689; AVX512DQ-NEXT: vmovdqa64 32(%rdi), %ymm163690; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm16[1,1,2,2]3691; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm12 = ymm12[0],ymm0[1],ymm12[2,3],ymm0[4],ymm12[5],ymm0[6],ymm12[7,8],ymm0[9],ymm12[10,11],ymm0[12],ymm12[13],ymm0[14],ymm12[15]3692; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm0 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]3693; AVX512DQ-NEXT: vpshufb %xmm0, %xmm1, %xmm13694; AVX512DQ-NEXT: vpbroadcastq 40(%rdi), %xmm153695; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm15[1],xmm1[2,3],xmm15[4],xmm1[5],xmm15[6],xmm1[7]3696; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]3697; AVX512DQ-NEXT: vinserti64x4 $1, %ymm12, %zmm1, %zmm123698; AVX512DQ-NEXT: vmovdqa 32(%rcx), %ymm153699; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm2 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]3700; AVX512DQ-NEXT: vpshufb %ymm2, %ymm15, %ymm13701; AVX512DQ-NEXT: vmovdqa64 %ymm2, %ymm223702; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm13 = ymm5[3,0,3,0,7,4,7,4]3703; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0],ymm1[1],ymm13[2],ymm1[3],ymm13[4,5],ymm1[6],ymm13[7,8],ymm1[9],ymm13[10],ymm1[11],ymm13[12,13],ymm1[14],ymm13[15]3704; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm1 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]3705; AVX512DQ-NEXT: vpshufb %xmm1, %xmm11, %xmm113706; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm10 = xmm10[1,2,2,2]3707; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm10 = xmm11[0],xmm10[1],xmm11[2],xmm10[3],xmm11[4,5],xmm10[6],xmm11[7]3708; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,1,0,0]3709; AVX512DQ-NEXT: vinserti64x4 $1, %ymm13, %zmm10, %zmm133710; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (mem & (zmm13 ^ zmm12))3711; AVX512DQ-NEXT: vmovdqa (%r8), %ymm103712; AVX512DQ-NEXT: vmovdqa 32(%r8), %ymm113713; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm12 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]3714; AVX512DQ-NEXT: vpshufb %ymm12, %ymm11, %ymm23715; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm20 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]3716; AVX512DQ-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,1,1,1]3717; AVX512DQ-NEXT: vpandnq %ymm11, %ymm20, %ymm113718; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm11, %zmm113719; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm11 = zmm11 | (zmm13 & zmm20)3720; AVX512DQ-NEXT: vpshufb %xmm0, %xmm3, %xmm03721; AVX512DQ-NEXT: vpbroadcastq 8(%rdi), %xmm23722; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2,3],xmm2[4],xmm0[5],xmm2[6],xmm0[7]3723; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm8[0],xmm3[0],xmm8[1],xmm3[1],xmm8[2],xmm3[2],xmm8[3],xmm3[3]3724; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]3725; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,5,6]3726; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm2[0,1,0,1],zmm0[0,1,0,1]3727; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm23728; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm9[0],xmm2[0],xmm9[1],xmm2[1],xmm9[2],xmm2[2],xmm9[3],xmm2[3]3729; AVX512DQ-NEXT: vmovdqa64 %xmm23, %xmm83730; AVX512DQ-NEXT: vpshufb %xmm8, %xmm3, %xmm33731; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,0,1]3732; AVX512DQ-NEXT: vpshufb %xmm1, %xmm9, %xmm13733; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[1,2,2,2]3734; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3],xmm1[4,5],xmm2[6],xmm1[7]3735; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,0,0]3736; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm3, %zmm13737; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm2 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]3738; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm2 & (zmm1 ^ zmm0))3739; AVX512DQ-NEXT: vpbroadcastq (%r8), %ymm03740; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm10[0,1,1,1]3741; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm0, %zmm03742; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm1))3743; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm16[0,1,2,1,4,5,6,5]3744; AVX512DQ-NEXT: vprolq $16, %ymm14, %ymm33745; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm3[0,1],ymm1[2],ymm3[3],ymm1[4],ymm3[5,6],ymm1[7],ymm3[8,9],ymm1[10],ymm3[11],ymm1[12],ymm3[13,14],ymm1[15]3746; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]3747; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm3 = ymm16[2,3,2,3,6,7,6,7]3748; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm8 = ymm14[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]3749; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[2,3,2,2,6,7,6,6]3750; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm3 = ymm8[0],ymm3[1],ymm8[2],ymm3[3],ymm8[4,5],ymm3[6],ymm8[7,8],ymm3[9],ymm8[10],ymm3[11],ymm8[12,13],ymm3[14],ymm8[15]3751; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,2,2]3752; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm1, %zmm13753; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]3754; AVX512DQ-NEXT: # ymm3 = mem[0,1,0,1]3755; AVX512DQ-NEXT: vpshufb %ymm3, %ymm15, %ymm83756; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm9 = ymm5[1,1,1,2,5,5,5,6]3757; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm8 = ymm8[0],ymm9[1],ymm8[2,3],ymm9[4],ymm8[5],ymm9[6],ymm8[7,8],ymm9[9],ymm8[10,11],ymm9[12],ymm8[13],ymm9[14],ymm8[15]3758; AVX512DQ-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,3,2,3]3759; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[3,2,3,3,7,6,7,7]3760; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm9 = ymm15[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]3761; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,3,2,3,6,7,6,7]3762; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm5 = ymm9[0],ymm5[1],ymm9[2],ymm5[3,4],ymm9[5,6,7,8],ymm5[9],ymm9[10],ymm5[11,12],ymm9[13,14,15]3763; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,3,2]3764; AVX512DQ-NEXT: vinserti64x4 $1, %ymm5, %zmm8, %zmm53765; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm5 = zmm1 ^ (zmm2 & (zmm5 ^ zmm1))3766; AVX512DQ-NEXT: vpbroadcastq 48(%r8), %ymm13767; AVX512DQ-NEXT: vpbroadcastq 56(%r8), %ymm23768; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm13769; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm2 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]3770; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm2 & (zmm1 ^ zmm5))3771; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm4[0,1,2,1,4,5,6,5]3772; AVX512DQ-NEXT: vprolq $16, %ymm6, %ymm83773; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm5 = ymm8[0,1],ymm5[2],ymm8[3],ymm5[4],ymm8[5,6],ymm5[7],ymm8[8,9],ymm5[10],ymm8[11],ymm5[12],ymm8[13,14],ymm5[15]3774; AVX512DQ-NEXT: vmovdqa64 %ymm21, %ymm83775; AVX512DQ-NEXT: vpshufb %ymm8, %ymm6, %ymm63776; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm4[1,1,2,2]3777; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm6[1],ymm4[2,3],ymm6[4],ymm4[5],ymm6[6],ymm4[7,8],ymm6[9],ymm4[10,11],ymm6[12],ymm4[13],ymm6[14],ymm4[15]3778; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm4 = zmm4[0,1,2,3],zmm5[2,3,2,3]3779; AVX512DQ-NEXT: vpshufb %ymm3, %ymm7, %ymm33780; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm18[1,1,1,2,5,5,5,6]3781; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm5[1],ymm3[2,3],ymm5[4],ymm3[5],ymm5[6],ymm3[7,8],ymm5[9],ymm3[10,11],ymm5[12],ymm3[13],ymm5[14],ymm3[15]3782; AVX512DQ-NEXT: vmovdqa64 %ymm22, %ymm53783; AVX512DQ-NEXT: vpshufb %ymm5, %ymm7, %ymm53784; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm6 = ymm18[3,0,3,0,7,4,7,4]3785; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm5 = ymm6[0],ymm5[1],ymm6[2],ymm5[3],ymm6[4,5],ymm5[6],ymm6[7,8],ymm5[9],ymm6[10],ymm5[11],ymm6[12,13],ymm5[14],ymm6[15]3786; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm3 = zmm5[0,1,2,3],zmm3[2,3,2,3]3787; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm3 = zmm4 ^ (zmm17 & (zmm3 ^ zmm4))3788; AVX512DQ-NEXT: vpandnq 16(%r8){1to4}, %ymm2, %ymm23789; AVX512DQ-NEXT: vpshufb %ymm12, %ymm10, %ymm43790; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm4, %zmm23791; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 | (zmm3 & mem)3792; AVX512DQ-NEXT: vmovdqa64 %zmm2, 64(%r9)3793; AVX512DQ-NEXT: vmovdqa64 %zmm1, 256(%r9)3794; AVX512DQ-NEXT: vmovdqa64 %zmm0, (%r9)3795; AVX512DQ-NEXT: vmovdqa64 %zmm11, 192(%r9)3796; AVX512DQ-NEXT: vmovdqa64 %zmm19, 128(%r9)3797; AVX512DQ-NEXT: vzeroupper3798; AVX512DQ-NEXT: retq3799;3800; AVX512DQ-FCP-LABEL: store_i16_stride5_vf32:3801; AVX512DQ-FCP: # %bb.0:3802; AVX512DQ-FCP-NEXT: vmovdqa 32(%rsi), %ymm103803; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]3804; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm10, %ymm13805; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %ymm133806; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm13[1,1,2,2]3807; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13],ymm1[14],ymm2[15]3808; AVX512DQ-FCP-NEXT: vmovdqa64 (%rsi), %xmm183809; AVX512DQ-FCP-NEXT: vmovdqa 32(%rsi), %xmm33810; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]3811; AVX512DQ-FCP-NEXT: vpshufb %xmm0, %xmm3, %xmm23812; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm3, %xmm223813; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm0, %xmm193814; AVX512DQ-FCP-NEXT: vpbroadcastq 40(%rdi), %xmm33815; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1],xmm2[2,3],xmm3[4],xmm2[5],xmm3[6],xmm2[7]3816; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,1]3817; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm23818; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %ymm93819; AVX512DQ-FCP-NEXT: vmovdqa 32(%rcx), %ymm143820; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]3821; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm14, %ymm33822; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %ymm83823; AVX512DQ-FCP-NEXT: vmovdqa64 32(%rdx), %ymm163824; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm7 = ymm16[3,0,3,0,7,4,7,4]3825; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm7[0],ymm3[1],ymm7[2],ymm3[3],ymm7[4,5],ymm3[6],ymm7[7,8],ymm3[9],ymm7[10],ymm3[11],ymm7[12,13],ymm3[14],ymm7[15]3826; AVX512DQ-FCP-NEXT: vmovdqa 32(%rcx), %xmm53827; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]3828; AVX512DQ-FCP-NEXT: vpshufb %xmm0, %xmm5, %xmm73829; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm5, %xmm233830; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm0, %xmm213831; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdx), %xmm113832; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm12 = xmm11[1,2,2,2]3833; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0],xmm12[1],xmm7[2],xmm12[3],xmm7[4,5],xmm12[6],xmm7[7]3834; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,0,0]3835; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm7, %zmm123836; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm12 = zmm12 ^ (mem & (zmm12 ^ zmm2))3837; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %ymm63838; AVX512DQ-FCP-NEXT: vmovdqa 32(%r8), %ymm33839; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm7 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]3840; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm3, %ymm153841; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm17 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]3842; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,1,1]3843; AVX512DQ-FCP-NEXT: vpandnq %ymm3, %ymm17, %ymm33844; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm15, %zmm3, %zmm33845; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 | (zmm12 & zmm17)3846; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm123847; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm12[0,1,2,1,4,5,6,5]3848; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %ymm153849; AVX512DQ-FCP-NEXT: vprolq $16, %ymm15, %ymm23850; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0,1],ymm0[2],ymm2[3],ymm0[4],ymm2[5,6],ymm0[7],ymm2[8,9],ymm0[10],ymm2[11],ymm0[12],ymm2[13,14],ymm0[15]3851; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm15, %ymm23852; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm12[1,1,2,2]3853; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm2[1],ymm4[2,3],ymm2[4],ymm4[5],ymm2[6],ymm4[7,8],ymm2[9],ymm4[10,11],ymm2[12],ymm4[13],ymm2[14],ymm4[15]3854; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm2 = zmm2[0,1,2,3],zmm0[2,3,2,3]3855; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]3856; AVX512DQ-FCP-NEXT: # ymm0 = mem[0,1,0,1]3857; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm9, %ymm43858; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm8[1,1,1,2,5,5,5,6]3859; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm5[1],ymm4[2,3],ymm5[4],ymm4[5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10,11],ymm5[12],ymm4[13],ymm5[14],ymm4[15]3860; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm9, %ymm13861; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm8[3,0,3,0,7,4,7,4]3862; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm5[0],ymm1[1],ymm5[2],ymm1[3],ymm5[4,5],ymm1[6],ymm5[7,8],ymm1[9],ymm5[10],ymm1[11],ymm5[12,13],ymm1[14],ymm5[15]3863; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm1 = zmm1[0,1,2,3],zmm4[2,3,2,3]3864; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm17 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]3865; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm2 ^ (zmm17 & (zmm1 ^ zmm2))3866; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm2 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]3867; AVX512DQ-FCP-NEXT: vpandnq 16(%r8){1to4}, %ymm2, %ymm43868; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm6, %ymm53869; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm6, %ymm203870; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm5, %zmm73871; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 | (zmm1 & mem)3872; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]3873; AVX512DQ-FCP-NEXT: # ymm1 = mem[0,1,0,1]3874; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm10, %ymm43875; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm13[2,3,2,3,6,7,6,7]3876; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm5[1],ymm4[2],ymm5[3],ymm4[4,5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10],ymm5[11],ymm4[12,13],ymm5[14],ymm4[15]3877; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm13[0,1,2,1,4,5,6,5]3878; AVX512DQ-FCP-NEXT: vprolq $16, %ymm10, %ymm103879; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm10[0,1],ymm5[2],ymm10[3],ymm5[4],ymm10[5,6],ymm5[7],ymm10[8,9],ymm5[10],ymm10[11],ymm5[12],ymm10[13,14],ymm5[15]3880; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm10 = [2,3,2,3,10,11,10,10]3881; AVX512DQ-FCP-NEXT: vpermi2q %zmm4, %zmm5, %zmm103882; AVX512DQ-FCP-NEXT: vpbroadcastq {{.*#+}} ymm4 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]3883; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm14, %ymm53884; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm16[3,2,3,3,7,6,7,7]3885; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0],ymm13[1],ymm5[2],ymm13[3,4],ymm5[5,6,7,8],ymm13[9],ymm5[10],ymm13[11,12],ymm5[13,14,15]3886; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm14, %ymm03887; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm16[1,1,1,2,5,5,5,6]3888; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm13[1],ymm0[2,3],ymm13[4],ymm0[5],ymm13[6],ymm0[7,8],ymm13[9],ymm0[10,11],ymm13[12],ymm0[13],ymm13[14],ymm0[15]3889; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm13 = [2,3,2,3,10,10,11,10]3890; AVX512DQ-FCP-NEXT: vpermi2q %zmm5, %zmm0, %zmm133891; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm14 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]3892; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm13 = zmm10 ^ (zmm14 & (zmm13 ^ zmm10))3893; AVX512DQ-FCP-NEXT: vpbroadcastq 48(%r8), %ymm03894; AVX512DQ-FCP-NEXT: vpbroadcastq 56(%r8), %ymm53895; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm0, %zmm103896; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm2 & (zmm10 ^ zmm13))3897; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm23, %xmm03898; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm11[0],xmm0[1],xmm11[1],xmm0[2],xmm11[2],xmm0[3],xmm11[3]3899; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]3900; AVX512DQ-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm23901; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm9, %ymm43902; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm8[3,2,3,3,7,6,7,7]3903; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm5[1],ymm4[2],ymm5[3,4],ymm4[5,6,7,8],ymm5[9],ymm4[10],ymm5[11,12],ymm4[13,14,15]3904; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm8 = [2,2,3,2,8,9,8,9]3905; AVX512DQ-FCP-NEXT: vpermi2q %zmm2, %zmm4, %zmm83906; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm63907; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %xmm23908; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm22, %xmm43909; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3]3910; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm5 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]3911; AVX512DQ-FCP-NEXT: vpshufb %xmm5, %xmm2, %xmm23912; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm15, %ymm13913; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm12[2,3,2,3,6,7,6,7]3914; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm4[1],ymm1[2],ymm4[3],ymm1[4,5],ymm4[6],ymm1[7,8],ymm4[9],ymm1[10],ymm4[11],ymm1[12,13],ymm4[14],ymm1[15]3915; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm4 = [2,3,2,2,8,9,8,9]3916; AVX512DQ-FCP-NEXT: vpermi2q %zmm2, %zmm1, %zmm43917; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm8 ^ (zmm17 & (zmm4 ^ zmm8))3918; AVX512DQ-FCP-NEXT: vpbroadcastq 24(%r8), %ymm13919; AVX512DQ-FCP-NEXT: vpbroadcastq 32(%r8), %ymm23920; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm13921; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm4))3922; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %xmm23923; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm21, %xmm43924; AVX512DQ-FCP-NEXT: vpshufb %xmm4, %xmm2, %xmm43925; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm83926; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm9 = xmm8[1,2,2,2]3927; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm9[1],xmm4[2],xmm9[3],xmm4[4,5],xmm9[6],xmm4[7]3928; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3]3929; AVX512DQ-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm03930; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,1,0,1,8,9,8,8]3931; AVX512DQ-FCP-NEXT: vpermi2q %zmm4, %zmm0, %zmm23932; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm18, %xmm83933; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm19, %xmm03934; AVX512DQ-FCP-NEXT: vpshufb %xmm0, %xmm8, %xmm03935; AVX512DQ-FCP-NEXT: vpbroadcastq 8(%rdi), %xmm43936; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm4[1],xmm0[2,3],xmm4[4],xmm0[5],xmm4[6],xmm0[7]3937; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],xmm8[3]3938; AVX512DQ-FCP-NEXT: vpshufb %xmm5, %xmm4, %xmm43939; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm4[0,1,0,1],zmm0[0,1,0,1]3940; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm2 ^ (zmm14 & (zmm0 ^ zmm2))3941; AVX512DQ-FCP-NEXT: vpbroadcastq (%r8), %ymm23942; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm20[0,1,1,1]3943; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm2, %zmm23944; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm0))3945; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, (%r9)3946; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, 128(%r9)3947; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm10, 256(%r9)3948; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm7, 64(%r9)3949; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, 192(%r9)3950; AVX512DQ-FCP-NEXT: vzeroupper3951; AVX512DQ-FCP-NEXT: retq3952;3953; AVX512BW-LABEL: store_i16_stride5_vf32:3954; AVX512BW: # %bb.0:3955; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm03956; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm13957; AVX512BW-NEXT: vmovdqa64 (%rdx), %zmm23958; AVX512BW-NEXT: vmovdqa64 (%rcx), %zmm33959; AVX512BW-NEXT: vmovdqa64 (%r8), %zmm43960; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,0,0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0]3961; AVX512BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm53962; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0,6,38]3963; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm63964; AVX512BW-NEXT: movl $415641996, %eax # imm = 0x18C6318C3965; AVX512BW-NEXT: kmovd %eax, %k13966; AVX512BW-NEXT: vmovdqu16 %zmm5, %zmm6 {%k1}3967; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]3968; AVX512BW-NEXT: vpermi2w %zmm4, %zmm6, %zmm53969; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44,0,0]3970; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm63971; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm7 = [6,38,0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44]3972; AVX512BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm73973; AVX512BW-NEXT: movl $831283992, %eax # imm = 0x318C63183974; AVX512BW-NEXT: kmovd %eax, %k23975; AVX512BW-NEXT: vmovdqu16 %zmm6, %zmm7 {%k2}3976; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]3977; AVX512BW-NEXT: vpermi2w %zmm4, %zmm7, %zmm63978; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,0,0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0]3979; AVX512BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm73980; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0,0,19]3981; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm83982; AVX512BW-NEXT: vmovdqu16 %zmm7, %zmm8 {%k2}3983; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm7 = [44,1,2,3,4,45,6,7,8,9,46,11,12,13,14,47,16,17,18,19,48,21,22,23,24,49,26,27,28,29,50,31]3984; AVX512BW-NEXT: vpermi2w %zmm4, %zmm8, %zmm73985; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,19,51,0,0,0,20,52,0,0,0,21,53,0,0,0,22,54,0,0,0,23,55,0,0,0,24,56,0,0,0,25]3986; AVX512BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm83987; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm9 = [19,0,0,0,52,20,0,0,0,53,21,0,0,0,54,22,0,0,0,55,23,0,0,0,56,24,0,0,0,57,25,0]3988; AVX512BW-NEXT: vpermi2w %zmm0, %zmm1, %zmm93989; AVX512BW-NEXT: movl $-1939662650, %eax # imm = 0x8C6318C63990; AVX512BW-NEXT: kmovd %eax, %k23991; AVX512BW-NEXT: vmovdqu16 %zmm8, %zmm9 {%k2}3992; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,1,2,51,4,5,6,7,52,9,10,11,12,53,14,15,16,17,54,19,20,21,22,55,24,25,26,27,56,29,30,31]3993; AVX512BW-NEXT: vpermi2w %zmm4, %zmm9, %zmm83994; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm9 = [0,0,26,58,0,0,0,27,59,0,0,0,28,60,0,0,0,29,61,0,0,0,30,62,0,0,0,31,63,0,0,0]3995; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm93996; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm0 = [25,0,0,0,58,26,0,0,0,59,27,0,0,0,60,28,0,0,0,61,29,0,0,0,62,30,0,0,0,63,31,0]3997; AVX512BW-NEXT: vpermi2w %zmm2, %zmm3, %zmm03998; AVX512BW-NEXT: vmovdqu16 %zmm9, %zmm0 {%k1}3999; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm1 = [0,57,2,3,4,5,58,7,8,9,10,59,12,13,14,15,60,17,18,19,20,61,22,23,24,25,62,27,28,29,30,63]4000; AVX512BW-NEXT: vpermi2w %zmm4, %zmm0, %zmm14001; AVX512BW-NEXT: vmovdqa64 %zmm1, 256(%r9)4002; AVX512BW-NEXT: vmovdqa64 %zmm8, 192(%r9)4003; AVX512BW-NEXT: vmovdqa64 %zmm7, 128(%r9)4004; AVX512BW-NEXT: vmovdqa64 %zmm6, 64(%r9)4005; AVX512BW-NEXT: vmovdqa64 %zmm5, (%r9)4006; AVX512BW-NEXT: vzeroupper4007; AVX512BW-NEXT: retq4008;4009; AVX512BW-FCP-LABEL: store_i16_stride5_vf32:4010; AVX512BW-FCP: # %bb.0:4011; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm04012; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm14013; AVX512BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm24014; AVX512BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm34015; AVX512BW-FCP-NEXT: vmovdqa64 (%r8), %zmm44016; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,0,0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0]4017; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm54018; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0,6,38]4019; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm64020; AVX512BW-FCP-NEXT: movl $415641996, %eax # imm = 0x18C6318C4021; AVX512BW-FCP-NEXT: kmovd %eax, %k14022; AVX512BW-FCP-NEXT: vmovdqu16 %zmm5, %zmm6 {%k1}4023; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]4024; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm6, %zmm54025; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44,0,0]4026; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm64027; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm7 = [6,38,0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44]4028; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm74029; AVX512BW-FCP-NEXT: movl $831283992, %eax # imm = 0x318C63184030; AVX512BW-FCP-NEXT: kmovd %eax, %k24031; AVX512BW-FCP-NEXT: vmovdqu16 %zmm6, %zmm7 {%k2}4032; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]4033; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm7, %zmm64034; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,0,0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0]4035; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm74036; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0,0,19]4037; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm84038; AVX512BW-FCP-NEXT: vmovdqu16 %zmm7, %zmm8 {%k2}4039; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm7 = [44,1,2,3,4,45,6,7,8,9,46,11,12,13,14,47,16,17,18,19,48,21,22,23,24,49,26,27,28,29,50,31]4040; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm8, %zmm74041; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,19,51,0,0,0,20,52,0,0,0,21,53,0,0,0,22,54,0,0,0,23,55,0,0,0,24,56,0,0,0,25]4042; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm84043; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm9 = [19,0,0,0,52,20,0,0,0,53,21,0,0,0,54,22,0,0,0,55,23,0,0,0,56,24,0,0,0,57,25,0]4044; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm1, %zmm94045; AVX512BW-FCP-NEXT: movl $-1939662650, %eax # imm = 0x8C6318C64046; AVX512BW-FCP-NEXT: kmovd %eax, %k24047; AVX512BW-FCP-NEXT: vmovdqu16 %zmm8, %zmm9 {%k2}4048; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,1,2,51,4,5,6,7,52,9,10,11,12,53,14,15,16,17,54,19,20,21,22,55,24,25,26,27,56,29,30,31]4049; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm9, %zmm84050; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm9 = [0,0,26,58,0,0,0,27,59,0,0,0,28,60,0,0,0,29,61,0,0,0,30,62,0,0,0,31,63,0,0,0]4051; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm94052; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm0 = [25,0,0,0,58,26,0,0,0,59,27,0,0,0,60,28,0,0,0,61,29,0,0,0,62,30,0,0,0,63,31,0]4053; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm3, %zmm04054; AVX512BW-FCP-NEXT: vmovdqu16 %zmm9, %zmm0 {%k1}4055; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm1 = [0,57,2,3,4,5,58,7,8,9,10,59,12,13,14,15,60,17,18,19,20,61,22,23,24,25,62,27,28,29,30,63]4056; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm0, %zmm14057; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, 256(%r9)4058; AVX512BW-FCP-NEXT: vmovdqa64 %zmm8, 192(%r9)4059; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, 128(%r9)4060; AVX512BW-FCP-NEXT: vmovdqa64 %zmm6, 64(%r9)4061; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, (%r9)4062; AVX512BW-FCP-NEXT: vzeroupper4063; AVX512BW-FCP-NEXT: retq4064;4065; AVX512DQ-BW-LABEL: store_i16_stride5_vf32:4066; AVX512DQ-BW: # %bb.0:4067; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm04068; AVX512DQ-BW-NEXT: vmovdqa64 (%rsi), %zmm14069; AVX512DQ-BW-NEXT: vmovdqa64 (%rdx), %zmm24070; AVX512DQ-BW-NEXT: vmovdqa64 (%rcx), %zmm34071; AVX512DQ-BW-NEXT: vmovdqa64 (%r8), %zmm44072; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,0,0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0]4073; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm54074; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0,6,38]4075; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm64076; AVX512DQ-BW-NEXT: movl $415641996, %eax # imm = 0x18C6318C4077; AVX512DQ-BW-NEXT: kmovd %eax, %k14078; AVX512DQ-BW-NEXT: vmovdqu16 %zmm5, %zmm6 {%k1}4079; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]4080; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm6, %zmm54081; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44,0,0]4082; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm64083; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm7 = [6,38,0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44]4084; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm74085; AVX512DQ-BW-NEXT: movl $831283992, %eax # imm = 0x318C63184086; AVX512DQ-BW-NEXT: kmovd %eax, %k24087; AVX512DQ-BW-NEXT: vmovdqu16 %zmm6, %zmm7 {%k2}4088; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]4089; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm7, %zmm64090; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,0,0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0]4091; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm74092; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0,0,19]4093; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm84094; AVX512DQ-BW-NEXT: vmovdqu16 %zmm7, %zmm8 {%k2}4095; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm7 = [44,1,2,3,4,45,6,7,8,9,46,11,12,13,14,47,16,17,18,19,48,21,22,23,24,49,26,27,28,29,50,31]4096; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm8, %zmm74097; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,19,51,0,0,0,20,52,0,0,0,21,53,0,0,0,22,54,0,0,0,23,55,0,0,0,24,56,0,0,0,25]4098; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm84099; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm9 = [19,0,0,0,52,20,0,0,0,53,21,0,0,0,54,22,0,0,0,55,23,0,0,0,56,24,0,0,0,57,25,0]4100; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm1, %zmm94101; AVX512DQ-BW-NEXT: movl $-1939662650, %eax # imm = 0x8C6318C64102; AVX512DQ-BW-NEXT: kmovd %eax, %k24103; AVX512DQ-BW-NEXT: vmovdqu16 %zmm8, %zmm9 {%k2}4104; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,1,2,51,4,5,6,7,52,9,10,11,12,53,14,15,16,17,54,19,20,21,22,55,24,25,26,27,56,29,30,31]4105; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm9, %zmm84106; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm9 = [0,0,26,58,0,0,0,27,59,0,0,0,28,60,0,0,0,29,61,0,0,0,30,62,0,0,0,31,63,0,0,0]4107; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm94108; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm0 = [25,0,0,0,58,26,0,0,0,59,27,0,0,0,60,28,0,0,0,61,29,0,0,0,62,30,0,0,0,63,31,0]4109; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm3, %zmm04110; AVX512DQ-BW-NEXT: vmovdqu16 %zmm9, %zmm0 {%k1}4111; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm1 = [0,57,2,3,4,5,58,7,8,9,10,59,12,13,14,15,60,17,18,19,20,61,22,23,24,25,62,27,28,29,30,63]4112; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm0, %zmm14113; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, 256(%r9)4114; AVX512DQ-BW-NEXT: vmovdqa64 %zmm8, 192(%r9)4115; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, 128(%r9)4116; AVX512DQ-BW-NEXT: vmovdqa64 %zmm6, 64(%r9)4117; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, (%r9)4118; AVX512DQ-BW-NEXT: vzeroupper4119; AVX512DQ-BW-NEXT: retq4120;4121; AVX512DQ-BW-FCP-LABEL: store_i16_stride5_vf32:4122; AVX512DQ-BW-FCP: # %bb.0:4123; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm04124; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm14125; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm24126; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm34127; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%r8), %zmm44128; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,0,0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0]4129; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm54130; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0,6,38]4131; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm64132; AVX512DQ-BW-FCP-NEXT: movl $415641996, %eax # imm = 0x18C6318C4133; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k14134; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm5, %zmm6 {%k1}4135; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]4136; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm6, %zmm54137; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44,0,0]4138; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm64139; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm7 = [6,38,0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44]4140; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm74141; AVX512DQ-BW-FCP-NEXT: movl $831283992, %eax # imm = 0x318C63184142; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k24143; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm6, %zmm7 {%k2}4144; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]4145; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm7, %zmm64146; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,0,0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0]4147; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm74148; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0,0,19]4149; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm84150; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm7, %zmm8 {%k2}4151; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm7 = [44,1,2,3,4,45,6,7,8,9,46,11,12,13,14,47,16,17,18,19,48,21,22,23,24,49,26,27,28,29,50,31]4152; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm8, %zmm74153; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,19,51,0,0,0,20,52,0,0,0,21,53,0,0,0,22,54,0,0,0,23,55,0,0,0,24,56,0,0,0,25]4154; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm84155; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm9 = [19,0,0,0,52,20,0,0,0,53,21,0,0,0,54,22,0,0,0,55,23,0,0,0,56,24,0,0,0,57,25,0]4156; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm1, %zmm94157; AVX512DQ-BW-FCP-NEXT: movl $-1939662650, %eax # imm = 0x8C6318C64158; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k24159; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm8, %zmm9 {%k2}4160; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,1,2,51,4,5,6,7,52,9,10,11,12,53,14,15,16,17,54,19,20,21,22,55,24,25,26,27,56,29,30,31]4161; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm9, %zmm84162; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm9 = [0,0,26,58,0,0,0,27,59,0,0,0,28,60,0,0,0,29,61,0,0,0,30,62,0,0,0,31,63,0,0,0]4163; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm94164; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm0 = [25,0,0,0,58,26,0,0,0,59,27,0,0,0,60,28,0,0,0,61,29,0,0,0,62,30,0,0,0,63,31,0]4165; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm3, %zmm04166; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm9, %zmm0 {%k1}4167; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm1 = [0,57,2,3,4,5,58,7,8,9,10,59,12,13,14,15,60,17,18,19,20,61,22,23,24,25,62,27,28,29,30,63]4168; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm0, %zmm14169; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, 256(%r9)4170; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm8, 192(%r9)4171; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, 128(%r9)4172; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm6, 64(%r9)4173; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, (%r9)4174; AVX512DQ-BW-FCP-NEXT: vzeroupper4175; AVX512DQ-BW-FCP-NEXT: retq4176 %in.vec0 = load <32 x i16>, ptr %in.vecptr0, align 644177 %in.vec1 = load <32 x i16>, ptr %in.vecptr1, align 644178 %in.vec2 = load <32 x i16>, ptr %in.vecptr2, align 644179 %in.vec3 = load <32 x i16>, ptr %in.vecptr3, align 644180 %in.vec4 = load <32 x i16>, ptr %in.vecptr4, align 644181 %1 = shufflevector <32 x i16> %in.vec0, <32 x i16> %in.vec1, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>4182 %2 = shufflevector <32 x i16> %in.vec2, <32 x i16> %in.vec3, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>4183 %3 = shufflevector <64 x i16> %1, <64 x i16> %2, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>4184 %4 = shufflevector <32 x i16> %in.vec4, <32 x i16> poison, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>4185 %5 = shufflevector <128 x i16> %3, <128 x i16> %4, <160 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159>4186 %interleaved.vec = shufflevector <160 x i16> %5, <160 x i16> poison, <160 x i32> <i32 0, i32 32, i32 64, i32 96, i32 128, i32 1, i32 33, i32 65, i32 97, i32 129, i32 2, i32 34, i32 66, i32 98, i32 130, i32 3, i32 35, i32 67, i32 99, i32 131, i32 4, i32 36, i32 68, i32 100, i32 132, i32 5, i32 37, i32 69, i32 101, i32 133, i32 6, i32 38, i32 70, i32 102, i32 134, i32 7, i32 39, i32 71, i32 103, i32 135, i32 8, i32 40, i32 72, i32 104, i32 136, i32 9, i32 41, i32 73, i32 105, i32 137, i32 10, i32 42, i32 74, i32 106, i32 138, i32 11, i32 43, i32 75, i32 107, i32 139, i32 12, i32 44, i32 76, i32 108, i32 140, i32 13, i32 45, i32 77, i32 109, i32 141, i32 14, i32 46, i32 78, i32 110, i32 142, i32 15, i32 47, i32 79, i32 111, i32 143, i32 16, i32 48, i32 80, i32 112, i32 144, i32 17, i32 49, i32 81, i32 113, i32 145, i32 18, i32 50, i32 82, i32 114, i32 146, i32 19, i32 51, i32 83, i32 115, i32 147, i32 20, i32 52, i32 84, i32 116, i32 148, i32 21, i32 53, i32 85, i32 117, i32 149, i32 22, i32 54, i32 86, i32 118, i32 150, i32 23, i32 55, i32 87, i32 119, i32 151, i32 24, i32 56, i32 88, i32 120, i32 152, i32 25, i32 57, i32 89, i32 121, i32 153, i32 26, i32 58, i32 90, i32 122, i32 154, i32 27, i32 59, i32 91, i32 123, i32 155, i32 28, i32 60, i32 92, i32 124, i32 156, i32 29, i32 61, i32 93, i32 125, i32 157, i32 30, i32 62, i32 94, i32 126, i32 158, i32 31, i32 63, i32 95, i32 127, i32 159>4187 store <160 x i16> %interleaved.vec, ptr %out.vec, align 644188 ret void4189}4190 4191define void @store_i16_stride5_vf64(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {4192; SSE-LABEL: store_i16_stride5_vf64:4193; SSE: # %bb.0:4194; SSE-NEXT: subq $616, %rsp # imm = 0x2684195; SSE-NEXT: movdqa (%rdi), %xmm144196; SSE-NEXT: movdqa 16(%rdi), %xmm44197; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4198; SSE-NEXT: movdqa (%rsi), %xmm124199; SSE-NEXT: movdqa 16(%rsi), %xmm114200; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4201; SSE-NEXT: movdqa (%rdx), %xmm74202; SSE-NEXT: movdqa (%rcx), %xmm04203; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4204; SSE-NEXT: movdqa 16(%rcx), %xmm134205; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4206; SSE-NEXT: movdqa (%r8), %xmm154207; SSE-NEXT: movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4208; SSE-NEXT: movdqa {{.*#+}} xmm9 = [65535,65535,65535,65535,0,65535,65535,65535]4209; SSE-NEXT: movdqa %xmm9, %xmm14210; SSE-NEXT: pandn %xmm14, %xmm14211; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm12[3,3,3,3,4,5,6,7]4212; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]4213; SSE-NEXT: pand %xmm9, %xmm34214; SSE-NEXT: por %xmm1, %xmm34215; SSE-NEXT: movdqa {{.*#+}} xmm1 = [0,65535,65535,65535,0,0,65535,65535]4216; SSE-NEXT: movdqa %xmm1, %xmm54217; SSE-NEXT: pandn %xmm3, %xmm54218; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm7[1,1,2,2]4219; SSE-NEXT: movdqa {{.*#+}} xmm10 = [65535,65535,0,65535,65535,65535,65535,0]4220; SSE-NEXT: pand %xmm10, %xmm34221; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm0[3,3,3,3,4,5,6,7]4222; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]4223; SSE-NEXT: movdqa %xmm10, %xmm84224; SSE-NEXT: pandn %xmm6, %xmm84225; SSE-NEXT: por %xmm3, %xmm84226; SSE-NEXT: pand %xmm1, %xmm84227; SSE-NEXT: por %xmm5, %xmm84228; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,65535,65535,65535,65535]4229; SSE-NEXT: pand %xmm2, %xmm84230; SSE-NEXT: movdqa %xmm2, %xmm04231; SSE-NEXT: pandn %xmm15, %xmm04232; SSE-NEXT: por %xmm8, %xmm04233; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4234; SSE-NEXT: movdqa %xmm9, %xmm34235; SSE-NEXT: pandn %xmm4, %xmm34236; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm11[3,3,3,3,4,5,6,7]4237; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]4238; SSE-NEXT: pand %xmm9, %xmm54239; SSE-NEXT: por %xmm3, %xmm54240; SSE-NEXT: movdqa %xmm1, %xmm34241; SSE-NEXT: pandn %xmm5, %xmm34242; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm13[3,3,3,3,4,5,6,7]4243; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]4244; SSE-NEXT: movdqa %xmm10, %xmm64245; SSE-NEXT: pandn %xmm5, %xmm64246; SSE-NEXT: movdqa 16(%rdx), %xmm54247; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm5[1,1,2,2]4248; SSE-NEXT: pand %xmm10, %xmm84249; SSE-NEXT: por %xmm8, %xmm64250; SSE-NEXT: pand %xmm1, %xmm64251; SSE-NEXT: por %xmm3, %xmm64252; SSE-NEXT: movdqa 16(%r8), %xmm34253; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4254; SSE-NEXT: pand %xmm2, %xmm64255; SSE-NEXT: movdqa %xmm2, %xmm04256; SSE-NEXT: pandn %xmm3, %xmm04257; SSE-NEXT: por %xmm6, %xmm04258; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4259; SSE-NEXT: movdqa 32(%rdi), %xmm04260; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4261; SSE-NEXT: movdqa %xmm9, %xmm34262; SSE-NEXT: pandn %xmm0, %xmm34263; SSE-NEXT: movdqa 32(%rsi), %xmm04264; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4265; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm0[3,3,3,3,4,5,6,7]4266; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]4267; SSE-NEXT: pand %xmm9, %xmm64268; SSE-NEXT: por %xmm3, %xmm64269; SSE-NEXT: movdqa %xmm1, %xmm34270; SSE-NEXT: pandn %xmm6, %xmm34271; SSE-NEXT: movdqa 32(%rcx), %xmm04272; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4273; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm0[3,3,3,3,4,5,6,7]4274; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]4275; SSE-NEXT: movdqa %xmm10, %xmm84276; SSE-NEXT: pandn %xmm6, %xmm84277; SSE-NEXT: movdqa 32(%rdx), %xmm64278; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm6[1,1,2,2]4279; SSE-NEXT: pand %xmm10, %xmm114280; SSE-NEXT: por %xmm11, %xmm84281; SSE-NEXT: pand %xmm1, %xmm84282; SSE-NEXT: por %xmm3, %xmm84283; SSE-NEXT: pand %xmm2, %xmm84284; SSE-NEXT: movdqa 32(%r8), %xmm34285; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4286; SSE-NEXT: movdqa %xmm2, %xmm04287; SSE-NEXT: pandn %xmm3, %xmm04288; SSE-NEXT: por %xmm8, %xmm04289; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4290; SSE-NEXT: movdqa 48(%rdi), %xmm04291; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4292; SSE-NEXT: movdqa %xmm9, %xmm34293; SSE-NEXT: pandn %xmm0, %xmm34294; SSE-NEXT: movdqa 48(%rsi), %xmm04295; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4296; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm0[3,3,3,3,4,5,6,7]4297; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]4298; SSE-NEXT: pand %xmm9, %xmm84299; SSE-NEXT: por %xmm3, %xmm84300; SSE-NEXT: movdqa %xmm1, %xmm34301; SSE-NEXT: pandn %xmm8, %xmm34302; SSE-NEXT: movdqa 48(%rcx), %xmm04303; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4304; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm0[3,3,3,3,4,5,6,7]4305; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]4306; SSE-NEXT: movdqa %xmm10, %xmm114307; SSE-NEXT: pandn %xmm8, %xmm114308; SSE-NEXT: movdqa 48(%rdx), %xmm84309; SSE-NEXT: pshufd {{.*#+}} xmm15 = xmm8[1,1,2,2]4310; SSE-NEXT: pand %xmm10, %xmm154311; SSE-NEXT: por %xmm15, %xmm114312; SSE-NEXT: pand %xmm1, %xmm114313; SSE-NEXT: por %xmm3, %xmm114314; SSE-NEXT: pand %xmm2, %xmm114315; SSE-NEXT: movdqa 48(%r8), %xmm34316; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4317; SSE-NEXT: movdqa %xmm2, %xmm04318; SSE-NEXT: pandn %xmm3, %xmm04319; SSE-NEXT: por %xmm11, %xmm04320; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4321; SSE-NEXT: movdqa 64(%rdi), %xmm04322; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4323; SSE-NEXT: movdqa %xmm9, %xmm34324; SSE-NEXT: pandn %xmm0, %xmm34325; SSE-NEXT: movdqa 64(%rsi), %xmm04326; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4327; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm0[3,3,3,3,4,5,6,7]4328; SSE-NEXT: pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]4329; SSE-NEXT: pand %xmm9, %xmm114330; SSE-NEXT: por %xmm3, %xmm114331; SSE-NEXT: movdqa %xmm1, %xmm154332; SSE-NEXT: pandn %xmm11, %xmm154333; SSE-NEXT: movdqa 64(%rcx), %xmm04334; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4335; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm0[3,3,3,3,4,5,6,7]4336; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]4337; SSE-NEXT: movdqa %xmm10, %xmm114338; SSE-NEXT: pandn %xmm3, %xmm114339; SSE-NEXT: movdqa 64(%rdx), %xmm04340; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4341; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]4342; SSE-NEXT: pand %xmm10, %xmm04343; SSE-NEXT: por %xmm0, %xmm114344; SSE-NEXT: pand %xmm1, %xmm114345; SSE-NEXT: por %xmm15, %xmm114346; SSE-NEXT: pand %xmm2, %xmm114347; SSE-NEXT: movdqa 64(%r8), %xmm34348; SSE-NEXT: movdqa %xmm3, (%rsp) # 16-byte Spill4349; SSE-NEXT: movdqa %xmm2, %xmm04350; SSE-NEXT: pandn %xmm3, %xmm04351; SSE-NEXT: por %xmm11, %xmm04352; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4353; SSE-NEXT: movdqa 80(%rdi), %xmm34354; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4355; SSE-NEXT: movdqa %xmm9, %xmm04356; SSE-NEXT: pandn %xmm3, %xmm04357; SSE-NEXT: movdqa 80(%rsi), %xmm34358; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4359; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm3[3,3,3,3,4,5,6,7]4360; SSE-NEXT: pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]4361; SSE-NEXT: pand %xmm9, %xmm114362; SSE-NEXT: por %xmm0, %xmm114363; SSE-NEXT: movdqa %xmm1, %xmm04364; SSE-NEXT: pandn %xmm11, %xmm04365; SSE-NEXT: movdqa 80(%rcx), %xmm34366; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4367; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm3[3,3,3,3,4,5,6,7]4368; SSE-NEXT: pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]4369; SSE-NEXT: movdqa %xmm10, %xmm154370; SSE-NEXT: pandn %xmm11, %xmm154371; SSE-NEXT: movdqa 80(%rdx), %xmm34372; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4373; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm3[1,1,2,2]4374; SSE-NEXT: pand %xmm10, %xmm114375; SSE-NEXT: por %xmm11, %xmm154376; SSE-NEXT: pand %xmm1, %xmm154377; SSE-NEXT: por %xmm0, %xmm154378; SSE-NEXT: pand %xmm2, %xmm154379; SSE-NEXT: movdqa 80(%r8), %xmm34380; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4381; SSE-NEXT: movdqa %xmm2, %xmm04382; SSE-NEXT: pandn %xmm3, %xmm04383; SSE-NEXT: por %xmm15, %xmm04384; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4385; SSE-NEXT: movdqa 96(%rdi), %xmm44386; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4387; SSE-NEXT: movdqa %xmm9, %xmm04388; SSE-NEXT: pandn %xmm4, %xmm04389; SSE-NEXT: movdqa 96(%rsi), %xmm34390; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4391; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm3[3,3,3,3,4,5,6,7]4392; SSE-NEXT: pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]4393; SSE-NEXT: pand %xmm9, %xmm114394; SSE-NEXT: por %xmm0, %xmm114395; SSE-NEXT: movdqa %xmm1, %xmm04396; SSE-NEXT: pandn %xmm11, %xmm04397; SSE-NEXT: movdqa 96(%rcx), %xmm34398; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4399; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm3[3,3,3,3,4,5,6,7]4400; SSE-NEXT: pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]4401; SSE-NEXT: movdqa %xmm10, %xmm154402; SSE-NEXT: pandn %xmm11, %xmm154403; SSE-NEXT: movdqa 96(%rdx), %xmm34404; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4405; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm3[1,1,2,2]4406; SSE-NEXT: pand %xmm10, %xmm114407; SSE-NEXT: por %xmm11, %xmm154408; SSE-NEXT: pand %xmm1, %xmm154409; SSE-NEXT: por %xmm0, %xmm154410; SSE-NEXT: pand %xmm2, %xmm154411; SSE-NEXT: movdqa 96(%r8), %xmm34412; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4413; SSE-NEXT: movdqa %xmm2, %xmm04414; SSE-NEXT: pandn %xmm3, %xmm04415; SSE-NEXT: por %xmm15, %xmm04416; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4417; SSE-NEXT: movdqa 112(%rdi), %xmm44418; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4419; SSE-NEXT: movdqa %xmm9, %xmm04420; SSE-NEXT: pandn %xmm4, %xmm04421; SSE-NEXT: movdqa 112(%rsi), %xmm44422; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4423; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm4[3,3,3,3,4,5,6,7]4424; SSE-NEXT: pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]4425; SSE-NEXT: pand %xmm9, %xmm114426; SSE-NEXT: por %xmm0, %xmm114427; SSE-NEXT: movdqa 112(%rcx), %xmm04428; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4429; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]4430; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]4431; SSE-NEXT: movdqa %xmm10, %xmm154432; SSE-NEXT: pandn %xmm0, %xmm154433; SSE-NEXT: movdqa 112(%rdx), %xmm04434; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4435; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]4436; SSE-NEXT: pand %xmm10, %xmm04437; SSE-NEXT: por %xmm0, %xmm154438; SSE-NEXT: pand %xmm1, %xmm154439; SSE-NEXT: pandn %xmm11, %xmm14440; SSE-NEXT: por %xmm15, %xmm14441; SSE-NEXT: pand %xmm2, %xmm14442; SSE-NEXT: movdqa 112(%r8), %xmm04443; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4444; SSE-NEXT: pandn %xmm0, %xmm24445; SSE-NEXT: por %xmm1, %xmm24446; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4447; SSE-NEXT: movdqa %xmm7, %xmm04448; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4449; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]4450; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]4451; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]4452; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,0,0,65535,65535,65535,0]4453; SSE-NEXT: movdqa %xmm1, %xmm114454; SSE-NEXT: pandn %xmm0, %xmm114455; SSE-NEXT: movdqa %xmm14, %xmm04456; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm12[0],xmm0[1],xmm12[1],xmm0[2],xmm12[2],xmm0[3],xmm12[3]4457; SSE-NEXT: pshuflw {{.*#+}} xmm15 = xmm0[0,1,3,2,4,5,6,7]4458; SSE-NEXT: pshufd {{.*#+}} xmm15 = xmm15[0,1,1,1]4459; SSE-NEXT: pand %xmm1, %xmm154460; SSE-NEXT: por %xmm11, %xmm154461; SSE-NEXT: movdqa %xmm9, %xmm134462; SSE-NEXT: pand %xmm9, %xmm154463; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload4464; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm4[0,1,0,1]4465; SSE-NEXT: movdqa %xmm9, %xmm14466; SSE-NEXT: pandn %xmm11, %xmm14467; SSE-NEXT: por %xmm15, %xmm14468; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4469; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]4470; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]4471; SSE-NEXT: movdqa %xmm2, %xmm154472; SSE-NEXT: punpcklwd {{.*#+}} xmm15 = xmm15[0],xmm7[0],xmm15[1],xmm7[1],xmm15[2],xmm7[2],xmm15[3],xmm7[3]4473; SSE-NEXT: pshuflw {{.*#+}} xmm15 = xmm15[2,2,2,2,4,5,6,7]4474; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,5,4,6,7]4475; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm15[0,2,2,3]4476; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]4477; SSE-NEXT: movdqa {{.*#+}} xmm15 = [65535,0,65535,65535,65535,65535,0,65535]4478; SSE-NEXT: movdqa %xmm15, %xmm14479; SSE-NEXT: pandn %xmm11, %xmm14480; SSE-NEXT: pand %xmm15, %xmm04481; SSE-NEXT: por %xmm0, %xmm14482; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4483; SSE-NEXT: punpckhwd {{.*#+}} xmm7 = xmm7[4],xmm2[4],xmm7[5],xmm2[5],xmm7[6],xmm2[6],xmm7[7],xmm2[7]4484; SSE-NEXT: movdqa %xmm7, %xmm14485; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4486; SSE-NEXT: movdqa {{.*#+}} xmm9 = [65535,65535,65535,0,0,65535,65535,65535]4487; SSE-NEXT: movdqa %xmm9, %xmm114488; SSE-NEXT: pandn %xmm1, %xmm114489; SSE-NEXT: movdqa %xmm14, %xmm14490; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm12[4],xmm1[5],xmm12[5],xmm1[6],xmm12[6],xmm1[7],xmm12[7]4491; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,2,3,3,4,5,6,7]4492; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,2,2]4493; SSE-NEXT: pand %xmm9, %xmm14494; SSE-NEXT: por %xmm11, %xmm14495; SSE-NEXT: movdqa {{.*#+}} xmm3 = [0,65535,65535,65535,65535,0,65535,65535]4496; SSE-NEXT: pand %xmm3, %xmm14497; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm4[2,3,2,3]4498; SSE-NEXT: movdqa %xmm3, %xmm114499; SSE-NEXT: pandn %xmm0, %xmm114500; SSE-NEXT: por %xmm1, %xmm114501; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4502; SSE-NEXT: psrlq $48, %xmm124503; SSE-NEXT: punpckhqdq {{.*#+}} xmm14 = xmm14[1],xmm12[1]4504; SSE-NEXT: movdqa %xmm9, %xmm14505; SSE-NEXT: pandn %xmm14, %xmm14506; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,7,6]4507; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[2,1,3,3]4508; SSE-NEXT: pand %xmm9, %xmm74509; SSE-NEXT: por %xmm1, %xmm74510; SSE-NEXT: movdqa %xmm10, %xmm14511; SSE-NEXT: pandn %xmm0, %xmm14512; SSE-NEXT: pand %xmm10, %xmm74513; SSE-NEXT: por %xmm7, %xmm14514; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4515; SSE-NEXT: movdqa %xmm5, %xmm04516; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4517; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]4518; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]4519; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]4520; SSE-NEXT: movdqa {{.*#+}} xmm4 = [65535,65535,0,0,65535,65535,65535,0]4521; SSE-NEXT: movdqa %xmm4, %xmm14522; SSE-NEXT: pandn %xmm0, %xmm14523; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload4524; SSE-NEXT: movdqa %xmm12, %xmm04525; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload4526; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm14[0],xmm0[1],xmm14[1],xmm0[2],xmm14[2],xmm0[3],xmm14[3]4527; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm0[0,1,3,2,4,5,6,7]4528; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[0,1,1,1]4529; SSE-NEXT: pand %xmm4, %xmm74530; SSE-NEXT: por %xmm1, %xmm74531; SSE-NEXT: pand %xmm13, %xmm74532; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload4533; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,1,0,1]4534; SSE-NEXT: movdqa %xmm13, %xmm114535; SSE-NEXT: pandn %xmm1, %xmm114536; SSE-NEXT: por %xmm7, %xmm114537; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4538; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]4539; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]4540; SSE-NEXT: movdqa %xmm2, %xmm74541; SSE-NEXT: punpcklwd {{.*#+}} xmm7 = xmm7[0],xmm5[0],xmm7[1],xmm5[1],xmm7[2],xmm5[2],xmm7[3],xmm5[3]4542; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[2,2,2,2,4,5,6,7]4543; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,5,4,6,7]4544; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[0,2,2,3]4545; SSE-NEXT: punpckldq {{.*#+}} xmm7 = xmm7[0],xmm0[0],xmm7[1],xmm0[1]4546; SSE-NEXT: movdqa %xmm15, %xmm04547; SSE-NEXT: pandn %xmm1, %xmm04548; SSE-NEXT: pand %xmm15, %xmm74549; SSE-NEXT: por %xmm7, %xmm04550; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4551; SSE-NEXT: punpckhwd {{.*#+}} xmm5 = xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]4552; SSE-NEXT: movdqa %xmm5, %xmm04553; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4554; SSE-NEXT: movdqa %xmm9, %xmm14555; SSE-NEXT: pandn %xmm0, %xmm14556; SSE-NEXT: movdqa %xmm12, %xmm114557; SSE-NEXT: movdqa %xmm12, %xmm04558; SSE-NEXT: movdqa %xmm14, %xmm124559; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm14[4],xmm0[5],xmm14[5],xmm0[6],xmm14[6],xmm0[7],xmm14[7]4560; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]4561; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,2,2]4562; SSE-NEXT: pand %xmm9, %xmm04563; SSE-NEXT: por %xmm1, %xmm04564; SSE-NEXT: pand %xmm3, %xmm04565; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm4[2,3,2,3]4566; SSE-NEXT: movdqa %xmm3, %xmm74567; SSE-NEXT: movdqa %xmm3, %xmm144568; SSE-NEXT: pandn %xmm1, %xmm74569; SSE-NEXT: por %xmm0, %xmm74570; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4571; SSE-NEXT: movdqa %xmm12, %xmm04572; SSE-NEXT: psrlq $48, %xmm04573; SSE-NEXT: movdqa %xmm11, %xmm34574; SSE-NEXT: punpckhqdq {{.*#+}} xmm3 = xmm3[1],xmm0[1]4575; SSE-NEXT: movdqa %xmm9, %xmm04576; SSE-NEXT: pandn %xmm3, %xmm04577; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,7,6]4578; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[2,1,3,3]4579; SSE-NEXT: pand %xmm9, %xmm54580; SSE-NEXT: por %xmm0, %xmm54581; SSE-NEXT: movdqa %xmm10, %xmm04582; SSE-NEXT: pandn %xmm1, %xmm04583; SSE-NEXT: pand %xmm10, %xmm54584; SSE-NEXT: por %xmm5, %xmm04585; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4586; SSE-NEXT: movdqa %xmm6, %xmm04587; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload4588; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm12[0],xmm0[1],xmm12[1],xmm0[2],xmm12[2],xmm0[3],xmm12[3]4589; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]4590; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]4591; SSE-NEXT: movdqa {{.*#+}} xmm4 = [65535,65535,0,0,65535,65535,65535,0]4592; SSE-NEXT: movdqa %xmm4, %xmm14593; SSE-NEXT: pandn %xmm0, %xmm14594; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload4595; SSE-NEXT: movdqa %xmm7, %xmm04596; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload4597; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm11[0],xmm0[1],xmm11[1],xmm0[2],xmm11[2],xmm0[3],xmm11[3]4598; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm0[0,1,3,2,4,5,6,7]4599; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,1,1,1]4600; SSE-NEXT: pand %xmm4, %xmm54601; SSE-NEXT: por %xmm1, %xmm54602; SSE-NEXT: movdqa %xmm13, %xmm24603; SSE-NEXT: pand %xmm13, %xmm54604; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload4605; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm13[0,1,0,1]4606; SSE-NEXT: movdqa %xmm2, %xmm34607; SSE-NEXT: pandn %xmm1, %xmm34608; SSE-NEXT: por %xmm5, %xmm34609; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4610; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]4611; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]4612; SSE-NEXT: movdqa %xmm12, %xmm54613; SSE-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3]4614; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]4615; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,4,6,7]4616; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3]4617; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]4618; SSE-NEXT: movdqa %xmm15, %xmm04619; SSE-NEXT: pandn %xmm1, %xmm04620; SSE-NEXT: pand %xmm15, %xmm54621; SSE-NEXT: por %xmm5, %xmm04622; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4623; SSE-NEXT: punpckhwd {{.*#+}} xmm6 = xmm6[4],xmm12[4],xmm6[5],xmm12[5],xmm6[6],xmm12[6],xmm6[7],xmm12[7]4624; SSE-NEXT: movdqa %xmm6, %xmm04625; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4626; SSE-NEXT: movdqa %xmm9, %xmm14627; SSE-NEXT: pandn %xmm0, %xmm14628; SSE-NEXT: movdqa %xmm7, %xmm34629; SSE-NEXT: movdqa %xmm7, %xmm04630; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm11[4],xmm0[5],xmm11[5],xmm0[6],xmm11[6],xmm0[7],xmm11[7]4631; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]4632; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,2,2]4633; SSE-NEXT: pand %xmm9, %xmm04634; SSE-NEXT: por %xmm1, %xmm04635; SSE-NEXT: pand %xmm14, %xmm04636; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm13[2,3,2,3]4637; SSE-NEXT: movdqa %xmm14, %xmm74638; SSE-NEXT: pandn %xmm1, %xmm74639; SSE-NEXT: por %xmm0, %xmm74640; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4641; SSE-NEXT: movdqa %xmm11, %xmm04642; SSE-NEXT: psrlq $48, %xmm04643; SSE-NEXT: punpckhqdq {{.*#+}} xmm3 = xmm3[1],xmm0[1]4644; SSE-NEXT: movdqa %xmm9, %xmm04645; SSE-NEXT: pandn %xmm3, %xmm04646; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm6[0,1,2,3,4,5,7,6]4647; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[2,1,3,3]4648; SSE-NEXT: pand %xmm9, %xmm54649; SSE-NEXT: por %xmm0, %xmm54650; SSE-NEXT: movdqa %xmm10, %xmm04651; SSE-NEXT: pandn %xmm1, %xmm04652; SSE-NEXT: pand %xmm10, %xmm54653; SSE-NEXT: por %xmm5, %xmm04654; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4655; SSE-NEXT: movdqa %xmm8, %xmm04656; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload4657; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1],xmm0[2],xmm7[2],xmm0[3],xmm7[3]4658; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]4659; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]4660; SSE-NEXT: movdqa %xmm4, %xmm14661; SSE-NEXT: pandn %xmm0, %xmm14662; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload4663; SSE-NEXT: movdqa %xmm3, %xmm04664; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload4665; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3]4666; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm0[0,1,3,2,4,5,6,7]4667; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,1,1,1]4668; SSE-NEXT: pand %xmm4, %xmm54669; SSE-NEXT: por %xmm1, %xmm54670; SSE-NEXT: pand %xmm2, %xmm54671; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload4672; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm11[0,1,0,1]4673; SSE-NEXT: movdqa %xmm2, %xmm124674; SSE-NEXT: pandn %xmm1, %xmm124675; SSE-NEXT: por %xmm5, %xmm124676; SSE-NEXT: movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4677; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]4678; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]4679; SSE-NEXT: movdqa %xmm7, %xmm54680; SSE-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm8[0],xmm5[1],xmm8[1],xmm5[2],xmm8[2],xmm5[3],xmm8[3]4681; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]4682; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,4,6,7]4683; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3]4684; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]4685; SSE-NEXT: movdqa %xmm15, %xmm04686; SSE-NEXT: pandn %xmm1, %xmm04687; SSE-NEXT: pand %xmm15, %xmm54688; SSE-NEXT: por %xmm5, %xmm04689; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4690; SSE-NEXT: punpckhwd {{.*#+}} xmm8 = xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]4691; SSE-NEXT: movdqa %xmm8, %xmm04692; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4693; SSE-NEXT: movdqa %xmm9, %xmm14694; SSE-NEXT: pandn %xmm0, %xmm14695; SSE-NEXT: movdqa %xmm3, %xmm04696; SSE-NEXT: movdqa %xmm6, %xmm54697; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]4698; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]4699; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,2,2]4700; SSE-NEXT: pand %xmm9, %xmm04701; SSE-NEXT: por %xmm1, %xmm04702; SSE-NEXT: pand %xmm14, %xmm04703; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm11[2,3,2,3]4704; SSE-NEXT: movdqa %xmm14, %xmm64705; SSE-NEXT: pandn %xmm1, %xmm64706; SSE-NEXT: por %xmm0, %xmm64707; SSE-NEXT: movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4708; SSE-NEXT: movdqa %xmm5, %xmm04709; SSE-NEXT: psrlq $48, %xmm04710; SSE-NEXT: punpckhqdq {{.*#+}} xmm3 = xmm3[1],xmm0[1]4711; SSE-NEXT: movdqa %xmm9, %xmm04712; SSE-NEXT: pandn %xmm3, %xmm04713; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm8[0,1,2,3,4,5,7,6]4714; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[2,1,3,3]4715; SSE-NEXT: pand %xmm9, %xmm54716; SSE-NEXT: por %xmm0, %xmm54717; SSE-NEXT: movdqa %xmm10, %xmm04718; SSE-NEXT: pandn %xmm1, %xmm04719; SSE-NEXT: pand %xmm10, %xmm54720; SSE-NEXT: por %xmm5, %xmm04721; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4722; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload4723; SSE-NEXT: movdqa %xmm11, %xmm04724; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload4725; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3]4726; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]4727; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]4728; SSE-NEXT: movdqa %xmm4, %xmm14729; SSE-NEXT: pandn %xmm0, %xmm14730; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload4731; SSE-NEXT: movdqa %xmm3, %xmm04732; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload4733; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1],xmm0[2],xmm7[2],xmm0[3],xmm7[3]4734; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm0[0,1,3,2,4,5,6,7]4735; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,1,1,1]4736; SSE-NEXT: pand %xmm4, %xmm54737; SSE-NEXT: por %xmm1, %xmm54738; SSE-NEXT: pand %xmm2, %xmm54739; SSE-NEXT: movdqa (%rsp), %xmm8 # 16-byte Reload4740; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm8[0,1,0,1]4741; SSE-NEXT: movdqa %xmm2, %xmm124742; SSE-NEXT: pandn %xmm1, %xmm124743; SSE-NEXT: por %xmm5, %xmm124744; SSE-NEXT: movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4745; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]4746; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]4747; SSE-NEXT: movdqa %xmm6, %xmm54748; SSE-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm11[0],xmm5[1],xmm11[1],xmm5[2],xmm11[2],xmm5[3],xmm11[3]4749; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]4750; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,4,6,7]4751; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3]4752; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]4753; SSE-NEXT: movdqa %xmm15, %xmm04754; SSE-NEXT: pandn %xmm1, %xmm04755; SSE-NEXT: pand %xmm15, %xmm54756; SSE-NEXT: por %xmm5, %xmm04757; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4758; SSE-NEXT: movdqa %xmm11, %xmm14759; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]4760; SSE-NEXT: movdqa %xmm1, %xmm04761; SSE-NEXT: movdqa %xmm1, %xmm64762; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4763; SSE-NEXT: movdqa %xmm9, %xmm14764; SSE-NEXT: pandn %xmm0, %xmm14765; SSE-NEXT: movdqa %xmm3, %xmm04766; SSE-NEXT: movdqa %xmm7, %xmm54767; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm7[4],xmm0[5],xmm7[5],xmm0[6],xmm7[6],xmm0[7],xmm7[7]4768; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]4769; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,2,2]4770; SSE-NEXT: pand %xmm9, %xmm04771; SSE-NEXT: por %xmm1, %xmm04772; SSE-NEXT: pand %xmm14, %xmm04773; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm8[2,3,2,3]4774; SSE-NEXT: movdqa %xmm14, %xmm74775; SSE-NEXT: pandn %xmm1, %xmm74776; SSE-NEXT: por %xmm0, %xmm74777; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4778; SSE-NEXT: movdqa %xmm5, %xmm04779; SSE-NEXT: psrlq $48, %xmm04780; SSE-NEXT: punpckhqdq {{.*#+}} xmm3 = xmm3[1],xmm0[1]4781; SSE-NEXT: movdqa %xmm9, %xmm04782; SSE-NEXT: pandn %xmm3, %xmm04783; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm6[0,1,2,3,4,5,7,6]4784; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,1,3,3]4785; SSE-NEXT: pand %xmm9, %xmm34786; SSE-NEXT: por %xmm0, %xmm34787; SSE-NEXT: movdqa %xmm10, %xmm04788; SSE-NEXT: pandn %xmm1, %xmm04789; SSE-NEXT: pand %xmm10, %xmm34790; SSE-NEXT: por %xmm3, %xmm04791; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4792; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload4793; SSE-NEXT: movdqa %xmm12, %xmm04794; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload4795; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3]4796; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]4797; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]4798; SSE-NEXT: movdqa %xmm4, %xmm14799; SSE-NEXT: pandn %xmm0, %xmm14800; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload4801; SSE-NEXT: movdqa %xmm7, %xmm34802; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload4803; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],xmm8[3]4804; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm3[0,1,3,2,4,5,6,7]4805; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm0[0,1,1,1]4806; SSE-NEXT: pand %xmm4, %xmm54807; SSE-NEXT: por %xmm1, %xmm54808; SSE-NEXT: pand %xmm2, %xmm54809; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload4810; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm11[0,1,0,1]4811; SSE-NEXT: movdqa %xmm2, %xmm04812; SSE-NEXT: pandn %xmm1, %xmm04813; SSE-NEXT: por %xmm5, %xmm04814; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4815; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,6,6]4816; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,3,2,3]4817; SSE-NEXT: movdqa %xmm6, %xmm54818; SSE-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm12[0],xmm5[1],xmm12[1],xmm5[2],xmm12[2],xmm5[3],xmm12[3]4819; SSE-NEXT: movdqa %xmm12, %xmm04820; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]4821; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,4,6,7]4822; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3]4823; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]4824; SSE-NEXT: movdqa %xmm15, %xmm34825; SSE-NEXT: pandn %xmm1, %xmm34826; SSE-NEXT: pand %xmm15, %xmm54827; SSE-NEXT: movdqa %xmm15, %xmm134828; SSE-NEXT: por %xmm5, %xmm34829; SSE-NEXT: movdqa %xmm3, (%rsp) # 16-byte Spill4830; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]4831; SSE-NEXT: movdqa %xmm0, %xmm14832; SSE-NEXT: movdqa %xmm0, %xmm64833; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4834; SSE-NEXT: movdqa %xmm9, %xmm34835; SSE-NEXT: pandn %xmm1, %xmm34836; SSE-NEXT: movdqa %xmm7, %xmm04837; SSE-NEXT: movdqa %xmm7, %xmm14838; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]4839; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,2,3,3,4,5,6,7]4840; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,2,2]4841; SSE-NEXT: pand %xmm9, %xmm14842; SSE-NEXT: por %xmm3, %xmm14843; SSE-NEXT: pand %xmm14, %xmm14844; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm11[2,3,2,3]4845; SSE-NEXT: movdqa %xmm14, %xmm74846; SSE-NEXT: pandn %xmm3, %xmm74847; SSE-NEXT: por %xmm1, %xmm74848; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4849; SSE-NEXT: movdqa %xmm8, %xmm14850; SSE-NEXT: psrlq $48, %xmm14851; SSE-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]4852; SSE-NEXT: movdqa %xmm9, %xmm14853; SSE-NEXT: pandn %xmm0, %xmm14854; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm6[0,1,2,3,4,5,7,6]4855; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm5[2,1,3,3]4856; SSE-NEXT: pand %xmm9, %xmm84857; SSE-NEXT: por %xmm1, %xmm84858; SSE-NEXT: movdqa %xmm10, %xmm04859; SSE-NEXT: pandn %xmm3, %xmm04860; SSE-NEXT: pand %xmm10, %xmm84861; SSE-NEXT: por %xmm8, %xmm04862; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4863; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload4864; SSE-NEXT: movdqa %xmm11, %xmm14865; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4866; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]4867; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]4868; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,0,2,1]4869; SSE-NEXT: movdqa %xmm4, %xmm34870; SSE-NEXT: pandn %xmm1, %xmm34871; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload4872; SSE-NEXT: movdqa %xmm5, %xmm84873; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload4874; SSE-NEXT: punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm12[0],xmm8[1],xmm12[1],xmm8[2],xmm12[2],xmm8[3],xmm12[3]4875; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm8[0,1,3,2,4,5,6,7]4876; SSE-NEXT: pshufd {{.*#+}} xmm14 = xmm1[0,1,1,1]4877; SSE-NEXT: pand %xmm4, %xmm144878; SSE-NEXT: por %xmm3, %xmm144879; SSE-NEXT: pand %xmm2, %xmm144880; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload4881; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm7[0,1,0,1]4882; SSE-NEXT: movdqa %xmm2, %xmm154883; SSE-NEXT: pandn %xmm3, %xmm154884; SSE-NEXT: por %xmm14, %xmm154885; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,6,6]4886; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm8[2,3,2,3]4887; SSE-NEXT: movdqa %xmm0, %xmm144888; SSE-NEXT: movdqa %xmm0, %xmm64889; SSE-NEXT: movdqa %xmm11, %xmm14890; SSE-NEXT: punpcklwd {{.*#+}} xmm14 = xmm14[0],xmm11[0],xmm14[1],xmm11[1],xmm14[2],xmm11[2],xmm14[3],xmm11[3]4891; SSE-NEXT: pshuflw {{.*#+}} xmm14 = xmm14[2,2,2,2,4,5,6,7]4892; SSE-NEXT: pshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,5,4,6,7]4893; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm14[0,2,2,3]4894; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1]4895; SSE-NEXT: movdqa %xmm13, %xmm144896; SSE-NEXT: pandn %xmm3, %xmm144897; SSE-NEXT: pand %xmm13, %xmm04898; SSE-NEXT: por %xmm0, %xmm144899; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]4900; SSE-NEXT: movdqa %xmm1, %xmm04901; SSE-NEXT: movdqa %xmm1, %xmm64902; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4903; SSE-NEXT: movdqa %xmm9, %xmm34904; SSE-NEXT: pandn %xmm0, %xmm34905; SSE-NEXT: movdqa %xmm5, %xmm04906; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm12[4],xmm0[5],xmm12[5],xmm0[6],xmm12[6],xmm0[7],xmm12[7]4907; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]4908; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,2,2]4909; SSE-NEXT: pand %xmm9, %xmm04910; SSE-NEXT: por %xmm3, %xmm04911; SSE-NEXT: movdqa {{.*#+}} xmm11 = [0,65535,65535,65535,65535,0,65535,65535]4912; SSE-NEXT: pand %xmm11, %xmm04913; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm7[2,3,2,3]4914; SSE-NEXT: pandn %xmm1, %xmm114915; SSE-NEXT: por %xmm0, %xmm114916; SSE-NEXT: movdqa %xmm12, %xmm04917; SSE-NEXT: psrlq $48, %xmm04918; SSE-NEXT: movdqa %xmm5, %xmm34919; SSE-NEXT: punpckhqdq {{.*#+}} xmm3 = xmm3[1],xmm0[1]4920; SSE-NEXT: movdqa %xmm9, %xmm04921; SSE-NEXT: pandn %xmm3, %xmm04922; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm6[0,1,2,3,4,5,7,6]4923; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,1,3,3]4924; SSE-NEXT: pand %xmm9, %xmm34925; SSE-NEXT: por %xmm0, %xmm34926; SSE-NEXT: movdqa %xmm10, %xmm124927; SSE-NEXT: pandn %xmm1, %xmm124928; SSE-NEXT: pand %xmm10, %xmm34929; SSE-NEXT: por %xmm3, %xmm124930; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4931; SSE-NEXT: movdqa %xmm0, %xmm14932; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload4933; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1],xmm1[2],xmm7[2],xmm1[3],xmm7[3]4934; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]4935; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,0,2,1]4936; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload4937; SSE-NEXT: movdqa %xmm8, %xmm34938; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload4939; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm6[0],xmm3[1],xmm6[1],xmm3[2],xmm6[2],xmm3[3],xmm6[3]4940; SSE-NEXT: pshuflw {{.*#+}} xmm13 = xmm3[0,1,3,2,4,5,6,7]4941; SSE-NEXT: pshufd {{.*#+}} xmm13 = xmm13[0,1,1,1]4942; SSE-NEXT: pand %xmm4, %xmm134943; SSE-NEXT: pandn %xmm1, %xmm44944; SSE-NEXT: por %xmm13, %xmm44945; SSE-NEXT: pand %xmm2, %xmm44946; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload4947; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[0,1,0,1]4948; SSE-NEXT: pandn %xmm1, %xmm24949; SSE-NEXT: por %xmm4, %xmm24950; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,6,6]4951; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,3,2,3]4952; SSE-NEXT: movdqa %xmm7, %xmm44953; SSE-NEXT: movdqa %xmm0, %xmm134954; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3]4955; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]4956; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,4,6,7]4957; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]4958; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]4959; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,65535,0,65535]4960; SSE-NEXT: pand %xmm0, %xmm44961; SSE-NEXT: pandn %xmm1, %xmm04962; SSE-NEXT: por %xmm4, %xmm04963; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4964; SSE-NEXT: movdqa %xmm13, %xmm34965; SSE-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm7[4],xmm3[5],xmm7[5],xmm3[6],xmm7[6],xmm3[7],xmm7[7]4966; SSE-NEXT: movdqa %xmm3, %xmm14967; SSE-NEXT: movdqa %xmm3, %xmm74968; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4969; SSE-NEXT: movdqa %xmm9, %xmm34970; SSE-NEXT: pandn %xmm1, %xmm34971; SSE-NEXT: movdqa %xmm8, %xmm14972; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]4973; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,2,3,3,4,5,6,7]4974; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,2,2]4975; SSE-NEXT: pand %xmm9, %xmm14976; SSE-NEXT: por %xmm3, %xmm14977; SSE-NEXT: movdqa {{.*#+}} xmm0 = [0,65535,65535,65535,65535,0,65535,65535]4978; SSE-NEXT: pand %xmm0, %xmm14979; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm5[2,3,2,3]4980; SSE-NEXT: pandn %xmm3, %xmm04981; SSE-NEXT: por %xmm1, %xmm04982; SSE-NEXT: psrlq $48, %xmm64983; SSE-NEXT: punpckhqdq {{.*#+}} xmm8 = xmm8[1],xmm6[1]4984; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm7[0,1,2,3,4,5,7,6]4985; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,1,3,3]4986; SSE-NEXT: pand %xmm9, %xmm14987; SSE-NEXT: pandn %xmm8, %xmm94988; SSE-NEXT: por %xmm1, %xmm94989; SSE-NEXT: pand %xmm10, %xmm94990; SSE-NEXT: pandn %xmm3, %xmm104991; SSE-NEXT: por %xmm9, %xmm104992; SSE-NEXT: movdqa %xmm10, 624(%r9)4993; SSE-NEXT: movdqa %xmm0, 608(%r9)4994; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4995; SSE-NEXT: movaps %xmm0, 576(%r9)4996; SSE-NEXT: movdqa %xmm2, 560(%r9)4997; SSE-NEXT: movdqa %xmm12, 544(%r9)4998; SSE-NEXT: movdqa %xmm11, 528(%r9)4999; SSE-NEXT: movdqa %xmm14, 496(%r9)5000; SSE-NEXT: movdqa %xmm15, 480(%r9)5001; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5002; SSE-NEXT: movaps %xmm0, 464(%r9)5003; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5004; SSE-NEXT: movaps %xmm0, 448(%r9)5005; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload5006; SSE-NEXT: movaps %xmm0, 416(%r9)5007; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5008; SSE-NEXT: movaps %xmm0, 400(%r9)5009; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5010; SSE-NEXT: movaps %xmm0, 384(%r9)5011; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5012; SSE-NEXT: movaps %xmm0, 368(%r9)5013; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5014; SSE-NEXT: movaps %xmm0, 336(%r9)5015; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5016; SSE-NEXT: movaps %xmm0, 320(%r9)5017; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5018; SSE-NEXT: movaps %xmm0, 304(%r9)5019; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5020; SSE-NEXT: movaps %xmm0, 288(%r9)5021; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5022; SSE-NEXT: movaps %xmm0, 256(%r9)5023; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5024; SSE-NEXT: movaps %xmm0, 240(%r9)5025; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5026; SSE-NEXT: movaps %xmm0, 224(%r9)5027; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5028; SSE-NEXT: movaps %xmm0, 208(%r9)5029; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5030; SSE-NEXT: movaps %xmm0, 176(%r9)5031; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5032; SSE-NEXT: movaps %xmm0, 160(%r9)5033; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5034; SSE-NEXT: movaps %xmm0, 144(%r9)5035; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5036; SSE-NEXT: movaps %xmm0, 128(%r9)5037; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5038; SSE-NEXT: movaps %xmm0, 96(%r9)5039; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5040; SSE-NEXT: movaps %xmm0, 80(%r9)5041; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5042; SSE-NEXT: movaps %xmm0, 64(%r9)5043; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5044; SSE-NEXT: movaps %xmm0, 48(%r9)5045; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5046; SSE-NEXT: movaps %xmm0, 16(%r9)5047; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5048; SSE-NEXT: movaps %xmm0, (%r9)5049; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5050; SSE-NEXT: movaps %xmm0, 592(%r9)5051; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5052; SSE-NEXT: movaps %xmm0, 512(%r9)5053; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5054; SSE-NEXT: movaps %xmm0, 432(%r9)5055; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5056; SSE-NEXT: movaps %xmm0, 352(%r9)5057; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5058; SSE-NEXT: movaps %xmm0, 272(%r9)5059; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5060; SSE-NEXT: movaps %xmm0, 192(%r9)5061; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5062; SSE-NEXT: movaps %xmm0, 112(%r9)5063; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5064; SSE-NEXT: movaps %xmm0, 32(%r9)5065; SSE-NEXT: addq $616, %rsp # imm = 0x2685066; SSE-NEXT: retq5067;5068; AVX-LABEL: store_i16_stride5_vf64:5069; AVX: # %bb.0:5070; AVX-NEXT: subq $392, %rsp # imm = 0x1885071; AVX-NEXT: vmovdqa 80(%rcx), %xmm45072; AVX-NEXT: vmovdqa 80(%rdx), %xmm65073; AVX-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm6[4],xmm4[4],xmm6[5],xmm4[5],xmm6[6],xmm4[6],xmm6[7],xmm4[7]5074; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]5075; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,6]5076; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,1,3,3]5077; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm05078; AVX-NEXT: vmovaps {{.*#+}} ymm12 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535]5079; AVX-NEXT: vandnps %ymm0, %ymm12, %ymm05080; AVX-NEXT: vmovdqa 80(%rdi), %xmm85081; AVX-NEXT: vmovdqa 80(%rsi), %xmm105082; AVX-NEXT: vpsrlq $48, %xmm10, %xmm15083; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm1 = xmm8[1],xmm1[1]5084; AVX-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm8[4],xmm10[4],xmm8[5],xmm10[5],xmm8[6],xmm10[6],xmm8[7],xmm10[7]5085; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,2,3,3,4,5,6,7]5086; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,1,2,2]5087; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm15088; AVX-NEXT: vandps %ymm1, %ymm12, %ymm15089; AVX-NEXT: vorps %ymm0, %ymm1, %ymm05090; AVX-NEXT: vmovdqa 80(%r8), %xmm95091; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm9[2,3,2,3]5092; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm1[0],xmm0[1,2,3,4],xmm1[5],xmm0[6,7]5093; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5094; AVX-NEXT: vextractf128 $1, %ymm0, %xmm05095; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]5096; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5097; AVX-NEXT: vmovdqa 64(%rdi), %xmm05098; AVX-NEXT: vmovdqa 64(%rsi), %xmm15099; AVX-NEXT: vpsrlq $48, %xmm1, %xmm25100; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm0[1],xmm2[1]5101; AVX-NEXT: vpunpcklwd {{.*#+}} xmm11 = xmm8[0],xmm10[0],xmm8[1],xmm10[1],xmm8[2],xmm10[2],xmm8[3],xmm10[3]5102; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm11[0,1,3,2,4,5,6,7]5103; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,1,1]5104; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm75105; AVX-NEXT: vmovdqa 64(%rcx), %xmm35106; AVX-NEXT: vmovdqa 64(%rdx), %xmm55107; AVX-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm5[4],xmm3[4],xmm5[5],xmm3[5],xmm5[6],xmm3[6],xmm5[7],xmm3[7]5108; AVX-NEXT: vpshufhw {{.*#+}} xmm13 = xmm2[0,1,2,3,4,5,7,6]5109; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm13[2,1,3,3]5110; AVX-NEXT: vpunpcklwd {{.*#+}} xmm14 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3]5111; AVX-NEXT: vpshuflw {{.*#+}} xmm14 = xmm14[0,1,2,2,4,5,6,7]5112; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm14[0,0,2,1]5113; AVX-NEXT: vinsertf128 $1, %xmm14, %ymm13, %ymm135114; AVX-NEXT: vandnps %ymm7, %ymm12, %ymm75115; AVX-NEXT: vandps %ymm12, %ymm13, %ymm135116; AVX-NEXT: vorps %ymm7, %ymm13, %ymm75117; AVX-NEXT: vextractf128 $1, %ymm7, %xmm135118; AVX-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[3,3,3,3,4,5,6,7]5119; AVX-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,4,4,4]5120; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm10[0,1,2,3],xmm8[4],xmm10[5,6,7]5121; AVX-NEXT: vpshufhw {{.*#+}} xmm10 = xmm11[0,1,2,3,4,5,6,6]5122; AVX-NEXT: vpshufd {{.*#+}} xmm10 = xmm10[0,2,2,3]5123; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm10, %ymm85124; AVX-NEXT: vpshufd {{.*#+}} xmm10 = xmm6[1,1,2,2]5125; AVX-NEXT: vpshuflw {{.*#+}} xmm11 = xmm4[3,3,3,3,4,5,6,7]5126; AVX-NEXT: vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]5127; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm10[0,1],xmm11[2],xmm10[3,4,5,6],xmm11[7]5128; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm9[0,1,0,1]5129; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm13[0,1,2,3],xmm14[4],xmm13[5,6,7]5130; AVX-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5131; AVX-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3]5132; AVX-NEXT: vmovaps {{.*#+}} ymm15 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]5133; AVX-NEXT: vandnps %ymm8, %ymm15, %ymm65134; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]5135; AVX-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,4,6,7]5136; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm4, %ymm45137; AVX-NEXT: vandps %ymm4, %ymm15, %ymm45138; AVX-NEXT: vorps %ymm6, %ymm4, %ymm45139; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm4[0],xmm14[1],xmm4[2,3,4,5],xmm14[6],xmm4[7]5140; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5141; AVX-NEXT: vextractf128 $1, %ymm4, %xmm45142; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2],xmm9[3],xmm4[4,5,6,7]5143; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5144; AVX-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3]5145; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,1,2,2,4,5,6,7]5146; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,0,2,1]5147; AVX-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3]5148; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[1,1,2,3]5149; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,4,6,7]5150; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm4, %ymm65151; AVX-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]5152; AVX-NEXT: vpshuflw {{.*#+}} xmm8 = xmm4[0,1,3,2,4,5,6,7]5153; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm8[0,1,1,1]5154; AVX-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,6]5155; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]5156; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm8, %ymm85157; AVX-NEXT: vmovdqa 64(%r8), %xmm45158; AVX-NEXT: vandnps %ymm6, %ymm15, %ymm65159; AVX-NEXT: vandps %ymm15, %ymm8, %ymm85160; AVX-NEXT: vorps %ymm6, %ymm8, %ymm65161; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm4[0,1,0,1]5162; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm6[0,1,2,3],xmm8[4],xmm6[5,6,7]5163; AVX-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5164; AVX-NEXT: vextractf128 $1, %ymm6, %xmm65165; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0],xmm8[1],xmm6[2,3,4,5],xmm8[6],xmm6[7]5166; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5167; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[1,1,2,2]5168; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[3,3,3,3,4,5,6,7]5169; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]5170; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm5[0,1],xmm3[2],xmm5[3,4,5,6],xmm3[7]5171; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm4[2,3,2,3]5172; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm7[0,1],xmm5[2],xmm7[3,4,5,6],xmm5[7]5173; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5174; AVX-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13]5175; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm25176; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm1[3,3,3,3,4,5,6,7]5177; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]5178; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3],xmm0[4],xmm3[5,6,7]5179; AVX-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]5180; AVX-NEXT: vmovaps {{.*#+}} ymm10 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]5181; AVX-NEXT: vandnps %ymm2, %ymm10, %ymm15182; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]5183; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,2,2]5184; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm3, %ymm05185; AVX-NEXT: vandps %ymm0, %ymm10, %ymm05186; AVX-NEXT: vorps %ymm1, %ymm0, %ymm05187; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1,2],xmm4[3],xmm0[4,5,6,7]5188; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5189; AVX-NEXT: vextractf128 $1, %ymm0, %xmm05190; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm5[0],xmm0[1,2,3,4],xmm5[5],xmm0[6,7]5191; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5192; AVX-NEXT: vmovdqa 48(%rdi), %xmm45193; AVX-NEXT: vmovdqa 48(%rsi), %xmm55194; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm5[3,3,3,3,4,5,6,7]5195; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]5196; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm4[4],xmm0[5,6,7]5197; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]5198; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm0[0,1,2,3,4,5,6,6]5199; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]5200; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm25201; AVX-NEXT: vmovdqa 48(%rcx), %xmm15202; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm1[3,3,3,3,4,5,6,7]5203; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm3[0,1,2,3,4,4,4,4]5204; AVX-NEXT: vmovdqa 48(%rdx), %xmm35205; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm3[1,1,2,2]5206; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm7[0,1],xmm6[2],xmm7[3,4,5,6],xmm6[7]5207; AVX-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]5208; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[2,2,2,2,4,5,6,7]5209; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,5,4,6,7]5210; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm7, %ymm65211; AVX-NEXT: vandnps %ymm2, %ymm15, %ymm25212; AVX-NEXT: vandps %ymm6, %ymm15, %ymm65213; AVX-NEXT: vorps %ymm2, %ymm6, %ymm25214; AVX-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],xmm1[7]5215; AVX-NEXT: vpslldq {{.*#+}} xmm7 = zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9,10,11,12,13]5216; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,7,6]5217; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[2,1,3,3]5218; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm7, %ymm65219; AVX-NEXT: vpsrlq $48, %xmm5, %xmm75220; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm7 = xmm4[1],xmm7[1]5221; AVX-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm4[4],xmm5[4],xmm4[5],xmm5[5],xmm4[6],xmm5[6],xmm4[7],xmm5[7]5222; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,2,3,3,4,5,6,7]5223; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,1,2,2]5224; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm4, %ymm45225; AVX-NEXT: vandnps %ymm6, %ymm12, %ymm55226; AVX-NEXT: vandps %ymm4, %ymm12, %ymm45227; AVX-NEXT: vorps %ymm5, %ymm4, %ymm45228; AVX-NEXT: vmovdqa 48(%r8), %xmm115229; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm11[2,3,2,3]5230; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm5[0],xmm4[1,2,3,4],xmm5[5],xmm4[6,7]5231; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5232; AVX-NEXT: vextractf128 $1, %ymm4, %xmm45233; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2],xmm4[3,4,5,6],xmm5[7]5234; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5235; AVX-NEXT: vmovdqa 32(%rcx), %xmm45236; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm4[3,3,3,3,4,5,6,7]5237; AVX-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]5238; AVX-NEXT: vmovdqa 32(%rdx), %xmm65239; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm6[1,1,2,2]5240; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm7[0,1],xmm5[2],xmm7[3,4,5,6],xmm5[7]5241; AVX-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm6[4],xmm4[4],xmm6[5],xmm4[5],xmm6[6],xmm4[6],xmm6[7],xmm4[7]5242; AVX-NEXT: vpslldq {{.*#+}} xmm7 = zero,zero,xmm8[0,1,2,3,4,5,6,7,8,9,10,11,12,13]5243; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm5, %ymm75244; AVX-NEXT: vmovdqa 32(%rsi), %xmm55245; AVX-NEXT: vpshuflw {{.*#+}} xmm9 = xmm5[3,3,3,3,4,5,6,7]5246; AVX-NEXT: vpshufhw {{.*#+}} xmm13 = xmm9[0,1,2,3,4,4,4,4]5247; AVX-NEXT: vmovdqa 32(%rdi), %xmm95248; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1,2,3],xmm9[4],xmm13[5,6,7]5249; AVX-NEXT: vpunpckhwd {{.*#+}} xmm14 = xmm9[4],xmm5[4],xmm9[5],xmm5[5],xmm9[6],xmm5[6],xmm9[7],xmm5[7]5250; AVX-NEXT: vpshuflw {{.*#+}} xmm14 = xmm14[0,2,3,3,4,5,6,7]5251; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm14[0,1,2,2]5252; AVX-NEXT: vinsertf128 $1, %xmm14, %ymm13, %ymm135253; AVX-NEXT: vandnps %ymm7, %ymm10, %ymm75254; AVX-NEXT: vandps %ymm10, %ymm13, %ymm135255; AVX-NEXT: vorps %ymm7, %ymm13, %ymm75256; AVX-NEXT: vpsrlq $48, %xmm5, %xmm135257; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm13 = xmm9[1],xmm13[1]5258; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,2,4,5,6,7]5259; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,1,1]5260; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm13, %ymm05261; AVX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]5262; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm8[0,1,2,3,4,5,7,6]5263; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[2,1,3,3]5264; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]5265; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,2,1]5266; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm3, %ymm15267; AVX-NEXT: vandnps %ymm0, %ymm12, %ymm05268; AVX-NEXT: vandps %ymm1, %ymm12, %ymm15269; AVX-NEXT: vorps %ymm0, %ymm1, %ymm05270; AVX-NEXT: vextractf128 $1, %ymm2, %xmm15271; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm11[3],xmm1[4,5,6,7]5272; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5273; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm11[0,1,0,1]5274; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm1[1],xmm2[2,3,4,5],xmm1[6],xmm2[7]5275; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5276; AVX-NEXT: vmovdqa 32(%r8), %xmm25277; AVX-NEXT: vextractf128 $1, %ymm7, %xmm35278; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm2[2,3,2,3]5279; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm8[0],xmm3[1,2,3,4],xmm8[5],xmm3[6,7]5280; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5281; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm0[0,1],xmm8[2],xmm0[3,4,5,6],xmm8[7]5282; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5283; AVX-NEXT: vextractf128 $1, %ymm0, %xmm05284; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]5285; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5286; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3]5287; AVX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3]5288; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]5289; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]5290; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[1,1,2,3]5291; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,4,6,7]5292; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm05293; AVX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm9[0],xmm5[0],xmm9[1],xmm5[1],xmm9[2],xmm5[2],xmm9[3],xmm5[3]5294; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm1[0,1,3,2,4,5,6,7]5295; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,1,1]5296; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,6]5297; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]5298; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm3, %ymm15299; AVX-NEXT: vandnps %ymm0, %ymm15, %ymm05300; AVX-NEXT: vandps %ymm1, %ymm15, %ymm15301; AVX-NEXT: vorps %ymm0, %ymm1, %ymm05302; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm7[0,1,2],xmm2[3],xmm7[4,5,6,7]5303; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5304; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm2[0,1,0,1]5305; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]5306; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5307; AVX-NEXT: vextractf128 $1, %ymm0, %xmm05308; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5],xmm1[6],xmm0[7]5309; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5310; AVX-NEXT: vmovdqa 112(%rsi), %xmm45311; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm4[3,3,3,3,4,5,6,7]5312; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]5313; AVX-NEXT: vmovdqa 112(%rdi), %xmm55314; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm5[4],xmm0[5,6,7]5315; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]5316; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm0[0,1,2,3,4,5,6,6]5317; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]5318; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm25319; AVX-NEXT: vmovdqa 112(%rcx), %xmm15320; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm1[3,3,3,3,4,5,6,7]5321; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm3[0,1,2,3,4,4,4,4]5322; AVX-NEXT: vmovdqa 112(%rdx), %xmm35323; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm3[1,1,2,2]5324; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm7[0,1],xmm6[2],xmm7[3,4,5,6],xmm6[7]5325; AVX-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]5326; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[2,2,2,2,4,5,6,7]5327; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,5,4,6,7]5328; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm7, %ymm65329; AVX-NEXT: vandnps %ymm2, %ymm15, %ymm25330; AVX-NEXT: vandps %ymm6, %ymm15, %ymm65331; AVX-NEXT: vorps %ymm2, %ymm6, %ymm25332; AVX-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],xmm1[7]5333; AVX-NEXT: vpslldq {{.*#+}} xmm7 = zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9,10,11,12,13]5334; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,7,6]5335; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[2,1,3,3]5336; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm7, %ymm65337; AVX-NEXT: vpsrlq $48, %xmm4, %xmm75338; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm7 = xmm5[1],xmm7[1]5339; AVX-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]5340; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,2,3,3,4,5,6,7]5341; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,1,2,2]5342; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm4, %ymm45343; AVX-NEXT: vandnps %ymm6, %ymm12, %ymm55344; AVX-NEXT: vandps %ymm4, %ymm12, %ymm45345; AVX-NEXT: vorps %ymm5, %ymm4, %ymm45346; AVX-NEXT: vmovdqa 112(%r8), %xmm75347; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm7[2,3,2,3]5348; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm5[0],xmm4[1,2,3,4],xmm5[5],xmm4[6,7]5349; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5350; AVX-NEXT: vextractf128 $1, %ymm4, %xmm45351; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2],xmm4[3,4,5,6],xmm5[7]5352; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5353; AVX-NEXT: vmovdqa 96(%rcx), %xmm45354; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm4[3,3,3,3,4,5,6,7]5355; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm5[0,1,2,3,4,4,4,4]5356; AVX-NEXT: vmovdqa 96(%rdx), %xmm55357; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm5[1,1,2,2]5358; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm8[0,1],xmm6[2],xmm8[3,4,5,6],xmm6[7]5359; AVX-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]5360; AVX-NEXT: vpslldq {{.*#+}} xmm9 = zero,zero,xmm8[0,1,2,3,4,5,6,7,8,9,10,11,12,13]5361; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm6, %ymm95362; AVX-NEXT: vmovdqa 96(%rsi), %xmm65363; AVX-NEXT: vpshuflw {{.*#+}} xmm11 = xmm6[3,3,3,3,4,5,6,7]5364; AVX-NEXT: vpshufhw {{.*#+}} xmm13 = xmm11[0,1,2,3,4,4,4,4]5365; AVX-NEXT: vmovdqa 96(%rdi), %xmm115366; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1,2,3],xmm11[4],xmm13[5,6,7]5367; AVX-NEXT: vpunpckhwd {{.*#+}} xmm14 = xmm11[4],xmm6[4],xmm11[5],xmm6[5],xmm11[6],xmm6[6],xmm11[7],xmm6[7]5368; AVX-NEXT: vpshuflw {{.*#+}} xmm14 = xmm14[0,2,3,3,4,5,6,7]5369; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm14[0,1,2,2]5370; AVX-NEXT: vinsertf128 $1, %xmm14, %ymm13, %ymm135371; AVX-NEXT: vandnps %ymm9, %ymm10, %ymm95372; AVX-NEXT: vandps %ymm10, %ymm13, %ymm135373; AVX-NEXT: vorps %ymm9, %ymm13, %ymm95374; AVX-NEXT: vpsrlq $48, %xmm6, %xmm135375; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm13 = xmm11[1],xmm13[1]5376; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,2,4,5,6,7]5377; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,1,1]5378; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm13, %ymm05379; AVX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]5380; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm8[0,1,2,3,4,5,7,6]5381; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[2,1,3,3]5382; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]5383; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,2,1]5384; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm3, %ymm15385; AVX-NEXT: vandnps %ymm0, %ymm12, %ymm05386; AVX-NEXT: vandps %ymm1, %ymm12, %ymm15387; AVX-NEXT: vorps %ymm0, %ymm1, %ymm05388; AVX-NEXT: vextractf128 $1, %ymm2, %xmm15389; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm7[3],xmm1[4,5,6,7]5390; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5391; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm7[0,1,0,1]5392; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm1[1],xmm2[2,3,4,5],xmm1[6],xmm2[7]5393; AVX-NEXT: vmovdqa %xmm2, (%rsp) # 16-byte Spill5394; AVX-NEXT: vmovdqa 96(%r8), %xmm25395; AVX-NEXT: vextractf128 $1, %ymm9, %xmm35396; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm2[2,3,2,3]5397; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm7[0],xmm3[1,2,3,4],xmm7[5],xmm3[6,7]5398; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5399; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm0[0,1],xmm7[2],xmm0[3,4,5,6],xmm7[7]5400; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5401; AVX-NEXT: vextractf128 $1, %ymm0, %xmm05402; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]5403; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5404; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]5405; AVX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]5406; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]5407; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]5408; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[1,1,2,3]5409; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,4,6,7]5410; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm05411; AVX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm11[0],xmm6[0],xmm11[1],xmm6[1],xmm11[2],xmm6[2],xmm11[3],xmm6[3]5412; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm1[0,1,3,2,4,5,6,7]5413; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,1,1]5414; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,6]5415; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]5416; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm3, %ymm15417; AVX-NEXT: vandnps %ymm0, %ymm15, %ymm05418; AVX-NEXT: vandps %ymm1, %ymm15, %ymm15419; AVX-NEXT: vorps %ymm0, %ymm1, %ymm05420; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm9[0,1,2],xmm2[3],xmm9[4,5,6,7]5421; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5422; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm2[0,1,0,1]5423; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]5424; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5425; AVX-NEXT: vextractf128 $1, %ymm0, %xmm05426; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5],xmm1[6],xmm0[7]5427; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5428; AVX-NEXT: vmovdqa 16(%rdx), %xmm85429; AVX-NEXT: vmovdqa 16(%rcx), %xmm75430; AVX-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]5431; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]5432; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,6]5433; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,1,3,3]5434; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm45435; AVX-NEXT: vmovdqa 16(%rdi), %xmm15436; AVX-NEXT: vmovdqa 16(%rsi), %xmm05437; AVX-NEXT: vpsrlq $48, %xmm0, %xmm55438; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm5 = xmm1[1],xmm5[1]5439; AVX-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]5440; AVX-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,2,3,3,4,5,6,7]5441; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[0,1,2,2]5442; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm55443; AVX-NEXT: vandnps %ymm4, %ymm12, %ymm45444; AVX-NEXT: vandps %ymm5, %ymm12, %ymm55445; AVX-NEXT: vorps %ymm4, %ymm5, %ymm45446; AVX-NEXT: vmovdqa 16(%r8), %xmm65447; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm6[2,3,2,3]5448; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm5[0],xmm4[1,2,3,4],xmm5[5],xmm4[6,7]5449; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5450; AVX-NEXT: vextractf128 $1, %ymm4, %xmm45451; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0,1],xmm5[2],xmm4[3,4,5,6],xmm5[7]5452; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5453; AVX-NEXT: vmovdqa (%rdi), %xmm105454; AVX-NEXT: vmovdqa (%rsi), %xmm95455; AVX-NEXT: vpsrlq $48, %xmm9, %xmm45456; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm4 = xmm10[1],xmm4[1]5457; AVX-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]5458; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm2[0,1,3,2,4,5,6,7]5459; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[0,1,1,1]5460; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm4, %ymm35461; AVX-NEXT: vmovdqa (%rdx), %xmm45462; AVX-NEXT: vmovdqa (%rcx), %xmm55463; AVX-NEXT: vpunpckhwd {{.*#+}} xmm11 = xmm4[4],xmm5[4],xmm4[5],xmm5[5],xmm4[6],xmm5[6],xmm4[7],xmm5[7]5464; AVX-NEXT: vpshufhw {{.*#+}} xmm14 = xmm11[0,1,2,3,4,5,7,6]5465; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm14[2,1,3,3]5466; AVX-NEXT: vpunpcklwd {{.*#+}} xmm13 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]5467; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[0,1,2,2,4,5,6,7]5468; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm13[0,0,2,1]5469; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm14, %ymm135470; AVX-NEXT: vandnps %ymm3, %ymm12, %ymm35471; AVX-NEXT: vandps %ymm12, %ymm13, %ymm125472; AVX-NEXT: vorps %ymm3, %ymm12, %ymm125473; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]5474; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]5475; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]5476; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm2[0,1,2,3,4,5,6,6]5477; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]5478; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm05479; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm7[3,3,3,3,4,5,6,7]5480; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]5481; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm8[1,1,2,2]5482; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1],xmm1[2],xmm2[3,4,5,6],xmm1[7]5483; AVX-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3]5484; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[2,2,2,2,4,5,6,7]5485; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,4,6,7]5486; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm15487; AVX-NEXT: vandnps %ymm0, %ymm15, %ymm05488; AVX-NEXT: vandps %ymm1, %ymm15, %ymm15489; AVX-NEXT: vorps %ymm0, %ymm1, %ymm25490; AVX-NEXT: vextractf128 $1, %ymm12, %xmm05491; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm6[0,1,0,1]5492; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]5493; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0],xmm1[1],xmm2[2,3,4,5],xmm1[6],xmm2[7]5494; AVX-NEXT: vextractf128 $1, %ymm2, %xmm25495; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm6[3],xmm2[4,5,6,7]5496; AVX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]5497; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,1,2,2,4,5,6,7]5498; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,0,2,1]5499; AVX-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]5500; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[1,1,2,3]5501; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,4,6,7]5502; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm3, %ymm35503; AVX-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3]5504; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm6[0,1,3,2,4,5,6,7]5505; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,1,1,1]5506; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,6,6]5507; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[0,2,2,3]5508; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm7, %ymm65509; AVX-NEXT: vandnps %ymm3, %ymm15, %ymm35510; AVX-NEXT: vandps %ymm6, %ymm15, %ymm65511; AVX-NEXT: vorps %ymm3, %ymm6, %ymm35512; AVX-NEXT: vmovdqa (%r8), %xmm65513; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm6[0,1,0,1]5514; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm3[0,1,2,3],xmm7[4],xmm3[5,6,7]5515; AVX-NEXT: vextractf128 $1, %ymm3, %xmm35516; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm7[1],xmm3[2,3,4,5],xmm7[6],xmm3[7]5517; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[1,1,2,2]5518; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[3,3,3,3,4,5,6,7]5519; AVX-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]5520; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2],xmm4[3,4,5,6],xmm5[7]5521; AVX-NEXT: vpslldq {{.*#+}} xmm5 = zero,zero,xmm11[0,1,2,3,4,5,6,7,8,9,10,11,12,13]5522; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm4, %ymm45523; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm9[3,3,3,3,4,5,6,7]5524; AVX-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]5525; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3],xmm10[4],xmm5[5,6,7]5526; AVX-NEXT: vpunpckhwd {{.*#+}} xmm7 = xmm10[4],xmm9[4],xmm10[5],xmm9[5],xmm10[6],xmm9[6],xmm10[7],xmm9[7]5527; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[0,2,3,3,4,5,6,7]5528; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,1,2,2]5529; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm5, %ymm55530; AVX-NEXT: vmovaps {{.*#+}} ymm7 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]5531; AVX-NEXT: vandnps %ymm4, %ymm7, %ymm45532; AVX-NEXT: vandps %ymm7, %ymm5, %ymm55533; AVX-NEXT: vorps %ymm4, %ymm5, %ymm45534; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm6[2,3,2,3]5535; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm12[0,1],xmm5[2],xmm12[3,4,5,6],xmm5[7]5536; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm4[0,1,2],xmm6[3],xmm4[4,5,6,7]5537; AVX-NEXT: vextractf128 $1, %ymm4, %xmm45538; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0],xmm4[1,2,3,4],xmm5[5],xmm4[6,7]5539; AVX-NEXT: vmovdqa %xmm4, 48(%r9)5540; AVX-NEXT: vmovdqa %xmm6, 32(%r9)5541; AVX-NEXT: vmovdqa %xmm3, 16(%r9)5542; AVX-NEXT: vmovdqa %xmm8, (%r9)5543; AVX-NEXT: vmovdqa %xmm2, 112(%r9)5544; AVX-NEXT: vmovdqa %xmm1, 96(%r9)5545; AVX-NEXT: vmovdqa %xmm0, 80(%r9)5546; AVX-NEXT: vmovdqa %xmm7, 64(%r9)5547; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5548; AVX-NEXT: vmovaps %xmm0, 144(%r9)5549; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5550; AVX-NEXT: vmovaps %xmm0, 128(%r9)5551; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5552; AVX-NEXT: vmovaps %xmm0, 496(%r9)5553; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5554; AVX-NEXT: vmovaps %xmm0, 480(%r9)5555; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5556; AVX-NEXT: vmovaps %xmm0, 560(%r9)5557; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5558; AVX-NEXT: vmovaps %xmm0, 544(%r9)5559; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5560; AVX-NEXT: vmovaps %xmm0, 528(%r9)5561; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5562; AVX-NEXT: vmovaps %xmm0, 512(%r9)5563; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5564; AVX-NEXT: vmovaps %xmm0, 624(%r9)5565; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5566; AVX-NEXT: vmovaps %xmm0, 608(%r9)5567; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5568; AVX-NEXT: vmovaps %xmm0, 592(%r9)5569; AVX-NEXT: vmovaps (%rsp), %xmm0 # 16-byte Reload5570; AVX-NEXT: vmovaps %xmm0, 576(%r9)5571; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5572; AVX-NEXT: vmovaps %xmm0, 176(%r9)5573; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5574; AVX-NEXT: vmovaps %xmm0, 160(%r9)5575; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5576; AVX-NEXT: vmovaps %xmm0, 240(%r9)5577; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5578; AVX-NEXT: vmovaps %xmm0, 224(%r9)5579; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5580; AVX-NEXT: vmovaps %xmm0, 208(%r9)5581; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5582; AVX-NEXT: vmovaps %xmm0, 192(%r9)5583; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5584; AVX-NEXT: vmovaps %xmm0, 304(%r9)5585; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5586; AVX-NEXT: vmovaps %xmm0, 288(%r9)5587; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5588; AVX-NEXT: vmovaps %xmm0, 272(%r9)5589; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5590; AVX-NEXT: vmovaps %xmm0, 256(%r9)5591; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5592; AVX-NEXT: vmovaps %xmm0, 368(%r9)5593; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5594; AVX-NEXT: vmovaps %xmm0, 352(%r9)5595; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5596; AVX-NEXT: vmovaps %xmm0, 336(%r9)5597; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5598; AVX-NEXT: vmovaps %xmm0, 320(%r9)5599; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5600; AVX-NEXT: vmovaps %xmm0, 432(%r9)5601; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5602; AVX-NEXT: vmovaps %xmm0, 416(%r9)5603; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5604; AVX-NEXT: vmovaps %xmm0, 400(%r9)5605; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5606; AVX-NEXT: vmovaps %xmm0, 384(%r9)5607; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5608; AVX-NEXT: vmovaps %xmm0, 464(%r9)5609; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5610; AVX-NEXT: vmovaps %xmm0, 448(%r9)5611; AVX-NEXT: addq $392, %rsp # imm = 0x1885612; AVX-NEXT: vzeroupper5613; AVX-NEXT: retq5614;5615; AVX2-LABEL: store_i16_stride5_vf64:5616; AVX2: # %bb.0:5617; AVX2-NEXT: subq $968, %rsp # imm = 0x3C85618; AVX2-NEXT: vmovdqa (%rdx), %xmm35619; AVX2-NEXT: vmovdqa 32(%rdx), %xmm125620; AVX2-NEXT: vmovdqa 64(%rdx), %xmm45621; AVX2-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5622; AVX2-NEXT: vmovdqa (%rcx), %xmm95623; AVX2-NEXT: vmovdqa 32(%rcx), %xmm05624; AVX2-NEXT: vmovdqa 64(%rcx), %xmm55625; AVX2-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5626; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm9[0],xmm3[0],xmm9[1],xmm3[1],xmm9[2],xmm3[2],xmm9[3],xmm3[3]5627; AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]5628; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm15629; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]5630; AVX2-NEXT: vmovdqa (%rsi), %xmm115631; AVX2-NEXT: vmovdqa 32(%rsi), %xmm105632; AVX2-NEXT: vmovdqa 64(%rsi), %xmm65633; AVX2-NEXT: vmovdqa (%rdi), %xmm75634; AVX2-NEXT: vmovdqa 32(%rdi), %xmm145635; AVX2-NEXT: vmovdqa 64(%rdi), %xmm155636; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm7[0],xmm11[0],xmm7[1],xmm11[1],xmm7[2],xmm11[2],xmm7[3],xmm11[3]5637; AVX2-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,2,1,3]5638; AVX2-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,5,6]5639; AVX2-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,0,1]5640; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm13 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]5641; AVX2-NEXT: vpblendvb %ymm13, %ymm7, %ymm1, %ymm85642; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm0[0],xmm12[0],xmm0[1],xmm12[1],xmm0[2],xmm12[2],xmm0[3],xmm12[3]5643; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm15644; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]5645; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm14[0],xmm10[0],xmm14[1],xmm10[1],xmm14[2],xmm10[2],xmm14[3],xmm10[3]5646; AVX2-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,2,1,3]5647; AVX2-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,5,6]5648; AVX2-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,0,1]5649; AVX2-NEXT: vpblendvb %ymm13, %ymm7, %ymm1, %ymm145650; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]5651; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm15652; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]5653; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm15[0],xmm6[0],xmm15[1],xmm6[1],xmm15[2],xmm6[2],xmm15[3],xmm6[3]5654; AVX2-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,2,1,3]5655; AVX2-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,5,6]5656; AVX2-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,0,1]5657; AVX2-NEXT: vpblendvb %ymm13, %ymm7, %ymm1, %ymm155658; AVX2-NEXT: vmovdqa 96(%rdx), %xmm15659; AVX2-NEXT: vmovdqa 96(%rcx), %xmm75660; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm7[0],xmm1[0],xmm7[1],xmm1[1],xmm7[2],xmm1[2],xmm7[3],xmm1[3]5661; AVX2-NEXT: vpshufb %xmm2, %xmm4, %xmm25662; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,1,0,1]5663; AVX2-NEXT: vmovdqa 96(%rsi), %xmm25664; AVX2-NEXT: vmovdqa 96(%rdi), %xmm55665; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3]5666; AVX2-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[0,2,1,3]5667; AVX2-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,5,6]5668; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]5669; AVX2-NEXT: vpblendvb %ymm13, %ymm5, %ymm4, %ymm45670; AVX2-NEXT: vpbroadcastq (%r8), %ymm55671; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm13 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]5672; AVX2-NEXT: vpblendvb %ymm13, %ymm8, %ymm5, %ymm55673; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5674; AVX2-NEXT: vpbroadcastq 32(%r8), %ymm55675; AVX2-NEXT: vpblendvb %ymm13, %ymm14, %ymm5, %ymm55676; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5677; AVX2-NEXT: vpbroadcastq 64(%r8), %ymm55678; AVX2-NEXT: vpblendvb %ymm13, %ymm15, %ymm5, %ymm55679; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5680; AVX2-NEXT: vpbroadcastq 96(%r8), %ymm55681; AVX2-NEXT: vpblendvb %ymm13, %ymm4, %ymm5, %ymm45682; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5683; AVX2-NEXT: vmovdqa {{.*#+}} xmm8 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]5684; AVX2-NEXT: vpshufb %xmm8, %xmm11, %xmm45685; AVX2-NEXT: vpbroadcastq 8(%rdi), %xmm55686; AVX2-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1],xmm4[2,3],xmm5[4],xmm4[5],xmm5[6],xmm4[7]5687; AVX2-NEXT: vmovdqa {{.*#+}} xmm14 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]5688; AVX2-NEXT: vpshufb %xmm14, %xmm9, %xmm55689; AVX2-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[1,2,2,2]5690; AVX2-NEXT: vpblendw {{.*#+}} xmm3 = xmm5[0],xmm3[1],xmm5[2],xmm3[3],xmm5[4,5],xmm3[6],xmm5[7]5691; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,0,1]5692; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,0,0]5693; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]5694; AVX2-NEXT: vpblendvb %ymm9, %ymm4, %ymm3, %ymm35695; AVX2-NEXT: vpshufb %xmm8, %xmm10, %xmm45696; AVX2-NEXT: vpbroadcastq 40(%rdi), %xmm55697; AVX2-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1],xmm4[2,3],xmm5[4],xmm4[5],xmm5[6],xmm4[7]5698; AVX2-NEXT: vpshufb %xmm14, %xmm0, %xmm05699; AVX2-NEXT: vpshufd {{.*#+}} xmm5 = xmm12[1,2,2,2]5700; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm5[1],xmm0[2],xmm5[3],xmm0[4,5],xmm5[6],xmm0[7]5701; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,0,1]5702; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,0]5703; AVX2-NEXT: vpblendvb %ymm9, %ymm4, %ymm0, %ymm05704; AVX2-NEXT: vpshufb %xmm8, %xmm6, %xmm45705; AVX2-NEXT: vpbroadcastq 72(%rdi), %xmm55706; AVX2-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1],xmm4[2,3],xmm5[4],xmm4[5],xmm5[6],xmm4[7]5707; AVX2-NEXT: vmovdqa (%rdx), %ymm105708; AVX2-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5709; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload5710; AVX2-NEXT: vpshufb %xmm14, %xmm5, %xmm55711; AVX2-NEXT: vpshufd $169, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload5712; AVX2-NEXT: # xmm6 = mem[1,2,2,2]5713; AVX2-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm6[1],xmm5[2],xmm6[3],xmm5[4,5],xmm6[6],xmm5[7]5714; AVX2-NEXT: vmovdqa (%rcx), %ymm125715; AVX2-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5716; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,0,1]5717; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,0]5718; AVX2-NEXT: vpblendvb %ymm9, %ymm4, %ymm5, %ymm45719; AVX2-NEXT: vmovdqa (%r8), %ymm65720; AVX2-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5721; AVX2-NEXT: vpshufb %xmm8, %xmm2, %xmm25722; AVX2-NEXT: vpbroadcastq 104(%rdi), %xmm55723; AVX2-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm5[1],xmm2[2,3],xmm5[4],xmm2[5],xmm5[6],xmm2[7]5724; AVX2-NEXT: vmovdqa 32(%r8), %ymm85725; AVX2-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5726; AVX2-NEXT: vpshufb %xmm14, %xmm7, %xmm55727; AVX2-NEXT: vmovdqa 64(%r8), %ymm75728; AVX2-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5729; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[1,2,2,2]5730; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2],xmm1[3],xmm5[4,5],xmm1[6],xmm5[7]5731; AVX2-NEXT: vmovdqa 96(%r8), %ymm115732; AVX2-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5733; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,1]5734; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,0,0]5735; AVX2-NEXT: vpblendvb %ymm9, %ymm2, %ymm1, %ymm15736; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm6[0,1,1,1]5737; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]5738; AVX2-NEXT: vpblendvb %ymm5, %ymm3, %ymm2, %ymm25739; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5740; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm8[0,1,1,1]5741; AVX2-NEXT: vpblendvb %ymm5, %ymm0, %ymm2, %ymm05742; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5743; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm7[0,1,1,1]5744; AVX2-NEXT: vpblendvb %ymm5, %ymm4, %ymm0, %ymm05745; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5746; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm11[0,1,1,1]5747; AVX2-NEXT: vpblendvb %ymm5, %ymm1, %ymm0, %ymm05748; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5749; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm9 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]5750; AVX2-NEXT: # ymm9 = mem[0,1,0,1]5751; AVX2-NEXT: vpshufb %ymm9, %ymm12, %ymm15752; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm10[1,1,1,2,5,5,5,6]5753; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]5754; AVX2-NEXT: vmovdqa (%rsi), %ymm75755; AVX2-NEXT: vpshuflw {{.*#+}} ymm2 = ymm7[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]5756; AVX2-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5757; AVX2-NEXT: vpshufhw {{.*#+}} ymm2 = ymm2[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]5758; AVX2-NEXT: vmovdqa (%rdi), %ymm05759; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5760; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm0[0,1,2,1,4,5,6,5]5761; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm3[2],ymm2[3],ymm3[4],ymm2[5,6],ymm3[7],ymm2[8,9],ymm3[10],ymm2[11],ymm3[12],ymm2[13,14],ymm3[15]5762; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]5763; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]5764; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]5765; AVX2-NEXT: vpblendvb %ymm15, %ymm1, %ymm2, %ymm105766; AVX2-NEXT: vmovdqa 32(%rdx), %ymm05767; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5768; AVX2-NEXT: vmovdqa 32(%rcx), %ymm15769; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5770; AVX2-NEXT: vpshufb %ymm9, %ymm1, %ymm15771; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm0[1,1,1,2,5,5,5,6]5772; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]5773; AVX2-NEXT: vmovdqa 32(%rsi), %ymm135774; AVX2-NEXT: vpshuflw {{.*#+}} ymm2 = ymm13[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]5775; AVX2-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5776; AVX2-NEXT: vpshufhw {{.*#+}} ymm2 = ymm2[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]5777; AVX2-NEXT: vmovdqa 32(%rdi), %ymm125778; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm12[0,1,2,1,4,5,6,5]5779; AVX2-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5780; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm3[2],ymm2[3],ymm3[4],ymm2[5,6],ymm3[7],ymm2[8,9],ymm3[10],ymm2[11],ymm3[12],ymm2[13,14],ymm3[15]5781; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]5782; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]5783; AVX2-NEXT: vpblendvb %ymm15, %ymm1, %ymm2, %ymm55784; AVX2-NEXT: vmovdqa 64(%rdx), %ymm05785; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5786; AVX2-NEXT: vmovdqa 64(%rcx), %ymm15787; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5788; AVX2-NEXT: vpshufb %ymm9, %ymm1, %ymm25789; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm0[1,1,1,2,5,5,5,6]5790; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]5791; AVX2-NEXT: vmovdqa 64(%rsi), %ymm115792; AVX2-NEXT: vpshuflw {{.*#+}} ymm3 = ymm11[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]5793; AVX2-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5794; AVX2-NEXT: vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]5795; AVX2-NEXT: vmovdqa 64(%rdi), %ymm85796; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm8[0,1,2,1,4,5,6,5]5797; AVX2-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5798; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3],ymm4[4],ymm3[5,6],ymm4[7],ymm3[8,9],ymm4[10],ymm3[11],ymm4[12],ymm3[13,14],ymm4[15]5799; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]5800; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]5801; AVX2-NEXT: vpblendvb %ymm15, %ymm2, %ymm3, %ymm15802; AVX2-NEXT: vmovdqa 96(%rcx), %ymm05803; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5804; AVX2-NEXT: vpshufb %ymm9, %ymm0, %ymm25805; AVX2-NEXT: vmovdqa 96(%rdx), %ymm05806; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5807; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm0[1,1,1,2,5,5,5,6]5808; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]5809; AVX2-NEXT: vmovdqa 96(%rsi), %ymm65810; AVX2-NEXT: vpshuflw {{.*#+}} ymm2 = ymm6[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]5811; AVX2-NEXT: vmovdqu %ymm6, (%rsp) # 32-byte Spill5812; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm2[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]5813; AVX2-NEXT: vmovdqa 96(%rdi), %ymm35814; AVX2-NEXT: vpshufd {{.*#+}} ymm14 = ymm3[0,1,2,1,4,5,6,5]5815; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm14[2],ymm0[3],ymm14[4],ymm0[5,6],ymm14[7],ymm0[8,9],ymm14[10],ymm0[11],ymm14[12],ymm0[13,14],ymm14[15]5816; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,3,2,3]5817; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]5818; AVX2-NEXT: vpblendvb %ymm15, %ymm9, %ymm0, %ymm05819; AVX2-NEXT: vpbroadcastq 16(%r8), %ymm95820; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]5821; AVX2-NEXT: vpblendvb %ymm14, %ymm10, %ymm9, %ymm95822; AVX2-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5823; AVX2-NEXT: vpbroadcastq 48(%r8), %ymm95824; AVX2-NEXT: vpblendvb %ymm14, %ymm5, %ymm9, %ymm25825; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5826; AVX2-NEXT: vpbroadcastq 80(%r8), %ymm55827; AVX2-NEXT: vpblendvb %ymm14, %ymm1, %ymm5, %ymm15828; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5829; AVX2-NEXT: vpbroadcastq 112(%r8), %ymm15830; AVX2-NEXT: vpblendvb %ymm14, %ymm0, %ymm1, %ymm05831; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5832; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm7[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]5833; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,2,6,7,6,6]5834; AVX2-NEXT: vpshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Folded Reload5835; AVX2-NEXT: # ymm1 = mem[2,3,2,3,6,7,6,7]5836; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4,5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10],ymm1[11],ymm0[12,13],ymm1[14],ymm0[15]5837; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload5838; AVX2-NEXT: vpshufhw {{.*#+}} ymm1 = ymm10[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]5839; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,3,2,3,6,7,6,7]5840; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload5841; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm7[3,2,3,3,7,6,7,7]5842; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm5[1],ymm1[2],ymm5[3,4],ymm1[5,6,7,8],ymm5[9],ymm1[10],ymm5[11,12],ymm1[13,14,15]5843; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]5844; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,2]5845; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm15 = [0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0]5846; AVX2-NEXT: vpblendvb %ymm15, %ymm0, %ymm1, %ymm05847; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5848; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm13[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]5849; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,2,6,7,6,6]5850; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm12[2,3,2,3,6,7,6,7]5851; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4,5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10],ymm1[11],ymm0[12,13],ymm1[14],ymm0[15]5852; AVX2-NEXT: vpshufhw $249, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Folded Reload5853; AVX2-NEXT: # ymm1 = mem[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]5854; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,3,2,3,6,7,6,7]5855; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload5856; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm12[3,2,3,3,7,6,7,7]5857; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm5[1],ymm1[2],ymm5[3,4],ymm1[5,6,7,8],ymm5[9],ymm1[10],ymm5[11,12],ymm1[13,14,15]5858; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]5859; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,2]5860; AVX2-NEXT: vpblendvb %ymm15, %ymm0, %ymm1, %ymm05861; AVX2-NEXT: vpshufhw {{.*#+}} ymm1 = ymm11[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]5862; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,3,2,2,6,7,6,6]5863; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm8[2,3,2,3,6,7,6,7]5864; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm5[1],ymm1[2],ymm5[3],ymm1[4,5],ymm5[6],ymm1[7,8],ymm5[9],ymm1[10],ymm5[11],ymm1[12,13],ymm5[14],ymm1[15]5865; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload5866; AVX2-NEXT: vpshufhw {{.*#+}} ymm5 = ymm8[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]5867; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[2,3,2,3,6,7,6,7]5868; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload5869; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm4[3,2,3,3,7,6,7,7]5870; AVX2-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0],ymm9[1],ymm5[2],ymm9[3,4],ymm5[5,6,7,8],ymm9[9],ymm5[10],ymm9[11,12],ymm5[13,14,15]5871; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,2]5872; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,3,2]5873; AVX2-NEXT: vpblendvb %ymm15, %ymm1, %ymm5, %ymm15874; AVX2-NEXT: vpshufhw {{.*#+}} ymm5 = ymm6[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]5875; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[2,3,2,2,6,7,6,6]5876; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm3[2,3,2,3,6,7,6,7]5877; AVX2-NEXT: vmovdqa %ymm3, %ymm65878; AVX2-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0],ymm9[1],ymm5[2],ymm9[3],ymm5[4,5],ymm9[6],ymm5[7,8],ymm9[9],ymm5[10],ymm9[11],ymm5[12,13],ymm9[14],ymm5[15]5879; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload5880; AVX2-NEXT: vpshufhw {{.*#+}} ymm9 = ymm3[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]5881; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,3,2,3,6,7,6,7]5882; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload5883; AVX2-NEXT: vpshufd {{.*#+}} ymm14 = ymm2[3,2,3,3,7,6,7,7]5884; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm9[0],ymm14[1],ymm9[2],ymm14[3,4],ymm9[5,6,7,8],ymm14[9],ymm9[10],ymm14[11,12],ymm9[13,14,15]5885; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,3,2,2]5886; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,2]5887; AVX2-NEXT: vpblendvb %ymm15, %ymm5, %ymm9, %ymm55888; AVX2-NEXT: vpbroadcastq 24(%r8), %ymm95889; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm14 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]5890; AVX2-NEXT: vpblendvb %ymm14, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9, %ymm13 # 32-byte Folded Reload5891; AVX2-NEXT: vpbroadcastq 56(%r8), %ymm95892; AVX2-NEXT: vpblendvb %ymm14, %ymm0, %ymm9, %ymm05893; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5894; AVX2-NEXT: vpbroadcastq 88(%r8), %ymm05895; AVX2-NEXT: vpblendvb %ymm14, %ymm1, %ymm0, %ymm05896; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5897; AVX2-NEXT: vpbroadcastq 120(%r8), %ymm05898; AVX2-NEXT: vpblendvb %ymm14, %ymm5, %ymm0, %ymm05899; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5900; AVX2-NEXT: vmovdqa {{.*#+}} ymm0 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]5901; AVX2-NEXT: vpshufb %ymm0, %ymm10, %ymm15902; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm7[3,0,3,0,7,4,7,4]5903; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm5[0],ymm1[1],ymm5[2],ymm1[3],ymm5[4,5],ymm1[6],ymm5[7,8],ymm1[9],ymm5[10],ymm1[11],ymm5[12,13],ymm1[14],ymm5[15]5904; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]5905; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload5906; AVX2-NEXT: vpshufb %ymm5, %ymm7, %ymm95907; AVX2-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload5908; AVX2-NEXT: # ymm14 = mem[1,1,2,2]5909; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm14[0],ymm9[1],ymm14[2,3],ymm9[4],ymm14[5],ymm9[6],ymm14[7,8],ymm9[9],ymm14[10,11],ymm9[12],ymm14[13],ymm9[14],ymm14[15]5910; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]5911; AVX2-NEXT: vpblendvb %ymm14, %ymm1, %ymm9, %ymm15912; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload5913; AVX2-NEXT: vpshufb %ymm0, %ymm7, %ymm95914; AVX2-NEXT: vpshufd {{.*#+}} ymm15 = ymm12[3,0,3,0,7,4,7,4]5915; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm15[0],ymm9[1],ymm15[2],ymm9[3],ymm15[4,5],ymm9[6],ymm15[7,8],ymm9[9],ymm15[10],ymm9[11],ymm15[12,13],ymm9[14],ymm15[15]5916; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload5917; AVX2-NEXT: vpshufb %ymm5, %ymm7, %ymm125918; AVX2-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Folded Reload5919; AVX2-NEXT: # ymm11 = mem[1,1,2,2]5920; AVX2-NEXT: vpblendw {{.*#+}} ymm11 = ymm11[0],ymm12[1],ymm11[2,3],ymm12[4],ymm11[5],ymm12[6],ymm11[7,8],ymm12[9],ymm11[10,11],ymm12[12],ymm11[13],ymm12[14],ymm11[15]5921; AVX2-NEXT: vpblendvb %ymm14, %ymm9, %ymm11, %ymm95922; AVX2-NEXT: vpshufb %ymm0, %ymm8, %ymm105923; AVX2-NEXT: vpshufd {{.*#+}} ymm11 = ymm4[3,0,3,0,7,4,7,4]5924; AVX2-NEXT: vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1],ymm11[2],ymm10[3],ymm11[4,5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10],ymm10[11],ymm11[12,13],ymm10[14],ymm11[15]5925; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload5926; AVX2-NEXT: vpshufb %ymm5, %ymm4, %ymm85927; AVX2-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Folded Reload5928; AVX2-NEXT: # ymm7 = mem[1,1,2,2]5929; AVX2-NEXT: vpblendw {{.*#+}} ymm7 = ymm7[0],ymm8[1],ymm7[2,3],ymm8[4],ymm7[5],ymm8[6],ymm7[7,8],ymm8[9],ymm7[10,11],ymm8[12],ymm7[13],ymm8[14],ymm7[15]5930; AVX2-NEXT: vpblendvb %ymm14, %ymm10, %ymm7, %ymm75931; AVX2-NEXT: vpshufb %ymm0, %ymm3, %ymm05932; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm2[3,0,3,0,7,4,7,4]5933; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm4[0],ymm0[1],ymm4[2],ymm0[3],ymm4[4,5],ymm0[6],ymm4[7,8],ymm0[9],ymm4[10],ymm0[11],ymm4[12,13],ymm0[14],ymm4[15]5934; AVX2-NEXT: vmovdqu (%rsp), %ymm2 # 32-byte Reload5935; AVX2-NEXT: vpshufb %ymm5, %ymm2, %ymm35936; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm6[1,1,2,2]5937; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]5938; AVX2-NEXT: vpblendvb %ymm14, %ymm0, %ymm2, %ymm05939; AVX2-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Folded Reload5940; AVX2-NEXT: # ymm2 = mem[1,1,2,2]5941; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]5942; AVX2-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm15943; AVX2-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Folded Reload5944; AVX2-NEXT: # ymm2 = mem[1,1,2,2]5945; AVX2-NEXT: vpblendvb %ymm3, %ymm9, %ymm2, %ymm25946; AVX2-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload5947; AVX2-NEXT: # ymm4 = mem[1,1,2,2]5948; AVX2-NEXT: vpblendvb %ymm3, %ymm7, %ymm4, %ymm45949; AVX2-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Folded Reload5950; AVX2-NEXT: # ymm5 = mem[1,1,2,2]5951; AVX2-NEXT: vpblendvb %ymm3, %ymm0, %ymm5, %ymm05952; AVX2-NEXT: vmovdqa %ymm0, 544(%r9)5953; AVX2-NEXT: vmovdqa %ymm4, 384(%r9)5954; AVX2-NEXT: vmovdqa %ymm2, 224(%r9)5955; AVX2-NEXT: vmovdqa %ymm1, 64(%r9)5956; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5957; AVX2-NEXT: vmovaps %ymm0, 608(%r9)5958; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5959; AVX2-NEXT: vmovaps %ymm0, 576(%r9)5960; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5961; AVX2-NEXT: vmovaps %ymm0, 512(%r9)5962; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5963; AVX2-NEXT: vmovaps %ymm0, 448(%r9)5964; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5965; AVX2-NEXT: vmovaps %ymm0, 416(%r9)5966; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5967; AVX2-NEXT: vmovaps %ymm0, 352(%r9)5968; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5969; AVX2-NEXT: vmovaps %ymm0, 288(%r9)5970; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5971; AVX2-NEXT: vmovaps %ymm0, 256(%r9)5972; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5973; AVX2-NEXT: vmovaps %ymm0, 192(%r9)5974; AVX2-NEXT: vmovdqa %ymm13, 128(%r9)5975; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5976; AVX2-NEXT: vmovaps %ymm0, 96(%r9)5977; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5978; AVX2-NEXT: vmovaps %ymm0, 32(%r9)5979; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5980; AVX2-NEXT: vmovaps %ymm0, 480(%r9)5981; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5982; AVX2-NEXT: vmovaps %ymm0, 320(%r9)5983; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5984; AVX2-NEXT: vmovaps %ymm0, 160(%r9)5985; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5986; AVX2-NEXT: vmovaps %ymm0, (%r9)5987; AVX2-NEXT: addq $968, %rsp # imm = 0x3C85988; AVX2-NEXT: vzeroupper5989; AVX2-NEXT: retq5990;5991; AVX2-FP-LABEL: store_i16_stride5_vf64:5992; AVX2-FP: # %bb.0:5993; AVX2-FP-NEXT: subq $936, %rsp # imm = 0x3A85994; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm55995; AVX2-FP-NEXT: vmovdqa 32(%rsi), %xmm25996; AVX2-FP-NEXT: vmovdqa 64(%rsi), %xmm35997; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm05998; AVX2-FP-NEXT: vmovdqa 32(%rdi), %xmm145999; AVX2-FP-NEXT: vmovdqa 64(%rdi), %xmm136000; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3]6001; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm9 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]6002; AVX2-FP-NEXT: vpshufb %xmm9, %xmm0, %xmm06003; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]6004; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm76005; AVX2-FP-NEXT: vmovdqa 32(%rdx), %xmm106006; AVX2-FP-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6007; AVX2-FP-NEXT: vmovdqa 64(%rdx), %xmm66008; AVX2-FP-NEXT: vmovdqa (%rcx), %xmm86009; AVX2-FP-NEXT: vmovdqa 32(%rcx), %xmm46010; AVX2-FP-NEXT: vmovdqa 64(%rcx), %xmm16011; AVX2-FP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6012; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm12 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]6013; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm11 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]6014; AVX2-FP-NEXT: vpshufb %xmm11, %xmm12, %xmm126015; AVX2-FP-NEXT: vpermq {{.*#+}} ymm15 = ymm12[0,1,0,1]6016; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]6017; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm0, %ymm15, %ymm06018; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6019; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm14[0],xmm2[0],xmm14[1],xmm2[1],xmm14[2],xmm2[2],xmm14[3],xmm2[3]6020; AVX2-FP-NEXT: vpshufb %xmm9, %xmm0, %xmm06021; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]6022; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm14 = xmm4[0],xmm10[0],xmm4[1],xmm10[1],xmm4[2],xmm10[2],xmm4[3],xmm10[3]6023; AVX2-FP-NEXT: vpshufb %xmm11, %xmm14, %xmm146024; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,1,0,1]6025; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm0, %ymm14, %ymm146026; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm13[0],xmm3[0],xmm13[1],xmm3[1],xmm13[2],xmm3[2],xmm13[3],xmm3[3]6027; AVX2-FP-NEXT: vpshufb %xmm9, %xmm0, %xmm06028; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]6029; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm13 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3]6030; AVX2-FP-NEXT: vpshufb %xmm11, %xmm13, %xmm136031; AVX2-FP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[0,1,0,1]6032; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm0, %ymm13, %ymm16033; AVX2-FP-NEXT: vmovdqa 96(%rsi), %xmm136034; AVX2-FP-NEXT: vmovdqa 96(%rdi), %xmm156035; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm15 = xmm15[0],xmm13[0],xmm15[1],xmm13[1],xmm15[2],xmm13[2],xmm15[3],xmm13[3]6036; AVX2-FP-NEXT: vpshufb %xmm9, %xmm15, %xmm06037; AVX2-FP-NEXT: vmovdqa 96(%rdx), %xmm96038; AVX2-FP-NEXT: vmovdqa 96(%rcx), %xmm156039; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm10 = xmm15[0],xmm9[0],xmm15[1],xmm9[1],xmm15[2],xmm9[2],xmm15[3],xmm9[3]6040; AVX2-FP-NEXT: vpshufb %xmm11, %xmm10, %xmm106041; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]6042; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,1,0,1]6043; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm0, %ymm10, %ymm06044; AVX2-FP-NEXT: vpbroadcastq (%r8), %ymm106045; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]6046; AVX2-FP-NEXT: vpblendvb %ymm11, {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm10 # 32-byte Folded Reload6047; AVX2-FP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6048; AVX2-FP-NEXT: vpbroadcastq 32(%r8), %ymm106049; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm14, %ymm10, %ymm106050; AVX2-FP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6051; AVX2-FP-NEXT: vpbroadcastq 64(%r8), %ymm106052; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm1, %ymm10, %ymm16053; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6054; AVX2-FP-NEXT: vpbroadcastq 96(%r8), %ymm16055; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm0, %ymm1, %ymm06056; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6057; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm11 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]6058; AVX2-FP-NEXT: vpshufb %xmm11, %xmm5, %xmm06059; AVX2-FP-NEXT: vpbroadcastq 8(%rdi), %xmm16060; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5],xmm1[6],xmm0[7]6061; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm0 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]6062; AVX2-FP-NEXT: vpshufb %xmm0, %xmm8, %xmm56063; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[1,2,2,2]6064; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm7[1],xmm5[2],xmm7[3],xmm5[4,5],xmm7[6],xmm5[7]6065; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]6066; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,0]6067; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]6068; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm1, %ymm5, %ymm56069; AVX2-FP-NEXT: vpshufb %xmm11, %xmm2, %xmm16070; AVX2-FP-NEXT: vpbroadcastq 40(%rdi), %xmm26071; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2,3],xmm2[4],xmm1[5],xmm2[6],xmm1[7]6072; AVX2-FP-NEXT: vpshufb %xmm0, %xmm4, %xmm26073; AVX2-FP-NEXT: vpshufd $169, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload6074; AVX2-FP-NEXT: # xmm4 = mem[1,2,2,2]6075; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2],xmm4[3],xmm2[4,5],xmm4[6],xmm2[7]6076; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]6077; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,0]6078; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm1, %ymm2, %ymm16079; AVX2-FP-NEXT: vpshufb %xmm11, %xmm3, %xmm26080; AVX2-FP-NEXT: vpbroadcastq 72(%rdi), %xmm46081; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2,3],xmm4[4],xmm2[5],xmm4[6],xmm2[7]6082; AVX2-FP-NEXT: vmovdqa (%rdx), %ymm126083; AVX2-FP-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6084; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload6085; AVX2-FP-NEXT: vpshufb %xmm0, %xmm3, %xmm36086; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm4 = xmm6[1,2,2,2]6087; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1],xmm3[2],xmm4[3],xmm3[4,5],xmm4[6],xmm3[7]6088; AVX2-FP-NEXT: vmovdqa (%rcx), %ymm146089; AVX2-FP-NEXT: vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6090; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,1]6091; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,0,0]6092; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm2, %ymm3, %ymm26093; AVX2-FP-NEXT: vmovdqa (%r8), %ymm66094; AVX2-FP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6095; AVX2-FP-NEXT: vpshufb %xmm11, %xmm13, %xmm36096; AVX2-FP-NEXT: vpbroadcastq 104(%rdi), %xmm46097; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1],xmm3[2,3],xmm4[4],xmm3[5],xmm4[6],xmm3[7]6098; AVX2-FP-NEXT: vmovdqa 32(%r8), %ymm86099; AVX2-FP-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6100; AVX2-FP-NEXT: vpshufb %xmm0, %xmm15, %xmm06101; AVX2-FP-NEXT: vmovdqa 64(%r8), %ymm106102; AVX2-FP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6103; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm4 = xmm9[1,2,2,2]6104; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm4[1],xmm0[2],xmm4[3],xmm0[4,5],xmm4[6],xmm0[7]6105; AVX2-FP-NEXT: vmovdqa 96(%r8), %ymm96106; AVX2-FP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6107; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,0,1]6108; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,0]6109; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm3, %ymm0, %ymm06110; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm6[0,1,1,1]6111; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]6112; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm5, %ymm3, %ymm36113; AVX2-FP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6114; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm8[0,1,1,1]6115; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm1, %ymm3, %ymm16116; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6117; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm10[0,1,1,1]6118; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm2, %ymm1, %ymm16119; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6120; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm9[0,1,1,1]6121; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm0, %ymm1, %ymm06122; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6123; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]6124; AVX2-FP-NEXT: # ymm1 = mem[0,1,0,1]6125; AVX2-FP-NEXT: vpshufb %ymm1, %ymm14, %ymm06126; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm2 = ymm12[1,1,1,2,5,5,5,6]6127; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]6128; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm56129; AVX2-FP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6130; AVX2-FP-NEXT: vmovdqa (%rsi), %ymm116131; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0,22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0]6132; AVX2-FP-NEXT: # ymm0 = mem[0,1,0,1]6133; AVX2-FP-NEXT: vpshufb %ymm0, %ymm11, %ymm36134; AVX2-FP-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6135; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm4 = ymm5[0,1,2,1,4,5,6,5]6136; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3],ymm4[4],ymm3[5,6],ymm4[7],ymm3[8,9],ymm4[10],ymm3[11],ymm4[12],ymm3[13,14],ymm4[15]6137; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]6138; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]6139; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]6140; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm2, %ymm3, %ymm86141; AVX2-FP-NEXT: vmovdqa 32(%rdx), %ymm46142; AVX2-FP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6143; AVX2-FP-NEXT: vmovdqa 32(%rcx), %ymm26144; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6145; AVX2-FP-NEXT: vpshufb %ymm1, %ymm2, %ymm26146; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm3 = ymm4[1,1,1,2,5,5,5,6]6147; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]6148; AVX2-FP-NEXT: vmovdqa 32(%rdi), %ymm56149; AVX2-FP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6150; AVX2-FP-NEXT: vmovdqa 32(%rsi), %ymm66151; AVX2-FP-NEXT: vpshufb %ymm0, %ymm6, %ymm36152; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm4 = ymm5[0,1,2,1,4,5,6,5]6153; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3],ymm4[4],ymm3[5,6],ymm4[7],ymm3[8,9],ymm4[10],ymm3[11],ymm4[12],ymm3[13,14],ymm4[15]6154; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]6155; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]6156; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm2, %ymm3, %ymm106157; AVX2-FP-NEXT: vmovdqa 64(%rdx), %ymm46158; AVX2-FP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6159; AVX2-FP-NEXT: vmovdqa 64(%rcx), %ymm26160; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6161; AVX2-FP-NEXT: vpshufb %ymm1, %ymm2, %ymm26162; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm3 = ymm4[1,1,1,2,5,5,5,6]6163; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]6164; AVX2-FP-NEXT: vmovdqa 64(%rdi), %ymm46165; AVX2-FP-NEXT: vmovdqu %ymm4, (%rsp) # 32-byte Spill6166; AVX2-FP-NEXT: vmovdqa 64(%rsi), %ymm56167; AVX2-FP-NEXT: vpshufb %ymm0, %ymm5, %ymm36168; AVX2-FP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6169; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm12 = ymm4[0,1,2,1,4,5,6,5]6170; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm12[2],ymm3[3],ymm12[4],ymm3[5,6],ymm12[7],ymm3[8,9],ymm12[10],ymm3[11],ymm12[12],ymm3[13,14],ymm12[15]6171; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]6172; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]6173; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm2, %ymm3, %ymm126174; AVX2-FP-NEXT: vmovdqa 96(%rcx), %ymm26175; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6176; AVX2-FP-NEXT: vpshufb %ymm1, %ymm2, %ymm16177; AVX2-FP-NEXT: vmovdqa 96(%rdx), %ymm76178; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm13 = ymm7[1,1,1,2,5,5,5,6]6179; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm13 = ymm1[0],ymm13[1],ymm1[2,3],ymm13[4],ymm1[5],ymm13[6],ymm1[7,8],ymm13[9],ymm1[10,11],ymm13[12],ymm1[13],ymm13[14],ymm1[15]6180; AVX2-FP-NEXT: vmovdqa 96(%rsi), %ymm36181; AVX2-FP-NEXT: vpshufb %ymm0, %ymm3, %ymm06182; AVX2-FP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6183; AVX2-FP-NEXT: vmovdqa 96(%rdi), %ymm26184; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm15 = ymm2[0,1,2,1,4,5,6,5]6185; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6186; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm15[2],ymm0[3],ymm15[4],ymm0[5,6],ymm15[7],ymm0[8,9],ymm15[10],ymm0[11],ymm15[12],ymm0[13,14],ymm15[15]6187; AVX2-FP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,3,2,3]6188; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]6189; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm13, %ymm0, %ymm06190; AVX2-FP-NEXT: vpbroadcastq 16(%r8), %ymm136191; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]6192; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm8, %ymm13, %ymm16193; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6194; AVX2-FP-NEXT: vpbroadcastq 48(%r8), %ymm136195; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm10, %ymm13, %ymm16196; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6197; AVX2-FP-NEXT: vpbroadcastq 80(%r8), %ymm106198; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm12, %ymm10, %ymm16199; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6200; AVX2-FP-NEXT: vpbroadcastq 112(%r8), %ymm106201; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm0, %ymm10, %ymm06202; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6203; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]6204; AVX2-FP-NEXT: # ymm0 = mem[0,1,0,1]6205; AVX2-FP-NEXT: vpshufb %ymm0, %ymm11, %ymm106206; AVX2-FP-NEXT: vpshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Folded Reload6207; AVX2-FP-NEXT: # ymm12 = mem[2,3,2,3,6,7,6,7]6208; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm10 = ymm10[0],ymm12[1],ymm10[2],ymm12[3],ymm10[4,5],ymm12[6],ymm10[7,8],ymm12[9],ymm10[10],ymm12[11],ymm10[12,13],ymm12[14],ymm10[15]6209; AVX2-FP-NEXT: vpbroadcastq {{.*#+}} ymm12 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]6210; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload6211; AVX2-FP-NEXT: vpshufb %ymm12, %ymm1, %ymm136212; AVX2-FP-NEXT: vpshufd $251, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload6213; AVX2-FP-NEXT: # ymm14 = mem[3,2,3,3,7,6,7,7]6214; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0],ymm14[1],ymm13[2],ymm14[3,4],ymm13[5,6,7,8],ymm14[9],ymm13[10],ymm14[11,12],ymm13[13,14,15]6215; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,3,2,2]6216; AVX2-FP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,2,3,2]6217; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0]6218; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm10, %ymm13, %ymm106219; AVX2-FP-NEXT: vpshufb %ymm0, %ymm6, %ymm136220; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload6221; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm15 = ymm8[2,3,2,3,6,7,6,7]6222; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0],ymm15[1],ymm13[2],ymm15[3],ymm13[4,5],ymm15[6],ymm13[7,8],ymm15[9],ymm13[10],ymm15[11],ymm13[12,13],ymm15[14],ymm13[15]6223; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload6224; AVX2-FP-NEXT: vpshufb %ymm12, %ymm4, %ymm156225; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload6226; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm11 = ymm1[3,2,3,3,7,6,7,7]6227; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm11 = ymm15[0],ymm11[1],ymm15[2],ymm11[3,4],ymm15[5,6,7,8],ymm11[9],ymm15[10],ymm11[11,12],ymm15[13,14,15]6228; AVX2-FP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,3,2,2]6229; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,3,2]6230; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm13, %ymm11, %ymm116231; AVX2-FP-NEXT: vpshufb %ymm0, %ymm5, %ymm136232; AVX2-FP-NEXT: vpshufd $238, (%rsp), %ymm15 # 32-byte Folded Reload6233; AVX2-FP-NEXT: # ymm15 = mem[2,3,2,3,6,7,6,7]6234; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0],ymm15[1],ymm13[2],ymm15[3],ymm13[4,5],ymm15[6],ymm13[7,8],ymm15[9],ymm13[10],ymm15[11],ymm13[12,13],ymm15[14],ymm13[15]6235; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6236; AVX2-FP-NEXT: vpshufb %ymm12, %ymm5, %ymm156237; AVX2-FP-NEXT: vpshufd $251, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Folded Reload6238; AVX2-FP-NEXT: # ymm9 = mem[3,2,3,3,7,6,7,7]6239; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm15[0],ymm9[1],ymm15[2],ymm9[3,4],ymm15[5,6,7,8],ymm9[9],ymm15[10],ymm9[11,12],ymm15[13,14,15]6240; AVX2-FP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,3,2,2]6241; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,2]6242; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm13, %ymm9, %ymm96243; AVX2-FP-NEXT: vpshufb %ymm0, %ymm3, %ymm06244; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm13 = ymm2[2,3,2,3,6,7,6,7]6245; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm13[1],ymm0[2],ymm13[3],ymm0[4,5],ymm13[6],ymm0[7,8],ymm13[9],ymm0[10],ymm13[11],ymm0[12,13],ymm13[14],ymm0[15]6246; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload6247; AVX2-FP-NEXT: vpshufb %ymm12, %ymm2, %ymm126248; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm13 = ymm7[3,2,3,3,7,6,7,7]6249; AVX2-FP-NEXT: vmovdqa %ymm7, %ymm36250; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm12 = ymm12[0],ymm13[1],ymm12[2],ymm13[3,4],ymm12[5,6,7,8],ymm13[9],ymm12[10],ymm13[11,12],ymm12[13,14,15]6251; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]6252; AVX2-FP-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,2,3,2]6253; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm0, %ymm12, %ymm06254; AVX2-FP-NEXT: vpbroadcastq 24(%r8), %ymm126255; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]6256; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm10, %ymm12, %ymm26257; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6258; AVX2-FP-NEXT: vpbroadcastq 56(%r8), %ymm106259; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm11, %ymm10, %ymm26260; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6261; AVX2-FP-NEXT: vpbroadcastq 88(%r8), %ymm106262; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm9, %ymm10, %ymm26263; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6264; AVX2-FP-NEXT: vpbroadcastq 120(%r8), %ymm96265; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm0, %ymm9, %ymm06266; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm9 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]6267; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload6268; AVX2-FP-NEXT: vpshufb %ymm9, %ymm7, %ymm116269; AVX2-FP-NEXT: vpshufd $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload6270; AVX2-FP-NEXT: # ymm14 = mem[3,0,3,0,7,4,7,4]6271; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm11 = ymm14[0],ymm11[1],ymm14[2],ymm11[3],ymm14[4,5],ymm11[6],ymm14[7,8],ymm11[9],ymm14[10],ymm11[11],ymm14[12,13],ymm11[14],ymm14[15]6272; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm14 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]6273; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload6274; AVX2-FP-NEXT: vpshufb %ymm14, %ymm2, %ymm156275; AVX2-FP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Folded Reload6276; AVX2-FP-NEXT: # ymm13 = mem[1,1,2,2]6277; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0],ymm15[1],ymm13[2,3],ymm15[4],ymm13[5],ymm15[6],ymm13[7,8],ymm15[9],ymm13[10,11],ymm15[12],ymm13[13],ymm15[14],ymm13[15]6278; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]6279; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm11, %ymm13, %ymm116280; AVX2-FP-NEXT: vpshufb %ymm9, %ymm4, %ymm136281; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm12 = ymm1[3,0,3,0,7,4,7,4]6282; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm12 = ymm12[0],ymm13[1],ymm12[2],ymm13[3],ymm12[4,5],ymm13[6],ymm12[7,8],ymm13[9],ymm12[10],ymm13[11],ymm12[12,13],ymm13[14],ymm12[15]6283; AVX2-FP-NEXT: vpshufb %ymm14, %ymm6, %ymm136284; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm8[1,1,2,2]6285; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm10 = ymm10[0],ymm13[1],ymm10[2,3],ymm13[4],ymm10[5],ymm13[6],ymm10[7,8],ymm13[9],ymm10[10,11],ymm13[12],ymm10[13],ymm13[14],ymm10[15]6286; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm12, %ymm10, %ymm106287; AVX2-FP-NEXT: vpshufb %ymm9, %ymm5, %ymm76288; AVX2-FP-NEXT: vpshufd $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload6289; AVX2-FP-NEXT: # ymm8 = mem[3,0,3,0,7,4,7,4]6290; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm7 = ymm8[0],ymm7[1],ymm8[2],ymm7[3],ymm8[4,5],ymm7[6],ymm8[7,8],ymm7[9],ymm8[10],ymm7[11],ymm8[12,13],ymm7[14],ymm8[15]6291; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload6292; AVX2-FP-NEXT: vpshufb %ymm14, %ymm1, %ymm56293; AVX2-FP-NEXT: vpermq $165, (%rsp), %ymm6 # 32-byte Folded Reload6294; AVX2-FP-NEXT: # ymm6 = mem[1,1,2,2]6295; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm5 = ymm6[0],ymm5[1],ymm6[2,3],ymm5[4],ymm6[5],ymm5[6],ymm6[7,8],ymm5[9],ymm6[10,11],ymm5[12],ymm6[13],ymm5[14],ymm6[15]6296; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm7, %ymm5, %ymm56297; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload6298; AVX2-FP-NEXT: vpshufb %ymm9, %ymm1, %ymm46299; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[3,0,3,0,7,4,7,4]6300; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2],ymm4[3],ymm3[4,5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10],ymm4[11],ymm3[12,13],ymm4[14],ymm3[15]6301; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload6302; AVX2-FP-NEXT: vpshufb %ymm14, %ymm1, %ymm26303; AVX2-FP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Folded Reload6304; AVX2-FP-NEXT: # ymm1 = mem[1,1,2,2]6305; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]6306; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm3, %ymm1, %ymm16307; AVX2-FP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Folded Reload6308; AVX2-FP-NEXT: # ymm2 = mem[1,1,2,2]6309; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]6310; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm11, %ymm2, %ymm26311; AVX2-FP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload6312; AVX2-FP-NEXT: # ymm4 = mem[1,1,2,2]6313; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm10, %ymm4, %ymm46314; AVX2-FP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload6315; AVX2-FP-NEXT: # ymm6 = mem[1,1,2,2]6316; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm5, %ymm6, %ymm56317; AVX2-FP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload6318; AVX2-FP-NEXT: # ymm6 = mem[1,1,2,2]6319; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm1, %ymm6, %ymm16320; AVX2-FP-NEXT: vmovdqa %ymm1, 544(%r9)6321; AVX2-FP-NEXT: vmovdqa %ymm5, 384(%r9)6322; AVX2-FP-NEXT: vmovdqa %ymm4, 224(%r9)6323; AVX2-FP-NEXT: vmovdqa %ymm2, 64(%r9)6324; AVX2-FP-NEXT: vmovdqa %ymm0, 608(%r9)6325; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6326; AVX2-FP-NEXT: vmovaps %ymm0, 576(%r9)6327; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6328; AVX2-FP-NEXT: vmovaps %ymm0, 448(%r9)6329; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6330; AVX2-FP-NEXT: vmovaps %ymm0, 416(%r9)6331; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6332; AVX2-FP-NEXT: vmovaps %ymm0, 288(%r9)6333; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6334; AVX2-FP-NEXT: vmovaps %ymm0, 256(%r9)6335; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6336; AVX2-FP-NEXT: vmovaps %ymm0, 128(%r9)6337; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6338; AVX2-FP-NEXT: vmovaps %ymm0, 96(%r9)6339; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6340; AVX2-FP-NEXT: vmovaps %ymm0, 512(%r9)6341; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6342; AVX2-FP-NEXT: vmovaps %ymm0, 480(%r9)6343; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6344; AVX2-FP-NEXT: vmovaps %ymm0, 352(%r9)6345; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6346; AVX2-FP-NEXT: vmovaps %ymm0, 320(%r9)6347; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6348; AVX2-FP-NEXT: vmovaps %ymm0, 192(%r9)6349; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6350; AVX2-FP-NEXT: vmovaps %ymm0, 160(%r9)6351; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6352; AVX2-FP-NEXT: vmovaps %ymm0, 32(%r9)6353; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6354; AVX2-FP-NEXT: vmovaps %ymm0, (%r9)6355; AVX2-FP-NEXT: addq $936, %rsp # imm = 0x3A86356; AVX2-FP-NEXT: vzeroupper6357; AVX2-FP-NEXT: retq6358;6359; AVX2-FCP-LABEL: store_i16_stride5_vf64:6360; AVX2-FCP: # %bb.0:6361; AVX2-FCP-NEXT: subq $936, %rsp # imm = 0x3A86362; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm56363; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %xmm26364; AVX2-FCP-NEXT: vmovdqa 64(%rsi), %xmm36365; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm06366; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %xmm146367; AVX2-FCP-NEXT: vmovdqa 64(%rdi), %xmm136368; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3]6369; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm9 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]6370; AVX2-FCP-NEXT: vpshufb %xmm9, %xmm0, %xmm06371; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]6372; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm76373; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %xmm106374; AVX2-FCP-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6375; AVX2-FCP-NEXT: vmovdqa 64(%rdx), %xmm66376; AVX2-FCP-NEXT: vmovdqa (%rcx), %xmm86377; AVX2-FCP-NEXT: vmovdqa 32(%rcx), %xmm46378; AVX2-FCP-NEXT: vmovdqa 64(%rcx), %xmm16379; AVX2-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6380; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm12 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]6381; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm11 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]6382; AVX2-FCP-NEXT: vpshufb %xmm11, %xmm12, %xmm126383; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm15 = ymm12[0,1,0,1]6384; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]6385; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm0, %ymm15, %ymm06386; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6387; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm14[0],xmm2[0],xmm14[1],xmm2[1],xmm14[2],xmm2[2],xmm14[3],xmm2[3]6388; AVX2-FCP-NEXT: vpshufb %xmm9, %xmm0, %xmm06389; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]6390; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm14 = xmm4[0],xmm10[0],xmm4[1],xmm10[1],xmm4[2],xmm10[2],xmm4[3],xmm10[3]6391; AVX2-FCP-NEXT: vpshufb %xmm11, %xmm14, %xmm146392; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,1,0,1]6393; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm0, %ymm14, %ymm146394; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm13[0],xmm3[0],xmm13[1],xmm3[1],xmm13[2],xmm3[2],xmm13[3],xmm3[3]6395; AVX2-FCP-NEXT: vpshufb %xmm9, %xmm0, %xmm06396; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]6397; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm13 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3]6398; AVX2-FCP-NEXT: vpshufb %xmm11, %xmm13, %xmm136399; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[0,1,0,1]6400; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm0, %ymm13, %ymm16401; AVX2-FCP-NEXT: vmovdqa 96(%rsi), %xmm136402; AVX2-FCP-NEXT: vmovdqa 96(%rdi), %xmm156403; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm15 = xmm15[0],xmm13[0],xmm15[1],xmm13[1],xmm15[2],xmm13[2],xmm15[3],xmm13[3]6404; AVX2-FCP-NEXT: vpshufb %xmm9, %xmm15, %xmm06405; AVX2-FCP-NEXT: vmovdqa 96(%rdx), %xmm96406; AVX2-FCP-NEXT: vmovdqa 96(%rcx), %xmm156407; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm10 = xmm15[0],xmm9[0],xmm15[1],xmm9[1],xmm15[2],xmm9[2],xmm15[3],xmm9[3]6408; AVX2-FCP-NEXT: vpshufb %xmm11, %xmm10, %xmm106409; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]6410; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,1,0,1]6411; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm0, %ymm10, %ymm06412; AVX2-FCP-NEXT: vpbroadcastq (%r8), %ymm106413; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]6414; AVX2-FCP-NEXT: vpblendvb %ymm11, {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm10 # 32-byte Folded Reload6415; AVX2-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6416; AVX2-FCP-NEXT: vpbroadcastq 32(%r8), %ymm106417; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm14, %ymm10, %ymm106418; AVX2-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6419; AVX2-FCP-NEXT: vpbroadcastq 64(%r8), %ymm106420; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm1, %ymm10, %ymm16421; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6422; AVX2-FCP-NEXT: vpbroadcastq 96(%r8), %ymm16423; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm0, %ymm1, %ymm06424; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6425; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm11 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]6426; AVX2-FCP-NEXT: vpshufb %xmm11, %xmm5, %xmm06427; AVX2-FCP-NEXT: vpbroadcastq 8(%rdi), %xmm16428; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5],xmm1[6],xmm0[7]6429; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]6430; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm8, %xmm56431; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[1,2,2,2]6432; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm7[1],xmm5[2],xmm7[3],xmm5[4,5],xmm7[6],xmm5[7]6433; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]6434; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,0]6435; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]6436; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm1, %ymm5, %ymm56437; AVX2-FCP-NEXT: vpshufb %xmm11, %xmm2, %xmm16438; AVX2-FCP-NEXT: vpbroadcastq 40(%rdi), %xmm26439; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2,3],xmm2[4],xmm1[5],xmm2[6],xmm1[7]6440; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm4, %xmm26441; AVX2-FCP-NEXT: vpshufd $169, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload6442; AVX2-FCP-NEXT: # xmm4 = mem[1,2,2,2]6443; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2],xmm4[3],xmm2[4,5],xmm4[6],xmm2[7]6444; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]6445; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,0]6446; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm1, %ymm2, %ymm16447; AVX2-FCP-NEXT: vpshufb %xmm11, %xmm3, %xmm26448; AVX2-FCP-NEXT: vpbroadcastq 72(%rdi), %xmm46449; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2,3],xmm4[4],xmm2[5],xmm4[6],xmm2[7]6450; AVX2-FCP-NEXT: vmovdqa (%rdx), %ymm126451; AVX2-FCP-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6452; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload6453; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm3, %xmm36454; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm4 = xmm6[1,2,2,2]6455; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1],xmm3[2],xmm4[3],xmm3[4,5],xmm4[6],xmm3[7]6456; AVX2-FCP-NEXT: vmovdqa (%rcx), %ymm146457; AVX2-FCP-NEXT: vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6458; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,1]6459; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,0,0]6460; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm2, %ymm3, %ymm26461; AVX2-FCP-NEXT: vmovdqa (%r8), %ymm66462; AVX2-FCP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6463; AVX2-FCP-NEXT: vpshufb %xmm11, %xmm13, %xmm36464; AVX2-FCP-NEXT: vpbroadcastq 104(%rdi), %xmm46465; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1],xmm3[2,3],xmm4[4],xmm3[5],xmm4[6],xmm3[7]6466; AVX2-FCP-NEXT: vmovdqa 32(%r8), %ymm86467; AVX2-FCP-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6468; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm15, %xmm06469; AVX2-FCP-NEXT: vmovdqa 64(%r8), %ymm106470; AVX2-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6471; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm4 = xmm9[1,2,2,2]6472; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm4[1],xmm0[2],xmm4[3],xmm0[4,5],xmm4[6],xmm0[7]6473; AVX2-FCP-NEXT: vmovdqa 96(%r8), %ymm96474; AVX2-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6475; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,0,1]6476; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,0]6477; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm3, %ymm0, %ymm06478; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm6[0,1,1,1]6479; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]6480; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm5, %ymm3, %ymm36481; AVX2-FCP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6482; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm8[0,1,1,1]6483; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm1, %ymm3, %ymm16484; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6485; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm10[0,1,1,1]6486; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm2, %ymm1, %ymm16487; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6488; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm9[0,1,1,1]6489; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm0, %ymm1, %ymm06490; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6491; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]6492; AVX2-FCP-NEXT: # ymm1 = mem[0,1,0,1]6493; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm14, %ymm06494; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm12[1,1,1,2,5,5,5,6]6495; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]6496; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm56497; AVX2-FCP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6498; AVX2-FCP-NEXT: vmovdqa (%rsi), %ymm116499; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0,22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0]6500; AVX2-FCP-NEXT: # ymm0 = mem[0,1,0,1]6501; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm11, %ymm36502; AVX2-FCP-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6503; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm5[0,1,2,1,4,5,6,5]6504; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3],ymm4[4],ymm3[5,6],ymm4[7],ymm3[8,9],ymm4[10],ymm3[11],ymm4[12],ymm3[13,14],ymm4[15]6505; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]6506; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]6507; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535]6508; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm2, %ymm3, %ymm86509; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %ymm46510; AVX2-FCP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6511; AVX2-FCP-NEXT: vmovdqa 32(%rcx), %ymm26512; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6513; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm2, %ymm26514; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm4[1,1,1,2,5,5,5,6]6515; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]6516; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %ymm56517; AVX2-FCP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6518; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %ymm66519; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm6, %ymm36520; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm5[0,1,2,1,4,5,6,5]6521; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3],ymm4[4],ymm3[5,6],ymm4[7],ymm3[8,9],ymm4[10],ymm3[11],ymm4[12],ymm3[13,14],ymm4[15]6522; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]6523; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]6524; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm2, %ymm3, %ymm106525; AVX2-FCP-NEXT: vmovdqa 64(%rdx), %ymm46526; AVX2-FCP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6527; AVX2-FCP-NEXT: vmovdqa 64(%rcx), %ymm26528; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6529; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm2, %ymm26530; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm4[1,1,1,2,5,5,5,6]6531; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]6532; AVX2-FCP-NEXT: vmovdqa 64(%rdi), %ymm46533; AVX2-FCP-NEXT: vmovdqu %ymm4, (%rsp) # 32-byte Spill6534; AVX2-FCP-NEXT: vmovdqa 64(%rsi), %ymm56535; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm5, %ymm36536; AVX2-FCP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6537; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm12 = ymm4[0,1,2,1,4,5,6,5]6538; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm12[2],ymm3[3],ymm12[4],ymm3[5,6],ymm12[7],ymm3[8,9],ymm12[10],ymm3[11],ymm12[12],ymm3[13,14],ymm12[15]6539; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]6540; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]6541; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm2, %ymm3, %ymm126542; AVX2-FCP-NEXT: vmovdqa 96(%rcx), %ymm26543; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6544; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm2, %ymm16545; AVX2-FCP-NEXT: vmovdqa 96(%rdx), %ymm76546; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm7[1,1,1,2,5,5,5,6]6547; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm1[0],ymm13[1],ymm1[2,3],ymm13[4],ymm1[5],ymm13[6],ymm1[7,8],ymm13[9],ymm1[10,11],ymm13[12],ymm1[13],ymm13[14],ymm1[15]6548; AVX2-FCP-NEXT: vmovdqa 96(%rsi), %ymm36549; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm3, %ymm06550; AVX2-FCP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6551; AVX2-FCP-NEXT: vmovdqa 96(%rdi), %ymm26552; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm15 = ymm2[0,1,2,1,4,5,6,5]6553; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6554; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm15[2],ymm0[3],ymm15[4],ymm0[5,6],ymm15[7],ymm0[8,9],ymm15[10],ymm0[11],ymm15[12],ymm0[13,14],ymm15[15]6555; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,3,2,3]6556; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]6557; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm13, %ymm0, %ymm06558; AVX2-FCP-NEXT: vpbroadcastq 16(%r8), %ymm136559; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]6560; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm8, %ymm13, %ymm16561; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6562; AVX2-FCP-NEXT: vpbroadcastq 48(%r8), %ymm136563; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm10, %ymm13, %ymm16564; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6565; AVX2-FCP-NEXT: vpbroadcastq 80(%r8), %ymm106566; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm12, %ymm10, %ymm16567; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6568; AVX2-FCP-NEXT: vpbroadcastq 112(%r8), %ymm106569; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm0, %ymm10, %ymm06570; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6571; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]6572; AVX2-FCP-NEXT: # ymm0 = mem[0,1,0,1]6573; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm11, %ymm106574; AVX2-FCP-NEXT: vpshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Folded Reload6575; AVX2-FCP-NEXT: # ymm12 = mem[2,3,2,3,6,7,6,7]6576; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm10[0],ymm12[1],ymm10[2],ymm12[3],ymm10[4,5],ymm12[6],ymm10[7,8],ymm12[9],ymm10[10],ymm12[11],ymm10[12,13],ymm12[14],ymm10[15]6577; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm12 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]6578; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload6579; AVX2-FCP-NEXT: vpshufb %ymm12, %ymm1, %ymm136580; AVX2-FCP-NEXT: vpshufd $251, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload6581; AVX2-FCP-NEXT: # ymm14 = mem[3,2,3,3,7,6,7,7]6582; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0],ymm14[1],ymm13[2],ymm14[3,4],ymm13[5,6,7,8],ymm14[9],ymm13[10],ymm14[11,12],ymm13[13,14,15]6583; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,3,2,2]6584; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,2,3,2]6585; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [0,65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0]6586; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm10, %ymm13, %ymm106587; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm6, %ymm136588; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload6589; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm15 = ymm8[2,3,2,3,6,7,6,7]6590; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0],ymm15[1],ymm13[2],ymm15[3],ymm13[4,5],ymm15[6],ymm13[7,8],ymm15[9],ymm13[10],ymm15[11],ymm13[12,13],ymm15[14],ymm13[15]6591; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload6592; AVX2-FCP-NEXT: vpshufb %ymm12, %ymm4, %ymm156593; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload6594; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm11 = ymm1[3,2,3,3,7,6,7,7]6595; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm15[0],ymm11[1],ymm15[2],ymm11[3,4],ymm15[5,6,7,8],ymm11[9],ymm15[10],ymm11[11,12],ymm15[13,14,15]6596; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,3,2,2]6597; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,3,2]6598; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm13, %ymm11, %ymm116599; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm5, %ymm136600; AVX2-FCP-NEXT: vpshufd $238, (%rsp), %ymm15 # 32-byte Folded Reload6601; AVX2-FCP-NEXT: # ymm15 = mem[2,3,2,3,6,7,6,7]6602; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0],ymm15[1],ymm13[2],ymm15[3],ymm13[4,5],ymm15[6],ymm13[7,8],ymm15[9],ymm13[10],ymm15[11],ymm13[12,13],ymm15[14],ymm13[15]6603; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6604; AVX2-FCP-NEXT: vpshufb %ymm12, %ymm5, %ymm156605; AVX2-FCP-NEXT: vpshufd $251, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Folded Reload6606; AVX2-FCP-NEXT: # ymm9 = mem[3,2,3,3,7,6,7,7]6607; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm15[0],ymm9[1],ymm15[2],ymm9[3,4],ymm15[5,6,7,8],ymm9[9],ymm15[10],ymm9[11,12],ymm15[13,14,15]6608; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,3,2,2]6609; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,2]6610; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm13, %ymm9, %ymm96611; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm3, %ymm06612; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm2[2,3,2,3,6,7,6,7]6613; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm13[1],ymm0[2],ymm13[3],ymm0[4,5],ymm13[6],ymm0[7,8],ymm13[9],ymm0[10],ymm13[11],ymm0[12,13],ymm13[14],ymm0[15]6614; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload6615; AVX2-FCP-NEXT: vpshufb %ymm12, %ymm2, %ymm126616; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm7[3,2,3,3,7,6,7,7]6617; AVX2-FCP-NEXT: vmovdqa %ymm7, %ymm36618; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm12[0],ymm13[1],ymm12[2],ymm13[3,4],ymm12[5,6,7,8],ymm13[9],ymm12[10],ymm13[11,12],ymm12[13,14,15]6619; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]6620; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,2,3,2]6621; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm0, %ymm12, %ymm06622; AVX2-FCP-NEXT: vpbroadcastq 24(%r8), %ymm126623; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]6624; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm10, %ymm12, %ymm26625; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6626; AVX2-FCP-NEXT: vpbroadcastq 56(%r8), %ymm106627; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm11, %ymm10, %ymm26628; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6629; AVX2-FCP-NEXT: vpbroadcastq 88(%r8), %ymm106630; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm9, %ymm10, %ymm26631; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6632; AVX2-FCP-NEXT: vpbroadcastq 120(%r8), %ymm96633; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm0, %ymm9, %ymm06634; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm9 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]6635; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload6636; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm7, %ymm116637; AVX2-FCP-NEXT: vpshufd $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload6638; AVX2-FCP-NEXT: # ymm14 = mem[3,0,3,0,7,4,7,4]6639; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm14[0],ymm11[1],ymm14[2],ymm11[3],ymm14[4,5],ymm11[6],ymm14[7,8],ymm11[9],ymm14[10],ymm11[11],ymm14[12,13],ymm11[14],ymm14[15]6640; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm14 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]6641; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload6642; AVX2-FCP-NEXT: vpshufb %ymm14, %ymm2, %ymm156643; AVX2-FCP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Folded Reload6644; AVX2-FCP-NEXT: # ymm13 = mem[1,1,2,2]6645; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0],ymm15[1],ymm13[2,3],ymm15[4],ymm13[5],ymm15[6],ymm13[7,8],ymm15[9],ymm13[10,11],ymm15[12],ymm13[13],ymm15[14],ymm13[15]6646; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,65535,0,0,0,65535,65535,0,0,0,65535,65535,0,0,0,65535]6647; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm11, %ymm13, %ymm116648; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm4, %ymm136649; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm12 = ymm1[3,0,3,0,7,4,7,4]6650; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm12[0],ymm13[1],ymm12[2],ymm13[3],ymm12[4,5],ymm13[6],ymm12[7,8],ymm13[9],ymm12[10],ymm13[11],ymm12[12,13],ymm13[14],ymm12[15]6651; AVX2-FCP-NEXT: vpshufb %ymm14, %ymm6, %ymm136652; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm8[1,1,2,2]6653; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm10[0],ymm13[1],ymm10[2,3],ymm13[4],ymm10[5],ymm13[6],ymm10[7,8],ymm13[9],ymm10[10,11],ymm13[12],ymm10[13],ymm13[14],ymm10[15]6654; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm12, %ymm10, %ymm106655; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm5, %ymm76656; AVX2-FCP-NEXT: vpshufd $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload6657; AVX2-FCP-NEXT: # ymm8 = mem[3,0,3,0,7,4,7,4]6658; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm8[0],ymm7[1],ymm8[2],ymm7[3],ymm8[4,5],ymm7[6],ymm8[7,8],ymm7[9],ymm8[10],ymm7[11],ymm8[12,13],ymm7[14],ymm8[15]6659; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload6660; AVX2-FCP-NEXT: vpshufb %ymm14, %ymm1, %ymm56661; AVX2-FCP-NEXT: vpermq $165, (%rsp), %ymm6 # 32-byte Folded Reload6662; AVX2-FCP-NEXT: # ymm6 = mem[1,1,2,2]6663; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm6[0],ymm5[1],ymm6[2,3],ymm5[4],ymm6[5],ymm5[6],ymm6[7,8],ymm5[9],ymm6[10,11],ymm5[12],ymm6[13],ymm5[14],ymm6[15]6664; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm7, %ymm5, %ymm56665; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload6666; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm1, %ymm46667; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[3,0,3,0,7,4,7,4]6668; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2],ymm4[3],ymm3[4,5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10],ymm4[11],ymm3[12,13],ymm4[14],ymm3[15]6669; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload6670; AVX2-FCP-NEXT: vpshufb %ymm14, %ymm1, %ymm26671; AVX2-FCP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Folded Reload6672; AVX2-FCP-NEXT: # ymm1 = mem[1,1,2,2]6673; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]6674; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm3, %ymm1, %ymm16675; AVX2-FCP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Folded Reload6676; AVX2-FCP-NEXT: # ymm2 = mem[1,1,2,2]6677; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]6678; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm11, %ymm2, %ymm26679; AVX2-FCP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload6680; AVX2-FCP-NEXT: # ymm4 = mem[1,1,2,2]6681; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm10, %ymm4, %ymm46682; AVX2-FCP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload6683; AVX2-FCP-NEXT: # ymm6 = mem[1,1,2,2]6684; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm5, %ymm6, %ymm56685; AVX2-FCP-NEXT: vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload6686; AVX2-FCP-NEXT: # ymm6 = mem[1,1,2,2]6687; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm1, %ymm6, %ymm16688; AVX2-FCP-NEXT: vmovdqa %ymm1, 544(%r9)6689; AVX2-FCP-NEXT: vmovdqa %ymm5, 384(%r9)6690; AVX2-FCP-NEXT: vmovdqa %ymm4, 224(%r9)6691; AVX2-FCP-NEXT: vmovdqa %ymm2, 64(%r9)6692; AVX2-FCP-NEXT: vmovdqa %ymm0, 608(%r9)6693; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6694; AVX2-FCP-NEXT: vmovaps %ymm0, 576(%r9)6695; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6696; AVX2-FCP-NEXT: vmovaps %ymm0, 448(%r9)6697; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6698; AVX2-FCP-NEXT: vmovaps %ymm0, 416(%r9)6699; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6700; AVX2-FCP-NEXT: vmovaps %ymm0, 288(%r9)6701; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6702; AVX2-FCP-NEXT: vmovaps %ymm0, 256(%r9)6703; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6704; AVX2-FCP-NEXT: vmovaps %ymm0, 128(%r9)6705; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6706; AVX2-FCP-NEXT: vmovaps %ymm0, 96(%r9)6707; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6708; AVX2-FCP-NEXT: vmovaps %ymm0, 512(%r9)6709; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6710; AVX2-FCP-NEXT: vmovaps %ymm0, 480(%r9)6711; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6712; AVX2-FCP-NEXT: vmovaps %ymm0, 352(%r9)6713; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6714; AVX2-FCP-NEXT: vmovaps %ymm0, 320(%r9)6715; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6716; AVX2-FCP-NEXT: vmovaps %ymm0, 192(%r9)6717; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6718; AVX2-FCP-NEXT: vmovaps %ymm0, 160(%r9)6719; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6720; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%r9)6721; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6722; AVX2-FCP-NEXT: vmovaps %ymm0, (%r9)6723; AVX2-FCP-NEXT: addq $936, %rsp # imm = 0x3A86724; AVX2-FCP-NEXT: vzeroupper6725; AVX2-FCP-NEXT: retq6726;6727; AVX512-LABEL: store_i16_stride5_vf64:6728; AVX512: # %bb.0:6729; AVX512-NEXT: subq $264, %rsp # imm = 0x1086730; AVX512-NEXT: vmovdqa 96(%rcx), %ymm06731; AVX512-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6732; AVX512-NEXT: vmovdqa {{.*#+}} ymm1 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]6733; AVX512-NEXT: vpshufb %ymm1, %ymm0, %ymm06734; AVX512-NEXT: vmovdqa64 %ymm1, %ymm196735; AVX512-NEXT: vmovdqa64 96(%rdx), %ymm206736; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm20[3,0,3,0,7,4,7,4]6737; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]6738; AVX512-NEXT: vmovdqa 96(%rcx), %xmm06739; AVX512-NEXT: vmovdqa {{.*#+}} xmm8 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]6740; AVX512-NEXT: vpshufb %xmm8, %xmm0, %xmm36741; AVX512-NEXT: vmovdqa 96(%rdx), %xmm26742; AVX512-NEXT: vpshufd {{.*#+}} xmm4 = xmm2[1,2,2,2]6743; AVX512-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1],xmm3[2],xmm4[3],xmm3[4,5],xmm4[6],xmm3[7]6744; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,0,0]6745; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm3, %zmm16746; AVX512-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6747; AVX512-NEXT: vmovdqa 96(%rsi), %ymm16748; AVX512-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6749; AVX512-NEXT: vmovdqa {{.*#+}} ymm12 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]6750; AVX512-NEXT: vpshufb %ymm12, %ymm1, %ymm16751; AVX512-NEXT: vmovdqa 96(%rdi), %ymm146752; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm14[1,1,2,2]6753; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm3[0],ymm1[1],ymm3[2,3],ymm1[4],ymm3[5],ymm1[6],ymm3[7,8],ymm1[9],ymm3[10,11],ymm1[12],ymm3[13],ymm1[14],ymm3[15]6754; AVX512-NEXT: vmovdqa 96(%rsi), %xmm16755; AVX512-NEXT: vmovdqa {{.*#+}} xmm9 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]6756; AVX512-NEXT: vpshufb %xmm9, %xmm1, %xmm56757; AVX512-NEXT: vpbroadcastq 104(%rdi), %xmm66758; AVX512-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm6[1],xmm5[2,3],xmm6[4],xmm5[5],xmm6[6],xmm5[7]6759; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]6760; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm5, %zmm296761; AVX512-NEXT: vmovdqa 96(%r8), %ymm46762; AVX512-NEXT: vmovdqa {{.*#+}} ymm3 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]6763; AVX512-NEXT: vpshufb %ymm3, %ymm4, %ymm56764; AVX512-NEXT: vmovdqa64 %ymm3, %ymm226765; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm3 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]6766; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]6767; AVX512-NEXT: vpandn %ymm4, %ymm3, %ymm46768; AVX512-NEXT: vmovdqa64 %zmm3, %zmm216769; AVX512-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm266770; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]6771; AVX512-NEXT: vmovdqa {{.*#+}} xmm7 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]6772; AVX512-NEXT: vpshufb %xmm7, %xmm0, %xmm06773; AVX512-NEXT: vmovdqa64 (%rdx), %ymm186774; AVX512-NEXT: vmovdqa64 64(%rdx), %ymm306775; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm30[3,2,3,3,7,6,7,7]6776; AVX512-NEXT: vmovdqa 64(%rcx), %ymm36777; AVX512-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6778; AVX512-NEXT: vpshufhw {{.*#+}} ymm4 = ymm3[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]6779; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,3,2,3,6,7,6,7]6780; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm2[1],ymm4[2],ymm2[3,4],ymm4[5,6,7,8],ymm2[9],ymm4[10],ymm2[11,12],ymm4[13,14,15]6781; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,2]6782; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm2[0,1,2,3],zmm0[0,1,0,1]6783; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6784; AVX512-NEXT: vmovdqa 96(%rdi), %xmm06785; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]6786; AVX512-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]6787; AVX512-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,5,6]6788; AVX512-NEXT: vmovdqa64 64(%rdi), %ymm176789; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm17[2,3,2,3,6,7,6,7]6790; AVX512-NEXT: vmovdqa 64(%rsi), %ymm156791; AVX512-NEXT: vpshufhw {{.*#+}} ymm2 = ymm15[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]6792; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[2,3,2,2,6,7,6,6]6793; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]6794; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,2]6795; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm23 = zmm1[0,1,2,3],zmm0[0,1,0,1]6796; AVX512-NEXT: vmovdqa (%rsi), %xmm06797; AVX512-NEXT: vmovdqa 64(%rsi), %xmm26798; AVX512-NEXT: vpshufb %xmm9, %xmm2, %xmm16799; AVX512-NEXT: vpbroadcastq 72(%rdi), %xmm46800; AVX512-NEXT: vpblendw {{.*#+}} xmm4 = xmm1[0],xmm4[1],xmm1[2,3],xmm4[4],xmm1[5],xmm4[6],xmm1[7]6801; AVX512-NEXT: vmovdqa (%rdi), %xmm16802; AVX512-NEXT: vmovdqa 64(%rdi), %xmm56803; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3]6804; AVX512-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]6805; AVX512-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,5,6]6806; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm2 = zmm2[0,1,0,1],zmm4[0,1,0,1]6807; AVX512-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6808; AVX512-NEXT: vmovdqa 64(%rdx), %xmm26809; AVX512-NEXT: vmovdqa 64(%rcx), %xmm46810; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm13 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3]6811; AVX512-NEXT: vpshufb %xmm8, %xmm4, %xmm46812; AVX512-NEXT: vmovdqa64 %xmm8, %xmm276813; AVX512-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[1,2,2,2]6814; AVX512-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0],xmm2[1],xmm4[2],xmm2[3],xmm4[4,5],xmm2[6],xmm4[7]6815; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6816; AVX512-NEXT: vpshufb %xmm9, %xmm0, %xmm26817; AVX512-NEXT: vpbroadcastq 8(%rdi), %xmm46818; AVX512-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2,3],xmm4[4],xmm2[5],xmm4[6],xmm2[7]6819; AVX512-NEXT: vmovdqa 32(%rcx), %xmm56820; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]6821; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm18[3,2,3,3,7,6,7,7]6822; AVX512-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]6823; AVX512-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,5,6]6824; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,0,1],zmm2[0,1,0,1]6825; AVX512-NEXT: vmovdqu64 %zmm0, (%rsp) # 64-byte Spill6826; AVX512-NEXT: vmovdqa (%rcx), %ymm66827; AVX512-NEXT: vpshufhw {{.*#+}} ymm0 = ymm6[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]6828; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]6829; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3,4],ymm0[5,6,7,8],ymm1[9],ymm0[10],ymm1[11,12],ymm0[13,14,15]6830; AVX512-NEXT: vmovdqa 32(%rdx), %xmm86831; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,2]6832; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm5[0],xmm8[0],xmm5[1],xmm8[1],xmm5[2],xmm8[2],xmm5[3],xmm8[3]6833; AVX512-NEXT: vpshufb %xmm7, %xmm1, %xmm16834; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm24 = zmm0[0,1,2,3],zmm1[0,1,0,1]6835; AVX512-NEXT: vmovdqa (%rdi), %ymm26836; AVX512-NEXT: vmovdqa (%rsi), %ymm16837; AVX512-NEXT: vpshufhw {{.*#+}} ymm4 = ymm1[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]6838; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,3,2,2,6,7,6,6]6839; AVX512-NEXT: vpshufd {{.*#+}} ymm11 = ymm2[2,3,2,3,6,7,6,7]6840; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm11[1],ymm4[2],ymm11[3],ymm4[4,5],ymm11[6],ymm4[7,8],ymm11[9],ymm4[10],ymm11[11],ymm4[12,13],ymm11[14],ymm4[15]6841; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,3,2,2]6842; AVX512-NEXT: vmovdqa 32(%rsi), %xmm116843; AVX512-NEXT: vmovdqa 32(%rdi), %xmm106844; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm10 = xmm10[0],xmm11[0],xmm10[1],xmm11[1],xmm10[2],xmm11[2],xmm10[3],xmm11[3]6845; AVX512-NEXT: vpshufd {{.*#+}} xmm10 = xmm10[0,2,1,3]6846; AVX512-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,4,5,6]6847; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm25 = zmm4[0,1,2,3],zmm10[0,1,0,1]6848; AVX512-NEXT: vmovdqa64 32(%rdx), %ymm286849; AVX512-NEXT: vmovdqa 32(%rcx), %ymm46850; AVX512-NEXT: vmovdqa64 %ymm19, %ymm06851; AVX512-NEXT: vpshufb %ymm0, %ymm4, %ymm106852; AVX512-NEXT: vpshufd {{.*#+}} ymm3 = ymm28[3,0,3,0,7,4,7,4]6853; AVX512-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm10[1],ymm3[2],ymm10[3],ymm3[4,5],ymm10[6],ymm3[7,8],ymm10[9],ymm3[10],ymm10[11],ymm3[12,13],ymm10[14],ymm3[15]6854; AVX512-NEXT: vmovdqa64 %xmm27, %xmm06855; AVX512-NEXT: vpshufb %xmm0, %xmm5, %xmm56856; AVX512-NEXT: vpshufd {{.*#+}} xmm8 = xmm8[1,2,2,2]6857; AVX512-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm8[1],xmm5[2],xmm8[3],xmm5[4,5],xmm8[6],xmm5[7]6858; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,0]6859; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm5, %zmm276860; AVX512-NEXT: vmovdqa64 32(%rdi), %ymm316861; AVX512-NEXT: vmovdqa 32(%rsi), %ymm86862; AVX512-NEXT: vpshufb %ymm12, %ymm8, %ymm36863; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm31[1,1,2,2]6864; AVX512-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0],ymm3[1],ymm5[2,3],ymm3[4],ymm5[5],ymm3[6],ymm5[7,8],ymm3[9],ymm5[10,11],ymm3[12],ymm5[13],ymm3[14],ymm5[15]6865; AVX512-NEXT: vpshufb %xmm9, %xmm11, %xmm56866; AVX512-NEXT: vpbroadcastq 40(%rdi), %xmm106867; AVX512-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm10[1],xmm5[2,3],xmm10[4],xmm5[5],xmm10[6],xmm5[7]6868; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]6869; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm5, %zmm166870; AVX512-NEXT: vmovdqa 32(%r8), %ymm36871; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm3[0,1,1,1]6872; AVX512-NEXT: vmovdqa64 %ymm22, %ymm56873; AVX512-NEXT: vpshufb %ymm5, %ymm3, %ymm36874; AVX512-NEXT: vpandnq %ymm10, %ymm21, %ymm106875; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm10, %zmm226876; AVX512-NEXT: vpshufb %xmm7, %xmm13, %xmm116877; AVX512-NEXT: vmovdqa (%rcx), %xmm36878; AVX512-NEXT: vmovdqa (%rdx), %xmm106879; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm9 = xmm3[0],xmm10[0],xmm3[1],xmm10[1],xmm3[2],xmm10[2],xmm3[3],xmm10[3]6880; AVX512-NEXT: vpshufb %xmm7, %xmm9, %xmm96881; AVX512-NEXT: vpshufb %xmm0, %xmm3, %xmm36882; AVX512-NEXT: vpshufd {{.*#+}} xmm7 = xmm10[1,2,2,2]6883; AVX512-NEXT: vpblendw {{.*#+}} xmm10 = xmm3[0],xmm7[1],xmm3[2],xmm7[3],xmm3[4,5],xmm7[6],xmm3[7]6884; AVX512-NEXT: vpshufd {{.*#+}} ymm3 = ymm2[0,1,2,1,4,5,6,5]6885; AVX512-NEXT: vprolq $16, %ymm1, %ymm76886; AVX512-NEXT: vpblendw {{.*#+}} ymm3 = ymm7[0,1],ymm3[2],ymm7[3],ymm3[4],ymm7[5,6],ymm3[7],ymm7[8,9],ymm3[10],ymm7[11],ymm3[12],ymm7[13,14],ymm3[15]6887; AVX512-NEXT: vmovdqa %ymm12, %ymm76888; AVX512-NEXT: vpshufb %ymm12, %ymm1, %ymm06889; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,1,2,2]6890; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]6891; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm21 = zmm0[0,1,2,3],zmm3[2,3,2,3]6892; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]6893; AVX512-NEXT: # ymm3 = mem[0,1,0,1]6894; AVX512-NEXT: vpshufb %ymm3, %ymm6, %ymm06895; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm18[1,1,1,2,5,5,5,6]6896; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]6897; AVX512-NEXT: vmovdqa64 %ymm19, %ymm56898; AVX512-NEXT: vpshufb %ymm5, %ymm6, %ymm16899; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm18[3,0,3,0,7,4,7,4]6900; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]6901; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm18 = zmm1[0,1,2,3],zmm0[2,3,2,3]6902; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm14[0,1,2,1,4,5,6,5]6903; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload6904; AVX512-NEXT: vprolq $16, %ymm2, %ymm16905; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]6906; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm14[2,3,2,3,6,7,6,7]6907; AVX512-NEXT: vpshufhw {{.*#+}} ymm2 = ymm2[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]6908; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[2,3,2,2,6,7,6,6]6909; AVX512-NEXT: vpblendw {{.*#+}} ymm12 = ymm2[0],ymm0[1],ymm2[2],ymm0[3],ymm2[4,5],ymm0[6],ymm2[7,8],ymm0[9],ymm2[10],ymm0[11],ymm2[12,13],ymm0[14],ymm2[15]6910; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6911; AVX512-NEXT: vpshufb %ymm3, %ymm0, %ymm136912; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm20[1,1,1,2,5,5,5,6]6913; AVX512-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0],ymm2[1],ymm13[2,3],ymm2[4],ymm13[5],ymm2[6],ymm13[7,8],ymm2[9],ymm13[10,11],ymm2[12],ymm13[13],ymm2[14],ymm13[15]6914; AVX512-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]6915; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]6916; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm20[3,2,3,3,7,6,7,7]6917; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2],ymm2[3,4],ymm0[5,6,7,8],ymm2[9],ymm0[10],ymm2[11,12],ymm0[13,14,15]6918; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm17[0,1,2,1,4,5,6,5]6919; AVX512-NEXT: vprolq $16, %ymm15, %ymm146920; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm14[0,1],ymm2[2],ymm14[3],ymm2[4],ymm14[5,6],ymm2[7],ymm14[8,9],ymm2[10],ymm14[11],ymm2[12],ymm14[13,14],ymm2[15]6921; AVX512-NEXT: vpshufb %ymm7, %ymm15, %ymm66922; AVX512-NEXT: vpermq {{.*#+}} ymm14 = ymm17[1,1,2,2]6923; AVX512-NEXT: vpblendw {{.*#+}} ymm6 = ymm14[0],ymm6[1],ymm14[2,3],ymm6[4],ymm14[5],ymm6[6],ymm14[7,8],ymm6[9],ymm14[10,11],ymm6[12],ymm14[13],ymm6[14],ymm14[15]6924; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm20 = zmm6[0,1,2,3],zmm2[2,3,2,3]6925; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload6926; AVX512-NEXT: vpshufb %ymm3, %ymm7, %ymm26927; AVX512-NEXT: vpshufd {{.*#+}} ymm6 = ymm30[1,1,1,2,5,5,5,6]6928; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm6[1],ymm2[2,3],ymm6[4],ymm2[5],ymm6[6],ymm2[7,8],ymm6[9],ymm2[10,11],ymm6[12],ymm2[13],ymm6[14],ymm2[15]6929; AVX512-NEXT: vpshufb %ymm5, %ymm7, %ymm66930; AVX512-NEXT: vpshufd {{.*#+}} ymm14 = ymm30[3,0,3,0,7,4,7,4]6931; AVX512-NEXT: vpblendw {{.*#+}} ymm6 = ymm14[0],ymm6[1],ymm14[2],ymm6[3],ymm14[4,5],ymm6[6],ymm14[7,8],ymm6[9],ymm14[10],ymm6[11],ymm14[12,13],ymm6[14],ymm14[15]6932; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm7 = zmm6[0,1,2,3],zmm2[2,3,2,3]6933; AVX512-NEXT: vpshufd {{.*#+}} ymm6 = ymm31[0,1,2,1,4,5,6,5]6934; AVX512-NEXT: vprolq $16, %ymm8, %ymm146935; AVX512-NEXT: vpblendw {{.*#+}} ymm6 = ymm14[0,1],ymm6[2],ymm14[3],ymm6[4],ymm14[5,6],ymm6[7],ymm14[8,9],ymm6[10],ymm14[11],ymm6[12],ymm14[13,14],ymm6[15]6936; AVX512-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,1,0,1]6937; AVX512-NEXT: vpermq $4, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload6938; AVX512-NEXT: # ymm14 = mem[0,1,0,0]6939; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]6940; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,1,0,0]6941; AVX512-NEXT: vpermq {{.*#+}} ymm15 = ymm1[2,3,2,3]6942; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,3,2,2]6943; AVX512-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,3,2,3]6944; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm0[2,2,3,2]6945; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,3,2,3]6946; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm31[2,3,2,3,6,7,6,7]6947; AVX512-NEXT: vpshufhw {{.*#+}} ymm8 = ymm8[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]6948; AVX512-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[2,3,2,2,6,7,6,6]6949; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm8[0],ymm1[1],ymm8[2],ymm1[3],ymm8[4,5],ymm1[6],ymm8[7,8],ymm1[9],ymm8[10],ymm1[11],ymm8[12,13],ymm1[14],ymm8[15]6950; AVX512-NEXT: vpermq {{.*#+}} ymm31 = ymm1[2,3,2,2]6951; AVX512-NEXT: vpshufb %ymm3, %ymm4, %ymm16952; AVX512-NEXT: vpshufd {{.*#+}} ymm3 = ymm28[1,1,1,2,5,5,5,6]6953; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm3[1],ymm1[2,3],ymm3[4],ymm1[5],ymm3[6],ymm1[7,8],ymm3[9],ymm1[10,11],ymm3[12],ymm1[13],ymm3[14],ymm1[15]6954; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm1[2,3,2,3]6955; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm28[3,2,3,3,7,6,7,7]6956; AVX512-NEXT: vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]6957; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,3,2,3,6,7,6,7]6958; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm1[1],ymm4[2],ymm1[3,4],ymm4[5,6,7,8],ymm1[9],ymm4[10],ymm1[11,12],ymm4[13,14,15]6959; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm28 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0]6960; AVX512-NEXT: vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm28, %zmm29 # 64-byte Folded Reload6961; AVX512-NEXT: # zmm29 = mem ^ (zmm28 & (zmm29 ^ mem))6962; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm30 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]6963; AVX512-NEXT: vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm30, %zmm23 # 64-byte Folded Reload6964; AVX512-NEXT: # zmm23 = mem ^ (zmm30 & (zmm23 ^ mem))6965; AVX512-NEXT: vpbroadcastq 88(%r8), %ymm16966; AVX512-NEXT: vpbroadcastq 96(%r8), %ymm196967; AVX512-NEXT: vinserti64x4 $1, %ymm19, %zmm1, %zmm26968; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm19 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]6969; AVX512-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm19 & (zmm2 ^ zmm23))6970; AVX512-NEXT: vpternlogq {{.*#+}} zmm25 = zmm24 ^ (zmm30 & (zmm25 ^ zmm24))6971; AVX512-NEXT: vpbroadcastq 24(%r8), %ymm176972; AVX512-NEXT: vpbroadcastq 32(%r8), %ymm236973; AVX512-NEXT: vinserti64x4 $1, %ymm23, %zmm17, %zmm176974; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,3,2]6975; AVX512-NEXT: vmovdqa (%r8), %ymm06976; AVX512-NEXT: vpternlogq {{.*#+}} zmm17 = zmm17 ^ (zmm19 & (zmm17 ^ zmm25))6977; AVX512-NEXT: vpternlogq {{.*#+}} zmm16 = zmm27 ^ (zmm28 & (zmm16 ^ zmm27))6978; AVX512-NEXT: vpermq {{.*#+}} ymm19 = ymm0[0,1,1,1]6979; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm23 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]6980; AVX512-NEXT: vpandnq 16(%r8){1to4}, %ymm23, %ymm256981; AVX512-NEXT: vmovdqa {{.*#+}} ymm1 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]6982; AVX512-NEXT: vpshufb %ymm1, %ymm0, %ymm06983; AVX512-NEXT: vinserti64x4 $1, %ymm25, %zmm0, %zmm06984; AVX512-NEXT: vmovdqa 64(%r8), %ymm86985; AVX512-NEXT: vpermq {{.*#+}} ymm25 = ymm8[0,1,1,1]6986; AVX512-NEXT: vpshufb %ymm1, %ymm8, %ymm86987; AVX512-NEXT: vpandnq 80(%r8){1to4}, %ymm23, %ymm276988; AVX512-NEXT: vinserti64x4 $1, %ymm27, %zmm8, %zmm86989; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm1 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]6990; AVX512-NEXT: vpternlogq {{.*#+}} zmm26 = zmm26 | (zmm29 & zmm1)6991; AVX512-NEXT: vpternlogq {{.*#+}} zmm22 = zmm22 | (zmm16 & zmm1)6992; AVX512-NEXT: vinserti64x4 $1, %ymm14, %zmm11, %zmm116993; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm14 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]6994; AVX512-NEXT: vpternlogq $184, {{[-0-9]+}}(%r{{[sb]}}p), %zmm14, %zmm11 # 64-byte Folded Reload6995; AVX512-NEXT: # zmm11 = zmm11 ^ (zmm14 & (zmm11 ^ mem))6996; AVX512-NEXT: vpbroadcastq 64(%r8), %ymm166997; AVX512-NEXT: vinserti64x4 $1, %ymm25, %zmm16, %zmm166998; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm24 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]6999; AVX512-NEXT: vpternlogq {{.*#+}} zmm16 = zmm16 ^ (zmm24 & (zmm16 ^ zmm11))7000; AVX512-NEXT: vinserti64x4 $1, %ymm10, %zmm9, %zmm97001; AVX512-NEXT: vpternlogq $184, (%rsp), %zmm14, %zmm9 # 64-byte Folded Reload7002; AVX512-NEXT: # zmm9 = zmm9 ^ (zmm14 & (zmm9 ^ mem))7003; AVX512-NEXT: vpbroadcastq (%r8), %ymm107004; AVX512-NEXT: vinserti64x4 $1, %ymm19, %zmm10, %zmm107005; AVX512-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm24 & (zmm10 ^ zmm9))7006; AVX512-NEXT: vinserti64x4 $1, %ymm12, %zmm15, %zmm97007; AVX512-NEXT: vinserti64x4 $1, %ymm5, %zmm13, %zmm57008; AVX512-NEXT: vpternlogq {{.*#+}} zmm5 = zmm9 ^ (zmm14 & (zmm5 ^ zmm9))7009; AVX512-NEXT: vpbroadcastq 112(%r8), %ymm97010; AVX512-NEXT: vpbroadcastq 120(%r8), %ymm117011; AVX512-NEXT: vinserti64x4 $1, %ymm11, %zmm9, %zmm97012; AVX512-NEXT: vpternlogq {{.*#+}} zmm9 = zmm9 ^ (zmm23 & (zmm9 ^ zmm5))7013; AVX512-NEXT: vinserti64x4 $1, %ymm31, %zmm6, %zmm57014; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm37015; AVX512-NEXT: vpternlogq {{.*#+}} zmm3 = zmm5 ^ (zmm14 & (zmm3 ^ zmm5))7016; AVX512-NEXT: vpbroadcastq 48(%r8), %ymm47017; AVX512-NEXT: vpbroadcastq 56(%r8), %ymm57018; AVX512-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm47019; AVX512-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (zmm23 & (zmm4 ^ zmm3))7020; AVX512-NEXT: vpternlogq {{.*#+}} zmm18 = zmm21 ^ (zmm30 & (zmm18 ^ zmm21))7021; AVX512-NEXT: vpternlogq {{.*#+}} zmm7 = zmm20 ^ (zmm30 & (zmm7 ^ zmm20))7022; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm3 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]7023; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 | (zmm18 & zmm3)7024; AVX512-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm7 & zmm3)7025; AVX512-NEXT: vmovdqa64 %zmm8, 384(%r9)7026; AVX512-NEXT: vmovdqa64 %zmm0, 64(%r9)7027; AVX512-NEXT: vmovdqa64 %zmm4, 256(%r9)7028; AVX512-NEXT: vmovdqa64 %zmm9, 576(%r9)7029; AVX512-NEXT: vmovdqa64 %zmm10, (%r9)7030; AVX512-NEXT: vmovdqa64 %zmm22, 192(%r9)7031; AVX512-NEXT: vmovdqa64 %zmm17, 128(%r9)7032; AVX512-NEXT: vmovdqa64 %zmm16, 320(%r9)7033; AVX512-NEXT: vmovdqa64 %zmm2, 448(%r9)7034; AVX512-NEXT: vmovdqa64 %zmm26, 512(%r9)7035; AVX512-NEXT: addq $264, %rsp # imm = 0x1087036; AVX512-NEXT: vzeroupper7037; AVX512-NEXT: retq7038;7039; AVX512-FCP-LABEL: store_i16_stride5_vf64:7040; AVX512-FCP: # %bb.0:7041; AVX512-FCP-NEXT: subq $360, %rsp # imm = 0x1687042; AVX512-FCP-NEXT: vmovdqa 96(%rcx), %ymm77043; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]7044; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm7, %ymm07045; AVX512-FCP-NEXT: vmovdqa64 96(%rdx), %ymm227046; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm22[3,0,3,0,7,4,7,4]7047; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0],ymm0[1],ymm2[2],ymm0[3],ymm2[4,5],ymm0[6],ymm2[7,8],ymm0[9],ymm2[10],ymm0[11],ymm2[12,13],ymm0[14],ymm2[15]7048; AVX512-FCP-NEXT: vmovdqa 96(%rcx), %xmm27049; AVX512-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7050; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm12 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]7051; AVX512-FCP-NEXT: vpshufb %xmm12, %xmm2, %xmm27052; AVX512-FCP-NEXT: vmovdqa 96(%rdx), %xmm37053; AVX512-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7054; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[1,2,2,2]7055; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1],xmm2[2],xmm3[3],xmm2[4,5],xmm3[6],xmm2[7]7056; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,0]7057; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm07058; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7059; AVX512-FCP-NEXT: vmovdqa 96(%rsi), %ymm147060; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]7061; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm14, %ymm07062; AVX512-FCP-NEXT: vmovdqa64 96(%rdi), %ymm247063; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm24[1,1,2,2]7064; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0],ymm0[1],ymm2[2,3],ymm0[4],ymm2[5],ymm0[6],ymm2[7,8],ymm0[9],ymm2[10,11],ymm0[12],ymm2[13],ymm0[14],ymm2[15]7065; AVX512-FCP-NEXT: vmovdqa 96(%rsi), %xmm27066; AVX512-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7067; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm13 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]7068; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm2, %xmm27069; AVX512-FCP-NEXT: vpbroadcastq 104(%rdi), %xmm37070; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1],xmm2[2,3],xmm3[4],xmm2[5],xmm3[6],xmm2[7]7071; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,1]7072; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm07073; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7074; AVX512-FCP-NEXT: vmovdqa (%rcx), %ymm47075; AVX512-FCP-NEXT: vmovdqa64 (%rdx), %ymm297076; AVX512-FCP-NEXT: vmovdqa64 (%rdi), %ymm317077; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm31[0,1,2,1,4,5,6,5]7078; AVX512-FCP-NEXT: vmovdqa (%rsi), %ymm37079; AVX512-FCP-NEXT: vmovdqu %ymm3, (%rsp) # 32-byte Spill7080; AVX512-FCP-NEXT: vprolq $16, %ymm3, %ymm27081; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0,1],ymm0[2],ymm2[3],ymm0[4],ymm2[5,6],ymm0[7],ymm2[8,9],ymm0[10],ymm2[11],ymm0[12],ymm2[13,14],ymm0[15]7082; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm3, %ymm27083; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm31[1,1,2,2]7084; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13],ymm2[14],ymm3[15]7085; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm2[0,1,2,3],zmm0[2,3,2,3]7086; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7087; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]7088; AVX512-FCP-NEXT: # ymm8 = mem[0,1,0,1]7089; AVX512-FCP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7090; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm4, %ymm07091; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm29[1,1,1,2,5,5,5,6]7092; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]7093; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm27094; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm29[3,0,3,0,7,4,7,4]7095; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]7096; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm28 = zmm2[0,1,2,3],zmm0[2,3,2,3]7097; AVX512-FCP-NEXT: vmovdqa64 64(%rdi), %ymm267098; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm26[0,1,2,1,4,5,6,5]7099; AVX512-FCP-NEXT: vmovdqa 64(%rsi), %ymm57100; AVX512-FCP-NEXT: vprolq $16, %ymm5, %ymm27101; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0,1],ymm0[2],ymm2[3],ymm0[4],ymm2[5,6],ymm0[7],ymm2[8,9],ymm0[10],ymm2[11],ymm0[12],ymm2[13,14],ymm0[15]7102; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm5, %ymm27103; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm26[1,1,2,2]7104; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13],ymm2[14],ymm3[15]7105; AVX512-FCP-NEXT: vmovdqa 64(%rcx), %ymm107106; AVX512-FCP-NEXT: vmovdqa64 64(%rdx), %ymm307107; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm2[0,1,2,3],zmm0[2,3,2,3]7108; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7109; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm10, %ymm07110; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm30[1,1,1,2,5,5,5,6]7111; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]7112; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm10, %ymm27113; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm30[3,0,3,0,7,4,7,4]7114; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]7115; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm19 = zmm2[0,1,2,3],zmm0[2,3,2,3]7116; AVX512-FCP-NEXT: vmovdqa 96(%r8), %ymm27117; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]7118; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm2[0,1,1,1]7119; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm2, %ymm27120; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm4 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]7121; AVX512-FCP-NEXT: vpandn %ymm3, %ymm4, %ymm37122; AVX512-FCP-NEXT: vmovdqa64 %zmm4, %zmm157123; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm3, %zmm217124; AVX512-FCP-NEXT: vmovdqa 32(%rcx), %ymm47125; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm17126; AVX512-FCP-NEXT: vmovdqa 32(%rdx), %ymm37127; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm3[3,0,3,0,7,4,7,4]7128; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]7129; AVX512-FCP-NEXT: vmovdqa 32(%rcx), %xmm97130; AVX512-FCP-NEXT: vpshufb %xmm12, %xmm9, %xmm27131; AVX512-FCP-NEXT: vmovdqa64 %xmm9, %xmm277132; AVX512-FCP-NEXT: vmovdqa 32(%rdx), %xmm117133; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm9 = xmm11[1,2,2,2]7134; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm9[1],xmm2[2],xmm9[3],xmm2[4,5],xmm9[6],xmm2[7]7135; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,0]7136; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm17137; AVX512-FCP-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7138; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %ymm27139; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm67140; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %ymm17141; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm1[1,1,2,2]7142; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm9[0],ymm6[1],ymm9[2,3],ymm6[4],ymm9[5],ymm6[6],ymm9[7,8],ymm6[9],ymm9[10,11],ymm6[12],ymm9[13],ymm6[14],ymm9[15]7143; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %xmm97144; AVX512-FCP-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7145; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm9, %xmm97146; AVX512-FCP-NEXT: vpbroadcastq 40(%rdi), %xmm137147; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0],xmm13[1],xmm9[2,3],xmm13[4],xmm9[5],xmm13[6],xmm9[7]7148; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]7149; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm9, %zmm207150; AVX512-FCP-NEXT: vmovdqa 32(%r8), %ymm67151; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm6[0,1,1,1]7152; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm6, %ymm67153; AVX512-FCP-NEXT: vpandn %ymm9, %ymm15, %ymm97154; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm9, %zmm177155; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm6 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]7156; AVX512-FCP-NEXT: vpandnq 16(%r8){1to4}, %ymm6, %ymm97157; AVX512-FCP-NEXT: vmovdqa (%r8), %ymm137158; AVX512-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7159; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm13, %ymm137160; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm9, %zmm13, %zmm187161; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm12 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]7162; AVX512-FCP-NEXT: # ymm12 = mem[0,1,0,1]7163; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm14, %ymm97164; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm24[2,3,2,3,6,7,6,7]7165; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm9[0],ymm13[1],ymm9[2],ymm13[3],ymm9[4,5],ymm13[6],ymm9[7,8],ymm13[9],ymm9[10],ymm13[11],ymm9[12,13],ymm13[14],ymm9[15]7166; AVX512-FCP-NEXT: vprolq $16, %ymm14, %ymm137167; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm14 = ymm24[0,1,2,1,4,5,6,5]7168; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm14 = ymm13[0,1],ymm14[2],ymm13[3],ymm14[4],ymm13[5,6],ymm14[7],ymm13[8,9],ymm14[10],ymm13[11],ymm14[12],ymm13[13,14],ymm14[15]7169; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm23 = [2,3,2,3,10,11,10,10]7170; AVX512-FCP-NEXT: vpermt2q %zmm9, %zmm23, %zmm147171; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} ymm9 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]7172; AVX512-FCP-NEXT: vpshufb %ymm9, %ymm7, %ymm137173; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm15 = ymm22[3,2,3,3,7,6,7,7]7174; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm15 = ymm13[0],ymm15[1],ymm13[2],ymm15[3,4],ymm13[5,6,7,8],ymm15[9],ymm13[10],ymm15[11,12],ymm13[13,14,15]7175; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm7, %ymm77176; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm22[1,1,1,2,5,5,5,6]7177; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm7[0],ymm13[1],ymm7[2,3],ymm13[4],ymm7[5],ymm13[6],ymm7[7,8],ymm13[9],ymm7[10,11],ymm13[12],ymm7[13],ymm13[14],ymm7[15]7178; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm13 = [2,3,2,3,10,10,11,10]7179; AVX512-FCP-NEXT: vpermt2q %zmm15, %zmm13, %zmm77180; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm24 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]7181; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm14 ^ (zmm24 & (zmm7 ^ zmm14))7182; AVX512-FCP-NEXT: vpbroadcastq 112(%r8), %ymm147183; AVX512-FCP-NEXT: vpbroadcastq 120(%r8), %ymm157184; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm15, %zmm14, %zmm227185; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm22 = zmm22 ^ (zmm6 & (zmm22 ^ zmm7))7186; AVX512-FCP-NEXT: vmovdqa 64(%r8), %ymm77187; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm7, %ymm07188; AVX512-FCP-NEXT: vmovdqa64 %ymm7, %ymm257189; AVX512-FCP-NEXT: vpandnq 80(%r8){1to4}, %ymm6, %ymm77190; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm7, %zmm0, %zmm167191; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm2, %ymm07192; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm15 = ymm1[2,3,2,3,6,7,6,7]7193; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm15[1],ymm0[2],ymm15[3],ymm0[4,5],ymm15[6],ymm0[7,8],ymm15[9],ymm0[10],ymm15[11],ymm0[12,13],ymm15[14],ymm0[15]7194; AVX512-FCP-NEXT: vprolq $16, %ymm2, %ymm27195; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,1,2,1,4,5,6,5]7196; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3],ymm1[4],ymm2[5,6],ymm1[7],ymm2[8,9],ymm1[10],ymm2[11],ymm1[12],ymm2[13,14],ymm1[15]7197; AVX512-FCP-NEXT: vpermt2q %zmm0, %zmm23, %zmm17198; AVX512-FCP-NEXT: vpshufb %ymm9, %ymm4, %ymm07199; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm3[3,2,3,3,7,6,7,7]7200; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2],ymm2[3,4],ymm0[5,6,7,8],ymm2[9],ymm0[10],ymm2[11,12],ymm0[13,14,15]7201; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm4, %ymm27202; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[1,1,1,2,5,5,5,6]7203; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]7204; AVX512-FCP-NEXT: vpermt2q %zmm0, %zmm13, %zmm27205; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm1 ^ (zmm24 & (zmm2 ^ zmm1))7206; AVX512-FCP-NEXT: vpbroadcastq 48(%r8), %ymm07207; AVX512-FCP-NEXT: vpbroadcastq 56(%r8), %ymm17208; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm07209; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm6 & (zmm0 ^ zmm2))7210; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload7211; AVX512-FCP-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload7212; AVX512-FCP-NEXT: # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]7213; AVX512-FCP-NEXT: vpshufb %ymm9, %ymm10, %ymm27214; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm30[3,2,3,3,7,6,7,7]7215; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm2[0],ymm3[1],ymm2[2],ymm3[3,4],ymm2[5,6,7,8],ymm3[9],ymm2[10],ymm3[11,12],ymm2[13,14,15]7216; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]7217; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm1, %xmm17218; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm10 = [2,2,3,2,8,9,8,9]7219; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm10, %zmm47220; AVX512-FCP-NEXT: vmovdqa 96(%rdi), %xmm17221; AVX512-FCP-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload7222; AVX512-FCP-NEXT: # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]7223; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm5, %ymm27224; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm26[2,3,2,3,6,7,6,7]7225; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm2[0],ymm5[1],ymm2[2],ymm5[3],ymm2[4,5],ymm5[6],ymm2[7,8],ymm5[9],ymm2[10],ymm5[11],ymm2[12,13],ymm5[14],ymm2[15]7226; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm5 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]7227; AVX512-FCP-NEXT: vpshufb %xmm5, %xmm1, %xmm17228; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm15 = [2,3,2,2,8,9,8,9]7229; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm15, %zmm137230; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm2 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]7231; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm13 = zmm4 ^ (zmm2 & (zmm13 ^ zmm4))7232; AVX512-FCP-NEXT: vmovdqa64 %xmm27, %xmm17233; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm11[0],xmm1[1],xmm11[1],xmm1[2],xmm11[2],xmm1[3],xmm11[3]7234; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7235; AVX512-FCP-NEXT: vpshufb %ymm9, %ymm4, %ymm47236; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm29[3,2,3,3,7,6,7,7]7237; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm4[0],ymm6[1],ymm4[2],ymm6[3,4],ymm4[5,6,7,8],ymm6[9],ymm4[10],ymm6[11,12],ymm4[13,14,15]7238; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm1, %xmm17239; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm10, %zmm67240; AVX512-FCP-NEXT: vpbroadcastq 88(%r8), %ymm17241; AVX512-FCP-NEXT: vpbroadcastq 96(%r8), %ymm47242; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm1, %zmm17243; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm8 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]7244; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm8 & (zmm1 ^ zmm13))7245; AVX512-FCP-NEXT: vmovdqa 64(%rsi), %xmm47246; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm14 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]7247; AVX512-FCP-NEXT: vpshufb %xmm14, %xmm4, %xmm97248; AVX512-FCP-NEXT: vpbroadcastq 72(%rdi), %xmm107249; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0],xmm10[1],xmm9[2,3],xmm10[4],xmm9[5],xmm10[6],xmm9[7]7250; AVX512-FCP-NEXT: vmovdqa 64(%rdi), %xmm107251; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm10[0],xmm4[0],xmm10[1],xmm4[1],xmm10[2],xmm4[2],xmm10[3],xmm4[3]7252; AVX512-FCP-NEXT: vpshufb %xmm5, %xmm4, %xmm47253; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm4 = zmm4[0,1,0,1],zmm9[0,1,0,1]7254; AVX512-FCP-NEXT: vmovdqa 64(%rcx), %xmm97255; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm7 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]7256; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm9, %xmm107257; AVX512-FCP-NEXT: vmovdqa 64(%rdx), %xmm117258; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm13 = xmm11[1,2,2,2]7259; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0],xmm13[1],xmm10[2],xmm13[3],xmm10[4,5],xmm13[6],xmm10[7]7260; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm9 = xmm9[0],xmm11[0],xmm9[1],xmm11[1],xmm9[2],xmm11[2],xmm9[3],xmm11[3]7261; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm9, %xmm97262; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm11 = [0,1,0,1,8,9,8,8]7263; AVX512-FCP-NEXT: vpermt2q %zmm10, %zmm11, %zmm97264; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm9 ^ (zmm24 & (zmm4 ^ zmm9))7265; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %xmm97266; AVX512-FCP-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm9, %xmm9 # 16-byte Folded Reload7267; AVX512-FCP-NEXT: # xmm9 = xmm9[0],mem[0],xmm9[1],mem[1],xmm9[2],mem[2],xmm9[3],mem[3]7268; AVX512-FCP-NEXT: vmovdqu (%rsp), %ymm10 # 32-byte Reload7269; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm10, %ymm107270; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm12 = ymm31[2,3,2,3,6,7,6,7]7271; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm10[0],ymm12[1],ymm10[2],ymm12[3],ymm10[4,5],ymm12[6],ymm10[7,8],ymm12[9],ymm10[10],ymm12[11],ymm10[12,13],ymm12[14],ymm10[15]7272; AVX512-FCP-NEXT: vpshufb %xmm5, %xmm9, %xmm97273; AVX512-FCP-NEXT: vpermt2q %zmm9, %zmm15, %zmm107274; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm10 = zmm6 ^ (zmm2 & (zmm10 ^ zmm6))7275; AVX512-FCP-NEXT: vpbroadcastq 24(%r8), %ymm67276; AVX512-FCP-NEXT: vpbroadcastq 32(%r8), %ymm97277; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm9, %zmm6, %zmm67278; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (zmm8 & (zmm6 ^ zmm10))7279; AVX512-FCP-NEXT: vmovdqa (%rsi), %xmm87280; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm25[0,1,1,1]7281; AVX512-FCP-NEXT: vpshufb %xmm14, %xmm8, %xmm107282; AVX512-FCP-NEXT: vpbroadcastq 8(%rdi), %xmm127283; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0],xmm12[1],xmm10[2,3],xmm12[4],xmm10[5],xmm12[6],xmm10[7]7284; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm127285; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm12[0],xmm8[0],xmm12[1],xmm8[1],xmm12[2],xmm8[2],xmm12[3],xmm8[3]7286; AVX512-FCP-NEXT: vpshufb %xmm5, %xmm8, %xmm57287; AVX512-FCP-NEXT: vmovdqa (%rcx), %xmm87288; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm8, %xmm127289; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm5[0,1,0,1],zmm10[0,1,0,1]7290; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm107291; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm13 = xmm10[1,2,2,2]7292; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0],xmm13[1],xmm12[2],xmm13[3],xmm12[4,5],xmm13[6],xmm12[7]7293; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm8[0],xmm10[0],xmm8[1],xmm10[1],xmm8[2],xmm10[2],xmm8[3],xmm10[3]7294; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm8, %xmm37295; AVX512-FCP-NEXT: vpermt2q %zmm12, %zmm11, %zmm37296; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm5 = zmm3 ^ (zmm24 & (zmm5 ^ zmm3))7297; AVX512-FCP-NEXT: vpermq $84, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Folded Reload7298; AVX512-FCP-NEXT: # ymm3 = mem[0,1,1,1]7299; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm8 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0]7300; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm10 # 64-byte Reload7301; AVX512-FCP-NEXT: vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm8, %zmm10 # 64-byte Folded Reload7302; AVX512-FCP-NEXT: # zmm10 = mem ^ (zmm8 & (zmm10 ^ mem))7303; AVX512-FCP-NEXT: vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm8, %zmm20 # 64-byte Folded Reload7304; AVX512-FCP-NEXT: # zmm20 = mem ^ (zmm8 & (zmm20 ^ mem))7305; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm7 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]7306; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm21 = zmm21 | (zmm10 & zmm7)7307; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm17 = zmm17 | (zmm20 & zmm7)7308; AVX512-FCP-NEXT: vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm28 # 64-byte Folded Reload7309; AVX512-FCP-NEXT: # zmm28 = mem ^ (zmm2 & (zmm28 ^ mem))7310; AVX512-FCP-NEXT: vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm19 # 64-byte Folded Reload7311; AVX512-FCP-NEXT: # zmm19 = mem ^ (zmm2 & (zmm19 ^ mem))7312; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm2 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]7313; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm18 = zmm18 | (zmm28 & zmm2)7314; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm16 = zmm16 | (zmm19 & zmm2)7315; AVX512-FCP-NEXT: vpbroadcastq 64(%r8), %ymm27316; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm9, %zmm2, %zmm27317; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm8 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]7318; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm8 & (zmm2 ^ zmm4))7319; AVX512-FCP-NEXT: vpbroadcastq (%r8), %ymm47320; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm4, %zmm37321; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (zmm8 & (zmm3 ^ zmm5))7322; AVX512-FCP-NEXT: vmovdqa64 %zmm3, (%r9)7323; AVX512-FCP-NEXT: vmovdqa64 %zmm6, 128(%r9)7324; AVX512-FCP-NEXT: vmovdqa64 %zmm0, 256(%r9)7325; AVX512-FCP-NEXT: vmovdqa64 %zmm2, 320(%r9)7326; AVX512-FCP-NEXT: vmovdqa64 %zmm1, 448(%r9)7327; AVX512-FCP-NEXT: vmovdqa64 %zmm16, 384(%r9)7328; AVX512-FCP-NEXT: vmovdqa64 %zmm22, 576(%r9)7329; AVX512-FCP-NEXT: vmovdqa64 %zmm18, 64(%r9)7330; AVX512-FCP-NEXT: vmovdqa64 %zmm17, 192(%r9)7331; AVX512-FCP-NEXT: vmovdqa64 %zmm21, 512(%r9)7332; AVX512-FCP-NEXT: addq $360, %rsp # imm = 0x1687333; AVX512-FCP-NEXT: vzeroupper7334; AVX512-FCP-NEXT: retq7335;7336; AVX512DQ-LABEL: store_i16_stride5_vf64:7337; AVX512DQ: # %bb.0:7338; AVX512DQ-NEXT: subq $264, %rsp # imm = 0x1087339; AVX512DQ-NEXT: vmovdqa 96(%rcx), %ymm07340; AVX512DQ-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7341; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm1 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]7342; AVX512DQ-NEXT: vpshufb %ymm1, %ymm0, %ymm07343; AVX512DQ-NEXT: vmovdqa64 %ymm1, %ymm197344; AVX512DQ-NEXT: vmovdqa64 96(%rdx), %ymm207345; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm20[3,0,3,0,7,4,7,4]7346; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]7347; AVX512DQ-NEXT: vmovdqa 96(%rcx), %xmm07348; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm8 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]7349; AVX512DQ-NEXT: vpshufb %xmm8, %xmm0, %xmm37350; AVX512DQ-NEXT: vmovdqa 96(%rdx), %xmm27351; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm4 = xmm2[1,2,2,2]7352; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1],xmm3[2],xmm4[3],xmm3[4,5],xmm4[6],xmm3[7]7353; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,0,0]7354; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm3, %zmm17355; AVX512DQ-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7356; AVX512DQ-NEXT: vmovdqa 96(%rsi), %ymm17357; AVX512DQ-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7358; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm12 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]7359; AVX512DQ-NEXT: vpshufb %ymm12, %ymm1, %ymm17360; AVX512DQ-NEXT: vmovdqa 96(%rdi), %ymm147361; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm14[1,1,2,2]7362; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm3[0],ymm1[1],ymm3[2,3],ymm1[4],ymm3[5],ymm1[6],ymm3[7,8],ymm1[9],ymm3[10,11],ymm1[12],ymm3[13],ymm1[14],ymm3[15]7363; AVX512DQ-NEXT: vmovdqa 96(%rsi), %xmm17364; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm9 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]7365; AVX512DQ-NEXT: vpshufb %xmm9, %xmm1, %xmm57366; AVX512DQ-NEXT: vpbroadcastq 104(%rdi), %xmm67367; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm6[1],xmm5[2,3],xmm6[4],xmm5[5],xmm6[6],xmm5[7]7368; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]7369; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm5, %zmm297370; AVX512DQ-NEXT: vmovdqa 96(%r8), %ymm47371; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm3 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]7372; AVX512DQ-NEXT: vpshufb %ymm3, %ymm4, %ymm57373; AVX512DQ-NEXT: vmovdqa64 %ymm3, %ymm227374; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm3 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]7375; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]7376; AVX512DQ-NEXT: vpandn %ymm4, %ymm3, %ymm47377; AVX512DQ-NEXT: vmovdqa64 %zmm3, %zmm217378; AVX512DQ-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm267379; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]7380; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm7 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]7381; AVX512DQ-NEXT: vpshufb %xmm7, %xmm0, %xmm07382; AVX512DQ-NEXT: vmovdqa64 (%rdx), %ymm187383; AVX512DQ-NEXT: vmovdqa64 64(%rdx), %ymm307384; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm30[3,2,3,3,7,6,7,7]7385; AVX512DQ-NEXT: vmovdqa 64(%rcx), %ymm37386; AVX512DQ-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7387; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm4 = ymm3[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]7388; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,3,2,3,6,7,6,7]7389; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm2[1],ymm4[2],ymm2[3,4],ymm4[5,6,7,8],ymm2[9],ymm4[10],ymm2[11,12],ymm4[13,14,15]7390; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,2]7391; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm2[0,1,2,3],zmm0[0,1,0,1]7392; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7393; AVX512DQ-NEXT: vmovdqa 96(%rdi), %xmm07394; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]7395; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]7396; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,5,6]7397; AVX512DQ-NEXT: vmovdqa64 64(%rdi), %ymm177398; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm17[2,3,2,3,6,7,6,7]7399; AVX512DQ-NEXT: vmovdqa 64(%rsi), %ymm157400; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm2 = ymm15[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]7401; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[2,3,2,2,6,7,6,6]7402; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]7403; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,3,2,2]7404; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm23 = zmm1[0,1,2,3],zmm0[0,1,0,1]7405; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm07406; AVX512DQ-NEXT: vmovdqa 64(%rsi), %xmm27407; AVX512DQ-NEXT: vpshufb %xmm9, %xmm2, %xmm17408; AVX512DQ-NEXT: vpbroadcastq 72(%rdi), %xmm47409; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm4 = xmm1[0],xmm4[1],xmm1[2,3],xmm4[4],xmm1[5],xmm4[6],xmm1[7]7410; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm17411; AVX512DQ-NEXT: vmovdqa 64(%rdi), %xmm57412; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3]7413; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]7414; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,5,6]7415; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm2 = zmm2[0,1,0,1],zmm4[0,1,0,1]7416; AVX512DQ-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7417; AVX512DQ-NEXT: vmovdqa 64(%rdx), %xmm27418; AVX512DQ-NEXT: vmovdqa 64(%rcx), %xmm47419; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm13 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3]7420; AVX512DQ-NEXT: vpshufb %xmm8, %xmm4, %xmm47421; AVX512DQ-NEXT: vmovdqa64 %xmm8, %xmm277422; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[1,2,2,2]7423; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0],xmm2[1],xmm4[2],xmm2[3],xmm4[4,5],xmm2[6],xmm4[7]7424; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7425; AVX512DQ-NEXT: vpshufb %xmm9, %xmm0, %xmm27426; AVX512DQ-NEXT: vpbroadcastq 8(%rdi), %xmm47427; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2,3],xmm4[4],xmm2[5],xmm4[6],xmm2[7]7428; AVX512DQ-NEXT: vmovdqa 32(%rcx), %xmm57429; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]7430; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm18[3,2,3,3,7,6,7,7]7431; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]7432; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,5,6]7433; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,0,1],zmm2[0,1,0,1]7434; AVX512DQ-NEXT: vmovdqu64 %zmm0, (%rsp) # 64-byte Spill7435; AVX512DQ-NEXT: vmovdqa (%rcx), %ymm67436; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm0 = ymm6[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]7437; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]7438; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3,4],ymm0[5,6,7,8],ymm1[9],ymm0[10],ymm1[11,12],ymm0[13,14,15]7439; AVX512DQ-NEXT: vmovdqa 32(%rdx), %xmm87440; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,2]7441; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm5[0],xmm8[0],xmm5[1],xmm8[1],xmm5[2],xmm8[2],xmm5[3],xmm8[3]7442; AVX512DQ-NEXT: vpshufb %xmm7, %xmm1, %xmm17443; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm24 = zmm0[0,1,2,3],zmm1[0,1,0,1]7444; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm27445; AVX512DQ-NEXT: vmovdqa (%rsi), %ymm17446; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm4 = ymm1[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]7447; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,3,2,2,6,7,6,6]7448; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm11 = ymm2[2,3,2,3,6,7,6,7]7449; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm11[1],ymm4[2],ymm11[3],ymm4[4,5],ymm11[6],ymm4[7,8],ymm11[9],ymm4[10],ymm11[11],ymm4[12,13],ymm11[14],ymm4[15]7450; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,3,2,2]7451; AVX512DQ-NEXT: vmovdqa 32(%rsi), %xmm117452; AVX512DQ-NEXT: vmovdqa 32(%rdi), %xmm107453; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm10 = xmm10[0],xmm11[0],xmm10[1],xmm11[1],xmm10[2],xmm11[2],xmm10[3],xmm11[3]7454; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm10 = xmm10[0,2,1,3]7455; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,4,5,6]7456; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm25 = zmm4[0,1,2,3],zmm10[0,1,0,1]7457; AVX512DQ-NEXT: vmovdqa64 32(%rdx), %ymm287458; AVX512DQ-NEXT: vmovdqa 32(%rcx), %ymm47459; AVX512DQ-NEXT: vmovdqa64 %ymm19, %ymm07460; AVX512DQ-NEXT: vpshufb %ymm0, %ymm4, %ymm107461; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm3 = ymm28[3,0,3,0,7,4,7,4]7462; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm10[1],ymm3[2],ymm10[3],ymm3[4,5],ymm10[6],ymm3[7,8],ymm10[9],ymm3[10],ymm10[11],ymm3[12,13],ymm10[14],ymm3[15]7463; AVX512DQ-NEXT: vmovdqa64 %xmm27, %xmm07464; AVX512DQ-NEXT: vpshufb %xmm0, %xmm5, %xmm57465; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm8 = xmm8[1,2,2,2]7466; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm8[1],xmm5[2],xmm8[3],xmm5[4,5],xmm8[6],xmm5[7]7467; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,0]7468; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm5, %zmm277469; AVX512DQ-NEXT: vmovdqa64 32(%rdi), %ymm317470; AVX512DQ-NEXT: vmovdqa 32(%rsi), %ymm87471; AVX512DQ-NEXT: vpshufb %ymm12, %ymm8, %ymm37472; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm31[1,1,2,2]7473; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0],ymm3[1],ymm5[2,3],ymm3[4],ymm5[5],ymm3[6],ymm5[7,8],ymm3[9],ymm5[10,11],ymm3[12],ymm5[13],ymm3[14],ymm5[15]7474; AVX512DQ-NEXT: vpshufb %xmm9, %xmm11, %xmm57475; AVX512DQ-NEXT: vpbroadcastq 40(%rdi), %xmm107476; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm10[1],xmm5[2,3],xmm10[4],xmm5[5],xmm10[6],xmm5[7]7477; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]7478; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm5, %zmm167479; AVX512DQ-NEXT: vmovdqa 32(%r8), %ymm37480; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm3[0,1,1,1]7481; AVX512DQ-NEXT: vmovdqa64 %ymm22, %ymm57482; AVX512DQ-NEXT: vpshufb %ymm5, %ymm3, %ymm37483; AVX512DQ-NEXT: vpandnq %ymm10, %ymm21, %ymm107484; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm10, %zmm227485; AVX512DQ-NEXT: vpshufb %xmm7, %xmm13, %xmm117486; AVX512DQ-NEXT: vmovdqa (%rcx), %xmm37487; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm107488; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm9 = xmm3[0],xmm10[0],xmm3[1],xmm10[1],xmm3[2],xmm10[2],xmm3[3],xmm10[3]7489; AVX512DQ-NEXT: vpshufb %xmm7, %xmm9, %xmm97490; AVX512DQ-NEXT: vpshufb %xmm0, %xmm3, %xmm37491; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm7 = xmm10[1,2,2,2]7492; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm10 = xmm3[0],xmm7[1],xmm3[2],xmm7[3],xmm3[4,5],xmm7[6],xmm3[7]7493; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm3 = ymm2[0,1,2,1,4,5,6,5]7494; AVX512DQ-NEXT: vprolq $16, %ymm1, %ymm77495; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm3 = ymm7[0,1],ymm3[2],ymm7[3],ymm3[4],ymm7[5,6],ymm3[7],ymm7[8,9],ymm3[10],ymm7[11],ymm3[12],ymm7[13,14],ymm3[15]7496; AVX512DQ-NEXT: vmovdqa %ymm12, %ymm77497; AVX512DQ-NEXT: vpshufb %ymm12, %ymm1, %ymm07498; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,1,2,2]7499; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]7500; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm21 = zmm0[0,1,2,3],zmm3[2,3,2,3]7501; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]7502; AVX512DQ-NEXT: # ymm3 = mem[0,1,0,1]7503; AVX512DQ-NEXT: vpshufb %ymm3, %ymm6, %ymm07504; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm18[1,1,1,2,5,5,5,6]7505; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]7506; AVX512DQ-NEXT: vmovdqa64 %ymm19, %ymm57507; AVX512DQ-NEXT: vpshufb %ymm5, %ymm6, %ymm17508; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm18[3,0,3,0,7,4,7,4]7509; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]7510; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm18 = zmm1[0,1,2,3],zmm0[2,3,2,3]7511; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm14[0,1,2,1,4,5,6,5]7512; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload7513; AVX512DQ-NEXT: vprolq $16, %ymm2, %ymm17514; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]7515; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm14[2,3,2,3,6,7,6,7]7516; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm2 = ymm2[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]7517; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[2,3,2,2,6,7,6,6]7518; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm12 = ymm2[0],ymm0[1],ymm2[2],ymm0[3],ymm2[4,5],ymm0[6],ymm2[7,8],ymm0[9],ymm2[10],ymm0[11],ymm2[12,13],ymm0[14],ymm2[15]7519; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload7520; AVX512DQ-NEXT: vpshufb %ymm3, %ymm0, %ymm137521; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm20[1,1,1,2,5,5,5,6]7522; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0],ymm2[1],ymm13[2,3],ymm2[4],ymm13[5],ymm2[6],ymm13[7,8],ymm2[9],ymm13[10,11],ymm2[12],ymm13[13],ymm2[14],ymm13[15]7523; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]7524; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]7525; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm20[3,2,3,3,7,6,7,7]7526; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2],ymm2[3,4],ymm0[5,6,7,8],ymm2[9],ymm0[10],ymm2[11,12],ymm0[13,14,15]7527; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm17[0,1,2,1,4,5,6,5]7528; AVX512DQ-NEXT: vprolq $16, %ymm15, %ymm147529; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm14[0,1],ymm2[2],ymm14[3],ymm2[4],ymm14[5,6],ymm2[7],ymm14[8,9],ymm2[10],ymm14[11],ymm2[12],ymm14[13,14],ymm2[15]7530; AVX512DQ-NEXT: vpshufb %ymm7, %ymm15, %ymm67531; AVX512DQ-NEXT: vpermq {{.*#+}} ymm14 = ymm17[1,1,2,2]7532; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm6 = ymm14[0],ymm6[1],ymm14[2,3],ymm6[4],ymm14[5],ymm6[6],ymm14[7,8],ymm6[9],ymm14[10,11],ymm6[12],ymm14[13],ymm6[14],ymm14[15]7533; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm20 = zmm6[0,1,2,3],zmm2[2,3,2,3]7534; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload7535; AVX512DQ-NEXT: vpshufb %ymm3, %ymm7, %ymm27536; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm6 = ymm30[1,1,1,2,5,5,5,6]7537; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm6[1],ymm2[2,3],ymm6[4],ymm2[5],ymm6[6],ymm2[7,8],ymm6[9],ymm2[10,11],ymm6[12],ymm2[13],ymm6[14],ymm2[15]7538; AVX512DQ-NEXT: vpshufb %ymm5, %ymm7, %ymm67539; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm14 = ymm30[3,0,3,0,7,4,7,4]7540; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm6 = ymm14[0],ymm6[1],ymm14[2],ymm6[3],ymm14[4,5],ymm6[6],ymm14[7,8],ymm6[9],ymm14[10],ymm6[11],ymm14[12,13],ymm6[14],ymm14[15]7541; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm7 = zmm6[0,1,2,3],zmm2[2,3,2,3]7542; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm6 = ymm31[0,1,2,1,4,5,6,5]7543; AVX512DQ-NEXT: vprolq $16, %ymm8, %ymm147544; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm6 = ymm14[0,1],ymm6[2],ymm14[3],ymm6[4],ymm14[5,6],ymm6[7],ymm14[8,9],ymm6[10],ymm14[11],ymm6[12],ymm14[13,14],ymm6[15]7545; AVX512DQ-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,1,0,1]7546; AVX512DQ-NEXT: vpermq $4, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload7547; AVX512DQ-NEXT: # ymm14 = mem[0,1,0,0]7548; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]7549; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,1,0,0]7550; AVX512DQ-NEXT: vpermq {{.*#+}} ymm15 = ymm1[2,3,2,3]7551; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,3,2,2]7552; AVX512DQ-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,3,2,3]7553; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm0[2,2,3,2]7554; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,3,2,3]7555; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm31[2,3,2,3,6,7,6,7]7556; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm8 = ymm8[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]7557; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[2,3,2,2,6,7,6,6]7558; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm8[0],ymm1[1],ymm8[2],ymm1[3],ymm8[4,5],ymm1[6],ymm8[7,8],ymm1[9],ymm8[10],ymm1[11],ymm8[12,13],ymm1[14],ymm8[15]7559; AVX512DQ-NEXT: vpermq {{.*#+}} ymm31 = ymm1[2,3,2,2]7560; AVX512DQ-NEXT: vpshufb %ymm3, %ymm4, %ymm17561; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm3 = ymm28[1,1,1,2,5,5,5,6]7562; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm3[1],ymm1[2,3],ymm3[4],ymm1[5],ymm3[6],ymm1[7,8],ymm3[9],ymm1[10,11],ymm3[12],ymm1[13],ymm3[14],ymm1[15]7563; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm1[2,3,2,3]7564; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm28[3,2,3,3,7,6,7,7]7565; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]7566; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,3,2,3,6,7,6,7]7567; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm1[1],ymm4[2],ymm1[3,4],ymm4[5,6,7,8],ymm1[9],ymm4[10],ymm1[11,12],ymm4[13,14,15]7568; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm28 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0]7569; AVX512DQ-NEXT: vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm28, %zmm29 # 64-byte Folded Reload7570; AVX512DQ-NEXT: # zmm29 = mem ^ (zmm28 & (zmm29 ^ mem))7571; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm30 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]7572; AVX512DQ-NEXT: vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm30, %zmm23 # 64-byte Folded Reload7573; AVX512DQ-NEXT: # zmm23 = mem ^ (zmm30 & (zmm23 ^ mem))7574; AVX512DQ-NEXT: vpbroadcastq 88(%r8), %ymm17575; AVX512DQ-NEXT: vpbroadcastq 96(%r8), %ymm197576; AVX512DQ-NEXT: vinserti64x4 $1, %ymm19, %zmm1, %zmm27577; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm19 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]7578; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm19 & (zmm2 ^ zmm23))7579; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm25 = zmm24 ^ (zmm30 & (zmm25 ^ zmm24))7580; AVX512DQ-NEXT: vpbroadcastq 24(%r8), %ymm177581; AVX512DQ-NEXT: vpbroadcastq 32(%r8), %ymm237582; AVX512DQ-NEXT: vinserti64x4 $1, %ymm23, %zmm17, %zmm177583; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,3,2]7584; AVX512DQ-NEXT: vmovdqa (%r8), %ymm07585; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm17 = zmm17 ^ (zmm19 & (zmm17 ^ zmm25))7586; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm16 = zmm27 ^ (zmm28 & (zmm16 ^ zmm27))7587; AVX512DQ-NEXT: vpermq {{.*#+}} ymm19 = ymm0[0,1,1,1]7588; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm23 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]7589; AVX512DQ-NEXT: vpandnq 16(%r8){1to4}, %ymm23, %ymm257590; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm1 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]7591; AVX512DQ-NEXT: vpshufb %ymm1, %ymm0, %ymm07592; AVX512DQ-NEXT: vinserti64x4 $1, %ymm25, %zmm0, %zmm07593; AVX512DQ-NEXT: vmovdqa 64(%r8), %ymm87594; AVX512DQ-NEXT: vpermq {{.*#+}} ymm25 = ymm8[0,1,1,1]7595; AVX512DQ-NEXT: vpshufb %ymm1, %ymm8, %ymm87596; AVX512DQ-NEXT: vpandnq 80(%r8){1to4}, %ymm23, %ymm277597; AVX512DQ-NEXT: vinserti64x4 $1, %ymm27, %zmm8, %zmm87598; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm1 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]7599; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm26 = zmm26 | (zmm29 & zmm1)7600; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm22 = zmm22 | (zmm16 & zmm1)7601; AVX512DQ-NEXT: vinserti64x4 $1, %ymm14, %zmm11, %zmm117602; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm14 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]7603; AVX512DQ-NEXT: vpternlogq $184, {{[-0-9]+}}(%r{{[sb]}}p), %zmm14, %zmm11 # 64-byte Folded Reload7604; AVX512DQ-NEXT: # zmm11 = zmm11 ^ (zmm14 & (zmm11 ^ mem))7605; AVX512DQ-NEXT: vpbroadcastq 64(%r8), %ymm167606; AVX512DQ-NEXT: vinserti64x4 $1, %ymm25, %zmm16, %zmm167607; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm24 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]7608; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm16 = zmm16 ^ (zmm24 & (zmm16 ^ zmm11))7609; AVX512DQ-NEXT: vinserti64x4 $1, %ymm10, %zmm9, %zmm97610; AVX512DQ-NEXT: vpternlogq $184, (%rsp), %zmm14, %zmm9 # 64-byte Folded Reload7611; AVX512DQ-NEXT: # zmm9 = zmm9 ^ (zmm14 & (zmm9 ^ mem))7612; AVX512DQ-NEXT: vpbroadcastq (%r8), %ymm107613; AVX512DQ-NEXT: vinserti64x4 $1, %ymm19, %zmm10, %zmm107614; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm24 & (zmm10 ^ zmm9))7615; AVX512DQ-NEXT: vinserti64x4 $1, %ymm12, %zmm15, %zmm97616; AVX512DQ-NEXT: vinserti64x4 $1, %ymm5, %zmm13, %zmm57617; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm5 = zmm9 ^ (zmm14 & (zmm5 ^ zmm9))7618; AVX512DQ-NEXT: vpbroadcastq 112(%r8), %ymm97619; AVX512DQ-NEXT: vpbroadcastq 120(%r8), %ymm117620; AVX512DQ-NEXT: vinserti64x4 $1, %ymm11, %zmm9, %zmm97621; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm9 = zmm9 ^ (zmm23 & (zmm9 ^ zmm5))7622; AVX512DQ-NEXT: vinserti64x4 $1, %ymm31, %zmm6, %zmm57623; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm37624; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm3 = zmm5 ^ (zmm14 & (zmm3 ^ zmm5))7625; AVX512DQ-NEXT: vpbroadcastq 48(%r8), %ymm47626; AVX512DQ-NEXT: vpbroadcastq 56(%r8), %ymm57627; AVX512DQ-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm47628; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (zmm23 & (zmm4 ^ zmm3))7629; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm18 = zmm21 ^ (zmm30 & (zmm18 ^ zmm21))7630; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm7 = zmm20 ^ (zmm30 & (zmm7 ^ zmm20))7631; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm3 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]7632; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 | (zmm18 & zmm3)7633; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm7 & zmm3)7634; AVX512DQ-NEXT: vmovdqa64 %zmm8, 384(%r9)7635; AVX512DQ-NEXT: vmovdqa64 %zmm0, 64(%r9)7636; AVX512DQ-NEXT: vmovdqa64 %zmm4, 256(%r9)7637; AVX512DQ-NEXT: vmovdqa64 %zmm9, 576(%r9)7638; AVX512DQ-NEXT: vmovdqa64 %zmm10, (%r9)7639; AVX512DQ-NEXT: vmovdqa64 %zmm22, 192(%r9)7640; AVX512DQ-NEXT: vmovdqa64 %zmm17, 128(%r9)7641; AVX512DQ-NEXT: vmovdqa64 %zmm16, 320(%r9)7642; AVX512DQ-NEXT: vmovdqa64 %zmm2, 448(%r9)7643; AVX512DQ-NEXT: vmovdqa64 %zmm26, 512(%r9)7644; AVX512DQ-NEXT: addq $264, %rsp # imm = 0x1087645; AVX512DQ-NEXT: vzeroupper7646; AVX512DQ-NEXT: retq7647;7648; AVX512DQ-FCP-LABEL: store_i16_stride5_vf64:7649; AVX512DQ-FCP: # %bb.0:7650; AVX512DQ-FCP-NEXT: subq $360, %rsp # imm = 0x1687651; AVX512DQ-FCP-NEXT: vmovdqa 96(%rcx), %ymm77652; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]7653; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm7, %ymm07654; AVX512DQ-FCP-NEXT: vmovdqa64 96(%rdx), %ymm227655; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm22[3,0,3,0,7,4,7,4]7656; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0],ymm0[1],ymm2[2],ymm0[3],ymm2[4,5],ymm0[6],ymm2[7,8],ymm0[9],ymm2[10],ymm0[11],ymm2[12,13],ymm0[14],ymm2[15]7657; AVX512DQ-FCP-NEXT: vmovdqa 96(%rcx), %xmm27658; AVX512DQ-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7659; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm12 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]7660; AVX512DQ-FCP-NEXT: vpshufb %xmm12, %xmm2, %xmm27661; AVX512DQ-FCP-NEXT: vmovdqa 96(%rdx), %xmm37662; AVX512DQ-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7663; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[1,2,2,2]7664; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1],xmm2[2],xmm3[3],xmm2[4,5],xmm3[6],xmm2[7]7665; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,0]7666; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm07667; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7668; AVX512DQ-FCP-NEXT: vmovdqa 96(%rsi), %ymm147669; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]7670; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm14, %ymm07671; AVX512DQ-FCP-NEXT: vmovdqa64 96(%rdi), %ymm247672; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm24[1,1,2,2]7673; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0],ymm0[1],ymm2[2,3],ymm0[4],ymm2[5],ymm0[6],ymm2[7,8],ymm0[9],ymm2[10,11],ymm0[12],ymm2[13],ymm0[14],ymm2[15]7674; AVX512DQ-FCP-NEXT: vmovdqa 96(%rsi), %xmm27675; AVX512DQ-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7676; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm13 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]7677; AVX512DQ-FCP-NEXT: vpshufb %xmm13, %xmm2, %xmm27678; AVX512DQ-FCP-NEXT: vpbroadcastq 104(%rdi), %xmm37679; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1],xmm2[2,3],xmm3[4],xmm2[5],xmm3[6],xmm2[7]7680; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,1]7681; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm07682; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7683; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %ymm47684; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdx), %ymm297685; AVX512DQ-FCP-NEXT: vmovdqa64 (%rdi), %ymm317686; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm31[0,1,2,1,4,5,6,5]7687; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %ymm37688; AVX512DQ-FCP-NEXT: vmovdqu %ymm3, (%rsp) # 32-byte Spill7689; AVX512DQ-FCP-NEXT: vprolq $16, %ymm3, %ymm27690; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0,1],ymm0[2],ymm2[3],ymm0[4],ymm2[5,6],ymm0[7],ymm2[8,9],ymm0[10],ymm2[11],ymm0[12],ymm2[13,14],ymm0[15]7691; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm3, %ymm27692; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm31[1,1,2,2]7693; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13],ymm2[14],ymm3[15]7694; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm2[0,1,2,3],zmm0[2,3,2,3]7695; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7696; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]7697; AVX512DQ-FCP-NEXT: # ymm8 = mem[0,1,0,1]7698; AVX512DQ-FCP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7699; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm4, %ymm07700; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm29[1,1,1,2,5,5,5,6]7701; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]7702; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm27703; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm29[3,0,3,0,7,4,7,4]7704; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]7705; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm28 = zmm2[0,1,2,3],zmm0[2,3,2,3]7706; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdi), %ymm267707; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm26[0,1,2,1,4,5,6,5]7708; AVX512DQ-FCP-NEXT: vmovdqa 64(%rsi), %ymm57709; AVX512DQ-FCP-NEXT: vprolq $16, %ymm5, %ymm27710; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0,1],ymm0[2],ymm2[3],ymm0[4],ymm2[5,6],ymm0[7],ymm2[8,9],ymm0[10],ymm2[11],ymm0[12],ymm2[13,14],ymm0[15]7711; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm5, %ymm27712; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm26[1,1,2,2]7713; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13],ymm2[14],ymm3[15]7714; AVX512DQ-FCP-NEXT: vmovdqa 64(%rcx), %ymm107715; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rdx), %ymm307716; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm2[0,1,2,3],zmm0[2,3,2,3]7717; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7718; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm10, %ymm07719; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm30[1,1,1,2,5,5,5,6]7720; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]7721; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm10, %ymm27722; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm30[3,0,3,0,7,4,7,4]7723; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]7724; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm19 = zmm2[0,1,2,3],zmm0[2,3,2,3]7725; AVX512DQ-FCP-NEXT: vmovdqa 96(%r8), %ymm27726; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]7727; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm2[0,1,1,1]7728; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm2, %ymm27729; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm4 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]7730; AVX512DQ-FCP-NEXT: vpandn %ymm3, %ymm4, %ymm37731; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, %zmm157732; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm3, %zmm217733; AVX512DQ-FCP-NEXT: vmovdqa 32(%rcx), %ymm47734; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm17735; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdx), %ymm37736; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm3[3,0,3,0,7,4,7,4]7737; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]7738; AVX512DQ-FCP-NEXT: vmovdqa 32(%rcx), %xmm97739; AVX512DQ-FCP-NEXT: vpshufb %xmm12, %xmm9, %xmm27740; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm9, %xmm277741; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdx), %xmm117742; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm9 = xmm11[1,2,2,2]7743; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm9[1],xmm2[2],xmm9[3],xmm2[4,5],xmm9[6],xmm2[7]7744; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,0,0]7745; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm17746; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7747; AVX512DQ-FCP-NEXT: vmovdqa 32(%rsi), %ymm27748; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm67749; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %ymm17750; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm1[1,1,2,2]7751; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm9[0],ymm6[1],ymm9[2,3],ymm6[4],ymm9[5],ymm6[6],ymm9[7,8],ymm6[9],ymm9[10,11],ymm6[12],ymm9[13],ymm6[14],ymm9[15]7752; AVX512DQ-FCP-NEXT: vmovdqa 32(%rsi), %xmm97753; AVX512DQ-FCP-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7754; AVX512DQ-FCP-NEXT: vpshufb %xmm13, %xmm9, %xmm97755; AVX512DQ-FCP-NEXT: vpbroadcastq 40(%rdi), %xmm137756; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0],xmm13[1],xmm9[2,3],xmm13[4],xmm9[5],xmm13[6],xmm9[7]7757; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]7758; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm9, %zmm207759; AVX512DQ-FCP-NEXT: vmovdqa 32(%r8), %ymm67760; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm6[0,1,1,1]7761; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm6, %ymm67762; AVX512DQ-FCP-NEXT: vpandn %ymm9, %ymm15, %ymm97763; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm9, %zmm177764; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm6 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]7765; AVX512DQ-FCP-NEXT: vpandnq 16(%r8){1to4}, %ymm6, %ymm97766; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %ymm137767; AVX512DQ-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7768; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm13, %ymm137769; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm9, %zmm13, %zmm187770; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm12 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]7771; AVX512DQ-FCP-NEXT: # ymm12 = mem[0,1,0,1]7772; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm14, %ymm97773; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm24[2,3,2,3,6,7,6,7]7774; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm9[0],ymm13[1],ymm9[2],ymm13[3],ymm9[4,5],ymm13[6],ymm9[7,8],ymm13[9],ymm9[10],ymm13[11],ymm9[12,13],ymm13[14],ymm9[15]7775; AVX512DQ-FCP-NEXT: vprolq $16, %ymm14, %ymm137776; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm14 = ymm24[0,1,2,1,4,5,6,5]7777; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm14 = ymm13[0,1],ymm14[2],ymm13[3],ymm14[4],ymm13[5,6],ymm14[7],ymm13[8,9],ymm14[10],ymm13[11],ymm14[12],ymm13[13,14],ymm14[15]7778; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm23 = [2,3,2,3,10,11,10,10]7779; AVX512DQ-FCP-NEXT: vpermt2q %zmm9, %zmm23, %zmm147780; AVX512DQ-FCP-NEXT: vpbroadcastq {{.*#+}} ymm9 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]7781; AVX512DQ-FCP-NEXT: vpshufb %ymm9, %ymm7, %ymm137782; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm15 = ymm22[3,2,3,3,7,6,7,7]7783; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm15 = ymm13[0],ymm15[1],ymm13[2],ymm15[3,4],ymm13[5,6,7,8],ymm15[9],ymm13[10],ymm15[11,12],ymm13[13,14,15]7784; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm7, %ymm77785; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm22[1,1,1,2,5,5,5,6]7786; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm7[0],ymm13[1],ymm7[2,3],ymm13[4],ymm7[5],ymm13[6],ymm7[7,8],ymm13[9],ymm7[10,11],ymm13[12],ymm7[13],ymm13[14],ymm7[15]7787; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm13 = [2,3,2,3,10,10,11,10]7788; AVX512DQ-FCP-NEXT: vpermt2q %zmm15, %zmm13, %zmm77789; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm24 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]7790; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm14 ^ (zmm24 & (zmm7 ^ zmm14))7791; AVX512DQ-FCP-NEXT: vpbroadcastq 112(%r8), %ymm147792; AVX512DQ-FCP-NEXT: vpbroadcastq 120(%r8), %ymm157793; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm15, %zmm14, %zmm227794; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm22 = zmm22 ^ (zmm6 & (zmm22 ^ zmm7))7795; AVX512DQ-FCP-NEXT: vmovdqa 64(%r8), %ymm77796; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm7, %ymm07797; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm7, %ymm257798; AVX512DQ-FCP-NEXT: vpandnq 80(%r8){1to4}, %ymm6, %ymm77799; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm7, %zmm0, %zmm167800; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm2, %ymm07801; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm15 = ymm1[2,3,2,3,6,7,6,7]7802; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm15[1],ymm0[2],ymm15[3],ymm0[4,5],ymm15[6],ymm0[7,8],ymm15[9],ymm0[10],ymm15[11],ymm0[12,13],ymm15[14],ymm0[15]7803; AVX512DQ-FCP-NEXT: vprolq $16, %ymm2, %ymm27804; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,1,2,1,4,5,6,5]7805; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3],ymm1[4],ymm2[5,6],ymm1[7],ymm2[8,9],ymm1[10],ymm2[11],ymm1[12],ymm2[13,14],ymm1[15]7806; AVX512DQ-FCP-NEXT: vpermt2q %zmm0, %zmm23, %zmm17807; AVX512DQ-FCP-NEXT: vpshufb %ymm9, %ymm4, %ymm07808; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm3[3,2,3,3,7,6,7,7]7809; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2],ymm2[3,4],ymm0[5,6,7,8],ymm2[9],ymm0[10],ymm2[11,12],ymm0[13,14,15]7810; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm4, %ymm27811; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[1,1,1,2,5,5,5,6]7812; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]7813; AVX512DQ-FCP-NEXT: vpermt2q %zmm0, %zmm13, %zmm27814; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm1 ^ (zmm24 & (zmm2 ^ zmm1))7815; AVX512DQ-FCP-NEXT: vpbroadcastq 48(%r8), %ymm07816; AVX512DQ-FCP-NEXT: vpbroadcastq 56(%r8), %ymm17817; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm07818; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm6 & (zmm0 ^ zmm2))7819; AVX512DQ-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload7820; AVX512DQ-FCP-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload7821; AVX512DQ-FCP-NEXT: # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]7822; AVX512DQ-FCP-NEXT: vpshufb %ymm9, %ymm10, %ymm27823; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm30[3,2,3,3,7,6,7,7]7824; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm2[0],ymm3[1],ymm2[2],ymm3[3,4],ymm2[5,6,7,8],ymm3[9],ymm2[10],ymm3[11,12],ymm2[13,14,15]7825; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]7826; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm1, %xmm17827; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm10 = [2,2,3,2,8,9,8,9]7828; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm10, %zmm47829; AVX512DQ-FCP-NEXT: vmovdqa 96(%rdi), %xmm17830; AVX512DQ-FCP-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload7831; AVX512DQ-FCP-NEXT: # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]7832; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm5, %ymm27833; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm26[2,3,2,3,6,7,6,7]7834; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm2[0],ymm5[1],ymm2[2],ymm5[3],ymm2[4,5],ymm5[6],ymm2[7,8],ymm5[9],ymm2[10],ymm5[11],ymm2[12,13],ymm5[14],ymm2[15]7835; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm5 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]7836; AVX512DQ-FCP-NEXT: vpshufb %xmm5, %xmm1, %xmm17837; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm15 = [2,3,2,2,8,9,8,9]7838; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm15, %zmm137839; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm2 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]7840; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm13 = zmm4 ^ (zmm2 & (zmm13 ^ zmm4))7841; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm27, %xmm17842; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm11[0],xmm1[1],xmm11[1],xmm1[2],xmm11[2],xmm1[3],xmm11[3]7843; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7844; AVX512DQ-FCP-NEXT: vpshufb %ymm9, %ymm4, %ymm47845; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm29[3,2,3,3,7,6,7,7]7846; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm4[0],ymm6[1],ymm4[2],ymm6[3,4],ymm4[5,6,7,8],ymm6[9],ymm4[10],ymm6[11,12],ymm4[13,14,15]7847; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm1, %xmm17848; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm10, %zmm67849; AVX512DQ-FCP-NEXT: vpbroadcastq 88(%r8), %ymm17850; AVX512DQ-FCP-NEXT: vpbroadcastq 96(%r8), %ymm47851; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm1, %zmm17852; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm8 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]7853; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm8 & (zmm1 ^ zmm13))7854; AVX512DQ-FCP-NEXT: vmovdqa 64(%rsi), %xmm47855; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm14 = [6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]7856; AVX512DQ-FCP-NEXT: vpshufb %xmm14, %xmm4, %xmm97857; AVX512DQ-FCP-NEXT: vpbroadcastq 72(%rdi), %xmm107858; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0],xmm10[1],xmm9[2,3],xmm10[4],xmm9[5],xmm10[6],xmm9[7]7859; AVX512DQ-FCP-NEXT: vmovdqa 64(%rdi), %xmm107860; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm10[0],xmm4[0],xmm10[1],xmm4[1],xmm10[2],xmm4[2],xmm10[3],xmm4[3]7861; AVX512DQ-FCP-NEXT: vpshufb %xmm5, %xmm4, %xmm47862; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm4 = zmm4[0,1,0,1],zmm9[0,1,0,1]7863; AVX512DQ-FCP-NEXT: vmovdqa 64(%rcx), %xmm97864; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm7 = [10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]7865; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm9, %xmm107866; AVX512DQ-FCP-NEXT: vmovdqa 64(%rdx), %xmm117867; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm13 = xmm11[1,2,2,2]7868; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0],xmm13[1],xmm10[2],xmm13[3],xmm10[4,5],xmm13[6],xmm10[7]7869; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm9 = xmm9[0],xmm11[0],xmm9[1],xmm11[1],xmm9[2],xmm11[2],xmm9[3],xmm11[3]7870; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm9, %xmm97871; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm11 = [0,1,0,1,8,9,8,8]7872; AVX512DQ-FCP-NEXT: vpermt2q %zmm10, %zmm11, %zmm97873; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm9 ^ (zmm24 & (zmm4 ^ zmm9))7874; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %xmm97875; AVX512DQ-FCP-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm9, %xmm9 # 16-byte Folded Reload7876; AVX512DQ-FCP-NEXT: # xmm9 = xmm9[0],mem[0],xmm9[1],mem[1],xmm9[2],mem[2],xmm9[3],mem[3]7877; AVX512DQ-FCP-NEXT: vmovdqu (%rsp), %ymm10 # 32-byte Reload7878; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm10, %ymm107879; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm12 = ymm31[2,3,2,3,6,7,6,7]7880; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm10[0],ymm12[1],ymm10[2],ymm12[3],ymm10[4,5],ymm12[6],ymm10[7,8],ymm12[9],ymm10[10],ymm12[11],ymm10[12,13],ymm12[14],ymm10[15]7881; AVX512DQ-FCP-NEXT: vpshufb %xmm5, %xmm9, %xmm97882; AVX512DQ-FCP-NEXT: vpermt2q %zmm9, %zmm15, %zmm107883; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm10 = zmm6 ^ (zmm2 & (zmm10 ^ zmm6))7884; AVX512DQ-FCP-NEXT: vpbroadcastq 24(%r8), %ymm67885; AVX512DQ-FCP-NEXT: vpbroadcastq 32(%r8), %ymm97886; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm9, %zmm6, %zmm67887; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (zmm8 & (zmm6 ^ zmm10))7888; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %xmm87889; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm25[0,1,1,1]7890; AVX512DQ-FCP-NEXT: vpshufb %xmm14, %xmm8, %xmm107891; AVX512DQ-FCP-NEXT: vpbroadcastq 8(%rdi), %xmm127892; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0],xmm12[1],xmm10[2,3],xmm12[4],xmm10[5],xmm12[6],xmm10[7]7893; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm127894; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm12[0],xmm8[0],xmm12[1],xmm8[1],xmm12[2],xmm8[2],xmm12[3],xmm8[3]7895; AVX512DQ-FCP-NEXT: vpshufb %xmm5, %xmm8, %xmm57896; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %xmm87897; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm8, %xmm127898; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm5[0,1,0,1],zmm10[0,1,0,1]7899; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm107900; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm13 = xmm10[1,2,2,2]7901; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0],xmm13[1],xmm12[2],xmm13[3],xmm12[4,5],xmm13[6],xmm12[7]7902; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm8[0],xmm10[0],xmm8[1],xmm10[1],xmm8[2],xmm10[2],xmm8[3],xmm10[3]7903; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm8, %xmm37904; AVX512DQ-FCP-NEXT: vpermt2q %zmm12, %zmm11, %zmm37905; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm5 = zmm3 ^ (zmm24 & (zmm5 ^ zmm3))7906; AVX512DQ-FCP-NEXT: vpermq $84, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Folded Reload7907; AVX512DQ-FCP-NEXT: # ymm3 = mem[0,1,1,1]7908; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm8 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0]7909; AVX512DQ-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm10 # 64-byte Reload7910; AVX512DQ-FCP-NEXT: vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm8, %zmm10 # 64-byte Folded Reload7911; AVX512DQ-FCP-NEXT: # zmm10 = mem ^ (zmm8 & (zmm10 ^ mem))7912; AVX512DQ-FCP-NEXT: vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm8, %zmm20 # 64-byte Folded Reload7913; AVX512DQ-FCP-NEXT: # zmm20 = mem ^ (zmm8 & (zmm20 ^ mem))7914; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm7 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]7915; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm21 = zmm21 | (zmm10 & zmm7)7916; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm17 = zmm17 | (zmm20 & zmm7)7917; AVX512DQ-FCP-NEXT: vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm28 # 64-byte Folded Reload7918; AVX512DQ-FCP-NEXT: # zmm28 = mem ^ (zmm2 & (zmm28 ^ mem))7919; AVX512DQ-FCP-NEXT: vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm19 # 64-byte Folded Reload7920; AVX512DQ-FCP-NEXT: # zmm19 = mem ^ (zmm2 & (zmm19 ^ mem))7921; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm2 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]7922; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm18 = zmm18 | (zmm28 & zmm2)7923; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm16 = zmm16 | (zmm19 & zmm2)7924; AVX512DQ-FCP-NEXT: vpbroadcastq 64(%r8), %ymm27925; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm9, %zmm2, %zmm27926; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm8 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]7927; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm8 & (zmm2 ^ zmm4))7928; AVX512DQ-FCP-NEXT: vpbroadcastq (%r8), %ymm47929; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm4, %zmm37930; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (zmm8 & (zmm3 ^ zmm5))7931; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, (%r9)7932; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm6, 128(%r9)7933; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, 256(%r9)7934; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, 320(%r9)7935; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, 448(%r9)7936; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm16, 384(%r9)7937; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm22, 576(%r9)7938; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm18, 64(%r9)7939; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm17, 192(%r9)7940; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm21, 512(%r9)7941; AVX512DQ-FCP-NEXT: addq $360, %rsp # imm = 0x1687942; AVX512DQ-FCP-NEXT: vzeroupper7943; AVX512DQ-FCP-NEXT: retq7944;7945; AVX512BW-LABEL: store_i16_stride5_vf64:7946; AVX512BW: # %bb.0:7947; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm17948; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm07949; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm47950; AVX512BW-NEXT: vmovdqa64 64(%rsi), %zmm117951; AVX512BW-NEXT: vmovdqa64 (%rdx), %zmm27952; AVX512BW-NEXT: vmovdqa64 64(%rdx), %zmm127953; AVX512BW-NEXT: vmovdqa64 (%rcx), %zmm67954; AVX512BW-NEXT: vmovdqa64 64(%rcx), %zmm157955; AVX512BW-NEXT: vmovdqa64 (%r8), %zmm57956; AVX512BW-NEXT: vmovdqa64 64(%r8), %zmm137957; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm16 = [0,0,0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0]7958; AVX512BW-NEXT: vmovdqa64 %zmm2, %zmm77959; AVX512BW-NEXT: vpermt2w %zmm6, %zmm16, %zmm77960; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm17 = [0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0,6,38]7961; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm37962; AVX512BW-NEXT: vpermt2w %zmm4, %zmm17, %zmm37963; AVX512BW-NEXT: movl $415641996, %eax # imm = 0x18C6318C7964; AVX512BW-NEXT: kmovd %eax, %k17965; AVX512BW-NEXT: vmovdqu16 %zmm7, %zmm3 {%k1}7966; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm18 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]7967; AVX512BW-NEXT: vpermt2w %zmm5, %zmm18, %zmm37968; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm19 = [0,0,26,58,0,0,0,27,59,0,0,0,28,60,0,0,0,29,61,0,0,0,30,62,0,0,0,31,63,0,0,0]7969; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm97970; AVX512BW-NEXT: vpermt2w %zmm11, %zmm19, %zmm97971; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm8 = [25,0,0,0,58,26,0,0,0,59,27,0,0,0,60,28,0,0,0,61,29,0,0,0,62,30,0,0,0,63,31,0]7972; AVX512BW-NEXT: vmovdqa64 %zmm15, %zmm77973; AVX512BW-NEXT: vpermt2w %zmm12, %zmm8, %zmm77974; AVX512BW-NEXT: vmovdqu16 %zmm9, %zmm7 {%k1}7975; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm20 = [0,57,2,3,4,5,58,7,8,9,10,59,12,13,14,15,60,17,18,19,20,61,22,23,24,25,62,27,28,29,30,63]7976; AVX512BW-NEXT: vpermt2w %zmm13, %zmm20, %zmm77977; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm21 = [0,19,51,0,0,0,20,52,0,0,0,21,53,0,0,0,22,54,0,0,0,23,55,0,0,0,24,56,0,0,0,25]7978; AVX512BW-NEXT: vmovdqa64 %zmm12, %zmm147979; AVX512BW-NEXT: vpermt2w %zmm15, %zmm21, %zmm147980; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm10 = [19,0,0,0,52,20,0,0,0,53,21,0,0,0,54,22,0,0,0,55,23,0,0,0,56,24,0,0,0,57,25,0]7981; AVX512BW-NEXT: vmovdqa64 %zmm11, %zmm97982; AVX512BW-NEXT: vpermt2w %zmm0, %zmm10, %zmm97983; AVX512BW-NEXT: movl $-1939662650, %eax # imm = 0x8C6318C67984; AVX512BW-NEXT: kmovd %eax, %k37985; AVX512BW-NEXT: vmovdqu16 %zmm14, %zmm9 {%k3}7986; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm22 = [0,1,2,51,4,5,6,7,52,9,10,11,12,53,14,15,16,17,54,19,20,21,22,55,24,25,26,27,56,29,30,31]7987; AVX512BW-NEXT: vpermt2w %zmm13, %zmm22, %zmm97988; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm23 = [0,0,0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0]7989; AVX512BW-NEXT: vmovdqa64 %zmm12, %zmm247990; AVX512BW-NEXT: vpermt2w %zmm15, %zmm23, %zmm247991; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm25 = [0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0,0,19]7992; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm147993; AVX512BW-NEXT: vpermt2w %zmm11, %zmm25, %zmm147994; AVX512BW-NEXT: movl $831283992, %eax # imm = 0x318C63187995; AVX512BW-NEXT: kmovd %eax, %k27996; AVX512BW-NEXT: vmovdqu16 %zmm24, %zmm14 {%k2}7997; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm24 = [44,1,2,3,4,45,6,7,8,9,46,11,12,13,14,47,16,17,18,19,48,21,22,23,24,49,26,27,28,29,50,31]7998; AVX512BW-NEXT: vpermt2w %zmm13, %zmm24, %zmm147999; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm26 = [0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44,0,0]8000; AVX512BW-NEXT: vmovdqa64 %zmm0, %zmm278001; AVX512BW-NEXT: vpermt2w %zmm11, %zmm26, %zmm278002; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm28 = [6,38,0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44]8003; AVX512BW-NEXT: vmovdqa64 %zmm12, %zmm298004; AVX512BW-NEXT: vpermt2w %zmm15, %zmm28, %zmm298005; AVX512BW-NEXT: vmovdqu16 %zmm27, %zmm29 {%k2}8006; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm27 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]8007; AVX512BW-NEXT: vpermt2w %zmm13, %zmm27, %zmm298008; AVX512BW-NEXT: vpermt2w %zmm15, %zmm16, %zmm128009; AVX512BW-NEXT: vpermt2w %zmm11, %zmm17, %zmm08010; AVX512BW-NEXT: vmovdqu16 %zmm12, %zmm0 {%k1}8011; AVX512BW-NEXT: vpermt2w %zmm13, %zmm18, %zmm08012; AVX512BW-NEXT: vpermi2w %zmm4, %zmm1, %zmm198013; AVX512BW-NEXT: vpermi2w %zmm2, %zmm6, %zmm88014; AVX512BW-NEXT: vmovdqu16 %zmm19, %zmm8 {%k1}8015; AVX512BW-NEXT: vpermt2w %zmm5, %zmm20, %zmm88016; AVX512BW-NEXT: vpermi2w %zmm6, %zmm2, %zmm218017; AVX512BW-NEXT: vpermi2w %zmm1, %zmm4, %zmm108018; AVX512BW-NEXT: vmovdqu16 %zmm21, %zmm10 {%k3}8019; AVX512BW-NEXT: vpermt2w %zmm5, %zmm22, %zmm108020; AVX512BW-NEXT: vpermi2w %zmm6, %zmm2, %zmm238021; AVX512BW-NEXT: vpermi2w %zmm4, %zmm1, %zmm258022; AVX512BW-NEXT: vmovdqu16 %zmm23, %zmm25 {%k2}8023; AVX512BW-NEXT: vpermt2w %zmm5, %zmm24, %zmm258024; AVX512BW-NEXT: vpermt2w %zmm4, %zmm26, %zmm18025; AVX512BW-NEXT: vpermt2w %zmm6, %zmm28, %zmm28026; AVX512BW-NEXT: vmovdqu16 %zmm1, %zmm2 {%k2}8027; AVX512BW-NEXT: vpermt2w %zmm5, %zmm27, %zmm28028; AVX512BW-NEXT: vmovdqa64 %zmm2, 64(%r9)8029; AVX512BW-NEXT: vmovdqa64 %zmm25, 128(%r9)8030; AVX512BW-NEXT: vmovdqa64 %zmm10, 192(%r9)8031; AVX512BW-NEXT: vmovdqa64 %zmm8, 256(%r9)8032; AVX512BW-NEXT: vmovdqa64 %zmm0, 320(%r9)8033; AVX512BW-NEXT: vmovdqa64 %zmm29, 384(%r9)8034; AVX512BW-NEXT: vmovdqa64 %zmm14, 448(%r9)8035; AVX512BW-NEXT: vmovdqa64 %zmm9, 512(%r9)8036; AVX512BW-NEXT: vmovdqa64 %zmm7, 576(%r9)8037; AVX512BW-NEXT: vmovdqa64 %zmm3, (%r9)8038; AVX512BW-NEXT: vzeroupper8039; AVX512BW-NEXT: retq8040;8041; AVX512BW-FCP-LABEL: store_i16_stride5_vf64:8042; AVX512BW-FCP: # %bb.0:8043; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm18044; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm08045; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm48046; AVX512BW-FCP-NEXT: vmovdqa64 64(%rsi), %zmm118047; AVX512BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm28048; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdx), %zmm128049; AVX512BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm68050; AVX512BW-FCP-NEXT: vmovdqa64 64(%rcx), %zmm158051; AVX512BW-FCP-NEXT: vmovdqa64 (%r8), %zmm58052; AVX512BW-FCP-NEXT: vmovdqa64 64(%r8), %zmm138053; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm16 = [0,0,0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0]8054; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm78055; AVX512BW-FCP-NEXT: vpermt2w %zmm6, %zmm16, %zmm78056; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm17 = [0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0,6,38]8057; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm38058; AVX512BW-FCP-NEXT: vpermt2w %zmm4, %zmm17, %zmm38059; AVX512BW-FCP-NEXT: movl $415641996, %eax # imm = 0x18C6318C8060; AVX512BW-FCP-NEXT: kmovd %eax, %k18061; AVX512BW-FCP-NEXT: vmovdqu16 %zmm7, %zmm3 {%k1}8062; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm18 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]8063; AVX512BW-FCP-NEXT: vpermt2w %zmm5, %zmm18, %zmm38064; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm19 = [0,0,26,58,0,0,0,27,59,0,0,0,28,60,0,0,0,29,61,0,0,0,30,62,0,0,0,31,63,0,0,0]8065; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm98066; AVX512BW-FCP-NEXT: vpermt2w %zmm11, %zmm19, %zmm98067; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [25,0,0,0,58,26,0,0,0,59,27,0,0,0,60,28,0,0,0,61,29,0,0,0,62,30,0,0,0,63,31,0]8068; AVX512BW-FCP-NEXT: vmovdqa64 %zmm15, %zmm78069; AVX512BW-FCP-NEXT: vpermt2w %zmm12, %zmm8, %zmm78070; AVX512BW-FCP-NEXT: vmovdqu16 %zmm9, %zmm7 {%k1}8071; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm20 = [0,57,2,3,4,5,58,7,8,9,10,59,12,13,14,15,60,17,18,19,20,61,22,23,24,25,62,27,28,29,30,63]8072; AVX512BW-FCP-NEXT: vpermt2w %zmm13, %zmm20, %zmm78073; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm21 = [0,19,51,0,0,0,20,52,0,0,0,21,53,0,0,0,22,54,0,0,0,23,55,0,0,0,24,56,0,0,0,25]8074; AVX512BW-FCP-NEXT: vmovdqa64 %zmm12, %zmm148075; AVX512BW-FCP-NEXT: vpermt2w %zmm15, %zmm21, %zmm148076; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm10 = [19,0,0,0,52,20,0,0,0,53,21,0,0,0,54,22,0,0,0,55,23,0,0,0,56,24,0,0,0,57,25,0]8077; AVX512BW-FCP-NEXT: vmovdqa64 %zmm11, %zmm98078; AVX512BW-FCP-NEXT: vpermt2w %zmm0, %zmm10, %zmm98079; AVX512BW-FCP-NEXT: movl $-1939662650, %eax # imm = 0x8C6318C68080; AVX512BW-FCP-NEXT: kmovd %eax, %k38081; AVX512BW-FCP-NEXT: vmovdqu16 %zmm14, %zmm9 {%k3}8082; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm22 = [0,1,2,51,4,5,6,7,52,9,10,11,12,53,14,15,16,17,54,19,20,21,22,55,24,25,26,27,56,29,30,31]8083; AVX512BW-FCP-NEXT: vpermt2w %zmm13, %zmm22, %zmm98084; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm23 = [0,0,0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0]8085; AVX512BW-FCP-NEXT: vmovdqa64 %zmm12, %zmm248086; AVX512BW-FCP-NEXT: vpermt2w %zmm15, %zmm23, %zmm248087; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm25 = [0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0,0,19]8088; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm148089; AVX512BW-FCP-NEXT: vpermt2w %zmm11, %zmm25, %zmm148090; AVX512BW-FCP-NEXT: movl $831283992, %eax # imm = 0x318C63188091; AVX512BW-FCP-NEXT: kmovd %eax, %k28092; AVX512BW-FCP-NEXT: vmovdqu16 %zmm24, %zmm14 {%k2}8093; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm24 = [44,1,2,3,4,45,6,7,8,9,46,11,12,13,14,47,16,17,18,19,48,21,22,23,24,49,26,27,28,29,50,31]8094; AVX512BW-FCP-NEXT: vpermt2w %zmm13, %zmm24, %zmm148095; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm26 = [0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44,0,0]8096; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm278097; AVX512BW-FCP-NEXT: vpermt2w %zmm11, %zmm26, %zmm278098; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm28 = [6,38,0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44]8099; AVX512BW-FCP-NEXT: vmovdqa64 %zmm12, %zmm298100; AVX512BW-FCP-NEXT: vpermt2w %zmm15, %zmm28, %zmm298101; AVX512BW-FCP-NEXT: vmovdqu16 %zmm27, %zmm29 {%k2}8102; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm27 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]8103; AVX512BW-FCP-NEXT: vpermt2w %zmm13, %zmm27, %zmm298104; AVX512BW-FCP-NEXT: vpermt2w %zmm15, %zmm16, %zmm128105; AVX512BW-FCP-NEXT: vpermt2w %zmm11, %zmm17, %zmm08106; AVX512BW-FCP-NEXT: vmovdqu16 %zmm12, %zmm0 {%k1}8107; AVX512BW-FCP-NEXT: vpermt2w %zmm13, %zmm18, %zmm08108; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm1, %zmm198109; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm6, %zmm88110; AVX512BW-FCP-NEXT: vmovdqu16 %zmm19, %zmm8 {%k1}8111; AVX512BW-FCP-NEXT: vpermt2w %zmm5, %zmm20, %zmm88112; AVX512BW-FCP-NEXT: vpermi2w %zmm6, %zmm2, %zmm218113; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm4, %zmm108114; AVX512BW-FCP-NEXT: vmovdqu16 %zmm21, %zmm10 {%k3}8115; AVX512BW-FCP-NEXT: vpermt2w %zmm5, %zmm22, %zmm108116; AVX512BW-FCP-NEXT: vpermi2w %zmm6, %zmm2, %zmm238117; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm1, %zmm258118; AVX512BW-FCP-NEXT: vmovdqu16 %zmm23, %zmm25 {%k2}8119; AVX512BW-FCP-NEXT: vpermt2w %zmm5, %zmm24, %zmm258120; AVX512BW-FCP-NEXT: vpermt2w %zmm4, %zmm26, %zmm18121; AVX512BW-FCP-NEXT: vpermt2w %zmm6, %zmm28, %zmm28122; AVX512BW-FCP-NEXT: vmovdqu16 %zmm1, %zmm2 {%k2}8123; AVX512BW-FCP-NEXT: vpermt2w %zmm5, %zmm27, %zmm28124; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, 64(%r9)8125; AVX512BW-FCP-NEXT: vmovdqa64 %zmm25, 128(%r9)8126; AVX512BW-FCP-NEXT: vmovdqa64 %zmm10, 192(%r9)8127; AVX512BW-FCP-NEXT: vmovdqa64 %zmm8, 256(%r9)8128; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, 320(%r9)8129; AVX512BW-FCP-NEXT: vmovdqa64 %zmm29, 384(%r9)8130; AVX512BW-FCP-NEXT: vmovdqa64 %zmm14, 448(%r9)8131; AVX512BW-FCP-NEXT: vmovdqa64 %zmm9, 512(%r9)8132; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, 576(%r9)8133; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, (%r9)8134; AVX512BW-FCP-NEXT: vzeroupper8135; AVX512BW-FCP-NEXT: retq8136;8137; AVX512DQ-BW-LABEL: store_i16_stride5_vf64:8138; AVX512DQ-BW: # %bb.0:8139; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm18140; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm08141; AVX512DQ-BW-NEXT: vmovdqa64 (%rsi), %zmm48142; AVX512DQ-BW-NEXT: vmovdqa64 64(%rsi), %zmm118143; AVX512DQ-BW-NEXT: vmovdqa64 (%rdx), %zmm28144; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdx), %zmm128145; AVX512DQ-BW-NEXT: vmovdqa64 (%rcx), %zmm68146; AVX512DQ-BW-NEXT: vmovdqa64 64(%rcx), %zmm158147; AVX512DQ-BW-NEXT: vmovdqa64 (%r8), %zmm58148; AVX512DQ-BW-NEXT: vmovdqa64 64(%r8), %zmm138149; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm16 = [0,0,0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0]8150; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, %zmm78151; AVX512DQ-BW-NEXT: vpermt2w %zmm6, %zmm16, %zmm78152; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm17 = [0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0,6,38]8153; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, %zmm38154; AVX512DQ-BW-NEXT: vpermt2w %zmm4, %zmm17, %zmm38155; AVX512DQ-BW-NEXT: movl $415641996, %eax # imm = 0x18C6318C8156; AVX512DQ-BW-NEXT: kmovd %eax, %k18157; AVX512DQ-BW-NEXT: vmovdqu16 %zmm7, %zmm3 {%k1}8158; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm18 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]8159; AVX512DQ-BW-NEXT: vpermt2w %zmm5, %zmm18, %zmm38160; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm19 = [0,0,26,58,0,0,0,27,59,0,0,0,28,60,0,0,0,29,61,0,0,0,30,62,0,0,0,31,63,0,0,0]8161; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, %zmm98162; AVX512DQ-BW-NEXT: vpermt2w %zmm11, %zmm19, %zmm98163; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm8 = [25,0,0,0,58,26,0,0,0,59,27,0,0,0,60,28,0,0,0,61,29,0,0,0,62,30,0,0,0,63,31,0]8164; AVX512DQ-BW-NEXT: vmovdqa64 %zmm15, %zmm78165; AVX512DQ-BW-NEXT: vpermt2w %zmm12, %zmm8, %zmm78166; AVX512DQ-BW-NEXT: vmovdqu16 %zmm9, %zmm7 {%k1}8167; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm20 = [0,57,2,3,4,5,58,7,8,9,10,59,12,13,14,15,60,17,18,19,20,61,22,23,24,25,62,27,28,29,30,63]8168; AVX512DQ-BW-NEXT: vpermt2w %zmm13, %zmm20, %zmm78169; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm21 = [0,19,51,0,0,0,20,52,0,0,0,21,53,0,0,0,22,54,0,0,0,23,55,0,0,0,24,56,0,0,0,25]8170; AVX512DQ-BW-NEXT: vmovdqa64 %zmm12, %zmm148171; AVX512DQ-BW-NEXT: vpermt2w %zmm15, %zmm21, %zmm148172; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm10 = [19,0,0,0,52,20,0,0,0,53,21,0,0,0,54,22,0,0,0,55,23,0,0,0,56,24,0,0,0,57,25,0]8173; AVX512DQ-BW-NEXT: vmovdqa64 %zmm11, %zmm98174; AVX512DQ-BW-NEXT: vpermt2w %zmm0, %zmm10, %zmm98175; AVX512DQ-BW-NEXT: movl $-1939662650, %eax # imm = 0x8C6318C68176; AVX512DQ-BW-NEXT: kmovd %eax, %k38177; AVX512DQ-BW-NEXT: vmovdqu16 %zmm14, %zmm9 {%k3}8178; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm22 = [0,1,2,51,4,5,6,7,52,9,10,11,12,53,14,15,16,17,54,19,20,21,22,55,24,25,26,27,56,29,30,31]8179; AVX512DQ-BW-NEXT: vpermt2w %zmm13, %zmm22, %zmm98180; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm23 = [0,0,0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0]8181; AVX512DQ-BW-NEXT: vmovdqa64 %zmm12, %zmm248182; AVX512DQ-BW-NEXT: vpermt2w %zmm15, %zmm23, %zmm248183; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm25 = [0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0,0,19]8184; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, %zmm148185; AVX512DQ-BW-NEXT: vpermt2w %zmm11, %zmm25, %zmm148186; AVX512DQ-BW-NEXT: movl $831283992, %eax # imm = 0x318C63188187; AVX512DQ-BW-NEXT: kmovd %eax, %k28188; AVX512DQ-BW-NEXT: vmovdqu16 %zmm24, %zmm14 {%k2}8189; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm24 = [44,1,2,3,4,45,6,7,8,9,46,11,12,13,14,47,16,17,18,19,48,21,22,23,24,49,26,27,28,29,50,31]8190; AVX512DQ-BW-NEXT: vpermt2w %zmm13, %zmm24, %zmm148191; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm26 = [0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44,0,0]8192; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, %zmm278193; AVX512DQ-BW-NEXT: vpermt2w %zmm11, %zmm26, %zmm278194; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm28 = [6,38,0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44]8195; AVX512DQ-BW-NEXT: vmovdqa64 %zmm12, %zmm298196; AVX512DQ-BW-NEXT: vpermt2w %zmm15, %zmm28, %zmm298197; AVX512DQ-BW-NEXT: vmovdqu16 %zmm27, %zmm29 {%k2}8198; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm27 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]8199; AVX512DQ-BW-NEXT: vpermt2w %zmm13, %zmm27, %zmm298200; AVX512DQ-BW-NEXT: vpermt2w %zmm15, %zmm16, %zmm128201; AVX512DQ-BW-NEXT: vpermt2w %zmm11, %zmm17, %zmm08202; AVX512DQ-BW-NEXT: vmovdqu16 %zmm12, %zmm0 {%k1}8203; AVX512DQ-BW-NEXT: vpermt2w %zmm13, %zmm18, %zmm08204; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm1, %zmm198205; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm6, %zmm88206; AVX512DQ-BW-NEXT: vmovdqu16 %zmm19, %zmm8 {%k1}8207; AVX512DQ-BW-NEXT: vpermt2w %zmm5, %zmm20, %zmm88208; AVX512DQ-BW-NEXT: vpermi2w %zmm6, %zmm2, %zmm218209; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm4, %zmm108210; AVX512DQ-BW-NEXT: vmovdqu16 %zmm21, %zmm10 {%k3}8211; AVX512DQ-BW-NEXT: vpermt2w %zmm5, %zmm22, %zmm108212; AVX512DQ-BW-NEXT: vpermi2w %zmm6, %zmm2, %zmm238213; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm1, %zmm258214; AVX512DQ-BW-NEXT: vmovdqu16 %zmm23, %zmm25 {%k2}8215; AVX512DQ-BW-NEXT: vpermt2w %zmm5, %zmm24, %zmm258216; AVX512DQ-BW-NEXT: vpermt2w %zmm4, %zmm26, %zmm18217; AVX512DQ-BW-NEXT: vpermt2w %zmm6, %zmm28, %zmm28218; AVX512DQ-BW-NEXT: vmovdqu16 %zmm1, %zmm2 {%k2}8219; AVX512DQ-BW-NEXT: vpermt2w %zmm5, %zmm27, %zmm28220; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, 64(%r9)8221; AVX512DQ-BW-NEXT: vmovdqa64 %zmm25, 128(%r9)8222; AVX512DQ-BW-NEXT: vmovdqa64 %zmm10, 192(%r9)8223; AVX512DQ-BW-NEXT: vmovdqa64 %zmm8, 256(%r9)8224; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, 320(%r9)8225; AVX512DQ-BW-NEXT: vmovdqa64 %zmm29, 384(%r9)8226; AVX512DQ-BW-NEXT: vmovdqa64 %zmm14, 448(%r9)8227; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, 512(%r9)8228; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, 576(%r9)8229; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, (%r9)8230; AVX512DQ-BW-NEXT: vzeroupper8231; AVX512DQ-BW-NEXT: retq8232;8233; AVX512DQ-BW-FCP-LABEL: store_i16_stride5_vf64:8234; AVX512DQ-BW-FCP: # %bb.0:8235; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm18236; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm08237; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm48238; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rsi), %zmm118239; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm28240; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdx), %zmm128241; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm68242; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rcx), %zmm158243; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%r8), %zmm58244; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%r8), %zmm138245; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm16 = [0,0,0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0]8246; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, %zmm78247; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm6, %zmm16, %zmm78248; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm17 = [0,32,0,0,0,1,33,0,0,0,2,34,0,0,0,3,35,0,0,0,4,36,0,0,0,5,37,0,0,0,6,38]8249; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm38250; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm4, %zmm17, %zmm38251; AVX512DQ-BW-FCP-NEXT: movl $415641996, %eax # imm = 0x18C6318C8252; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k18253; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm7, %zmm3 {%k1}8254; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm18 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]8255; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm5, %zmm18, %zmm38256; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm19 = [0,0,26,58,0,0,0,27,59,0,0,0,28,60,0,0,0,29,61,0,0,0,30,62,0,0,0,31,63,0,0,0]8257; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm98258; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm11, %zmm19, %zmm98259; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [25,0,0,0,58,26,0,0,0,59,27,0,0,0,60,28,0,0,0,61,29,0,0,0,62,30,0,0,0,63,31,0]8260; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm15, %zmm78261; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm12, %zmm8, %zmm78262; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm9, %zmm7 {%k1}8263; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm20 = [0,57,2,3,4,5,58,7,8,9,10,59,12,13,14,15,60,17,18,19,20,61,22,23,24,25,62,27,28,29,30,63]8264; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm13, %zmm20, %zmm78265; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm21 = [0,19,51,0,0,0,20,52,0,0,0,21,53,0,0,0,22,54,0,0,0,23,55,0,0,0,24,56,0,0,0,25]8266; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm12, %zmm148267; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm15, %zmm21, %zmm148268; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm10 = [19,0,0,0,52,20,0,0,0,53,21,0,0,0,54,22,0,0,0,55,23,0,0,0,56,24,0,0,0,57,25,0]8269; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm11, %zmm98270; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm0, %zmm10, %zmm98271; AVX512DQ-BW-FCP-NEXT: movl $-1939662650, %eax # imm = 0x8C6318C68272; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k38273; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm14, %zmm9 {%k3}8274; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm22 = [0,1,2,51,4,5,6,7,52,9,10,11,12,53,14,15,16,17,54,19,20,21,22,55,24,25,26,27,56,29,30,31]8275; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm13, %zmm22, %zmm98276; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm23 = [0,0,0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0]8277; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm12, %zmm248278; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm15, %zmm23, %zmm248279; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm25 = [0,13,45,0,0,0,14,46,0,0,0,15,47,0,0,0,16,48,0,0,0,17,49,0,0,0,18,50,0,0,0,19]8280; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm148281; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm11, %zmm25, %zmm148282; AVX512DQ-BW-FCP-NEXT: movl $831283992, %eax # imm = 0x318C63188283; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k28284; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm24, %zmm14 {%k2}8285; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm24 = [44,1,2,3,4,45,6,7,8,9,46,11,12,13,14,47,16,17,18,19,48,21,22,23,24,49,26,27,28,29,50,31]8286; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm13, %zmm24, %zmm148287; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm26 = [0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44,0,0]8288; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm278289; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm11, %zmm26, %zmm278290; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm28 = [6,38,0,0,0,7,39,0,0,0,8,40,0,0,0,9,41,0,0,0,10,42,0,0,0,11,43,0,0,0,12,44]8291; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm12, %zmm298292; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm15, %zmm28, %zmm298293; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm27, %zmm29 {%k2}8294; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm27 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]8295; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm13, %zmm27, %zmm298296; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm15, %zmm16, %zmm128297; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm11, %zmm17, %zmm08298; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm12, %zmm0 {%k1}8299; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm13, %zmm18, %zmm08300; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm1, %zmm198301; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm6, %zmm88302; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm19, %zmm8 {%k1}8303; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm5, %zmm20, %zmm88304; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm6, %zmm2, %zmm218305; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm4, %zmm108306; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm21, %zmm10 {%k3}8307; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm5, %zmm22, %zmm108308; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm6, %zmm2, %zmm238309; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm1, %zmm258310; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm23, %zmm25 {%k2}8311; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm5, %zmm24, %zmm258312; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm4, %zmm26, %zmm18313; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm6, %zmm28, %zmm28314; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm1, %zmm2 {%k2}8315; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm5, %zmm27, %zmm28316; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, 64(%r9)8317; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm25, 128(%r9)8318; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm10, 192(%r9)8319; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm8, 256(%r9)8320; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, 320(%r9)8321; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm29, 384(%r9)8322; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm14, 448(%r9)8323; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm9, 512(%r9)8324; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, 576(%r9)8325; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, (%r9)8326; AVX512DQ-BW-FCP-NEXT: vzeroupper8327; AVX512DQ-BW-FCP-NEXT: retq8328 %in.vec0 = load <64 x i16>, ptr %in.vecptr0, align 648329 %in.vec1 = load <64 x i16>, ptr %in.vecptr1, align 648330 %in.vec2 = load <64 x i16>, ptr %in.vecptr2, align 648331 %in.vec3 = load <64 x i16>, ptr %in.vecptr3, align 648332 %in.vec4 = load <64 x i16>, ptr %in.vecptr4, align 648333 %1 = shufflevector <64 x i16> %in.vec0, <64 x i16> %in.vec1, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>8334 %2 = shufflevector <64 x i16> %in.vec2, <64 x i16> %in.vec3, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>8335 %3 = shufflevector <128 x i16> %1, <128 x i16> %2, <256 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159, i32 160, i32 161, i32 162, i32 163, i32 164, i32 165, i32 166, i32 167, i32 168, i32 169, i32 170, i32 171, i32 172, i32 173, i32 174, i32 175, i32 176, i32 177, i32 178, i32 179, i32 180, i32 181, i32 182, i32 183, i32 184, i32 185, i32 186, i32 187, i32 188, i32 189, i32 190, i32 191, i32 192, i32 193, i32 194, i32 195, i32 196, i32 197, i32 198, i32 199, i32 200, i32 201, i32 202, i32 203, i32 204, i32 205, i32 206, i32 207, i32 208, i32 209, i32 210, i32 211, i32 212, i32 213, i32 214, i32 215, i32 216, i32 217, i32 218, i32 219, i32 220, i32 221, i32 222, i32 223, i32 224, i32 225, i32 226, i32 227, i32 228, i32 229, i32 230, i32 231, i32 232, i32 233, i32 234, i32 235, i32 236, i32 237, i32 238, i32 239, i32 240, i32 241, i32 242, i32 243, i32 244, i32 245, i32 246, i32 247, i32 248, i32 249, i32 250, i32 251, i32 252, i32 253, i32 254, i32 255>8336 %4 = shufflevector <64 x i16> %in.vec4, <64 x i16> poison, <256 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>8337 %5 = shufflevector <256 x i16> %3, <256 x i16> %4, <320 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159, i32 160, i32 161, i32 162, i32 163, i32 164, i32 165, i32 166, i32 167, i32 168, i32 169, i32 170, i32 171, i32 172, i32 173, i32 174, i32 175, i32 176, i32 177, i32 178, i32 179, i32 180, i32 181, i32 182, i32 183, i32 184, i32 185, i32 186, i32 187, i32 188, i32 189, i32 190, i32 191, i32 192, i32 193, i32 194, i32 195, i32 196, i32 197, i32 198, i32 199, i32 200, i32 201, i32 202, i32 203, i32 204, i32 205, i32 206, i32 207, i32 208, i32 209, i32 210, i32 211, i32 212, i32 213, i32 214, i32 215, i32 216, i32 217, i32 218, i32 219, i32 220, i32 221, i32 222, i32 223, i32 224, i32 225, i32 226, i32 227, i32 228, i32 229, i32 230, i32 231, i32 232, i32 233, i32 234, i32 235, i32 236, i32 237, i32 238, i32 239, i32 240, i32 241, i32 242, i32 243, i32 244, i32 245, i32 246, i32 247, i32 248, i32 249, i32 250, i32 251, i32 252, i32 253, i32 254, i32 255, i32 256, i32 257, i32 258, i32 259, i32 260, i32 261, i32 262, i32 263, i32 264, i32 265, i32 266, i32 267, i32 268, i32 269, i32 270, i32 271, i32 272, i32 273, i32 274, i32 275, i32 276, i32 277, i32 278, i32 279, i32 280, i32 281, i32 282, i32 283, i32 284, i32 285, i32 286, i32 287, i32 288, i32 289, i32 290, i32 291, i32 292, i32 293, i32 294, i32 295, i32 296, i32 297, i32 298, i32 299, i32 300, i32 301, i32 302, i32 303, i32 304, i32 305, i32 306, i32 307, i32 308, i32 309, i32 310, i32 311, i32 312, i32 313, i32 314, i32 315, i32 316, i32 317, i32 318, i32 319>8338 %interleaved.vec = shufflevector <320 x i16> %5, <320 x i16> poison, <320 x i32> <i32 0, i32 64, i32 128, i32 192, i32 256, i32 1, i32 65, i32 129, i32 193, i32 257, i32 2, i32 66, i32 130, i32 194, i32 258, i32 3, i32 67, i32 131, i32 195, i32 259, i32 4, i32 68, i32 132, i32 196, i32 260, i32 5, i32 69, i32 133, i32 197, i32 261, i32 6, i32 70, i32 134, i32 198, i32 262, i32 7, i32 71, i32 135, i32 199, i32 263, i32 8, i32 72, i32 136, i32 200, i32 264, i32 9, i32 73, i32 137, i32 201, i32 265, i32 10, i32 74, i32 138, i32 202, i32 266, i32 11, i32 75, i32 139, i32 203, i32 267, i32 12, i32 76, i32 140, i32 204, i32 268, i32 13, i32 77, i32 141, i32 205, i32 269, i32 14, i32 78, i32 142, i32 206, i32 270, i32 15, i32 79, i32 143, i32 207, i32 271, i32 16, i32 80, i32 144, i32 208, i32 272, i32 17, i32 81, i32 145, i32 209, i32 273, i32 18, i32 82, i32 146, i32 210, i32 274, i32 19, i32 83, i32 147, i32 211, i32 275, i32 20, i32 84, i32 148, i32 212, i32 276, i32 21, i32 85, i32 149, i32 213, i32 277, i32 22, i32 86, i32 150, i32 214, i32 278, i32 23, i32 87, i32 151, i32 215, i32 279, i32 24, i32 88, i32 152, i32 216, i32 280, i32 25, i32 89, i32 153, i32 217, i32 281, i32 26, i32 90, i32 154, i32 218, i32 282, i32 27, i32 91, i32 155, i32 219, i32 283, i32 28, i32 92, i32 156, i32 220, i32 284, i32 29, i32 93, i32 157, i32 221, i32 285, i32 30, i32 94, i32 158, i32 222, i32 286, i32 31, i32 95, i32 159, i32 223, i32 287, i32 32, i32 96, i32 160, i32 224, i32 288, i32 33, i32 97, i32 161, i32 225, i32 289, i32 34, i32 98, i32 162, i32 226, i32 290, i32 35, i32 99, i32 163, i32 227, i32 291, i32 36, i32 100, i32 164, i32 228, i32 292, i32 37, i32 101, i32 165, i32 229, i32 293, i32 38, i32 102, i32 166, i32 230, i32 294, i32 39, i32 103, i32 167, i32 231, i32 295, i32 40, i32 104, i32 168, i32 232, i32 296, i32 41, i32 105, i32 169, i32 233, i32 297, i32 42, i32 106, i32 170, i32 234, i32 298, i32 43, i32 107, i32 171, i32 235, i32 299, i32 44, i32 108, i32 172, i32 236, i32 300, i32 45, i32 109, i32 173, i32 237, i32 301, i32 46, i32 110, i32 174, i32 238, i32 302, i32 47, i32 111, i32 175, i32 239, i32 303, i32 48, i32 112, i32 176, i32 240, i32 304, i32 49, i32 113, i32 177, i32 241, i32 305, i32 50, i32 114, i32 178, i32 242, i32 306, i32 51, i32 115, i32 179, i32 243, i32 307, i32 52, i32 116, i32 180, i32 244, i32 308, i32 53, i32 117, i32 181, i32 245, i32 309, i32 54, i32 118, i32 182, i32 246, i32 310, i32 55, i32 119, i32 183, i32 247, i32 311, i32 56, i32 120, i32 184, i32 248, i32 312, i32 57, i32 121, i32 185, i32 249, i32 313, i32 58, i32 122, i32 186, i32 250, i32 314, i32 59, i32 123, i32 187, i32 251, i32 315, i32 60, i32 124, i32 188, i32 252, i32 316, i32 61, i32 125, i32 189, i32 253, i32 317, i32 62, i32 126, i32 190, i32 254, i32 318, i32 63, i32 127, i32 191, i32 255, i32 319>8339 store <320 x i16> %interleaved.vec, ptr %out.vec, align 648340 ret void8341}8342