14876 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_stride7_vf2(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %in.vecptr5, ptr %in.vecptr6, ptr %out.vec) nounwind {19; SSE-LABEL: store_i16_stride7_vf2:20; SSE: # %bb.0:21; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax22; SSE-NEXT: movq {{[0-9]+}}(%rsp), %r1023; SSE-NEXT: movdqa (%rdi), %xmm024; SSE-NEXT: movdqa (%rdx), %xmm125; SSE-NEXT: movdqa (%r8), %xmm226; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]27; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]28; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]29; SSE-NEXT: movdqa %xmm0, %xmm330; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]31; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,1]32; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,2,1,3,4,5,6,7]33; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,6,6,6,6]34; SSE-NEXT: movdqa {{.*#+}} xmm4 = [65535,65535,65535,65535,0,0,0,65535]35; SSE-NEXT: pand %xmm4, %xmm336; SSE-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1],xmm2[2],mem[2],xmm2[3],mem[3]37; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm2[0,1,2,0]38; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,6,4,7,7]39; SSE-NEXT: pandn %xmm5, %xmm440; SSE-NEXT: por %xmm3, %xmm441; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]42; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,1,2,3]43; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[1,2,0,3,4,5,6,7]44; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,0,0,0,65535,65535]45; SSE-NEXT: pand %xmm1, %xmm046; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,1,3]47; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[2,2,2,2,4,5,6,7]48; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,6,5,6,7]49; SSE-NEXT: pandn %xmm2, %xmm150; SSE-NEXT: por %xmm0, %xmm151; SSE-NEXT: movq %xmm1, 16(%rax)52; SSE-NEXT: movdqa %xmm4, (%rax)53; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]54; SSE-NEXT: movd %xmm0, 24(%rax)55; SSE-NEXT: retq56;57; AVX-LABEL: store_i16_stride7_vf2:58; AVX: # %bb.0:59; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax60; AVX-NEXT: movq {{[0-9]+}}(%rsp), %r1061; AVX-NEXT: vmovdqa (%rdi), %xmm062; AVX-NEXT: vmovdqa (%rdx), %xmm163; AVX-NEXT: vmovdqa (%r8), %xmm264; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]65; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]66; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]67; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]68; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],mem[0]69; AVX-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,4,5,8,9,12,13,0,1,4,5,8,9,2,3]70; AVX-NEXT: vpshufb %xmm2, %xmm0, %xmm371; AVX-NEXT: vpshufb %xmm2, %xmm1, %xmm272; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2,3],xmm2[4,5,6],xmm3[7]73; AVX-NEXT: vmovdqa {{.*#+}} xmm3 = [6,7,10,11,14,15,2,3,6,7,10,11,12,13,14,15]74; AVX-NEXT: vpshufb %xmm3, %xmm0, %xmm075; AVX-NEXT: vpshufb %xmm3, %xmm1, %xmm176; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3,4,5],xmm0[6,7]77; AVX-NEXT: vpextrd $2, %xmm1, 24(%rax)78; AVX-NEXT: vmovq %xmm0, 16(%rax)79; AVX-NEXT: vmovdqa %xmm2, (%rax)80; AVX-NEXT: retq81;82; AVX2-LABEL: store_i16_stride7_vf2:83; AVX2: # %bb.0:84; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax85; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %r1086; AVX2-NEXT: vmovdqa (%rdi), %xmm087; AVX2-NEXT: vmovdqa (%rdx), %xmm188; AVX2-NEXT: vmovdqa (%r8), %xmm289; AVX2-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]90; AVX2-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]91; AVX2-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]92; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm093; AVX2-NEXT: vinserti128 $1, (%r10), %ymm1, %ymm194; AVX2-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]95; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,ymm0[2,3],zero,zero,zero,zero,zero,zero,ymm0[18,19,22,23,26,27],zero,zero,zero,zero96; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]97; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1,4,5,8,9],zero,zero,ymm0[22,23,26,27,30,31],zero,zero,zero,zero,zero,zero,ymm0[24,25,20,21]98; AVX2-NEXT: vpor %ymm0, %ymm1, %ymm099; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm1100; AVX2-NEXT: vpextrd $2, %xmm1, 24(%rax)101; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1102; AVX2-NEXT: vmovq %xmm1, 16(%rax)103; AVX2-NEXT: vmovdqa %xmm0, (%rax)104; AVX2-NEXT: vzeroupper105; AVX2-NEXT: retq106;107; AVX2-FP-LABEL: store_i16_stride7_vf2:108; AVX2-FP: # %bb.0:109; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax110; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %r10111; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm0112; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm1113; AVX2-FP-NEXT: vmovdqa (%r8), %xmm2114; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]115; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]116; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]117; AVX2-FP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0118; AVX2-FP-NEXT: vinserti128 $1, (%r10), %ymm1, %ymm1119; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]120; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,ymm0[2,3],zero,zero,zero,zero,zero,zero,ymm0[18,19,22,23,26,27],zero,zero,zero,zero121; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]122; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1,4,5,8,9],zero,zero,ymm0[22,23,26,27,30,31],zero,zero,zero,zero,zero,zero,ymm0[24,25,20,21]123; AVX2-FP-NEXT: vpor %ymm0, %ymm1, %ymm0124; AVX2-FP-NEXT: vextracti128 $1, %ymm1, %xmm1125; AVX2-FP-NEXT: vpextrd $2, %xmm1, 24(%rax)126; AVX2-FP-NEXT: vextracti128 $1, %ymm0, %xmm1127; AVX2-FP-NEXT: vmovq %xmm1, 16(%rax)128; AVX2-FP-NEXT: vmovdqa %xmm0, (%rax)129; AVX2-FP-NEXT: vzeroupper130; AVX2-FP-NEXT: retq131;132; AVX2-FCP-LABEL: store_i16_stride7_vf2:133; AVX2-FCP: # %bb.0:134; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax135; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r10136; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm0137; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm1138; AVX2-FCP-NEXT: vmovdqa (%r8), %xmm2139; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]140; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]141; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]142; AVX2-FCP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0143; AVX2-FCP-NEXT: vinserti128 $1, (%r10), %ymm1, %ymm1144; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]145; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,ymm0[2,3],zero,zero,zero,zero,zero,zero,ymm0[18,19,22,23,26,27],zero,zero,zero,zero146; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]147; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1,4,5,8,9],zero,zero,ymm0[22,23,26,27,30,31],zero,zero,zero,zero,zero,zero,ymm0[24,25,20,21]148; AVX2-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0149; AVX2-FCP-NEXT: vextracti128 $1, %ymm1, %xmm1150; AVX2-FCP-NEXT: vpextrd $2, %xmm1, 24(%rax)151; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1152; AVX2-FCP-NEXT: vmovq %xmm1, 16(%rax)153; AVX2-FCP-NEXT: vmovdqa %xmm0, (%rax)154; AVX2-FCP-NEXT: vzeroupper155; AVX2-FCP-NEXT: retq156;157; AVX512-LABEL: store_i16_stride7_vf2:158; AVX512: # %bb.0:159; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax160; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %r10161; AVX512-NEXT: vmovdqa (%rdi), %xmm0162; AVX512-NEXT: vmovdqa (%rdx), %xmm1163; AVX512-NEXT: vmovdqa (%r8), %xmm2164; AVX512-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]165; AVX512-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]166; AVX512-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]167; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0168; AVX512-NEXT: vinserti128 $1, (%r10), %ymm1, %ymm1169; AVX512-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]170; AVX512-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,ymm0[2,3],zero,zero,zero,zero,zero,zero,ymm0[18,19,22,23,26,27,u,u,u,u]171; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]172; AVX512-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1,4,5,8,9],zero,zero,ymm0[22,23,26,27,30,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero173; AVX512-NEXT: vpor %ymm0, %ymm1, %ymm0174; AVX512-NEXT: vextracti128 $1, %ymm1, %xmm1175; AVX512-NEXT: vpextrd $2, %xmm1, 24(%rax)176; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm1177; AVX512-NEXT: vmovq %xmm1, 16(%rax)178; AVX512-NEXT: vmovdqa %xmm0, (%rax)179; AVX512-NEXT: vzeroupper180; AVX512-NEXT: retq181;182; AVX512-FCP-LABEL: store_i16_stride7_vf2:183; AVX512-FCP: # %bb.0:184; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax185; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r10186; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm0187; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm1188; AVX512-FCP-NEXT: vmovdqa (%r8), %xmm2189; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]190; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]191; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]192; AVX512-FCP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0193; AVX512-FCP-NEXT: vinserti128 $1, (%r10), %ymm1, %ymm1194; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]195; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,ymm0[2,3],zero,zero,zero,zero,zero,zero,ymm0[18,19,22,23,26,27,u,u,u,u]196; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]197; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1,4,5,8,9],zero,zero,ymm0[22,23,26,27,30,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero198; AVX512-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0199; AVX512-FCP-NEXT: vextracti128 $1, %ymm1, %xmm1200; AVX512-FCP-NEXT: vpextrd $2, %xmm1, 24(%rax)201; AVX512-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1202; AVX512-FCP-NEXT: vmovq %xmm1, 16(%rax)203; AVX512-FCP-NEXT: vmovdqa %xmm0, (%rax)204; AVX512-FCP-NEXT: vzeroupper205; AVX512-FCP-NEXT: retq206;207; AVX512DQ-LABEL: store_i16_stride7_vf2:208; AVX512DQ: # %bb.0:209; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax210; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %r10211; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm0212; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm1213; AVX512DQ-NEXT: vmovdqa (%r8), %xmm2214; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]215; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]216; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]217; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0218; AVX512DQ-NEXT: vinserti128 $1, (%r10), %ymm1, %ymm1219; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]220; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,ymm0[2,3],zero,zero,zero,zero,zero,zero,ymm0[18,19,22,23,26,27,u,u,u,u]221; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]222; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1,4,5,8,9],zero,zero,ymm0[22,23,26,27,30,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero223; AVX512DQ-NEXT: vpor %ymm0, %ymm1, %ymm0224; AVX512DQ-NEXT: vextracti128 $1, %ymm1, %xmm1225; AVX512DQ-NEXT: vpextrd $2, %xmm1, 24(%rax)226; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm1227; AVX512DQ-NEXT: vmovq %xmm1, 16(%rax)228; AVX512DQ-NEXT: vmovdqa %xmm0, (%rax)229; AVX512DQ-NEXT: vzeroupper230; AVX512DQ-NEXT: retq231;232; AVX512DQ-FCP-LABEL: store_i16_stride7_vf2:233; AVX512DQ-FCP: # %bb.0:234; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax235; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r10236; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm0237; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm1238; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %xmm2239; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]240; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]241; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]242; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0243; AVX512DQ-FCP-NEXT: vinserti128 $1, (%r10), %ymm1, %ymm1244; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]245; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,ymm0[2,3],zero,zero,zero,zero,zero,zero,ymm0[18,19,22,23,26,27,u,u,u,u]246; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]247; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1,4,5,8,9],zero,zero,ymm0[22,23,26,27,30,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero248; AVX512DQ-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0249; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm1, %xmm1250; AVX512DQ-FCP-NEXT: vpextrd $2, %xmm1, 24(%rax)251; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1252; AVX512DQ-FCP-NEXT: vmovq %xmm1, 16(%rax)253; AVX512DQ-FCP-NEXT: vmovdqa %xmm0, (%rax)254; AVX512DQ-FCP-NEXT: vzeroupper255; AVX512DQ-FCP-NEXT: retq256;257; AVX512BW-LABEL: store_i16_stride7_vf2:258; AVX512BW: # %bb.0:259; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %rax260; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %r10261; AVX512BW-NEXT: vmovdqa (%rdi), %xmm0262; AVX512BW-NEXT: vmovdqa (%rdx), %xmm1263; AVX512BW-NEXT: vmovdqa (%r8), %xmm2264; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]265; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]266; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]267; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0268; AVX512BW-NEXT: vinserti128 $1, (%r10), %ymm1, %ymm1269; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,2,16,18,8,10,24,1,3,17,19,9,11,25,0,0]270; AVX512BW-NEXT: vpermi2w %ymm1, %ymm0, %ymm2271; AVX512BW-NEXT: vextracti128 $1, %ymm2, %xmm0272; AVX512BW-NEXT: vpextrd $2, %xmm0, 24(%rax)273; AVX512BW-NEXT: vmovq %xmm0, 16(%rax)274; AVX512BW-NEXT: vmovdqa %xmm2, (%rax)275; AVX512BW-NEXT: vzeroupper276; AVX512BW-NEXT: retq277;278; AVX512BW-FCP-LABEL: store_i16_stride7_vf2:279; AVX512BW-FCP: # %bb.0:280; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax281; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r10282; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm0283; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm1284; AVX512BW-FCP-NEXT: vmovdqa (%r8), %xmm2285; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]286; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]287; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]288; AVX512BW-FCP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0289; AVX512BW-FCP-NEXT: vinserti128 $1, (%r10), %ymm1, %ymm1290; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,2,16,18,8,10,24,1,3,17,19,9,11,25,0,0]291; AVX512BW-FCP-NEXT: vpermi2w %ymm1, %ymm0, %ymm2292; AVX512BW-FCP-NEXT: vextracti128 $1, %ymm2, %xmm0293; AVX512BW-FCP-NEXT: vpextrd $2, %xmm0, 24(%rax)294; AVX512BW-FCP-NEXT: vmovq %xmm0, 16(%rax)295; AVX512BW-FCP-NEXT: vmovdqa %xmm2, (%rax)296; AVX512BW-FCP-NEXT: vzeroupper297; AVX512BW-FCP-NEXT: retq298;299; AVX512DQ-BW-LABEL: store_i16_stride7_vf2:300; AVX512DQ-BW: # %bb.0:301; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %rax302; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %r10303; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm0304; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm1305; AVX512DQ-BW-NEXT: vmovdqa (%r8), %xmm2306; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]307; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]308; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]309; AVX512DQ-BW-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0310; AVX512DQ-BW-NEXT: vinserti128 $1, (%r10), %ymm1, %ymm1311; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,2,16,18,8,10,24,1,3,17,19,9,11,25,0,0]312; AVX512DQ-BW-NEXT: vpermi2w %ymm1, %ymm0, %ymm2313; AVX512DQ-BW-NEXT: vextracti128 $1, %ymm2, %xmm0314; AVX512DQ-BW-NEXT: vpextrd $2, %xmm0, 24(%rax)315; AVX512DQ-BW-NEXT: vmovq %xmm0, 16(%rax)316; AVX512DQ-BW-NEXT: vmovdqa %xmm2, (%rax)317; AVX512DQ-BW-NEXT: vzeroupper318; AVX512DQ-BW-NEXT: retq319;320; AVX512DQ-BW-FCP-LABEL: store_i16_stride7_vf2:321; AVX512DQ-BW-FCP: # %bb.0:322; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax323; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r10324; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm0325; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm1326; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r8), %xmm2327; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]328; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]329; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]330; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0331; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%r10), %ymm1, %ymm1332; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,2,16,18,8,10,24,1,3,17,19,9,11,25,0,0]333; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm1, %ymm0, %ymm2334; AVX512DQ-BW-FCP-NEXT: vextracti128 $1, %ymm2, %xmm0335; AVX512DQ-BW-FCP-NEXT: vpextrd $2, %xmm0, 24(%rax)336; AVX512DQ-BW-FCP-NEXT: vmovq %xmm0, 16(%rax)337; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm2, (%rax)338; AVX512DQ-BW-FCP-NEXT: vzeroupper339; AVX512DQ-BW-FCP-NEXT: retq340 %in.vec0 = load <2 x i16>, ptr %in.vecptr0, align 64341 %in.vec1 = load <2 x i16>, ptr %in.vecptr1, align 64342 %in.vec2 = load <2 x i16>, ptr %in.vecptr2, align 64343 %in.vec3 = load <2 x i16>, ptr %in.vecptr3, align 64344 %in.vec4 = load <2 x i16>, ptr %in.vecptr4, align 64345 %in.vec5 = load <2 x i16>, ptr %in.vecptr5, align 64346 %in.vec6 = load <2 x i16>, ptr %in.vecptr6, align 64347 %1 = shufflevector <2 x i16> %in.vec0, <2 x i16> %in.vec1, <4 x i32> <i32 0, i32 1, i32 2, i32 3>348 %2 = shufflevector <2 x i16> %in.vec2, <2 x i16> %in.vec3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>349 %3 = shufflevector <2 x i16> %in.vec4, <2 x i16> %in.vec5, <4 x i32> <i32 0, i32 1, i32 2, i32 3>350 %4 = 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>351 %5 = shufflevector <2 x i16> %in.vec6, <2 x i16> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>352 %6 = shufflevector <4 x i16> %3, <4 x i16> %5, <6 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5>353 %7 = shufflevector <6 x i16> %6, <6 x i16> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 undef, i32 undef>354 %8 = shufflevector <8 x i16> %4, <8 x i16> %7, <14 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>355 %interleaved.vec = shufflevector <14 x i16> %8, <14 x i16> poison, <14 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13>356 store <14 x i16> %interleaved.vec, ptr %out.vec, align 64357 ret void358}359 360define void @store_i16_stride7_vf4(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %in.vecptr5, ptr %in.vecptr6, ptr %out.vec) nounwind {361; SSE-LABEL: store_i16_stride7_vf4:362; SSE: # %bb.0:363; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax364; SSE-NEXT: movq {{[0-9]+}}(%rsp), %r10365; SSE-NEXT: movq {{.*#+}} xmm3 = mem[0],zero366; SSE-NEXT: movq {{.*#+}} xmm5 = mem[0],zero367; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero368; SSE-NEXT: movq {{.*#+}} xmm4 = mem[0],zero369; SSE-NEXT: movq {{.*#+}} xmm1 = mem[0],zero370; SSE-NEXT: movq {{.*#+}} xmm6 = mem[0],zero371; SSE-NEXT: movq {{.*#+}} xmm2 = mem[0],zero372; SSE-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm6[0]373; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm1[0,1,0,1]374; SSE-NEXT: movdqa {{.*#+}} xmm6 = [65535,65535,65535,65535,65535,0,65535,65535]375; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm2[0,0,2,3]376; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,5,5,5,5]377; SSE-NEXT: pand %xmm6, %xmm8378; SSE-NEXT: pandn %xmm7, %xmm6379; SSE-NEXT: por %xmm8, %xmm6380; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm4[0,1,1,3,4,5,6,7]381; SSE-NEXT: punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm3[0]382; SSE-NEXT: movdqa {{.*#+}} xmm7 = [65535,65535,0,65535,65535,65535,0,65535]383; SSE-NEXT: movdqa %xmm5, %xmm10384; SSE-NEXT: movdqa %xmm3, %xmm9385; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm3[1,1,1,1,4,5,6,7]386; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3]387; SSE-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3]388; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,2,3]389; SSE-NEXT: pshufhw {{.*#+}} xmm12 = xmm5[0,1,2,3,4,4,4,4]390; SSE-NEXT: pand %xmm7, %xmm12391; SSE-NEXT: pandn %xmm8, %xmm7392; SSE-NEXT: movdqa {{.*#+}} xmm5 = [65535,65535,65535,0,0,0,65535,65535]393; SSE-NEXT: por %xmm12, %xmm7394; SSE-NEXT: pand %xmm5, %xmm7395; SSE-NEXT: pandn %xmm6, %xmm5396; SSE-NEXT: por %xmm7, %xmm5397; SSE-NEXT: psrld $16, %xmm10398; SSE-NEXT: punpckldq {{.*#+}} xmm9 = xmm9[0],xmm10[0],xmm9[1],xmm10[1]399; SSE-NEXT: movdqa {{.*#+}} xmm7 = [65535,65535,65535,65535,65535,0,0,65535]400; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3]401; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm0[0,1,2,3,4,5,6,6]402; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[2,1,2,3]403; SSE-NEXT: pand %xmm7, %xmm6404; SSE-NEXT: pandn %xmm9, %xmm7405; SSE-NEXT: por %xmm6, %xmm7406; SSE-NEXT: movdqa {{.*#+}} xmm6 = [65535,65535,0,0,0,65535,65535,65535]407; SSE-NEXT: pand %xmm6, %xmm7408; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm2[3,1,2,3]409; SSE-NEXT: pshuflw {{.*#+}} xmm9 = xmm8[0,1,2,0,4,5,6,7]410; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm1[1,1,1,1]411; SSE-NEXT: punpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm10[0]412; SSE-NEXT: pandn %xmm9, %xmm6413; SSE-NEXT: por %xmm7, %xmm6414; SSE-NEXT: movdqa {{.*#+}} xmm7 = [65535,65535,65535,0,65535,65535,65535,65535]415; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm8[0,3,1,3,4,5,6,7]416; SSE-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm8417; SSE-NEXT: psrlq $48, %xmm4418; SSE-NEXT: por %xmm8, %xmm4419; SSE-NEXT: pand %xmm7, %xmm4420; SSE-NEXT: pandn %xmm1, %xmm7421; SSE-NEXT: por %xmm4, %xmm7422; SSE-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm3[0]423; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0],xmm11[2,1]424; SSE-NEXT: movaps {{.*#+}} xmm3 = [65535,65535,65535,65535,0,0,0,65535]425; SSE-NEXT: andps %xmm3, %xmm0426; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]427; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,1,0,2,4,5,6,7]428; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]429; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]430; SSE-NEXT: andnps %xmm2, %xmm3431; SSE-NEXT: orps %xmm0, %xmm3432; SSE-NEXT: movaps %xmm3, (%rax)433; SSE-NEXT: movq %xmm7, 48(%rax)434; SSE-NEXT: movdqa %xmm6, 32(%rax)435; SSE-NEXT: movdqa %xmm5, 16(%rax)436; SSE-NEXT: retq437;438; AVX-LABEL: store_i16_stride7_vf4:439; AVX: # %bb.0:440; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax441; AVX-NEXT: movq {{[0-9]+}}(%rsp), %r10442; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero443; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero444; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]445; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero446; AVX-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero447; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]448; AVX-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero449; AVX-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero450; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]451; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm1[0,1,1,3]452; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,7,7]453; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm2[3,1,2,1]454; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[2,0,2,3,4,5,6,7]455; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm4[0,1,2,3,4],xmm3[5,6],xmm4[7]456; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm0[3,1,2,3]457; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm4[0,1,2,0,4,5,6,7]458; AVX-NEXT: vmovddup {{.*#+}} xmm6 = mem[0,0]459; AVX-NEXT: vshufps {{.*#+}} xmm7 = xmm6[1,1,1,1]460; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0]461; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm5[2,3,4],xmm3[5,6,7]462; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,3,1,3,4,5,6,7]463; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2],xmm6[3],xmm4[4,5,6,7]464; AVX-NEXT: vpsrldq {{.*#+}} xmm5 = xmm2[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero465; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0],xmm4[1,2,3,4,5,6,7]466; AVX-NEXT: vpshufb {{.*#+}} xmm5 = xmm1[0,1,8,9,u,u,u,u,u,u,u,u,2,3,2,3]467; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]468; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm2[0,1,0,2,4,5,6,7]469; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1],xmm7[2,3],xmm5[4,5,6,7]470; AVX-NEXT: vpxor %xmm7, %xmm7, %xmm7471; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm0[0],xmm7[1,2,3],xmm0[4],xmm7[5,6,7]472; AVX-NEXT: vpmovzxwq {{.*#+}} xmm8 = xmm6[0],zero,zero,zero,xmm6[1],zero,zero,zero473; AVX-NEXT: vpackusdw %xmm8, %xmm7, %xmm7474; AVX-NEXT: vpackusdw %xmm7, %xmm7, %xmm7475; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3],xmm7[4,5,6],xmm5[7]476; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3],xmm1[4,5,6,7]477; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[10,11,2,3,6,7,u,u,u,u,u,u,4,5,12,13]478; AVX-NEXT: vmovsldup {{.*#+}} xmm0 = xmm0[0,0,2,2]479; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]480; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm6[5],xmm0[6,7]481; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4,5],xmm1[6,7]482; AVX-NEXT: vmovdqa %xmm0, 16(%rax)483; AVX-NEXT: vmovdqa %xmm5, (%rax)484; AVX-NEXT: vmovq %xmm4, 48(%rax)485; AVX-NEXT: vmovdqa %xmm3, 32(%rax)486; AVX-NEXT: retq487;488; AVX2-LABEL: store_i16_stride7_vf4:489; AVX2: # %bb.0:490; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax491; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %r10492; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero493; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero494; AVX2-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero495; AVX2-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero496; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]497; AVX2-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero498; AVX2-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero499; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]500; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2501; AVX2-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero502; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0503; AVX2-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm4[0],ymm0[2],ymm4[2]504; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm0[0,2,1,3]505; AVX2-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,1,8,9],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm2[2,3],zero,zero,ymm2[18,19,26,27],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero506; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm2[2,3,0,1]507; AVX2-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,zero,zero,ymm5[0,1,8,9,4,5,6,7,4,5],zero,zero,ymm5[26,27],zero,zero,zero,zero,ymm5[24,25,20,21,22,23,20,21,28,29]508; AVX2-NEXT: vpor %ymm5, %ymm4, %ymm4509; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,0,2]510; AVX2-NEXT: vpshufb {{.*#+}} ymm5 = ymm0[2,3,2,3,2,3,2,3],zero,zero,zero,zero,ymm0[0,1,2,3,18,19,18,19,18,19,18,19,26,27],zero,zero,ymm0[16,17,18,19]511; AVX2-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,zero,zero,zero,zero,ymm1[0,1,8,9],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm1[18,19],zero,zero,zero,zero512; AVX2-NEXT: vpor %ymm5, %ymm6, %ymm5513; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]514; AVX2-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm4515; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[12,13,6,7],zero,zero,zero,zero,ymm0[4,5,4,5,4,5,4,5,28,29,22,23,30,31],zero,zero,ymm0[20,21,20,21,20,21,20,21]516; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm1[4,5,12,13],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm1[22,23],zero,zero,zero,zero,zero,zero,zero,zero517; AVX2-NEXT: vpor %ymm0, %ymm1, %ymm0518; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[14,15,14,15,14,15,14,15,4,5,6,7,14,15,14,15,30,31,30,31,30,31,30,31,20,21,22,23,30,31,30,31]519; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm3[3,1,2,1]520; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[2,0,2,3,4,5,6,7]521; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,0,0,0,0,0,65535,0,0,0,0,0,0,0,0]522; AVX2-NEXT: vpblendvb %ymm3, %ymm2, %ymm1, %ymm1523; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,0,0,0,0]524; AVX2-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm0525; AVX2-NEXT: vmovdqa %ymm4, (%rax)526; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1527; AVX2-NEXT: vmovq %xmm1, 48(%rax)528; AVX2-NEXT: vmovdqa %xmm0, 32(%rax)529; AVX2-NEXT: vzeroupper530; AVX2-NEXT: retq531;532; AVX2-FP-LABEL: store_i16_stride7_vf4:533; AVX2-FP: # %bb.0:534; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax535; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %r10536; AVX2-FP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero537; AVX2-FP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero538; AVX2-FP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero539; AVX2-FP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero540; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]541; AVX2-FP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero542; AVX2-FP-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero543; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]544; AVX2-FP-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2545; AVX2-FP-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero546; AVX2-FP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0547; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm4[0],ymm0[2],ymm4[2]548; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm0[0,2,1,3]549; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,1,8,9],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm2[2,3],zero,zero,ymm2[18,19,26,27],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero550; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm2[2,3,0,1]551; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,zero,zero,ymm5[0,1,8,9,4,5,6,7,4,5],zero,zero,ymm5[26,27],zero,zero,zero,zero,ymm5[24,25,20,21,22,23,20,21,28,29]552; AVX2-FP-NEXT: vpor %ymm5, %ymm4, %ymm4553; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,0,2]554; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm5 = ymm0[2,3,2,3,2,3,2,3],zero,zero,zero,zero,ymm0[0,1,2,3,18,19,18,19,18,19,18,19,26,27],zero,zero,ymm0[16,17,18,19]555; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,zero,zero,zero,zero,ymm1[0,1,8,9],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm1[18,19],zero,zero,zero,zero556; AVX2-FP-NEXT: vpor %ymm5, %ymm6, %ymm5557; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]558; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm4559; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[12,13,6,7],zero,zero,zero,zero,ymm0[4,5,4,5,4,5,4,5,28,29,22,23,30,31],zero,zero,ymm0[20,21,20,21,20,21,20,21]560; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm1[4,5,12,13],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm1[22,23],zero,zero,zero,zero,zero,zero,zero,zero561; AVX2-FP-NEXT: vpor %ymm0, %ymm1, %ymm0562; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[14,15,14,15,14,15,14,15,4,5,6,7,14,15,14,15,30,31,30,31,30,31,30,31,20,21,22,23,30,31,30,31]563; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm2 = xmm3[4,5,12,13,4,5,6,7,8,9,10,11,4,5,6,7]564; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,0,0,0,0,0,65535,0,0,0,0,0,0,0,0]565; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm2, %ymm1, %ymm1566; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,0,0,0,0]567; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm0568; AVX2-FP-NEXT: vmovdqa %ymm4, (%rax)569; AVX2-FP-NEXT: vextracti128 $1, %ymm0, %xmm1570; AVX2-FP-NEXT: vmovq %xmm1, 48(%rax)571; AVX2-FP-NEXT: vmovdqa %xmm0, 32(%rax)572; AVX2-FP-NEXT: vzeroupper573; AVX2-FP-NEXT: retq574;575; AVX2-FCP-LABEL: store_i16_stride7_vf4:576; AVX2-FCP: # %bb.0:577; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax578; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r10579; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero580; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero581; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero582; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero583; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]584; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero585; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero586; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]587; AVX2-FCP-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm4588; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm5 = mem[0],zero589; AVX2-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0590; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm5[0],ymm0[2],ymm5[2]591; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [1,5,3,7,1,5,3,7]592; AVX2-FCP-NEXT: # ymm1 = mem[0,1,0,1]593; AVX2-FCP-NEXT: vpermd %ymm0, %ymm1, %ymm1594; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm1[0,1,4,5,8,9],zero,zero,zero,zero,zero,zero,zero,zero,ymm1[18,19,22,23,26,27],zero,zero,zero,zero,zero,zero,zero,zero595; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [5,7,1,3,7,0,0,0]596; AVX2-FCP-NEXT: vpermd %ymm4, %ymm5, %ymm5597; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[0,1,4,5],zero,zero,zero,zero,zero,zero,ymm5[10,11,14,15,2,3,18,19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero598; AVX2-FCP-NEXT: vpor %ymm1, %ymm5, %ymm1599; AVX2-FCP-NEXT: vinserti128 $1, %xmm2, %ymm3, %ymm2600; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,zero,zero,ymm2[0,1,8,9,4,5,6,7,4,5],zero,zero,ymm2[26,27],zero,zero,zero,zero,ymm2[24,25,20,21,22,23,20,21,28,29]601; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm4[0,1,8,9],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[2,3],zero,zero,ymm4[18,19,26,27],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero602; AVX2-FCP-NEXT: vpor %ymm2, %ymm3, %ymm2603; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [0,4,2,6,0,4,2,6]604; AVX2-FCP-NEXT: # ymm3 = mem[0,1,0,1]605; AVX2-FCP-NEXT: vpermd %ymm0, %ymm3, %ymm0606; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,0,1,4,5,8,9,u,u,u,u,u,u,u,u,18,19,22,23,26,27,u,u,u,u]607; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]608; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm2, %ymm0, %ymm0609; AVX2-FCP-NEXT: vmovdqa %ymm0, (%rax)610; AVX2-FCP-NEXT: vextracti128 $1, %ymm1, %xmm0611; AVX2-FCP-NEXT: vmovq %xmm0, 48(%rax)612; AVX2-FCP-NEXT: vmovdqa %xmm1, 32(%rax)613; AVX2-FCP-NEXT: vzeroupper614; AVX2-FCP-NEXT: retq615;616; AVX512-LABEL: store_i16_stride7_vf4:617; AVX512: # %bb.0:618; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax619; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %r10620; AVX512-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero621; AVX512-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero622; AVX512-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero623; AVX512-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero624; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]625; AVX512-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero626; AVX512-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero627; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]628; AVX512-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2629; AVX512-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero630; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0631; AVX512-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm4[0],ymm0[2],ymm4[2]632; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm0[0,2,1,3]633; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,0,2]634; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = ymm0[u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm0[0,1,u,u,u,u,u,u,u,u,18,19,26,27],zero,zero,ymm0[u,u,u,u]635; AVX512-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u],zero,zero,zero,zero,ymm0[4,5,u,u,u,u,u,u,u,u,22,23,30,31],zero,zero,ymm0[u,u,u,u,u,u,u,u]636; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm4, %zmm0637; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = ymm1[u,u,u,u,u,u,u,u,0,1,8,9],zero,zero,ymm1[u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm1[18,19,u,u,u,u]638; AVX512-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,4,5,12,13],zero,zero,ymm1[u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm1[22,23,u,u,u,u,u,u,u,u]639; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm4, %zmm1640; AVX512-NEXT: vporq %zmm0, %zmm1, %zmm0641; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm2[2,3,0,1]642; AVX512-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm1[0,1,8,9,u,u,u,u,u,u],zero,zero,ymm1[26,27],zero,zero,zero,zero,ymm1[u,u,u,u,u,u,20,21,28,29]643; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm2[u,u,u,u,u,u,6,7,14,15],zero,zero,ymm2[30,31,u,u,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero644; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm1, %zmm1645; AVX512-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[0,1,8,9],zero,zero,zero,zero,ymm2[u,u,u,u,u,u,2,3],zero,zero,ymm2[18,19,26,27,u,u,u,u,u,u],zero,zero,zero,zero646; AVX512-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[4,5,12,13,u,u,u,u,u,u],zero,zero,zero,zero,ymm3[6,7],zero,zero,ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u]647; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm2, %zmm2648; AVX512-NEXT: vporq %zmm1, %zmm2, %zmm1649; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm0 ^ (mem & (zmm1 ^ zmm0))650; AVX512-NEXT: vextracti32x4 $2, %zmm1, 32(%rax)651; AVX512-NEXT: vextracti32x4 $3, %zmm1, %xmm0652; AVX512-NEXT: vmovq %xmm0, 48(%rax)653; AVX512-NEXT: vmovdqa %ymm1, (%rax)654; AVX512-NEXT: vzeroupper655; AVX512-NEXT: retq656;657; AVX512-FCP-LABEL: store_i16_stride7_vf4:658; AVX512-FCP: # %bb.0:659; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax660; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r10661; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero662; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero663; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero664; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero665; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]666; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero667; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero668; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]669; AVX512-FCP-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm4670; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm5 = mem[0],zero671; AVX512-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0672; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm5[0],ymm0[2],ymm5[2]673; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [0,4,2,6,0,4,2,6]674; AVX512-FCP-NEXT: # ymm1 = mem[0,1,0,1]675; AVX512-FCP-NEXT: vpermd %ymm0, %ymm1, %ymm1676; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,zero,zero,zero,zero,ymm1[0,1,4,5,8,9],zero,zero,zero,zero,zero,zero,zero,zero,ymm1[18,19,22,23,26,27],zero,zero,zero,zero677; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm5 = [1,5,3,7,1,5,3,7]678; AVX512-FCP-NEXT: # ymm5 = mem[0,1,0,1]679; AVX512-FCP-NEXT: vpermd %ymm0, %ymm5, %ymm0680; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,1,4,5,8,9],zero,zero,zero,zero,zero,zero,zero,zero,ymm0[18,19,22,23,26,27],zero,zero,zero,zero,zero,zero,zero,zero681; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0682; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm4[0,1,8,9],zero,zero,zero,zero,ymm4[u,u,u,u,u,u,2,3],zero,zero,ymm4[18,19,26,27,u,u,u,u,u,u],zero,zero,zero,zero683; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,3,0,1]684; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[0,1,8,9,u,u,u,u,u,u],zero,zero,ymm4[26,27],zero,zero,zero,zero,ymm4[u,u,u,u,u,u,20,21,28,29]685; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm4 = mem & (ymm4 | ymm1)686; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [9,11,1,3,11,0,0,0]687; AVX512-FCP-NEXT: vpermi2d %ymm3, %ymm2, %ymm1688; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[0,1,4,5],zero,zero,zero,zero,zero,zero,ymm1[10,11,14,15,2,3,18,19],zero,zero,zero,zero,zero,zero,ymm1[u,u,u,u,u,u,u,u]689; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm4, %zmm1690; AVX512-FCP-NEXT: vporq %zmm0, %zmm1, %zmm0691; AVX512-FCP-NEXT: vextracti32x4 $2, %zmm0, 32(%rax)692; AVX512-FCP-NEXT: vextracti32x4 $3, %zmm0, %xmm1693; AVX512-FCP-NEXT: vmovq %xmm1, 48(%rax)694; AVX512-FCP-NEXT: vmovdqa %ymm0, (%rax)695; AVX512-FCP-NEXT: vzeroupper696; AVX512-FCP-NEXT: retq697;698; AVX512DQ-LABEL: store_i16_stride7_vf4:699; AVX512DQ: # %bb.0:700; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax701; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %r10702; AVX512DQ-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero703; AVX512DQ-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero704; AVX512DQ-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero705; AVX512DQ-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero706; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]707; AVX512DQ-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero708; AVX512DQ-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero709; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]710; AVX512DQ-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2711; AVX512DQ-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero712; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0713; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm4[0],ymm0[2],ymm4[2]714; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm0[0,2,1,3]715; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,0,2]716; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = ymm0[u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm0[0,1,u,u,u,u,u,u,u,u,18,19,26,27],zero,zero,ymm0[u,u,u,u]717; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u],zero,zero,zero,zero,ymm0[4,5,u,u,u,u,u,u,u,u,22,23,30,31],zero,zero,ymm0[u,u,u,u,u,u,u,u]718; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm4, %zmm0719; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = ymm1[u,u,u,u,u,u,u,u,0,1,8,9],zero,zero,ymm1[u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm1[18,19,u,u,u,u]720; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,4,5,12,13],zero,zero,ymm1[u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm1[22,23,u,u,u,u,u,u,u,u]721; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm4, %zmm1722; AVX512DQ-NEXT: vporq %zmm0, %zmm1, %zmm0723; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm2[2,3,0,1]724; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm1[0,1,8,9,u,u,u,u,u,u],zero,zero,ymm1[26,27],zero,zero,zero,zero,ymm1[u,u,u,u,u,u,20,21,28,29]725; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm2[u,u,u,u,u,u,6,7,14,15],zero,zero,ymm2[30,31,u,u,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero726; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm1, %zmm1727; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[0,1,8,9],zero,zero,zero,zero,ymm2[u,u,u,u,u,u,2,3],zero,zero,ymm2[18,19,26,27,u,u,u,u,u,u],zero,zero,zero,zero728; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[4,5,12,13,u,u,u,u,u,u],zero,zero,zero,zero,ymm3[6,7],zero,zero,ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u]729; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm2, %zmm2730; AVX512DQ-NEXT: vporq %zmm1, %zmm2, %zmm1731; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm0 ^ (mem & (zmm1 ^ zmm0))732; AVX512DQ-NEXT: vextracti32x4 $2, %zmm1, 32(%rax)733; AVX512DQ-NEXT: vextracti32x4 $3, %zmm1, %xmm0734; AVX512DQ-NEXT: vmovq %xmm0, 48(%rax)735; AVX512DQ-NEXT: vmovdqa %ymm1, (%rax)736; AVX512DQ-NEXT: vzeroupper737; AVX512DQ-NEXT: retq738;739; AVX512DQ-FCP-LABEL: store_i16_stride7_vf4:740; AVX512DQ-FCP: # %bb.0:741; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax742; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r10743; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero744; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero745; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero746; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero747; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]748; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero749; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero750; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]751; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm4752; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm5 = mem[0],zero753; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0754; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm5[0],ymm0[2],ymm5[2]755; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [0,4,2,6,0,4,2,6]756; AVX512DQ-FCP-NEXT: # ymm1 = mem[0,1,0,1]757; AVX512DQ-FCP-NEXT: vpermd %ymm0, %ymm1, %ymm1758; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,zero,zero,zero,zero,ymm1[0,1,4,5,8,9],zero,zero,zero,zero,zero,zero,zero,zero,ymm1[18,19,22,23,26,27],zero,zero,zero,zero759; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm5 = [1,5,3,7,1,5,3,7]760; AVX512DQ-FCP-NEXT: # ymm5 = mem[0,1,0,1]761; AVX512DQ-FCP-NEXT: vpermd %ymm0, %ymm5, %ymm0762; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,1,4,5,8,9],zero,zero,zero,zero,zero,zero,zero,zero,ymm0[18,19,22,23,26,27],zero,zero,zero,zero,zero,zero,zero,zero763; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0764; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm4[0,1,8,9],zero,zero,zero,zero,ymm4[u,u,u,u,u,u,2,3],zero,zero,ymm4[18,19,26,27,u,u,u,u,u,u],zero,zero,zero,zero765; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,3,0,1]766; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[0,1,8,9,u,u,u,u,u,u],zero,zero,ymm4[26,27],zero,zero,zero,zero,ymm4[u,u,u,u,u,u,20,21,28,29]767; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm4 = mem & (ymm4 | ymm1)768; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [9,11,1,3,11,0,0,0]769; AVX512DQ-FCP-NEXT: vpermi2d %ymm3, %ymm2, %ymm1770; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[0,1,4,5],zero,zero,zero,zero,zero,zero,ymm1[10,11,14,15,2,3,18,19],zero,zero,zero,zero,zero,zero,ymm1[u,u,u,u,u,u,u,u]771; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm4, %zmm1772; AVX512DQ-FCP-NEXT: vporq %zmm0, %zmm1, %zmm0773; AVX512DQ-FCP-NEXT: vextracti32x4 $2, %zmm0, 32(%rax)774; AVX512DQ-FCP-NEXT: vextracti32x4 $3, %zmm0, %xmm1775; AVX512DQ-FCP-NEXT: vmovq %xmm1, 48(%rax)776; AVX512DQ-FCP-NEXT: vmovdqa %ymm0, (%rax)777; AVX512DQ-FCP-NEXT: vzeroupper778; AVX512DQ-FCP-NEXT: retq779;780; AVX512BW-LABEL: store_i16_stride7_vf4:781; AVX512BW: # %bb.0:782; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %rax783; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %r10784; AVX512BW-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero785; AVX512BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero786; AVX512BW-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero787; AVX512BW-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero788; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]789; AVX512BW-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero790; AVX512BW-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero791; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]792; AVX512BW-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2793; AVX512BW-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero794; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0795; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[2],ymm3[2]796; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm1 = [0,4,8,12,32,40,36,1,5,9,13,33,41,37,2,6,10,14,34,42,38,3,7,11,15,35,43,39,0,0,0,0]797; AVX512BW-NEXT: vpermi2w %zmm0, %zmm2, %zmm1798; AVX512BW-NEXT: vextracti32x4 $2, %zmm1, 32(%rax)799; AVX512BW-NEXT: vextracti32x4 $3, %zmm1, %xmm0800; AVX512BW-NEXT: vmovq %xmm0, 48(%rax)801; AVX512BW-NEXT: vmovdqa %ymm1, (%rax)802; AVX512BW-NEXT: vzeroupper803; AVX512BW-NEXT: retq804;805; AVX512BW-FCP-LABEL: store_i16_stride7_vf4:806; AVX512BW-FCP: # %bb.0:807; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax808; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r10809; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero810; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero811; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero812; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero813; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]814; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero815; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero816; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]817; AVX512BW-FCP-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2818; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero819; AVX512BW-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0820; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} ymm1 = [0,2,4,0]821; AVX512BW-FCP-NEXT: vpermi2q %ymm3, %ymm0, %ymm1822; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm0 = [0,4,8,12,32,36,40,1,5,9,13,33,37,41,2,6,10,14,34,38,42,3,7,11,15,35,39,43,0,0,0,0]823; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm2, %zmm0824; AVX512BW-FCP-NEXT: vextracti32x4 $2, %zmm0, 32(%rax)825; AVX512BW-FCP-NEXT: vextracti32x4 $3, %zmm0, %xmm1826; AVX512BW-FCP-NEXT: vmovq %xmm1, 48(%rax)827; AVX512BW-FCP-NEXT: vmovdqa %ymm0, (%rax)828; AVX512BW-FCP-NEXT: vzeroupper829; AVX512BW-FCP-NEXT: retq830;831; AVX512DQ-BW-LABEL: store_i16_stride7_vf4:832; AVX512DQ-BW: # %bb.0:833; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %rax834; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %r10835; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero836; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero837; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero838; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero839; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]840; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero841; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero842; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]843; AVX512DQ-BW-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2844; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero845; AVX512DQ-BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0846; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[2],ymm3[2]847; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm1 = [0,4,8,12,32,40,36,1,5,9,13,33,41,37,2,6,10,14,34,42,38,3,7,11,15,35,43,39,0,0,0,0]848; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm2, %zmm1849; AVX512DQ-BW-NEXT: vextracti32x4 $2, %zmm1, 32(%rax)850; AVX512DQ-BW-NEXT: vextracti32x4 $3, %zmm1, %xmm0851; AVX512DQ-BW-NEXT: vmovq %xmm0, 48(%rax)852; AVX512DQ-BW-NEXT: vmovdqa %ymm1, (%rax)853; AVX512DQ-BW-NEXT: vzeroupper854; AVX512DQ-BW-NEXT: retq855;856; AVX512DQ-BW-FCP-LABEL: store_i16_stride7_vf4:857; AVX512DQ-BW-FCP: # %bb.0:858; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax859; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r10860; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero861; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero862; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero863; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero864; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]865; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero866; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero867; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]868; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2869; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero870; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0871; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} ymm1 = [0,2,4,0]872; AVX512DQ-BW-FCP-NEXT: vpermi2q %ymm3, %ymm0, %ymm1873; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm0 = [0,4,8,12,32,36,40,1,5,9,13,33,37,41,2,6,10,14,34,38,42,3,7,11,15,35,39,43,0,0,0,0]874; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm2, %zmm0875; AVX512DQ-BW-FCP-NEXT: vextracti32x4 $2, %zmm0, 32(%rax)876; AVX512DQ-BW-FCP-NEXT: vextracti32x4 $3, %zmm0, %xmm1877; AVX512DQ-BW-FCP-NEXT: vmovq %xmm1, 48(%rax)878; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm0, (%rax)879; AVX512DQ-BW-FCP-NEXT: vzeroupper880; AVX512DQ-BW-FCP-NEXT: retq881 %in.vec0 = load <4 x i16>, ptr %in.vecptr0, align 64882 %in.vec1 = load <4 x i16>, ptr %in.vecptr1, align 64883 %in.vec2 = load <4 x i16>, ptr %in.vecptr2, align 64884 %in.vec3 = load <4 x i16>, ptr %in.vecptr3, align 64885 %in.vec4 = load <4 x i16>, ptr %in.vecptr4, align 64886 %in.vec5 = load <4 x i16>, ptr %in.vecptr5, align 64887 %in.vec6 = load <4 x i16>, ptr %in.vecptr6, align 64888 %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>889 %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>890 %3 = shufflevector <4 x i16> %in.vec4, <4 x i16> %in.vec5, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>891 %4 = 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>892 %5 = shufflevector <4 x i16> %in.vec6, <4 x i16> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>893 %6 = shufflevector <8 x i16> %3, <8 x i16> %5, <12 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>894 %7 = shufflevector <12 x i16> %6, <12 x i16> poison, <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 undef, i32 undef, i32 undef, i32 undef>895 %8 = shufflevector <16 x i16> %4, <16 x i16> %7, <28 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>896 %interleaved.vec = shufflevector <28 x i16> %8, <28 x i16> poison, <28 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 25, i32 2, i32 6, i32 10, i32 14, i32 18, i32 22, i32 26, i32 3, i32 7, i32 11, i32 15, i32 19, i32 23, i32 27>897 store <28 x i16> %interleaved.vec, ptr %out.vec, align 64898 ret void899}900 901define void @store_i16_stride7_vf8(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %in.vecptr5, ptr %in.vecptr6, ptr %out.vec) nounwind {902; SSE-LABEL: store_i16_stride7_vf8:903; SSE: # %bb.0:904; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax905; SSE-NEXT: movdqa (%rdi), %xmm3906; SSE-NEXT: movdqa (%rsi), %xmm8907; SSE-NEXT: movdqa (%rdx), %xmm5908; SSE-NEXT: movdqa (%rcx), %xmm11909; SSE-NEXT: movdqa (%r8), %xmm4910; SSE-NEXT: movdqa (%r9), %xmm10911; SSE-NEXT: movdqa (%rax), %xmm2912; SSE-NEXT: movdqa %xmm5, %xmm0913; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm11[4],xmm0[5],xmm11[5],xmm0[6],xmm11[6],xmm0[7],xmm11[7]914; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill915; SSE-NEXT: movdqa %xmm3, %xmm6916; SSE-NEXT: punpckhwd {{.*#+}} xmm6 = xmm6[4],xmm8[4],xmm6[5],xmm8[5],xmm6[6],xmm8[6],xmm6[7],xmm8[7]917; SSE-NEXT: movdqa %xmm6, %xmm1918; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm0[2,3]919; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm2[2,3,2,3]920; SSE-NEXT: movdqa {{.*#+}} xmm12 = [65535,0,65535,65535,65535,65535,65535,65535]921; SSE-NEXT: movdqa %xmm4, %xmm7922; SSE-NEXT: punpcklwd {{.*#+}} xmm7 = xmm7[0],xmm10[0],xmm7[1],xmm10[1],xmm7[2],xmm10[2],xmm7[3],xmm10[3]923; SSE-NEXT: movdqa %xmm10, %xmm13924; SSE-NEXT: punpckhwd {{.*#+}} xmm13 = xmm13[4],xmm4[4],xmm13[5],xmm4[5],xmm13[6],xmm4[6],xmm13[7],xmm4[7]925; SSE-NEXT: pshuflw {{.*#+}} xmm13 = xmm13[2,2,2,2,4,5,6,7]926; SSE-NEXT: pshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,5,5,4]927; SSE-NEXT: pand %xmm12, %xmm13928; SSE-NEXT: pandn %xmm9, %xmm12929; SSE-NEXT: por %xmm13, %xmm12930; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,2],xmm12[0,3]931; SSE-NEXT: movdqa {{.*#+}} xmm9 = [65535,65535,65535,0,65535,65535,65535,65535]932; SSE-NEXT: pandn %xmm2, %xmm9933; SSE-NEXT: movdqa %xmm7, %xmm12934; SSE-NEXT: movdqa %xmm7, %xmm13935; SSE-NEXT: psrldq {{.*#+}} xmm13 = xmm13[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero936; SSE-NEXT: por %xmm9, %xmm13937; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm5[2,2,2,2]938; SSE-NEXT: movdqa {{.*#+}} xmm14 = [65535,65535,65535,65535,65535,65535,0,65535]939; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm11[0,1,2,3,4,4,4,4]940; SSE-NEXT: pand %xmm14, %xmm15941; SSE-NEXT: pandn %xmm9, %xmm14942; SSE-NEXT: movaps {{.*#+}} xmm9 = [65535,0,0,0,65535,65535,65535,65535]943; SSE-NEXT: por %xmm15, %xmm14944; SSE-NEXT: movdqa %xmm6, %xmm15945; SSE-NEXT: shufps {{.*#+}} xmm15 = xmm15[0,1],xmm14[3,3]946; SSE-NEXT: pshuflw {{.*#+}} xmm14 = xmm11[3,3,3,3,4,5,6,7]947; SSE-NEXT: shufps {{.*#+}} xmm14 = xmm14[0,1],xmm15[0,2]948; SSE-NEXT: andps %xmm9, %xmm14949; SSE-NEXT: andnps %xmm13, %xmm9950; SSE-NEXT: orps %xmm14, %xmm9951; SSE-NEXT: pshufd {{.*#+}} xmm13 = xmm2[0,1,0,1]952; SSE-NEXT: movdqa {{.*#+}} xmm14 = [65535,65535,65535,65535,65535,0,65535,65535]953; SSE-NEXT: pslldq {{.*#+}} xmm12 = zero,zero,xmm12[0,1,2,3,4,5,6,7,8,9,10,11,12,13]954; SSE-NEXT: pand %xmm14, %xmm12955; SSE-NEXT: pandn %xmm13, %xmm14956; SSE-NEXT: por %xmm12, %xmm14957; SSE-NEXT: movdqa %xmm11, %xmm12958; SSE-NEXT: psrld $16, %xmm12959; SSE-NEXT: movdqa %xmm5, %xmm13960; SSE-NEXT: punpckldq {{.*#+}} xmm13 = xmm13[0],xmm12[0],xmm13[1],xmm12[1]961; SSE-NEXT: movdqa {{.*#+}} xmm12 = [65535,0,0,65535,65535,65535,65535,65535]962; SSE-NEXT: movdqa %xmm8, %xmm15963; SSE-NEXT: punpcklwd {{.*#+}} xmm15 = xmm15[0],xmm3[0],xmm15[1],xmm3[1],xmm15[2],xmm3[2],xmm15[3],xmm3[3]964; SSE-NEXT: pshuflw {{.*#+}} xmm15 = xmm15[2,2,2,2,4,5,6,7]965; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,5,4]966; SSE-NEXT: pand %xmm12, %xmm15967; SSE-NEXT: pandn %xmm13, %xmm12968; SSE-NEXT: movdqa %xmm5, %xmm13969; SSE-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm11[0],xmm5[1],xmm11[1],xmm5[2],xmm11[2],xmm5[3],xmm11[3]970; SSE-NEXT: por %xmm15, %xmm12971; SSE-NEXT: movdqa {{.*#+}} xmm15 = [65535,65535,65535,0,0,0,65535,65535]972; SSE-NEXT: pand %xmm15, %xmm12973; SSE-NEXT: pandn %xmm14, %xmm15974; SSE-NEXT: movdqa %xmm4, %xmm14975; SSE-NEXT: punpckhwd {{.*#+}} xmm14 = xmm14[4],xmm10[4],xmm14[5],xmm10[5],xmm14[6],xmm10[6],xmm14[7],xmm10[7]976; SSE-NEXT: por %xmm12, %xmm15977; SSE-NEXT: psrlq $48, %xmm11978; SSE-NEXT: punpckhqdq {{.*#+}} xmm13 = xmm13[1],xmm11[1]979; SSE-NEXT: movdqa {{.*#+}} xmm11 = [65535,65535,65535,0,0,65535,65535,65535]980; SSE-NEXT: pandn %xmm13, %xmm11981; SSE-NEXT: movdqa %xmm6, %xmm13982; SSE-NEXT: psrldq {{.*#+}} xmm13 = xmm13[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero983; SSE-NEXT: por %xmm11, %xmm13984; SSE-NEXT: psrld $16, %xmm10985; SSE-NEXT: movdqa %xmm4, %xmm11986; SSE-NEXT: punpckhdq {{.*#+}} xmm11 = xmm11[2],xmm10[2],xmm11[3],xmm10[3]987; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,0,0,65535]988; SSE-NEXT: movdqa %xmm0, %xmm12989; SSE-NEXT: pandn %xmm11, %xmm12990; SSE-NEXT: por %xmm13, %xmm12991; SSE-NEXT: movdqa {{.*#+}} xmm10 = [0,65535,65535,65535,65535,65535,65535,0]992; SSE-NEXT: pand %xmm10, %xmm12993; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm2[3,3,3,3]994; SSE-NEXT: pandn %xmm11, %xmm10995; SSE-NEXT: por %xmm12, %xmm10996; SSE-NEXT: movdqa %xmm3, %xmm12997; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm3[1,1,1,1,4,5,6,7]998; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],xmm8[3]999; SSE-NEXT: psrld $16, %xmm81000; SSE-NEXT: punpckldq {{.*#+}} xmm12 = xmm12[0],xmm8[0],xmm12[1],xmm8[1]1001; SSE-NEXT: movdqa %xmm0, %xmm81002; SSE-NEXT: pandn %xmm12, %xmm81003; SSE-NEXT: pshufhw {{.*#+}} xmm12 = xmm5[0,1,2,3,4,5,6,6]1004; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm12[2,1,2,3]1005; SSE-NEXT: pand %xmm0, %xmm121006; SSE-NEXT: por %xmm8, %xmm121007; SSE-NEXT: movdqa {{.*#+}} xmm8 = [65535,65535,0,0,0,65535,65535,65535]1008; SSE-NEXT: pand %xmm8, %xmm121009; SSE-NEXT: movdqa %xmm7, %xmm131010; SSE-NEXT: shufps {{.*#+}} xmm13 = xmm13[2,2],xmm2[1,1]1011; SSE-NEXT: pandn %xmm13, %xmm81012; SSE-NEXT: por %xmm12, %xmm81013; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload1014; SSE-NEXT: pslldq {{.*#+}} xmm12 = zero,zero,zero,zero,zero,zero,xmm12[0,1,2,3,4,5,6,7,8,9]1015; SSE-NEXT: pslldq {{.*#+}} xmm6 = zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9,10,11,12,13]1016; SSE-NEXT: pand %xmm0, %xmm61017; SSE-NEXT: pandn %xmm12, %xmm01018; SSE-NEXT: por %xmm6, %xmm01019; SSE-NEXT: movaps %xmm2, %xmm61020; SSE-NEXT: shufps {{.*#+}} xmm6 = xmm6[2,3],xmm14[0,1]1021; SSE-NEXT: punpckhwd {{.*#+}} xmm4 = xmm4[4,4,5,5,6,6,7,7]1022; SSE-NEXT: shufps {{.*#+}} xmm6 = xmm6[2,0],xmm4[2,1]1023; SSE-NEXT: movaps {{.*#+}} xmm4 = [65535,65535,65535,0,0,0,0,65535]1024; SSE-NEXT: andps %xmm4, %xmm61025; SSE-NEXT: andnps %xmm0, %xmm41026; SSE-NEXT: orps %xmm6, %xmm41027; SSE-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm3[0]1028; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[2,0],xmm11[2,1]1029; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,0,1,1]1030; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]1031; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]1032; SSE-NEXT: movaps {{.*#+}} xmm2 = [65535,65535,65535,65535,0,0,0,65535]1033; SSE-NEXT: andps %xmm2, %xmm51034; SSE-NEXT: andnps %xmm0, %xmm21035; SSE-NEXT: orps %xmm5, %xmm21036; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax1037; SSE-NEXT: movaps %xmm2, (%rax)1038; SSE-NEXT: movaps %xmm4, 64(%rax)1039; SSE-NEXT: movdqa %xmm15, 16(%rax)1040; SSE-NEXT: movdqa %xmm8, 32(%rax)1041; SSE-NEXT: movaps %xmm9, 48(%rax)1042; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0,1,3]1043; SSE-NEXT: movaps %xmm1, 80(%rax)1044; SSE-NEXT: movdqa %xmm10, 96(%rax)1045; SSE-NEXT: retq1046;1047; AVX-LABEL: store_i16_stride7_vf8:1048; AVX: # %bb.0:1049; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax1050; AVX-NEXT: movq {{[0-9]+}}(%rsp), %r101051; AVX-NEXT: vmovdqa (%rdi), %xmm71052; AVX-NEXT: vmovdqa (%rsi), %xmm81053; AVX-NEXT: vmovdqa (%rdx), %xmm21054; AVX-NEXT: vmovdqa (%rcx), %xmm41055; AVX-NEXT: vmovdqa (%r8), %xmm01056; AVX-NEXT: vmovdqa (%r9), %xmm31057; AVX-NEXT: vmovdqa (%r10), %xmm11058; AVX-NEXT: vpsrld $16, %xmm4, %xmm51059; AVX-NEXT: vpunpckldq {{.*#+}} xmm5 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]1060; AVX-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]1061; AVX-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[2,2,2,2,4,5,6,7]1062; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,5,4]1063; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm6[0],xmm5[1,2],xmm6[3,4,5,6,7]1064; AVX-NEXT: vpunpcklwd {{.*#+}} xmm9 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3]1065; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm9[0,0,1,1]1066; AVX-NEXT: vpunpcklwd {{.*#+}} xmm10 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3]1067; AVX-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[0,1,2,2,4,5,6,7]1068; AVX-NEXT: vpshufd {{.*#+}} xmm10 = xmm10[0,1,2,1]1069; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm10[0,1],xmm6[2,3],xmm10[4,5,6,7]1070; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm51071; AVX-NEXT: vmovaps {{.*#+}} ymm6 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]1072; AVX-NEXT: vandps %ymm6, %ymm5, %ymm51073; AVX-NEXT: vpunpcklwd {{.*#+}} xmm10 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]1074; AVX-NEXT: vpslldq {{.*#+}} xmm11 = zero,zero,xmm10[0,1,2,3,4,5,6,7,8,9,10,11,12,13]1075; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm1[0,1,0,1]1076; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2,3,4],xmm12[5],xmm11[6,7]1077; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm10[0,1,0,1]1078; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm1[0,0,0,0]1079; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,5],xmm13[6,7]1080; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm12, %ymm111081; AVX-NEXT: vandnps %ymm11, %ymm6, %ymm61082; AVX-NEXT: vorps %ymm6, %ymm5, %ymm51083; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm2[2,2,2,2]1084; AVX-NEXT: vpshuflw {{.*#+}} xmm11 = xmm4[3,3,3,3,4,5,6,7]1085; AVX-NEXT: vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]1086; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,5],xmm6[6],xmm11[7]1087; AVX-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm7[4],xmm8[4],xmm7[5],xmm8[5],xmm7[6],xmm8[6],xmm7[7],xmm8[7]1088; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm6[0,1,0,1]1089; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2,3],xmm12[4,5],xmm11[6,7]1090; AVX-NEXT: vpsrld $16, %xmm8, %xmm81091; AVX-NEXT: vpunpckldq {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1]1092; AVX-NEXT: vpshufhw {{.*#+}} xmm8 = xmm9[0,1,2,3,4,5,6,6]1093; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm8[2,1,2,3]1094; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm8[0,1,2,3,4],xmm7[5,6],xmm8[7]1095; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm7, %ymm71096; AVX-NEXT: vmovaps {{.*#+}} ymm8 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]1097; AVX-NEXT: vandps %ymm7, %ymm8, %ymm71098; AVX-NEXT: vpsrldq {{.*#+}} xmm9 = xmm10[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1099; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0,1,2],xmm1[3],xmm9[4,5,6,7]1100; AVX-NEXT: vshufps {{.*#+}} xmm10 = xmm10[0,2],xmm1[1,3]1101; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm10, %ymm91102; AVX-NEXT: vandnps %ymm9, %ymm8, %ymm81103; AVX-NEXT: vorps %ymm7, %ymm8, %ymm71104; AVX-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7]1105; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm6[2,2,3,3]1106; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0,1,2,3],xmm8[4,5,6,7]1107; AVX-NEXT: vpslldq {{.*#+}} xmm8 = zero,zero,zero,zero,zero,zero,xmm8[0,1,2,3,4,5,6,7,8,9]1108; AVX-NEXT: vpslldq {{.*#+}} xmm10 = zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9,10,11,12,13]1109; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm10[0,1,2,3,4],xmm8[5,6],xmm10[7]1110; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm8, %ymm81111; AVX-NEXT: vmovaps {{.*#+}} ymm9 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]1112; AVX-NEXT: vandnps %ymm8, %ymm9, %ymm81113; AVX-NEXT: vpunpckhwd {{.*#+}} xmm10 = xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]1114; AVX-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[2,2,2,2,4,5,6,7]1115; AVX-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,5,5,4]1116; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm1[2,3,2,3]1117; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0],xmm11[1],xmm10[2,3,4,5,6,7]1118; AVX-NEXT: vpunpckhwd {{.*#+}} xmm11 = xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]1119; AVX-NEXT: vpshuflw {{.*#+}} xmm11 = xmm11[0,1,2,2,4,5,6,7]1120; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm11[0,1,2,1]1121; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm1[2,2,3,3]1122; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1],xmm12[2,3],xmm11[4,5,6,7]1123; AVX-NEXT: vinsertf128 $1, %xmm10, %ymm11, %ymm101124; AVX-NEXT: vandps %ymm9, %ymm10, %ymm91125; AVX-NEXT: vorps %ymm8, %ymm9, %ymm81126; AVX-NEXT: vpsrlq $48, %xmm4, %xmm41127; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm4[1]1128; AVX-NEXT: vpsrldq {{.*#+}} xmm4 = xmm6[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1129; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0,1,2],xmm2[3,4],xmm4[5,6,7]1130; AVX-NEXT: vpsrld $16, %xmm3, %xmm31131; AVX-NEXT: vpunpckhdq {{.*#+}} xmm0 = xmm0[2],xmm3[2],xmm0[3],xmm3[3]1132; AVX-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]1133; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,u,u,u,u,u,u,u,u,6,7,10,11,12,13]1134; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm2[1,2,3,4],xmm0[5,6,7]1135; AVX-NEXT: vmovdqa %xmm0, 96(%rax)1136; AVX-NEXT: vmovaps %ymm8, 64(%rax)1137; AVX-NEXT: vmovaps %ymm7, 32(%rax)1138; AVX-NEXT: vmovaps %ymm5, (%rax)1139; AVX-NEXT: vzeroupper1140; AVX-NEXT: retq1141;1142; AVX2-LABEL: store_i16_stride7_vf8:1143; AVX2: # %bb.0:1144; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax1145; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %r101146; AVX2-NEXT: vmovdqa (%rdi), %xmm01147; AVX2-NEXT: vmovdqa (%rsi), %xmm21148; AVX2-NEXT: vmovdqa (%rdx), %xmm41149; AVX2-NEXT: vmovdqa (%rcx), %xmm51150; AVX2-NEXT: vmovdqa (%r8), %xmm11151; AVX2-NEXT: vmovdqa (%r9), %xmm31152; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm71153; AVX2-NEXT: vinserti128 $1, %xmm5, %ymm4, %ymm81154; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm91155; AVX2-NEXT: vpshufb {{.*#+}} ymm6 = ymm8[4,5,u,u,u,u,u,u,u,u,u,u,u,u,6,7,22,23,u,u,u,u,u,u,u,u,u,u,u,u,24,25]1156; AVX2-NEXT: vpermq {{.*#+}} ymm10 = ymm8[2,3,0,1]1157; AVX2-NEXT: vpshuflw {{.*#+}} ymm10 = ymm10[2,2,2,2,4,5,6,7,10,10,10,10,12,13,14,15]1158; AVX2-NEXT: vpshufd {{.*#+}} ymm10 = ymm10[0,1,2,2,4,5,6,6]1159; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm6[0],ymm10[1],ymm6[2,3,4,5],ymm10[6],ymm6[7,8],ymm10[9],ymm6[10,11,12,13],ymm10[14],ymm6[15]1160; AVX2-NEXT: vpermq {{.*#+}} ymm10 = ymm7[0,2,1,3]1161; AVX2-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,6,7,14,15,u,u,u,u,u,u,u,u,u,u,16,17,24,25,u,u,u,u]1162; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]1163; AVX2-NEXT: vpblendvb %ymm11, %ymm6, %ymm10, %ymm61164; AVX2-NEXT: vpermq {{.*#+}} ymm10 = ymm9[0,2,0,2]1165; AVX2-NEXT: vpshufb {{.*#+}} ymm11 = ymm10[u,u,u,u,4,5,12,13,u,u,u,u,u,u,u,u,u,u,22,23,30,31,u,u,u,u,u,u,u,u,u,u]1166; AVX2-NEXT: vpbroadcastd 4(%r10), %ymm121167; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]1168; AVX2-NEXT: vpblendvb %ymm13, %ymm11, %ymm12, %ymm111169; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]1170; AVX2-NEXT: vpblendvb %ymm12, %ymm6, %ymm11, %ymm61171; AVX2-NEXT: vpermq {{.*#+}} ymm11 = ymm8[1,3,1,3]1172; AVX2-NEXT: vpshufb {{.*#+}} ymm11 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm11[2,3,10,11],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm11[20,21,28,29],zero,zero,zero,zero1173; AVX2-NEXT: vpermq {{.*#+}} ymm12 = ymm7[1,3,1,3]1174; AVX2-NEXT: vpshufb {{.*#+}} ymm12 = zero,zero,zero,zero,zero,zero,ymm12[2,3,10,11],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm12[20,21,28,29],zero,zero,zero,zero,zero,zero,zero,zero1175; AVX2-NEXT: vpor %ymm11, %ymm12, %ymm111176; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[1,3,3,1]1177; AVX2-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[0,1,8,9,u,u,u,u,u,u,u,u,u,u,2,3,18,19,u,u,u,u,u,u,u,u,u,u,28,29,20,21]1178; AVX2-NEXT: vpbroadcastd 8(%r10), %ymm121179; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm13 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]1180; AVX2-NEXT: vpblendvb %ymm13, %ymm9, %ymm12, %ymm91181; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]1182; AVX2-NEXT: vpblendvb %ymm12, %ymm9, %ymm11, %ymm91183; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,2,0,2]1184; AVX2-NEXT: vpshufb {{.*#+}} ymm8 = zero,zero,zero,zero,ymm8[0,1,8,9],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm8[18,19,26,27],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1185; AVX2-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,2,2,0]1186; AVX2-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[0,1,8,9],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[2,3,18,19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[28,29,20,21]1187; AVX2-NEXT: vpor %ymm7, %ymm8, %ymm71188; AVX2-NEXT: vpshufb {{.*#+}} ymm8 = ymm10[u,u,u,u,u,u,u,u,0,1,8,9,u,u,u,u,u,u,u,u,u,u,18,19,26,27,u,u,u,u,u,u]1189; AVX2-NEXT: vpbroadcastd (%r10), %ymm101190; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0]1191; AVX2-NEXT: vpblendvb %ymm11, %ymm8, %ymm10, %ymm81192; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]1193; AVX2-NEXT: vpblendvb %ymm10, %ymm7, %ymm8, %ymm71194; AVX2-NEXT: vpsrlq $48, %xmm5, %xmm51195; AVX2-NEXT: vpunpckhqdq {{.*#+}} xmm4 = xmm4[1],xmm5[1]1196; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]1197; AVX2-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1198; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm4[3,4],xmm0[5,6,7]1199; AVX2-NEXT: vpsrld $16, %xmm3, %xmm21200; AVX2-NEXT: vpunpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]1201; AVX2-NEXT: vpbroadcastd 12(%r10), %xmm21202; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4],xmm1[5,6],xmm2[7]1203; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4],xmm1[5,6,7]1204; AVX2-NEXT: vmovdqa %xmm0, 96(%rax)1205; AVX2-NEXT: vmovdqa %ymm7, (%rax)1206; AVX2-NEXT: vmovdqa %ymm9, 64(%rax)1207; AVX2-NEXT: vmovdqa %ymm6, 32(%rax)1208; AVX2-NEXT: vzeroupper1209; AVX2-NEXT: retq1210;1211; AVX2-FP-LABEL: store_i16_stride7_vf8:1212; AVX2-FP: # %bb.0:1213; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax1214; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %r101215; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm01216; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm21217; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm41218; AVX2-FP-NEXT: vmovdqa (%rcx), %xmm51219; AVX2-FP-NEXT: vmovdqa (%r8), %xmm11220; AVX2-FP-NEXT: vmovdqa (%r9), %xmm31221; AVX2-FP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm71222; AVX2-FP-NEXT: vinserti128 $1, %xmm5, %ymm4, %ymm81223; AVX2-FP-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm91224; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm6 = [4,5,4,5,u,u,u,u,u,u,u,u,8,9,6,7,6,7,20,21,u,u,u,u,u,u,u,u,24,25,8,9]1225; AVX2-FP-NEXT: vpshufb %ymm6, %ymm8, %ymm101226; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm8[2,3,0,1]1227; AVX2-FP-NEXT: vpshufb %ymm6, %ymm11, %ymm61228; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm6 = ymm10[0],ymm6[1],ymm10[2,3,4,5],ymm6[6],ymm10[7,8],ymm6[9],ymm10[10,11,12,13],ymm6[14],ymm10[15]1229; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm7[0,2,1,3]1230; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,6,7,14,15,u,u,u,u,u,u,u,u,u,u,16,17,24,25,u,u,u,u]1231; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]1232; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm6, %ymm10, %ymm61233; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm9[0,2,0,2]1234; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm11 = ymm10[u,u,u,u,4,5,12,13,u,u,u,u,u,u,u,u,u,u,22,23,30,31,u,u,u,u,u,u,u,u,u,u]1235; AVX2-FP-NEXT: vpbroadcastd 4(%r10), %ymm121236; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]1237; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm11, %ymm12, %ymm111238; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]1239; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm6, %ymm11, %ymm61240; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm8[1,3,1,3]1241; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm11 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm11[2,3,10,11],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm11[20,21,28,29],zero,zero,zero,zero1242; AVX2-FP-NEXT: vpermq {{.*#+}} ymm12 = ymm7[1,3,1,3]1243; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm12 = zero,zero,zero,zero,zero,zero,ymm12[2,3,10,11],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm12[20,21,28,29],zero,zero,zero,zero,zero,zero,zero,zero1244; AVX2-FP-NEXT: vpor %ymm11, %ymm12, %ymm111245; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[1,3,3,1]1246; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[0,1,8,9,u,u,u,u,u,u,u,u,u,u,2,3,18,19,u,u,u,u,u,u,u,u,u,u,28,29,20,21]1247; AVX2-FP-NEXT: vpbroadcastd 8(%r10), %ymm121248; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]1249; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm9, %ymm12, %ymm91250; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]1251; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm9, %ymm11, %ymm91252; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,2,0,2]1253; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm8 = zero,zero,zero,zero,ymm8[0,1,8,9],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm8[18,19,26,27],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1254; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,2,2,0]1255; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[0,1,8,9],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[2,3,18,19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[28,29,20,21]1256; AVX2-FP-NEXT: vpor %ymm7, %ymm8, %ymm71257; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm8 = ymm10[u,u,u,u,u,u,u,u,0,1,8,9,u,u,u,u,u,u,u,u,u,u,18,19,26,27,u,u,u,u,u,u]1258; AVX2-FP-NEXT: vpbroadcastd (%r10), %ymm101259; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0]1260; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm8, %ymm10, %ymm81261; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]1262; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm7, %ymm8, %ymm71263; AVX2-FP-NEXT: vpsrlq $48, %xmm5, %xmm51264; AVX2-FP-NEXT: vpunpckhqdq {{.*#+}} xmm4 = xmm4[1],xmm5[1]1265; AVX2-FP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]1266; AVX2-FP-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1267; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm4[3,4],xmm0[5,6,7]1268; AVX2-FP-NEXT: vpsrld $16, %xmm3, %xmm21269; AVX2-FP-NEXT: vpunpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]1270; AVX2-FP-NEXT: vpbroadcastd 12(%r10), %xmm21271; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4],xmm1[5,6],xmm2[7]1272; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4],xmm1[5,6,7]1273; AVX2-FP-NEXT: vmovdqa %xmm0, 96(%rax)1274; AVX2-FP-NEXT: vmovdqa %ymm7, (%rax)1275; AVX2-FP-NEXT: vmovdqa %ymm9, 64(%rax)1276; AVX2-FP-NEXT: vmovdqa %ymm6, 32(%rax)1277; AVX2-FP-NEXT: vzeroupper1278; AVX2-FP-NEXT: retq1279;1280; AVX2-FCP-LABEL: store_i16_stride7_vf8:1281; AVX2-FCP: # %bb.0:1282; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax1283; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r101284; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm01285; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm21286; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm41287; AVX2-FCP-NEXT: vmovdqa (%rcx), %xmm51288; AVX2-FCP-NEXT: vmovdqa (%r8), %xmm11289; AVX2-FCP-NEXT: vmovdqa (%r9), %xmm31290; AVX2-FCP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm71291; AVX2-FCP-NEXT: vinserti128 $1, %xmm5, %ymm4, %ymm81292; AVX2-FCP-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm91293; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm7[0,2,1,3]1294; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[6,7,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[16,17,24,25],zero,zero,zero,zero1295; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm10 = [1,5,0,0,5,2,6,0]1296; AVX2-FCP-NEXT: vpermd %ymm8, %ymm10, %ymm101297; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[0,1,4,5],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[2,3,18,19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[20,21,24,25]1298; AVX2-FCP-NEXT: vpor %ymm6, %ymm10, %ymm61299; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm9[0,2,0,2]1300; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm11 = ymm10[u,u,u,u,4,5,12,13,u,u,u,u,u,u,u,u,u,u,22,23,30,31,u,u,u,u,u,u,u,u,u,u]1301; AVX2-FCP-NEXT: vpbroadcastd 4(%r10), %ymm121302; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]1303; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm11, %ymm12, %ymm111304; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]1305; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm6, %ymm11, %ymm61306; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm8[1,3,1,3]1307; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm11 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm11[2,3,10,11],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm11[20,21,28,29],zero,zero,zero,zero1308; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm12 = ymm7[1,3,1,3]1309; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm12 = zero,zero,zero,zero,zero,zero,ymm12[2,3,10,11],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm12[20,21,28,29],zero,zero,zero,zero,zero,zero,zero,zero1310; AVX2-FCP-NEXT: vpor %ymm11, %ymm12, %ymm111311; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[1,3,3,1]1312; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[0,1,8,9,u,u,u,u,u,u,u,u,u,u,2,3,18,19,u,u,u,u,u,u,u,u,u,u,28,29,20,21]1313; AVX2-FCP-NEXT: vpbroadcastd 8(%r10), %ymm121314; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]1315; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm9, %ymm12, %ymm91316; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]1317; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm9, %ymm11, %ymm91318; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,2,0,2]1319; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm8 = zero,zero,zero,zero,ymm8[0,1,8,9],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm8[18,19,26,27],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1320; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,2,2,0]1321; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[0,1,8,9],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[2,3,18,19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[28,29,20,21]1322; AVX2-FCP-NEXT: vpor %ymm7, %ymm8, %ymm71323; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm10[u,u,u,u,u,u,u,u,0,1,8,9,u,u,u,u,u,u,u,u,u,u,18,19,26,27,u,u,u,u,u,u]1324; AVX2-FCP-NEXT: vpbroadcastd (%r10), %ymm101325; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0]1326; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm8, %ymm10, %ymm81327; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]1328; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm7, %ymm8, %ymm71329; AVX2-FCP-NEXT: vpsrlq $48, %xmm5, %xmm51330; AVX2-FCP-NEXT: vpunpckhqdq {{.*#+}} xmm4 = xmm4[1],xmm5[1]1331; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]1332; AVX2-FCP-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1333; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm4[3,4],xmm0[5,6,7]1334; AVX2-FCP-NEXT: vpsrld $16, %xmm3, %xmm21335; AVX2-FCP-NEXT: vpunpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]1336; AVX2-FCP-NEXT: vpbroadcastd 12(%r10), %xmm21337; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4],xmm1[5,6],xmm2[7]1338; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4],xmm1[5,6,7]1339; AVX2-FCP-NEXT: vmovdqa %xmm0, 96(%rax)1340; AVX2-FCP-NEXT: vmovdqa %ymm7, (%rax)1341; AVX2-FCP-NEXT: vmovdqa %ymm9, 64(%rax)1342; AVX2-FCP-NEXT: vmovdqa %ymm6, 32(%rax)1343; AVX2-FCP-NEXT: vzeroupper1344; AVX2-FCP-NEXT: retq1345;1346; AVX512-LABEL: store_i16_stride7_vf8:1347; AVX512: # %bb.0:1348; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax1349; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %r101350; AVX512-NEXT: vmovdqa (%rdi), %xmm01351; AVX512-NEXT: vmovdqa (%rsi), %xmm11352; AVX512-NEXT: vmovdqa (%rdx), %xmm31353; AVX512-NEXT: vmovdqa (%rcx), %xmm41354; AVX512-NEXT: vmovdqa (%r8), %xmm51355; AVX512-NEXT: vmovdqa (%r9), %xmm61356; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm21357; AVX512-NEXT: vpermq {{.*#+}} ymm7 = ymm2[0,2,0,2]1358; AVX512-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,ymm7[0,1,8,9,u,u,u,u,u,u],zero,zero,zero,zero,ymm7[18,19,26,27,u,u,u,u,u,u],zero,zero,zero,zero1359; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm81360; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm8[0,2,1,3]1361; AVX512-NEXT: vpshufb {{.*#+}} ymm9 = zero,zero,zero,zero,ymm9[u,u,u,u,u,u,6,7,14,15],zero,zero,zero,zero,ymm9[u,u,u,u,u,u,16,17,24,25],zero,zero,zero,zero1362; AVX512-NEXT: vinserti64x4 $1, %ymm9, %zmm7, %zmm71363; AVX512-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[4,5,u,u,u,u,u,u,u,u,u,u,u,u,6,7,22,23,u,u,u,u,u,u,u,u,u,u,u,u,24,25]1364; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm2[2,3,0,1]1365; AVX512-NEXT: vpshuflw {{.*#+}} ymm10 = ymm10[2,2,2,2,4,5,6,7,10,10,10,10,12,13,14,15]1366; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm10[0,1,2,2,4,5,6,6]1367; AVX512-NEXT: vpblendw {{.*#+}} ymm9 = ymm9[0],ymm10[1],ymm9[2,3,4,5],ymm10[6],ymm9[7,8],ymm10[9],ymm9[10,11,12,13],ymm10[14],ymm9[15]1368; AVX512-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm9, %ymm91369; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm8[0,2,2,0]1370; AVX512-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[0,1,8,9],zero,zero,zero,zero,ymm10[u,u,u,u,u,u,2,3,18,19],zero,zero,zero,zero,ymm10[u,u,u,u,u,u,28,29,20,21]1371; AVX512-NEXT: vinserti64x4 $1, %ymm9, %zmm10, %zmm91372; AVX512-NEXT: vporq %zmm7, %zmm9, %zmm71373; AVX512-NEXT: vinserti128 $1, %xmm6, %ymm5, %ymm91374; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm9[0,2,0,2]1375; AVX512-NEXT: vpshufb {{.*#+}} ymm11 = ymm10[u,u,u,u,u,u,u,u,0,1,8,9],zero,zero,ymm10[u,u,u,u,u,u,u,u,18,19,26,27],zero,zero,ymm10[u,u,u,u]1376; AVX512-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,4,5,12,13],zero,zero,ymm10[u,u,u,u,u,u,u,u,22,23,30,31],zero,zero,ymm10[u,u,u,u,u,u,u,u]1377; AVX512-NEXT: vinserti64x4 $1, %ymm10, %zmm11, %zmm101378; AVX512-NEXT: vpbroadcastd (%r10), %ymm111379; AVX512-NEXT: vpbroadcastd 4(%r10), %ymm121380; AVX512-NEXT: vinserti64x4 $1, %ymm12, %zmm11, %zmm111381; AVX512-NEXT: vpternlogq {{.*#+}} zmm11 = (zmm11 & mem) | zmm101382; AVX512-NEXT: vpternlogq {{.*#+}} zmm11 = zmm11 ^ (mem & (zmm11 ^ zmm7))1383; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[1,3,1,3]1384; AVX512-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u],zero,zero,zero,zero,ymm2[2,3,10,11,u,u,u,u,u,u],zero,zero,zero,zero,ymm2[20,21,28,29,u,u,u,u]1385; AVX512-NEXT: vpermq {{.*#+}} ymm7 = ymm8[1,3,1,3]1386; AVX512-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u,u,u,2,3,10,11],zero,zero,zero,zero,ymm7[u,u,u,u,u,u,20,21,28,29],zero,zero,zero,zero,ymm7[u,u,u,u]1387; AVX512-NEXT: vpor %ymm2, %ymm7, %ymm21388; AVX512-NEXT: vpermq {{.*#+}} ymm7 = ymm9[1,3,3,1]1389; AVX512-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[0,1,8,9],zero,zero,ymm7[u,u,u,u,u,u,u,u,2,3,18,19],zero,zero,ymm7[u,u,u,u,u,u,u,u,28,29,20,21]1390; AVX512-NEXT: vmovdqa {{.*#+}} ymm8 = [65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535]1391; AVX512-NEXT: vpternlogd {{.*#+}} ymm8 = (m32bcst & ~ymm8) | ymm71392; AVX512-NEXT: vpternlogq {{.*#+}} ymm8 = ymm2 ^ (mem & (ymm8 ^ ymm2))1393; AVX512-NEXT: vpsrlq $48, %xmm4, %xmm21394; AVX512-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm3[1],xmm2[1]1395; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]1396; AVX512-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1397; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3,4],xmm0[5,6,7]1398; AVX512-NEXT: vpsrld $16, %xmm6, %xmm11399; AVX512-NEXT: vpunpckhdq {{.*#+}} xmm1 = xmm5[2],xmm1[2],xmm5[3],xmm1[3]1400; AVX512-NEXT: vpbroadcastd 12(%r10), %xmm21401; AVX512-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4],xmm1[5,6],xmm2[7]1402; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4],xmm1[5,6,7]1403; AVX512-NEXT: vmovdqa %xmm0, 96(%rax)1404; AVX512-NEXT: vmovdqa %ymm8, 64(%rax)1405; AVX512-NEXT: vmovdqa64 %zmm11, (%rax)1406; AVX512-NEXT: vzeroupper1407; AVX512-NEXT: retq1408;1409; AVX512-FCP-LABEL: store_i16_stride7_vf8:1410; AVX512-FCP: # %bb.0:1411; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax1412; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r101413; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm01414; AVX512-FCP-NEXT: vmovdqa (%rsi), %xmm11415; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm21416; AVX512-FCP-NEXT: vmovdqa (%rcx), %xmm31417; AVX512-FCP-NEXT: vmovdqa (%r8), %xmm41418; AVX512-FCP-NEXT: vmovdqa (%r9), %xmm51419; AVX512-FCP-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm61420; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm6[0,2,0,2]1421; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,ymm7[0,1,8,9,u,u,u,u,u,u],zero,zero,zero,zero,ymm7[18,19,26,27,u,u,u,u,u,u],zero,zero,zero,zero1422; AVX512-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm81423; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm8[0,2,1,3]1424; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm9 = zero,zero,zero,zero,ymm9[u,u,u,u,u,u,6,7,14,15],zero,zero,zero,zero,ymm9[u,u,u,u,u,u,16,17,24,25],zero,zero,zero,zero1425; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm9, %zmm7, %zmm71426; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm8[0,2,2,0]1427; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[0,1,8,9],zero,zero,zero,zero,ymm9[u,u,u,u,u,u,2,3,18,19],zero,zero,zero,zero,ymm9[u,u,u,u,u,u,28,29,20,21]1428; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm10 = [1,5,0,0,5,2,6,0]1429; AVX512-FCP-NEXT: vpermd %ymm6, %ymm10, %ymm101430; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[0,1,4,5,u,u,u,u,u,u],zero,zero,zero,zero,ymm10[2,3,18,19,u,u,u,u,u,u],zero,zero,zero,zero,ymm10[20,21,24,25]1431; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm10, %zmm9, %zmm91432; AVX512-FCP-NEXT: vporq %zmm7, %zmm9, %zmm71433; AVX512-FCP-NEXT: vinserti128 $1, %xmm5, %ymm4, %ymm91434; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm9[0,2,0,2]1435; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm11 = ymm10[u,u,u,u,u,u,u,u,0,1,8,9],zero,zero,ymm10[u,u,u,u,u,u,u,u,18,19,26,27],zero,zero,ymm10[u,u,u,u]1436; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,4,5,12,13],zero,zero,ymm10[u,u,u,u,u,u,u,u,22,23,30,31],zero,zero,ymm10[u,u,u,u,u,u,u,u]1437; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm10, %zmm11, %zmm101438; AVX512-FCP-NEXT: vpbroadcastd (%r10), %ymm111439; AVX512-FCP-NEXT: vpbroadcastd 4(%r10), %ymm121440; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm12, %zmm11, %zmm111441; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm11 = (zmm11 & mem) | zmm101442; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm11 = zmm11 ^ (mem & (zmm11 ^ zmm7))1443; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[1,3,1,3]1444; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u],zero,zero,zero,zero,ymm6[2,3,10,11,u,u,u,u,u,u],zero,zero,zero,zero,ymm6[20,21,28,29,u,u,u,u]1445; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm8[1,3,1,3]1446; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u,u,u,2,3,10,11],zero,zero,zero,zero,ymm7[u,u,u,u,u,u,20,21,28,29],zero,zero,zero,zero,ymm7[u,u,u,u]1447; AVX512-FCP-NEXT: vpor %ymm6, %ymm7, %ymm61448; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm9[1,3,3,1]1449; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[0,1,8,9],zero,zero,ymm7[u,u,u,u,u,u,u,u,2,3,18,19],zero,zero,ymm7[u,u,u,u,u,u,u,u,28,29,20,21]1450; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm8 = [65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535]1451; AVX512-FCP-NEXT: vpternlogd {{.*#+}} ymm8 = (m32bcst & ~ymm8) | ymm71452; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm8 = ymm6 ^ (mem & (ymm8 ^ ymm6))1453; AVX512-FCP-NEXT: vpsrlq $48, %xmm3, %xmm31454; AVX512-FCP-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm3[1]1455; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]1456; AVX512-FCP-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1457; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3,4],xmm0[5,6,7]1458; AVX512-FCP-NEXT: vpsrld $16, %xmm5, %xmm11459; AVX512-FCP-NEXT: vpunpckhdq {{.*#+}} xmm1 = xmm4[2],xmm1[2],xmm4[3],xmm1[3]1460; AVX512-FCP-NEXT: vpbroadcastd 12(%r10), %xmm21461; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4],xmm1[5,6],xmm2[7]1462; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4],xmm1[5,6,7]1463; AVX512-FCP-NEXT: vmovdqa %xmm0, 96(%rax)1464; AVX512-FCP-NEXT: vmovdqa %ymm8, 64(%rax)1465; AVX512-FCP-NEXT: vmovdqa64 %zmm11, (%rax)1466; AVX512-FCP-NEXT: vzeroupper1467; AVX512-FCP-NEXT: retq1468;1469; AVX512DQ-LABEL: store_i16_stride7_vf8:1470; AVX512DQ: # %bb.0:1471; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax1472; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %r101473; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm01474; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm11475; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm31476; AVX512DQ-NEXT: vmovdqa (%rcx), %xmm41477; AVX512DQ-NEXT: vmovdqa (%r8), %xmm51478; AVX512DQ-NEXT: vmovdqa (%r9), %xmm61479; AVX512DQ-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm21480; AVX512DQ-NEXT: vpermq {{.*#+}} ymm7 = ymm2[0,2,0,2]1481; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,ymm7[0,1,8,9,u,u,u,u,u,u],zero,zero,zero,zero,ymm7[18,19,26,27,u,u,u,u,u,u],zero,zero,zero,zero1482; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm81483; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm8[0,2,1,3]1484; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm9 = zero,zero,zero,zero,ymm9[u,u,u,u,u,u,6,7,14,15],zero,zero,zero,zero,ymm9[u,u,u,u,u,u,16,17,24,25],zero,zero,zero,zero1485; AVX512DQ-NEXT: vinserti64x4 $1, %ymm9, %zmm7, %zmm71486; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[4,5,u,u,u,u,u,u,u,u,u,u,u,u,6,7,22,23,u,u,u,u,u,u,u,u,u,u,u,u,24,25]1487; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm2[2,3,0,1]1488; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm10 = ymm10[2,2,2,2,4,5,6,7,10,10,10,10,12,13,14,15]1489; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm10[0,1,2,2,4,5,6,6]1490; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm9 = ymm9[0],ymm10[1],ymm9[2,3,4,5],ymm10[6],ymm9[7,8],ymm10[9],ymm9[10,11,12,13],ymm10[14],ymm9[15]1491; AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm9, %ymm91492; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm8[0,2,2,0]1493; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[0,1,8,9],zero,zero,zero,zero,ymm10[u,u,u,u,u,u,2,3,18,19],zero,zero,zero,zero,ymm10[u,u,u,u,u,u,28,29,20,21]1494; AVX512DQ-NEXT: vinserti64x4 $1, %ymm9, %zmm10, %zmm91495; AVX512DQ-NEXT: vporq %zmm7, %zmm9, %zmm71496; AVX512DQ-NEXT: vinserti128 $1, %xmm6, %ymm5, %ymm91497; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm9[0,2,0,2]1498; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm11 = ymm10[u,u,u,u,u,u,u,u,0,1,8,9],zero,zero,ymm10[u,u,u,u,u,u,u,u,18,19,26,27],zero,zero,ymm10[u,u,u,u]1499; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,4,5,12,13],zero,zero,ymm10[u,u,u,u,u,u,u,u,22,23,30,31],zero,zero,ymm10[u,u,u,u,u,u,u,u]1500; AVX512DQ-NEXT: vinserti64x4 $1, %ymm10, %zmm11, %zmm101501; AVX512DQ-NEXT: vpbroadcastd (%r10), %ymm111502; AVX512DQ-NEXT: vpbroadcastd 4(%r10), %ymm121503; AVX512DQ-NEXT: vinserti64x4 $1, %ymm12, %zmm11, %zmm111504; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm11 = (zmm11 & mem) | zmm101505; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm11 = zmm11 ^ (mem & (zmm11 ^ zmm7))1506; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[1,3,1,3]1507; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u],zero,zero,zero,zero,ymm2[2,3,10,11,u,u,u,u,u,u],zero,zero,zero,zero,ymm2[20,21,28,29,u,u,u,u]1508; AVX512DQ-NEXT: vpermq {{.*#+}} ymm7 = ymm8[1,3,1,3]1509; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u,u,u,2,3,10,11],zero,zero,zero,zero,ymm7[u,u,u,u,u,u,20,21,28,29],zero,zero,zero,zero,ymm7[u,u,u,u]1510; AVX512DQ-NEXT: vpor %ymm2, %ymm7, %ymm21511; AVX512DQ-NEXT: vpermq {{.*#+}} ymm7 = ymm9[1,3,3,1]1512; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[0,1,8,9],zero,zero,ymm7[u,u,u,u,u,u,u,u,2,3,18,19],zero,zero,ymm7[u,u,u,u,u,u,u,u,28,29,20,21]1513; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm8 = [65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535]1514; AVX512DQ-NEXT: vpternlogd {{.*#+}} ymm8 = (m32bcst & ~ymm8) | ymm71515; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm8 = ymm2 ^ (mem & (ymm8 ^ ymm2))1516; AVX512DQ-NEXT: vpsrlq $48, %xmm4, %xmm21517; AVX512DQ-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm3[1],xmm2[1]1518; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]1519; AVX512DQ-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1520; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3,4],xmm0[5,6,7]1521; AVX512DQ-NEXT: vpsrld $16, %xmm6, %xmm11522; AVX512DQ-NEXT: vpunpckhdq {{.*#+}} xmm1 = xmm5[2],xmm1[2],xmm5[3],xmm1[3]1523; AVX512DQ-NEXT: vpbroadcastd 12(%r10), %xmm21524; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4],xmm1[5,6],xmm2[7]1525; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4],xmm1[5,6,7]1526; AVX512DQ-NEXT: vmovdqa %xmm0, 96(%rax)1527; AVX512DQ-NEXT: vmovdqa %ymm8, 64(%rax)1528; AVX512DQ-NEXT: vmovdqa64 %zmm11, (%rax)1529; AVX512DQ-NEXT: vzeroupper1530; AVX512DQ-NEXT: retq1531;1532; AVX512DQ-FCP-LABEL: store_i16_stride7_vf8:1533; AVX512DQ-FCP: # %bb.0:1534; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax1535; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r101536; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm01537; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %xmm11538; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm21539; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %xmm31540; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %xmm41541; AVX512DQ-FCP-NEXT: vmovdqa (%r9), %xmm51542; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm61543; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm6[0,2,0,2]1544; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,ymm7[0,1,8,9,u,u,u,u,u,u],zero,zero,zero,zero,ymm7[18,19,26,27,u,u,u,u,u,u],zero,zero,zero,zero1545; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm81546; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm8[0,2,1,3]1547; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm9 = zero,zero,zero,zero,ymm9[u,u,u,u,u,u,6,7,14,15],zero,zero,zero,zero,ymm9[u,u,u,u,u,u,16,17,24,25],zero,zero,zero,zero1548; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm9, %zmm7, %zmm71549; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm8[0,2,2,0]1550; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[0,1,8,9],zero,zero,zero,zero,ymm9[u,u,u,u,u,u,2,3,18,19],zero,zero,zero,zero,ymm9[u,u,u,u,u,u,28,29,20,21]1551; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm10 = [1,5,0,0,5,2,6,0]1552; AVX512DQ-FCP-NEXT: vpermd %ymm6, %ymm10, %ymm101553; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[0,1,4,5,u,u,u,u,u,u],zero,zero,zero,zero,ymm10[2,3,18,19,u,u,u,u,u,u],zero,zero,zero,zero,ymm10[20,21,24,25]1554; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm10, %zmm9, %zmm91555; AVX512DQ-FCP-NEXT: vporq %zmm7, %zmm9, %zmm71556; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm5, %ymm4, %ymm91557; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm9[0,2,0,2]1558; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm11 = ymm10[u,u,u,u,u,u,u,u,0,1,8,9],zero,zero,ymm10[u,u,u,u,u,u,u,u,18,19,26,27],zero,zero,ymm10[u,u,u,u]1559; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,4,5,12,13],zero,zero,ymm10[u,u,u,u,u,u,u,u,22,23,30,31],zero,zero,ymm10[u,u,u,u,u,u,u,u]1560; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm10, %zmm11, %zmm101561; AVX512DQ-FCP-NEXT: vpbroadcastd (%r10), %ymm111562; AVX512DQ-FCP-NEXT: vpbroadcastd 4(%r10), %ymm121563; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm12, %zmm11, %zmm111564; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm11 = (zmm11 & mem) | zmm101565; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm11 = zmm11 ^ (mem & (zmm11 ^ zmm7))1566; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[1,3,1,3]1567; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u],zero,zero,zero,zero,ymm6[2,3,10,11,u,u,u,u,u,u],zero,zero,zero,zero,ymm6[20,21,28,29,u,u,u,u]1568; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm8[1,3,1,3]1569; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u,u,u,2,3,10,11],zero,zero,zero,zero,ymm7[u,u,u,u,u,u,20,21,28,29],zero,zero,zero,zero,ymm7[u,u,u,u]1570; AVX512DQ-FCP-NEXT: vpor %ymm6, %ymm7, %ymm61571; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm9[1,3,3,1]1572; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[0,1,8,9],zero,zero,ymm7[u,u,u,u,u,u,u,u,2,3,18,19],zero,zero,ymm7[u,u,u,u,u,u,u,u,28,29,20,21]1573; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm8 = [65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535]1574; AVX512DQ-FCP-NEXT: vpternlogd {{.*#+}} ymm8 = (m32bcst & ~ymm8) | ymm71575; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm8 = ymm6 ^ (mem & (ymm8 ^ ymm6))1576; AVX512DQ-FCP-NEXT: vpsrlq $48, %xmm3, %xmm31577; AVX512DQ-FCP-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm3[1]1578; AVX512DQ-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]1579; AVX512DQ-FCP-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1580; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3,4],xmm0[5,6,7]1581; AVX512DQ-FCP-NEXT: vpsrld $16, %xmm5, %xmm11582; AVX512DQ-FCP-NEXT: vpunpckhdq {{.*#+}} xmm1 = xmm4[2],xmm1[2],xmm4[3],xmm1[3]1583; AVX512DQ-FCP-NEXT: vpbroadcastd 12(%r10), %xmm21584; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4],xmm1[5,6],xmm2[7]1585; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4],xmm1[5,6,7]1586; AVX512DQ-FCP-NEXT: vmovdqa %xmm0, 96(%rax)1587; AVX512DQ-FCP-NEXT: vmovdqa %ymm8, 64(%rax)1588; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm11, (%rax)1589; AVX512DQ-FCP-NEXT: vzeroupper1590; AVX512DQ-FCP-NEXT: retq1591;1592; AVX512BW-LABEL: store_i16_stride7_vf8:1593; AVX512BW: # %bb.0:1594; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %rax1595; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %r101596; AVX512BW-NEXT: vmovdqa (%rdi), %xmm01597; AVX512BW-NEXT: vmovdqa (%rdx), %xmm11598; AVX512BW-NEXT: vmovdqa (%r8), %xmm21599; AVX512BW-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11600; AVX512BW-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01601; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm01602; AVX512BW-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm11603; AVX512BW-NEXT: vinserti32x4 $2, (%r10), %zmm1, %zmm11604; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm2 = [0,8,16,24,32,40,48,1,9,17,25,33,41,49,2,10,18,26,34,42,50,3,11,19,27,35,43,51,4,12,20,28]1605; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm21606; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm3 = [36,44,52,5,13,21,29,37,45,53,6,14,22,30,38,46,54,7,15,23,31,39,47,55,0,0,0,0,0,0,0,0]1607; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm31608; AVX512BW-NEXT: vextracti32x4 $2, %zmm3, 96(%rax)1609; AVX512BW-NEXT: vmovdqa64 %zmm2, (%rax)1610; AVX512BW-NEXT: vmovdqa %ymm3, 64(%rax)1611; AVX512BW-NEXT: vzeroupper1612; AVX512BW-NEXT: retq1613;1614; AVX512BW-FCP-LABEL: store_i16_stride7_vf8:1615; AVX512BW-FCP: # %bb.0:1616; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax1617; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r101618; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm01619; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm11620; AVX512BW-FCP-NEXT: vmovdqa (%r8), %xmm21621; AVX512BW-FCP-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11622; AVX512BW-FCP-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01623; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm01624; AVX512BW-FCP-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm11625; AVX512BW-FCP-NEXT: vinserti32x4 $2, (%r10), %zmm1, %zmm11626; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm2 = [0,8,16,24,32,40,48,1,9,17,25,33,41,49,2,10,18,26,34,42,50,3,11,19,27,35,43,51,4,12,20,28]1627; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm21628; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm3 = [36,44,52,5,13,21,29,37,45,53,6,14,22,30,38,46,54,7,15,23,31,39,47,55,0,0,0,0,0,0,0,0]1629; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm31630; AVX512BW-FCP-NEXT: vextracti32x4 $2, %zmm3, 96(%rax)1631; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, (%rax)1632; AVX512BW-FCP-NEXT: vmovdqa %ymm3, 64(%rax)1633; AVX512BW-FCP-NEXT: vzeroupper1634; AVX512BW-FCP-NEXT: retq1635;1636; AVX512DQ-BW-LABEL: store_i16_stride7_vf8:1637; AVX512DQ-BW: # %bb.0:1638; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %rax1639; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %r101640; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm01641; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm11642; AVX512DQ-BW-NEXT: vmovdqa (%r8), %xmm21643; AVX512DQ-BW-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11644; AVX512DQ-BW-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01645; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm01646; AVX512DQ-BW-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm11647; AVX512DQ-BW-NEXT: vinserti32x4 $2, (%r10), %zmm1, %zmm11648; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm2 = [0,8,16,24,32,40,48,1,9,17,25,33,41,49,2,10,18,26,34,42,50,3,11,19,27,35,43,51,4,12,20,28]1649; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm21650; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm3 = [36,44,52,5,13,21,29,37,45,53,6,14,22,30,38,46,54,7,15,23,31,39,47,55,0,0,0,0,0,0,0,0]1651; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm31652; AVX512DQ-BW-NEXT: vextracti32x4 $2, %zmm3, 96(%rax)1653; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, (%rax)1654; AVX512DQ-BW-NEXT: vmovdqa %ymm3, 64(%rax)1655; AVX512DQ-BW-NEXT: vzeroupper1656; AVX512DQ-BW-NEXT: retq1657;1658; AVX512DQ-BW-FCP-LABEL: store_i16_stride7_vf8:1659; AVX512DQ-BW-FCP: # %bb.0:1660; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax1661; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r101662; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm01663; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm11664; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r8), %xmm21665; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11666; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01667; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm01668; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm11669; AVX512DQ-BW-FCP-NEXT: vinserti32x4 $2, (%r10), %zmm1, %zmm11670; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm2 = [0,8,16,24,32,40,48,1,9,17,25,33,41,49,2,10,18,26,34,42,50,3,11,19,27,35,43,51,4,12,20,28]1671; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm21672; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm3 = [36,44,52,5,13,21,29,37,45,53,6,14,22,30,38,46,54,7,15,23,31,39,47,55,0,0,0,0,0,0,0,0]1673; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm31674; AVX512DQ-BW-FCP-NEXT: vextracti32x4 $2, %zmm3, 96(%rax)1675; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, (%rax)1676; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm3, 64(%rax)1677; AVX512DQ-BW-FCP-NEXT: vzeroupper1678; AVX512DQ-BW-FCP-NEXT: retq1679 %in.vec0 = load <8 x i16>, ptr %in.vecptr0, align 641680 %in.vec1 = load <8 x i16>, ptr %in.vecptr1, align 641681 %in.vec2 = load <8 x i16>, ptr %in.vecptr2, align 641682 %in.vec3 = load <8 x i16>, ptr %in.vecptr3, align 641683 %in.vec4 = load <8 x i16>, ptr %in.vecptr4, align 641684 %in.vec5 = load <8 x i16>, ptr %in.vecptr5, align 641685 %in.vec6 = load <8 x i16>, ptr %in.vecptr6, align 641686 %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>1687 %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>1688 %3 = shufflevector <8 x i16> %in.vec4, <8 x i16> %in.vec5, <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>1689 %4 = 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>1690 %5 = shufflevector <8 x i16> %in.vec6, <8 x i16> poison, <16 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>1691 %6 = shufflevector <16 x i16> %3, <16 x i16> %5, <24 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>1692 %7 = shufflevector <24 x i16> %6, <24 x i16> poison, <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 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1693 %8 = shufflevector <32 x i16> %4, <32 x i16> %7, <56 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>1694 %interleaved.vec = shufflevector <56 x i16> %8, <56 x i16> poison, <56 x i32> <i32 0, i32 8, i32 16, i32 24, i32 32, i32 40, i32 48, i32 1, i32 9, i32 17, i32 25, i32 33, i32 41, i32 49, i32 2, i32 10, i32 18, i32 26, i32 34, i32 42, i32 50, i32 3, i32 11, i32 19, i32 27, i32 35, i32 43, i32 51, i32 4, i32 12, i32 20, i32 28, i32 36, i32 44, i32 52, i32 5, i32 13, i32 21, i32 29, i32 37, i32 45, i32 53, i32 6, i32 14, i32 22, i32 30, i32 38, i32 46, i32 54, i32 7, i32 15, i32 23, i32 31, i32 39, i32 47, i32 55>1695 store <56 x i16> %interleaved.vec, ptr %out.vec, align 641696 ret void1697}1698 1699define void @store_i16_stride7_vf16(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %in.vecptr5, ptr %in.vecptr6, ptr %out.vec) nounwind {1700; SSE-LABEL: store_i16_stride7_vf16:1701; SSE: # %bb.0:1702; SSE-NEXT: subq $216, %rsp1703; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax1704; SSE-NEXT: movdqa 16(%rdi), %xmm61705; SSE-NEXT: movdqa 16(%rsi), %xmm91706; SSE-NEXT: movdqa 16(%rdx), %xmm151707; SSE-NEXT: movdqa 16(%rcx), %xmm11708; SSE-NEXT: movdqa 16(%r8), %xmm81709; SSE-NEXT: movdqa 16(%r9), %xmm71710; SSE-NEXT: movdqa 16(%rax), %xmm31711; SSE-NEXT: movdqa %xmm1, %xmm01712; SSE-NEXT: movdqa %xmm1, %xmm51713; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1714; SSE-NEXT: psrlq $48, %xmm01715; SSE-NEXT: movdqa %xmm15, %xmm11716; SSE-NEXT: punpckhqdq {{.*#+}} xmm1 = xmm1[1],xmm0[1]1717; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,0,65535,65535,65535]1718; SSE-NEXT: pandn %xmm1, %xmm21719; SSE-NEXT: movdqa %xmm6, %xmm01720; SSE-NEXT: movdqa %xmm6, %xmm101721; SSE-NEXT: movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1722; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm9[4],xmm0[5],xmm9[5],xmm0[6],xmm9[6],xmm0[7],xmm9[7]1723; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1724; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1725; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1726; SSE-NEXT: por %xmm2, %xmm01727; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1728; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm8[2,2,3,3]1729; SSE-NEXT: movdqa {{.*#+}} xmm4 = [65535,65535,65535,65535,65535,0,65535,65535]1730; SSE-NEXT: movdqa %xmm4, %xmm21731; SSE-NEXT: pandn %xmm1, %xmm21732; SSE-NEXT: por %xmm0, %xmm21733; SSE-NEXT: movdqa %xmm8, %xmm11734; SSE-NEXT: movdqa %xmm7, %xmm61735; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1736; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1],xmm1[2],xmm7[2],xmm1[3],xmm7[3]1737; SSE-NEXT: movdqa %xmm1, %xmm71738; SSE-NEXT: movdqa %xmm6, %xmm11739; SSE-NEXT: psrld $16, %xmm11740; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,0],xmm2[2,0]1741; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,0]1742; SSE-NEXT: movaps {{.*#+}} xmm6 = [0,65535,65535,65535,65535,65535,65535,0]1743; SSE-NEXT: andps %xmm6, %xmm01744; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1745; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm3[3,3,3,3]1746; SSE-NEXT: andnps %xmm1, %xmm61747; SSE-NEXT: orps %xmm0, %xmm61748; SSE-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1749; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,1,0,1]1750; SSE-NEXT: movdqa %xmm4, %xmm11751; SSE-NEXT: pandn %xmm0, %xmm11752; SSE-NEXT: movdqa %xmm7, %xmm01753; SSE-NEXT: movdqa %xmm7, %xmm81754; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1755; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]1756; SSE-NEXT: pand %xmm4, %xmm01757; SSE-NEXT: por %xmm1, %xmm01758; SSE-NEXT: movdqa {{.*#+}} xmm7 = [65535,65535,65535,0,0,0,65535,65535]1759; SSE-NEXT: movdqa %xmm7, %xmm11760; SSE-NEXT: pandn %xmm0, %xmm11761; SSE-NEXT: movdqa %xmm5, %xmm01762; SSE-NEXT: psrld $16, %xmm01763; SSE-NEXT: movdqa %xmm15, %xmm31764; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]1765; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,0,65535,65535,65535,65535,65535]1766; SSE-NEXT: movdqa %xmm0, %xmm61767; SSE-NEXT: pandn %xmm3, %xmm61768; SSE-NEXT: movdqa %xmm9, %xmm31769; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm10[0],xmm3[1],xmm10[1],xmm3[2],xmm10[2],xmm3[3],xmm10[3]1770; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[2,2,2,2,4,5,6,7]1771; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,4]1772; SSE-NEXT: pand %xmm0, %xmm31773; SSE-NEXT: por %xmm6, %xmm31774; SSE-NEXT: pand %xmm7, %xmm31775; SSE-NEXT: por %xmm1, %xmm31776; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1777; SSE-NEXT: movdqa (%rax), %xmm91778; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm9[2,3,2,3]1779; SSE-NEXT: movdqa {{.*#+}} xmm11 = [65535,0,65535,65535,65535,65535,65535,65535]1780; SSE-NEXT: movdqa %xmm11, %xmm31781; SSE-NEXT: pandn %xmm1, %xmm31782; SSE-NEXT: movdqa (%r8), %xmm21783; SSE-NEXT: movdqa (%r9), %xmm101784; SSE-NEXT: movdqa %xmm10, %xmm11785; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1786; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]1787; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1788; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,2,2,2,4,5,6,7]1789; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm1[0,1,2,3,4,5,5,4]1790; SSE-NEXT: pand %xmm11, %xmm61791; SSE-NEXT: por %xmm3, %xmm61792; SSE-NEXT: movdqa (%rdx), %xmm131793; SSE-NEXT: movdqa (%rcx), %xmm51794; SSE-NEXT: movdqa %xmm13, %xmm141795; SSE-NEXT: punpckhwd {{.*#+}} xmm14 = xmm14[4],xmm5[4],xmm14[5],xmm5[5],xmm14[6],xmm5[6],xmm14[7],xmm5[7]1796; SSE-NEXT: movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1797; SSE-NEXT: movdqa (%rdi), %xmm111798; SSE-NEXT: movdqa (%rsi), %xmm11799; SSE-NEXT: movdqa %xmm11, %xmm121800; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1801; SSE-NEXT: punpckhwd {{.*#+}} xmm12 = xmm12[4],xmm1[4],xmm12[5],xmm1[5],xmm12[6],xmm1[6],xmm12[7],xmm1[7]1802; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1803; SSE-NEXT: movdqa %xmm12, %xmm31804; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[2,2],xmm14[2,3]1805; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,2],xmm6[0,3]1806; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1807; SSE-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm10[0],xmm2[1],xmm10[1],xmm2[2],xmm10[2],xmm2[3],xmm10[3]1808; SSE-NEXT: movdqa %xmm2, (%rsp) # 16-byte Spill1809; SSE-NEXT: pslldq {{.*#+}} xmm2 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13]1810; SSE-NEXT: pand %xmm4, %xmm21811; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm9[0,1,0,1]1812; SSE-NEXT: movdqa %xmm9, %xmm141813; SSE-NEXT: pandn %xmm6, %xmm41814; SSE-NEXT: por %xmm2, %xmm41815; SSE-NEXT: movdqa %xmm5, %xmm31816; SSE-NEXT: movdqa %xmm5, %xmm21817; SSE-NEXT: psrld $16, %xmm31818; SSE-NEXT: movdqa %xmm13, %xmm61819; SSE-NEXT: punpckldq {{.*#+}} xmm6 = xmm6[0],xmm3[0],xmm6[1],xmm3[1]1820; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm11[0],xmm1[1],xmm11[1],xmm1[2],xmm11[2],xmm1[3],xmm11[3]1821; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm1[2,2,2,2,4,5,6,7]1822; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,4]1823; SSE-NEXT: pand %xmm0, %xmm31824; SSE-NEXT: pandn %xmm6, %xmm01825; SSE-NEXT: por %xmm3, %xmm01826; SSE-NEXT: pand %xmm7, %xmm01827; SSE-NEXT: pandn %xmm4, %xmm71828; SSE-NEXT: por %xmm0, %xmm71829; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1830; SSE-NEXT: movdqa {{.*#+}} xmm7 = [65535,65535,65535,0,65535,65535,65535,65535]1831; SSE-NEXT: movdqa %xmm7, %xmm01832; SSE-NEXT: pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload1833; SSE-NEXT: movdqa %xmm8, %xmm31834; SSE-NEXT: psrldq {{.*#+}} xmm3 = xmm3[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1835; SSE-NEXT: por %xmm0, %xmm31836; SSE-NEXT: movdqa {{.*#+}} xmm8 = [65535,0,0,0,65535,65535,65535,65535]1837; SSE-NEXT: movdqa %xmm8, %xmm61838; SSE-NEXT: pandn %xmm3, %xmm61839; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm15[2,2,2,2]1840; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,65535,0,65535]1841; SSE-NEXT: movdqa %xmm0, %xmm41842; SSE-NEXT: pandn %xmm3, %xmm41843; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload1844; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm5[0,1,2,3,4,4,4,4]1845; SSE-NEXT: pand %xmm0, %xmm31846; SSE-NEXT: por %xmm4, %xmm31847; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload1848; SSE-NEXT: shufps {{.*#+}} xmm9 = xmm9[0,1],xmm3[3,3]1849; SSE-NEXT: movdqa %xmm15, %xmm101850; SSE-NEXT: punpckhwd {{.*#+}} xmm10 = xmm10[4],xmm5[4],xmm10[5],xmm5[5],xmm10[6],xmm5[6],xmm10[7],xmm5[7]1851; SSE-NEXT: punpcklwd {{.*#+}} xmm15 = xmm15[0],xmm5[0],xmm15[1],xmm5[1],xmm15[2],xmm5[2],xmm15[3],xmm5[3]1852; SSE-NEXT: movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1853; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm5[3,3,3,3,4,5,6,7]1854; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm9[0,2]1855; SSE-NEXT: andps %xmm8, %xmm11856; SSE-NEXT: orps %xmm6, %xmm11857; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1858; SSE-NEXT: movdqa %xmm14, %xmm111859; SSE-NEXT: pandn %xmm14, %xmm71860; SSE-NEXT: movdqa (%rsp), %xmm3 # 16-byte Reload1861; SSE-NEXT: psrldq {{.*#+}} xmm3 = xmm3[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1862; SSE-NEXT: por %xmm7, %xmm31863; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm2[0,1,2,3,4,4,4,4]1864; SSE-NEXT: pand %xmm0, %xmm41865; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm13[2,2,2,2]1866; SSE-NEXT: pandn %xmm5, %xmm01867; SSE-NEXT: por %xmm4, %xmm01868; SSE-NEXT: movdqa %xmm12, %xmm41869; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm0[3,3]1870; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm2[3,3,3,3,4,5,6,7]1871; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm4[0,2]1872; SSE-NEXT: andps %xmm8, %xmm01873; SSE-NEXT: pandn %xmm3, %xmm81874; SSE-NEXT: por %xmm0, %xmm81875; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1876; SSE-NEXT: movdqa %xmm13, %xmm01877; SSE-NEXT: punpcklwd {{.*#+}} xmm13 = xmm13[0],xmm2[0],xmm13[1],xmm2[1],xmm13[2],xmm2[2],xmm13[3],xmm2[3]1878; SSE-NEXT: psrlq $48, %xmm21879; SSE-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm2[1]1880; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,0,0,65535,65535,65535]1881; SSE-NEXT: pandn %xmm0, %xmm11882; SSE-NEXT: movdqa %xmm12, %xmm01883; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero1884; SSE-NEXT: por %xmm1, %xmm01885; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload1886; SSE-NEXT: movdqa %xmm3, %xmm21887; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload1888; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]1889; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1890; SSE-NEXT: psrld $16, %xmm11891; SSE-NEXT: punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm1[2],xmm3[3],xmm1[3]1892; SSE-NEXT: movdqa %xmm14, %xmm11893; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]1894; SSE-NEXT: movdqa {{.*#+}} xmm8 = [0,65535,65535,65535,65535,0,0,0]1895; SSE-NEXT: pand %xmm8, %xmm01896; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,4,7]1897; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,1]1898; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,5,4]1899; SSE-NEXT: pandn %xmm1, %xmm81900; SSE-NEXT: por %xmm0, %xmm81901; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload1902; SSE-NEXT: movaps %xmm4, %xmm01903; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,0],xmm10[2,0]1904; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload1905; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm0[2,0]1906; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1907; SSE-NEXT: punpckhwd {{.*#+}} xmm4 = xmm4[4],xmm0[4],xmm4[5],xmm0[5],xmm4[6],xmm0[6],xmm4[7],xmm0[7]1908; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,6,6,7]1909; SSE-NEXT: movaps {{.*#+}} xmm2 = [0,65535,65535,65535,65535,65535,65535,0]1910; SSE-NEXT: andps %xmm2, %xmm11911; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,2,2,2]1912; SSE-NEXT: andnps %xmm0, %xmm21913; SSE-NEXT: orps %xmm1, %xmm21914; SSE-NEXT: movaps {{.*#+}} xmm1 = [65535,0,65535,65535,65535,65535,65535,65535]1915; SSE-NEXT: andps %xmm1, %xmm21916; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload1917; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm7[2,3,2,3]1918; SSE-NEXT: andnps %xmm0, %xmm11919; SSE-NEXT: orps %xmm2, %xmm11920; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1921; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1922; SSE-NEXT: movdqa %xmm0, %xmm11923; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm0[1,1,1,1,4,5,6,7]1924; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1925; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload1926; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]1927; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1928; SSE-NEXT: movdqa %xmm2, %xmm01929; SSE-NEXT: psrld $16, %xmm01930; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]1931; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,0,0,65535]1932; SSE-NEXT: movdqa %xmm0, %xmm21933; SSE-NEXT: pandn %xmm1, %xmm21934; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm15[0,1,2,3,4,5,6,6]1935; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,1,2,3]1936; SSE-NEXT: pand %xmm0, %xmm11937; SSE-NEXT: por %xmm2, %xmm11938; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload1939; SSE-NEXT: movaps %xmm14, %xmm51940; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[2,2],xmm7[1,1]1941; SSE-NEXT: movaps {{.*#+}} xmm6 = [65535,65535,0,0,0,65535,65535,65535]1942; SSE-NEXT: movaps %xmm6, %xmm31943; SSE-NEXT: andnps %xmm5, %xmm31944; SSE-NEXT: pand %xmm6, %xmm11945; SSE-NEXT: orps %xmm1, %xmm31946; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload1947; SSE-NEXT: movdqa %xmm15, %xmm11948; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm15[1,1,1,1,4,5,6,7]1949; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1950; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload1951; SSE-NEXT: punpcklwd {{.*#+}} xmm15 = xmm15[0],xmm9[0],xmm15[1],xmm9[1],xmm15[2],xmm9[2],xmm15[3],xmm9[3]1952; SSE-NEXT: psrld $16, %xmm91953; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm9[0],xmm1[1],xmm9[1]1954; SSE-NEXT: movdqa %xmm0, %xmm91955; SSE-NEXT: pandn %xmm1, %xmm91956; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm13[0,1,2,3,4,5,6,6]1957; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,1,2,3]1958; SSE-NEXT: pand %xmm0, %xmm11959; SSE-NEXT: por %xmm9, %xmm11960; SSE-NEXT: movaps (%rsp), %xmm5 # 16-byte Reload1961; SSE-NEXT: movaps %xmm5, %xmm91962; SSE-NEXT: movdqa %xmm11, %xmm21963; SSE-NEXT: shufps {{.*#+}} xmm9 = xmm9[2,2],xmm11[1,1]1964; SSE-NEXT: pand %xmm6, %xmm11965; SSE-NEXT: andnps %xmm9, %xmm61966; SSE-NEXT: orps %xmm1, %xmm61967; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload1968; SSE-NEXT: pslldq {{.*#+}} xmm9 = zero,zero,zero,zero,zero,zero,xmm9[0,1,2,3,4,5,6,7,8,9]1969; SSE-NEXT: movdqa %xmm0, %xmm11970; SSE-NEXT: pandn %xmm9, %xmm11971; SSE-NEXT: pslldq {{.*#+}} xmm12 = zero,zero,xmm12[0,1,2,3,4,5,6,7,8,9,10,11,12,13]1972; SSE-NEXT: pand %xmm0, %xmm121973; SSE-NEXT: por %xmm1, %xmm121974; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,0,0,0,0,65535]1975; SSE-NEXT: movdqa %xmm1, %xmm91976; SSE-NEXT: pandn %xmm12, %xmm91977; SSE-NEXT: shufpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload1978; SSE-NEXT: # xmm11 = xmm11[1],mem[0]1979; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload1980; SSE-NEXT: punpckhwd {{.*#+}} xmm12 = xmm12[4,4,5,5,6,6,7,7]1981; SSE-NEXT: shufps {{.*#+}} xmm11 = xmm11[2,0],xmm12[2,1]1982; SSE-NEXT: andps %xmm1, %xmm111983; SSE-NEXT: orps %xmm9, %xmm111984; SSE-NEXT: pslldq {{.*#+}} xmm10 = zero,zero,zero,zero,zero,zero,xmm10[0,1,2,3,4,5,6,7,8,9]1985; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload1986; SSE-NEXT: pslldq {{.*#+}} xmm9 = zero,zero,xmm9[0,1,2,3,4,5,6,7,8,9,10,11,12,13]1987; SSE-NEXT: pand %xmm0, %xmm91988; SSE-NEXT: pandn %xmm10, %xmm01989; SSE-NEXT: por %xmm9, %xmm01990; SSE-NEXT: movdqa %xmm7, %xmm91991; SSE-NEXT: shufps {{.*#+}} xmm7 = xmm7[2,3],xmm4[0,1]1992; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload1993; SSE-NEXT: punpckhwd {{.*#+}} xmm4 = xmm4[4,4,5,5,6,6,7,7]1994; SSE-NEXT: shufps {{.*#+}} xmm7 = xmm7[2,0],xmm4[2,1]1995; SSE-NEXT: andps %xmm1, %xmm71996; SSE-NEXT: pandn %xmm0, %xmm11997; SSE-NEXT: por %xmm7, %xmm11998; SSE-NEXT: punpcklqdq {{.*#+}} xmm13 = xmm13[0],xmm15[0]1999; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload2000; SSE-NEXT: # xmm13 = xmm13[2,0],mem[2,1]2001; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,1,1]2002; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,1,1]2003; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]2004; SSE-NEXT: movdqa {{.*#+}} xmm4 = [65535,65535,65535,65535,0,0,0,65535]2005; SSE-NEXT: movdqa %xmm4, %xmm52006; SSE-NEXT: pandn %xmm0, %xmm52007; SSE-NEXT: andps %xmm4, %xmm132008; SSE-NEXT: por %xmm13, %xmm52009; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2010; SSE-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload2011; SSE-NEXT: # xmm0 = xmm0[0],mem[0]2012; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload2013; SSE-NEXT: # xmm0 = xmm0[2,0],mem[2,1]2014; SSE-NEXT: movaps %xmm0, %xmm22015; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm14[0,0,1,1]2016; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm9[0,0,1,1]2017; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1]2018; SSE-NEXT: andps %xmm4, %xmm22019; SSE-NEXT: pandn %xmm0, %xmm42020; SSE-NEXT: por %xmm2, %xmm42021; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax2022; SSE-NEXT: movdqa %xmm4, 112(%rax)2023; SSE-NEXT: movdqa %xmm5, (%rax)2024; SSE-NEXT: movdqa %xmm1, 176(%rax)2025; SSE-NEXT: movaps %xmm11, 64(%rax)2026; SSE-NEXT: movaps %xmm6, 32(%rax)2027; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2028; SSE-NEXT: movaps %xmm0, 48(%rax)2029; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2030; SSE-NEXT: movaps %xmm0, 160(%rax)2031; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2032; SSE-NEXT: movaps %xmm0, 16(%rax)2033; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2034; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0,1,3]2035; SSE-NEXT: movaps %xmm0, 80(%rax)2036; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2037; SSE-NEXT: movaps %xmm0, 128(%rax)2038; SSE-NEXT: movaps %xmm3, 144(%rax)2039; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2040; SSE-NEXT: movaps %xmm0, 192(%rax)2041; SSE-NEXT: movdqa %xmm8, 96(%rax)2042; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2043; SSE-NEXT: movaps %xmm0, 208(%rax)2044; SSE-NEXT: addq $216, %rsp2045; SSE-NEXT: retq2046;2047; AVX-LABEL: store_i16_stride7_vf16:2048; AVX: # %bb.0:2049; AVX-NEXT: subq $40, %rsp2050; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax2051; AVX-NEXT: vmovdqa (%rdx), %xmm52052; AVX-NEXT: vmovdqa 16(%rdx), %xmm142053; AVX-NEXT: vmovdqa (%rcx), %xmm72054; AVX-NEXT: vmovdqa 16(%rcx), %xmm152055; AVX-NEXT: vpsrlq $48, %xmm15, %xmm02056; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm0 = xmm14[1],xmm0[1]2057; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm14[4],xmm15[4],xmm14[5],xmm15[5],xmm14[6],xmm15[6],xmm14[7],xmm15[7]2058; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm22059; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]2060; AVX-NEXT: vandnps %ymm2, %ymm0, %ymm22061; AVX-NEXT: vmovdqa 16(%rsi), %xmm32062; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2063; AVX-NEXT: vmovdqa 16(%rdi), %xmm42064; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2065; AVX-NEXT: vpunpckhwd {{.*#+}} xmm9 = xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7]2066; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm9[2,2,3,3]2067; AVX-NEXT: vpsrldq {{.*#+}} xmm6 = xmm9[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero2068; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm3, %ymm32069; AVX-NEXT: vandps %ymm0, %ymm3, %ymm32070; AVX-NEXT: vorps %ymm2, %ymm3, %ymm22071; AVX-NEXT: vmovaps {{.*#+}} ymm6 = [0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535]2072; AVX-NEXT: vandps %ymm6, %ymm2, %ymm22073; AVX-NEXT: vmovdqa 16(%r8), %xmm32074; AVX-NEXT: vmovdqa 16(%r9), %xmm82075; AVX-NEXT: vpsrld $16, %xmm8, %xmm102076; AVX-NEXT: vpunpckhdq {{.*#+}} xmm10 = xmm3[2],xmm10[2],xmm3[3],xmm10[3]2077; AVX-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm8[4],xmm3[4],xmm8[5],xmm3[5],xmm8[6],xmm3[6],xmm8[7],xmm3[7]2078; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm12[1,1,2,3]2079; AVX-NEXT: vpshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,5,5,4]2080; AVX-NEXT: vinsertf128 $1, %xmm10, %ymm12, %ymm102081; AVX-NEXT: vandnps %ymm10, %ymm6, %ymm62082; AVX-NEXT: vorps %ymm6, %ymm2, %ymm22083; AVX-NEXT: vextractf128 $1, %ymm2, %xmm102084; AVX-NEXT: vmovdqa 16(%rax), %xmm132085; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm13[3,3,3,3]2086; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm12[0],xmm10[1,2,3,4,5,6],xmm12[7]2087; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2088; AVX-NEXT: vpshufd {{.*#+}} xmm10 = xmm13[2,3,2,3]2089; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm10[1],xmm2[2,3,4,5,6,7]2090; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2091; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm9[0,1,0,1]2092; AVX-NEXT: vpslldq {{.*#+}} xmm9 = zero,zero,xmm9[0,1,2,3,4,5,6,7,8,9,10,11,12,13]2093; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm2, %ymm92094; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm14[2,2,2,2]2095; AVX-NEXT: vpshuflw {{.*#+}} xmm10 = xmm15[3,3,3,3,4,5,6,7]2096; AVX-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,4,4,4]2097; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,5],xmm2[6],xmm10[7]2098; AVX-NEXT: vmovdqa (%rsi), %xmm62099; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9]2100; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm10, %ymm102101; AVX-NEXT: vmovdqa (%rdi), %xmm22102; AVX-NEXT: vandnps %ymm9, %ymm0, %ymm92103; AVX-NEXT: vandps %ymm0, %ymm10, %ymm02104; AVX-NEXT: vorps %ymm0, %ymm9, %ymm02105; AVX-NEXT: vpunpckhwd {{.*#+}} xmm9 = xmm3[4],xmm8[4],xmm3[5],xmm8[5],xmm3[6],xmm8[6],xmm3[7],xmm8[7]2106; AVX-NEXT: vpshuflw {{.*#+}} xmm9 = xmm9[0,1,2,2,4,5,6,7]2107; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm9[0,1,2,1]2108; AVX-NEXT: vpshufd {{.*#+}} xmm10 = xmm13[2,2,3,3]2109; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0,1],xmm10[2,3],xmm9[4,5,6,7]2110; AVX-NEXT: vmovaps {{.*#+}} ymm10 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]2111; AVX-NEXT: vandps %ymm0, %ymm10, %ymm02112; AVX-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],xmm8[3]2113; AVX-NEXT: vpsrldq {{.*#+}} xmm3 = xmm8[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero2114; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm13[3],xmm3[4,5,6,7]2115; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm3, %ymm32116; AVX-NEXT: vandnps %ymm3, %ymm10, %ymm32117; AVX-NEXT: vorps %ymm3, %ymm0, %ymm02118; AVX-NEXT: vmovups %ymm0, (%rsp) # 32-byte Spill2119; AVX-NEXT: vpsrld $16, %xmm6, %xmm02120; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]2121; AVX-NEXT: vpunpckhwd {{.*#+}} xmm9 = xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]2122; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm9[0,1,0,1]2123; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm02124; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2125; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm7[3,3,3,3,4,5,6,7]2126; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]2127; AVX-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2128; AVX-NEXT: vpshufd {{.*#+}} xmm10 = xmm5[2,2,2,2]2129; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm3[0,1,2,3,4,5],xmm10[6],xmm3[7]2130; AVX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm5[0],xmm7[0],xmm5[1],xmm7[1],xmm5[2],xmm7[2],xmm5[3],xmm7[3]2131; AVX-NEXT: vpshufhw {{.*#+}} xmm12 = xmm3[0,1,2,3,4,5,6,6]2132; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm12[2,1,2,3]2133; AVX-NEXT: vinsertf128 $1, %xmm10, %ymm12, %ymm102134; AVX-NEXT: vmovaps {{.*#+}} ymm1 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535]2135; AVX-NEXT: vandnps %ymm0, %ymm1, %ymm02136; AVX-NEXT: vandps %ymm1, %ymm10, %ymm102137; AVX-NEXT: vorps %ymm0, %ymm10, %ymm12138; AVX-NEXT: vmovdqa (%r8), %xmm102139; AVX-NEXT: vmovdqa (%r9), %xmm52140; AVX-NEXT: vmovdqa (%rax), %xmm122141; AVX-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm10[0],xmm5[0],xmm10[1],xmm5[1],xmm10[2],xmm5[2],xmm10[3],xmm5[3]2142; AVX-NEXT: vpsrldq {{.*#+}} xmm11 = xmm4[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero2143; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2],xmm12[3],xmm11[4,5,6,7]2144; AVX-NEXT: vshufps {{.*#+}} xmm7 = xmm4[0,2],xmm12[1,3]2145; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm7, %ymm72146; AVX-NEXT: vmovaps {{.*#+}} ymm11 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]2147; AVX-NEXT: vandps %ymm1, %ymm11, %ymm12148; AVX-NEXT: vandnps %ymm7, %ymm11, %ymm72149; AVX-NEXT: vorps %ymm7, %ymm1, %ymm02150; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2151; AVX-NEXT: vpsrld $16, %xmm15, %xmm12152; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm14[0],xmm1[0],xmm14[1],xmm1[1]2153; AVX-NEXT: vpunpcklwd {{.*#+}} xmm15 = xmm14[0],xmm15[0],xmm14[1],xmm15[1],xmm14[2],xmm15[2],xmm14[3],xmm15[3]2154; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm15[0,1,2,3,4,5,6,6]2155; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[2,1,2,3]2156; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm1, %ymm12157; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload2158; AVX-NEXT: vpsrld $16, %xmm11, %xmm72159; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2160; AVX-NEXT: vpunpckldq {{.*#+}} xmm7 = xmm0[0],xmm7[0],xmm0[1],xmm7[1]2161; AVX-NEXT: vpunpcklwd {{.*#+}} xmm11 = xmm11[0],xmm0[0],xmm11[1],xmm0[1],xmm11[2],xmm0[2],xmm11[3],xmm0[3]2162; AVX-NEXT: vpshuflw {{.*#+}} xmm11 = xmm11[2,2,2,2,4,5,6,7]2163; AVX-NEXT: vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,5,5,4]2164; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm11, %ymm72165; AVX-NEXT: vmovaps {{.*#+}} ymm11 = [65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0]2166; AVX-NEXT: vandnps %ymm1, %ymm11, %ymm12167; AVX-NEXT: vandps %ymm7, %ymm11, %ymm72168; AVX-NEXT: vorps %ymm1, %ymm7, %ymm12169; AVX-NEXT: vpslldq {{.*#+}} xmm7 = zero,zero,xmm8[0,1,2,3,4,5,6,7,8,9,10,11,12,13]2170; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm13[0,1,0,1]2171; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2,3,4],xmm11[5],xmm7[6,7]2172; AVX-NEXT: vshufps {{.*#+}} xmm11 = xmm8[0,2],xmm13[1,3]2173; AVX-NEXT: vmovaps %xmm8, %xmm142174; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm7, %ymm72175; AVX-NEXT: vmovaps {{.*#+}} ymm11 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]2176; AVX-NEXT: vandps %ymm1, %ymm11, %ymm12177; AVX-NEXT: vandnps %ymm7, %ymm11, %ymm72178; AVX-NEXT: vorps %ymm7, %ymm1, %ymm72179; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload2180; AVX-NEXT: vpsrld $16, %xmm11, %xmm12181; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload2182; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm8[0],xmm1[0],xmm8[1],xmm1[1]2183; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]2184; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm3, %ymm12185; AVX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3]2186; AVX-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm6[0],xmm2[0],xmm6[1],xmm2[1],xmm6[2],xmm2[2],xmm6[3],xmm2[3]2187; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,1,2,2,4,5,6,7]2188; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]2189; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[2,2,2,2,4,5,6,7]2190; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,4]2191; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm22192; AVX-NEXT: vmovaps {{.*#+}} ymm3 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]2193; AVX-NEXT: vandnps %ymm1, %ymm3, %ymm12194; AVX-NEXT: vandps %ymm3, %ymm2, %ymm22195; AVX-NEXT: vorps %ymm1, %ymm2, %ymm12196; AVX-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,xmm4[0,1,2,3,4,5,6,7,8,9,10,11,12,13]2197; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm12[0,1,0,1]2198; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4],xmm3[5],xmm2[6,7]2199; AVX-NEXT: vshufps {{.*#+}} xmm0 = xmm4[0,1,0,1]2200; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm12[0,0,0,0]2201; AVX-NEXT: vblendps {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3]2202; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm02203; AVX-NEXT: vmovaps {{.*#+}} ymm2 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]2204; AVX-NEXT: vandps %ymm2, %ymm1, %ymm12205; AVX-NEXT: vandnps %ymm0, %ymm2, %ymm02206; AVX-NEXT: vorps %ymm0, %ymm1, %ymm02207; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm8[4],xmm11[4],xmm8[5],xmm11[5],xmm8[6],xmm11[6],xmm8[7],xmm11[7]2208; AVX-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9]2209; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm12210; AVX-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,xmm9[0,1,2,3,4,5,6,7,8,9,10,11,12,13]2211; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm9[2,2,3,3]2212; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm22213; AVX-NEXT: vmovaps {{.*#+}} ymm3 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535]2214; AVX-NEXT: vandnps %ymm1, %ymm3, %ymm12215; AVX-NEXT: vandps %ymm3, %ymm2, %ymm22216; AVX-NEXT: vorps %ymm1, %ymm2, %ymm12217; AVX-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm5[4],xmm10[4],xmm5[5],xmm10[5],xmm5[6],xmm10[6],xmm5[7],xmm10[7]2218; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[2,2,2,2,4,5,6,7]2219; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,4]2220; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm12[2,3,2,3]2221; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1],xmm2[2,3,4,5,6,7]2222; AVX-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm10[4],xmm5[4],xmm10[5],xmm5[5],xmm10[6],xmm5[6],xmm10[7],xmm5[7]2223; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,1,2,2,4,5,6,7]2224; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]2225; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm12[2,2,3,3]2226; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3],xmm3[4,5,6,7]2227; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm22228; AVX-NEXT: vmovaps {{.*#+}} ymm3 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]2229; AVX-NEXT: vandnps %ymm1, %ymm3, %ymm12230; AVX-NEXT: vandps %ymm3, %ymm2, %ymm22231; AVX-NEXT: vorps %ymm1, %ymm2, %ymm12232; AVX-NEXT: vpsrlq $48, %xmm11, %xmm22233; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm8[1],xmm2[1]2234; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm15[0,0,1,1]2235; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm22236; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload2237; AVX-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload2238; AVX-NEXT: # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1],xmm3[2],mem[2],xmm3[3],mem[3]2239; AVX-NEXT: vpsrldq {{.*#+}} xmm4 = xmm9[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero2240; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,1,2,2,4,5,6,7]2241; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]2242; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm32243; AVX-NEXT: vmovaps {{.*#+}} ymm4 = [65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]2244; AVX-NEXT: vandnps %ymm2, %ymm4, %ymm22245; AVX-NEXT: vandps %ymm4, %ymm3, %ymm32246; AVX-NEXT: vorps %ymm2, %ymm3, %ymm22247; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm14[0,1,0,1]2248; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm13[0,0,0,0]2249; AVX-NEXT: vblendps {{.*#+}} xmm3 = xmm3[0,1,2],xmm4[3]2250; AVX-NEXT: vpsrld $16, %xmm5, %xmm42251; AVX-NEXT: vpunpckhdq {{.*#+}} xmm4 = xmm10[2],xmm4[2],xmm10[3],xmm4[3]2252; AVX-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm12[4],xmm4[4],xmm12[5],xmm4[5],xmm12[6],xmm4[6],xmm12[7],xmm4[7]2253; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[8,9,u,u,u,u,u,u,u,u,6,7,10,11,12,13]2254; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm32255; AVX-NEXT: vmovaps {{.*#+}} ymm4 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]2256; AVX-NEXT: vandps %ymm4, %ymm2, %ymm22257; AVX-NEXT: vandnps %ymm3, %ymm4, %ymm32258; AVX-NEXT: vorps %ymm3, %ymm2, %ymm22259; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax2260; AVX-NEXT: vmovaps %ymm2, 96(%rax)2261; AVX-NEXT: vmovaps %ymm1, 64(%rax)2262; AVX-NEXT: vmovaps %ymm0, (%rax)2263; AVX-NEXT: vmovaps %ymm7, 128(%rax)2264; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2265; AVX-NEXT: vmovaps %ymm0, 32(%rax)2266; AVX-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload2267; AVX-NEXT: vmovaps %ymm0, 160(%rax)2268; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2269; AVX-NEXT: vmovaps %xmm0, 192(%rax)2270; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2271; AVX-NEXT: vmovaps %xmm0, 208(%rax)2272; AVX-NEXT: addq $40, %rsp2273; AVX-NEXT: vzeroupper2274; AVX-NEXT: retq2275;2276; AVX2-LABEL: store_i16_stride7_vf16:2277; AVX2: # %bb.0:2278; AVX2-NEXT: subq $40, %rsp2279; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax2280; AVX2-NEXT: vmovdqa (%rdi), %ymm72281; AVX2-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2282; AVX2-NEXT: vmovdqa (%rsi), %ymm62283; AVX2-NEXT: vmovdqa (%rdx), %ymm52284; AVX2-NEXT: vmovdqa (%rcx), %ymm132285; AVX2-NEXT: vmovdqa (%r8), %ymm42286; AVX2-NEXT: vmovdqa (%r9), %ymm22287; AVX2-NEXT: vmovdqa (%rax), %ymm12288; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2289; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm0 = [3,0,0,0,4,0,0,4]2290; AVX2-NEXT: vpermd %ymm7, %ymm0, %ymm02291; AVX2-NEXT: vpshufd {{.*#+}} ymm8 = ymm6[0,3,2,3,4,7,6,7]2292; AVX2-NEXT: vmovdqa %ymm6, %ymm72293; AVX2-NEXT: vpshuflw {{.*#+}} ymm8 = ymm8[0,0,3,3,4,5,6,7,8,8,11,11,12,13,14,15]2294; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,65535,0,0,0,0,0,0,65535,0,0,0,0,0,0,65535]2295; AVX2-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02296; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm8 = [0,3,0,0,0,4,0,0]2297; AVX2-NEXT: vpermd %ymm5, %ymm8, %ymm82298; AVX2-NEXT: vmovdqa %ymm5, %ymm62299; AVX2-NEXT: vpshuflw {{.*#+}} ymm9 = ymm13[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]2300; AVX2-NEXT: vpshufhw {{.*#+}} ymm9 = ymm9[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15]2301; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,0,0,65535,0,0,0,0,0,0,65535,0,0,0,0,0]2302; AVX2-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82303; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]2304; AVX2-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02305; AVX2-NEXT: vpmovsxbq {{.*#+}} ymm8 = [0,3,0,4]2306; AVX2-NEXT: vpermd %ymm4, %ymm8, %ymm82307; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm2[0,1,0,3,4,5,4,7]2308; AVX2-NEXT: vpshufhw {{.*#+}} ymm9 = ymm9[0,1,2,3,4,4,7,7,8,9,10,11,12,12,15,15]2309; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,0,0,0,0,65535,0,0,0,0,0,0,65535,0,0,0]2310; AVX2-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82311; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm9 = [3,0,0,3,0,0,0,4]2312; AVX2-NEXT: vpermd %ymm1, %ymm9, %ymm92313; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0]2314; AVX2-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82315; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]2316; AVX2-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02317; AVX2-NEXT: vmovdqu %ymm0, (%rsp) # 32-byte Spill2318; AVX2-NEXT: vmovdqa (%rcx), %xmm102319; AVX2-NEXT: vmovdqa (%rdx), %xmm112320; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm11[4],xmm10[4],xmm11[5],xmm10[5],xmm11[6],xmm10[6],xmm11[7],xmm10[7]2321; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]2322; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,2,1]2323; AVX2-NEXT: vmovdqa (%rdi), %xmm122324; AVX2-NEXT: vmovdqa (%rsi), %xmm52325; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm5[4],xmm12[4],xmm5[5],xmm12[5],xmm5[6],xmm12[6],xmm5[7],xmm12[7]2326; AVX2-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[2,1,2,3,4,5,6,7]2327; AVX2-NEXT: vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,5,4]2328; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,1,3]2329; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]2330; AVX2-NEXT: vpblendvb %ymm9, %ymm8, %ymm0, %ymm12331; AVX2-NEXT: vmovdqa (%r9), %xmm92332; AVX2-NEXT: vmovdqa (%r8), %xmm142333; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm14[4],xmm9[4],xmm14[5],xmm9[5],xmm14[6],xmm9[6],xmm14[7],xmm9[7]2334; AVX2-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]2335; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]2336; AVX2-NEXT: vpbroadcastd 8(%rax), %ymm02337; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]2338; AVX2-NEXT: vpblendvb %ymm15, %ymm8, %ymm0, %ymm02339; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]2340; AVX2-NEXT: vpblendvb %ymm8, %ymm0, %ymm1, %ymm02341; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2342; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm10[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]2343; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm11[1,1,2,2]2344; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1],xmm1[2,3],xmm0[4],xmm1[5,6],xmm0[7]2345; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm5[3,3,3,3,4,5,6,7]2346; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]2347; AVX2-NEXT: vpshufd {{.*#+}} xmm15 = xmm12[1,1,2,3]2348; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm15[0,1],xmm1[2],xmm15[3,4],xmm1[5],xmm15[6,7]2349; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]2350; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,2,1]2351; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]2352; AVX2-NEXT: vpblendvb %ymm15, %ymm0, %ymm1, %ymm12353; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm14[0],xmm9[0],xmm14[1],xmm9[1],xmm14[2],xmm9[2],xmm14[3],xmm9[3]2354; AVX2-NEXT: vpshufhw {{.*#+}} xmm9 = xmm0[0,1,2,3,4,5,7,6]2355; AVX2-NEXT: vpshufd {{.*#+}} xmm9 = xmm9[0,2,3,3]2356; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,1,3]2357; AVX2-NEXT: vpbroadcastd 4(%rax), %ymm142358; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm15 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]2359; AVX2-NEXT: vpblendvb %ymm15, %ymm9, %ymm14, %ymm92360; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]2361; AVX2-NEXT: vpblendvb %ymm14, %ymm1, %ymm9, %ymm12362; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2363; AVX2-NEXT: vmovdqa %ymm7, %ymm82364; AVX2-NEXT: vpshufhw {{.*#+}} ymm1 = ymm7[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]2365; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,2,2,6,6,6,6]2366; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload2367; AVX2-NEXT: vpshufd {{.*#+}} ymm14 = ymm3[3,3,3,3,7,7,7,7]2368; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm14[0,1,2],ymm1[3],ymm14[4,5],ymm1[6],ymm14[7,8,9,10],ymm1[11],ymm14[12,13],ymm1[14],ymm14[15]2369; AVX2-NEXT: vpshufhw {{.*#+}} ymm14 = ymm13[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]2370; AVX2-NEXT: vpshufd {{.*#+}} ymm14 = ymm14[2,2,2,2,6,6,6,6]2371; AVX2-NEXT: vmovdqa %ymm6, %ymm92372; AVX2-NEXT: vpshufd {{.*#+}} ymm15 = ymm6[3,3,3,3,7,7,7,7]2373; AVX2-NEXT: vpblendw {{.*#+}} ymm14 = ymm15[0],ymm14[1],ymm15[2,3],ymm14[4],ymm15[5,6,7,8],ymm14[9],ymm15[10,11],ymm14[12],ymm15[13,14,15]2374; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,3]2375; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,2,2,3]2376; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm15 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]2377; AVX2-NEXT: vpblendvb %ymm15, %ymm1, %ymm14, %ymm12378; AVX2-NEXT: vmovdqa %ymm2, %ymm72379; AVX2-NEXT: vpshufhw {{.*#+}} ymm14 = ymm2[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]2380; AVX2-NEXT: vpshufd {{.*#+}} ymm14 = ymm14[2,2,2,3,6,6,6,7]2381; AVX2-NEXT: vmovdqa %ymm4, %ymm22382; AVX2-NEXT: vpshufd {{.*#+}} ymm15 = ymm4[3,3,3,3,7,7,7,7]2383; AVX2-NEXT: vpblendw {{.*#+}} ymm14 = ymm14[0,1],ymm15[2],ymm14[3,4],ymm15[5],ymm14[6,7,8,9],ymm15[10],ymm14[11,12],ymm15[13],ymm14[14,15]2384; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,2,2,3]2385; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm15 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]2386; AVX2-NEXT: vpblendvb %ymm15, %ymm1, %ymm14, %ymm12387; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload2388; AVX2-NEXT: vpshufd {{.*#+}} ymm14 = ymm4[2,3,3,3,6,7,7,7]2389; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,1,3,2]2390; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]2391; AVX2-NEXT: vpblendvb %ymm15, %ymm1, %ymm14, %ymm142392; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm12[0],xmm5[0],xmm12[1],xmm5[1],xmm12[2],xmm5[2],xmm12[3],xmm5[3]2393; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]2394; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]2395; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm10 = xmm11[0],xmm10[0],xmm11[1],xmm10[1],xmm11[2],xmm10[2],xmm11[3],xmm10[3]2396; AVX2-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[0,1,3,2,4,5,6,7]2397; AVX2-NEXT: vpshufd {{.*#+}} xmm10 = xmm10[0,0,1,1]2398; AVX2-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,1,1,3]2399; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]2400; AVX2-NEXT: vpblendvb %ymm11, %ymm1, %ymm10, %ymm12401; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,2,4,5,6,7]2402; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,1,3]2403; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]2404; AVX2-NEXT: vpbroadcastd (%rax), %ymm102405; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0]2406; AVX2-NEXT: vpblendvb %ymm11, %ymm0, %ymm10, %ymm02407; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]2408; AVX2-NEXT: vpblendvb %ymm10, %ymm1, %ymm0, %ymm102409; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm6[2,2,2,2,6,6,6,6]2410; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm13[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]2411; AVX2-NEXT: vmovdqa %ymm13, %ymm62412; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm0[2],ymm1[3,4],ymm0[5],ymm1[6,7,8,9],ymm0[10],ymm1[11,12],ymm0[13],ymm1[14,15]2413; AVX2-NEXT: vpermq {{.*#+}} ymm12 = ymm0[2,2,2,3]2414; AVX2-NEXT: vmovdqa %ymm3, %ymm02415; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm3[2,2,2,2,6,6,6,6]2416; AVX2-NEXT: vpshufhw {{.*#+}} ymm11 = ymm8[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]2417; AVX2-NEXT: vpshufd {{.*#+}} ymm11 = ymm11[2,2,2,2,6,6,6,6]2418; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm11[1],ymm1[2,3],ymm11[4],ymm1[5,6,7,8],ymm11[9],ymm1[10,11],ymm11[12],ymm1[13,14,15]2419; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]2420; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]2421; AVX2-NEXT: vpblendvb %ymm11, %ymm12, %ymm1, %ymm32422; AVX2-NEXT: vmovdqa %ymm2, %ymm152423; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm2[1,2,2,3,5,6,6,7]2424; AVX2-NEXT: vmovdqa %ymm7, %ymm22425; AVX2-NEXT: vpshuflw {{.*#+}} ymm11 = ymm7[3,3,3,3,4,5,6,7,11,11,11,11,12,13,14,15]2426; AVX2-NEXT: vpshufhw {{.*#+}} ymm11 = ymm11[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]2427; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm11[2],ymm1[3,4],ymm11[5],ymm1[6,7,8,9],ymm11[10],ymm1[11,12],ymm11[13],ymm1[14,15]2428; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]2429; AVX2-NEXT: vmovdqa %ymm4, %ymm132430; AVX2-NEXT: vpshufd {{.*#+}} ymm11 = ymm4[0,1,2,2,4,5,6,6]2431; AVX2-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,1,3,3]2432; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm12 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]2433; AVX2-NEXT: vpblendvb %ymm12, %ymm1, %ymm11, %ymm12434; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]2435; AVX2-NEXT: vpblendvb %ymm11, %ymm3, %ymm1, %ymm72436; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm0[1,1,1,1,5,5,5,5]2437; AVX2-NEXT: vpshuflw {{.*#+}} ymm5 = ymm8[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]2438; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[0,0,2,1,4,4,6,5]2439; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm5[0,1],ymm1[2],ymm5[3,4],ymm1[5],ymm5[6,7,8,9],ymm1[10],ymm5[11,12],ymm1[13],ymm5[14,15]2440; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]2441; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm9[0,1,1,3,4,5,5,7]2442; AVX2-NEXT: vpshuflw {{.*#+}} ymm4 = ymm6[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]2443; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[0,0,0,0,4,4,4,4]2444; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3,4],ymm4[5],ymm3[6,7,8,9],ymm4[10],ymm3[11,12],ymm4[13],ymm3[14,15]2445; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,1,3,2]2446; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]2447; AVX2-NEXT: vpblendvb %ymm4, %ymm1, %ymm3, %ymm12448; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm15[0,0,2,1,4,4,6,5]2449; AVX2-NEXT: vpshuflw {{.*#+}} ymm2 = ymm2[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]2450; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,0,0,4,4,4,4]2451; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1,2],ymm3[3],ymm2[4,5],ymm3[6],ymm2[7,8,9,10],ymm3[11],ymm2[12,13],ymm3[14],ymm2[15]2452; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]2453; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm13[0,1,1,3,4,5,5,7]2454; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,2,2,3]2455; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]2456; AVX2-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm22457; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]2458; AVX2-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm12459; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax2460; AVX2-NEXT: vmovups (%rsp), %ymm2 # 32-byte Reload2461; AVX2-NEXT: vmovaps %ymm2, 96(%rax)2462; AVX2-NEXT: vmovdqa %ymm1, 128(%rax)2463; AVX2-NEXT: vmovdqa %ymm7, 160(%rax)2464; AVX2-NEXT: vmovdqa %ymm10, (%rax)2465; AVX2-NEXT: vmovdqa %ymm14, 192(%rax)2466; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2467; AVX2-NEXT: vmovaps %ymm0, 32(%rax)2468; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2469; AVX2-NEXT: vmovaps %ymm0, 64(%rax)2470; AVX2-NEXT: addq $40, %rsp2471; AVX2-NEXT: vzeroupper2472; AVX2-NEXT: retq2473;2474; AVX2-FP-LABEL: store_i16_stride7_vf16:2475; AVX2-FP: # %bb.0:2476; AVX2-FP-NEXT: subq $40, %rsp2477; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax2478; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm72479; AVX2-FP-NEXT: vmovdqa (%rsi), %ymm62480; AVX2-FP-NEXT: vmovdqa (%rdx), %ymm122481; AVX2-FP-NEXT: vmovdqa (%rcx), %ymm42482; AVX2-FP-NEXT: vmovdqa (%r8), %ymm32483; AVX2-FP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2484; AVX2-FP-NEXT: vmovdqa (%r9), %ymm132485; AVX2-FP-NEXT: vmovdqa (%rax), %ymm12486; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2487; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm0 = [3,0,0,0,4,0,0,4]2488; AVX2-FP-NEXT: vpermd %ymm7, %ymm0, %ymm02489; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm8 = ymm6[0,1,0,1,14,15,14,15,8,9,10,11,12,13,14,15,16,17,16,17,30,31,30,31,24,25,26,27,28,29,30,31]2490; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,65535,0,0,0,0,0,0,65535,0,0,0,0,0,0,65535]2491; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02492; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [0,3,0,0,0,4,0,0]2493; AVX2-FP-NEXT: vpermd %ymm12, %ymm8, %ymm82494; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm9 = ymm4[0,1,0,1,0,1,0,1,14,15,14,15,14,15,14,15,16,17,16,17,16,17,16,17,30,31,30,31,30,31,30,31]2495; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,0,0,65535,0,0,0,0,0,0,65535,0,0,0,0,0]2496; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82497; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]2498; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02499; AVX2-FP-NEXT: vpmovsxbq {{.*#+}} ymm8 = [0,3,0,4]2500; AVX2-FP-NEXT: vpermd %ymm3, %ymm8, %ymm82501; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm9 = ymm13[0,1,2,3,4,5,6,7,0,1,0,1,14,15,14,15,16,17,18,19,20,21,22,23,16,17,16,17,30,31,30,31]2502; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,0,0,0,0,65535,0,0,0,0,0,0,65535,0,0,0]2503; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82504; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [3,0,0,3,0,0,0,4]2505; AVX2-FP-NEXT: vpermd %ymm1, %ymm9, %ymm92506; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0]2507; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82508; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]2509; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02510; AVX2-FP-NEXT: vmovdqu %ymm0, (%rsp) # 32-byte Spill2511; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm102512; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm112513; AVX2-FP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm11[4],xmm10[4],xmm11[5],xmm10[5],xmm11[6],xmm10[6],xmm11[7],xmm10[7]2514; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[4,5,2,3,4,5,6,7,8,9,10,11,10,11,8,9]2515; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,3]2516; AVX2-FP-NEXT: vmovdqa (%rcx), %xmm32517; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm52518; AVX2-FP-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm5[4],xmm3[4],xmm5[5],xmm3[5],xmm5[6],xmm3[6],xmm5[7],xmm3[7]2519; AVX2-FP-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[0,2,3,3,4,5,6,7]2520; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,2,1]2521; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]2522; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm12523; AVX2-FP-NEXT: vmovdqa (%r9), %xmm92524; AVX2-FP-NEXT: vmovdqa (%r8), %xmm142525; AVX2-FP-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm14[4],xmm9[4],xmm14[5],xmm9[5],xmm14[6],xmm9[6],xmm14[7],xmm9[7]2526; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]2527; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]2528; AVX2-FP-NEXT: vpbroadcastd 8(%rax), %ymm02529; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]2530; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm8, %ymm0, %ymm02531; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]2532; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm0, %ymm1, %ymm02533; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2534; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm0 = xmm3[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]2535; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm1 = xmm5[1,1,2,2]2536; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1],xmm1[2,3],xmm0[4],xmm1[5,6],xmm0[7]2537; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm1 = xmm11[u,u,u,u,6,7,u,u,u,u,8,9,u,u,u,u]2538; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm15 = xmm10[1,1,2,3]2539; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm1 = xmm15[0,1],xmm1[2],xmm15[3,4],xmm1[5],xmm15[6,7]2540; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]2541; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,2,1]2542; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]2543; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm0, %ymm1, %ymm12544; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm14[0],xmm9[0],xmm14[1],xmm9[1],xmm14[2],xmm9[2],xmm14[3],xmm9[3]2545; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm9 = xmm0[0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]2546; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,1,3]2547; AVX2-FP-NEXT: vpbroadcastd 4(%rax), %ymm142548; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]2549; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm9, %ymm14, %ymm92550; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]2551; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm1, %ymm9, %ymm12552; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2553; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,28,29,u,u,u,u,30,31,u,u]2554; AVX2-FP-NEXT: vmovdqa %ymm6, %ymm92555; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm14 = ymm7[3,3,3,3,7,7,7,7]2556; AVX2-FP-NEXT: vmovdqa %ymm7, %ymm82557; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm14[0,1,2],ymm1[3],ymm14[4,5],ymm1[6],ymm14[7,8,9,10],ymm1[11],ymm14[12,13],ymm1[14],ymm14[15]2558; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm14 = ymm4[u,u,12,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u,28,29,u,u,u,u,30,31,u,u,u,u,u,u]2559; AVX2-FP-NEXT: vmovdqa %ymm12, %ymm72560; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm15 = ymm12[3,3,3,3,7,7,7,7]2561; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm14 = ymm15[0],ymm14[1],ymm15[2,3],ymm14[4],ymm15[5,6,7,8],ymm14[9],ymm15[10,11],ymm14[12],ymm15[13,14,15]2562; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,3]2563; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,2,2,3]2564; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]2565; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm1, %ymm14, %ymm12566; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload2567; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm14 = ymm6[3,3,3,3,7,7,7,7]2568; AVX2-FP-NEXT: vmovdqa %ymm13, %ymm122569; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm15 = ymm13[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,28,29,u,u,28,29,26,27,u,u,30,31,30,31]2570; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm14 = ymm15[0,1],ymm14[2],ymm15[3,4],ymm14[5],ymm15[6,7,8,9],ymm14[10],ymm15[11,12],ymm14[13],ymm15[14,15]2571; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,2,2,3]2572; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]2573; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm1, %ymm14, %ymm12574; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload2575; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm14 = ymm13[2,3,3,3,6,7,7,7]2576; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,1,3,2]2577; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]2578; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm1, %ymm14, %ymm142579; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm10[0],xmm11[0],xmm10[1],xmm11[1],xmm10[2],xmm11[2],xmm10[3],xmm11[3]2580; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]2581; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]2582; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm10 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3]2583; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[0,1,2,3,0,1,2,3,6,7,4,5,6,7,4,5]2584; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,1,1,3]2585; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]2586; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm1, %ymm10, %ymm12587; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,6,7,4,5,6,7,4,5,12,13,14,15]2588; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]2589; AVX2-FP-NEXT: vpbroadcastd (%rax), %ymm102590; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0]2591; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm0, %ymm10, %ymm02592; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]2593; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm1, %ymm0, %ymm102594; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm0 = ymm7[2,2,2,2,6,6,6,6]2595; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]2596; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm0[2],ymm1[3,4],ymm0[5],ymm1[6,7,8,9],ymm0[10],ymm1[11,12],ymm0[13],ymm1[14,15]2597; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm0[2,2,2,3]2598; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm9[u,u,8,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,u,u,u,u,26,27,u,u,u,u,u,u]2599; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm11 = ymm8[2,2,2,2,6,6,6,6]2600; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm11[0],ymm1[1],ymm11[2,3],ymm1[4],ymm11[5,6,7,8],ymm1[9],ymm11[10,11],ymm1[12],ymm11[13,14,15]2601; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]2602; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]2603; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm2, %ymm1, %ymm32604; AVX2-FP-NEXT: vmovdqa %ymm12, %ymm22605; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm12[u,u,u,u,u,u,u,u,u,u,8,9,u,u,u,u,u,u,u,u,22,23,u,u,u,u,24,25,u,u,u,u]2606; AVX2-FP-NEXT: vmovdqa %ymm6, %ymm152607; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm11 = ymm6[1,2,2,3,5,6,6,7]2608; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm11[0,1],ymm1[2],ymm11[3,4],ymm1[5],ymm11[6,7,8,9],ymm1[10],ymm11[11,12],ymm1[13],ymm11[14,15]2609; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]2610; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm11 = ymm13[0,1,2,2,4,5,6,6]2611; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,1,3,3]2612; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]2613; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm1, %ymm11, %ymm12614; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]2615; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm3, %ymm1, %ymm62616; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm8[1,1,1,1,5,5,5,5]2617; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm5 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,u,u,20,21,24,25,u,u,22,23,22,23]2618; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm5[0,1],ymm1[2],ymm5[3,4],ymm1[5],ymm5[6,7,8,9],ymm1[10],ymm5[11,12],ymm1[13],ymm5[14,15]2619; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]2620; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} ymm4 = ymm4[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]2621; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm3 = ymm7[0,1,1,3,4,5,5,7]2622; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3,4],ymm4[5],ymm3[6,7,8,9],ymm4[10],ymm3[11,12],ymm4[13],ymm3[14,15]2623; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,1,3,2]2624; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]2625; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm1, %ymm3, %ymm12626; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm3 = ymm15[0,0,2,1,4,4,6,5]2627; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,18,19,u,u,18,19,20,21,u,u,20,21]2628; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1,2],ymm3[3],ymm2[4,5],ymm3[6],ymm2[7,8,9,10],ymm3[11],ymm2[12,13],ymm3[14],ymm2[15]2629; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]2630; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm3 = ymm13[0,1,1,3,4,5,5,7]2631; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,2,2,3]2632; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]2633; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm22634; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]2635; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm12636; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax2637; AVX2-FP-NEXT: vmovups (%rsp), %ymm2 # 32-byte Reload2638; AVX2-FP-NEXT: vmovaps %ymm2, 96(%rax)2639; AVX2-FP-NEXT: vmovdqa %ymm1, 128(%rax)2640; AVX2-FP-NEXT: vmovdqa %ymm6, 160(%rax)2641; AVX2-FP-NEXT: vmovdqa %ymm10, (%rax)2642; AVX2-FP-NEXT: vmovdqa %ymm14, 192(%rax)2643; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2644; AVX2-FP-NEXT: vmovaps %ymm0, 32(%rax)2645; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2646; AVX2-FP-NEXT: vmovaps %ymm0, 64(%rax)2647; AVX2-FP-NEXT: addq $40, %rsp2648; AVX2-FP-NEXT: vzeroupper2649; AVX2-FP-NEXT: retq2650;2651; AVX2-FCP-LABEL: store_i16_stride7_vf16:2652; AVX2-FCP: # %bb.0:2653; AVX2-FCP-NEXT: pushq %rax2654; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax2655; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm52656; AVX2-FCP-NEXT: vmovdqa (%rsi), %ymm72657; AVX2-FCP-NEXT: vmovdqa (%rdx), %ymm42658; AVX2-FCP-NEXT: vmovdqa (%rcx), %ymm62659; AVX2-FCP-NEXT: vmovdqa (%r8), %ymm152660; AVX2-FCP-NEXT: vmovdqa (%r9), %ymm32661; AVX2-FCP-NEXT: vmovdqa (%rax), %ymm12662; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm4[2,2,2,2,6,6,6,6]2663; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]2664; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm8[0,1],ymm0[2],ymm8[3,4],ymm0[5],ymm8[6,7,8,9],ymm0[10],ymm8[11,12],ymm0[13],ymm8[14,15]2665; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]2666; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm7[u,u,8,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,u,u,u,u,26,27,u,u,u,u,u,u]2667; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm9 = ymm5[2,2,2,2,6,6,6,6]2668; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2,3],ymm8[4],ymm9[5,6,7,8],ymm8[9],ymm9[10,11],ymm8[12],ymm9[13,14,15]2669; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,2,2,3]2670; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]2671; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02672; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [4,5,2,2,6,6,6,6]2673; AVX2-FCP-NEXT: vpermd %ymm1, %ymm8, %ymm82674; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm3[u,u,u,u,u,u,u,u,u,u,8,9,u,u,u,u,u,u,u,u,22,23,u,u,u,u,24,25,u,u,u,u]2675; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm10 = ymm15[1,2,2,3,5,6,6,7]2676; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0,1],ymm9[2],ymm10[3,4],ymm9[5],ymm10[6,7,8,9],ymm9[10],ymm10[11,12],ymm9[13],ymm10[14,15]2677; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,1,3,2]2678; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]2679; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm9, %ymm8, %ymm82680; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]2681; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02682; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2683; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm5[1,1,1,1,5,5,5,5]2684; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,u,u,20,21,24,25,u,u,22,23,22,23]2685; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm8[0,1],ymm0[2],ymm8[3,4],ymm0[5],ymm8[6,7,8,9],ymm0[10],ymm8[11,12],ymm0[13],ymm8[14,15]2686; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]2687; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} ymm8 = ymm6[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]2688; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm9 = ymm4[0,1,1,3,4,5,5,7]2689; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2],ymm9[3,4],ymm8[5],ymm9[6,7,8,9],ymm8[10],ymm9[11,12],ymm8[13],ymm9[14,15]2690; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,1,3,2]2691; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]2692; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02693; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [0,1,4,5,4,5,5,7]2694; AVX2-FCP-NEXT: vpermd %ymm1, %ymm8, %ymm82695; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2696; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm9 = ymm15[0,0,2,1,4,4,6,5]2697; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,18,19,u,u,18,19,20,21,u,u,20,21]2698; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0,1,2],ymm9[3],ymm10[4,5],ymm9[6],ymm10[7,8,9,10],ymm9[11],ymm10[12,13],ymm9[14],ymm10[15]2699; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]2700; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]2701; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm9, %ymm8, %ymm82702; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]2703; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02704; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2705; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm0 = [3,0,0,0,4,0,0,4]2706; AVX2-FCP-NEXT: vpermd %ymm5, %ymm0, %ymm02707; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm7[0,1,0,1,14,15,14,15,8,9,10,11,12,13,14,15,16,17,16,17,30,31,30,31,24,25,26,27,28,29,30,31]2708; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,65535,0,0,0,0,0,0,65535,0,0,0,0,0,0,65535]2709; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02710; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [0,3,0,0,0,4,0,0]2711; AVX2-FCP-NEXT: vpermd %ymm4, %ymm8, %ymm82712; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm6[0,1,0,1,0,1,0,1,14,15,14,15,14,15,14,15,16,17,16,17,16,17,16,17,30,31,30,31,30,31,30,31]2713; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,0,0,65535,0,0,0,0,0,0,65535,0,0,0,0,0]2714; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82715; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]2716; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02717; AVX2-FCP-NEXT: vpmovsxbq {{.*#+}} ymm8 = [0,3,0,4]2718; AVX2-FCP-NEXT: vpermd %ymm15, %ymm8, %ymm82719; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm3[0,1,2,3,4,5,6,7,0,1,0,1,14,15,14,15,16,17,18,19,20,21,22,23,16,17,16,17,30,31,30,31]2720; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,0,0,0,0,65535,0,0,0,0,0,0,65535,0,0,0]2721; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82722; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [3,0,0,3,0,0,0,4]2723; AVX2-FCP-NEXT: vpermd %ymm1, %ymm9, %ymm92724; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0]2725; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82726; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]2727; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm02728; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2729; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm102730; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm122731; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm12[4],xmm10[4],xmm12[5],xmm10[5],xmm12[6],xmm10[6],xmm12[7],xmm10[7]2732; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[4,5,2,3,4,5,6,7,8,9,10,11,10,11,8,9]2733; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,3]2734; AVX2-FCP-NEXT: vmovdqa (%rcx), %xmm132735; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm142736; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm14[4],xmm13[4],xmm14[5],xmm13[5],xmm14[6],xmm13[6],xmm14[7],xmm13[7]2737; AVX2-FCP-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[0,2,3,3,4,5,6,7]2738; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,2,1]2739; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]2740; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm0, %ymm8, %ymm112741; AVX2-FCP-NEXT: vmovdqa (%r9), %xmm82742; AVX2-FCP-NEXT: vmovdqa (%r8), %xmm22743; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm2[4],xmm8[4],xmm2[5],xmm8[5],xmm2[6],xmm8[6],xmm2[7],xmm8[7]2744; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]2745; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm0[0,0,1,1]2746; AVX2-FCP-NEXT: vpbroadcastd 8(%rax), %ymm02747; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]2748; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm1, %ymm0, %ymm02749; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm1 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]2750; AVX2-FCP-NEXT: vpblendvb %ymm1, %ymm0, %ymm11, %ymm112751; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm13[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]2752; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm1 = xmm14[1,1,2,2]2753; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1],xmm1[2,3],xmm0[4],xmm1[5,6],xmm0[7]2754; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm12[u,u,u,u,6,7,u,u,u,u,8,9,u,u,u,u]2755; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm9 = xmm10[1,1,2,3]2756; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm9[0,1],xmm1[2],xmm9[3,4],xmm1[5],xmm9[6,7]2757; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]2758; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,2,1]2759; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]2760; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm0, %ymm1, %ymm12761; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3]2762; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm0[0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]2763; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,1,3]2764; AVX2-FCP-NEXT: vpbroadcastd 4(%rax), %ymm82765; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]2766; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm2, %ymm8, %ymm22767; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]2768; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm1, %ymm2, %ymm82769; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,28,29,u,u,u,u,30,31,u,u]2770; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm5[3,3,3,3,7,7,7,7]2771; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8,9,10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]2772; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm6[u,u,12,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u,28,29,u,u,u,u,30,31,u,u,u,u,u,u]2773; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[3,3,3,3,7,7,7,7]2774; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm2[1],ymm4[2,3],ymm2[4],ymm4[5,6,7,8],ymm2[9],ymm4[10,11],ymm2[12],ymm4[13,14,15]2775; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,3]2776; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]2777; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]2778; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm1, %ymm2, %ymm12779; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm15[3,3,3,3,7,7,7,7]2780; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,28,29,u,u,28,29,26,27,u,u,30,31,30,31]2781; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0,1],ymm2[2],ymm3[3,4],ymm2[5],ymm3[6,7,8,9],ymm2[10],ymm3[11,12],ymm2[13],ymm3[14,15]2782; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]2783; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]2784; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm12785; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [6,7,3,3,7,7,6,7]2786; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm2 # 32-byte Folded Reload2787; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]2788; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm12789; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm10[0],xmm12[0],xmm10[1],xmm12[1],xmm10[2],xmm12[2],xmm10[3],xmm12[3]2790; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]2791; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]2792; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm14[0],xmm13[0],xmm14[1],xmm13[1],xmm14[2],xmm13[2],xmm14[3],xmm13[3]2793; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[0,1,2,3,0,1,2,3,6,7,4,5,6,7,4,5]2794; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,1,3]2795; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]2796; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm22797; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,6,7,4,5,6,7,4,5,12,13,14,15]2798; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]2799; AVX2-FCP-NEXT: vpbroadcastd (%rax), %ymm32800; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0]2801; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm0, %ymm3, %ymm02802; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]2803; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm2, %ymm0, %ymm02804; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax2805; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload2806; AVX2-FCP-NEXT: vmovaps %ymm2, 96(%rax)2807; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload2808; AVX2-FCP-NEXT: vmovaps %ymm2, 128(%rax)2809; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload2810; AVX2-FCP-NEXT: vmovaps %ymm2, 160(%rax)2811; AVX2-FCP-NEXT: vmovdqa %ymm0, (%rax)2812; AVX2-FCP-NEXT: vmovdqa %ymm1, 192(%rax)2813; AVX2-FCP-NEXT: vmovdqa %ymm8, 32(%rax)2814; AVX2-FCP-NEXT: vmovdqa %ymm11, 64(%rax)2815; AVX2-FCP-NEXT: popq %rax2816; AVX2-FCP-NEXT: vzeroupper2817; AVX2-FCP-NEXT: retq2818;2819; AVX512-LABEL: store_i16_stride7_vf16:2820; AVX512: # %bb.0:2821; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax2822; AVX512-NEXT: vmovdqa (%rdi), %ymm82823; AVX512-NEXT: vmovdqa (%rsi), %ymm92824; AVX512-NEXT: vmovdqa (%rdx), %ymm62825; AVX512-NEXT: vmovdqa (%rcx), %ymm72826; AVX512-NEXT: vmovdqa (%r8), %ymm22827; AVX512-NEXT: vmovdqa (%r9), %ymm32828; AVX512-NEXT: vmovdqa (%rax), %ymm132829; AVX512-NEXT: vpshufb {{.*#+}} ymm1 = ymm7[u,u,u,u,u,u],zero,zero,ymm7[14,15,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm7[16,17,u,u,u,u,u,u,u,u]2830; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = ymm6[u,u,u,u,u,u,14,15],zero,zero,ymm6[u,u,u,u,u,u,u,u,u,u,16,17],zero,zero,ymm6[u,u,u,u,u,u,u,u]2831; AVX512-NEXT: vporq %ymm1, %ymm4, %ymm162832; AVX512-NEXT: vmovdqa (%rcx), %xmm142833; AVX512-NEXT: vmovdqa (%rdx), %xmm152834; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm15[4],xmm14[4],xmm15[5],xmm14[5],xmm15[6],xmm14[6],xmm15[7],xmm14[7]2835; AVX512-NEXT: vmovdqa64 %xmm0, %xmm212836; AVX512-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm9[14,15,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero,ymm9[16,17,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero2837; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = ymm8[12,13,14,15],zero,zero,ymm8[u,u,u,u,u,u,u,u,u,u,16,17],zero,zero,ymm8[u,u,u,u,u,u,u,u,16,17,18,19]2838; AVX512-NEXT: vporq %ymm1, %ymm4, %ymm172839; AVX512-NEXT: vmovdqa (%rdi), %xmm12840; AVX512-NEXT: vmovdqa (%rsi), %xmm42841; AVX512-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm3[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm3[16,17],zero,zero,zero,zero2842; AVX512-NEXT: vpshufb {{.*#+}} ymm10 = ymm2[u,u,u,u,u,u,u,u,12,13,14,15],zero,zero,ymm2[u,u,u,u,u,u,u,u,u,u,16,17],zero,zero,ymm2[u,u,u,u]2843; AVX512-NEXT: vporq %ymm5, %ymm10, %ymm192844; AVX512-NEXT: vpbroadcastd 8(%rax), %ymm52845; AVX512-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm5, %ymm52846; AVX512-NEXT: vpshufb {{.*#+}} ymm10 = ymm13[12,13,u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm13[14,15,u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm13[16,17,u,u]2847; AVX512-NEXT: vinserti64x4 $1, %ymm10, %zmm5, %zmm52848; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm6[0,1,1,3,4,5,5,7]2849; AVX512-NEXT: vpshuflw {{.*#+}} ymm12 = ymm7[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]2850; AVX512-NEXT: vpshufd {{.*#+}} ymm12 = ymm12[0,0,0,0,4,4,4,4]2851; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm10[0,1],ymm12[2],ymm10[3,4],ymm12[5],ymm10[6,7,8,9],ymm12[10],ymm10[11,12],ymm12[13],ymm10[14,15]2852; AVX512-NEXT: vmovdqa64 %ymm0, %ymm222853; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm6[2,2,2,2,6,6,6,6]2854; AVX512-NEXT: vpshufb {{.*#+}} ymm12 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]2855; AVX512-NEXT: vpblendw {{.*#+}} ymm12 = ymm12[0,1],ymm10[2],ymm12[3,4],ymm10[5],ymm12[6,7,8,9],ymm10[10],ymm12[11,12],ymm10[13],ymm12[14,15]2856; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm8[1,1,1,1,5,5,5,5]2857; AVX512-NEXT: vpshuflw {{.*#+}} ymm11 = ymm9[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]2858; AVX512-NEXT: vpshufd {{.*#+}} ymm11 = ymm11[0,0,2,1,4,4,6,5]2859; AVX512-NEXT: vpblendw {{.*#+}} ymm11 = ymm11[0,1],ymm10[2],ymm11[3,4],ymm10[5],ymm11[6,7,8,9],ymm10[10],ymm11[11,12],ymm10[13],ymm11[14,15]2860; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm10 = xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7]2861; AVX512-NEXT: vinserti64x4 $1, %ymm12, %zmm11, %zmm202862; AVX512-NEXT: vprold $16, %xmm4, %xmm112863; AVX512-NEXT: vpshufd {{.*#+}} xmm12 = xmm1[1,1,2,3]2864; AVX512-NEXT: vpblendw {{.*#+}} xmm11 = xmm12[0,1],xmm11[2],xmm12[3,4],xmm11[5],xmm12[6,7]2865; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm12 = xmm15[0],xmm14[0],xmm15[1],xmm14[1],xmm15[2],xmm14[2],xmm15[3],xmm14[3]2866; AVX512-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[0,1,3,2,4,5,6,7]2867; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm18 = [0,0,0,0,1,1,0,0,0,0,16,17,0,0,18,0]2868; AVX512-NEXT: vpermi2d %zmm11, %zmm12, %zmm182869; AVX512-NEXT: vpshufd {{.*#+}} ymm11 = ymm8[2,2,2,2,6,6,6,6]2870; AVX512-NEXT: vpshufhw {{.*#+}} ymm12 = ymm9[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]2871; AVX512-NEXT: vpshufd {{.*#+}} ymm12 = ymm12[2,2,2,2,6,6,6,6]2872; AVX512-NEXT: vpblendw {{.*#+}} ymm12 = ymm11[0],ymm12[1],ymm11[2,3],ymm12[4],ymm11[5,6,7,8],ymm12[9],ymm11[10,11],ymm12[12],ymm11[13,14,15]2873; AVX512-NEXT: vmovdqa (%r9), %xmm112874; AVX512-NEXT: vpshufb {{.*#+}} xmm14 = xmm14[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]2875; AVX512-NEXT: vpshufd {{.*#+}} xmm15 = xmm15[1,1,2,2]2876; AVX512-NEXT: vpblendw {{.*#+}} xmm14 = xmm15[0],xmm14[1],xmm15[2,3],xmm14[4],xmm15[5,6],xmm14[7]2877; AVX512-NEXT: vmovdqa (%r8), %xmm152878; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3]2879; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm15[4],xmm11[4],xmm15[5],xmm11[5],xmm15[6],xmm11[6],xmm15[7],xmm11[7]2880; AVX512-NEXT: vmovdqa {{.*#+}} xmm0 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]2881; AVX512-NEXT: vpshufb %xmm0, %xmm4, %xmm42882; AVX512-NEXT: vpshufb %xmm0, %xmm1, %xmm02883; AVX512-NEXT: vinserti64x4 $1, %ymm14, %zmm0, %zmm12884; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm2[0,0,2,1,4,4,6,5]2885; AVX512-NEXT: vpshuflw {{.*#+}} ymm14 = ymm3[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]2886; AVX512-NEXT: vpshufd {{.*#+}} ymm14 = ymm14[0,0,0,0,4,4,4,4]2887; AVX512-NEXT: vpblendw {{.*#+}} ymm14 = ymm14[0,1,2],ymm0[3],ymm14[4,5],ymm0[6],ymm14[7,8,9,10],ymm0[11],ymm14[12,13],ymm0[14],ymm14[15]2888; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm15[0],xmm11[0],xmm15[1],xmm11[1],xmm15[2],xmm11[2],xmm15[3],xmm11[3]2889; AVX512-NEXT: vpshufhw {{.*#+}} xmm11 = xmm0[0,1,2,3,4,5,7,6]2890; AVX512-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,2,4,5,6,7]2891; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm15 = [0,0,0,1,0,1,1,0,0,18,19,0,19,19,0,0]2892; AVX512-NEXT: vpermi2d %zmm11, %zmm0, %zmm152893; AVX512-NEXT: vprold $16, %ymm3, %ymm02894; AVX512-NEXT: vpshufd {{.*#+}} ymm11 = ymm2[1,2,2,3,5,6,6,7]2895; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm11[0,1],ymm0[2],ymm11[3,4],ymm0[5],ymm11[6,7,8,9],ymm0[10],ymm11[11,12],ymm0[13],ymm11[14,15]2896; AVX512-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[3,3,3,3,7,7,7,7]2897; AVX512-NEXT: vpshufhw {{.*#+}} ymm9 = ymm9[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]2898; AVX512-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,2,2,2,6,6,6,6]2899; AVX512-NEXT: vpblendw {{.*#+}} ymm8 = ymm8[0,1,2],ymm9[3],ymm8[4,5],ymm9[6],ymm8[7,8,9,10],ymm9[11],ymm8[12,13],ymm9[14],ymm8[15]2900; AVX512-NEXT: vpshufd {{.*#+}} ymm6 = ymm6[3,3,3,3,7,7,7,7]2901; AVX512-NEXT: vpshufhw {{.*#+}} ymm7 = ymm7[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]2902; AVX512-NEXT: vpshufd {{.*#+}} ymm7 = ymm7[2,2,2,2,6,6,6,6]2903; AVX512-NEXT: vpblendw {{.*#+}} ymm6 = ymm6[0],ymm7[1],ymm6[2,3],ymm7[4],ymm6[5,6,7,8],ymm7[9],ymm6[10,11],ymm7[12],ymm6[13,14,15]2904; AVX512-NEXT: vmovdqa64 %xmm21, %xmm72905; AVX512-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[0,2,3,3,4,5,6,7]2906; AVX512-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,2,1]2907; AVX512-NEXT: vpshuflw {{.*#+}} xmm9 = xmm10[2,1,2,3,4,5,6,7]2908; AVX512-NEXT: vpshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,5,5,4]2909; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,3]2910; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]2911; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm22[2,1,3,2]2912; AVX512-NEXT: vpermq {{.*#+}} ymm11 = ymm12[0,2,2,3]2913; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm14[2,2,3,3]2914; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,2]2915; AVX512-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,1,3,3]2916; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,2,3]2917; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[3,3,3,3,7,7,7,7]2918; AVX512-NEXT: vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]2919; AVX512-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[2,2,2,3,6,6,6,7]2920; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0,1],ymm2[2],ymm3[3,4],ymm2[5],ymm3[6,7,8,9],ymm2[10],ymm3[11,12],ymm2[13],ymm3[14,15]2921; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]2922; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm3 = [0,0,4,0,0,0,5,0,0,5,0,0,0,6,0,0]2923; AVX512-NEXT: vpermd %zmm13, %zmm3, %zmm32924; AVX512-NEXT: vpshufd {{.*#+}} ymm13 = ymm13[2,3,3,3,6,7,7,7]2925; AVX512-NEXT: vinserti64x4 $1, %ymm16, %zmm7, %zmm72926; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rcx2927; AVX512-NEXT: vinserti64x4 $1, %ymm17, %zmm9, %zmm92928; AVX512-NEXT: vpternlogq {{.*#+}} zmm9 = zmm7 ^ (mem & (zmm9 ^ zmm7))2929; AVX512-NEXT: vinserti64x4 $1, %ymm19, %zmm4, %zmm42930; AVX512-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 | (zmm4 & mem)2931; AVX512-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 ^ (mem & (zmm5 ^ zmm9))2932; AVX512-NEXT: vinserti64x4 $1, %ymm11, %zmm10, %zmm42933; AVX512-NEXT: vpermq {{.*#+}} zmm7 = zmm20[2,2,2,3,6,6,6,7]2934; AVX512-NEXT: vpternlogq {{.*#+}} zmm7 = zmm4 ^ (mem & (zmm7 ^ zmm4))2935; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm12, %zmm02936; AVX512-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm0))2937; AVX512-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm7))2938; AVX512-NEXT: vpermq {{.*#+}} zmm0 = zmm1[0,0,1,1,4,4,5,5]2939; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm18 ^ (mem & (zmm0 ^ zmm18))2940; AVX512-NEXT: vpbroadcastd (%rax), %ymm12941; AVX512-NEXT: vpbroadcastd 4(%rax), %ymm42942; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm1, %zmm12943; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm15))2944; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm0))2945; AVX512-NEXT: vpternlogq {{.*#+}} ymm6 = ymm6 ^ (mem & (ymm6 ^ ymm8))2946; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm13[2,1,3,2]2947; AVX512-NEXT: vpternlogq {{.*#+}} ymm0 = ymm0 ^ (mem & (ymm0 ^ ymm2))2948; AVX512-NEXT: vpternlogq {{.*#+}} ymm0 = ymm0 ^ (mem & (ymm0 ^ ymm6))2949; AVX512-NEXT: vmovdqa %ymm0, 192(%rcx)2950; AVX512-NEXT: vmovdqa64 %zmm1, (%rcx)2951; AVX512-NEXT: vmovdqa64 %zmm3, 128(%rcx)2952; AVX512-NEXT: vmovdqa64 %zmm5, 64(%rcx)2953; AVX512-NEXT: vzeroupper2954; AVX512-NEXT: retq2955;2956; AVX512-FCP-LABEL: store_i16_stride7_vf16:2957; AVX512-FCP: # %bb.0:2958; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm52959; AVX512-FCP-NEXT: vmovdqa (%rsi), %ymm72960; AVX512-FCP-NEXT: vmovdqa (%rdx), %ymm42961; AVX512-FCP-NEXT: vmovdqa (%rcx), %ymm62962; AVX512-FCP-NEXT: vmovdqa (%r8), %ymm12963; AVX512-FCP-NEXT: vmovdqa (%r9), %ymm22964; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm7[14,15,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero,ymm7[16,17,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero2965; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm5[12,13,14,15],zero,zero,ymm5[u,u,u,u,u,u,u,u,u,u,16,17],zero,zero,ymm5[u,u,u,u,u,u,u,u,16,17,18,19]2966; AVX512-FCP-NEXT: vporq %ymm0, %ymm3, %ymm162967; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm112968; AVX512-FCP-NEXT: vmovdqa (%rsi), %xmm122969; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm6[u,u,u,u,u,u],zero,zero,ymm6[14,15,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm6[16,17,u,u,u,u,u,u,u,u]2970; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm4[u,u,u,u,u,u,14,15],zero,zero,ymm4[u,u,u,u,u,u,u,u,u,u,16,17],zero,zero,ymm4[u,u,u,u,u,u,u,u]2971; AVX512-FCP-NEXT: vporq %ymm0, %ymm3, %ymm172972; AVX512-FCP-NEXT: vmovdqa (%rcx), %xmm142973; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm2[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm2[16,17],zero,zero,zero,zero2974; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm1[u,u,u,u,u,u,u,u,12,13,14,15],zero,zero,ymm1[u,u,u,u,u,u,u,u,u,u,16,17],zero,zero,ymm1[u,u,u,u]2975; AVX512-FCP-NEXT: vporq %ymm0, %ymm3, %ymm182976; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,u,u,u,u,26,27,u,u,u,u,u,u]2977; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm5[2,2,2,2,6,6,6,6]2978; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0],ymm0[1],ymm3[2,3],ymm0[4],ymm3[5,6,7,8],ymm0[9],ymm3[10,11],ymm0[12],ymm3[13,14,15]2979; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} ymm3 = ymm6[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]2980; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm9 = ymm4[0,1,1,3,4,5,5,7]2981; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm9[0,1],ymm3[2],ymm9[3,4],ymm3[5],ymm9[6,7,8,9],ymm3[10],ymm9[11,12],ymm3[13],ymm9[14,15]2982; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm9 = [2,0,3,2,0,10,10,11]2983; AVX512-FCP-NEXT: vpermi2q %zmm0, %zmm3, %zmm92984; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm4[2,2,2,2,6,6,6,6]2985; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]2986; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0,1],ymm0[2],ymm3[3,4],ymm0[5],ymm3[6,7,8,9],ymm0[10],ymm3[11,12],ymm0[13],ymm3[14,15]2987; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm5[1,1,1,1,5,5,5,5]2988; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,u,u,20,21,24,25,u,u,22,23,22,23]2989; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm10[0,1],ymm3[2],ymm10[3,4],ymm3[5],ymm10[6,7,8,9],ymm3[10],ymm10[11,12],ymm3[13],ymm10[14,15]2990; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm3, %zmm192991; AVX512-FCP-NEXT: vprold $16, %ymm2, %ymm02992; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm1[1,2,2,3,5,6,6,7]2993; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0,1],ymm0[2],ymm3[3,4],ymm0[5],ymm3[6,7,8,9],ymm0[10],ymm3[11,12],ymm0[13],ymm3[14,15]2994; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm1[0,0,2,1,4,4,6,5]2995; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm13 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,18,19,u,u,18,19,20,21,u,u,20,21]2996; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm13[0,1,2],ymm3[3],ymm13[4,5],ymm3[6],ymm13[7,8,9,10],ymm3[11],ymm13[12,13],ymm3[14],ymm13[15]2997; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm82998; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm13 = [2,2,3,3,10,0,11,10]2999; AVX512-FCP-NEXT: vpermi2q %zmm0, %zmm3, %zmm133000; AVX512-FCP-NEXT: vprold $16, %xmm12, %xmm03001; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm3 = xmm11[1,1,2,3]3002; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm3[0,1],xmm0[2],xmm3[3,4],xmm0[5],xmm3[6,7]3003; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm8[0],xmm14[0],xmm8[1],xmm14[1],xmm8[2],xmm14[2],xmm8[3],xmm14[3]3004; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[0,1,2,3,0,1,2,3,6,7,4,5,6,7,4,5]3005; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm15 = [0,0,1,0,0,8,0,9]3006; AVX512-FCP-NEXT: vpermi2q %zmm0, %zmm3, %zmm153007; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm12[4],xmm11[4],xmm12[5],xmm11[5],xmm12[6],xmm11[6],xmm12[7],xmm11[7]3008; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm8[4],xmm14[4],xmm8[5],xmm14[5],xmm8[6],xmm14[6],xmm8[7],xmm14[7]3009; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm14 = xmm14[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]3010; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm8 = xmm8[1,1,2,2]3011; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0],xmm14[1],xmm8[2,3],xmm14[4],xmm8[5,6],xmm14[7]3012; AVX512-FCP-NEXT: vmovdqa (%r9), %xmm143013; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3]3014; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm12 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]3015; AVX512-FCP-NEXT: vpshufb %xmm12, %xmm11, %xmm113016; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm11, %zmm113017; AVX512-FCP-NEXT: vmovdqa (%r8), %xmm83018; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm10 = xmm8[4],xmm14[4],xmm8[5],xmm14[5],xmm8[6],xmm14[6],xmm8[7],xmm14[7]3019; AVX512-FCP-NEXT: vpshufb %xmm12, %xmm10, %xmm123020; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax3021; AVX512-FCP-NEXT: vpbroadcastd 8(%rax), %ymm103022; AVX512-FCP-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm10, %ymm103023; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm8[0],xmm14[0],xmm8[1],xmm14[1],xmm8[2],xmm14[2],xmm8[3],xmm14[3]3024; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm14 = xmm8[0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]3025; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[0,1,2,3,6,7,4,5,6,7,4,5,12,13,14,15]3026; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm20 = [0,0,0,1,8,9,9,0]3027; AVX512-FCP-NEXT: vpermi2q %zmm14, %zmm8, %zmm203028; AVX512-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = mem[0,1,2,3,0,1,2,3]3029; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm14 = ymm8[12,13,u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm8[14,15,u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm8[16,17,u,u]3030; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm14, %zmm10, %zmm103031; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,28,29,u,u,u,u,30,31,u,u]3032; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[3,3,3,3,7,7,7,7]3033; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0,1,2],ymm7[3],ymm5[4,5],ymm7[6],ymm5[7,8,9,10],ymm7[11],ymm5[12,13],ymm7[14],ymm5[15]3034; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,28,29,u,u,u,u,30,31,u,u,u,u,u,u]3035; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[3,3,3,3,7,7,7,7]3036; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm6[1],ymm4[2,3],ymm6[4],ymm4[5,6,7,8],ymm6[9],ymm4[10,11],ymm6[12],ymm4[13,14,15]3037; AVX512-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm6 = [0,13,4,0,0,14,5,0,0,13,4,0,0,14,5,0]3038; AVX512-FCP-NEXT: # zmm6 = mem[0,1,2,3,0,1,2,3]3039; AVX512-FCP-NEXT: vpermd %zmm8, %zmm6, %zmm63040; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm7 = [6,0,0,0,7,0,0,7]3041; AVX512-FCP-NEXT: vpermd %ymm8, %ymm7, %ymm73042; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[4,5,2,3,4,5,6,7,8,9,10,11,10,11,8,9]3043; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,3]3044; AVX512-FCP-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]3045; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,2,1]3046; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm12[0,0,1,1]3047; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,1,3,3]3048; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,2,3]3049; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[3,3,3,3,7,7,7,7]3050; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,28,29,u,u,28,29,26,27,u,u,30,31,30,31]3051; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3,4],ymm1[5],ymm2[6,7,8,9],ymm1[10],ymm2[11,12],ymm1[13],ymm2[14,15]3052; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]3053; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rcx3054; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm16, %zmm3, %zmm23055; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm17, %zmm0, %zmm03056; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm2))3057; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm18, %zmm8, %zmm23058; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 | (zmm2 & mem)3059; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (mem & (zmm10 ^ zmm0))3060; AVX512-FCP-NEXT: vpermq {{.*#+}} zmm0 = zmm19[2,2,2,3,6,6,6,7]3061; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm9 ^ (mem & (zmm0 ^ zmm9))3062; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm13))3063; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm0))3064; AVX512-FCP-NEXT: vpermq {{.*#+}} zmm0 = zmm11[0,0,1,1,4,4,5,5]3065; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm15 ^ (mem & (zmm0 ^ zmm15))3066; AVX512-FCP-NEXT: vpbroadcastd (%rax), %ymm23067; AVX512-FCP-NEXT: vpbroadcastd 4(%rax), %ymm33068; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm2, %zmm23069; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm20))3070; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm0))3071; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm4 = ymm4 ^ (mem & (ymm4 ^ ymm5))3072; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm1 = ymm7 ^ (mem & (ymm1 ^ ymm7))3073; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm1 = ymm1 ^ (mem & (ymm1 ^ ymm4))3074; AVX512-FCP-NEXT: vmovdqa %ymm1, 192(%rcx)3075; AVX512-FCP-NEXT: vmovdqa64 %zmm2, (%rcx)3076; AVX512-FCP-NEXT: vmovdqa64 %zmm6, 128(%rcx)3077; AVX512-FCP-NEXT: vmovdqa64 %zmm10, 64(%rcx)3078; AVX512-FCP-NEXT: vzeroupper3079; AVX512-FCP-NEXT: retq3080;3081; AVX512DQ-LABEL: store_i16_stride7_vf16:3082; AVX512DQ: # %bb.0:3083; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax3084; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm83085; AVX512DQ-NEXT: vmovdqa (%rsi), %ymm93086; AVX512DQ-NEXT: vmovdqa (%rdx), %ymm63087; AVX512DQ-NEXT: vmovdqa (%rcx), %ymm73088; AVX512DQ-NEXT: vmovdqa (%r8), %ymm23089; AVX512DQ-NEXT: vmovdqa (%r9), %ymm33090; AVX512DQ-NEXT: vmovdqa (%rax), %ymm133091; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = ymm7[u,u,u,u,u,u],zero,zero,ymm7[14,15,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm7[16,17,u,u,u,u,u,u,u,u]3092; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = ymm6[u,u,u,u,u,u,14,15],zero,zero,ymm6[u,u,u,u,u,u,u,u,u,u,16,17],zero,zero,ymm6[u,u,u,u,u,u,u,u]3093; AVX512DQ-NEXT: vporq %ymm1, %ymm4, %ymm163094; AVX512DQ-NEXT: vmovdqa (%rcx), %xmm143095; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm153096; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm15[4],xmm14[4],xmm15[5],xmm14[5],xmm15[6],xmm14[6],xmm15[7],xmm14[7]3097; AVX512DQ-NEXT: vmovdqa64 %xmm0, %xmm213098; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm9[14,15,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero,ymm9[16,17,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero3099; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = ymm8[12,13,14,15],zero,zero,ymm8[u,u,u,u,u,u,u,u,u,u,16,17],zero,zero,ymm8[u,u,u,u,u,u,u,u,16,17,18,19]3100; AVX512DQ-NEXT: vporq %ymm1, %ymm4, %ymm173101; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm13102; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm43103; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm3[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm3[16,17],zero,zero,zero,zero3104; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm10 = ymm2[u,u,u,u,u,u,u,u,12,13,14,15],zero,zero,ymm2[u,u,u,u,u,u,u,u,u,u,16,17],zero,zero,ymm2[u,u,u,u]3105; AVX512DQ-NEXT: vporq %ymm5, %ymm10, %ymm193106; AVX512DQ-NEXT: vpbroadcastd 8(%rax), %ymm53107; AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm5, %ymm53108; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm10 = ymm13[12,13,u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm13[14,15,u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm13[16,17,u,u]3109; AVX512DQ-NEXT: vinserti64x4 $1, %ymm10, %zmm5, %zmm53110; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm6[0,1,1,3,4,5,5,7]3111; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm12 = ymm7[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]3112; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm12 = ymm12[0,0,0,0,4,4,4,4]3113; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm10[0,1],ymm12[2],ymm10[3,4],ymm12[5],ymm10[6,7,8,9],ymm12[10],ymm10[11,12],ymm12[13],ymm10[14,15]3114; AVX512DQ-NEXT: vmovdqa64 %ymm0, %ymm223115; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm6[2,2,2,2,6,6,6,6]3116; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm12 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]3117; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm12 = ymm12[0,1],ymm10[2],ymm12[3,4],ymm10[5],ymm12[6,7,8,9],ymm10[10],ymm12[11,12],ymm10[13],ymm12[14,15]3118; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm8[1,1,1,1,5,5,5,5]3119; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm11 = ymm9[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]3120; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm11 = ymm11[0,0,2,1,4,4,6,5]3121; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm11 = ymm11[0,1],ymm10[2],ymm11[3,4],ymm10[5],ymm11[6,7,8,9],ymm10[10],ymm11[11,12],ymm10[13],ymm11[14,15]3122; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm10 = xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7]3123; AVX512DQ-NEXT: vinserti64x4 $1, %ymm12, %zmm11, %zmm203124; AVX512DQ-NEXT: vprold $16, %xmm4, %xmm113125; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm12 = xmm1[1,1,2,3]3126; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm11 = xmm12[0,1],xmm11[2],xmm12[3,4],xmm11[5],xmm12[6,7]3127; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm12 = xmm15[0],xmm14[0],xmm15[1],xmm14[1],xmm15[2],xmm14[2],xmm15[3],xmm14[3]3128; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[0,1,3,2,4,5,6,7]3129; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm18 = [0,0,0,0,1,1,0,0,0,0,16,17,0,0,18,0]3130; AVX512DQ-NEXT: vpermi2d %zmm11, %zmm12, %zmm183131; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm11 = ymm8[2,2,2,2,6,6,6,6]3132; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm12 = ymm9[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]3133; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm12 = ymm12[2,2,2,2,6,6,6,6]3134; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm12 = ymm11[0],ymm12[1],ymm11[2,3],ymm12[4],ymm11[5,6,7,8],ymm12[9],ymm11[10,11],ymm12[12],ymm11[13,14,15]3135; AVX512DQ-NEXT: vmovdqa (%r9), %xmm113136; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm14 = xmm14[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]3137; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm15 = xmm15[1,1,2,2]3138; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm14 = xmm15[0],xmm14[1],xmm15[2,3],xmm14[4],xmm15[5,6],xmm14[7]3139; AVX512DQ-NEXT: vmovdqa (%r8), %xmm153140; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3]3141; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm15[4],xmm11[4],xmm15[5],xmm11[5],xmm15[6],xmm11[6],xmm15[7],xmm11[7]3142; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm0 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]3143; AVX512DQ-NEXT: vpshufb %xmm0, %xmm4, %xmm43144; AVX512DQ-NEXT: vpshufb %xmm0, %xmm1, %xmm03145; AVX512DQ-NEXT: vinserti64x4 $1, %ymm14, %zmm0, %zmm13146; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm2[0,0,2,1,4,4,6,5]3147; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm14 = ymm3[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]3148; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm14 = ymm14[0,0,0,0,4,4,4,4]3149; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm14 = ymm14[0,1,2],ymm0[3],ymm14[4,5],ymm0[6],ymm14[7,8,9,10],ymm0[11],ymm14[12,13],ymm0[14],ymm14[15]3150; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm15[0],xmm11[0],xmm15[1],xmm11[1],xmm15[2],xmm11[2],xmm15[3],xmm11[3]3151; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm11 = xmm0[0,1,2,3,4,5,7,6]3152; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,2,4,5,6,7]3153; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm15 = [0,0,0,1,0,1,1,0,0,18,19,0,19,19,0,0]3154; AVX512DQ-NEXT: vpermi2d %zmm11, %zmm0, %zmm153155; AVX512DQ-NEXT: vprold $16, %ymm3, %ymm03156; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm11 = ymm2[1,2,2,3,5,6,6,7]3157; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm11[0,1],ymm0[2],ymm11[3,4],ymm0[5],ymm11[6,7,8,9],ymm0[10],ymm11[11,12],ymm0[13],ymm11[14,15]3158; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[3,3,3,3,7,7,7,7]3159; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm9 = ymm9[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]3160; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,2,2,2,6,6,6,6]3161; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm8 = ymm8[0,1,2],ymm9[3],ymm8[4,5],ymm9[6],ymm8[7,8,9,10],ymm9[11],ymm8[12,13],ymm9[14],ymm8[15]3162; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm6 = ymm6[3,3,3,3,7,7,7,7]3163; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm7 = ymm7[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]3164; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm7 = ymm7[2,2,2,2,6,6,6,6]3165; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm6 = ymm6[0],ymm7[1],ymm6[2,3],ymm7[4],ymm6[5,6,7,8],ymm7[9],ymm6[10,11],ymm7[12],ymm6[13,14,15]3166; AVX512DQ-NEXT: vmovdqa64 %xmm21, %xmm73167; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[0,2,3,3,4,5,6,7]3168; AVX512DQ-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,2,1]3169; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm9 = xmm10[2,1,2,3,4,5,6,7]3170; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,5,5,4]3171; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,3]3172; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]3173; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm22[2,1,3,2]3174; AVX512DQ-NEXT: vpermq {{.*#+}} ymm11 = ymm12[0,2,2,3]3175; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm14[2,2,3,3]3176; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,2]3177; AVX512DQ-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,1,3,3]3178; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,2,3]3179; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[3,3,3,3,7,7,7,7]3180; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]3181; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[2,2,2,3,6,6,6,7]3182; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0,1],ymm2[2],ymm3[3,4],ymm2[5],ymm3[6,7,8,9],ymm2[10],ymm3[11,12],ymm2[13],ymm3[14,15]3183; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]3184; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm3 = [0,0,4,0,0,0,5,0,0,5,0,0,0,6,0,0]3185; AVX512DQ-NEXT: vpermd %zmm13, %zmm3, %zmm33186; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm13 = ymm13[2,3,3,3,6,7,7,7]3187; AVX512DQ-NEXT: vinserti64x4 $1, %ymm16, %zmm7, %zmm73188; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rcx3189; AVX512DQ-NEXT: vinserti64x4 $1, %ymm17, %zmm9, %zmm93190; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm9 = zmm7 ^ (mem & (zmm9 ^ zmm7))3191; AVX512DQ-NEXT: vinserti64x4 $1, %ymm19, %zmm4, %zmm43192; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 | (zmm4 & mem)3193; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 ^ (mem & (zmm5 ^ zmm9))3194; AVX512DQ-NEXT: vinserti64x4 $1, %ymm11, %zmm10, %zmm43195; AVX512DQ-NEXT: vpermq {{.*#+}} zmm7 = zmm20[2,2,2,3,6,6,6,7]3196; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm7 = zmm4 ^ (mem & (zmm7 ^ zmm4))3197; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm12, %zmm03198; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm0))3199; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm7))3200; AVX512DQ-NEXT: vpermq {{.*#+}} zmm0 = zmm1[0,0,1,1,4,4,5,5]3201; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm18 ^ (mem & (zmm0 ^ zmm18))3202; AVX512DQ-NEXT: vpbroadcastd (%rax), %ymm13203; AVX512DQ-NEXT: vpbroadcastd 4(%rax), %ymm43204; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm1, %zmm13205; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm15))3206; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm0))3207; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm6 = ymm6 ^ (mem & (ymm6 ^ ymm8))3208; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm13[2,1,3,2]3209; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm0 = ymm0 ^ (mem & (ymm0 ^ ymm2))3210; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm0 = ymm0 ^ (mem & (ymm0 ^ ymm6))3211; AVX512DQ-NEXT: vmovdqa %ymm0, 192(%rcx)3212; AVX512DQ-NEXT: vmovdqa64 %zmm1, (%rcx)3213; AVX512DQ-NEXT: vmovdqa64 %zmm3, 128(%rcx)3214; AVX512DQ-NEXT: vmovdqa64 %zmm5, 64(%rcx)3215; AVX512DQ-NEXT: vzeroupper3216; AVX512DQ-NEXT: retq3217;3218; AVX512DQ-FCP-LABEL: store_i16_stride7_vf16:3219; AVX512DQ-FCP: # %bb.0:3220; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm53221; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %ymm73222; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %ymm43223; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %ymm63224; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %ymm13225; AVX512DQ-FCP-NEXT: vmovdqa (%r9), %ymm23226; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm7[14,15,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero,ymm7[16,17,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero3227; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm5[12,13,14,15],zero,zero,ymm5[u,u,u,u,u,u,u,u,u,u,16,17],zero,zero,ymm5[u,u,u,u,u,u,u,u,16,17,18,19]3228; AVX512DQ-FCP-NEXT: vporq %ymm0, %ymm3, %ymm163229; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm113230; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %xmm123231; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm6[u,u,u,u,u,u],zero,zero,ymm6[14,15,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm6[16,17,u,u,u,u,u,u,u,u]3232; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm4[u,u,u,u,u,u,14,15],zero,zero,ymm4[u,u,u,u,u,u,u,u,u,u,16,17],zero,zero,ymm4[u,u,u,u,u,u,u,u]3233; AVX512DQ-FCP-NEXT: vporq %ymm0, %ymm3, %ymm173234; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %xmm143235; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm2[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm2[16,17],zero,zero,zero,zero3236; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm1[u,u,u,u,u,u,u,u,12,13,14,15],zero,zero,ymm1[u,u,u,u,u,u,u,u,u,u,16,17],zero,zero,ymm1[u,u,u,u]3237; AVX512DQ-FCP-NEXT: vporq %ymm0, %ymm3, %ymm183238; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,u,u,u,u,26,27,u,u,u,u,u,u]3239; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm5[2,2,2,2,6,6,6,6]3240; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0],ymm0[1],ymm3[2,3],ymm0[4],ymm3[5,6,7,8],ymm0[9],ymm3[10,11],ymm0[12],ymm3[13,14,15]3241; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} ymm3 = ymm6[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]3242; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm9 = ymm4[0,1,1,3,4,5,5,7]3243; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm9[0,1],ymm3[2],ymm9[3,4],ymm3[5],ymm9[6,7,8,9],ymm3[10],ymm9[11,12],ymm3[13],ymm9[14,15]3244; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm9 = [2,0,3,2,0,10,10,11]3245; AVX512DQ-FCP-NEXT: vpermi2q %zmm0, %zmm3, %zmm93246; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm4[2,2,2,2,6,6,6,6]3247; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]3248; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0,1],ymm0[2],ymm3[3,4],ymm0[5],ymm3[6,7,8,9],ymm0[10],ymm3[11,12],ymm0[13],ymm3[14,15]3249; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm5[1,1,1,1,5,5,5,5]3250; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,u,u,20,21,24,25,u,u,22,23,22,23]3251; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm10[0,1],ymm3[2],ymm10[3,4],ymm3[5],ymm10[6,7,8,9],ymm3[10],ymm10[11,12],ymm3[13],ymm10[14,15]3252; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm3, %zmm193253; AVX512DQ-FCP-NEXT: vprold $16, %ymm2, %ymm03254; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm1[1,2,2,3,5,6,6,7]3255; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0,1],ymm0[2],ymm3[3,4],ymm0[5],ymm3[6,7,8,9],ymm0[10],ymm3[11,12],ymm0[13],ymm3[14,15]3256; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm1[0,0,2,1,4,4,6,5]3257; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm13 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,18,19,u,u,18,19,20,21,u,u,20,21]3258; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm13[0,1,2],ymm3[3],ymm13[4,5],ymm3[6],ymm13[7,8,9,10],ymm3[11],ymm13[12,13],ymm3[14],ymm13[15]3259; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm83260; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm13 = [2,2,3,3,10,0,11,10]3261; AVX512DQ-FCP-NEXT: vpermi2q %zmm0, %zmm3, %zmm133262; AVX512DQ-FCP-NEXT: vprold $16, %xmm12, %xmm03263; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm3 = xmm11[1,1,2,3]3264; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm3[0,1],xmm0[2],xmm3[3,4],xmm0[5],xmm3[6,7]3265; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm8[0],xmm14[0],xmm8[1],xmm14[1],xmm8[2],xmm14[2],xmm8[3],xmm14[3]3266; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[0,1,2,3,0,1,2,3,6,7,4,5,6,7,4,5]3267; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm15 = [0,0,1,0,0,8,0,9]3268; AVX512DQ-FCP-NEXT: vpermi2q %zmm0, %zmm3, %zmm153269; AVX512DQ-FCP-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm12[4],xmm11[4],xmm12[5],xmm11[5],xmm12[6],xmm11[6],xmm12[7],xmm11[7]3270; AVX512DQ-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm8[4],xmm14[4],xmm8[5],xmm14[5],xmm8[6],xmm14[6],xmm8[7],xmm14[7]3271; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm14 = xmm14[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]3272; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm8 = xmm8[1,1,2,2]3273; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0],xmm14[1],xmm8[2,3],xmm14[4],xmm8[5,6],xmm14[7]3274; AVX512DQ-FCP-NEXT: vmovdqa (%r9), %xmm143275; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3]3276; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm12 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]3277; AVX512DQ-FCP-NEXT: vpshufb %xmm12, %xmm11, %xmm113278; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm11, %zmm113279; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %xmm83280; AVX512DQ-FCP-NEXT: vpunpckhwd {{.*#+}} xmm10 = xmm8[4],xmm14[4],xmm8[5],xmm14[5],xmm8[6],xmm14[6],xmm8[7],xmm14[7]3281; AVX512DQ-FCP-NEXT: vpshufb %xmm12, %xmm10, %xmm123282; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax3283; AVX512DQ-FCP-NEXT: vpbroadcastd 8(%rax), %ymm103284; AVX512DQ-FCP-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm10, %ymm103285; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm8[0],xmm14[0],xmm8[1],xmm14[1],xmm8[2],xmm14[2],xmm8[3],xmm14[3]3286; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm14 = xmm8[0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]3287; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[0,1,2,3,6,7,4,5,6,7,4,5,12,13,14,15]3288; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm20 = [0,0,0,1,8,9,9,0]3289; AVX512DQ-FCP-NEXT: vpermi2q %zmm14, %zmm8, %zmm203290; AVX512DQ-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = mem[0,1,2,3,0,1,2,3]3291; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm14 = ymm8[12,13,u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm8[14,15,u,u,u,u,u,u,u,u],zero,zero,zero,zero,ymm8[16,17,u,u]3292; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm14, %zmm10, %zmm103293; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,28,29,u,u,u,u,30,31,u,u]3294; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[3,3,3,3,7,7,7,7]3295; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0,1,2],ymm7[3],ymm5[4,5],ymm7[6],ymm5[7,8,9,10],ymm7[11],ymm5[12,13],ymm7[14],ymm5[15]3296; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,28,29,u,u,u,u,30,31,u,u,u,u,u,u]3297; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[3,3,3,3,7,7,7,7]3298; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm6[1],ymm4[2,3],ymm6[4],ymm4[5,6,7,8],ymm6[9],ymm4[10,11],ymm6[12],ymm4[13,14,15]3299; AVX512DQ-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm6 = [0,13,4,0,0,14,5,0,0,13,4,0,0,14,5,0]3300; AVX512DQ-FCP-NEXT: # zmm6 = mem[0,1,2,3,0,1,2,3]3301; AVX512DQ-FCP-NEXT: vpermd %zmm8, %zmm6, %zmm63302; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm7 = [6,0,0,0,7,0,0,7]3303; AVX512DQ-FCP-NEXT: vpermd %ymm8, %ymm7, %ymm73304; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[4,5,2,3,4,5,6,7,8,9,10,11,10,11,8,9]3305; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,3]3306; AVX512DQ-FCP-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]3307; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,2,1]3308; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm12[0,0,1,1]3309; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,1,3,3]3310; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,2,3]3311; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[3,3,3,3,7,7,7,7]3312; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,28,29,u,u,28,29,26,27,u,u,30,31,30,31]3313; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3,4],ymm1[5],ymm2[6,7,8,9],ymm1[10],ymm2[11,12],ymm1[13],ymm2[14,15]3314; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]3315; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rcx3316; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm16, %zmm3, %zmm23317; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm17, %zmm0, %zmm03318; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm2))3319; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm18, %zmm8, %zmm23320; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 | (zmm2 & mem)3321; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (mem & (zmm10 ^ zmm0))3322; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} zmm0 = zmm19[2,2,2,3,6,6,6,7]3323; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm9 ^ (mem & (zmm0 ^ zmm9))3324; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm13))3325; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm0))3326; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} zmm0 = zmm11[0,0,1,1,4,4,5,5]3327; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm15 ^ (mem & (zmm0 ^ zmm15))3328; AVX512DQ-FCP-NEXT: vpbroadcastd (%rax), %ymm23329; AVX512DQ-FCP-NEXT: vpbroadcastd 4(%rax), %ymm33330; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm2, %zmm23331; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm20))3332; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm0))3333; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm4 = ymm4 ^ (mem & (ymm4 ^ ymm5))3334; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm1 = ymm7 ^ (mem & (ymm1 ^ ymm7))3335; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm1 = ymm1 ^ (mem & (ymm1 ^ ymm4))3336; AVX512DQ-FCP-NEXT: vmovdqa %ymm1, 192(%rcx)3337; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, (%rcx)3338; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm6, 128(%rcx)3339; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm10, 64(%rcx)3340; AVX512DQ-FCP-NEXT: vzeroupper3341; AVX512DQ-FCP-NEXT: retq3342;3343; AVX512BW-LABEL: store_i16_stride7_vf16:3344; AVX512BW: # %bb.0:3345; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %rax3346; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %r103347; AVX512BW-NEXT: vmovdqa (%rdi), %ymm03348; AVX512BW-NEXT: vmovdqa (%rdx), %ymm13349; AVX512BW-NEXT: vmovdqa (%r8), %ymm23350; AVX512BW-NEXT: vmovdqa (%r10), %ymm33351; AVX512BW-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm03352; AVX512BW-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm13353; AVX512BW-NEXT: vinserti64x4 $1, (%r9), %zmm2, %zmm23354; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,14,30,46,62,0,0,0,15,31,47,63,0,0,0]3355; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm43356; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm5 = [29,45,0,0,0,0,14,30,46,0,0,0,0,15,31,47]3357; AVX512BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm53358; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,0,0,0,0,16,32,0,0,0,0,1,17,33,0,0,0,0,2,18,34,0,0,0,0,3,19,35,0,0,0,0]3359; AVX512BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm63360; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,16,32,48,0,0,0,1,17,33,49,0,0,0,2,18,34,50,0,0,0,3,19,35,51,0,0,0,4,20,36,52]3361; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm73362; AVX512BW-NEXT: movl $236730480, %ecx # imm = 0xE1C38703363; AVX512BW-NEXT: kmovd %ecx, %k13364; AVX512BW-NEXT: vmovdqu16 %zmm6, %zmm7 {%k1}3365; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [4,20,36,0,0,0,0,5,21,37,0,0,0,0,6,22,38,0,0,0,0,7,23,39,0,0,0,0,8,24,40,0]3366; AVX512BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm63367; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,0,0,5,21,37,53,0,0,0,6,22,38,54,0,0,0,7,23,39,55,0,0,0,8,24,40,56,0,0,0,9]3368; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm83369; AVX512BW-NEXT: movl $1893843847, %ecx # imm = 0x70E1C3873370; AVX512BW-NEXT: kmovd %ecx, %k13371; AVX512BW-NEXT: vmovdqu16 %zmm6, %zmm8 {%k1}3372; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,0,0,9,25,41,0,0,0,0,10,26,42,0,0,0,0,11,27,43,0,0,0,0,12,28,44,0,0,0,0,13]3373; AVX512BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm63374; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm2 = [57,9,25,0,0,0,42,58,10,26,0,0,0,43,59,11,27,0,0,0,44,60,12,28,0,0,0,45,61,13,29,0]3375; AVX512BW-NEXT: vpermi2w %zmm0, %zmm1, %zmm23376; AVX512BW-NEXT: movl $-2029118408, %ecx # imm = 0x870E1C383377; AVX512BW-NEXT: kmovd %ecx, %k13378; AVX512BW-NEXT: vmovdqu16 %zmm6, %zmm2 {%k1}3379; AVX512BW-NEXT: vmovdqa64 %zmm2, 128(%rax)3380; AVX512BW-NEXT: vmovdqa64 %zmm8, 64(%rax)3381; AVX512BW-NEXT: vmovdqa64 %zmm7, (%rax)3382; AVX512BW-NEXT: movw $-7741, %cx # imm = 0xE1C33383; AVX512BW-NEXT: kmovd %ecx, %k13384; AVX512BW-NEXT: vmovdqu16 %ymm5, %ymm4 {%k1}3385; AVX512BW-NEXT: vmovdqa %ymm4, 192(%rax)3386; AVX512BW-NEXT: vzeroupper3387; AVX512BW-NEXT: retq3388;3389; AVX512BW-FCP-LABEL: store_i16_stride7_vf16:3390; AVX512BW-FCP: # %bb.0:3391; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax3392; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r103393; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %ymm03394; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %ymm13395; AVX512BW-FCP-NEXT: vmovdqa (%r8), %ymm23396; AVX512BW-FCP-NEXT: vmovdqa (%r10), %ymm33397; AVX512BW-FCP-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm03398; AVX512BW-FCP-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm13399; AVX512BW-FCP-NEXT: vinserti64x4 $1, (%r9), %zmm2, %zmm23400; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,14,30,46,62,0,0,0,15,31,47,63,0,0,0]3401; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm43402; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [29,45,0,0,0,0,14,30,46,0,0,0,0,15,31,47]3403; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm53404; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,0,0,0,0,16,32,0,0,0,0,1,17,33,0,0,0,0,2,18,34,0,0,0,0,3,19,35,0,0,0,0]3405; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm63406; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,16,32,48,0,0,0,1,17,33,49,0,0,0,2,18,34,50,0,0,0,3,19,35,51,0,0,0,4,20,36,52]3407; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm73408; AVX512BW-FCP-NEXT: movl $236730480, %ecx # imm = 0xE1C38703409; AVX512BW-FCP-NEXT: kmovd %ecx, %k13410; AVX512BW-FCP-NEXT: vmovdqu16 %zmm6, %zmm7 {%k1}3411; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [4,20,36,0,0,0,0,5,21,37,0,0,0,0,6,22,38,0,0,0,0,7,23,39,0,0,0,0,8,24,40,0]3412; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm63413; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,0,0,5,21,37,53,0,0,0,6,22,38,54,0,0,0,7,23,39,55,0,0,0,8,24,40,56,0,0,0,9]3414; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm83415; AVX512BW-FCP-NEXT: movl $1893843847, %ecx # imm = 0x70E1C3873416; AVX512BW-FCP-NEXT: kmovd %ecx, %k13417; AVX512BW-FCP-NEXT: vmovdqu16 %zmm6, %zmm8 {%k1}3418; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,0,0,9,25,41,0,0,0,0,10,26,42,0,0,0,0,11,27,43,0,0,0,0,12,28,44,0,0,0,0,13]3419; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm63420; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm2 = [57,9,25,0,0,0,42,58,10,26,0,0,0,43,59,11,27,0,0,0,44,60,12,28,0,0,0,45,61,13,29,0]3421; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm1, %zmm23422; AVX512BW-FCP-NEXT: movl $-2029118408, %ecx # imm = 0x870E1C383423; AVX512BW-FCP-NEXT: kmovd %ecx, %k13424; AVX512BW-FCP-NEXT: vmovdqu16 %zmm6, %zmm2 {%k1}3425; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, 128(%rax)3426; AVX512BW-FCP-NEXT: vmovdqa64 %zmm8, 64(%rax)3427; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, (%rax)3428; AVX512BW-FCP-NEXT: movw $-7741, %cx # imm = 0xE1C33429; AVX512BW-FCP-NEXT: kmovd %ecx, %k13430; AVX512BW-FCP-NEXT: vmovdqu16 %ymm5, %ymm4 {%k1}3431; AVX512BW-FCP-NEXT: vmovdqa %ymm4, 192(%rax)3432; AVX512BW-FCP-NEXT: vzeroupper3433; AVX512BW-FCP-NEXT: retq3434;3435; AVX512DQ-BW-LABEL: store_i16_stride7_vf16:3436; AVX512DQ-BW: # %bb.0:3437; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %rax3438; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %r103439; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %ymm03440; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %ymm13441; AVX512DQ-BW-NEXT: vmovdqa (%r8), %ymm23442; AVX512DQ-BW-NEXT: vmovdqa (%r10), %ymm33443; AVX512DQ-BW-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm03444; AVX512DQ-BW-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm13445; AVX512DQ-BW-NEXT: vinserti64x4 $1, (%r9), %zmm2, %zmm23446; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,14,30,46,62,0,0,0,15,31,47,63,0,0,0]3447; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm43448; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm5 = [29,45,0,0,0,0,14,30,46,0,0,0,0,15,31,47]3449; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm53450; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,0,0,0,0,16,32,0,0,0,0,1,17,33,0,0,0,0,2,18,34,0,0,0,0,3,19,35,0,0,0,0]3451; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm63452; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,16,32,48,0,0,0,1,17,33,49,0,0,0,2,18,34,50,0,0,0,3,19,35,51,0,0,0,4,20,36,52]3453; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm73454; AVX512DQ-BW-NEXT: movl $236730480, %ecx # imm = 0xE1C38703455; AVX512DQ-BW-NEXT: kmovd %ecx, %k13456; AVX512DQ-BW-NEXT: vmovdqu16 %zmm6, %zmm7 {%k1}3457; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [4,20,36,0,0,0,0,5,21,37,0,0,0,0,6,22,38,0,0,0,0,7,23,39,0,0,0,0,8,24,40,0]3458; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm63459; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,0,0,5,21,37,53,0,0,0,6,22,38,54,0,0,0,7,23,39,55,0,0,0,8,24,40,56,0,0,0,9]3460; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm83461; AVX512DQ-BW-NEXT: movl $1893843847, %ecx # imm = 0x70E1C3873462; AVX512DQ-BW-NEXT: kmovd %ecx, %k13463; AVX512DQ-BW-NEXT: vmovdqu16 %zmm6, %zmm8 {%k1}3464; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,0,0,9,25,41,0,0,0,0,10,26,42,0,0,0,0,11,27,43,0,0,0,0,12,28,44,0,0,0,0,13]3465; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm2, %zmm63466; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm2 = [57,9,25,0,0,0,42,58,10,26,0,0,0,43,59,11,27,0,0,0,44,60,12,28,0,0,0,45,61,13,29,0]3467; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm1, %zmm23468; AVX512DQ-BW-NEXT: movl $-2029118408, %ecx # imm = 0x870E1C383469; AVX512DQ-BW-NEXT: kmovd %ecx, %k13470; AVX512DQ-BW-NEXT: vmovdqu16 %zmm6, %zmm2 {%k1}3471; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, 128(%rax)3472; AVX512DQ-BW-NEXT: vmovdqa64 %zmm8, 64(%rax)3473; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, (%rax)3474; AVX512DQ-BW-NEXT: movw $-7741, %cx # imm = 0xE1C33475; AVX512DQ-BW-NEXT: kmovd %ecx, %k13476; AVX512DQ-BW-NEXT: vmovdqu16 %ymm5, %ymm4 {%k1}3477; AVX512DQ-BW-NEXT: vmovdqa %ymm4, 192(%rax)3478; AVX512DQ-BW-NEXT: vzeroupper3479; AVX512DQ-BW-NEXT: retq3480;3481; AVX512DQ-BW-FCP-LABEL: store_i16_stride7_vf16:3482; AVX512DQ-BW-FCP: # %bb.0:3483; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax3484; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r103485; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %ymm03486; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %ymm13487; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r8), %ymm23488; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r10), %ymm33489; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, (%rsi), %zmm0, %zmm03490; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, (%rcx), %zmm1, %zmm13491; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, (%r9), %zmm2, %zmm23492; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,14,30,46,62,0,0,0,15,31,47,63,0,0,0]3493; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm43494; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [29,45,0,0,0,0,14,30,46,0,0,0,0,15,31,47]3495; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm53496; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,0,0,0,0,16,32,0,0,0,0,1,17,33,0,0,0,0,2,18,34,0,0,0,0,3,19,35,0,0,0,0]3497; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm63498; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,16,32,48,0,0,0,1,17,33,49,0,0,0,2,18,34,50,0,0,0,3,19,35,51,0,0,0,4,20,36,52]3499; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm73500; AVX512DQ-BW-FCP-NEXT: movl $236730480, %ecx # imm = 0xE1C38703501; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k13502; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm6, %zmm7 {%k1}3503; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [4,20,36,0,0,0,0,5,21,37,0,0,0,0,6,22,38,0,0,0,0,7,23,39,0,0,0,0,8,24,40,0]3504; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm63505; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,0,0,5,21,37,53,0,0,0,6,22,38,54,0,0,0,7,23,39,55,0,0,0,8,24,40,56,0,0,0,9]3506; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm83507; AVX512DQ-BW-FCP-NEXT: movl $1893843847, %ecx # imm = 0x70E1C3873508; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k13509; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm6, %zmm8 {%k1}3510; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,0,0,9,25,41,0,0,0,0,10,26,42,0,0,0,0,11,27,43,0,0,0,0,12,28,44,0,0,0,0,13]3511; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm2, %zmm63512; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm2 = [57,9,25,0,0,0,42,58,10,26,0,0,0,43,59,11,27,0,0,0,44,60,12,28,0,0,0,45,61,13,29,0]3513; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm1, %zmm23514; AVX512DQ-BW-FCP-NEXT: movl $-2029118408, %ecx # imm = 0x870E1C383515; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k13516; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm6, %zmm2 {%k1}3517; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, 128(%rax)3518; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm8, 64(%rax)3519; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, (%rax)3520; AVX512DQ-BW-FCP-NEXT: movw $-7741, %cx # imm = 0xE1C33521; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k13522; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %ymm5, %ymm4 {%k1}3523; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm4, 192(%rax)3524; AVX512DQ-BW-FCP-NEXT: vzeroupper3525; AVX512DQ-BW-FCP-NEXT: retq3526 %in.vec0 = load <16 x i16>, ptr %in.vecptr0, align 643527 %in.vec1 = load <16 x i16>, ptr %in.vecptr1, align 643528 %in.vec2 = load <16 x i16>, ptr %in.vecptr2, align 643529 %in.vec3 = load <16 x i16>, ptr %in.vecptr3, align 643530 %in.vec4 = load <16 x i16>, ptr %in.vecptr4, align 643531 %in.vec5 = load <16 x i16>, ptr %in.vecptr5, align 643532 %in.vec6 = load <16 x i16>, ptr %in.vecptr6, align 643533 %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>3534 %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>3535 %3 = shufflevector <16 x i16> %in.vec4, <16 x i16> %in.vec5, <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>3536 %4 = 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>3537 %5 = shufflevector <16 x i16> %in.vec6, <16 x i16> poison, <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 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>3538 %6 = shufflevector <32 x i16> %3, <32 x i16> %5, <48 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>3539 %7 = shufflevector <48 x i16> %6, <48 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 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 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>3540 %8 = shufflevector <64 x i16> %4, <64 x i16> %7, <112 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>3541 %interleaved.vec = shufflevector <112 x i16> %8, <112 x i16> poison, <112 x i32> <i32 0, i32 16, i32 32, i32 48, i32 64, i32 80, i32 96, i32 1, i32 17, i32 33, i32 49, i32 65, i32 81, i32 97, i32 2, i32 18, i32 34, i32 50, i32 66, i32 82, i32 98, i32 3, i32 19, i32 35, i32 51, i32 67, i32 83, i32 99, i32 4, i32 20, i32 36, i32 52, i32 68, i32 84, i32 100, i32 5, i32 21, i32 37, i32 53, i32 69, i32 85, i32 101, i32 6, i32 22, i32 38, i32 54, i32 70, i32 86, i32 102, i32 7, i32 23, i32 39, i32 55, i32 71, i32 87, i32 103, i32 8, i32 24, i32 40, i32 56, i32 72, i32 88, i32 104, i32 9, i32 25, i32 41, i32 57, i32 73, i32 89, i32 105, i32 10, i32 26, i32 42, i32 58, i32 74, i32 90, i32 106, i32 11, i32 27, i32 43, i32 59, i32 75, i32 91, i32 107, i32 12, i32 28, i32 44, i32 60, i32 76, i32 92, i32 108, i32 13, i32 29, i32 45, i32 61, i32 77, i32 93, i32 109, i32 14, i32 30, i32 46, i32 62, i32 78, i32 94, i32 110, i32 15, i32 31, i32 47, i32 63, i32 79, i32 95, i32 111>3542 store <112 x i16> %interleaved.vec, ptr %out.vec, align 643543 ret void3544}3545 3546define void @store_i16_stride7_vf32(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %in.vecptr5, ptr %in.vecptr6, ptr %out.vec) nounwind {3547; SSE-LABEL: store_i16_stride7_vf32:3548; SSE: # %bb.0:3549; SSE-NEXT: subq $680, %rsp # imm = 0x2A83550; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax3551; SSE-NEXT: movdqa 48(%rdi), %xmm33552; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3553; SSE-NEXT: movdqa 48(%rsi), %xmm23554; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3555; SSE-NEXT: movdqa 48(%rdx), %xmm103556; SSE-NEXT: movdqa 48(%rcx), %xmm113557; SSE-NEXT: movdqa 48(%r8), %xmm93558; SSE-NEXT: movdqa 48(%r9), %xmm43559; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3560; SSE-NEXT: movaps 48(%rax), %xmm73561; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm10[2,2,2,2]3562; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3563; SSE-NEXT: movdqa {{.*#+}} xmm6 = [65535,65535,65535,65535,65535,65535,0,65535]3564; SSE-NEXT: movdqa %xmm6, %xmm13565; SSE-NEXT: pandn %xmm0, %xmm13566; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm11[3,3,3,3,4,5,6,7]3567; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3568; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]3569; SSE-NEXT: pand %xmm6, %xmm03570; SSE-NEXT: por %xmm1, %xmm03571; SSE-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]3572; SSE-NEXT: movdqa %xmm3, %xmm13573; SSE-NEXT: movdqa %xmm3, %xmm53574; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3575; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[3,0]3576; SSE-NEXT: movdqa {{.*#+}} xmm3 = [65535,0,65535,65535,65535,65535,65535,65535]3577; SSE-NEXT: pand %xmm3, %xmm03578; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm9[1,1,1,1]3579; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3580; SSE-NEXT: pandn %xmm2, %xmm33581; SSE-NEXT: por %xmm0, %xmm33582; SSE-NEXT: movdqa %xmm4, %xmm03583; SSE-NEXT: psrld $16, %xmm03584; SSE-NEXT: movdqa %xmm0, %xmm23585; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,0],xmm3[0,0]3586; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[2,0],xmm1[0,2]3587; SSE-NEXT: movaps {{.*#+}} xmm1 = [65535,65535,65535,0,65535,65535,65535,65535]3588; SSE-NEXT: andps %xmm1, %xmm23589; SSE-NEXT: andnps %xmm7, %xmm13590; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3591; SSE-NEXT: orps %xmm2, %xmm13592; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3593; SSE-NEXT: movdqa %xmm11, %xmm13594; SSE-NEXT: psrlq $48, %xmm13595; SSE-NEXT: movdqa %xmm10, %xmm23596; SSE-NEXT: punpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm1[1]3597; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,0,0,65535,65535,65535]3598; SSE-NEXT: pandn %xmm2, %xmm13599; SSE-NEXT: movdqa %xmm5, %xmm23600; SSE-NEXT: psrldq {{.*#+}} xmm2 = xmm2[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero3601; SSE-NEXT: por %xmm1, %xmm23602; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm9[2,2,3,3]3603; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,65535,0,65535,65535]3604; SSE-NEXT: movdqa %xmm1, %xmm43605; SSE-NEXT: movdqa %xmm1, %xmm83606; SSE-NEXT: pandn %xmm3, %xmm43607; SSE-NEXT: por %xmm2, %xmm43608; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,0],xmm4[2,0]3609; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm0[2,0]3610; SSE-NEXT: movdqa {{.*#+}} xmm1 = [0,65535,65535,65535,65535,65535,65535,0]3611; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm7[3,3,3,3]3612; SSE-NEXT: movdqa %xmm1, %xmm33613; SSE-NEXT: pandn %xmm0, %xmm33614; SSE-NEXT: andps %xmm1, %xmm23615; SSE-NEXT: por %xmm2, %xmm33616; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3617; SSE-NEXT: movdqa (%rax), %xmm73618; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,1,0,1]3619; SSE-NEXT: movdqa %xmm8, %xmm23620; SSE-NEXT: pandn %xmm0, %xmm23621; SSE-NEXT: movdqa (%r8), %xmm03622; SSE-NEXT: movdqa (%r9), %xmm133623; SSE-NEXT: movdqa %xmm0, %xmm33624; SSE-NEXT: movdqa %xmm0, %xmm123625; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3626; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm13[0],xmm3[1],xmm13[1],xmm3[2],xmm13[2],xmm3[3],xmm13[3]3627; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3628; SSE-NEXT: movdqa %xmm3, %xmm03629; SSE-NEXT: movdqa %xmm3, %xmm53630; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3631; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]3632; SSE-NEXT: pand %xmm8, %xmm03633; SSE-NEXT: por %xmm2, %xmm03634; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,0,0,0,65535,65535]3635; SSE-NEXT: movdqa %xmm1, %xmm23636; SSE-NEXT: movdqa %xmm1, %xmm103637; SSE-NEXT: pandn %xmm0, %xmm23638; SSE-NEXT: movdqa (%rcx), %xmm13639; SSE-NEXT: movdqa %xmm1, %xmm03640; SSE-NEXT: psrld $16, %xmm03641; SSE-NEXT: movdqa (%rdx), %xmm43642; SSE-NEXT: movdqa %xmm4, %xmm33643; SSE-NEXT: movdqa %xmm4, %xmm143644; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]3645; SSE-NEXT: movdqa {{.*#+}} xmm15 = [65535,0,0,65535,65535,65535,65535,65535]3646; SSE-NEXT: movdqa %xmm15, %xmm43647; SSE-NEXT: pandn %xmm3, %xmm43648; SSE-NEXT: movdqa (%rdi), %xmm113649; SSE-NEXT: movdqa (%rsi), %xmm93650; SSE-NEXT: movdqa %xmm9, %xmm33651; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3652; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm11[0],xmm3[1],xmm11[1],xmm3[2],xmm11[2],xmm3[3],xmm11[3]3653; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3654; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[2,2,2,2,4,5,6,7]3655; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,4]3656; SSE-NEXT: pand %xmm15, %xmm33657; SSE-NEXT: por %xmm4, %xmm33658; SSE-NEXT: pand %xmm10, %xmm33659; SSE-NEXT: por %xmm2, %xmm33660; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3661; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,65535,65535,65535,65535]3662; SSE-NEXT: pandn %xmm7, %xmm23663; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3664; SSE-NEXT: movdqa %xmm5, %xmm33665; SSE-NEXT: psrldq {{.*#+}} xmm3 = xmm3[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero3666; SSE-NEXT: por %xmm2, %xmm33667; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,0,0,65535,65535,65535,65535]3668; SSE-NEXT: movdqa %xmm0, %xmm23669; SSE-NEXT: pandn %xmm3, %xmm23670; SSE-NEXT: movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3671; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm14[2,2,2,2]3672; SSE-NEXT: movdqa %xmm6, %xmm43673; SSE-NEXT: pandn %xmm3, %xmm43674; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm1[0,1,2,3,4,4,4,4]3675; SSE-NEXT: pand %xmm6, %xmm33676; SSE-NEXT: por %xmm4, %xmm33677; SSE-NEXT: punpckhwd {{.*#+}} xmm11 = xmm11[4],xmm9[4],xmm11[5],xmm9[5],xmm11[6],xmm9[6],xmm11[7],xmm9[7]3678; SSE-NEXT: movdqa %xmm11, %xmm43679; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[3,3]3680; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm1[3,3,3,3,4,5,6,7]3681; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3682; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm4[0,2]3683; SSE-NEXT: andps %xmm0, %xmm33684; SSE-NEXT: orps %xmm2, %xmm33685; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3686; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm7[2,3,2,3]3687; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,65535,65535,65535]3688; SSE-NEXT: movdqa %xmm0, %xmm33689; SSE-NEXT: pandn %xmm2, %xmm33690; SSE-NEXT: movdqa %xmm13, %xmm23691; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm12[4],xmm2[5],xmm12[5],xmm2[6],xmm12[6],xmm2[7],xmm12[7]3692; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[2,2,2,2,4,5,6,7]3693; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,4]3694; SSE-NEXT: pand %xmm0, %xmm23695; SSE-NEXT: por %xmm3, %xmm23696; SSE-NEXT: movdqa %xmm14, %xmm43697; SSE-NEXT: punpckhwd {{.*#+}} xmm4 = xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7]3698; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3699; SSE-NEXT: movdqa %xmm11, %xmm33700; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[2,2],xmm4[2,3]3701; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,2],xmm2[0,3]3702; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3703; SSE-NEXT: movdqa 16(%rax), %xmm73704; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm7[0,1,0,1]3705; SSE-NEXT: movdqa %xmm8, %xmm53706; SSE-NEXT: movdqa %xmm8, %xmm33707; SSE-NEXT: pandn %xmm2, %xmm33708; SSE-NEXT: movdqa 16(%r8), %xmm103709; SSE-NEXT: movdqa 16(%r9), %xmm83710; SSE-NEXT: movdqa %xmm10, %xmm43711; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3712; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],xmm8[3]3713; SSE-NEXT: movdqa %xmm8, (%rsp) # 16-byte Spill3714; SSE-NEXT: movdqa %xmm4, %xmm23715; SSE-NEXT: movdqa %xmm4, %xmm123716; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3717; SSE-NEXT: pslldq {{.*#+}} xmm2 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13]3718; SSE-NEXT: pand %xmm5, %xmm23719; SSE-NEXT: por %xmm3, %xmm23720; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,0,0,0,65535,65535]3721; SSE-NEXT: movdqa %xmm1, %xmm33722; SSE-NEXT: pandn %xmm2, %xmm33723; SSE-NEXT: movdqa 16(%rcx), %xmm53724; SSE-NEXT: movdqa %xmm5, %xmm23725; SSE-NEXT: psrld $16, %xmm23726; SSE-NEXT: movdqa 16(%rdx), %xmm03727; SSE-NEXT: movdqa %xmm0, %xmm43728; SSE-NEXT: movdqa %xmm0, %xmm93729; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]3730; SSE-NEXT: movdqa %xmm15, %xmm23731; SSE-NEXT: pandn %xmm4, %xmm23732; SSE-NEXT: movdqa 16(%rdi), %xmm03733; SSE-NEXT: movdqa 16(%rsi), %xmm133734; SSE-NEXT: movdqa %xmm13, %xmm43735; SSE-NEXT: movdqa %xmm13, %xmm143736; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3737; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3]3738; SSE-NEXT: movdqa %xmm0, %xmm133739; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3740; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]3741; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,5,4]3742; SSE-NEXT: pand %xmm15, %xmm43743; SSE-NEXT: por %xmm2, %xmm43744; SSE-NEXT: pand %xmm1, %xmm43745; SSE-NEXT: por %xmm3, %xmm43746; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3747; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,65535,65535,65535,65535]3748; SSE-NEXT: pandn %xmm7, %xmm23749; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3750; SSE-NEXT: movdqa %xmm12, %xmm33751; SSE-NEXT: psrldq {{.*#+}} xmm3 = xmm3[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero3752; SSE-NEXT: por %xmm2, %xmm33753; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,0,0,65535,65535,65535,65535]3754; SSE-NEXT: movdqa %xmm0, %xmm23755; SSE-NEXT: pandn %xmm3, %xmm23756; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3757; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm9[2,2,2,2]3758; SSE-NEXT: movdqa %xmm6, %xmm43759; SSE-NEXT: pandn %xmm3, %xmm43760; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm5[0,1,2,3,4,4,4,4]3761; SSE-NEXT: pand %xmm6, %xmm33762; SSE-NEXT: por %xmm4, %xmm33763; SSE-NEXT: punpckhwd {{.*#+}} xmm13 = xmm13[4],xmm14[4],xmm13[5],xmm14[5],xmm13[6],xmm14[6],xmm13[7],xmm14[7]3764; SSE-NEXT: movdqa %xmm13, %xmm43765; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[3,3]3766; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm5[3,3,3,3,4,5,6,7]3767; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3768; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm4[0,2]3769; SSE-NEXT: andps %xmm0, %xmm33770; SSE-NEXT: orps %xmm2, %xmm33771; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3772; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm7[2,3,2,3]3773; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,65535,65535,65535]3774; SSE-NEXT: movdqa %xmm0, %xmm33775; SSE-NEXT: pandn %xmm2, %xmm33776; SSE-NEXT: punpckhwd {{.*#+}} xmm8 = xmm8[4],xmm10[4],xmm8[5],xmm10[5],xmm8[6],xmm10[6],xmm8[7],xmm10[7]3777; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm8[2,2,2,2,4,5,6,7]3778; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,4]3779; SSE-NEXT: pand %xmm0, %xmm23780; SSE-NEXT: por %xmm3, %xmm23781; SSE-NEXT: movdqa %xmm9, %xmm43782; SSE-NEXT: punpckhwd {{.*#+}} xmm4 = xmm4[4],xmm5[4],xmm4[5],xmm5[5],xmm4[6],xmm5[6],xmm4[7],xmm5[7]3783; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3784; SSE-NEXT: movdqa %xmm13, %xmm33785; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[2,2],xmm4[2,3]3786; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,2],xmm2[0,3]3787; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3788; SSE-NEXT: movdqa 32(%rax), %xmm73789; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm7[0,1,0,1]3790; SSE-NEXT: movdqa {{.*#+}} xmm5 = [65535,65535,65535,65535,65535,0,65535,65535]3791; SSE-NEXT: movdqa %xmm5, %xmm33792; SSE-NEXT: pandn %xmm2, %xmm33793; SSE-NEXT: movdqa 32(%r8), %xmm103794; SSE-NEXT: movdqa 32(%r9), %xmm93795; SSE-NEXT: movdqa %xmm10, %xmm43796; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3797; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm9[0],xmm4[1],xmm9[1],xmm4[2],xmm9[2],xmm4[3],xmm9[3]3798; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3799; SSE-NEXT: movdqa %xmm4, %xmm23800; SSE-NEXT: movdqa %xmm4, %xmm143801; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3802; SSE-NEXT: pslldq {{.*#+}} xmm2 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13]3803; SSE-NEXT: pand %xmm5, %xmm23804; SSE-NEXT: por %xmm3, %xmm23805; SSE-NEXT: movdqa {{.*#+}} xmm5 = [65535,65535,65535,0,0,0,65535,65535]3806; SSE-NEXT: movdqa %xmm5, %xmm33807; SSE-NEXT: pandn %xmm2, %xmm33808; SSE-NEXT: movdqa 32(%rcx), %xmm123809; SSE-NEXT: movdqa %xmm12, %xmm23810; SSE-NEXT: psrld $16, %xmm23811; SSE-NEXT: movdqa 32(%rdx), %xmm03812; SSE-NEXT: movdqa %xmm0, %xmm43813; SSE-NEXT: movdqa %xmm0, %xmm83814; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]3815; SSE-NEXT: movdqa %xmm15, %xmm23816; SSE-NEXT: pandn %xmm4, %xmm23817; SSE-NEXT: movdqa 32(%rdi), %xmm13818; SSE-NEXT: movdqa 32(%rsi), %xmm03819; SSE-NEXT: movdqa %xmm0, %xmm43820; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3821; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3]3822; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3823; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]3824; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,5,4]3825; SSE-NEXT: pand %xmm15, %xmm43826; SSE-NEXT: por %xmm2, %xmm43827; SSE-NEXT: pand %xmm5, %xmm43828; SSE-NEXT: por %xmm3, %xmm43829; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3830; SSE-NEXT: movdqa {{.*#+}} xmm3 = [65535,65535,65535,0,65535,65535,65535,65535]3831; SSE-NEXT: pandn %xmm7, %xmm33832; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3833; SSE-NEXT: movdqa %xmm14, %xmm23834; SSE-NEXT: psrldq {{.*#+}} xmm2 = xmm2[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero3835; SSE-NEXT: por %xmm3, %xmm23836; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm12[0,1,2,3,4,4,4,4]3837; SSE-NEXT: pand %xmm6, %xmm33838; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3839; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm8[2,2,2,2]3840; SSE-NEXT: pandn %xmm4, %xmm63841; SSE-NEXT: por %xmm3, %xmm63842; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]3843; SSE-NEXT: movdqa %xmm1, %xmm33844; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3845; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm6[3,3]3846; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm12[3,3,3,3,4,5,6,7]3847; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[0,2]3848; SSE-NEXT: movaps {{.*#+}} xmm5 = [65535,0,0,0,65535,65535,65535,65535]3849; SSE-NEXT: andps %xmm5, %xmm43850; SSE-NEXT: andnps %xmm2, %xmm53851; SSE-NEXT: orps %xmm4, %xmm53852; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3853; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm7[2,3,2,3]3854; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,65535,65535,65535]3855; SSE-NEXT: movdqa %xmm0, %xmm33856; SSE-NEXT: pandn %xmm2, %xmm33857; SSE-NEXT: punpckhwd {{.*#+}} xmm9 = xmm9[4],xmm10[4],xmm9[5],xmm10[5],xmm9[6],xmm10[6],xmm9[7],xmm10[7]3858; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm9[2,2,2,2,4,5,6,7]3859; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,4]3860; SSE-NEXT: pand %xmm0, %xmm23861; SSE-NEXT: movdqa %xmm0, %xmm93862; SSE-NEXT: por %xmm3, %xmm23863; SSE-NEXT: movdqa %xmm8, %xmm03864; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm12[4],xmm0[5],xmm12[5],xmm0[6],xmm12[6],xmm0[7],xmm12[7]3865; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3866; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm0[2,3]3867; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,2],xmm2[0,3]3868; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3869; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload3870; SSE-NEXT: movdqa %xmm1, %xmm23871; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload3872; SSE-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3]3873; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3874; SSE-NEXT: pslldq {{.*#+}} xmm2 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13]3875; SSE-NEXT: movdqa {{.*#+}} xmm10 = [65535,65535,65535,65535,65535,0,65535,65535]3876; SSE-NEXT: pand %xmm10, %xmm23877; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload3878; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm7[0,1,0,1]3879; SSE-NEXT: pandn %xmm3, %xmm103880; SSE-NEXT: por %xmm2, %xmm103881; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload3882; SSE-NEXT: movdqa %xmm5, %xmm63883; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload3884; SSE-NEXT: punpckhwd {{.*#+}} xmm6 = xmm6[4],xmm3[4],xmm6[5],xmm3[5],xmm6[6],xmm3[6],xmm6[7],xmm3[7]3885; SSE-NEXT: movdqa %xmm5, %xmm23886; SSE-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3]3887; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3888; SSE-NEXT: psrld $16, %xmm33889; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]3890; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload3891; SSE-NEXT: punpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload3892; SSE-NEXT: # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1],xmm3[2],mem[2],xmm3[3],mem[3]3893; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[2,2,2,2,4,5,6,7]3894; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,4]3895; SSE-NEXT: pand %xmm15, %xmm33896; SSE-NEXT: pandn %xmm2, %xmm153897; SSE-NEXT: por %xmm3, %xmm153898; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,0,0,65535,65535]3899; SSE-NEXT: pand %xmm2, %xmm153900; SSE-NEXT: pandn %xmm10, %xmm23901; SSE-NEXT: por %xmm15, %xmm23902; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3903; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,2,2,2]3904; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,0],xmm6[2,0]3905; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3906; SSE-NEXT: pslldq {{.*#+}} xmm6 = zero,zero,zero,zero,zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9]3907; SSE-NEXT: movdqa {{.*#+}} xmm4 = [65535,65535,65535,65535,65535,0,0,65535]3908; SSE-NEXT: movdqa %xmm4, %xmm23909; SSE-NEXT: pandn %xmm6, %xmm23910; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload3911; SSE-NEXT: pslldq {{.*#+}} xmm3 = zero,zero,xmm3[0,1,2,3,4,5,6,7,8,9,10,11,12,13]3912; SSE-NEXT: pand %xmm4, %xmm33913; SSE-NEXT: por %xmm2, %xmm33914; SSE-NEXT: movdqa {{.*#+}} xmm1 = [0,65535,65535,65535,65535,65535,65535,0]3915; SSE-NEXT: movdqa %xmm1, %xmm23916; SSE-NEXT: pandn %xmm0, %xmm23917; SSE-NEXT: pand %xmm1, %xmm33918; SSE-NEXT: por %xmm3, %xmm23919; SSE-NEXT: psrldq {{.*#+}} xmm8 = xmm8[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero3920; SSE-NEXT: movdqa %xmm9, %xmm33921; SSE-NEXT: pandn %xmm8, %xmm33922; SSE-NEXT: pand %xmm9, %xmm23923; SSE-NEXT: por %xmm2, %xmm33924; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,0,65535,65535,65535,65535,65535]3925; SSE-NEXT: pand %xmm1, %xmm33926; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm7[2,2,3,3]3927; SSE-NEXT: pandn %xmm0, %xmm13928; SSE-NEXT: por %xmm3, %xmm13929; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3930; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload3931; SSE-NEXT: movdqa %xmm8, %xmm03932; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload3933; SSE-NEXT: punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm15[0],xmm8[1],xmm15[1],xmm8[2],xmm15[2],xmm8[3],xmm15[3]3934; SSE-NEXT: psrlq $48, %xmm153935; SSE-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm15[1]3936; SSE-NEXT: movdqa {{.*#+}} xmm6 = [65535,65535,65535,0,0,65535,65535,65535]3937; SSE-NEXT: movdqa %xmm6, %xmm23938; SSE-NEXT: pandn %xmm0, %xmm23939; SSE-NEXT: movdqa %xmm11, %xmm03940; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero3941; SSE-NEXT: por %xmm2, %xmm03942; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload3943; SSE-NEXT: movdqa %xmm1, %xmm33944; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload3945; SSE-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]3946; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3947; SSE-NEXT: psrld $16, %xmm23948; SSE-NEXT: movdqa %xmm1, %xmm33949; SSE-NEXT: punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm2[2],xmm3[3],xmm2[3]3950; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload3951; SSE-NEXT: movdqa %xmm5, %xmm23952; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]3953; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,6,5,4,7]3954; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[3,1,2,1]3955; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,5,4]3956; SSE-NEXT: movdqa {{.*#+}} xmm15 = [0,65535,65535,65535,65535,0,0,0]3957; SSE-NEXT: movdqa %xmm15, %xmm13958; SSE-NEXT: pandn %xmm2, %xmm13959; SSE-NEXT: pand %xmm15, %xmm03960; SSE-NEXT: por %xmm0, %xmm13961; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3962; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload3963; SSE-NEXT: movdqa %xmm9, %xmm03964; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload3965; SSE-NEXT: punpcklwd {{.*#+}} xmm9 = xmm9[0],xmm14[0],xmm9[1],xmm14[1],xmm9[2],xmm14[2],xmm9[3],xmm14[3]3966; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3967; SSE-NEXT: psrlq $48, %xmm143968; SSE-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm14[1]3969; SSE-NEXT: movdqa %xmm6, %xmm23970; SSE-NEXT: pandn %xmm0, %xmm23971; SSE-NEXT: movdqa %xmm13, %xmm03972; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero3973; SSE-NEXT: por %xmm2, %xmm03974; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload3975; SSE-NEXT: movdqa %xmm1, %xmm33976; SSE-NEXT: movdqa (%rsp), %xmm2 # 16-byte Reload3977; SSE-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]3978; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3979; SSE-NEXT: psrld $16, %xmm23980; SSE-NEXT: movdqa %xmm1, %xmm33981; SSE-NEXT: punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm2[2],xmm3[3],xmm2[3]3982; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload3983; SSE-NEXT: movdqa %xmm10, %xmm23984; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]3985; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,6,5,4,7]3986; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[3,1,2,1]3987; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,5,4]3988; SSE-NEXT: movdqa %xmm15, %xmm13989; SSE-NEXT: pandn %xmm2, %xmm13990; SSE-NEXT: pand %xmm15, %xmm03991; SSE-NEXT: por %xmm0, %xmm13992; SSE-NEXT: movdqa %xmm1, (%rsp) # 16-byte Spill3993; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload3994; SSE-NEXT: movdqa %xmm1, %xmm03995; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm12[0],xmm1[1],xmm12[1],xmm1[2],xmm12[2],xmm1[3],xmm12[3]3996; SSE-NEXT: movdqa %xmm1, %xmm143997; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3998; SSE-NEXT: psrlq $48, %xmm123999; SSE-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm12[1]4000; SSE-NEXT: movdqa %xmm6, %xmm14001; SSE-NEXT: pandn %xmm0, %xmm14002; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4003; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero4004; SSE-NEXT: por %xmm1, %xmm04005; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload4006; SSE-NEXT: movdqa %xmm6, %xmm34007; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4008; SSE-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]4009; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4010; SSE-NEXT: psrld $16, %xmm24011; SSE-NEXT: movdqa %xmm6, %xmm34012; SSE-NEXT: punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm2[2],xmm3[3],xmm2[3]4013; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload4014; SSE-NEXT: movdqa %xmm7, %xmm24015; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]4016; SSE-NEXT: pand %xmm15, %xmm04017; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,6,5,4,7]4018; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[3,1,2,1]4019; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,5,4]4020; SSE-NEXT: pandn %xmm2, %xmm154021; SSE-NEXT: por %xmm0, %xmm154022; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4023; SSE-NEXT: movdqa %xmm1, %xmm04024; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm1[1,1,1,1,4,5,6,7]4025; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4026; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4027; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]4028; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4029; SSE-NEXT: psrld $16, %xmm24030; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]4031; SSE-NEXT: movdqa %xmm4, %xmm24032; SSE-NEXT: pandn %xmm0, %xmm24033; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm8[0,1,2,3,4,5,6,6]4034; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]4035; SSE-NEXT: pand %xmm4, %xmm04036; SSE-NEXT: por %xmm2, %xmm04037; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4038; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[2,2],xmm5[1,1]4039; SSE-NEXT: movaps %xmm5, %xmm34040; SSE-NEXT: movaps {{.*#+}} xmm12 = [65535,65535,0,0,0,65535,65535,65535]4041; SSE-NEXT: movaps %xmm12, %xmm14042; SSE-NEXT: andnps %xmm2, %xmm14043; SSE-NEXT: pand %xmm12, %xmm04044; SSE-NEXT: orps %xmm0, %xmm14045; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4046; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4047; SSE-NEXT: movdqa %xmm1, %xmm04048; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm1[1,1,1,1,4,5,6,7]4049; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4050; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4051; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]4052; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4053; SSE-NEXT: psrld $16, %xmm24054; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]4055; SSE-NEXT: movdqa %xmm4, %xmm24056; SSE-NEXT: pandn %xmm0, %xmm24057; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm9[0,1,2,3,4,5,6,6]4058; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]4059; SSE-NEXT: pand %xmm4, %xmm04060; SSE-NEXT: por %xmm2, %xmm04061; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4062; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[2,2],xmm10[1,1]4063; SSE-NEXT: movaps %xmm12, %xmm14064; SSE-NEXT: andnps %xmm2, %xmm14065; SSE-NEXT: pand %xmm12, %xmm04066; SSE-NEXT: orps %xmm0, %xmm14067; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4068; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4069; SSE-NEXT: movdqa %xmm1, %xmm04070; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm1[1,1,1,1,4,5,6,7]4071; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4072; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4073; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]4074; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4075; SSE-NEXT: psrld $16, %xmm24076; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]4077; SSE-NEXT: movdqa %xmm4, %xmm24078; SSE-NEXT: pandn %xmm0, %xmm24079; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm14[0,1,2,3,4,5,6,6]4080; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]4081; SSE-NEXT: pand %xmm4, %xmm04082; SSE-NEXT: por %xmm2, %xmm04083; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload4084; SSE-NEXT: movaps %xmm9, %xmm14085; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm7[1,1]4086; SSE-NEXT: movaps %xmm7, %xmm54087; SSE-NEXT: movaps %xmm12, %xmm104088; SSE-NEXT: andnps %xmm1, %xmm104089; SSE-NEXT: pand %xmm12, %xmm04090; SSE-NEXT: orps %xmm0, %xmm104091; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4092; SSE-NEXT: movdqa %xmm1, %xmm04093; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm1[1,1,1,1,4,5,6,7]4094; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4095; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4096; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]4097; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4098; SSE-NEXT: movdqa %xmm2, %xmm14099; SSE-NEXT: psrld $16, %xmm14100; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]4101; SSE-NEXT: movdqa %xmm4, %xmm14102; SSE-NEXT: pandn %xmm0, %xmm14103; SSE-NEXT: pshufhw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload4104; SSE-NEXT: # xmm0 = mem[0,1,2,3,4,5,6,6]4105; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]4106; SSE-NEXT: pand %xmm4, %xmm04107; SSE-NEXT: por %xmm1, %xmm04108; SSE-NEXT: pand %xmm12, %xmm04109; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4110; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload4111; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm14[1,1]4112; SSE-NEXT: andnps %xmm1, %xmm124113; SSE-NEXT: orps %xmm0, %xmm124114; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4115; SSE-NEXT: shufps $42, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload4116; SSE-NEXT: # xmm1 = xmm1[2,2],mem[2,0]4117; SSE-NEXT: pshufhw $233, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload4118; SSE-NEXT: # xmm0 = mem[0,1,2,3,5,6,6,7]4119; SSE-NEXT: movaps {{.*#+}} xmm2 = [0,65535,65535,65535,65535,65535,65535,0]4120; SSE-NEXT: andps %xmm2, %xmm14121; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,2,2,2]4122; SSE-NEXT: andnps %xmm0, %xmm24123; SSE-NEXT: orps %xmm1, %xmm24124; SSE-NEXT: movaps {{.*#+}} xmm1 = [65535,0,65535,65535,65535,65535,65535,65535]4125; SSE-NEXT: andps %xmm1, %xmm24126; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm14[2,3,2,3]4127; SSE-NEXT: andnps %xmm0, %xmm14128; SSE-NEXT: orps %xmm2, %xmm14129; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4130; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4131; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9]4132; SSE-NEXT: movdqa %xmm4, %xmm04133; SSE-NEXT: pandn %xmm1, %xmm04134; SSE-NEXT: pslldq {{.*#+}} xmm11 = zero,zero,xmm11[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4135; SSE-NEXT: pand %xmm4, %xmm114136; SSE-NEXT: por %xmm0, %xmm114137; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,0,0,0,65535]4138; SSE-NEXT: movdqa %xmm2, %xmm14139; SSE-NEXT: pandn %xmm11, %xmm14140; SSE-NEXT: movaps %xmm3, %xmm114141; SSE-NEXT: shufpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload4142; SSE-NEXT: # xmm11 = xmm11[1],mem[0]4143; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4144; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]4145; SSE-NEXT: shufps {{.*#+}} xmm11 = xmm11[2,0],xmm0[2,1]4146; SSE-NEXT: andps %xmm2, %xmm114147; SSE-NEXT: orps %xmm1, %xmm114148; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4149; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]4150; SSE-NEXT: movdqa %xmm4, %xmm14151; SSE-NEXT: pandn %xmm0, %xmm14152; SSE-NEXT: pslldq {{.*#+}} xmm13 = zero,zero,xmm13[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4153; SSE-NEXT: pand %xmm4, %xmm134154; SSE-NEXT: por %xmm1, %xmm134155; SSE-NEXT: movdqa %xmm2, %xmm14156; SSE-NEXT: pandn %xmm13, %xmm14157; SSE-NEXT: movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload4158; SSE-NEXT: movapd %xmm7, %xmm134159; SSE-NEXT: shufpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload4160; SSE-NEXT: # xmm13 = xmm13[1],mem[0]4161; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4162; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]4163; SSE-NEXT: shufps {{.*#+}} xmm13 = xmm13[2,0],xmm0[2,1]4164; SSE-NEXT: andps %xmm2, %xmm134165; SSE-NEXT: orps %xmm1, %xmm134166; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4167; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]4168; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4169; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4170; SSE-NEXT: pand %xmm4, %xmm14171; SSE-NEXT: pandn %xmm0, %xmm44172; SSE-NEXT: por %xmm1, %xmm44173; SSE-NEXT: movaps %xmm5, %xmm14174; SSE-NEXT: shufpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload4175; SSE-NEXT: # xmm1 = xmm1[1],mem[0]4176; SSE-NEXT: punpckhwd {{.*#+}} xmm6 = xmm6[4,4,5,5,6,6,7,7]4177; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm6[2,1]4178; SSE-NEXT: andps %xmm2, %xmm14179; SSE-NEXT: pandn %xmm4, %xmm24180; SSE-NEXT: por %xmm1, %xmm24181; SSE-NEXT: punpcklqdq {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload4182; SSE-NEXT: # xmm8 = xmm8[0],mem[0]4183; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload4184; SSE-NEXT: # xmm8 = xmm8[2,0],mem[2,1]4185; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload4186; SSE-NEXT: # xmm4 = mem[0,0,1,1]4187; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm3[0,0,1,1]4188; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]4189; SSE-NEXT: movdqa {{.*#+}} xmm6 = [65535,65535,65535,65535,0,0,0,65535]4190; SSE-NEXT: movdqa %xmm6, %xmm14191; SSE-NEXT: pandn %xmm4, %xmm14192; SSE-NEXT: andps %xmm6, %xmm84193; SSE-NEXT: por %xmm8, %xmm14194; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload4195; SSE-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload4196; SSE-NEXT: # xmm3 = xmm3[0],mem[0]4197; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload4198; SSE-NEXT: # xmm3 = xmm3[2,0],mem[2,1]4199; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload4200; SSE-NEXT: # xmm4 = mem[0,0,1,1]4201; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm7[0,0,1,1]4202; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1]4203; SSE-NEXT: movdqa %xmm6, %xmm84204; SSE-NEXT: pandn %xmm4, %xmm84205; SSE-NEXT: andps %xmm6, %xmm34206; SSE-NEXT: por %xmm3, %xmm84207; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4208; SSE-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload4209; SSE-NEXT: # xmm0 = xmm0[0],mem[0]4210; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload4211; SSE-NEXT: # xmm0 = xmm0[2,0],mem[2,1]4212; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm9[0,0,1,1]4213; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm5[0,0,1,1]4214; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm9[0],xmm4[1],xmm9[1]4215; SSE-NEXT: movdqa %xmm6, %xmm94216; SSE-NEXT: pandn %xmm4, %xmm94217; SSE-NEXT: andps %xmm6, %xmm04218; SSE-NEXT: por %xmm0, %xmm94219; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4220; SSE-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload4221; SSE-NEXT: # xmm0 = xmm0[0],mem[0]4222; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload4223; SSE-NEXT: # xmm0 = xmm0[2,0],mem[2,1]4224; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload4225; SSE-NEXT: # xmm4 = mem[0,0,1,1]4226; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm14[0,0,1,1]4227; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm7[0],xmm4[1],xmm7[1]4228; SSE-NEXT: andps %xmm6, %xmm04229; SSE-NEXT: pandn %xmm4, %xmm64230; SSE-NEXT: por %xmm0, %xmm64231; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax4232; SSE-NEXT: movdqa %xmm6, 336(%rax)4233; SSE-NEXT: movdqa %xmm9, 224(%rax)4234; SSE-NEXT: movdqa %xmm8, 112(%rax)4235; SSE-NEXT: movdqa %xmm1, (%rax)4236; SSE-NEXT: movdqa %xmm2, 288(%rax)4237; SSE-NEXT: movaps %xmm13, 176(%rax)4238; SSE-NEXT: movaps %xmm11, 64(%rax)4239; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4240; SSE-NEXT: movaps %xmm0, 416(%rax)4241; SSE-NEXT: movaps %xmm12, 368(%rax)4242; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4243; SSE-NEXT: movaps %xmm0, 352(%rax)4244; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4245; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0,1,3]4246; SSE-NEXT: movaps %xmm0, 304(%rax)4247; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4248; SSE-NEXT: movaps %xmm0, 272(%rax)4249; SSE-NEXT: movaps %xmm10, 256(%rax)4250; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4251; SSE-NEXT: movaps %xmm0, 240(%rax)4252; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4253; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0,1,3]4254; SSE-NEXT: movaps %xmm0, 192(%rax)4255; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4256; SSE-NEXT: movaps %xmm0, 160(%rax)4257; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4258; SSE-NEXT: movaps %xmm0, 144(%rax)4259; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4260; SSE-NEXT: movaps %xmm0, 128(%rax)4261; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4262; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0,1,3]4263; SSE-NEXT: movaps %xmm0, 80(%rax)4264; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4265; SSE-NEXT: movaps %xmm0, 48(%rax)4266; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4267; SSE-NEXT: movaps %xmm0, 32(%rax)4268; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4269; SSE-NEXT: movaps %xmm0, 16(%rax)4270; SSE-NEXT: movdqa %xmm15, 320(%rax)4271; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload4272; SSE-NEXT: movaps %xmm0, 208(%rax)4273; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4274; SSE-NEXT: movaps %xmm0, 96(%rax)4275; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4276; SSE-NEXT: movaps %xmm0, 432(%rax)4277; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4278; SSE-NEXT: movaps %xmm0, 400(%rax)4279; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4280; SSE-NEXT: movaps %xmm0, 384(%rax)4281; SSE-NEXT: addq $680, %rsp # imm = 0x2A84282; SSE-NEXT: retq4283;4284; AVX-LABEL: store_i16_stride7_vf32:4285; AVX: # %bb.0:4286; AVX-NEXT: subq $584, %rsp # imm = 0x2484287; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax4288; AVX-NEXT: vmovdqa 16(%rsi), %xmm124289; AVX-NEXT: vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4290; AVX-NEXT: vmovdqa 48(%rsi), %xmm94291; AVX-NEXT: vmovdqa 16(%rdi), %xmm104292; AVX-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4293; AVX-NEXT: vmovdqa 48(%rdi), %xmm04294; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4295; AVX-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm9[4],xmm0[5],xmm9[5],xmm0[6],xmm9[6],xmm0[7],xmm9[7]4296; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[0,1,0,1]4297; AVX-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4298; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm14299; AVX-NEXT: vmovaps {{.*#+}} ymm11 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]4300; AVX-NEXT: vandnps %ymm1, %ymm11, %ymm24301; AVX-NEXT: vmovdqa 48(%rdx), %xmm44302; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm4[2,2,2,2]4303; AVX-NEXT: vmovdqa 48(%rcx), %xmm34304; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm3[3,3,3,3,4,5,6,7]4305; AVX-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]4306; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5],xmm1[6],xmm5[7]4307; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7]4308; AVX-NEXT: vpslldq {{.*#+}} xmm6 = zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9]4309; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm5, %ymm54310; AVX-NEXT: vandps %ymm5, %ymm11, %ymm54311; AVX-NEXT: vorps %ymm2, %ymm5, %ymm64312; AVX-NEXT: vextractf128 $1, %ymm6, %xmm54313; AVX-NEXT: vmovdqa 48(%r8), %xmm24314; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm2[2,2,2,2]4315; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0],xmm5[1,2,3,4,5,6],xmm7[7]4316; AVX-NEXT: vmovdqa 48(%r9), %xmm134317; AVX-NEXT: vpsrldq {{.*#+}} xmm8 = xmm13[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero4318; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0],xmm8[1],xmm7[2,3,4,5,6,7]4319; AVX-NEXT: vmovdqa 48(%rax), %xmm54320; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm5[2,2,3,3]4321; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1],xmm8[2],xmm7[3,4,5,6,7]4322; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4323; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm2[1,1,1,1]4324; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0],xmm7[1],xmm6[2,3,4,5,6,7]4325; AVX-NEXT: vpsrld $16, %xmm13, %xmm74326; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1],xmm7[2,3],xmm6[4,5,6,7]4327; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4328; AVX-NEXT: vpsrlq $48, %xmm3, %xmm64329; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm6 = xmm4[1],xmm6[1]4330; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm1, %ymm14331; AVX-NEXT: vandnps %ymm1, %ymm11, %ymm14332; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm0[2,2,3,3]4333; AVX-NEXT: vpsrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero4334; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm6, %ymm04335; AVX-NEXT: vandps %ymm0, %ymm11, %ymm04336; AVX-NEXT: vorps %ymm1, %ymm0, %ymm04337; AVX-NEXT: vextractf128 $1, %ymm0, %xmm14338; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm2[2,2,3,3]4339; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4],xmm6[5],xmm1[6,7]4340; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm7[6,7]4341; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm5[3,3,3,3]4342; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm6[0],xmm1[1,2,3,4,5,6],xmm6[7]4343; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4344; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5],xmm2[6,7]4345; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm13[0,1,2,3,5,6,6,7]4346; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[2,2,2,2]4347; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4,5,6],xmm1[7]4348; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm5[2,3,2,3]4349; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6,7]4350; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4351; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm10[4],xmm12[4],xmm10[5],xmm12[5],xmm10[6],xmm12[6],xmm10[7],xmm12[7]4352; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4353; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm1[0,1,0,1]4354; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4355; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm04356; AVX-NEXT: vmovdqa 16(%rcx), %xmm74357; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4358; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm7[3,3,3,3,4,5,6,7]4359; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]4360; AVX-NEXT: vmovdqa 16(%rdx), %xmm84361; AVX-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4362; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm8[2,2,2,2]4363; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm6[6],xmm1[7]4364; AVX-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]4365; AVX-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4366; AVX-NEXT: vpslldq {{.*#+}} xmm6 = zero,zero,zero,zero,zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9]4367; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm1, %ymm14368; AVX-NEXT: vandnps %ymm0, %ymm11, %ymm04369; AVX-NEXT: vandps %ymm1, %ymm11, %ymm14370; AVX-NEXT: vorps %ymm0, %ymm1, %ymm04371; AVX-NEXT: vmovdqa 16(%r8), %xmm74372; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4373; AVX-NEXT: vmovdqa 16(%r9), %xmm114374; AVX-NEXT: vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4375; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm7[4],xmm11[4],xmm7[5],xmm11[5],xmm7[6],xmm11[6],xmm7[7],xmm11[7]4376; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]4377; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]4378; AVX-NEXT: vmovdqa 16(%rax), %xmm84379; AVX-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4380; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm8[2,2,3,3]4381; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm6[2,3],xmm1[4,5,6,7]4382; AVX-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm7[0],xmm11[0],xmm7[1],xmm11[1],xmm7[2],xmm11[2],xmm7[3],xmm11[3]4383; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4384; AVX-NEXT: vpsrldq {{.*#+}} xmm6 = xmm6[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero4385; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1,2],xmm8[3],xmm6[4,5,6,7]4386; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm6, %ymm14387; AVX-NEXT: vmovaps {{.*#+}} ymm6 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]4388; AVX-NEXT: vandps %ymm6, %ymm0, %ymm04389; AVX-NEXT: vandnps %ymm1, %ymm6, %ymm14390; AVX-NEXT: vorps %ymm1, %ymm0, %ymm04391; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4392; AVX-NEXT: vmovdqa 32(%rsi), %xmm114393; AVX-NEXT: vmovdqa 32(%rdi), %xmm124394; AVX-NEXT: vpsrld $16, %xmm11, %xmm04395; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm12[0],xmm0[0],xmm12[1],xmm0[1]4396; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm12[4],xmm11[4],xmm12[5],xmm11[5],xmm12[6],xmm11[6],xmm12[7],xmm11[7]4397; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4398; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,0,1]4399; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm04400; AVX-NEXT: vmovdqa 32(%rcx), %xmm74401; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm7[3,3,3,3,4,5,6,7]4402; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]4403; AVX-NEXT: vmovdqa 32(%rdx), %xmm104404; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm10[2,2,2,2]4405; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm1[0,1,2,3,4,5],xmm6[6],xmm1[7]4406; AVX-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm10[0],xmm7[0],xmm10[1],xmm7[1],xmm10[2],xmm7[2],xmm10[3],xmm7[3]4407; AVX-NEXT: vmovdqa %xmm7, %xmm14408; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4409; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm8[0,1,2,3,4,5,6,6]4410; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[2,1,2,3]4411; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm7, %ymm64412; AVX-NEXT: vmovaps {{.*#+}} ymm7 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535]4413; AVX-NEXT: vandnps %ymm0, %ymm7, %ymm04414; AVX-NEXT: vandps %ymm7, %ymm6, %ymm64415; AVX-NEXT: vorps %ymm0, %ymm6, %ymm74416; AVX-NEXT: vmovdqa 32(%r8), %xmm144417; AVX-NEXT: vmovdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4418; AVX-NEXT: vmovdqa 32(%r9), %xmm04419; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4420; AVX-NEXT: vmovdqa 32(%rax), %xmm64421; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm14[0],xmm0[0],xmm14[1],xmm0[1],xmm14[2],xmm0[2],xmm14[3],xmm0[3]4422; AVX-NEXT: vpsrldq {{.*#+}} xmm15 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero4423; AVX-NEXT: vpblendw {{.*#+}} xmm15 = xmm15[0,1,2],xmm6[3],xmm15[4,5,6,7]4424; AVX-NEXT: vshufps {{.*#+}} xmm14 = xmm0[0,2],xmm6[1,3]4425; AVX-NEXT: vinsertf128 $1, %xmm15, %ymm14, %ymm144426; AVX-NEXT: vmovaps {{.*#+}} ymm15 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]4427; AVX-NEXT: vandps %ymm7, %ymm15, %ymm74428; AVX-NEXT: vandnps %ymm14, %ymm15, %ymm144429; AVX-NEXT: vorps %ymm7, %ymm14, %ymm74430; AVX-NEXT: vmovups %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4431; AVX-NEXT: vpsrld $16, %xmm3, %xmm74432; AVX-NEXT: vpunpckldq {{.*#+}} xmm7 = xmm4[0],xmm7[0],xmm4[1],xmm7[1]4433; AVX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]4434; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4435; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,6,6]4436; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[2,1,2,3]4437; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm7, %ymm34438; AVX-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4439; AVX-NEXT: vpsrld $16, %xmm9, %xmm44440; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload4441; AVX-NEXT: vpunpckldq {{.*#+}} xmm4 = xmm7[0],xmm4[0],xmm7[1],xmm4[1]4442; AVX-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm9[0],xmm7[0],xmm9[1],xmm7[1],xmm9[2],xmm7[2],xmm9[3],xmm7[3]4443; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[2,2,2,2,4,5,6,7]4444; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,5,4]4445; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm7, %ymm44446; AVX-NEXT: vmovaps {{.*#+}} ymm7 = [65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0]4447; AVX-NEXT: vandnps %ymm3, %ymm7, %ymm34448; AVX-NEXT: vandps %ymm7, %ymm4, %ymm44449; AVX-NEXT: vorps %ymm3, %ymm4, %ymm34450; AVX-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm2[0],xmm13[0],xmm2[1],xmm13[1],xmm2[2],xmm13[2],xmm2[3],xmm13[3]4451; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4452; AVX-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,xmm7[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4453; AVX-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4454; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm5[0,1,0,1]4455; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4],xmm4[5],xmm2[6,7]4456; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm7[0,2],xmm5[1,3]4457; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm2, %ymm24458; AVX-NEXT: vmovaps {{.*#+}} ymm4 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]4459; AVX-NEXT: vandps %ymm4, %ymm3, %ymm34460; AVX-NEXT: vandnps %ymm2, %ymm4, %ymm24461; AVX-NEXT: vorps %ymm2, %ymm3, %ymm24462; AVX-NEXT: vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4463; AVX-NEXT: vpsrld $16, %xmm1, %xmm24464; AVX-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm10[0],xmm2[0],xmm10[1],xmm2[1]4465; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm8[0,0,1,1]4466; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm14467; AVX-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm12[0],xmm11[0],xmm12[1],xmm11[1],xmm12[2],xmm11[2],xmm12[3],xmm11[3]4468; AVX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3]4469; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,2,2,4,5,6,7]4470; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]4471; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,2,2,2,4,5,6,7]4472; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,4]4473; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm24474; AVX-NEXT: vmovaps {{.*#+}} ymm5 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]4475; AVX-NEXT: vandnps %ymm1, %ymm5, %ymm14476; AVX-NEXT: vandps %ymm5, %ymm2, %ymm24477; AVX-NEXT: vorps %ymm1, %ymm2, %ymm14478; AVX-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4479; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm6[0,1,0,1]4480; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4],xmm3[5],xmm2[6,7]4481; AVX-NEXT: vshufps {{.*#+}} xmm0 = xmm0[0,1,0,1]4482; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm6[0,0,0,0]4483; AVX-NEXT: vblendps {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3]4484; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm04485; AVX-NEXT: vmovaps {{.*#+}} ymm4 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]4486; AVX-NEXT: vandps %ymm4, %ymm1, %ymm14487; AVX-NEXT: vandnps %ymm0, %ymm4, %ymm04488; AVX-NEXT: vorps %ymm0, %ymm1, %ymm04489; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4490; AVX-NEXT: vmovdqa (%rdx), %xmm94491; AVX-NEXT: vmovdqa (%rcx), %xmm74492; AVX-NEXT: vpsrld $16, %xmm7, %xmm04493; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm9[0],xmm0[0],xmm9[1],xmm0[1]4494; AVX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm9[0],xmm7[0],xmm9[1],xmm7[1],xmm9[2],xmm7[2],xmm9[3],xmm7[3]4495; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm3[0,0,1,1]4496; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm2, %ymm24497; AVX-NEXT: vmovdqa (%rsi), %xmm04498; AVX-NEXT: vmovdqa (%rdi), %xmm144499; AVX-NEXT: vpunpcklwd {{.*#+}} xmm11 = xmm14[0],xmm0[0],xmm14[1],xmm0[1],xmm14[2],xmm0[2],xmm14[3],xmm0[3]4500; AVX-NEXT: vpshuflw {{.*#+}} xmm11 = xmm11[0,1,2,2,4,5,6,7]4501; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm11[0,1,2,1]4502; AVX-NEXT: vpunpcklwd {{.*#+}} xmm12 = xmm0[0],xmm14[0],xmm0[1],xmm14[1],xmm0[2],xmm14[2],xmm0[3],xmm14[3]4503; AVX-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[2,2,2,2,4,5,6,7]4504; AVX-NEXT: vpshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,5,5,4]4505; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm11, %ymm114506; AVX-NEXT: vandnps %ymm2, %ymm5, %ymm24507; AVX-NEXT: vandps %ymm5, %ymm11, %ymm54508; AVX-NEXT: vorps %ymm2, %ymm5, %ymm154509; AVX-NEXT: vmovdqa (%r8), %xmm14510; AVX-NEXT: vmovdqa %xmm1, (%rsp) # 16-byte Spill4511; AVX-NEXT: vmovdqa (%r9), %xmm54512; AVX-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4513; AVX-NEXT: vmovdqa (%rax), %xmm24514; AVX-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm1[0],xmm5[0],xmm1[1],xmm5[1],xmm1[2],xmm5[2],xmm1[3],xmm5[3]4515; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,xmm5[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4516; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm2[0,1,0,1]4517; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4],xmm12[5],xmm1[6,7]4518; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm5[0,1,0,1]4519; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm2[0,0,0,0]4520; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm12[0,1,2,3,4,5],xmm11[6,7]4521; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm11, %ymm14522; AVX-NEXT: vandps %ymm4, %ymm15, %ymm114523; AVX-NEXT: vandnps %ymm1, %ymm4, %ymm14524; AVX-NEXT: vorps %ymm1, %ymm11, %ymm14525; AVX-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4526; AVX-NEXT: vpsrld $16, %xmm0, %xmm14527; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm14[0],xmm1[0],xmm14[1],xmm1[1]4528; AVX-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm14[4],xmm0[4],xmm14[5],xmm0[5],xmm14[6],xmm0[6],xmm14[7],xmm0[7]4529; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4530; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]4531; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm04532; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm7[3,3,3,3,4,5,6,7]4533; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]4534; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm9[2,2,2,2]4535; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm11[6],xmm1[7]4536; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,6,6]4537; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[2,1,2,3]4538; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm3, %ymm14539; AVX-NEXT: vmovaps {{.*#+}} ymm12 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535]4540; AVX-NEXT: vandnps %ymm0, %ymm12, %ymm04541; AVX-NEXT: vandps %ymm1, %ymm12, %ymm14542; AVX-NEXT: vorps %ymm0, %ymm1, %ymm04543; AVX-NEXT: vpsrldq {{.*#+}} xmm1 = xmm5[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero4544; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4545; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm2[3],xmm1[4,5,6,7]4546; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm5[0,2],xmm2[1,3]4547; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm3, %ymm14548; AVX-NEXT: vmovaps {{.*#+}} ymm2 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]4549; AVX-NEXT: vandps %ymm2, %ymm0, %ymm04550; AVX-NEXT: vandnps %ymm1, %ymm2, %ymm14551; AVX-NEXT: vorps %ymm1, %ymm0, %ymm04552; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4553; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4554; AVX-NEXT: vpsrld $16, %xmm2, %xmm04555; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload4556; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm4[0],xmm0[0],xmm4[1],xmm0[1]4557; AVX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3]4558; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4559; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm3[0,1,2,3,4,5,6,6]4560; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[2,1,2,3]4561; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm04562; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload4563; AVX-NEXT: vpsrld $16, %xmm5, %xmm14564; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload4565; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]4566; AVX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3]4567; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,2,2,2,4,5,6,7]4568; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,4]4569; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm3, %ymm14570; AVX-NEXT: vmovaps {{.*#+}} ymm3 = [65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0]4571; AVX-NEXT: vandnps %ymm0, %ymm3, %ymm04572; AVX-NEXT: vandps %ymm3, %ymm1, %ymm14573; AVX-NEXT: vorps %ymm0, %ymm1, %ymm04574; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload4575; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,xmm5[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4576; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload4577; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm13[0,1,0,1]4578; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4],xmm3[5],xmm1[6,7]4579; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm5[0,2],xmm13[1,3]4580; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm1, %ymm14581; AVX-NEXT: vmovaps {{.*#+}} ymm3 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]4582; AVX-NEXT: vandps %ymm3, %ymm0, %ymm04583; AVX-NEXT: vandnps %ymm1, %ymm3, %ymm14584; AVX-NEXT: vorps %ymm1, %ymm0, %ymm04585; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4586; AVX-NEXT: vpsrlq $48, %xmm2, %xmm04587; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm0 = xmm4[1],xmm0[1]4588; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload4589; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm04590; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4591; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm2[2,2,3,3]4592; AVX-NEXT: vpsrldq {{.*#+}} xmm3 = xmm2[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero4593; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm1, %ymm14594; AVX-NEXT: vmovaps {{.*#+}} ymm2 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]4595; AVX-NEXT: vandnps %ymm0, %ymm2, %ymm04596; AVX-NEXT: vandps %ymm2, %ymm1, %ymm14597; AVX-NEXT: vorps %ymm0, %ymm1, %ymm04598; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4599; AVX-NEXT: vpsrld $16, %xmm2, %xmm14600; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload4601; AVX-NEXT: vpunpckhdq {{.*#+}} xmm1 = xmm3[2],xmm1[2],xmm3[3],xmm1[3]4602; AVX-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]4603; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,2,2,2,4,5,6,7]4604; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,4]4605; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm13[2,3,2,3]4606; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm5[1],xmm3[2,3,4,5,6,7]4607; AVX-NEXT: vpunpckhwd {{.*#+}} xmm5 = xmm13[4],xmm1[4],xmm13[5],xmm1[5],xmm13[6],xmm1[6],xmm13[7],xmm1[7]4608; AVX-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[8,9,8,9,8,9,8,9,12,13,6,7,10,11,12,13]4609; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm3, %ymm34610; AVX-NEXT: vmovaps {{.*#+}} ymm5 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]4611; AVX-NEXT: vandps %ymm5, %ymm0, %ymm04612; AVX-NEXT: vandnps %ymm3, %ymm5, %ymm34613; AVX-NEXT: vorps %ymm3, %ymm0, %ymm04614; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4615; AVX-NEXT: vmovdqa %xmm10, %xmm44616; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4617; AVX-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm10[4],xmm2[4],xmm10[5],xmm2[5],xmm10[6],xmm2[6],xmm10[7],xmm2[7]4618; AVX-NEXT: vpslldq {{.*#+}} xmm3 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]4619; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm3, %ymm04620; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload4621; AVX-NEXT: vpslldq {{.*#+}} xmm3 = zero,zero,xmm10[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4622; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm10[2,2,3,3]4623; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm3, %ymm34624; AVX-NEXT: vandnps %ymm0, %ymm12, %ymm04625; AVX-NEXT: vandps %ymm3, %ymm12, %ymm34626; AVX-NEXT: vorps %ymm0, %ymm3, %ymm04627; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload4628; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4629; AVX-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm1[4],xmm11[4],xmm1[5],xmm11[5],xmm1[6],xmm11[6],xmm1[7],xmm11[7]4630; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,2,2,2,4,5,6,7]4631; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,4]4632; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm6[2,3,2,3]4633; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm5[1],xmm3[2,3,4,5,6,7]4634; AVX-NEXT: vpunpckhwd {{.*#+}} xmm5 = xmm11[4],xmm1[4],xmm11[5],xmm1[5],xmm11[6],xmm1[6],xmm11[7],xmm1[7]4635; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,2,2,4,5,6,7]4636; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[0,1,2,1]4637; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm6[2,2,3,3]4638; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1],xmm8[2,3],xmm5[4,5,6,7]4639; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm5, %ymm34640; AVX-NEXT: vmovaps {{.*#+}} ymm15 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]4641; AVX-NEXT: vandnps %ymm0, %ymm15, %ymm04642; AVX-NEXT: vandps %ymm3, %ymm15, %ymm34643; AVX-NEXT: vorps %ymm0, %ymm3, %ymm04644; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4645; AVX-NEXT: vpsrlq $48, %xmm2, %xmm04646; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm0 = xmm4[1],xmm0[1]4647; AVX-NEXT: vpermilps $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload4648; AVX-NEXT: # xmm3 = mem[0,0,1,1]4649; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm04650; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4651; AVX-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm3 # 16-byte Folded Reload4652; AVX-NEXT: # xmm3 = xmm2[0],mem[0],xmm2[1],mem[1],xmm2[2],mem[2],xmm2[3],mem[3]4653; AVX-NEXT: vpsrldq {{.*#+}} xmm5 = xmm10[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero4654; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,1,2,2,4,5,6,7]4655; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]4656; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm5, %ymm34657; AVX-NEXT: vmovaps {{.*#+}} ymm8 = [65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]4658; AVX-NEXT: vandnps %ymm0, %ymm8, %ymm04659; AVX-NEXT: vandps %ymm3, %ymm8, %ymm34660; AVX-NEXT: vorps %ymm0, %ymm3, %ymm34661; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4662; AVX-NEXT: vpblendw $247, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm14 # 16-byte Folded Reload4663; AVX-NEXT: # xmm14 = mem[0,1,2],xmm2[3],mem[4,5,6,7]4664; AVX-NEXT: vpshufd $68, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload4665; AVX-NEXT: # xmm5 = mem[0,1,0,1]4666; AVX-NEXT: vpshufd {{.*#+}} xmm10 = xmm2[0,0,0,0]4667; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5],xmm10[6,7]4668; AVX-NEXT: vpsrld $16, %xmm1, %xmm104669; AVX-NEXT: vpunpckhdq {{.*#+}} xmm10 = xmm11[2],xmm10[2],xmm11[3],xmm10[3]4670; AVX-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm6[4],xmm10[4],xmm6[5],xmm10[5],xmm6[6],xmm10[6],xmm6[7],xmm10[7]4671; AVX-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[8,9,8,9,8,9,8,9,12,13,6,7,10,11,12,13]4672; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm54673; AVX-NEXT: vmovaps {{.*#+}} ymm6 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]4674; AVX-NEXT: vandps %ymm6, %ymm3, %ymm34675; AVX-NEXT: vandnps %ymm5, %ymm6, %ymm54676; AVX-NEXT: vorps %ymm5, %ymm3, %ymm54677; AVX-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm9[4],xmm7[4],xmm9[5],xmm7[5],xmm9[6],xmm7[6],xmm9[7],xmm7[7]4678; AVX-NEXT: vpslldq {{.*#+}} xmm10 = zero,zero,zero,zero,zero,zero,xmm3[0,1,2,3,4,5,6,7,8,9]4679; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm10, %ymm34680; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload4681; AVX-NEXT: vpslldq {{.*#+}} xmm10 = zero,zero,xmm4[0,1,2,3,4,5,6,7,8,9,10,11,12,13]4682; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm4[2,2,3,3]4683; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm10, %ymm104684; AVX-NEXT: vandnps %ymm3, %ymm12, %ymm34685; AVX-NEXT: vandps %ymm12, %ymm10, %ymm104686; AVX-NEXT: vorps %ymm3, %ymm10, %ymm34687; AVX-NEXT: vmovdqa (%rsp), %xmm1 # 16-byte Reload4688; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4689; AVX-NEXT: vpunpckhwd {{.*#+}} xmm10 = xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]4690; AVX-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[2,2,2,2,4,5,6,7]4691; AVX-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,5,5,4]4692; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4693; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm0[2,3,2,3]4694; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0],xmm11[1],xmm10[2,3,4,5,6,7]4695; AVX-NEXT: vpunpckhwd {{.*#+}} xmm11 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]4696; AVX-NEXT: vpshuflw {{.*#+}} xmm11 = xmm11[0,1,2,2,4,5,6,7]4697; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm11[0,1,2,1]4698; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm0[2,2,3,3]4699; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1],xmm12[2,3],xmm11[4,5,6,7]4700; AVX-NEXT: vinsertf128 $1, %xmm10, %ymm11, %ymm104701; AVX-NEXT: vandnps %ymm3, %ymm15, %ymm34702; AVX-NEXT: vandps %ymm15, %ymm10, %ymm104703; AVX-NEXT: vorps %ymm3, %ymm10, %ymm34704; AVX-NEXT: vpsrlq $48, %xmm7, %xmm74705; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm7 = xmm9[1],xmm7[1]4706; AVX-NEXT: vpermilps $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload4707; AVX-NEXT: # xmm9 = mem[0,0,1,1]4708; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm7, %ymm74709; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload4710; AVX-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm9, %xmm9 # 16-byte Folded Reload4711; AVX-NEXT: # xmm9 = xmm9[0],mem[0],xmm9[1],mem[1],xmm9[2],mem[2],xmm9[3],mem[3]4712; AVX-NEXT: vpsrldq {{.*#+}} xmm4 = xmm4[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero4713; AVX-NEXT: vpshuflw {{.*#+}} xmm9 = xmm9[0,1,2,2,4,5,6,7]4714; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm9[0,1,2,1]4715; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm4, %ymm44716; AVX-NEXT: vandnps %ymm7, %ymm8, %ymm74717; AVX-NEXT: vandps %ymm4, %ymm8, %ymm44718; AVX-NEXT: vorps %ymm7, %ymm4, %ymm44719; AVX-NEXT: vpermilps $68, {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload4720; AVX-NEXT: # xmm7 = mem[0,1,0,1]4721; AVX-NEXT: vshufps {{.*#+}} xmm8 = xmm13[0,0,0,0]4722; AVX-NEXT: vblendps {{.*#+}} xmm7 = xmm7[0,1,2],xmm8[3]4723; AVX-NEXT: vpsrld $16, %xmm2, %xmm84724; AVX-NEXT: vpunpckhdq {{.*#+}} xmm8 = xmm1[2],xmm8[2],xmm1[3],xmm8[3]4725; AVX-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm0[4],xmm8[4],xmm0[5],xmm8[5],xmm0[6],xmm8[6],xmm0[7],xmm8[7]4726; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm2[8,9,8,9,8,9,8,9,12,13,6,7,10,11,12,13]4727; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm1, %ymm14728; AVX-NEXT: vandps %ymm6, %ymm4, %ymm24729; AVX-NEXT: vandnps %ymm1, %ymm6, %ymm14730; AVX-NEXT: vorps %ymm1, %ymm2, %ymm14731; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax4732; AVX-NEXT: vmovaps %ymm1, 96(%rax)4733; AVX-NEXT: vmovaps %ymm3, 64(%rax)4734; AVX-NEXT: vmovaps %ymm5, 320(%rax)4735; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4736; AVX-NEXT: vmovaps %ymm0, 288(%rax)4737; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4738; AVX-NEXT: vmovaps %ymm0, 192(%rax)4739; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4740; AVX-NEXT: vmovaps %ymm0, 128(%rax)4741; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload4742; AVX-NEXT: vmovaps %ymm1, 32(%rax)4743; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload4744; AVX-NEXT: vmovaps %ymm1, (%rax)4745; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload4746; AVX-NEXT: vmovaps %ymm1, 224(%rax)4747; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload4748; AVX-NEXT: vmovaps %ymm1, 352(%rax)4749; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload4750; AVX-NEXT: vmovaps %ymm1, 256(%rax)4751; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload4752; AVX-NEXT: vmovaps %ymm1, 160(%rax)4753; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4754; AVX-NEXT: vmovaps %xmm1, 416(%rax)4755; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4756; AVX-NEXT: vmovaps %xmm1, 432(%rax)4757; AVX-NEXT: vmovdqa %xmm14, 384(%rax)4758; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4759; AVX-NEXT: vmovaps %xmm0, 400(%rax)4760; AVX-NEXT: addq $584, %rsp # imm = 0x2484761; AVX-NEXT: vzeroupper4762; AVX-NEXT: retq4763;4764; AVX2-LABEL: store_i16_stride7_vf32:4765; AVX2: # %bb.0:4766; AVX2-NEXT: subq $616, %rsp # imm = 0x2684767; AVX2-NEXT: vmovdqa (%rdi), %ymm134768; AVX2-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4769; AVX2-NEXT: vmovdqa 32(%rdi), %ymm84770; AVX2-NEXT: vmovdqa (%rsi), %ymm154771; AVX2-NEXT: vmovdqu %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4772; AVX2-NEXT: vmovdqa 32(%rsi), %ymm104773; AVX2-NEXT: vmovdqa (%rdx), %ymm124774; AVX2-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4775; AVX2-NEXT: vmovdqa 32(%rdx), %ymm114776; AVX2-NEXT: vmovdqa (%rcx), %ymm144777; AVX2-NEXT: vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4778; AVX2-NEXT: vmovdqa 32(%rcx), %ymm94779; AVX2-NEXT: vmovdqa 32(%r8), %ymm64780; AVX2-NEXT: vmovdqa 32(%r9), %ymm74781; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm0 = [3,0,0,0,4,0,0,4]4782; AVX2-NEXT: vpermd %ymm8, %ymm0, %ymm14783; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm10[0,3,2,3,4,7,6,7]4784; AVX2-NEXT: vpshuflw {{.*#+}} ymm2 = ymm2[0,0,3,3,4,5,6,7,8,8,11,11,12,13,14,15]4785; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,65535,0,0,0,0,0,0,65535,0,0,0,0,0,0,65535]4786; AVX2-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm14787; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm2 = [0,3,0,0,0,4,0,0]4788; AVX2-NEXT: vpermd %ymm11, %ymm2, %ymm44789; AVX2-NEXT: vpermd %ymm13, %ymm0, %ymm04790; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm15[0,3,2,3,4,7,6,7]4791; AVX2-NEXT: vpshuflw {{.*#+}} ymm5 = ymm5[0,0,3,3,4,5,6,7,8,8,11,11,12,13,14,15]4792; AVX2-NEXT: vpblendvb %ymm3, %ymm0, %ymm5, %ymm04793; AVX2-NEXT: vpshuflw {{.*#+}} ymm3 = ymm9[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]4794; AVX2-NEXT: vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15]4795; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm5 = [0,0,0,65535,0,0,0,0,0,0,65535,0,0,0,0,0]4796; AVX2-NEXT: vpblendvb %ymm5, %ymm4, %ymm3, %ymm34797; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]4798; AVX2-NEXT: vpblendvb %ymm4, %ymm1, %ymm3, %ymm14799; AVX2-NEXT: vpermd %ymm12, %ymm2, %ymm24800; AVX2-NEXT: vpshuflw {{.*#+}} ymm3 = ymm14[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]4801; AVX2-NEXT: vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15]4802; AVX2-NEXT: vpblendvb %ymm5, %ymm2, %ymm3, %ymm24803; AVX2-NEXT: vpmovsxbq {{.*#+}} ymm3 = [0,3,0,4]4804; AVX2-NEXT: vpermd %ymm6, %ymm3, %ymm54805; AVX2-NEXT: vmovdqa %ymm6, %ymm124806; AVX2-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4807; AVX2-NEXT: vpblendvb %ymm4, %ymm0, %ymm2, %ymm04808; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm7[0,1,0,3,4,5,4,7]4809; AVX2-NEXT: vpshufhw {{.*#+}} ymm2 = ymm2[0,1,2,3,4,4,7,7,8,9,10,11,12,12,15,15]4810; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,0,0,0,65535,0,0,0,0,0,0,65535,0,0,0]4811; AVX2-NEXT: vpblendvb %ymm4, %ymm5, %ymm2, %ymm24812; AVX2-NEXT: vmovdqa (%r8), %ymm54813; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4814; AVX2-NEXT: vpermd %ymm5, %ymm3, %ymm34815; AVX2-NEXT: vmovdqa (%r9), %ymm54816; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4817; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[0,1,0,3,4,5,4,7]4818; AVX2-NEXT: vpshufhw {{.*#+}} ymm5 = ymm5[0,1,2,3,4,4,7,7,8,9,10,11,12,12,15,15]4819; AVX2-NEXT: vpblendvb %ymm4, %ymm3, %ymm5, %ymm34820; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax4821; AVX2-NEXT: vmovdqa 32(%rax), %ymm134822; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm4 = [3,0,0,3,0,0,0,4]4823; AVX2-NEXT: vpermd %ymm13, %ymm4, %ymm54824; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0]4825; AVX2-NEXT: vpblendvb %ymm6, %ymm2, %ymm5, %ymm24826; AVX2-NEXT: vmovdqa (%rax), %ymm54827; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4828; AVX2-NEXT: vpermd %ymm5, %ymm4, %ymm44829; AVX2-NEXT: vpblendvb %ymm6, %ymm3, %ymm4, %ymm34830; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]4831; AVX2-NEXT: vpblendvb %ymm4, %ymm1, %ymm2, %ymm14832; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4833; AVX2-NEXT: vpblendvb %ymm4, %ymm0, %ymm3, %ymm04834; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4835; AVX2-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4836; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]4837; AVX2-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4838; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm11[2,2,2,2,6,6,6,6]4839; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]4840; AVX2-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4841; AVX2-NEXT: vpshufhw {{.*#+}} ymm1 = ymm10[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]4842; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,2,2,6,6,6,6]4843; AVX2-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4844; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm8[2,2,2,2,6,6,6,6]4845; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]4846; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]4847; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]4848; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]4849; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm04850; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm12[1,2,2,3,5,6,6,7]4851; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]4852; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]4853; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm04854; AVX2-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4855; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm7[2,1,2,3,6,5,6,7]4856; AVX2-NEXT: vpshuflw {{.*#+}} ymm1 = ymm1[0,0,3,3,4,5,6,7,8,8,11,11,12,13,14,15]4857; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,2]4858; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]4859; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm04860; AVX2-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4861; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm13[0,1,2,2,4,5,6,6]4862; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,3]4863; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]4864; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm04865; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4866; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm10[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]4867; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,2,2,2,6,6,6,6]4868; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm8[3,3,3,3,7,7,7,7]4869; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8,9,10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]4870; AVX2-NEXT: vpshufhw {{.*#+}} ymm1 = ymm9[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]4871; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,2,2,6,6,6,6]4872; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm11[3,3,3,3,7,7,7,7]4873; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]4874; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,3]4875; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]4876; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]4877; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm04878; AVX2-NEXT: vpbroadcastd 60(%r8), %ymm14879; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]4880; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm04881; AVX2-NEXT: vpshufhw {{.*#+}} ymm1 = ymm7[0,1,2,3,5,5,7,6,8,9,10,11,13,13,15,14]4882; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[3,3,3,3]4883; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0]4884; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm04885; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm13[2,3,3,3,6,7,7,7]4886; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]4887; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]4888; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm04889; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4890; AVX2-NEXT: vmovdqa 32(%rdi), %xmm04891; AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4892; AVX2-NEXT: vmovdqa 32(%rsi), %xmm64893; AVX2-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]4894; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3]4895; AVX2-NEXT: vpshufb %xmm3, %xmm0, %xmm04896; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]4897; AVX2-NEXT: vmovdqa 32(%rcx), %xmm114898; AVX2-NEXT: vmovdqa 32(%rdx), %xmm104899; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm10[0],xmm11[0],xmm10[1],xmm11[1],xmm10[2],xmm11[2],xmm10[3],xmm11[3]4900; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,3,2,4,5,6,7]4901; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]4902; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,1,3]4903; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]4904; AVX2-NEXT: vpblendvb %ymm9, %ymm0, %ymm1, %ymm124905; AVX2-NEXT: vmovdqa (%rdi), %xmm04906; AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4907; AVX2-NEXT: vmovdqa (%rsi), %xmm134908; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm13[0],xmm0[1],xmm13[1],xmm0[2],xmm13[2],xmm0[3],xmm13[3]4909; AVX2-NEXT: vpshufb %xmm3, %xmm0, %xmm04910; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]4911; AVX2-NEXT: vmovdqa (%rcx), %xmm84912; AVX2-NEXT: vmovdqa (%rdx), %xmm74913; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3]4914; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,3,2,4,5,6,7]4915; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]4916; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,1,3]4917; AVX2-NEXT: vpblendvb %ymm9, %ymm0, %ymm1, %ymm24918; AVX2-NEXT: vmovdqa 32(%r9), %xmm04919; AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4920; AVX2-NEXT: vmovdqa 32(%r8), %xmm14921; AVX2-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4922; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]4923; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm4[0,1,3,2,4,5,6,7]4924; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,1,3]4925; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]4926; AVX2-NEXT: vpbroadcastd 32(%rax), %ymm94927; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0]4928; AVX2-NEXT: vpblendvb %ymm3, %ymm0, %ymm9, %ymm04929; AVX2-NEXT: vmovdqa (%r9), %xmm54930; AVX2-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4931; AVX2-NEXT: vmovdqa (%r8), %xmm14932; AVX2-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4933; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1],xmm1[2],xmm5[2],xmm1[3],xmm5[3]4934; AVX2-NEXT: vpshuflw {{.*#+}} xmm15 = xmm1[0,1,3,2,4,5,6,7]4935; AVX2-NEXT: vpshufd {{.*#+}} xmm15 = xmm15[0,1,1,3]4936; AVX2-NEXT: vpermq {{.*#+}} ymm15 = ymm15[0,0,0,1]4937; AVX2-NEXT: vpbroadcastd (%rax), %ymm144938; AVX2-NEXT: vpblendvb %ymm3, %ymm15, %ymm14, %ymm34939; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]4940; AVX2-NEXT: vpblendvb %ymm14, %ymm12, %ymm0, %ymm154941; AVX2-NEXT: vpblendvb %ymm14, %ymm2, %ymm3, %ymm04942; AVX2-NEXT: vmovdqu %ymm0, (%rsp) # 32-byte Spill4943; AVX2-NEXT: vpbroadcastq {{.*#+}} xmm0 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]4944; AVX2-NEXT: vpshufb %xmm0, %xmm11, %xmm24945; AVX2-NEXT: vpshufd {{.*#+}} xmm3 = xmm10[1,1,2,2]4946; AVX2-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0],xmm2[1],xmm3[2,3],xmm2[4],xmm3[5,6],xmm2[7]4947; AVX2-NEXT: vpshuflw {{.*#+}} xmm3 = xmm6[3,3,3,3,4,5,6,7]4948; AVX2-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]4949; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload4950; AVX2-NEXT: vpshufd {{.*#+}} xmm12 = xmm5[1,1,2,3]4951; AVX2-NEXT: vpblendw {{.*#+}} xmm3 = xmm12[0,1],xmm3[2],xmm12[3,4],xmm3[5],xmm12[6,7]4952; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]4953; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,2,1]4954; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]4955; AVX2-NEXT: vpblendvb %ymm12, %ymm2, %ymm3, %ymm94956; AVX2-NEXT: vpshufb %xmm0, %xmm8, %xmm04957; AVX2-NEXT: vpshufd {{.*#+}} xmm3 = xmm7[1,1,2,2]4958; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm3[0],xmm0[1],xmm3[2,3],xmm0[4],xmm3[5,6],xmm0[7]4959; AVX2-NEXT: vpshuflw {{.*#+}} xmm3 = xmm13[3,3,3,3,4,5,6,7]4960; AVX2-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]4961; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4962; AVX2-NEXT: vpshufd {{.*#+}} xmm14 = xmm2[1,1,2,3]4963; AVX2-NEXT: vpblendw {{.*#+}} xmm3 = xmm14[0,1],xmm3[2],xmm14[3,4],xmm3[5],xmm14[6,7]4964; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]4965; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,2,1]4966; AVX2-NEXT: vpblendvb %ymm12, %ymm0, %ymm3, %ymm04967; AVX2-NEXT: vpshufhw {{.*#+}} xmm3 = xmm4[0,1,2,3,4,5,7,6]4968; AVX2-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,2,3,3]4969; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,1,3]4970; AVX2-NEXT: vpbroadcastd 36(%rax), %ymm44971; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm12 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]4972; AVX2-NEXT: vpblendvb %ymm12, %ymm3, %ymm4, %ymm34973; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,7,6]4974; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,2,3,3]4975; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,1,3]4976; AVX2-NEXT: vpbroadcastd 4(%rax), %ymm44977; AVX2-NEXT: vpblendvb %ymm12, %ymm1, %ymm4, %ymm14978; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]4979; AVX2-NEXT: vpblendvb %ymm4, %ymm9, %ymm3, %ymm144980; AVX2-NEXT: vpblendvb %ymm4, %ymm0, %ymm1, %ymm04981; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4982; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm10[4],xmm11[4],xmm10[5],xmm11[5],xmm10[6],xmm11[6],xmm10[7],xmm11[7]4983; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm6[4],xmm5[4],xmm6[5],xmm5[5],xmm6[6],xmm5[6],xmm6[7],xmm5[7]4984; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]4985; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,2,1]4986; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]4987; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,5,4]4988; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,3]4989; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]4990; AVX2-NEXT: vpblendvb %ymm4, %ymm1, %ymm0, %ymm04991; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm7[4],xmm8[4],xmm7[5],xmm8[5],xmm7[6],xmm8[6],xmm7[7],xmm8[7]4992; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm13[4],xmm2[4],xmm13[5],xmm2[5],xmm13[6],xmm2[6],xmm13[7],xmm2[7]4993; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,2,3,3,4,5,6,7]4994; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,2,1]4995; AVX2-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,1,2,3,4,5,6,7]4996; AVX2-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,4]4997; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,3]4998; AVX2-NEXT: vpblendvb %ymm4, %ymm3, %ymm1, %ymm14999; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload5000; AVX2-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload5001; AVX2-NEXT: # xmm2 = xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]5002; AVX2-NEXT: vmovdqa {{.*#+}} xmm5 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]5003; AVX2-NEXT: vpshufb %xmm5, %xmm2, %xmm25004; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]5005; AVX2-NEXT: vpbroadcastd 40(%rax), %ymm35006; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]5007; AVX2-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm25008; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload5009; AVX2-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload5010; AVX2-NEXT: # xmm3 = xmm3[4],mem[4],xmm3[5],mem[5],xmm3[6],mem[6],xmm3[7],mem[7]5011; AVX2-NEXT: vpshufb %xmm5, %xmm3, %xmm35012; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]5013; AVX2-NEXT: vpbroadcastd 8(%rax), %ymm55014; AVX2-NEXT: vpblendvb %ymm4, %ymm3, %ymm5, %ymm35015; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]5016; AVX2-NEXT: vpblendvb %ymm4, %ymm2, %ymm0, %ymm05017; AVX2-NEXT: vpblendvb %ymm4, %ymm3, %ymm1, %ymm15018; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload5019; AVX2-NEXT: vpshufhw {{.*#+}} ymm2 = ymm10[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]5020; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[2,2,2,2,6,6,6,6]5021; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload5022; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm7[3,3,3,3,7,7,7,7]5023; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0,1,2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8,9,10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]5024; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload5025; AVX2-NEXT: vpshufhw {{.*#+}} ymm3 = ymm9[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]5026; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[2,2,2,2,6,6,6,6]5027; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload5028; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm8[3,3,3,3,7,7,7,7]5029; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm3[1],ymm4[2,3],ymm3[4],ymm4[5,6,7,8],ymm3[9],ymm4[10,11],ymm3[12],ymm4[13,14,15]5030; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,1,3,3]5031; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,2,2,3]5032; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]5033; AVX2-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm25034; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload5035; AVX2-NEXT: vpshufhw {{.*#+}} ymm3 = ymm12[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]5036; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[2,2,2,3,6,6,6,7]5037; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload5038; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm11[3,3,3,3,7,7,7,7]5039; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3,4],ymm4[5],ymm3[6,7,8,9],ymm4[10],ymm3[11,12],ymm4[13],ymm3[14,15]5040; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]5041; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload5042; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm13[2,3,3,3,6,7,7,7]5043; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,1,3,2]5044; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]5045; AVX2-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm35046; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]5047; AVX2-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm25048; AVX2-NEXT: vpshufb {{.*#+}} ymm3 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]5049; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm8[2,2,2,2,6,6,6,6]5050; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3,4],ymm4[5],ymm3[6,7,8,9],ymm4[10],ymm3[11,12],ymm4[13],ymm3[14,15]5051; AVX2-NEXT: vpshufhw {{.*#+}} ymm4 = ymm10[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]5052; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]5053; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm7[2,2,2,2,6,6,6,6]5054; AVX2-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5,6,7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13,14,15]5055; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]5056; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,2,3]5057; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]5058; AVX2-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm35059; AVX2-NEXT: vpshuflw {{.*#+}} ymm4 = ymm12[3,3,3,3,4,5,6,7,11,11,11,11,12,13,14,15]5060; AVX2-NEXT: vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]5061; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm11[1,2,2,3,5,6,6,7]5062; AVX2-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1],ymm4[2],ymm5[3,4],ymm4[5],ymm5[6,7,8,9],ymm4[10],ymm5[11,12],ymm4[13],ymm5[14,15]5063; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,1,3,2]5064; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm13[0,1,2,2,4,5,6,6]5065; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,1,3,3]5066; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]5067; AVX2-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm45068; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]5069; AVX2-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm35070; AVX2-NEXT: vpshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload5071; AVX2-NEXT: # ymm4 = mem[1,1,1,1,5,5,5,5]5072; AVX2-NEXT: vpshuflw $249, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Folded Reload5073; AVX2-NEXT: # ymm5 = mem[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]5074; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[0,0,2,1,4,4,6,5]5075; AVX2-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1],ymm4[2],ymm5[3,4],ymm4[5],ymm5[6,7,8,9],ymm4[10],ymm5[11,12],ymm4[13],ymm5[14,15]5076; AVX2-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Folded Reload5077; AVX2-NEXT: # ymm5 = mem[0,1,1,3,4,5,5,7]5078; AVX2-NEXT: vpshuflw $233, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload5079; AVX2-NEXT: # ymm6 = mem[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]5080; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm6[0,0,0,0,4,4,4,4]5081; AVX2-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0,1],ymm6[2],ymm5[3,4],ymm6[5],ymm5[6,7,8,9],ymm6[10],ymm5[11,12],ymm6[13],ymm5[14,15]5082; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]5083; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,1,3,2]5084; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]5085; AVX2-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm45086; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm7[1,1,1,1,5,5,5,5]5087; AVX2-NEXT: vpshuflw {{.*#+}} ymm7 = ymm10[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]5088; AVX2-NEXT: vpshufd {{.*#+}} ymm7 = ymm7[0,0,2,1,4,4,6,5]5089; AVX2-NEXT: vpblendw {{.*#+}} ymm5 = ymm7[0,1],ymm5[2],ymm7[3,4],ymm5[5],ymm7[6,7,8,9],ymm5[10],ymm7[11,12],ymm5[13],ymm7[14,15]5090; AVX2-NEXT: vpshufd {{.*#+}} ymm7 = ymm8[0,1,1,3,4,5,5,7]5091; AVX2-NEXT: vpshuflw {{.*#+}} ymm8 = ymm9[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]5092; AVX2-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[0,0,0,0,4,4,4,4]5093; AVX2-NEXT: vpblendw {{.*#+}} ymm7 = ymm7[0,1],ymm8[2],ymm7[3,4],ymm8[5],ymm7[6,7,8,9],ymm8[10],ymm7[11,12],ymm8[13],ymm7[14,15]5094; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]5095; AVX2-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,1,3,2]5096; AVX2-NEXT: vpblendvb %ymm6, %ymm5, %ymm7, %ymm55097; AVX2-NEXT: vpshufd $96, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload5098; AVX2-NEXT: # ymm6 = mem[0,0,2,1,4,4,6,5]5099; AVX2-NEXT: vpshuflw $233, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Folded Reload5100; AVX2-NEXT: # ymm7 = mem[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]5101; AVX2-NEXT: vpshufd {{.*#+}} ymm7 = ymm7[0,0,0,0,4,4,4,4]5102; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm7[0,1,2],ymm6[3],ymm7[4,5],ymm6[6],ymm7[7,8,9,10],ymm6[11],ymm7[12,13],ymm6[14],ymm7[15]5103; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]5104; AVX2-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Folded Reload5105; AVX2-NEXT: # ymm7 = mem[0,1,1,3,4,5,5,7]5106; AVX2-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,2,2,3]5107; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm8 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]5108; AVX2-NEXT: vpblendvb %ymm8, %ymm6, %ymm7, %ymm65109; AVX2-NEXT: vpshufd {{.*#+}} ymm7 = ymm11[0,0,2,1,4,4,6,5]5110; AVX2-NEXT: vpshuflw {{.*#+}} ymm9 = ymm12[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]5111; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[0,0,0,0,4,4,4,4]5112; AVX2-NEXT: vpblendw {{.*#+}} ymm7 = ymm9[0,1,2],ymm7[3],ymm9[4,5],ymm7[6],ymm9[7,8,9,10],ymm7[11],ymm9[12,13],ymm7[14],ymm9[15]5113; AVX2-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]5114; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm13[0,1,1,3,4,5,5,7]5115; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,2,2,3]5116; AVX2-NEXT: vpblendvb %ymm8, %ymm7, %ymm9, %ymm75117; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]5118; AVX2-NEXT: vpblendvb %ymm8, %ymm4, %ymm6, %ymm45119; AVX2-NEXT: vpblendvb %ymm8, %ymm5, %ymm7, %ymm55120; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax5121; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload5122; AVX2-NEXT: vmovaps %ymm6, 96(%rax)5123; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload5124; AVX2-NEXT: vmovaps %ymm6, 320(%rax)5125; AVX2-NEXT: vmovdqa %ymm5, 128(%rax)5126; AVX2-NEXT: vmovdqa %ymm4, 352(%rax)5127; AVX2-NEXT: vmovdqa %ymm3, 160(%rax)5128; AVX2-NEXT: vmovdqa %ymm2, 192(%rax)5129; AVX2-NEXT: vmovdqa %ymm1, 64(%rax)5130; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload5131; AVX2-NEXT: vmovaps %ymm1, 32(%rax)5132; AVX2-NEXT: vmovups (%rsp), %ymm1 # 32-byte Reload5133; AVX2-NEXT: vmovaps %ymm1, (%rax)5134; AVX2-NEXT: vmovdqa %ymm15, 224(%rax)5135; AVX2-NEXT: vmovdqa %ymm0, 288(%rax)5136; AVX2-NEXT: vmovdqa %ymm14, 256(%rax)5137; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5138; AVX2-NEXT: vmovaps %ymm0, 416(%rax)5139; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5140; AVX2-NEXT: vmovaps %ymm0, 384(%rax)5141; AVX2-NEXT: addq $616, %rsp # imm = 0x2685142; AVX2-NEXT: vzeroupper5143; AVX2-NEXT: retq5144;5145; AVX2-FP-LABEL: store_i16_stride7_vf32:5146; AVX2-FP: # %bb.0:5147; AVX2-FP-NEXT: subq $616, %rsp # imm = 0x2685148; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm115149; AVX2-FP-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5150; AVX2-FP-NEXT: vmovdqa 32(%rdi), %ymm85151; AVX2-FP-NEXT: vmovdqa (%rsi), %ymm145152; AVX2-FP-NEXT: vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5153; AVX2-FP-NEXT: vmovdqa 32(%rsi), %ymm95154; AVX2-FP-NEXT: vmovdqa (%rdx), %ymm135155; AVX2-FP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5156; AVX2-FP-NEXT: vmovdqa 32(%rdx), %ymm125157; AVX2-FP-NEXT: vmovdqa (%rcx), %ymm155158; AVX2-FP-NEXT: vmovdqu %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5159; AVX2-FP-NEXT: vmovdqa 32(%rcx), %ymm105160; AVX2-FP-NEXT: vmovdqa 32(%r8), %ymm75161; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm0 = [3,0,0,0,4,0,0,4]5162; AVX2-FP-NEXT: vpermd %ymm8, %ymm0, %ymm15163; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm2 = [0,1,0,1,14,15,14,15,8,9,10,11,12,13,14,15,16,17,16,17,30,31,30,31,24,25,26,27,28,29,30,31]5164; AVX2-FP-NEXT: vpshufb %ymm2, %ymm9, %ymm35165; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,65535,0,0,0,0,0,0,65535,0,0,0,0,0,0,65535]5166; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm1, %ymm3, %ymm15167; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm3 = [0,3,0,0,0,4,0,0]5168; AVX2-FP-NEXT: vpermd %ymm12, %ymm3, %ymm55169; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm6 = [0,1,0,1,0,1,0,1,14,15,14,15,14,15,14,15,16,17,16,17,16,17,16,17,30,31,30,31,30,31,30,31]5170; AVX2-FP-NEXT: vpermd %ymm11, %ymm0, %ymm05171; AVX2-FP-NEXT: vpshufb %ymm2, %ymm14, %ymm25172; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm0, %ymm2, %ymm05173; AVX2-FP-NEXT: vpshufb %ymm6, %ymm10, %ymm25174; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,0,65535,0,0,0,0,0,0,65535,0,0,0,0,0]5175; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm5, %ymm2, %ymm25176; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]5177; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm1, %ymm2, %ymm15178; AVX2-FP-NEXT: vmovdqa 32(%r9), %ymm115179; AVX2-FP-NEXT: vpermd %ymm13, %ymm3, %ymm25180; AVX2-FP-NEXT: vpshufb %ymm6, %ymm15, %ymm35181; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm25182; AVX2-FP-NEXT: vpmovsxbq {{.*#+}} ymm3 = [0,3,0,4]5183; AVX2-FP-NEXT: vpermd %ymm7, %ymm3, %ymm45184; AVX2-FP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5185; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm0, %ymm2, %ymm05186; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm2 = [0,1,2,3,4,5,6,7,0,1,0,1,14,15,14,15,16,17,18,19,20,21,22,23,16,17,16,17,30,31,30,31]5187; AVX2-FP-NEXT: vpshufb %ymm2, %ymm11, %ymm55188; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,0,0,0,0,65535,0,0,0,0,0,0,65535,0,0,0]5189; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm45190; AVX2-FP-NEXT: vmovdqa (%r8), %ymm55191; AVX2-FP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5192; AVX2-FP-NEXT: vpermd %ymm5, %ymm3, %ymm35193; AVX2-FP-NEXT: vmovdqa (%r9), %ymm55194; AVX2-FP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5195; AVX2-FP-NEXT: vpshufb %ymm2, %ymm5, %ymm25196; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm3, %ymm2, %ymm25197; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax5198; AVX2-FP-NEXT: vmovdqa 32(%rax), %ymm135199; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm3 = [3,0,0,3,0,0,0,4]5200; AVX2-FP-NEXT: vpermd %ymm13, %ymm3, %ymm55201; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0]5202; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm45203; AVX2-FP-NEXT: vmovdqa (%rax), %ymm55204; AVX2-FP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5205; AVX2-FP-NEXT: vpermd %ymm5, %ymm3, %ymm35206; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm2, %ymm3, %ymm25207; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]5208; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm1, %ymm4, %ymm15209; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5210; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm0, %ymm2, %ymm05211; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5212; AVX2-FP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5213; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]5214; AVX2-FP-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5215; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm12[2,2,2,2,6,6,6,6]5216; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]5217; AVX2-FP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5218; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm9[10,11,8,9,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,u,u,u,u,26,27,24,25,u,u,u,u]5219; AVX2-FP-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5220; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm2 = ymm8[2,2,2,2,6,6,6,6]5221; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]5222; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]5223; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]5224; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]5225; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05226; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm7[1,2,2,3,5,6,6,7]5227; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]5228; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]5229; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05230; AVX2-FP-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5231; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm11[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,24,25,22,23,22,23,u,u,u,u,u,u,u,u]5232; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,2]5233; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]5234; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05235; AVX2-FP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5236; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm13[0,1,2,2,4,5,6,6]5237; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,3]5238; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]5239; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05240; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5241; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]5242; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm8[3,3,3,3,7,7,7,7]5243; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8,9,10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]5244; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm10[14,15,12,13,u,u,u,u,u,u,u,u,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29,u,u,u,u]5245; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm2 = ymm12[3,3,3,3,7,7,7,7]5246; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]5247; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,3]5248; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]5249; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]5250; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05251; AVX2-FP-NEXT: vpbroadcastd 60(%r8), %ymm15252; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]5253; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05254; AVX2-FP-NEXT: vpshufhw {{.*#+}} ymm1 = ymm11[0,1,2,3,5,5,7,6,8,9,10,11,13,13,15,14]5255; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[3,3,3,3]5256; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0]5257; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05258; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm13[2,3,3,3,6,7,7,7]5259; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]5260; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]5261; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05262; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5263; AVX2-FP-NEXT: vmovdqa 32(%rsi), %xmm65264; AVX2-FP-NEXT: vmovdqa 32(%rdi), %xmm05265; AVX2-FP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5266; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm4 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]5267; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3]5268; AVX2-FP-NEXT: vpshufb %xmm4, %xmm0, %xmm05269; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]5270; AVX2-FP-NEXT: vmovdqa 32(%rcx), %xmm125271; AVX2-FP-NEXT: vmovdqa 32(%rdx), %xmm115272; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3]5273; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,2,3,0,1,2,3,6,7,4,5,6,7,4,5]5274; AVX2-FP-NEXT: vpshufb %xmm2, %xmm1, %xmm15275; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,1,3]5276; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]5277; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm0, %ymm1, %ymm95278; AVX2-FP-NEXT: vmovdqa (%rcx), %xmm145279; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm135280; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm13[0],xmm14[0],xmm13[1],xmm14[1],xmm13[2],xmm14[2],xmm13[3],xmm14[3]5281; AVX2-FP-NEXT: vpshufb %xmm2, %xmm0, %xmm05282; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm85283; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm75284; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3]5285; AVX2-FP-NEXT: vpshufb %xmm4, %xmm1, %xmm15286; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]5287; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,1,3]5288; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm1, %ymm0, %ymm25289; AVX2-FP-NEXT: vmovdqa 32(%r9), %xmm05290; AVX2-FP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5291; AVX2-FP-NEXT: vmovdqa 32(%r8), %xmm15292; AVX2-FP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5293; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]5294; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,2,3,6,7,4,5,6,7,4,5,12,13,14,15]5295; AVX2-FP-NEXT: vpshufb %xmm3, %xmm5, %xmm05296; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]5297; AVX2-FP-NEXT: vpbroadcastd 32(%rax), %ymm105298; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0]5299; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm0, %ymm10, %ymm05300; AVX2-FP-NEXT: vmovdqa (%r9), %xmm15301; AVX2-FP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5302; AVX2-FP-NEXT: vmovdqa (%r8), %xmm105303; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm10[0],xmm1[0],xmm10[1],xmm1[1],xmm10[2],xmm1[2],xmm10[3],xmm1[3]5304; AVX2-FP-NEXT: vpshufb %xmm3, %xmm1, %xmm35305; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]5306; AVX2-FP-NEXT: vpbroadcastd (%rax), %ymm155307; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm3, %ymm15, %ymm35308; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]5309; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm9, %ymm0, %ymm05310; AVX2-FP-NEXT: vmovdqu %ymm0, (%rsp) # 32-byte Spill5311; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm05312; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5313; AVX2-FP-NEXT: vpbroadcastq {{.*#+}} xmm0 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]5314; AVX2-FP-NEXT: vpshufb %xmm0, %xmm12, %xmm25315; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm3 = xmm11[1,1,2,2]5316; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0],xmm2[1],xmm3[2,3],xmm2[4],xmm3[5,6],xmm2[7]5317; AVX2-FP-NEXT: vpbroadcastd {{.*#+}} xmm3 = [6,7,8,9,6,7,8,9,6,7,8,9,6,7,8,9]5318; AVX2-FP-NEXT: vpshufb %xmm3, %xmm6, %xmm45319; AVX2-FP-NEXT: vmovdqa %xmm6, %xmm95320; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload5321; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm15 = xmm6[1,1,2,3]5322; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm4 = xmm15[0,1],xmm4[2],xmm15[3,4],xmm4[5],xmm15[6,7]5323; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]5324; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,2,1]5325; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]5326; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm2, %ymm4, %ymm25327; AVX2-FP-NEXT: vpshufb %xmm0, %xmm14, %xmm05328; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm4 = xmm13[1,1,2,2]5329; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm4[0],xmm0[1],xmm4[2,3],xmm0[4],xmm4[5,6],xmm0[7]5330; AVX2-FP-NEXT: vpshufb %xmm3, %xmm8, %xmm35331; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm4 = xmm7[1,1,2,3]5332; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm3 = xmm4[0,1],xmm3[2],xmm4[3,4],xmm3[5],xmm4[6,7]5333; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]5334; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,2,1]5335; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm0, %ymm3, %ymm05336; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]5337; AVX2-FP-NEXT: vpshufb %xmm3, %xmm5, %xmm45338; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,3]5339; AVX2-FP-NEXT: vpbroadcastd 36(%rax), %ymm55340; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]5341; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm4, %ymm5, %ymm45342; AVX2-FP-NEXT: vpshufb %xmm3, %xmm1, %xmm15343; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,1,3]5344; AVX2-FP-NEXT: vpbroadcastd 4(%rax), %ymm35345; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm1, %ymm3, %ymm15346; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]5347; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm2, %ymm4, %ymm155348; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm0, %ymm1, %ymm05349; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5350; AVX2-FP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm9[4],xmm6[4],xmm9[5],xmm6[5],xmm9[6],xmm6[6],xmm9[7],xmm6[7]5351; AVX2-FP-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm11[4],xmm12[4],xmm11[5],xmm12[5],xmm11[6],xmm12[6],xmm11[7],xmm12[7]5352; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm2 = [4,5,2,3,4,5,6,7,8,9,10,11,10,11,8,9]5353; AVX2-FP-NEXT: vpshufb %xmm2, %xmm0, %xmm05354; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,3]5355; AVX2-FP-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,2,3,3,4,5,6,7]5356; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,2,1]5357; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]5358; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm0, %ymm1, %ymm05359; AVX2-FP-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]5360; AVX2-FP-NEXT: vpshufb %xmm2, %xmm1, %xmm15361; AVX2-FP-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm13[4],xmm14[4],xmm13[5],xmm14[5],xmm13[6],xmm14[6],xmm13[7],xmm14[7]5362; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,3]5363; AVX2-FP-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,2,3,3,4,5,6,7]5364; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,2,1]5365; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm15366; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload5367; AVX2-FP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload5368; AVX2-FP-NEXT: # xmm2 = xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]5369; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm5 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]5370; AVX2-FP-NEXT: vpshufb %xmm5, %xmm2, %xmm25371; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]5372; AVX2-FP-NEXT: vpbroadcastd 40(%rax), %ymm35373; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]5374; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm25375; AVX2-FP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm10, %xmm3 # 16-byte Folded Reload5376; AVX2-FP-NEXT: # xmm3 = xmm10[4],mem[4],xmm10[5],mem[5],xmm10[6],mem[6],xmm10[7],mem[7]5377; AVX2-FP-NEXT: vpshufb %xmm5, %xmm3, %xmm35378; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]5379; AVX2-FP-NEXT: vpbroadcastd 8(%rax), %ymm55380; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm3, %ymm5, %ymm35381; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]5382; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm2, %ymm0, %ymm05383; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm3, %ymm1, %ymm15384; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload5385; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm2 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]5386; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload5387; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm3 = ymm8[3,3,3,3,7,7,7,7]5388; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0,1,2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8,9,10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]5389; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload5390; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm3 = ymm11[14,15,12,13,u,u,u,u,u,u,u,u,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29,u,u,u,u]5391; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload5392; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm4 = ymm9[3,3,3,3,7,7,7,7]5393; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm3[1],ymm4[2,3],ymm3[4],ymm4[5,6,7,8],ymm3[9],ymm4[10,11],ymm3[12],ymm4[13,14,15]5394; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,1,3,3]5395; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,2,2,3]5396; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]5397; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm25398; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload5399; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm3 = ymm12[3,3,3,3,7,7,7,7]5400; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload5401; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm4 = ymm13[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,28,29,u,u,28,29,26,27,u,u,30,31,30,31]5402; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0,1],ymm3[2],ymm4[3,4],ymm3[5],ymm4[6,7,8,9],ymm3[10],ymm4[11,12],ymm3[13],ymm4[14,15]5403; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]5404; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload5405; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm4 = ymm14[2,3,3,3,6,7,7,7]5406; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,1,3,2]5407; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]5408; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm35409; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]5410; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm25411; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm3 = ymm11[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]5412; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm4 = ymm9[2,2,2,2,6,6,6,6]5413; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3,4],ymm4[5],ymm3[6,7,8,9],ymm4[10],ymm3[11,12],ymm4[13],ymm3[14,15]5414; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm4 = ymm10[10,11,8,9,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,u,u,u,u,26,27,24,25,u,u,u,u]5415; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm5 = ymm8[2,2,2,2,6,6,6,6]5416; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5,6,7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13,14,15]5417; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]5418; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,2,3]5419; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]5420; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm35421; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm4 = ymm13[u,u,u,u,u,u,u,u,u,u,8,9,u,u,u,u,u,u,u,u,22,23,u,u,u,u,24,25,u,u,u,u]5422; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm5 = ymm12[1,2,2,3,5,6,6,7]5423; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1],ymm4[2],ymm5[3,4],ymm4[5],ymm5[6,7,8,9],ymm4[10],ymm5[11,12],ymm4[13],ymm5[14,15]5424; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,1,3,2]5425; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm5 = ymm14[0,1,2,2,4,5,6,6]5426; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,1,3,3]5427; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]5428; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm45429; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]5430; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm35431; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm5 = [18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]5432; AVX2-FP-NEXT: # ymm5 = mem[0,1,0,1]5433; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload5434; AVX2-FP-NEXT: vpshufb %ymm5, %ymm4, %ymm45435; AVX2-FP-NEXT: vpshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload5436; AVX2-FP-NEXT: # ymm6 = mem[1,1,1,1,5,5,5,5]5437; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm6[2],ymm4[3,4],ymm6[5],ymm4[6,7,8,9],ymm6[10],ymm4[11,12],ymm6[13],ymm4[14,15]5438; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload5439; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} ymm6 = ymm6[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]5440; AVX2-FP-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Folded Reload5441; AVX2-FP-NEXT: # ymm7 = mem[0,1,1,3,4,5,5,7]5442; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm6 = ymm7[0,1],ymm6[2],ymm7[3,4],ymm6[5],ymm7[6,7,8,9],ymm6[10],ymm7[11,12],ymm6[13],ymm7[14,15]5443; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]5444; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,1,3,2]5445; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]5446; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm4, %ymm6, %ymm45447; AVX2-FP-NEXT: vpshufb %ymm5, %ymm10, %ymm55448; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm6 = ymm8[1,1,1,1,5,5,5,5]5449; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0,1],ymm6[2],ymm5[3,4],ymm6[5],ymm5[6,7,8,9],ymm6[10],ymm5[11,12],ymm6[13],ymm5[14,15]5450; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} ymm6 = ymm11[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]5451; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm8 = ymm9[0,1,1,3,4,5,5,7]5452; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm6 = ymm8[0,1],ymm6[2],ymm8[3,4],ymm6[5],ymm8[6,7,8,9],ymm6[10],ymm8[11,12],ymm6[13],ymm8[14,15]5453; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]5454; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,1,3,2]5455; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm5, %ymm6, %ymm55456; AVX2-FP-NEXT: vpbroadcastd {{.*#+}} ymm6 = [18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21]5457; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload5458; AVX2-FP-NEXT: vpshufb %ymm6, %ymm7, %ymm75459; AVX2-FP-NEXT: vpshufd $96, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload5460; AVX2-FP-NEXT: # ymm8 = mem[0,0,2,1,4,4,6,5]5461; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm7 = ymm7[0,1,2],ymm8[3],ymm7[4,5],ymm8[6],ymm7[7,8,9,10],ymm8[11],ymm7[12,13],ymm8[14],ymm7[15]5462; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]5463; AVX2-FP-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload5464; AVX2-FP-NEXT: # ymm8 = mem[0,1,1,3,4,5,5,7]5465; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,2,2,3]5466; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]5467; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm75468; AVX2-FP-NEXT: vpshufb %ymm6, %ymm13, %ymm65469; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm8 = ymm12[0,0,2,1,4,4,6,5]5470; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm6 = ymm6[0,1,2],ymm8[3],ymm6[4,5],ymm8[6],ymm6[7,8,9,10],ymm8[11],ymm6[12,13],ymm8[14],ymm6[15]5471; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]5472; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm8 = ymm14[0,1,1,3,4,5,5,7]5473; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,2,2,3]5474; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm6, %ymm8, %ymm65475; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]5476; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm4, %ymm7, %ymm45477; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm5, %ymm6, %ymm55478; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax5479; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload5480; AVX2-FP-NEXT: vmovaps %ymm6, 96(%rax)5481; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload5482; AVX2-FP-NEXT: vmovaps %ymm6, 320(%rax)5483; AVX2-FP-NEXT: vmovdqa %ymm5, 128(%rax)5484; AVX2-FP-NEXT: vmovdqa %ymm4, 352(%rax)5485; AVX2-FP-NEXT: vmovdqa %ymm3, 160(%rax)5486; AVX2-FP-NEXT: vmovdqa %ymm2, 192(%rax)5487; AVX2-FP-NEXT: vmovdqa %ymm1, 64(%rax)5488; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload5489; AVX2-FP-NEXT: vmovaps %ymm1, 32(%rax)5490; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload5491; AVX2-FP-NEXT: vmovaps %ymm1, (%rax)5492; AVX2-FP-NEXT: vmovups (%rsp), %ymm1 # 32-byte Reload5493; AVX2-FP-NEXT: vmovaps %ymm1, 224(%rax)5494; AVX2-FP-NEXT: vmovdqa %ymm0, 288(%rax)5495; AVX2-FP-NEXT: vmovdqa %ymm15, 256(%rax)5496; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5497; AVX2-FP-NEXT: vmovaps %ymm0, 416(%rax)5498; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5499; AVX2-FP-NEXT: vmovaps %ymm0, 384(%rax)5500; AVX2-FP-NEXT: addq $616, %rsp # imm = 0x2685501; AVX2-FP-NEXT: vzeroupper5502; AVX2-FP-NEXT: retq5503;5504; AVX2-FCP-LABEL: store_i16_stride7_vf32:5505; AVX2-FCP: # %bb.0:5506; AVX2-FCP-NEXT: subq $312, %rsp # imm = 0x1385507; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax5508; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm95509; AVX2-FCP-NEXT: vmovdqa (%rsi), %ymm115510; AVX2-FCP-NEXT: vmovdqa (%rdx), %ymm85511; AVX2-FCP-NEXT: vmovdqa (%rcx), %ymm75512; AVX2-FCP-NEXT: vmovdqa (%r8), %ymm45513; AVX2-FCP-NEXT: vmovdqa (%r9), %ymm105514; AVX2-FCP-NEXT: vmovdqa (%rax), %ymm35515; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm11[u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]5516; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm9[3,3,3,3,7,7,7,7]5517; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8,9,10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]5518; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,3]5519; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm7[14,15,12,13,u,u,u,u,u,u,u,u,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29,u,u,u,u]5520; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm8[3,3,3,3,7,7,7,7]5521; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]5522; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]5523; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]5524; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05525; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [6,7,3,3,7,7,6,7]5526; AVX2-FCP-NEXT: vpermd %ymm3, %ymm1, %ymm15527; AVX2-FCP-NEXT: vmovdqa %ymm3, %ymm65528; AVX2-FCP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5529; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm4[3,3,3,3,7,7,7,7]5530; AVX2-FCP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5531; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,28,29,u,u,28,29,26,27,u,u,30,31,30,31]5532; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0,1],ymm2[2],ymm3[3,4],ymm2[5],ymm3[6,7,8,9],ymm2[10],ymm3[11,12],ymm2[13],ymm3[14,15]5533; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]5534; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]5535; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm2, %ymm1, %ymm15536; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]5537; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05538; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5539; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm0 = [4,5,2,2,6,6,6,6]5540; AVX2-FCP-NEXT: vpermd %ymm6, %ymm0, %ymm05541; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm10[u,u,u,u,u,u,u,u,u,u,8,9,u,u,u,u,u,u,u,u,22,23,u,u,u,u,24,25,u,u,u,u]5542; AVX2-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5543; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm4[1,2,2,3,5,6,6,7]5544; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3,4],ymm1[5],ymm2[6,7,8,9],ymm1[10],ymm2[11,12],ymm1[13],ymm2[14,15]5545; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]5546; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]5547; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm05548; AVX2-FCP-NEXT: vmovdqa %ymm7, %ymm45549; AVX2-FCP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5550; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]5551; AVX2-FCP-NEXT: vmovdqa %ymm8, %ymm55552; AVX2-FCP-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5553; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm8[2,2,2,2,6,6,6,6]5554; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]5555; AVX2-FCP-NEXT: vmovdqa %ymm11, %ymm65556; AVX2-FCP-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5557; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm11[10,11,8,9,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,u,u,u,u,26,27,24,25,u,u,u,u]5558; AVX2-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5559; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm9[2,2,2,2,6,6,6,6]5560; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5,6,7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13,14,15]5561; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]5562; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]5563; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]5564; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm15565; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]5566; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm05567; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5568; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %ymm155569; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %ymm125570; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]5571; AVX2-FCP-NEXT: # ymm8 = mem[0,1,0,1]5572; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm12, %ymm15573; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm15[1,1,1,1,5,5,5,5]5574; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]5575; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %ymm145576; AVX2-FCP-NEXT: vmovdqa 32(%rcx), %ymm115577; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} ymm2 = ymm11[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]5578; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm7 = ymm14[0,1,1,3,4,5,5,7]5579; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm7[0,1],ymm2[2],ymm7[3,4],ymm2[5],ymm7[6,7,8,9],ymm2[10],ymm7[11,12],ymm2[13],ymm7[14,15]5580; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]5581; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,1,3,2]5582; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm0 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]5583; AVX2-FCP-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm75584; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm6, %ymm15585; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm9[1,1,1,1,5,5,5,5]5586; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]5587; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} ymm2 = ymm4[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]5588; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm8 = ymm5[0,1,1,3,4,5,5,7]5589; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm8[0,1],ymm2[2],ymm8[3,4],ymm2[5],ymm8[6,7,8,9],ymm2[10],ymm8[11,12],ymm2[13],ymm8[14,15]5590; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]5591; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,1,3,2]5592; AVX2-FCP-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm85593; AVX2-FCP-NEXT: vmovdqa 32(%r8), %ymm95594; AVX2-FCP-NEXT: vmovdqa 32(%r9), %ymm65595; AVX2-FCP-NEXT: vpbroadcastd {{.*#+}} ymm3 = [18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21]5596; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm6, %ymm15597; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm9[0,0,2,1,4,4,6,5]5598; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1,2],ymm13[3],ymm1[4,5],ymm13[6],ymm1[7,8,9,10],ymm13[11],ymm1[12,13],ymm13[14],ymm1[15]5599; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm13 = ymm1[2,2,3,3]5600; AVX2-FCP-NEXT: vmovdqa 32(%rax), %ymm55601; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [0,1,4,5,4,5,5,7]5602; AVX2-FCP-NEXT: vpermd %ymm5, %ymm1, %ymm05603; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]5604; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm13, %ymm0, %ymm05605; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm10, %ymm35606; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload5607; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm4[0,0,2,1,4,4,6,5]5608; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1,2],ymm13[3],ymm3[4,5],ymm13[6],ymm3[7,8,9,10],ymm13[11],ymm3[12,13],ymm13[14],ymm3[15]5609; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload5610; AVX2-FCP-NEXT: vpermd %ymm10, %ymm1, %ymm15611; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]5612; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm3, %ymm1, %ymm15613; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]5614; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm7, %ymm0, %ymm05615; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5616; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm8, %ymm1, %ymm05617; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5618; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm0 = [3,0,0,0,4,0,0,4]5619; AVX2-FCP-NEXT: vpermd %ymm15, %ymm0, %ymm15620; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm2 = [0,1,0,1,14,15,14,15,8,9,10,11,12,13,14,15,16,17,16,17,30,31,30,31,24,25,26,27,28,29,30,31]5621; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm12, %ymm35622; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [0,65535,0,0,0,0,0,0,65535,0,0,0,0,0,0,65535]5623; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm1, %ymm3, %ymm75624; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload5625; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload5626; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm1, %ymm15627; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm0, %ymm1, %ymm05628; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [0,3,0,0,0,4,0,0]5629; AVX2-FCP-NEXT: vpermd %ymm14, %ymm1, %ymm25630; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm3 = [0,1,0,1,0,1,0,1,14,15,14,15,14,15,14,15,16,17,16,17,16,17,16,17,30,31,30,31,30,31,30,31]5631; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm11, %ymm85632; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,0,0,65535,0,0,0,0,0,0,65535,0,0,0,0,0]5633; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm2, %ymm8, %ymm25634; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload5635; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload5636; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm8, %ymm35637; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm1, %ymm3, %ymm15638; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]5639; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm7, %ymm2, %ymm25640; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm0, %ymm1, %ymm05641; AVX2-FCP-NEXT: vpmovsxbq {{.*#+}} ymm1 = [0,3,0,4]5642; AVX2-FCP-NEXT: vpermd %ymm9, %ymm1, %ymm35643; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm7 = [0,1,2,3,4,5,6,7,0,1,0,1,14,15,14,15,16,17,18,19,20,21,22,23,16,17,16,17,30,31,30,31]5644; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm6, %ymm85645; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,0,0,0,0,65535,0,0,0,0,0,0,65535,0,0,0]5646; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm3, %ymm8, %ymm35647; AVX2-FCP-NEXT: vpermd %ymm4, %ymm1, %ymm15648; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload5649; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm4, %ymm75650; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm1, %ymm7, %ymm15651; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm7 = [3,0,0,3,0,0,0,4]5652; AVX2-FCP-NEXT: vpermd %ymm5, %ymm7, %ymm85653; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0]5654; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm3, %ymm8, %ymm35655; AVX2-FCP-NEXT: vpermd %ymm10, %ymm7, %ymm75656; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm1, %ymm7, %ymm15657; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]5658; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm2, %ymm3, %ymm25659; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5660; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm0, %ymm1, %ymm05661; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5662; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm11[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]5663; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm14[2,2,2,2,6,6,6,6]5664; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]5665; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm12[10,11,8,9,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,u,u,u,u,26,27,24,25,u,u,u,u]5666; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm15[2,2,2,2,6,6,6,6]5667; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]5668; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]5669; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]5670; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]5671; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05672; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [5,6,2,3,6,7,5,6]5673; AVX2-FCP-NEXT: vpermd %ymm9, %ymm1, %ymm15674; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]5675; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05676; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,24,25,22,23,22,23,u,u,u,u,u,u,u,u]5677; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,2]5678; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]5679; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05680; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [4,5,2,2,6,6,6,6]5681; AVX2-FCP-NEXT: vpermd %ymm5, %ymm1, %ymm15682; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]5683; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05684; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5685; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm12[u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]5686; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm15[3,3,3,3,7,7,7,7]5687; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8,9,10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]5688; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,3]5689; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm11[14,15,12,13,u,u,u,u,u,u,u,u,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29,u,u,u,u]5690; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm14[3,3,3,3,7,7,7,7]5691; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]5692; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]5693; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]5694; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05695; AVX2-FCP-NEXT: vpbroadcastd 60(%r8), %ymm15696; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]5697; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05698; AVX2-FCP-NEXT: vpshufhw {{.*#+}} ymm1 = ymm6[0,1,2,3,5,5,7,6,8,9,10,11,13,13,15,14]5699; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[3,3,3,3]5700; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0]5701; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05702; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [6,7,3,3,7,7,6,7]5703; AVX2-FCP-NEXT: vpermd %ymm5, %ymm1, %ymm15704; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]5705; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm05706; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5707; AVX2-FCP-NEXT: vmovdqa 32(%rcx), %xmm75708; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %xmm35709; AVX2-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5710; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %xmm15711; AVX2-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5712; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %xmm05713; AVX2-FCP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5714; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm4 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]5715; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]5716; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm0, %xmm05717; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]5718; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm3[0],xmm7[0],xmm3[1],xmm7[1],xmm3[2],xmm7[2],xmm3[3],xmm7[3]5719; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,2,3,0,1,2,3,6,7,4,5,6,7,4,5]5720; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm1, %xmm15721; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,1,3]5722; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]5723; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm0, %ymm1, %ymm125724; AVX2-FCP-NEXT: vmovdqa (%rcx), %xmm135725; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm95726; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm9[0],xmm13[0],xmm9[1],xmm13[1],xmm9[2],xmm13[2],xmm9[3],xmm13[3]5727; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm0, %xmm15728; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm155729; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm85730; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm8[0],xmm15[0],xmm8[1],xmm15[1],xmm8[2],xmm15[2],xmm8[3],xmm15[3]5731; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm2, %xmm25732; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]5733; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,1,3]5734; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm2, %ymm1, %ymm105735; AVX2-FCP-NEXT: vmovdqa 32(%r9), %xmm05736; AVX2-FCP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5737; AVX2-FCP-NEXT: vmovdqa 32(%r8), %xmm15738; AVX2-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5739; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]5740; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm4 = [0,1,2,3,6,7,4,5,6,7,4,5,12,13,14,15]5741; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm5, %xmm15742; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]5743; AVX2-FCP-NEXT: vpbroadcastd 32(%rax), %ymm25744; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0]5745; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm05746; AVX2-FCP-NEXT: vmovdqa (%r9), %xmm15747; AVX2-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5748; AVX2-FCP-NEXT: vmovdqa (%r8), %xmm145749; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm14[0],xmm1[0],xmm14[1],xmm1[1],xmm14[2],xmm1[2],xmm14[3],xmm1[3]5750; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm6, %xmm45751; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]5752; AVX2-FCP-NEXT: vpbroadcastd (%rax), %ymm115753; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm4, %ymm11, %ymm35754; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]5755; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm12, %ymm0, %ymm05756; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5757; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm10, %ymm3, %ymm05758; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5759; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} xmm0 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]5760; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm7, %xmm35761; AVX2-FCP-NEXT: vmovdqa %xmm7, %xmm105762; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload5763; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm4 = xmm7[1,1,2,2]5764; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm4[0],xmm3[1],xmm4[2,3],xmm3[4],xmm4[5,6],xmm3[7]5765; AVX2-FCP-NEXT: vpbroadcastd {{.*#+}} xmm4 = [6,7,8,9,6,7,8,9,6,7,8,9,6,7,8,9]5766; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload5767; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm2, %xmm115768; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5769; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm12 = xmm1[1,1,2,3]5770; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm11 = xmm12[0,1],xmm11[2],xmm12[3,4],xmm11[5],xmm12[6,7]5771; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]5772; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,2,1]5773; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]5774; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm3, %ymm11, %ymm35775; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm13, %xmm05776; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm11 = xmm9[1,1,2,2]5777; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm11[0],xmm0[1],xmm11[2,3],xmm0[4],xmm11[5,6],xmm0[7]5778; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm15, %xmm45779; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm11 = xmm8[1,1,2,3]5780; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm11[0,1],xmm4[2],xmm11[3,4],xmm4[5],xmm11[6,7]5781; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]5782; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,2,1]5783; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm0, %ymm4, %ymm05784; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm4 = [0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]5785; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm5, %xmm55786; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,1,3]5787; AVX2-FCP-NEXT: vpbroadcastd 36(%rax), %ymm115788; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]5789; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm5, %ymm11, %ymm55790; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm6, %xmm45791; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,3]5792; AVX2-FCP-NEXT: vpbroadcastd 4(%rax), %ymm65793; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm4, %ymm6, %ymm45794; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]5795; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm3, %ymm5, %ymm65796; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm0, %ymm4, %ymm55797; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]5798; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm7[4],xmm10[4],xmm7[5],xmm10[5],xmm7[6],xmm10[6],xmm7[7],xmm10[7]5799; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm4 = [4,5,2,3,4,5,6,7,8,9,10,11,10,11,8,9]5800; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm0, %xmm05801; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,3]5802; AVX2-FCP-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,2,3,3,4,5,6,7]5803; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,2,1]5804; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]5805; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm0, %ymm3, %ymm05806; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm15[4],xmm8[4],xmm15[5],xmm8[5],xmm15[6],xmm8[6],xmm15[7],xmm8[7]5807; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm3, %xmm35808; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm9[4],xmm13[4],xmm9[5],xmm13[5],xmm9[6],xmm13[6],xmm9[7],xmm13[7]5809; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,3]5810; AVX2-FCP-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,2,3,3,4,5,6,7]5811; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,2,1]5812; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm3, %ymm4, %ymm35813; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5814; AVX2-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm4 # 16-byte Folded Reload5815; AVX2-FCP-NEXT: # xmm4 = xmm1[4],mem[4],xmm1[5],mem[5],xmm1[6],mem[6],xmm1[7],mem[7]5816; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm9 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]5817; AVX2-FCP-NEXT: vpshufb %xmm9, %xmm4, %xmm45818; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]5819; AVX2-FCP-NEXT: vpbroadcastd 40(%rax), %ymm75820; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]5821; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm4, %ymm7, %ymm45822; AVX2-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm14, %xmm1 # 16-byte Folded Reload5823; AVX2-FCP-NEXT: # xmm1 = xmm14[4],mem[4],xmm14[5],mem[5],xmm14[6],mem[6],xmm14[7],mem[7]5824; AVX2-FCP-NEXT: vpshufb %xmm9, %xmm1, %xmm15825; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]5826; AVX2-FCP-NEXT: vpbroadcastd 8(%rax), %ymm25827; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm1, %ymm2, %ymm15828; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]5829; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm4, %ymm0, %ymm05830; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm1, %ymm3, %ymm15831; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax5832; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload5833; AVX2-FCP-NEXT: vmovaps %ymm2, 96(%rax)5834; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload5835; AVX2-FCP-NEXT: vmovaps %ymm2, 320(%rax)5836; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload5837; AVX2-FCP-NEXT: vmovaps %ymm2, 128(%rax)5838; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload5839; AVX2-FCP-NEXT: vmovaps %ymm2, 352(%rax)5840; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload5841; AVX2-FCP-NEXT: vmovaps %ymm2, 160(%rax)5842; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload5843; AVX2-FCP-NEXT: vmovaps %ymm2, 192(%rax)5844; AVX2-FCP-NEXT: vmovdqa %ymm1, 64(%rax)5845; AVX2-FCP-NEXT: vmovdqa %ymm5, 32(%rax)5846; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload5847; AVX2-FCP-NEXT: vmovaps %ymm1, (%rax)5848; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload5849; AVX2-FCP-NEXT: vmovaps %ymm1, 224(%rax)5850; AVX2-FCP-NEXT: vmovdqa %ymm0, 288(%rax)5851; AVX2-FCP-NEXT: vmovdqa %ymm6, 256(%rax)5852; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5853; AVX2-FCP-NEXT: vmovaps %ymm0, 416(%rax)5854; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5855; AVX2-FCP-NEXT: vmovaps %ymm0, 384(%rax)5856; AVX2-FCP-NEXT: addq $312, %rsp # imm = 0x1385857; AVX2-FCP-NEXT: vzeroupper5858; AVX2-FCP-NEXT: retq5859;5860; AVX512-LABEL: store_i16_stride7_vf32:5861; AVX512: # %bb.0:5862; AVX512-NEXT: subq $664, %rsp # imm = 0x2985863; AVX512-NEXT: vmovdqa (%rcx), %ymm95864; AVX512-NEXT: vmovdqa {{.*#+}} ymm13 = [128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128]5865; AVX512-NEXT: vpshufb %ymm13, %ymm9, %ymm05866; AVX512-NEXT: vmovdqa (%rdx), %ymm25867; AVX512-NEXT: vmovdqa {{.*#+}} ymm14 = [u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u]5868; AVX512-NEXT: vpshufb %ymm14, %ymm2, %ymm15869; AVX512-NEXT: vmovdqa64 %ymm2, %ymm215870; AVX512-NEXT: vpor %ymm0, %ymm1, %ymm05871; AVX512-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5872; AVX512-NEXT: vmovdqa (%rsi), %ymm115873; AVX512-NEXT: vmovdqa {{.*#+}} ymm12 = [128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128,128,128,128,128]5874; AVX512-NEXT: vpshufb %ymm12, %ymm11, %ymm05875; AVX512-NEXT: vmovdqa64 %ymm11, %ymm175876; AVX512-NEXT: vmovdqa (%rdi), %ymm25877; AVX512-NEXT: vmovdqa {{.*#+}} ymm15 = [12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u,16,17,18,19]5878; AVX512-NEXT: vpshufb %ymm15, %ymm2, %ymm15879; AVX512-NEXT: vmovdqa64 %ymm2, %ymm265880; AVX512-NEXT: vpor %ymm0, %ymm1, %ymm05881; AVX512-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5882; AVX512-NEXT: vmovdqa (%r9), %ymm15883; AVX512-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128]5884; AVX512-NEXT: vpshufb %ymm0, %ymm1, %ymm25885; AVX512-NEXT: vmovdqa64 %ymm1, %ymm195886; AVX512-NEXT: vmovdqa (%r8), %ymm45887; AVX512-NEXT: vmovdqa {{.*#+}} ymm1 = [u,u,u,u,u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u]5888; AVX512-NEXT: vpshufb %ymm1, %ymm4, %ymm35889; AVX512-NEXT: vmovdqa64 %ymm4, %ymm205890; AVX512-NEXT: vpor %ymm2, %ymm3, %ymm25891; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5892; AVX512-NEXT: vmovdqa 32(%r9), %xmm25893; AVX512-NEXT: vmovdqa 32(%r8), %xmm105894; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm10[0],xmm2[0],xmm10[1],xmm2[1],xmm10[2],xmm2[2],xmm10[3],xmm2[3]5895; AVX512-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5896; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm10[4],xmm2[4],xmm10[5],xmm2[5],xmm10[6],xmm2[6],xmm10[7],xmm2[7]5897; AVX512-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,7,6]5898; AVX512-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]5899; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,18,19,0,19,19,0,0,0,1,0,1,2,0,0,3]5900; AVX512-NEXT: vpermi2d %zmm3, %zmm2, %zmm45901; AVX512-NEXT: vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5902; AVX512-NEXT: vmovdqa 32(%rdi), %ymm25903; AVX512-NEXT: vmovdqa 32(%rsi), %ymm115904; AVX512-NEXT: vpshufb %ymm12, %ymm11, %ymm35905; AVX512-NEXT: vpshufb %ymm15, %ymm2, %ymm45906; AVX512-NEXT: vpor %ymm3, %ymm4, %ymm35907; AVX512-NEXT: vmovdqu64 %zmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5908; AVX512-NEXT: vmovdqa 32(%rcx), %ymm125909; AVX512-NEXT: vmovdqa 32(%rdx), %ymm155910; AVX512-NEXT: vpshufb %ymm13, %ymm12, %ymm35911; AVX512-NEXT: vpshufb %ymm14, %ymm15, %ymm45912; AVX512-NEXT: vpor %ymm3, %ymm4, %ymm35913; AVX512-NEXT: vmovdqu64 %zmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5914; AVX512-NEXT: vmovdqa 32(%r9), %ymm135915; AVX512-NEXT: vmovdqa 32(%r8), %ymm145916; AVX512-NEXT: vpshufb %ymm0, %ymm13, %ymm05917; AVX512-NEXT: vpshufb %ymm1, %ymm14, %ymm15918; AVX512-NEXT: vpor %ymm0, %ymm1, %ymm05919; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5920; AVX512-NEXT: vmovdqa (%rcx), %xmm05921; AVX512-NEXT: vmovdqa (%rdx), %xmm35922; AVX512-NEXT: vpbroadcastq {{.*#+}} xmm1 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]5923; AVX512-NEXT: vpshufb %xmm1, %xmm0, %xmm45924; AVX512-NEXT: vpshufd {{.*#+}} xmm5 = xmm3[1,1,2,2]5925; AVX512-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0],xmm4[1],xmm5[2,3],xmm4[4],xmm5[5,6],xmm4[7]5926; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]5927; AVX512-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,3,2,4,5,6,7]5928; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm6 = [0,16,0,0,17,17,0,0,0,0,0,1,2,0,0,3]5929; AVX512-NEXT: vpermi2d %zmm5, %zmm4, %zmm65930; AVX512-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5931; AVX512-NEXT: vmovdqa (%r9), %xmm45932; AVX512-NEXT: vmovdqa (%r8), %xmm55933; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]5934; AVX512-NEXT: vpshufhw {{.*#+}} xmm7 = xmm6[0,1,2,3,4,5,7,6]5935; AVX512-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,1,3,2,4,5,6,7]5936; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm24 = [0,0,0,1,0,1,1,0,0,18,19,0,19,19,0,0]5937; AVX512-NEXT: vpermi2d %zmm7, %zmm6, %zmm245938; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]5939; AVX512-NEXT: vmovdqa64 %xmm0, %xmm275940; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax5941; AVX512-NEXT: vpbroadcastd 8(%rax), %ymm05942; AVX512-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm05943; AVX512-NEXT: vmovdqa (%rax), %ymm65944; AVX512-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5945; AVX512-NEXT: vmovdqa {{.*#+}} ymm3 = [12,13,128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128]5946; AVX512-NEXT: vpshufb %ymm3, %ymm6, %ymm65947; AVX512-NEXT: vinserti64x4 $1, %ymm6, %zmm0, %zmm05948; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5949; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]5950; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = ymm12[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]5951; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm15[2,2,2,2,6,6,6,6]5952; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm5[2],ymm4[3,4],ymm5[5],ymm4[6,7,8,9],ymm5[10],ymm4[11,12],ymm5[13],ymm4[14,15]5953; AVX512-NEXT: vmovdqa64 %ymm4, %ymm285954; AVX512-NEXT: vpshufhw {{.*#+}} ymm4 = ymm12[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]5955; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]5956; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm15[3,3,3,3,7,7,7,7]5957; AVX512-NEXT: vpblendw {{.*#+}} ymm8 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5,6,7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13,14,15]5958; AVX512-NEXT: vmovdqa64 %ymm8, %ymm295959; AVX512-NEXT: vpshufhw {{.*#+}} ymm4 = ymm11[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]5960; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]5961; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm2[2,2,2,2,6,6,6,6]5962; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5,6,7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13,14,15]5963; AVX512-NEXT: vmovdqa64 %ymm4, %ymm305964; AVX512-NEXT: vpshufhw {{.*#+}} ymm4 = ymm11[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]5965; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]5966; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm2[3,3,3,3,7,7,7,7]5967; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1,2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8,9,10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]5968; AVX512-NEXT: vmovdqa64 %ymm4, %ymm315969; AVX512-NEXT: vprold $16, %ymm13, %ymm45970; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm14[1,2,2,3,5,6,6,7]5971; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1],ymm4[2],ymm5[3,4],ymm4[5],ymm5[6,7,8,9],ymm4[10],ymm5[11,12],ymm4[13],ymm5[14,15]5972; AVX512-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5973; AVX512-NEXT: vpshufhw {{.*#+}} ymm4 = ymm13[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]5974; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,3,6,6,6,7]5975; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm14[3,3,3,3,7,7,7,7]5976; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm5[2],ymm4[3,4],ymm5[5],ymm4[6,7,8,9],ymm5[10],ymm4[11,12],ymm5[13],ymm4[14,15]5977; AVX512-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5978; AVX512-NEXT: vmovdqa %ymm9, %ymm85979; AVX512-NEXT: vpshufhw {{.*#+}} ymm4 = ymm9[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]5980; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]5981; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm21[3,3,3,3,7,7,7,7]5982; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5,6,7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13,14,15]5983; AVX512-NEXT: vmovdqa64 %ymm4, %ymm255984; AVX512-NEXT: vmovdqa64 %ymm17, %ymm95985; AVX512-NEXT: vpshufhw {{.*#+}} ymm4 = ymm9[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]5986; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]5987; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm26[3,3,3,3,7,7,7,7]5988; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1,2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8,9,10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]5989; AVX512-NEXT: vmovdqa64 %ymm4, %ymm185990; AVX512-NEXT: vmovdqa64 %ymm19, %ymm105991; AVX512-NEXT: vpshufhw {{.*#+}} ymm4 = ymm10[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]5992; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,3,6,6,6,7]5993; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm20[3,3,3,3,7,7,7,7]5994; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm5[2],ymm4[3,4],ymm5[5],ymm4[6,7,8,9],ymm5[10],ymm4[11,12],ymm5[13],ymm4[14,15]5995; AVX512-NEXT: vmovdqa64 %ymm4, %ymm175996; AVX512-NEXT: vmovdqa 32(%rdi), %xmm45997; AVX512-NEXT: vmovdqa 32(%rsi), %xmm55998; AVX512-NEXT: vprold $16, %xmm5, %xmm65999; AVX512-NEXT: vpshufd {{.*#+}} xmm7 = xmm4[1,1,2,3]6000; AVX512-NEXT: vpblendw {{.*#+}} xmm6 = xmm7[0,1],xmm6[2],xmm7[3,4],xmm6[5],xmm7[6,7]6001; AVX512-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6002; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]6003; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]6004; AVX512-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6005; AVX512-NEXT: vmovdqa 32(%rcx), %xmm46006; AVX512-NEXT: vpshufb %xmm1, %xmm4, %xmm16007; AVX512-NEXT: vmovdqa 32(%rdx), %xmm56008; AVX512-NEXT: vpshufd {{.*#+}} xmm7 = xmm5[1,1,2,2]6009; AVX512-NEXT: vpblendw {{.*#+}} xmm1 = xmm7[0],xmm1[1],xmm7[2,3],xmm1[4],xmm7[5,6],xmm1[7]6010; AVX512-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6011; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]6012; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]6013; AVX512-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6014; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm2[1,1,1,1,5,5,5,5]6015; AVX512-NEXT: vpshuflw {{.*#+}} ymm2 = ymm11[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]6016; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,2,1,4,4,6,5]6017; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3,4],ymm1[5],ymm2[6,7,8,9],ymm1[10],ymm2[11,12],ymm1[13],ymm2[14,15]6018; AVX512-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6019; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm15[0,1,1,3,4,5,5,7]6020; AVX512-NEXT: vpshuflw {{.*#+}} ymm2 = ymm12[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]6021; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,0,0,4,4,4,4]6022; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]6023; AVX512-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6024; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm14[0,0,2,1,4,4,6,5]6025; AVX512-NEXT: vpshuflw {{.*#+}} ymm2 = ymm13[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]6026; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,0,0,4,4,4,4]6027; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8,9,10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]6028; AVX512-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6029; AVX512-NEXT: vmovdqa 32(%rax), %ymm16030; AVX512-NEXT: vpshufb %ymm3, %ymm1, %ymm26031; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,1,1,3,4,5,5,7]6032; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]6033; AVX512-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm16034; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm196035; AVX512-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]6036; AVX512-NEXT: vpshufb %xmm3, %xmm0, %xmm16037; AVX512-NEXT: vpshufb %xmm3, %xmm6, %xmm56038; AVX512-NEXT: vmovdqa (%rdi), %xmm26039; AVX512-NEXT: vmovdqa (%rsi), %xmm46040; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3]6041; AVX512-NEXT: vpshufb %xmm3, %xmm0, %xmm06042; AVX512-NEXT: vmovdqa64 %ymm0, %ymm236043; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7]6044; AVX512-NEXT: vprold $16, %xmm4, %xmm46045; AVX512-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[1,1,2,3]6046; AVX512-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm4[2],xmm2[3,4],xmm4[5],xmm2[6,7]6047; AVX512-NEXT: vmovdqa64 %ymm2, %ymm226048; AVX512-NEXT: vpshuflw {{.*#+}} ymm2 = ymm8[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]6049; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,0,0,4,4,4,4]6050; AVX512-NEXT: vmovdqa64 %ymm21, %ymm66051; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm21[0,1,1,3,4,5,5,7]6052; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0,1],ymm2[2],ymm4[3,4],ymm2[5],ymm4[6,7,8,9],ymm2[10],ymm4[11,12],ymm2[13],ymm4[14,15]6053; AVX512-NEXT: vmovdqa64 %ymm2, %ymm216054; AVX512-NEXT: vpshufb {{.*#+}} ymm2 = ymm8[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]6055; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm6[2,2,2,2,6,6,6,6]6056; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm4[2],ymm2[3,4],ymm4[5],ymm2[6,7,8,9],ymm4[10],ymm2[11,12],ymm4[13],ymm2[14,15]6057; AVX512-NEXT: vmovdqa64 %ymm2, %ymm166058; AVX512-NEXT: vpshuflw {{.*#+}} ymm2 = ymm9[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]6059; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,2,1,4,4,6,5]6060; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm26[1,1,1,1,5,5,5,5]6061; AVX512-NEXT: vpblendw {{.*#+}} ymm13 = ymm2[0,1],ymm4[2],ymm2[3,4],ymm4[5],ymm2[6,7,8,9],ymm4[10],ymm2[11,12],ymm4[13],ymm2[14,15]6062; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm26[2,2,2,2,6,6,6,6]6063; AVX512-NEXT: vpshufhw {{.*#+}} ymm4 = ymm9[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]6064; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]6065; AVX512-NEXT: vpblendw {{.*#+}} ymm12 = ymm2[0],ymm4[1],ymm2[2,3],ymm4[4],ymm2[5,6,7,8],ymm4[9],ymm2[10,11],ymm4[12],ymm2[13,14,15]6066; AVX512-NEXT: vmovdqa %ymm10, %ymm146067; AVX512-NEXT: vpshuflw {{.*#+}} ymm2 = ymm10[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]6068; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,0,0,4,4,4,4]6069; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm20[0,0,2,1,4,4,6,5]6070; AVX512-NEXT: vpblendw {{.*#+}} ymm11 = ymm2[0,1,2],ymm10[3],ymm2[4,5],ymm10[6],ymm2[7,8,9,10],ymm10[11],ymm2[12,13],ymm10[14],ymm2[15]6071; AVX512-NEXT: vmovdqa64 %xmm27, %xmm26072; AVX512-NEXT: vpshuflw {{.*#+}} xmm10 = xmm2[0,2,3,3,4,5,6,7]6073; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,0,2,1]6074; AVX512-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,1,2,3,4,5,6,7]6075; AVX512-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,5,4]6076; AVX512-NEXT: vpermq {{.*#+}} ymm27 = ymm0[0,0,1,3]6077; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm1[0,0,1,1]6078; AVX512-NEXT: vpermq {{.*#+}} ymm28 = ymm28[2,2,2,3]6079; AVX512-NEXT: vpermq {{.*#+}} ymm29 = ymm29[0,2,2,3]6080; AVX512-NEXT: vpermq {{.*#+}} ymm30 = ymm30[0,2,2,3]6081; AVX512-NEXT: vpermq {{.*#+}} ymm31 = ymm31[2,1,3,3]6082; AVX512-NEXT: vpermq $182, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload6083; AVX512-NEXT: # ymm8 = mem[2,1,3,2]6084; AVX512-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload6085; AVX512-NEXT: # ymm6 = mem[2,2,2,3]6086; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm25[0,2,2,3]6087; AVX512-NEXT: vpshuflw {{.*#+}} xmm9 = xmm7[0,1,3,2,4,5,6,7]6088; AVX512-NEXT: vpshufd {{.*#+}} xmm9 = xmm9[0,0,1,1]6089; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm18[2,1,3,3]6090; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm5[0,0,1,1]6091; AVX512-NEXT: vpermq {{.*#+}} ymm7 = ymm17[2,2,2,3]6092; AVX512-NEXT: vpshuflw $180, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload6093; AVX512-NEXT: # xmm5 = mem[0,1,3,2,4,5,6,7]6094; AVX512-NEXT: vpshufd {{.*#+}} xmm4 = xmm5[0,1,1,3]6095; AVX512-NEXT: vprold $16, %ymm14, %ymm56096; AVX512-NEXT: vpshufd {{.*#+}} ymm15 = ymm20[1,2,2,3,5,6,6,7]6097; AVX512-NEXT: vpblendw {{.*#+}} ymm5 = ymm15[0,1],ymm5[2],ymm15[3,4],ymm5[5],ymm15[6,7,8,9],ymm5[10],ymm15[11,12],ymm5[13],ymm15[14,15]6098; AVX512-NEXT: vinserti64x4 $1, %ymm29, %zmm28, %zmm156099; AVX512-NEXT: vinserti64x4 $1, %ymm31, %zmm30, %zmm286100; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm29 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]6101; AVX512-NEXT: vpternlogq {{.*#+}} zmm28 = zmm28 ^ (zmm29 & (zmm28 ^ zmm15))6102; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,1,3]6103; AVX512-NEXT: vinserti64x4 $1, %ymm9, %zmm2, %zmm26104; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm06105; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm2 ^ (zmm29 & (zmm0 ^ zmm2))6106; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm10, %zmm1 # 32-byte Folded Reload6107; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm27, %zmm2 # 32-byte Folded Reload6108; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm9 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]6109; AVX512-NEXT: vpternlogq {{.*#+}} zmm2 = zmm1 ^ (zmm9 & (zmm2 ^ zmm1))6110; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm3, %zmm1 # 32-byte Folded Reload6111; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload6112; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = (zmm1 & mem) | zmm36113; AVX512-NEXT: vpshufd $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Folded Reload6114; AVX512-NEXT: # ymm3 = mem[2,3,3,3,6,7,7,7]6115; AVX512-NEXT: vpermq $96, {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Folded Reload6116; AVX512-NEXT: # ymm10 = mem[0,0,2,1]6117; AVX512-NEXT: vpshuflw $230, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload6118; AVX512-NEXT: # xmm15 = mem[2,1,2,3,4,5,6,7]6119; AVX512-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,5,4]6120; AVX512-NEXT: vpermq {{.*#+}} ymm15 = ymm15[0,0,1,3]6121; AVX512-NEXT: vpermq $80, {{[-0-9]+}}(%r{{[sb]}}p), %ymm17 # 32-byte Folded Reload6122; AVX512-NEXT: # ymm17 = mem[0,0,1,1]6123; AVX512-NEXT: vpshuflw $248, {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Folded Reload6124; AVX512-NEXT: # xmm14 = mem[0,2,3,3,4,5,6,7]6125; AVX512-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,2,1]6126; AVX512-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %ymm18 # 32-byte Folded Reload6127; AVX512-NEXT: # ymm18 = mem[2,2,2,3]6128; AVX512-NEXT: vpermq $182, {{[-0-9]+}}(%r{{[sb]}}p), %ymm20 # 32-byte Folded Reload6129; AVX512-NEXT: # ymm20 = mem[2,1,3,2]6130; AVX512-NEXT: vpermq $250, {{[-0-9]+}}(%r{{[sb]}}p), %ymm26 # 32-byte Folded Reload6131; AVX512-NEXT: # ymm26 = mem[2,2,3,3]6132; AVX512-NEXT: vpermq {{.*#+}} ymm27 = ymm23[0,0,1,1]6133; AVX512-NEXT: vpermq {{.*#+}} ymm29 = ymm22[0,0,2,1]6134; AVX512-NEXT: vpermq {{.*#+}} ymm30 = ymm21[2,1,3,2]6135; AVX512-NEXT: vpermq {{.*#+}} ymm31 = ymm16[2,2,2,3]6136; AVX512-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,2,2,3]6137; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,2,2,3]6138; AVX512-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,3,3]6139; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,1,3,2]6140; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm2))6141; AVX512-NEXT: vinserti64x4 $1, %ymm6, %zmm8, %zmm26142; AVX512-NEXT: vmovdqa64 (%rax), %zmm66143; AVX512-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm28))6144; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm8 = [0,13,0,0,0,14,0,0,14,0,0,0,15,0,0,15]6145; AVX512-NEXT: vpermd %zmm6, %zmm8, %zmm86146; AVX512-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 ^ (mem & (zmm8 ^ zmm2))6147; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm4[0,0,0,1]6148; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm7, %zmm26149; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,1,3,2]6150; AVX512-NEXT: vpbroadcastd 32(%rax), %ymm46151; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm36152; AVX512-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm2))6153; AVX512-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm0))6154; AVX512-NEXT: vinserti64x4 $1, %ymm15, %zmm10, %zmm06155; AVX512-NEXT: vinserti64x4 $1, %ymm14, %zmm17, %zmm26156; AVX512-NEXT: vpternlogq {{.*#+}} zmm2 = zmm0 ^ (zmm9 & (zmm2 ^ zmm0))6157; AVX512-NEXT: vpbroadcastd 36(%rax), %ymm06158; AVX512-NEXT: vpbroadcastd 40(%rax), %ymm46159; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm06160; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload6161; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm4))6162; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm2))6163; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload6164; AVX512-NEXT: vinserti64x4 $1, %ymm18, %zmm2, %zmm26165; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload6166; AVX512-NEXT: vinserti64x4 $1, %ymm20, %zmm4, %zmm46167; AVX512-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm2))6168; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload6169; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm2 = zmm2[0,1,2,3],zmm26[0,1,2,3]6170; AVX512-NEXT: vpternlogq {{.*#+}} zmm19 = zmm19 | (zmm2 & mem)6171; AVX512-NEXT: vpternlogq {{.*#+}} zmm19 = zmm19 ^ (mem & (zmm19 ^ zmm4))6172; AVX512-NEXT: vinserti64x4 $1, %ymm29, %zmm27, %zmm26173; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload6174; AVX512-NEXT: vpternlogq {{.*#+}} zmm2 = zmm4 ^ (mem & (zmm2 ^ zmm4))6175; AVX512-NEXT: vpbroadcastd (%rax), %ymm46176; AVX512-NEXT: vpbroadcastd 4(%rax), %ymm76177; AVX512-NEXT: vinserti64x4 $1, %ymm7, %zmm4, %zmm46178; AVX512-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm24))6179; AVX512-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm2))6180; AVX512-NEXT: vinserti64x4 $1, %ymm31, %zmm30, %zmm26181; AVX512-NEXT: vinserti64x4 $1, %ymm12, %zmm13, %zmm76182; AVX512-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 ^ (mem & (zmm7 ^ zmm2))6183; AVX512-NEXT: vinserti64x4 $1, %ymm5, %zmm11, %zmm26184; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm5 = [0,0,4,0,0,0,5,0,0,5,0,0,0,6,0,0]6185; AVX512-NEXT: vpermd %zmm6, %zmm5, %zmm56186; AVX512-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 ^ (mem & (zmm5 ^ zmm2))6187; AVX512-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 ^ (mem & (zmm5 ^ zmm7))6188; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax6189; AVX512-NEXT: vmovdqa64 %zmm5, 128(%rax)6190; AVX512-NEXT: vmovdqa64 %zmm4, (%rax)6191; AVX512-NEXT: vmovdqa64 %zmm19, 320(%rax)6192; AVX512-NEXT: vmovdqa64 %zmm0, 256(%rax)6193; AVX512-NEXT: vmovdqa64 %zmm3, 192(%rax)6194; AVX512-NEXT: vmovdqa64 %zmm1, 64(%rax)6195; AVX512-NEXT: vmovdqa64 %zmm8, 384(%rax)6196; AVX512-NEXT: addq $664, %rsp # imm = 0x2986197; AVX512-NEXT: vzeroupper6198; AVX512-NEXT: retq6199;6200; AVX512-FCP-LABEL: store_i16_stride7_vf32:6201; AVX512-FCP: # %bb.0:6202; AVX512-FCP-NEXT: subq $296, %rsp # imm = 0x1286203; AVX512-FCP-NEXT: vmovdqa (%rcx), %ymm96204; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128]6205; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm9, %ymm26206; AVX512-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6207; AVX512-FCP-NEXT: vmovdqa (%rdx), %ymm46208; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u]6209; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm36210; AVX512-FCP-NEXT: vmovdqa64 %ymm4, %ymm176211; AVX512-FCP-NEXT: vpor %ymm2, %ymm3, %ymm26212; AVX512-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6213; AVX512-FCP-NEXT: vmovdqa (%rsi), %ymm86214; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %ymm136215; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm2 = [128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128,128,128,128,128]6216; AVX512-FCP-NEXT: vpshufb %ymm2, %ymm8, %ymm36217; AVX512-FCP-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6218; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm106219; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u,16,17,18,19]6220; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm10, %ymm56221; AVX512-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6222; AVX512-FCP-NEXT: vpor %ymm3, %ymm5, %ymm36223; AVX512-FCP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6224; AVX512-FCP-NEXT: vmovdqa (%r9), %ymm156225; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm5 = [128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128]6226; AVX512-FCP-NEXT: vpshufb %ymm5, %ymm15, %ymm36227; AVX512-FCP-NEXT: vmovdqa (%r8), %ymm116228; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [u,u,u,u,u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u]6229; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm11, %ymm76230; AVX512-FCP-NEXT: vpor %ymm3, %ymm7, %ymm36231; AVX512-FCP-NEXT: vmovdqu %ymm3, (%rsp) # 32-byte Spill6232; AVX512-FCP-NEXT: vpshufb %ymm2, %ymm13, %ymm26233; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %ymm126234; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm12, %ymm36235; AVX512-FCP-NEXT: vpor %ymm2, %ymm3, %ymm26236; AVX512-FCP-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6237; AVX512-FCP-NEXT: vmovdqa 32(%rcx), %ymm76238; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm7, %ymm06239; AVX512-FCP-NEXT: vmovdqa 32(%rdx), %ymm146240; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm14, %ymm16241; AVX512-FCP-NEXT: vpor %ymm0, %ymm1, %ymm06242; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6243; AVX512-FCP-NEXT: vmovdqa 32(%r9), %ymm16244; AVX512-FCP-NEXT: vpshufb %ymm5, %ymm1, %ymm06245; AVX512-FCP-NEXT: vmovdqa64 %ymm1, %ymm226246; AVX512-FCP-NEXT: vmovdqa 32(%r8), %ymm26247; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm16248; AVX512-FCP-NEXT: vmovdqa64 %ymm2, %ymm166249; AVX512-FCP-NEXT: vpor %ymm0, %ymm1, %ymm06250; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6251; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]6252; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm13, %ymm16253; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm12[3,3,3,3,7,7,7,7]6254; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8,9,10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]6255; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm13[10,11,8,9,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,u,u,u,u,26,27,24,25,u,u,u,u]6256; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm12[2,2,2,2,6,6,6,6]6257; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5,6,7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13,14,15]6258; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm24 = [0,2,2,3,10,0,11,0]6259; AVX512-FCP-NEXT: vpermi2q %zmm1, %zmm2, %zmm246260; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm9[14,15,12,13,u,u,u,u,u,u,u,u,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29,u,u,u,u]6261; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm17[3,3,3,3,7,7,7,7]6262; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]6263; AVX512-FCP-NEXT: vmovdqa 32(%rcx), %xmm36264; AVX512-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6265; AVX512-FCP-NEXT: vmovdqa 32(%rdx), %xmm26266; AVX512-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6267; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]6268; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,2,3,0,1,2,3,6,7,4,5,6,7,4,5]6269; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm26270; AVX512-FCP-NEXT: vmovdqa64 %xmm3, %xmm276271; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm25 = [0,2,2,3,8,0,9,0]6272; AVX512-FCP-NEXT: vpermi2q %zmm2, %zmm1, %zmm256273; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm8, %ymm06274; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm10[3,3,3,3,7,7,7,7]6275; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1,2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8,9,10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]6276; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %xmm46277; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm9 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]6278; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %xmm06279; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3]6280; AVX512-FCP-NEXT: vpshufb %xmm9, %xmm2, %xmm26281; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm21 = [2,1,3,3,8,8,9,9]6282; AVX512-FCP-NEXT: vpermi2q %zmm2, %zmm1, %zmm216283; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm15[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,28,29,26,27,28,29,26,27,28,29,30,31,30,31]6284; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm11[3,3,3,3,7,7,7,7]6285; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]6286; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm23 = [2,2,2,3,0,8,8,9]6287; AVX512-FCP-NEXT: vmovdqa 32(%r9), %xmm36288; AVX512-FCP-NEXT: vmovdqa 32(%r8), %xmm26289; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]6290; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm6 = [0,1,2,3,6,7,4,5,6,7,4,5,12,13,14,15]6291; AVX512-FCP-NEXT: vpshufb %xmm6, %xmm1, %xmm56292; AVX512-FCP-NEXT: vpermi2q %zmm5, %zmm8, %zmm236293; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm5 = xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]6294; AVX512-FCP-NEXT: vprold $16, %xmm0, %xmm06295; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[1,1,2,3]6296; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm4[0,1],xmm0[2],xmm4[3,4],xmm0[5],xmm4[6,7]6297; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm10 = [4,5,2,3,4,5,6,7,8,9,10,11,10,11,8,9]6298; AVX512-FCP-NEXT: vpshufb %xmm10, %xmm5, %xmm46299; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm26 = [0,0,0,1,8,8,9,0]6300; AVX512-FCP-NEXT: vpermi2q %zmm4, %zmm0, %zmm266301; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]6302; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm4 = [0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]6303; AVX512-FCP-NEXT: vpshufb %xmm4, %xmm1, %xmm16304; AVX512-FCP-NEXT: vpshufb %xmm9, %xmm0, %xmm06305; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm28 = [8,9,9,0,0,0,1,1]6306; AVX512-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm286307; AVX512-FCP-NEXT: vmovdqa (%rcx), %xmm16308; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm06309; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]6310; AVX512-FCP-NEXT: vmovdqa64 %xmm27, %xmm36311; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm26312; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm1[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]6313; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm5 = xmm0[1,1,2,2]6314; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm5[0],xmm3[1],xmm5[2,3],xmm3[4],xmm5[5,6],xmm3[7]6315; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm27 = [8,0,9,0,0,0,1,1]6316; AVX512-FCP-NEXT: vpermi2q %zmm2, %zmm3, %zmm276317; AVX512-FCP-NEXT: vmovdqa (%r9), %xmm56318; AVX512-FCP-NEXT: vmovdqa (%r8), %xmm96319; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm9[0],xmm5[0],xmm9[1],xmm5[1],xmm9[2],xmm5[2],xmm9[3],xmm5[3]6320; AVX512-FCP-NEXT: vpshufb %xmm4, %xmm3, %xmm46321; AVX512-FCP-NEXT: vpshufb %xmm6, %xmm3, %xmm36322; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm29 = [0,0,0,1,8,9,9,0]6323; AVX512-FCP-NEXT: vpermi2q %zmm4, %zmm3, %zmm296324; AVX512-FCP-NEXT: vprold $16, %ymm15, %ymm36325; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm11[1,2,2,3,5,6,6,7]6326; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0,1],ymm3[2],ymm4[3,4],ymm3[5],ymm4[6,7,8,9],ymm3[10],ymm4[11,12],ymm3[13],ymm4[14,15]6327; AVX512-FCP-NEXT: vpbroadcastd {{.*#+}} ymm6 = [18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21]6328; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm15, %ymm46329; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm8 = ymm11[0,0,2,1,4,4,6,5]6330; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1,2],ymm8[3],ymm4[4,5],ymm8[6],ymm4[7,8,9,10],ymm8[11],ymm4[12,13],ymm8[14],ymm4[15]6331; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm31 = [2,2,3,3,10,0,11,10]6332; AVX512-FCP-NEXT: vpermi2q %zmm3, %zmm4, %zmm316333; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]6334; AVX512-FCP-NEXT: vmovdqa64 %xmm0, %xmm206335; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm46336; AVX512-FCP-NEXT: vmovdqa (%rsi), %xmm36337; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]6338; AVX512-FCP-NEXT: vpshufb %xmm10, %xmm1, %xmm06339; AVX512-FCP-NEXT: vmovdqa64 %ymm0, %ymm196340; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax6341; AVX512-FCP-NEXT: vpbroadcastd 8(%rax), %ymm16342; AVX512-FCP-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm16343; AVX512-FCP-NEXT: vmovdqa (%rax), %ymm106344; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm2 = [12,13,128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128]6345; AVX512-FCP-NEXT: vpshufb %ymm2, %ymm10, %ymm86346; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm1, %zmm306347; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm11 = xmm9[4],xmm5[4],xmm9[5],xmm5[5],xmm9[6],xmm5[6],xmm9[7],xmm5[7]6348; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm13[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]6349; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm8 = ymm12[1,1,1,1,5,5,5,5]6350; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm8[2],ymm1[3,4],ymm8[5],ymm1[6,7,8,9],ymm8[10],ymm1[11,12],ymm8[13],ymm1[14,15]6351; AVX512-FCP-NEXT: vmovdqa64 %ymm0, %ymm186352; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} ymm1 = ymm7[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]6353; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm9 = ymm14[0,1,1,3,4,5,5,7]6354; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm1[2],ymm9[3,4],ymm1[5],ymm9[6,7,8,9],ymm1[10],ymm9[11,12],ymm1[13],ymm9[14,15]6355; AVX512-FCP-NEXT: vmovdqa64 %ymm22, %ymm136356; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm13, %ymm16357; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm16[0,0,2,1,4,4,6,5]6358; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1,2],ymm6[3],ymm1[4,5],ymm6[6],ymm1[7,8,9,10],ymm6[11],ymm1[12,13],ymm6[14],ymm1[15]6359; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm9 = [0,1,0,3,10,10,11,11]6360; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload6361; AVX512-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm96362; AVX512-FCP-NEXT: vmovdqa 32(%rax), %ymm16363; AVX512-FCP-NEXT: vpshufb %ymm2, %ymm1, %ymm26364; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm22 = [0,0,4,0,0,0,5,0,0,5,0,0,0,6,0,0]6365; AVX512-FCP-NEXT: vpermd %ymm1, %ymm22, %ymm16366; AVX512-FCP-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm16367; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm16368; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm7[14,15,12,13,u,u,u,u,u,u,u,u,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29,u,u,u,u]6369; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm14[3,3,3,3,7,7,7,7]6370; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm6[0],ymm2[1],ymm6[2,3],ymm2[4],ymm6[5,6,7,8],ymm2[9],ymm6[10,11],ymm2[12],ymm6[13,14,15]6371; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm6 = [22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27,22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27]6372; AVX512-FCP-NEXT: # ymm6 = mem[0,1,0,1]6373; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm7, %ymm06374; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm12 = ymm14[2,2,2,2,6,6,6,6]6375; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm0[0,1],ymm12[2],ymm0[3,4],ymm12[5],ymm0[6,7,8,9],ymm12[10],ymm0[11,12],ymm12[13],ymm0[14,15]6376; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm13[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,28,29,26,27,28,29,26,27,28,29,30,31,30,31]6377; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm7 = ymm16[3,3,3,3,7,7,7,7]6378; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm0[0,1],ymm7[2],ymm0[3,4],ymm7[5],ymm0[6,7,8,9],ymm7[10],ymm0[11,12],ymm7[13],ymm0[14,15]6379; AVX512-FCP-NEXT: vprold $16, %ymm13, %ymm76380; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm14 = ymm16[1,2,2,3,5,6,6,7]6381; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm14 = ymm14[0,1],ymm7[2],ymm14[3,4],ymm7[5],ymm14[6,7,8,9],ymm7[10],ymm14[11,12],ymm7[13],ymm14[14,15]6382; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload6383; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm0[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]6384; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload6385; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm13[4],xmm0[4],xmm13[5],xmm0[5],xmm13[6],xmm0[6],xmm13[7],xmm0[7]6386; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm15 = xmm13[1,1,2,2]6387; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm15[0],xmm7[1],xmm15[2,3],xmm7[4],xmm15[5,6],xmm7[7]6388; AVX512-FCP-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]6389; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm15 = [0,0,1,1,8,8,0,9]6390; AVX512-FCP-NEXT: vpermt2q %zmm0, %zmm15, %zmm76391; AVX512-FCP-NEXT: vprold $16, %xmm3, %xmm06392; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm13 = xmm4[1,1,2,3]6393; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm13[0,1],xmm0[2],xmm13[3,4],xmm0[5],xmm13[6,7]6394; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]6395; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm13 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]6396; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm11, %xmm46397; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm3, %xmm116398; AVX512-FCP-NEXT: vpermt2q %zmm0, %zmm15, %zmm116399; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm0 = [2,1,3,2,10,10,10,11]6400; AVX512-FCP-NEXT: vpermt2q %zmm2, %zmm0, %zmm146401; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload6402; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm13, %ymm26403; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm17[2,2,2,2,6,6,6,6]6404; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm3[2],ymm2[3,4],ymm3[5],ymm2[6,7,8,9],ymm3[10],ymm2[11,12],ymm3[13],ymm2[14,15]6405; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} ymm3 = ymm13[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]6406; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm17[0,1,1,3,4,5,5,7]6407; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm6[0,1],ymm3[2],ymm6[3,4],ymm3[5],ymm6[6,7,8,9],ymm3[10],ymm6[11,12],ymm3[13],ymm6[14,15]6408; AVX512-FCP-NEXT: vpermt2q %zmm2, %zmm0, %zmm36409; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm16 = [2,2,2,3,8,10,10,11]6410; AVX512-FCP-NEXT: vpermt2q %zmm5, %zmm16, %zmm126411; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm17 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]6412; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm12 = zmm24 ^ (zmm17 & (zmm12 ^ zmm24))6413; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (mem & (zmm14 ^ zmm12))6414; AVX512-FCP-NEXT: vmovdqa64 (%rax), %zmm56415; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [0,13,0,0,0,14,0,0,14,0,0,0,15,0,0,15]6416; AVX512-FCP-NEXT: vpermd %zmm5, %zmm6, %zmm66417; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm14))6418; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm12 = [6,0,0,0,7,0,0,7]6419; AVX512-FCP-NEXT: vpermd %ymm10, %ymm12, %ymm106420; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm12 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]6421; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm26 ^ (zmm12 & (zmm7 ^ zmm26))6422; AVX512-FCP-NEXT: vpbroadcastd 36(%rax), %ymm136423; AVX512-FCP-NEXT: vpbroadcastd 40(%rax), %ymm146424; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm14, %zmm13, %zmm136425; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (mem & (zmm13 ^ zmm28))6426; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (mem & (zmm13 ^ zmm7))6427; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm27 = zmm27 ^ (mem & (zmm27 ^ zmm11))6428; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6429; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm0[10,11,8,9,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,u,u,u,u,26,27,24,25,u,u,u,u]6430; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm24 # 32-byte Reload6431; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm11 = ymm24[2,2,2,2,6,6,6,6]6432; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm11[0],ymm7[1],ymm11[2,3],ymm7[4],ymm11[5,6,7,8],ymm7[9],ymm11[10,11],ymm7[12],ymm11[13,14,15]6433; AVX512-FCP-NEXT: vmovdqa64 %xmm20, %xmm26434; AVX512-FCP-NEXT: vpshuflw {{.*#+}} xmm11 = xmm2[0,2,3,3,4,5,6,7]6435; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,2,1]6436; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm14 = ymm19[0,0,1,3]6437; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]6438; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm15 = ymm18[2,2,2,3]6439; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,1,3,2]6440; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]6441; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm24[1,1,1,1,5,5,5,5]6442; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm2[2],ymm0[3,4],ymm2[5],ymm0[6,7,8,9],ymm2[10],ymm0[11,12],ymm2[13],ymm0[14,15]6443; AVX512-FCP-NEXT: vpermt2q %zmm7, %zmm16, %zmm06444; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm3))6445; AVX512-FCP-NEXT: vpermd %zmm5, %zmm22, %zmm26446; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm31))6447; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm0))6448; AVX512-FCP-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm11, %zmm0 # 32-byte Folded Reload6449; AVX512-FCP-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm14, %zmm3 # 32-byte Folded Reload6450; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm0 ^ (zmm12 & (zmm3 ^ zmm0))6451; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm21 = zmm25 ^ (zmm17 & (zmm21 ^ zmm25))6452; AVX512-FCP-NEXT: vinserti64x4 $1, (%rsp), %zmm4, %zmm0 # 32-byte Folded Reload6453; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = (zmm0 & mem) | zmm306454; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm3))6455; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload6456; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm15, %zmm3, %zmm36457; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload6458; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm4, %zmm46459; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm3))6460; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 | (zmm9 & mem)6461; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm4))6462; AVX512-FCP-NEXT: vpbroadcastd 32(%rax), %ymm36463; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm10, %zmm36464; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm23))6465; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm21))6466; AVX512-FCP-NEXT: vpbroadcastd (%rax), %ymm46467; AVX512-FCP-NEXT: vpbroadcastd 4(%rax), %ymm56468; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm46469; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm29))6470; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm27))6471; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax6472; AVX512-FCP-NEXT: vmovdqa64 %zmm2, 128(%rax)6473; AVX512-FCP-NEXT: vmovdqa64 %zmm4, (%rax)6474; AVX512-FCP-NEXT: vmovdqa64 %zmm1, 320(%rax)6475; AVX512-FCP-NEXT: vmovdqa64 %zmm13, 256(%rax)6476; AVX512-FCP-NEXT: vmovdqa64 %zmm3, 192(%rax)6477; AVX512-FCP-NEXT: vmovdqa64 %zmm6, 384(%rax)6478; AVX512-FCP-NEXT: vmovdqa64 %zmm0, 64(%rax)6479; AVX512-FCP-NEXT: addq $296, %rsp # imm = 0x1286480; AVX512-FCP-NEXT: vzeroupper6481; AVX512-FCP-NEXT: retq6482;6483; AVX512DQ-LABEL: store_i16_stride7_vf32:6484; AVX512DQ: # %bb.0:6485; AVX512DQ-NEXT: subq $664, %rsp # imm = 0x2986486; AVX512DQ-NEXT: vmovdqa (%rcx), %ymm96487; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm13 = [128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128]6488; AVX512DQ-NEXT: vpshufb %ymm13, %ymm9, %ymm06489; AVX512DQ-NEXT: vmovdqa (%rdx), %ymm26490; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm14 = [u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u]6491; AVX512DQ-NEXT: vpshufb %ymm14, %ymm2, %ymm16492; AVX512DQ-NEXT: vmovdqa64 %ymm2, %ymm216493; AVX512DQ-NEXT: vpor %ymm0, %ymm1, %ymm06494; AVX512DQ-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6495; AVX512DQ-NEXT: vmovdqa (%rsi), %ymm116496; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm12 = [128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128,128,128,128,128]6497; AVX512DQ-NEXT: vpshufb %ymm12, %ymm11, %ymm06498; AVX512DQ-NEXT: vmovdqa64 %ymm11, %ymm176499; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm26500; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm15 = [12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u,16,17,18,19]6501; AVX512DQ-NEXT: vpshufb %ymm15, %ymm2, %ymm16502; AVX512DQ-NEXT: vmovdqa64 %ymm2, %ymm266503; AVX512DQ-NEXT: vpor %ymm0, %ymm1, %ymm06504; AVX512DQ-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6505; AVX512DQ-NEXT: vmovdqa (%r9), %ymm16506; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128]6507; AVX512DQ-NEXT: vpshufb %ymm0, %ymm1, %ymm26508; AVX512DQ-NEXT: vmovdqa64 %ymm1, %ymm196509; AVX512DQ-NEXT: vmovdqa (%r8), %ymm46510; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm1 = [u,u,u,u,u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u]6511; AVX512DQ-NEXT: vpshufb %ymm1, %ymm4, %ymm36512; AVX512DQ-NEXT: vmovdqa64 %ymm4, %ymm206513; AVX512DQ-NEXT: vpor %ymm2, %ymm3, %ymm26514; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6515; AVX512DQ-NEXT: vmovdqa 32(%r9), %xmm26516; AVX512DQ-NEXT: vmovdqa 32(%r8), %xmm106517; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm10[0],xmm2[0],xmm10[1],xmm2[1],xmm10[2],xmm2[2],xmm10[3],xmm2[3]6518; AVX512DQ-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6519; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm10[4],xmm2[4],xmm10[5],xmm2[5],xmm10[6],xmm2[6],xmm10[7],xmm2[7]6520; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,7,6]6521; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]6522; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,18,19,0,19,19,0,0,0,1,0,1,2,0,0,3]6523; AVX512DQ-NEXT: vpermi2d %zmm3, %zmm2, %zmm46524; AVX512DQ-NEXT: vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6525; AVX512DQ-NEXT: vmovdqa 32(%rdi), %ymm26526; AVX512DQ-NEXT: vmovdqa 32(%rsi), %ymm116527; AVX512DQ-NEXT: vpshufb %ymm12, %ymm11, %ymm36528; AVX512DQ-NEXT: vpshufb %ymm15, %ymm2, %ymm46529; AVX512DQ-NEXT: vpor %ymm3, %ymm4, %ymm36530; AVX512DQ-NEXT: vmovdqu64 %zmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6531; AVX512DQ-NEXT: vmovdqa 32(%rcx), %ymm126532; AVX512DQ-NEXT: vmovdqa 32(%rdx), %ymm156533; AVX512DQ-NEXT: vpshufb %ymm13, %ymm12, %ymm36534; AVX512DQ-NEXT: vpshufb %ymm14, %ymm15, %ymm46535; AVX512DQ-NEXT: vpor %ymm3, %ymm4, %ymm36536; AVX512DQ-NEXT: vmovdqu64 %zmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6537; AVX512DQ-NEXT: vmovdqa 32(%r9), %ymm136538; AVX512DQ-NEXT: vmovdqa 32(%r8), %ymm146539; AVX512DQ-NEXT: vpshufb %ymm0, %ymm13, %ymm06540; AVX512DQ-NEXT: vpshufb %ymm1, %ymm14, %ymm16541; AVX512DQ-NEXT: vpor %ymm0, %ymm1, %ymm06542; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6543; AVX512DQ-NEXT: vmovdqa (%rcx), %xmm06544; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm36545; AVX512DQ-NEXT: vpbroadcastq {{.*#+}} xmm1 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]6546; AVX512DQ-NEXT: vpshufb %xmm1, %xmm0, %xmm46547; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm5 = xmm3[1,1,2,2]6548; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0],xmm4[1],xmm5[2,3],xmm4[4],xmm5[5,6],xmm4[7]6549; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]6550; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,3,2,4,5,6,7]6551; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm6 = [0,16,0,0,17,17,0,0,0,0,0,1,2,0,0,3]6552; AVX512DQ-NEXT: vpermi2d %zmm5, %zmm4, %zmm66553; AVX512DQ-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6554; AVX512DQ-NEXT: vmovdqa (%r9), %xmm46555; AVX512DQ-NEXT: vmovdqa (%r8), %xmm56556; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]6557; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm7 = xmm6[0,1,2,3,4,5,7,6]6558; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,1,3,2,4,5,6,7]6559; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm24 = [0,0,0,1,0,1,1,0,0,18,19,0,19,19,0,0]6560; AVX512DQ-NEXT: vpermi2d %zmm7, %zmm6, %zmm246561; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]6562; AVX512DQ-NEXT: vmovdqa64 %xmm0, %xmm276563; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax6564; AVX512DQ-NEXT: vpbroadcastd 8(%rax), %ymm06565; AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm06566; AVX512DQ-NEXT: vmovdqa (%rax), %ymm66567; AVX512DQ-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6568; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm3 = [12,13,128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128]6569; AVX512DQ-NEXT: vpshufb %ymm3, %ymm6, %ymm66570; AVX512DQ-NEXT: vinserti64x4 $1, %ymm6, %zmm0, %zmm06571; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6572; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]6573; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = ymm12[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]6574; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm15[2,2,2,2,6,6,6,6]6575; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm5[2],ymm4[3,4],ymm5[5],ymm4[6,7,8,9],ymm5[10],ymm4[11,12],ymm5[13],ymm4[14,15]6576; AVX512DQ-NEXT: vmovdqa64 %ymm4, %ymm286577; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm4 = ymm12[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]6578; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]6579; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm15[3,3,3,3,7,7,7,7]6580; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm8 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5,6,7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13,14,15]6581; AVX512DQ-NEXT: vmovdqa64 %ymm8, %ymm296582; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm4 = ymm11[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]6583; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]6584; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm2[2,2,2,2,6,6,6,6]6585; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5,6,7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13,14,15]6586; AVX512DQ-NEXT: vmovdqa64 %ymm4, %ymm306587; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm4 = ymm11[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]6588; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]6589; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm2[3,3,3,3,7,7,7,7]6590; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1,2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8,9,10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]6591; AVX512DQ-NEXT: vmovdqa64 %ymm4, %ymm316592; AVX512DQ-NEXT: vprold $16, %ymm13, %ymm46593; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm14[1,2,2,3,5,6,6,7]6594; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1],ymm4[2],ymm5[3,4],ymm4[5],ymm5[6,7,8,9],ymm4[10],ymm5[11,12],ymm4[13],ymm5[14,15]6595; AVX512DQ-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6596; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm4 = ymm13[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]6597; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,3,6,6,6,7]6598; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm14[3,3,3,3,7,7,7,7]6599; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm5[2],ymm4[3,4],ymm5[5],ymm4[6,7,8,9],ymm5[10],ymm4[11,12],ymm5[13],ymm4[14,15]6600; AVX512DQ-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6601; AVX512DQ-NEXT: vmovdqa %ymm9, %ymm86602; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm4 = ymm9[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]6603; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]6604; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm21[3,3,3,3,7,7,7,7]6605; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5,6,7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13,14,15]6606; AVX512DQ-NEXT: vmovdqa64 %ymm4, %ymm256607; AVX512DQ-NEXT: vmovdqa64 %ymm17, %ymm96608; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm4 = ymm9[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]6609; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]6610; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm26[3,3,3,3,7,7,7,7]6611; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1,2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8,9,10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]6612; AVX512DQ-NEXT: vmovdqa64 %ymm4, %ymm186613; AVX512DQ-NEXT: vmovdqa64 %ymm19, %ymm106614; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm4 = ymm10[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]6615; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,3,6,6,6,7]6616; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm20[3,3,3,3,7,7,7,7]6617; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm5[2],ymm4[3,4],ymm5[5],ymm4[6,7,8,9],ymm5[10],ymm4[11,12],ymm5[13],ymm4[14,15]6618; AVX512DQ-NEXT: vmovdqa64 %ymm4, %ymm176619; AVX512DQ-NEXT: vmovdqa 32(%rdi), %xmm46620; AVX512DQ-NEXT: vmovdqa 32(%rsi), %xmm56621; AVX512DQ-NEXT: vprold $16, %xmm5, %xmm66622; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm7 = xmm4[1,1,2,3]6623; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm6 = xmm7[0,1],xmm6[2],xmm7[3,4],xmm6[5],xmm7[6,7]6624; AVX512DQ-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6625; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]6626; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]6627; AVX512DQ-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6628; AVX512DQ-NEXT: vmovdqa 32(%rcx), %xmm46629; AVX512DQ-NEXT: vpshufb %xmm1, %xmm4, %xmm16630; AVX512DQ-NEXT: vmovdqa 32(%rdx), %xmm56631; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm7 = xmm5[1,1,2,2]6632; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm1 = xmm7[0],xmm1[1],xmm7[2,3],xmm1[4],xmm7[5,6],xmm1[7]6633; AVX512DQ-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6634; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]6635; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]6636; AVX512DQ-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6637; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm2[1,1,1,1,5,5,5,5]6638; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm2 = ymm11[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]6639; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,2,1,4,4,6,5]6640; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3,4],ymm1[5],ymm2[6,7,8,9],ymm1[10],ymm2[11,12],ymm1[13],ymm2[14,15]6641; AVX512DQ-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6642; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm15[0,1,1,3,4,5,5,7]6643; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm2 = ymm12[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]6644; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,0,0,4,4,4,4]6645; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]6646; AVX512DQ-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6647; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm14[0,0,2,1,4,4,6,5]6648; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm2 = ymm13[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]6649; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,0,0,4,4,4,4]6650; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8,9,10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]6651; AVX512DQ-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6652; AVX512DQ-NEXT: vmovdqa 32(%rax), %ymm16653; AVX512DQ-NEXT: vpshufb %ymm3, %ymm1, %ymm26654; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,1,1,3,4,5,5,7]6655; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]6656; AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm16657; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm196658; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]6659; AVX512DQ-NEXT: vpshufb %xmm3, %xmm0, %xmm16660; AVX512DQ-NEXT: vpshufb %xmm3, %xmm6, %xmm56661; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm26662; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm46663; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3]6664; AVX512DQ-NEXT: vpshufb %xmm3, %xmm0, %xmm06665; AVX512DQ-NEXT: vmovdqa64 %ymm0, %ymm236666; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7]6667; AVX512DQ-NEXT: vprold $16, %xmm4, %xmm46668; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[1,1,2,3]6669; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm4[2],xmm2[3,4],xmm4[5],xmm2[6,7]6670; AVX512DQ-NEXT: vmovdqa64 %ymm2, %ymm226671; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm2 = ymm8[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]6672; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,0,0,4,4,4,4]6673; AVX512DQ-NEXT: vmovdqa64 %ymm21, %ymm66674; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm21[0,1,1,3,4,5,5,7]6675; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0,1],ymm2[2],ymm4[3,4],ymm2[5],ymm4[6,7,8,9],ymm2[10],ymm4[11,12],ymm2[13],ymm4[14,15]6676; AVX512DQ-NEXT: vmovdqa64 %ymm2, %ymm216677; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm2 = ymm8[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]6678; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm6[2,2,2,2,6,6,6,6]6679; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm4[2],ymm2[3,4],ymm4[5],ymm2[6,7,8,9],ymm4[10],ymm2[11,12],ymm4[13],ymm2[14,15]6680; AVX512DQ-NEXT: vmovdqa64 %ymm2, %ymm166681; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm2 = ymm9[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]6682; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,2,1,4,4,6,5]6683; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm26[1,1,1,1,5,5,5,5]6684; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm13 = ymm2[0,1],ymm4[2],ymm2[3,4],ymm4[5],ymm2[6,7,8,9],ymm4[10],ymm2[11,12],ymm4[13],ymm2[14,15]6685; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm26[2,2,2,2,6,6,6,6]6686; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm4 = ymm9[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]6687; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]6688; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm12 = ymm2[0],ymm4[1],ymm2[2,3],ymm4[4],ymm2[5,6,7,8],ymm4[9],ymm2[10,11],ymm4[12],ymm2[13,14,15]6689; AVX512DQ-NEXT: vmovdqa %ymm10, %ymm146690; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm2 = ymm10[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]6691; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,0,0,4,4,4,4]6692; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm20[0,0,2,1,4,4,6,5]6693; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm11 = ymm2[0,1,2],ymm10[3],ymm2[4,5],ymm10[6],ymm2[7,8,9,10],ymm10[11],ymm2[12,13],ymm10[14],ymm2[15]6694; AVX512DQ-NEXT: vmovdqa64 %xmm27, %xmm26695; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm10 = xmm2[0,2,3,3,4,5,6,7]6696; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,0,2,1]6697; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,1,2,3,4,5,6,7]6698; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,5,4]6699; AVX512DQ-NEXT: vpermq {{.*#+}} ymm27 = ymm0[0,0,1,3]6700; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm1[0,0,1,1]6701; AVX512DQ-NEXT: vpermq {{.*#+}} ymm28 = ymm28[2,2,2,3]6702; AVX512DQ-NEXT: vpermq {{.*#+}} ymm29 = ymm29[0,2,2,3]6703; AVX512DQ-NEXT: vpermq {{.*#+}} ymm30 = ymm30[0,2,2,3]6704; AVX512DQ-NEXT: vpermq {{.*#+}} ymm31 = ymm31[2,1,3,3]6705; AVX512DQ-NEXT: vpermq $182, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload6706; AVX512DQ-NEXT: # ymm8 = mem[2,1,3,2]6707; AVX512DQ-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload6708; AVX512DQ-NEXT: # ymm6 = mem[2,2,2,3]6709; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm25[0,2,2,3]6710; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm9 = xmm7[0,1,3,2,4,5,6,7]6711; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm9 = xmm9[0,0,1,1]6712; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm18[2,1,3,3]6713; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm5[0,0,1,1]6714; AVX512DQ-NEXT: vpermq {{.*#+}} ymm7 = ymm17[2,2,2,3]6715; AVX512DQ-NEXT: vpshuflw $180, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload6716; AVX512DQ-NEXT: # xmm5 = mem[0,1,3,2,4,5,6,7]6717; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm4 = xmm5[0,1,1,3]6718; AVX512DQ-NEXT: vprold $16, %ymm14, %ymm56719; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm15 = ymm20[1,2,2,3,5,6,6,7]6720; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm5 = ymm15[0,1],ymm5[2],ymm15[3,4],ymm5[5],ymm15[6,7,8,9],ymm5[10],ymm15[11,12],ymm5[13],ymm15[14,15]6721; AVX512DQ-NEXT: vinserti64x4 $1, %ymm29, %zmm28, %zmm156722; AVX512DQ-NEXT: vinserti64x4 $1, %ymm31, %zmm30, %zmm286723; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm29 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]6724; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm28 = zmm28 ^ (zmm29 & (zmm28 ^ zmm15))6725; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,1,1,3]6726; AVX512DQ-NEXT: vinserti64x4 $1, %ymm9, %zmm2, %zmm26727; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm06728; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm2 ^ (zmm29 & (zmm0 ^ zmm2))6729; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm10, %zmm1 # 32-byte Folded Reload6730; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm27, %zmm2 # 32-byte Folded Reload6731; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm9 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]6732; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm2 = zmm1 ^ (zmm9 & (zmm2 ^ zmm1))6733; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm3, %zmm1 # 32-byte Folded Reload6734; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload6735; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = (zmm1 & mem) | zmm36736; AVX512DQ-NEXT: vpshufd $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Folded Reload6737; AVX512DQ-NEXT: # ymm3 = mem[2,3,3,3,6,7,7,7]6738; AVX512DQ-NEXT: vpermq $96, {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Folded Reload6739; AVX512DQ-NEXT: # ymm10 = mem[0,0,2,1]6740; AVX512DQ-NEXT: vpshuflw $230, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload6741; AVX512DQ-NEXT: # xmm15 = mem[2,1,2,3,4,5,6,7]6742; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,5,4]6743; AVX512DQ-NEXT: vpermq {{.*#+}} ymm15 = ymm15[0,0,1,3]6744; AVX512DQ-NEXT: vpermq $80, {{[-0-9]+}}(%r{{[sb]}}p), %ymm17 # 32-byte Folded Reload6745; AVX512DQ-NEXT: # ymm17 = mem[0,0,1,1]6746; AVX512DQ-NEXT: vpshuflw $248, {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Folded Reload6747; AVX512DQ-NEXT: # xmm14 = mem[0,2,3,3,4,5,6,7]6748; AVX512DQ-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,2,1]6749; AVX512DQ-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %ymm18 # 32-byte Folded Reload6750; AVX512DQ-NEXT: # ymm18 = mem[2,2,2,3]6751; AVX512DQ-NEXT: vpermq $182, {{[-0-9]+}}(%r{{[sb]}}p), %ymm20 # 32-byte Folded Reload6752; AVX512DQ-NEXT: # ymm20 = mem[2,1,3,2]6753; AVX512DQ-NEXT: vpermq $250, {{[-0-9]+}}(%r{{[sb]}}p), %ymm26 # 32-byte Folded Reload6754; AVX512DQ-NEXT: # ymm26 = mem[2,2,3,3]6755; AVX512DQ-NEXT: vpermq {{.*#+}} ymm27 = ymm23[0,0,1,1]6756; AVX512DQ-NEXT: vpermq {{.*#+}} ymm29 = ymm22[0,0,2,1]6757; AVX512DQ-NEXT: vpermq {{.*#+}} ymm30 = ymm21[2,1,3,2]6758; AVX512DQ-NEXT: vpermq {{.*#+}} ymm31 = ymm16[2,2,2,3]6759; AVX512DQ-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,2,2,3]6760; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,2,2,3]6761; AVX512DQ-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,3,3]6762; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,1,3,2]6763; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm2))6764; AVX512DQ-NEXT: vinserti64x4 $1, %ymm6, %zmm8, %zmm26765; AVX512DQ-NEXT: vmovdqa64 (%rax), %zmm66766; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm28))6767; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm8 = [0,13,0,0,0,14,0,0,14,0,0,0,15,0,0,15]6768; AVX512DQ-NEXT: vpermd %zmm6, %zmm8, %zmm86769; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 ^ (mem & (zmm8 ^ zmm2))6770; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm4[0,0,0,1]6771; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm7, %zmm26772; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,1,3,2]6773; AVX512DQ-NEXT: vpbroadcastd 32(%rax), %ymm46774; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm36775; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm2))6776; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm0))6777; AVX512DQ-NEXT: vinserti64x4 $1, %ymm15, %zmm10, %zmm06778; AVX512DQ-NEXT: vinserti64x4 $1, %ymm14, %zmm17, %zmm26779; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm2 = zmm0 ^ (zmm9 & (zmm2 ^ zmm0))6780; AVX512DQ-NEXT: vpbroadcastd 36(%rax), %ymm06781; AVX512DQ-NEXT: vpbroadcastd 40(%rax), %ymm46782; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm06783; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload6784; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm4))6785; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm2))6786; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload6787; AVX512DQ-NEXT: vinserti64x4 $1, %ymm18, %zmm2, %zmm26788; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload6789; AVX512DQ-NEXT: vinserti64x4 $1, %ymm20, %zmm4, %zmm46790; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm2))6791; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload6792; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm2 = zmm2[0,1,2,3],zmm26[0,1,2,3]6793; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm19 = zmm19 | (zmm2 & mem)6794; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm19 = zmm19 ^ (mem & (zmm19 ^ zmm4))6795; AVX512DQ-NEXT: vinserti64x4 $1, %ymm29, %zmm27, %zmm26796; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload6797; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm2 = zmm4 ^ (mem & (zmm2 ^ zmm4))6798; AVX512DQ-NEXT: vpbroadcastd (%rax), %ymm46799; AVX512DQ-NEXT: vpbroadcastd 4(%rax), %ymm76800; AVX512DQ-NEXT: vinserti64x4 $1, %ymm7, %zmm4, %zmm46801; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm24))6802; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm2))6803; AVX512DQ-NEXT: vinserti64x4 $1, %ymm31, %zmm30, %zmm26804; AVX512DQ-NEXT: vinserti64x4 $1, %ymm12, %zmm13, %zmm76805; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 ^ (mem & (zmm7 ^ zmm2))6806; AVX512DQ-NEXT: vinserti64x4 $1, %ymm5, %zmm11, %zmm26807; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm5 = [0,0,4,0,0,0,5,0,0,5,0,0,0,6,0,0]6808; AVX512DQ-NEXT: vpermd %zmm6, %zmm5, %zmm56809; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 ^ (mem & (zmm5 ^ zmm2))6810; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 ^ (mem & (zmm5 ^ zmm7))6811; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax6812; AVX512DQ-NEXT: vmovdqa64 %zmm5, 128(%rax)6813; AVX512DQ-NEXT: vmovdqa64 %zmm4, (%rax)6814; AVX512DQ-NEXT: vmovdqa64 %zmm19, 320(%rax)6815; AVX512DQ-NEXT: vmovdqa64 %zmm0, 256(%rax)6816; AVX512DQ-NEXT: vmovdqa64 %zmm3, 192(%rax)6817; AVX512DQ-NEXT: vmovdqa64 %zmm1, 64(%rax)6818; AVX512DQ-NEXT: vmovdqa64 %zmm8, 384(%rax)6819; AVX512DQ-NEXT: addq $664, %rsp # imm = 0x2986820; AVX512DQ-NEXT: vzeroupper6821; AVX512DQ-NEXT: retq6822;6823; AVX512DQ-FCP-LABEL: store_i16_stride7_vf32:6824; AVX512DQ-FCP: # %bb.0:6825; AVX512DQ-FCP-NEXT: subq $296, %rsp # imm = 0x1286826; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %ymm96827; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128]6828; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm9, %ymm26829; AVX512DQ-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6830; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %ymm46831; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u]6832; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm36833; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm4, %ymm176834; AVX512DQ-FCP-NEXT: vpor %ymm2, %ymm3, %ymm26835; AVX512DQ-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6836; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %ymm86837; AVX512DQ-FCP-NEXT: vmovdqa 32(%rsi), %ymm136838; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm2 = [128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128,128,128,128,128]6839; AVX512DQ-FCP-NEXT: vpshufb %ymm2, %ymm8, %ymm36840; AVX512DQ-FCP-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6841; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm106842; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u,16,17,18,19]6843; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm10, %ymm56844; AVX512DQ-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6845; AVX512DQ-FCP-NEXT: vpor %ymm3, %ymm5, %ymm36846; AVX512DQ-FCP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6847; AVX512DQ-FCP-NEXT: vmovdqa (%r9), %ymm156848; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm5 = [128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128]6849; AVX512DQ-FCP-NEXT: vpshufb %ymm5, %ymm15, %ymm36850; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %ymm116851; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [u,u,u,u,u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u]6852; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm11, %ymm76853; AVX512DQ-FCP-NEXT: vpor %ymm3, %ymm7, %ymm36854; AVX512DQ-FCP-NEXT: vmovdqu %ymm3, (%rsp) # 32-byte Spill6855; AVX512DQ-FCP-NEXT: vpshufb %ymm2, %ymm13, %ymm26856; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %ymm126857; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm12, %ymm36858; AVX512DQ-FCP-NEXT: vpor %ymm2, %ymm3, %ymm26859; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6860; AVX512DQ-FCP-NEXT: vmovdqa 32(%rcx), %ymm76861; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm7, %ymm06862; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdx), %ymm146863; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm14, %ymm16864; AVX512DQ-FCP-NEXT: vpor %ymm0, %ymm1, %ymm06865; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6866; AVX512DQ-FCP-NEXT: vmovdqa 32(%r9), %ymm16867; AVX512DQ-FCP-NEXT: vpshufb %ymm5, %ymm1, %ymm06868; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm1, %ymm226869; AVX512DQ-FCP-NEXT: vmovdqa 32(%r8), %ymm26870; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm16871; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm2, %ymm166872; AVX512DQ-FCP-NEXT: vpor %ymm0, %ymm1, %ymm06873; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6874; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]6875; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm13, %ymm16876; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm12[3,3,3,3,7,7,7,7]6877; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8,9,10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]6878; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm13[10,11,8,9,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,u,u,u,u,26,27,24,25,u,u,u,u]6879; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm12[2,2,2,2,6,6,6,6]6880; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5,6,7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13,14,15]6881; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm24 = [0,2,2,3,10,0,11,0]6882; AVX512DQ-FCP-NEXT: vpermi2q %zmm1, %zmm2, %zmm246883; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm9[14,15,12,13,u,u,u,u,u,u,u,u,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29,u,u,u,u]6884; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm17[3,3,3,3,7,7,7,7]6885; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]6886; AVX512DQ-FCP-NEXT: vmovdqa 32(%rcx), %xmm36887; AVX512DQ-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6888; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdx), %xmm26889; AVX512DQ-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6890; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]6891; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,2,3,0,1,2,3,6,7,4,5,6,7,4,5]6892; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm26893; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm3, %xmm276894; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm25 = [0,2,2,3,8,0,9,0]6895; AVX512DQ-FCP-NEXT: vpermi2q %zmm2, %zmm1, %zmm256896; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm8, %ymm06897; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm10[3,3,3,3,7,7,7,7]6898; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1,2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8,9,10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]6899; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %xmm46900; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm9 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]6901; AVX512DQ-FCP-NEXT: vmovdqa 32(%rsi), %xmm06902; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3]6903; AVX512DQ-FCP-NEXT: vpshufb %xmm9, %xmm2, %xmm26904; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm21 = [2,1,3,3,8,8,9,9]6905; AVX512DQ-FCP-NEXT: vpermi2q %zmm2, %zmm1, %zmm216906; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm15[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,28,29,26,27,28,29,26,27,28,29,30,31,30,31]6907; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm11[3,3,3,3,7,7,7,7]6908; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]6909; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm23 = [2,2,2,3,0,8,8,9]6910; AVX512DQ-FCP-NEXT: vmovdqa 32(%r9), %xmm36911; AVX512DQ-FCP-NEXT: vmovdqa 32(%r8), %xmm26912; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]6913; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm6 = [0,1,2,3,6,7,4,5,6,7,4,5,12,13,14,15]6914; AVX512DQ-FCP-NEXT: vpshufb %xmm6, %xmm1, %xmm56915; AVX512DQ-FCP-NEXT: vpermi2q %zmm5, %zmm8, %zmm236916; AVX512DQ-FCP-NEXT: vpunpckhwd {{.*#+}} xmm5 = xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]6917; AVX512DQ-FCP-NEXT: vprold $16, %xmm0, %xmm06918; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[1,1,2,3]6919; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm4[0,1],xmm0[2],xmm4[3,4],xmm0[5],xmm4[6,7]6920; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm10 = [4,5,2,3,4,5,6,7,8,9,10,11,10,11,8,9]6921; AVX512DQ-FCP-NEXT: vpshufb %xmm10, %xmm5, %xmm46922; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm26 = [0,0,0,1,8,8,9,0]6923; AVX512DQ-FCP-NEXT: vpermi2q %zmm4, %zmm0, %zmm266924; AVX512DQ-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]6925; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm4 = [0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]6926; AVX512DQ-FCP-NEXT: vpshufb %xmm4, %xmm1, %xmm16927; AVX512DQ-FCP-NEXT: vpshufb %xmm9, %xmm0, %xmm06928; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm28 = [8,9,9,0,0,0,1,1]6929; AVX512DQ-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm286930; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %xmm16931; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm06932; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]6933; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm27, %xmm36934; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm26935; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm1[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]6936; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm5 = xmm0[1,1,2,2]6937; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm5[0],xmm3[1],xmm5[2,3],xmm3[4],xmm5[5,6],xmm3[7]6938; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm27 = [8,0,9,0,0,0,1,1]6939; AVX512DQ-FCP-NEXT: vpermi2q %zmm2, %zmm3, %zmm276940; AVX512DQ-FCP-NEXT: vmovdqa (%r9), %xmm56941; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %xmm96942; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm9[0],xmm5[0],xmm9[1],xmm5[1],xmm9[2],xmm5[2],xmm9[3],xmm5[3]6943; AVX512DQ-FCP-NEXT: vpshufb %xmm4, %xmm3, %xmm46944; AVX512DQ-FCP-NEXT: vpshufb %xmm6, %xmm3, %xmm36945; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm29 = [0,0,0,1,8,9,9,0]6946; AVX512DQ-FCP-NEXT: vpermi2q %zmm4, %zmm3, %zmm296947; AVX512DQ-FCP-NEXT: vprold $16, %ymm15, %ymm36948; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm11[1,2,2,3,5,6,6,7]6949; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0,1],ymm3[2],ymm4[3,4],ymm3[5],ymm4[6,7,8,9],ymm3[10],ymm4[11,12],ymm3[13],ymm4[14,15]6950; AVX512DQ-FCP-NEXT: vpbroadcastd {{.*#+}} ymm6 = [18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21]6951; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm15, %ymm46952; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm8 = ymm11[0,0,2,1,4,4,6,5]6953; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1,2],ymm8[3],ymm4[4,5],ymm8[6],ymm4[7,8,9,10],ymm8[11],ymm4[12,13],ymm8[14],ymm4[15]6954; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm31 = [2,2,3,3,10,0,11,10]6955; AVX512DQ-FCP-NEXT: vpermi2q %zmm3, %zmm4, %zmm316956; AVX512DQ-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]6957; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm0, %xmm206958; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm46959; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %xmm36960; AVX512DQ-FCP-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]6961; AVX512DQ-FCP-NEXT: vpshufb %xmm10, %xmm1, %xmm06962; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm0, %ymm196963; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax6964; AVX512DQ-FCP-NEXT: vpbroadcastd 8(%rax), %ymm16965; AVX512DQ-FCP-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm16966; AVX512DQ-FCP-NEXT: vmovdqa (%rax), %ymm106967; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm2 = [12,13,128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128]6968; AVX512DQ-FCP-NEXT: vpshufb %ymm2, %ymm10, %ymm86969; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm1, %zmm306970; AVX512DQ-FCP-NEXT: vpunpckhwd {{.*#+}} xmm11 = xmm9[4],xmm5[4],xmm9[5],xmm5[5],xmm9[6],xmm5[6],xmm9[7],xmm5[7]6971; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm13[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]6972; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm8 = ymm12[1,1,1,1,5,5,5,5]6973; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm8[2],ymm1[3,4],ymm8[5],ymm1[6,7,8,9],ymm8[10],ymm1[11,12],ymm8[13],ymm1[14,15]6974; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm0, %ymm186975; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} ymm1 = ymm7[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]6976; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm9 = ymm14[0,1,1,3,4,5,5,7]6977; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm1[2],ymm9[3,4],ymm1[5],ymm9[6,7,8,9],ymm1[10],ymm9[11,12],ymm1[13],ymm9[14,15]6978; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm22, %ymm136979; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm13, %ymm16980; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm16[0,0,2,1,4,4,6,5]6981; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1,2],ymm6[3],ymm1[4,5],ymm6[6],ymm1[7,8,9,10],ymm6[11],ymm1[12,13],ymm6[14],ymm1[15]6982; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm9 = [0,1,0,3,10,10,11,11]6983; AVX512DQ-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload6984; AVX512DQ-FCP-NEXT: vpermi2q %zmm1, %zmm0, %zmm96985; AVX512DQ-FCP-NEXT: vmovdqa 32(%rax), %ymm16986; AVX512DQ-FCP-NEXT: vpshufb %ymm2, %ymm1, %ymm26987; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm22 = [0,0,4,0,0,0,5,0,0,5,0,0,0,6,0,0]6988; AVX512DQ-FCP-NEXT: vpermd %ymm1, %ymm22, %ymm16989; AVX512DQ-FCP-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm16990; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm16991; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm7[14,15,12,13,u,u,u,u,u,u,u,u,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29,u,u,u,u]6992; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm14[3,3,3,3,7,7,7,7]6993; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm6[0],ymm2[1],ymm6[2,3],ymm2[4],ymm6[5,6,7,8],ymm2[9],ymm6[10,11],ymm2[12],ymm6[13,14,15]6994; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm6 = [22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27,22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27]6995; AVX512DQ-FCP-NEXT: # ymm6 = mem[0,1,0,1]6996; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm7, %ymm06997; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm12 = ymm14[2,2,2,2,6,6,6,6]6998; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm0[0,1],ymm12[2],ymm0[3,4],ymm12[5],ymm0[6,7,8,9],ymm12[10],ymm0[11,12],ymm12[13],ymm0[14,15]6999; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm13[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,28,29,26,27,28,29,26,27,28,29,30,31,30,31]7000; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm7 = ymm16[3,3,3,3,7,7,7,7]7001; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm0[0,1],ymm7[2],ymm0[3,4],ymm7[5],ymm0[6,7,8,9],ymm7[10],ymm0[11,12],ymm7[13],ymm0[14,15]7002; AVX512DQ-FCP-NEXT: vprold $16, %ymm13, %ymm77003; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm14 = ymm16[1,2,2,3,5,6,6,7]7004; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm14 = ymm14[0,1],ymm7[2],ymm14[3,4],ymm7[5],ymm14[6,7,8,9],ymm7[10],ymm14[11,12],ymm7[13],ymm14[14,15]7005; AVX512DQ-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload7006; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm0[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]7007; AVX512DQ-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload7008; AVX512DQ-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm13[4],xmm0[4],xmm13[5],xmm0[5],xmm13[6],xmm0[6],xmm13[7],xmm0[7]7009; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm15 = xmm13[1,1,2,2]7010; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm15[0],xmm7[1],xmm15[2,3],xmm7[4],xmm15[5,6],xmm7[7]7011; AVX512DQ-FCP-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]7012; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm15 = [0,0,1,1,8,8,0,9]7013; AVX512DQ-FCP-NEXT: vpermt2q %zmm0, %zmm15, %zmm77014; AVX512DQ-FCP-NEXT: vprold $16, %xmm3, %xmm07015; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm13 = xmm4[1,1,2,3]7016; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm13[0,1],xmm0[2],xmm13[3,4],xmm0[5],xmm13[6,7]7017; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]7018; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm13 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]7019; AVX512DQ-FCP-NEXT: vpshufb %xmm13, %xmm11, %xmm47020; AVX512DQ-FCP-NEXT: vpshufb %xmm13, %xmm3, %xmm117021; AVX512DQ-FCP-NEXT: vpermt2q %zmm0, %zmm15, %zmm117022; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm0 = [2,1,3,2,10,10,10,11]7023; AVX512DQ-FCP-NEXT: vpermt2q %zmm2, %zmm0, %zmm147024; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload7025; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm13, %ymm27026; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm17[2,2,2,2,6,6,6,6]7027; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm3[2],ymm2[3,4],ymm3[5],ymm2[6,7,8,9],ymm3[10],ymm2[11,12],ymm3[13],ymm2[14,15]7028; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} ymm3 = ymm13[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]7029; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm17[0,1,1,3,4,5,5,7]7030; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm6[0,1],ymm3[2],ymm6[3,4],ymm3[5],ymm6[6,7,8,9],ymm3[10],ymm6[11,12],ymm3[13],ymm6[14,15]7031; AVX512DQ-FCP-NEXT: vpermt2q %zmm2, %zmm0, %zmm37032; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm16 = [2,2,2,3,8,10,10,11]7033; AVX512DQ-FCP-NEXT: vpermt2q %zmm5, %zmm16, %zmm127034; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm17 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]7035; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm12 = zmm24 ^ (zmm17 & (zmm12 ^ zmm24))7036; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (mem & (zmm14 ^ zmm12))7037; AVX512DQ-FCP-NEXT: vmovdqa64 (%rax), %zmm57038; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [0,13,0,0,0,14,0,0,14,0,0,0,15,0,0,15]7039; AVX512DQ-FCP-NEXT: vpermd %zmm5, %zmm6, %zmm67040; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm14))7041; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm12 = [6,0,0,0,7,0,0,7]7042; AVX512DQ-FCP-NEXT: vpermd %ymm10, %ymm12, %ymm107043; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm12 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]7044; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm26 ^ (zmm12 & (zmm7 ^ zmm26))7045; AVX512DQ-FCP-NEXT: vpbroadcastd 36(%rax), %ymm137046; AVX512DQ-FCP-NEXT: vpbroadcastd 40(%rax), %ymm147047; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm14, %zmm13, %zmm137048; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (mem & (zmm13 ^ zmm28))7049; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (mem & (zmm13 ^ zmm7))7050; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm27 = zmm27 ^ (mem & (zmm27 ^ zmm11))7051; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload7052; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm0[10,11,8,9,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,u,u,u,u,26,27,24,25,u,u,u,u]7053; AVX512DQ-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm24 # 32-byte Reload7054; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm11 = ymm24[2,2,2,2,6,6,6,6]7055; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm11[0],ymm7[1],ymm11[2,3],ymm7[4],ymm11[5,6,7,8],ymm7[9],ymm11[10,11],ymm7[12],ymm11[13,14,15]7056; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm20, %xmm27057; AVX512DQ-FCP-NEXT: vpshuflw {{.*#+}} xmm11 = xmm2[0,2,3,3,4,5,6,7]7058; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,2,1]7059; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm14 = ymm19[0,0,1,3]7060; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]7061; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm15 = ymm18[2,2,2,3]7062; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,1,3,2]7063; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]7064; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm24[1,1,1,1,5,5,5,5]7065; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm2[2],ymm0[3,4],ymm2[5],ymm0[6,7,8,9],ymm2[10],ymm0[11,12],ymm2[13],ymm0[14,15]7066; AVX512DQ-FCP-NEXT: vpermt2q %zmm7, %zmm16, %zmm07067; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm3))7068; AVX512DQ-FCP-NEXT: vpermd %zmm5, %zmm22, %zmm27069; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm31))7070; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm0))7071; AVX512DQ-FCP-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm11, %zmm0 # 32-byte Folded Reload7072; AVX512DQ-FCP-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm14, %zmm3 # 32-byte Folded Reload7073; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm0 ^ (zmm12 & (zmm3 ^ zmm0))7074; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm21 = zmm25 ^ (zmm17 & (zmm21 ^ zmm25))7075; AVX512DQ-FCP-NEXT: vinserti64x4 $1, (%rsp), %zmm4, %zmm0 # 32-byte Folded Reload7076; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = (zmm0 & mem) | zmm307077; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm3))7078; AVX512DQ-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload7079; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm15, %zmm3, %zmm37080; AVX512DQ-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload7081; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm4, %zmm47082; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm3))7083; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 | (zmm9 & mem)7084; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm4))7085; AVX512DQ-FCP-NEXT: vpbroadcastd 32(%rax), %ymm37086; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm10, %zmm37087; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm23))7088; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm21))7089; AVX512DQ-FCP-NEXT: vpbroadcastd (%rax), %ymm47090; AVX512DQ-FCP-NEXT: vpbroadcastd 4(%rax), %ymm57091; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm47092; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm29))7093; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm27))7094; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax7095; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, 128(%rax)7096; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, (%rax)7097; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, 320(%rax)7098; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm13, 256(%rax)7099; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, 192(%rax)7100; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm6, 384(%rax)7101; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, 64(%rax)7102; AVX512DQ-FCP-NEXT: addq $296, %rsp # imm = 0x1287103; AVX512DQ-FCP-NEXT: vzeroupper7104; AVX512DQ-FCP-NEXT: retq7105;7106; AVX512BW-LABEL: store_i16_stride7_vf32:7107; AVX512BW: # %bb.0:7108; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %rax7109; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %r107110; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm37111; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm47112; AVX512BW-NEXT: vmovdqa64 (%rdx), %zmm67113; AVX512BW-NEXT: vmovdqa64 (%rcx), %zmm77114; AVX512BW-NEXT: vmovdqa64 (%r8), %zmm17115; AVX512BW-NEXT: vmovdqa64 (%r9), %zmm27116; AVX512BW-NEXT: vmovdqa64 (%r10), %zmm07117; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [0,0,30,62,28,60,0,0,0,31,63,29,61,0,0,0,0,0,30,62,28,60,0,0,0,31,63,29,61,0,0,0]7118; AVX512BW-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]7119; AVX512BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm57120; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [27,0,0,0,62,30,60,28,0,0,0,63,31,61,29,0,27,0,0,0,62,30,60,28,0,0,0,63,31,61,29,0]7121; AVX512BW-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]7122; AVX512BW-NEXT: vpermi2w %zmm6, %zmm7, %zmm87123; AVX512BW-NEXT: movl $101455920, %ecx # imm = 0x60C18307124; AVX512BW-NEXT: kmovd %ecx, %k17125; AVX512BW-NEXT: vmovdqu16 %zmm5, %zmm8 {%k1}7126; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [61,27,59,0,0,0,30,62,28,60,0,0,0,31,63,29,61,27,59,0,0,0,30,62,28,60,0,0,0,31,63,29]7127; AVX512BW-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]7128; AVX512BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm57129; AVX512BW-NEXT: movl $1623294726, %ecx # imm = 0x60C183067130; AVX512BW-NEXT: kmovd %ecx, %k27131; AVX512BW-NEXT: vmovdqu16 %zmm5, %zmm8 {%k2}7132; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,59,4,5,6,7,8,9,60,11,12,13,14,15,16,61,18,19,20,21,22,23,62,25,26,27,28,29,30,63]7133; AVX512BW-NEXT: vpermi2w %zmm0, %zmm8, %zmm57134; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [2,34,0,32,0,0,0,3,35,1,33,0,0,0,4,36,2,34,0,32,0,0,0,3,35,1,33,0,0,0,4,36]7135; AVX512BW-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]7136; AVX512BW-NEXT: vpermi2w %zmm7, %zmm6, %zmm97137; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [0,32,0,0,0,3,35,1,33,0,0,0,4,36,2,34,0,32,0,0,0,3,35,1,33,0,0,0,4,36,2,34]7138; AVX512BW-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]7139; AVX512BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm87140; AVX512BW-NEXT: movl $-1048377844, %ecx # imm = 0xC183060C7141; AVX512BW-NEXT: kmovd %ecx, %k27142; AVX512BW-NEXT: vmovdqu16 %zmm9, %zmm8 {%k2}7143; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [0,0,2,34,0,32,0,0,0,3,35,1,33,0,0,0,0,0,2,34,0,32,0,0,0,3,35,1,33,0,0,0]7144; AVX512BW-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]7145; AVX512BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm97146; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm10 = [0,0,0,0,4,5,32,0,0,0,0,11,12,33,0,0,0,0,18,19,34,0,0,0,0,25,26,35,0,0,0,0]7147; AVX512BW-NEXT: vpermi2w %zmm0, %zmm9, %zmm107148; AVX512BW-NEXT: movl $236730480, %ecx # imm = 0xE1C38707149; AVX512BW-NEXT: kmovd %ecx, %k27150; AVX512BW-NEXT: vmovdqu16 %zmm10, %zmm8 {%k2}7151; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [0,0,0,7,39,5,37,0,0,0,8,40,6,38,0,0,0,0,0,7,39,5,37,0,0,0,8,40,6,38,0,0]7152; AVX512BW-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]7153; AVX512BW-NEXT: vpermi2w %zmm7, %zmm6, %zmm107154; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [0,7,39,5,37,0,0,0,8,40,6,38,0,0,0,9,0,7,39,5,37,0,0,0,8,40,6,38,0,0,0,9]7155; AVX512BW-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]7156; AVX512BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm97157; AVX512BW-NEXT: movl $202911840, %ecx # imm = 0xC1830607158; AVX512BW-NEXT: kmovd %ecx, %k27159; AVX512BW-NEXT: vmovdqu16 %zmm10, %zmm9 {%k2}7160; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [4,36,0,0,0,7,39,5,37,0,0,0,8,40,6,38,4,36,0,0,0,7,39,5,37,0,0,0,8,40,6,38]7161; AVX512BW-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]7162; AVX512BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm107163; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm11 = [0,1,36,0,0,0,0,7,8,37,0,0,0,0,14,15,38,0,0,0,0,21,22,39,0,0,0,0,28,29,40,0]7164; AVX512BW-NEXT: vpermi2w %zmm0, %zmm10, %zmm117165; AVX512BW-NEXT: movl $1893843847, %ecx # imm = 0x70E1C3877166; AVX512BW-NEXT: kmovd %ecx, %k37167; AVX512BW-NEXT: vmovdqu16 %zmm11, %zmm9 {%k3}7168; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [9,0,0,0,44,12,42,10,0,0,0,45,13,43,11,0,9,0,0,0,44,12,42,10,0,0,0,45,13,43,11,0]7169; AVX512BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7170; AVX512BW-NEXT: vpermi2w %zmm3, %zmm4, %zmm117171; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [43,9,41,0,0,0,12,44,10,42,0,0,0,13,45,11,43,9,41,0,0,0,12,44,10,42,0,0,0,13,45,11]7172; AVX512BW-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]7173; AVX512BW-NEXT: vpermi2w %zmm7, %zmm6, %zmm107174; AVX512BW-NEXT: movl $405823681, %ecx # imm = 0x183060C17175; AVX512BW-NEXT: kmovd %ecx, %k37176; AVX512BW-NEXT: vmovdqu16 %zmm11, %zmm10 {%k3}7177; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,11,43,9,41,0,0,0,12,44,10,42,0,0,0,13,0,11,43,9,41,0,0,0,12,44,10,42,0,0,0,13]7178; AVX512BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7179; AVX512BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm117180; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm12 = [0,0,0,3,4,41,0,0,0,0,10,11,42,0,0,0,0,17,18,43,0,0,0,0,24,25,44,0,0,0,0,31]7181; AVX512BW-NEXT: vpermi2w %zmm0, %zmm11, %zmm127182; AVX512BW-NEXT: movl $-2029118408, %ecx # imm = 0x870E1C387183; AVX512BW-NEXT: kmovd %ecx, %k37184; AVX512BW-NEXT: vmovdqu16 %zmm12, %zmm10 {%k3}7185; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,0,16,48,14,46,0,0,0,17,49,15,47,0,0,0,0,0,16,48,14,46,0,0,0,17,49,15,47,0,0,0]7186; AVX512BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7187; AVX512BW-NEXT: vpermi2w %zmm7, %zmm6, %zmm117188; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm12 = [16,48,14,46,0,0,0,17,49,15,47,0,0,0,18,50,16,48,14,46,0,0,0,17,49,15,47,0,0,0,18,50]7189; AVX512BW-NEXT: # zmm12 = mem[0,1,2,3,0,1,2,3]7190; AVX512BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm127191; AVX512BW-NEXT: vmovdqu16 %zmm11, %zmm12 {%k1}7192; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [13,0,0,0,48,16,46,14,0,0,0,49,17,47,15,0,13,0,0,0,48,16,46,14,0,0,0,49,17,47,15,0]7193; AVX512BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7194; AVX512BW-NEXT: vpermi2w %zmm1, %zmm2, %zmm117195; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm13 = [0,45,0,0,0,0,6,7,46,0,0,0,0,13,14,47,0,0,0,0,20,21,48,0,0,0,0,27,28,49,0,0]7196; AVX512BW-NEXT: vpermi2w %zmm0, %zmm11, %zmm137197; AVX512BW-NEXT: movl $946921923, %ecx # imm = 0x3870E1C37198; AVX512BW-NEXT: kmovd %ecx, %k17199; AVX512BW-NEXT: vmovdqu16 %zmm13, %zmm12 {%k1}7200; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,0,0,21,53,19,51,0,0,0,22,54,20,52,0,0,0,0,0,21,53,19,51,0,0,0,22,54,20,52,0,0]7201; AVX512BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7202; AVX512BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm117203; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm13 = [18,50,0,0,0,21,53,19,51,0,0,0,22,54,20,52,18,50,0,0,0,21,53,19,51,0,0,0,22,54,20,52]7204; AVX512BW-NEXT: # zmm13 = mem[0,1,2,3,0,1,2,3]7205; AVX512BW-NEXT: vpermi2w %zmm7, %zmm6, %zmm137206; AVX512BW-NEXT: vmovdqu16 %zmm11, %zmm13 {%k2}7207; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [20,52,18,50,0,0,0,21,53,19,51,0,0,0,22,54,20,52,18,50,0,0,0,21,53,19,51,0,0,0,22,54]7208; AVX512BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7209; AVX512BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm117210; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm14 = [0,0,2,3,50,0,0,0,0,9,10,51,0,0,0,0,16,17,52,0,0,0,0,23,24,53,0,0,0,0,30,31]7211; AVX512BW-NEXT: vpermi2w %zmm0, %zmm11, %zmm147212; AVX512BW-NEXT: movl $-1014559204, %ecx # imm = 0xC3870E1C7213; AVX512BW-NEXT: kmovd %ecx, %k17214; AVX512BW-NEXT: vmovdqu16 %zmm14, %zmm13 {%k1}7215; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,25,57,23,55,0,0,0,26,58,24,56,0,0,0,27,0,25,57,23,55,0,0,0,26,58,24,56,0,0,0,27]7216; AVX512BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7217; AVX512BW-NEXT: vpermi2w %zmm7, %zmm6, %zmm117218; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm6 = [57,23,55,0,0,0,26,58,24,56,0,0,0,27,59,25,57,23,55,0,0,0,26,58,24,56,0,0,0,27,59,25]7219; AVX512BW-NEXT: # zmm6 = mem[0,1,2,3,0,1,2,3]7220; AVX512BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm67221; AVX512BW-NEXT: movl $-2096755688, %ecx # imm = 0x83060C187222; AVX512BW-NEXT: kmovd %ecx, %k17223; AVX512BW-NEXT: vmovdqu16 %zmm11, %zmm6 {%k1}7224; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm3 = [0,0,0,25,57,23,55,0,0,0,26,58,24,56,0,0,0,0,0,25,57,23,55,0,0,0,26,58,24,56,0,0]7225; AVX512BW-NEXT: # zmm3 = mem[0,1,2,3,0,1,2,3]7226; AVX512BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm37227; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm1 = [54,0,0,0,0,5,6,55,0,0,0,0,12,13,56,0,0,0,0,19,20,57,0,0,0,0,26,27,58,0,0,0]7228; AVX512BW-NEXT: vpermi2w %zmm0, %zmm3, %zmm17229; AVX512BW-NEXT: movl $473460961, %ecx # imm = 0x1C3870E17230; AVX512BW-NEXT: kmovd %ecx, %k17231; AVX512BW-NEXT: vmovdqu16 %zmm1, %zmm6 {%k1}7232; AVX512BW-NEXT: vmovdqa64 %zmm6, 320(%rax)7233; AVX512BW-NEXT: vmovdqa64 %zmm13, 256(%rax)7234; AVX512BW-NEXT: vmovdqa64 %zmm12, 192(%rax)7235; AVX512BW-NEXT: vmovdqa64 %zmm10, 128(%rax)7236; AVX512BW-NEXT: vmovdqa64 %zmm9, 64(%rax)7237; AVX512BW-NEXT: vmovdqa64 %zmm8, (%rax)7238; AVX512BW-NEXT: vmovdqa64 %zmm5, 384(%rax)7239; AVX512BW-NEXT: vzeroupper7240; AVX512BW-NEXT: retq7241;7242; AVX512BW-FCP-LABEL: store_i16_stride7_vf32:7243; AVX512BW-FCP: # %bb.0:7244; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax7245; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r107246; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm37247; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm47248; AVX512BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm67249; AVX512BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm77250; AVX512BW-FCP-NEXT: vmovdqa64 (%r8), %zmm17251; AVX512BW-FCP-NEXT: vmovdqa64 (%r9), %zmm27252; AVX512BW-FCP-NEXT: vmovdqa64 (%r10), %zmm07253; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [0,0,30,62,28,60,0,0,0,31,63,29,61,0,0,0,0,0,30,62,28,60,0,0,0,31,63,29,61,0,0,0]7254; AVX512BW-FCP-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]7255; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm57256; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [27,0,0,0,62,30,60,28,0,0,0,63,31,61,29,0,27,0,0,0,62,30,60,28,0,0,0,63,31,61,29,0]7257; AVX512BW-FCP-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]7258; AVX512BW-FCP-NEXT: vpermi2w %zmm6, %zmm7, %zmm87259; AVX512BW-FCP-NEXT: movl $101455920, %ecx # imm = 0x60C18307260; AVX512BW-FCP-NEXT: kmovd %ecx, %k17261; AVX512BW-FCP-NEXT: vmovdqu16 %zmm5, %zmm8 {%k1}7262; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [61,27,59,0,0,0,30,62,28,60,0,0,0,31,63,29,61,27,59,0,0,0,30,62,28,60,0,0,0,31,63,29]7263; AVX512BW-FCP-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]7264; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm57265; AVX512BW-FCP-NEXT: movl $1623294726, %ecx # imm = 0x60C183067266; AVX512BW-FCP-NEXT: kmovd %ecx, %k27267; AVX512BW-FCP-NEXT: vmovdqu16 %zmm5, %zmm8 {%k2}7268; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,59,4,5,6,7,8,9,60,11,12,13,14,15,16,61,18,19,20,21,22,23,62,25,26,27,28,29,30,63]7269; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm8, %zmm57270; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [2,34,0,32,0,0,0,3,35,1,33,0,0,0,4,36,2,34,0,32,0,0,0,3,35,1,33,0,0,0,4,36]7271; AVX512BW-FCP-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]7272; AVX512BW-FCP-NEXT: vpermi2w %zmm7, %zmm6, %zmm97273; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [0,32,0,0,0,3,35,1,33,0,0,0,4,36,2,34,0,32,0,0,0,3,35,1,33,0,0,0,4,36,2,34]7274; AVX512BW-FCP-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]7275; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm87276; AVX512BW-FCP-NEXT: movl $-1048377844, %ecx # imm = 0xC183060C7277; AVX512BW-FCP-NEXT: kmovd %ecx, %k27278; AVX512BW-FCP-NEXT: vmovdqu16 %zmm9, %zmm8 {%k2}7279; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [0,0,2,34,0,32,0,0,0,3,35,1,33,0,0,0,0,0,2,34,0,32,0,0,0,3,35,1,33,0,0,0]7280; AVX512BW-FCP-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]7281; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm97282; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm10 = [0,0,0,0,4,5,32,0,0,0,0,11,12,33,0,0,0,0,18,19,34,0,0,0,0,25,26,35,0,0,0,0]7283; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm9, %zmm107284; AVX512BW-FCP-NEXT: movl $236730480, %ecx # imm = 0xE1C38707285; AVX512BW-FCP-NEXT: kmovd %ecx, %k27286; AVX512BW-FCP-NEXT: vmovdqu16 %zmm10, %zmm8 {%k2}7287; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [0,0,0,7,39,5,37,0,0,0,8,40,6,38,0,0,0,0,0,7,39,5,37,0,0,0,8,40,6,38,0,0]7288; AVX512BW-FCP-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]7289; AVX512BW-FCP-NEXT: vpermi2w %zmm7, %zmm6, %zmm107290; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [0,7,39,5,37,0,0,0,8,40,6,38,0,0,0,9,0,7,39,5,37,0,0,0,8,40,6,38,0,0,0,9]7291; AVX512BW-FCP-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]7292; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm97293; AVX512BW-FCP-NEXT: movl $202911840, %ecx # imm = 0xC1830607294; AVX512BW-FCP-NEXT: kmovd %ecx, %k27295; AVX512BW-FCP-NEXT: vmovdqu16 %zmm10, %zmm9 {%k2}7296; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [4,36,0,0,0,7,39,5,37,0,0,0,8,40,6,38,4,36,0,0,0,7,39,5,37,0,0,0,8,40,6,38]7297; AVX512BW-FCP-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]7298; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm107299; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm11 = [0,1,36,0,0,0,0,7,8,37,0,0,0,0,14,15,38,0,0,0,0,21,22,39,0,0,0,0,28,29,40,0]7300; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm10, %zmm117301; AVX512BW-FCP-NEXT: movl $1893843847, %ecx # imm = 0x70E1C3877302; AVX512BW-FCP-NEXT: kmovd %ecx, %k37303; AVX512BW-FCP-NEXT: vmovdqu16 %zmm11, %zmm9 {%k3}7304; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [9,0,0,0,44,12,42,10,0,0,0,45,13,43,11,0,9,0,0,0,44,12,42,10,0,0,0,45,13,43,11,0]7305; AVX512BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7306; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm4, %zmm117307; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [43,9,41,0,0,0,12,44,10,42,0,0,0,13,45,11,43,9,41,0,0,0,12,44,10,42,0,0,0,13,45,11]7308; AVX512BW-FCP-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]7309; AVX512BW-FCP-NEXT: vpermi2w %zmm7, %zmm6, %zmm107310; AVX512BW-FCP-NEXT: movl $405823681, %ecx # imm = 0x183060C17311; AVX512BW-FCP-NEXT: kmovd %ecx, %k37312; AVX512BW-FCP-NEXT: vmovdqu16 %zmm11, %zmm10 {%k3}7313; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,11,43,9,41,0,0,0,12,44,10,42,0,0,0,13,0,11,43,9,41,0,0,0,12,44,10,42,0,0,0,13]7314; AVX512BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7315; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm117316; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm12 = [0,0,0,3,4,41,0,0,0,0,10,11,42,0,0,0,0,17,18,43,0,0,0,0,24,25,44,0,0,0,0,31]7317; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm11, %zmm127318; AVX512BW-FCP-NEXT: movl $-2029118408, %ecx # imm = 0x870E1C387319; AVX512BW-FCP-NEXT: kmovd %ecx, %k37320; AVX512BW-FCP-NEXT: vmovdqu16 %zmm12, %zmm10 {%k3}7321; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,0,16,48,14,46,0,0,0,17,49,15,47,0,0,0,0,0,16,48,14,46,0,0,0,17,49,15,47,0,0,0]7322; AVX512BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7323; AVX512BW-FCP-NEXT: vpermi2w %zmm7, %zmm6, %zmm117324; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm12 = [16,48,14,46,0,0,0,17,49,15,47,0,0,0,18,50,16,48,14,46,0,0,0,17,49,15,47,0,0,0,18,50]7325; AVX512BW-FCP-NEXT: # zmm12 = mem[0,1,2,3,0,1,2,3]7326; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm127327; AVX512BW-FCP-NEXT: vmovdqu16 %zmm11, %zmm12 {%k1}7328; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [13,0,0,0,48,16,46,14,0,0,0,49,17,47,15,0,13,0,0,0,48,16,46,14,0,0,0,49,17,47,15,0]7329; AVX512BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7330; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm2, %zmm117331; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm13 = [0,45,0,0,0,0,6,7,46,0,0,0,0,13,14,47,0,0,0,0,20,21,48,0,0,0,0,27,28,49,0,0]7332; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm11, %zmm137333; AVX512BW-FCP-NEXT: movl $946921923, %ecx # imm = 0x3870E1C37334; AVX512BW-FCP-NEXT: kmovd %ecx, %k17335; AVX512BW-FCP-NEXT: vmovdqu16 %zmm13, %zmm12 {%k1}7336; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,0,0,21,53,19,51,0,0,0,22,54,20,52,0,0,0,0,0,21,53,19,51,0,0,0,22,54,20,52,0,0]7337; AVX512BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7338; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm117339; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm13 = [18,50,0,0,0,21,53,19,51,0,0,0,22,54,20,52,18,50,0,0,0,21,53,19,51,0,0,0,22,54,20,52]7340; AVX512BW-FCP-NEXT: # zmm13 = mem[0,1,2,3,0,1,2,3]7341; AVX512BW-FCP-NEXT: vpermi2w %zmm7, %zmm6, %zmm137342; AVX512BW-FCP-NEXT: vmovdqu16 %zmm11, %zmm13 {%k2}7343; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [20,52,18,50,0,0,0,21,53,19,51,0,0,0,22,54,20,52,18,50,0,0,0,21,53,19,51,0,0,0,22,54]7344; AVX512BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7345; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm117346; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm14 = [0,0,2,3,50,0,0,0,0,9,10,51,0,0,0,0,16,17,52,0,0,0,0,23,24,53,0,0,0,0,30,31]7347; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm11, %zmm147348; AVX512BW-FCP-NEXT: movl $-1014559204, %ecx # imm = 0xC3870E1C7349; AVX512BW-FCP-NEXT: kmovd %ecx, %k17350; AVX512BW-FCP-NEXT: vmovdqu16 %zmm14, %zmm13 {%k1}7351; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,25,57,23,55,0,0,0,26,58,24,56,0,0,0,27,0,25,57,23,55,0,0,0,26,58,24,56,0,0,0,27]7352; AVX512BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7353; AVX512BW-FCP-NEXT: vpermi2w %zmm7, %zmm6, %zmm117354; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm6 = [57,23,55,0,0,0,26,58,24,56,0,0,0,27,59,25,57,23,55,0,0,0,26,58,24,56,0,0,0,27,59,25]7355; AVX512BW-FCP-NEXT: # zmm6 = mem[0,1,2,3,0,1,2,3]7356; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm67357; AVX512BW-FCP-NEXT: movl $-2096755688, %ecx # imm = 0x83060C187358; AVX512BW-FCP-NEXT: kmovd %ecx, %k17359; AVX512BW-FCP-NEXT: vmovdqu16 %zmm11, %zmm6 {%k1}7360; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm3 = [0,0,0,25,57,23,55,0,0,0,26,58,24,56,0,0,0,0,0,25,57,23,55,0,0,0,26,58,24,56,0,0]7361; AVX512BW-FCP-NEXT: # zmm3 = mem[0,1,2,3,0,1,2,3]7362; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm37363; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm1 = [54,0,0,0,0,5,6,55,0,0,0,0,12,13,56,0,0,0,0,19,20,57,0,0,0,0,26,27,58,0,0,0]7364; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm3, %zmm17365; AVX512BW-FCP-NEXT: movl $473460961, %ecx # imm = 0x1C3870E17366; AVX512BW-FCP-NEXT: kmovd %ecx, %k17367; AVX512BW-FCP-NEXT: vmovdqu16 %zmm1, %zmm6 {%k1}7368; AVX512BW-FCP-NEXT: vmovdqa64 %zmm6, 320(%rax)7369; AVX512BW-FCP-NEXT: vmovdqa64 %zmm13, 256(%rax)7370; AVX512BW-FCP-NEXT: vmovdqa64 %zmm12, 192(%rax)7371; AVX512BW-FCP-NEXT: vmovdqa64 %zmm10, 128(%rax)7372; AVX512BW-FCP-NEXT: vmovdqa64 %zmm9, 64(%rax)7373; AVX512BW-FCP-NEXT: vmovdqa64 %zmm8, (%rax)7374; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, 384(%rax)7375; AVX512BW-FCP-NEXT: vzeroupper7376; AVX512BW-FCP-NEXT: retq7377;7378; AVX512DQ-BW-LABEL: store_i16_stride7_vf32:7379; AVX512DQ-BW: # %bb.0:7380; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %rax7381; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %r107382; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm37383; AVX512DQ-BW-NEXT: vmovdqa64 (%rsi), %zmm47384; AVX512DQ-BW-NEXT: vmovdqa64 (%rdx), %zmm67385; AVX512DQ-BW-NEXT: vmovdqa64 (%rcx), %zmm77386; AVX512DQ-BW-NEXT: vmovdqa64 (%r8), %zmm17387; AVX512DQ-BW-NEXT: vmovdqa64 (%r9), %zmm27388; AVX512DQ-BW-NEXT: vmovdqa64 (%r10), %zmm07389; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [0,0,30,62,28,60,0,0,0,31,63,29,61,0,0,0,0,0,30,62,28,60,0,0,0,31,63,29,61,0,0,0]7390; AVX512DQ-BW-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]7391; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm57392; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [27,0,0,0,62,30,60,28,0,0,0,63,31,61,29,0,27,0,0,0,62,30,60,28,0,0,0,63,31,61,29,0]7393; AVX512DQ-BW-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]7394; AVX512DQ-BW-NEXT: vpermi2w %zmm6, %zmm7, %zmm87395; AVX512DQ-BW-NEXT: movl $101455920, %ecx # imm = 0x60C18307396; AVX512DQ-BW-NEXT: kmovd %ecx, %k17397; AVX512DQ-BW-NEXT: vmovdqu16 %zmm5, %zmm8 {%k1}7398; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [61,27,59,0,0,0,30,62,28,60,0,0,0,31,63,29,61,27,59,0,0,0,30,62,28,60,0,0,0,31,63,29]7399; AVX512DQ-BW-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]7400; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm57401; AVX512DQ-BW-NEXT: movl $1623294726, %ecx # imm = 0x60C183067402; AVX512DQ-BW-NEXT: kmovd %ecx, %k27403; AVX512DQ-BW-NEXT: vmovdqu16 %zmm5, %zmm8 {%k2}7404; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,59,4,5,6,7,8,9,60,11,12,13,14,15,16,61,18,19,20,21,22,23,62,25,26,27,28,29,30,63]7405; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm8, %zmm57406; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [2,34,0,32,0,0,0,3,35,1,33,0,0,0,4,36,2,34,0,32,0,0,0,3,35,1,33,0,0,0,4,36]7407; AVX512DQ-BW-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]7408; AVX512DQ-BW-NEXT: vpermi2w %zmm7, %zmm6, %zmm97409; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [0,32,0,0,0,3,35,1,33,0,0,0,4,36,2,34,0,32,0,0,0,3,35,1,33,0,0,0,4,36,2,34]7410; AVX512DQ-BW-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]7411; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm87412; AVX512DQ-BW-NEXT: movl $-1048377844, %ecx # imm = 0xC183060C7413; AVX512DQ-BW-NEXT: kmovd %ecx, %k27414; AVX512DQ-BW-NEXT: vmovdqu16 %zmm9, %zmm8 {%k2}7415; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [0,0,2,34,0,32,0,0,0,3,35,1,33,0,0,0,0,0,2,34,0,32,0,0,0,3,35,1,33,0,0,0]7416; AVX512DQ-BW-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]7417; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm97418; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm10 = [0,0,0,0,4,5,32,0,0,0,0,11,12,33,0,0,0,0,18,19,34,0,0,0,0,25,26,35,0,0,0,0]7419; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm9, %zmm107420; AVX512DQ-BW-NEXT: movl $236730480, %ecx # imm = 0xE1C38707421; AVX512DQ-BW-NEXT: kmovd %ecx, %k27422; AVX512DQ-BW-NEXT: vmovdqu16 %zmm10, %zmm8 {%k2}7423; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [0,0,0,7,39,5,37,0,0,0,8,40,6,38,0,0,0,0,0,7,39,5,37,0,0,0,8,40,6,38,0,0]7424; AVX512DQ-BW-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]7425; AVX512DQ-BW-NEXT: vpermi2w %zmm7, %zmm6, %zmm107426; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [0,7,39,5,37,0,0,0,8,40,6,38,0,0,0,9,0,7,39,5,37,0,0,0,8,40,6,38,0,0,0,9]7427; AVX512DQ-BW-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]7428; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm97429; AVX512DQ-BW-NEXT: movl $202911840, %ecx # imm = 0xC1830607430; AVX512DQ-BW-NEXT: kmovd %ecx, %k27431; AVX512DQ-BW-NEXT: vmovdqu16 %zmm10, %zmm9 {%k2}7432; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [4,36,0,0,0,7,39,5,37,0,0,0,8,40,6,38,4,36,0,0,0,7,39,5,37,0,0,0,8,40,6,38]7433; AVX512DQ-BW-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]7434; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm107435; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm11 = [0,1,36,0,0,0,0,7,8,37,0,0,0,0,14,15,38,0,0,0,0,21,22,39,0,0,0,0,28,29,40,0]7436; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm10, %zmm117437; AVX512DQ-BW-NEXT: movl $1893843847, %ecx # imm = 0x70E1C3877438; AVX512DQ-BW-NEXT: kmovd %ecx, %k37439; AVX512DQ-BW-NEXT: vmovdqu16 %zmm11, %zmm9 {%k3}7440; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [9,0,0,0,44,12,42,10,0,0,0,45,13,43,11,0,9,0,0,0,44,12,42,10,0,0,0,45,13,43,11,0]7441; AVX512DQ-BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7442; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm4, %zmm117443; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [43,9,41,0,0,0,12,44,10,42,0,0,0,13,45,11,43,9,41,0,0,0,12,44,10,42,0,0,0,13,45,11]7444; AVX512DQ-BW-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]7445; AVX512DQ-BW-NEXT: vpermi2w %zmm7, %zmm6, %zmm107446; AVX512DQ-BW-NEXT: movl $405823681, %ecx # imm = 0x183060C17447; AVX512DQ-BW-NEXT: kmovd %ecx, %k37448; AVX512DQ-BW-NEXT: vmovdqu16 %zmm11, %zmm10 {%k3}7449; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,11,43,9,41,0,0,0,12,44,10,42,0,0,0,13,0,11,43,9,41,0,0,0,12,44,10,42,0,0,0,13]7450; AVX512DQ-BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7451; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm117452; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm12 = [0,0,0,3,4,41,0,0,0,0,10,11,42,0,0,0,0,17,18,43,0,0,0,0,24,25,44,0,0,0,0,31]7453; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm11, %zmm127454; AVX512DQ-BW-NEXT: movl $-2029118408, %ecx # imm = 0x870E1C387455; AVX512DQ-BW-NEXT: kmovd %ecx, %k37456; AVX512DQ-BW-NEXT: vmovdqu16 %zmm12, %zmm10 {%k3}7457; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,0,16,48,14,46,0,0,0,17,49,15,47,0,0,0,0,0,16,48,14,46,0,0,0,17,49,15,47,0,0,0]7458; AVX512DQ-BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7459; AVX512DQ-BW-NEXT: vpermi2w %zmm7, %zmm6, %zmm117460; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm12 = [16,48,14,46,0,0,0,17,49,15,47,0,0,0,18,50,16,48,14,46,0,0,0,17,49,15,47,0,0,0,18,50]7461; AVX512DQ-BW-NEXT: # zmm12 = mem[0,1,2,3,0,1,2,3]7462; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm127463; AVX512DQ-BW-NEXT: vmovdqu16 %zmm11, %zmm12 {%k1}7464; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [13,0,0,0,48,16,46,14,0,0,0,49,17,47,15,0,13,0,0,0,48,16,46,14,0,0,0,49,17,47,15,0]7465; AVX512DQ-BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7466; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm2, %zmm117467; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm13 = [0,45,0,0,0,0,6,7,46,0,0,0,0,13,14,47,0,0,0,0,20,21,48,0,0,0,0,27,28,49,0,0]7468; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm11, %zmm137469; AVX512DQ-BW-NEXT: movl $946921923, %ecx # imm = 0x3870E1C37470; AVX512DQ-BW-NEXT: kmovd %ecx, %k17471; AVX512DQ-BW-NEXT: vmovdqu16 %zmm13, %zmm12 {%k1}7472; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,0,0,21,53,19,51,0,0,0,22,54,20,52,0,0,0,0,0,21,53,19,51,0,0,0,22,54,20,52,0,0]7473; AVX512DQ-BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7474; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm117475; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm13 = [18,50,0,0,0,21,53,19,51,0,0,0,22,54,20,52,18,50,0,0,0,21,53,19,51,0,0,0,22,54,20,52]7476; AVX512DQ-BW-NEXT: # zmm13 = mem[0,1,2,3,0,1,2,3]7477; AVX512DQ-BW-NEXT: vpermi2w %zmm7, %zmm6, %zmm137478; AVX512DQ-BW-NEXT: vmovdqu16 %zmm11, %zmm13 {%k2}7479; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [20,52,18,50,0,0,0,21,53,19,51,0,0,0,22,54,20,52,18,50,0,0,0,21,53,19,51,0,0,0,22,54]7480; AVX512DQ-BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7481; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm117482; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm14 = [0,0,2,3,50,0,0,0,0,9,10,51,0,0,0,0,16,17,52,0,0,0,0,23,24,53,0,0,0,0,30,31]7483; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm11, %zmm147484; AVX512DQ-BW-NEXT: movl $-1014559204, %ecx # imm = 0xC3870E1C7485; AVX512DQ-BW-NEXT: kmovd %ecx, %k17486; AVX512DQ-BW-NEXT: vmovdqu16 %zmm14, %zmm13 {%k1}7487; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,25,57,23,55,0,0,0,26,58,24,56,0,0,0,27,0,25,57,23,55,0,0,0,26,58,24,56,0,0,0,27]7488; AVX512DQ-BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7489; AVX512DQ-BW-NEXT: vpermi2w %zmm7, %zmm6, %zmm117490; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm6 = [57,23,55,0,0,0,26,58,24,56,0,0,0,27,59,25,57,23,55,0,0,0,26,58,24,56,0,0,0,27,59,25]7491; AVX512DQ-BW-NEXT: # zmm6 = mem[0,1,2,3,0,1,2,3]7492; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm67493; AVX512DQ-BW-NEXT: movl $-2096755688, %ecx # imm = 0x83060C187494; AVX512DQ-BW-NEXT: kmovd %ecx, %k17495; AVX512DQ-BW-NEXT: vmovdqu16 %zmm11, %zmm6 {%k1}7496; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm3 = [0,0,0,25,57,23,55,0,0,0,26,58,24,56,0,0,0,0,0,25,57,23,55,0,0,0,26,58,24,56,0,0]7497; AVX512DQ-BW-NEXT: # zmm3 = mem[0,1,2,3,0,1,2,3]7498; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm37499; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm1 = [54,0,0,0,0,5,6,55,0,0,0,0,12,13,56,0,0,0,0,19,20,57,0,0,0,0,26,27,58,0,0,0]7500; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm3, %zmm17501; AVX512DQ-BW-NEXT: movl $473460961, %ecx # imm = 0x1C3870E17502; AVX512DQ-BW-NEXT: kmovd %ecx, %k17503; AVX512DQ-BW-NEXT: vmovdqu16 %zmm1, %zmm6 {%k1}7504; AVX512DQ-BW-NEXT: vmovdqa64 %zmm6, 320(%rax)7505; AVX512DQ-BW-NEXT: vmovdqa64 %zmm13, 256(%rax)7506; AVX512DQ-BW-NEXT: vmovdqa64 %zmm12, 192(%rax)7507; AVX512DQ-BW-NEXT: vmovdqa64 %zmm10, 128(%rax)7508; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, 64(%rax)7509; AVX512DQ-BW-NEXT: vmovdqa64 %zmm8, (%rax)7510; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, 384(%rax)7511; AVX512DQ-BW-NEXT: vzeroupper7512; AVX512DQ-BW-NEXT: retq7513;7514; AVX512DQ-BW-FCP-LABEL: store_i16_stride7_vf32:7515; AVX512DQ-BW-FCP: # %bb.0:7516; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax7517; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %r107518; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm37519; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm47520; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm67521; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm77522; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%r8), %zmm17523; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%r9), %zmm27524; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%r10), %zmm07525; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [0,0,30,62,28,60,0,0,0,31,63,29,61,0,0,0,0,0,30,62,28,60,0,0,0,31,63,29,61,0,0,0]7526; AVX512DQ-BW-FCP-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]7527; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm57528; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [27,0,0,0,62,30,60,28,0,0,0,63,31,61,29,0,27,0,0,0,62,30,60,28,0,0,0,63,31,61,29,0]7529; AVX512DQ-BW-FCP-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]7530; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm6, %zmm7, %zmm87531; AVX512DQ-BW-FCP-NEXT: movl $101455920, %ecx # imm = 0x60C18307532; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k17533; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm5, %zmm8 {%k1}7534; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [61,27,59,0,0,0,30,62,28,60,0,0,0,31,63,29,61,27,59,0,0,0,30,62,28,60,0,0,0,31,63,29]7535; AVX512DQ-BW-FCP-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]7536; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm57537; AVX512DQ-BW-FCP-NEXT: movl $1623294726, %ecx # imm = 0x60C183067538; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k27539; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm5, %zmm8 {%k2}7540; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,59,4,5,6,7,8,9,60,11,12,13,14,15,16,61,18,19,20,21,22,23,62,25,26,27,28,29,30,63]7541; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm8, %zmm57542; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [2,34,0,32,0,0,0,3,35,1,33,0,0,0,4,36,2,34,0,32,0,0,0,3,35,1,33,0,0,0,4,36]7543; AVX512DQ-BW-FCP-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]7544; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm7, %zmm6, %zmm97545; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [0,32,0,0,0,3,35,1,33,0,0,0,4,36,2,34,0,32,0,0,0,3,35,1,33,0,0,0,4,36,2,34]7546; AVX512DQ-BW-FCP-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]7547; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm87548; AVX512DQ-BW-FCP-NEXT: movl $-1048377844, %ecx # imm = 0xC183060C7549; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k27550; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm9, %zmm8 {%k2}7551; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [0,0,2,34,0,32,0,0,0,3,35,1,33,0,0,0,0,0,2,34,0,32,0,0,0,3,35,1,33,0,0,0]7552; AVX512DQ-BW-FCP-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]7553; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm97554; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm10 = [0,0,0,0,4,5,32,0,0,0,0,11,12,33,0,0,0,0,18,19,34,0,0,0,0,25,26,35,0,0,0,0]7555; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm9, %zmm107556; AVX512DQ-BW-FCP-NEXT: movl $236730480, %ecx # imm = 0xE1C38707557; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k27558; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm10, %zmm8 {%k2}7559; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [0,0,0,7,39,5,37,0,0,0,8,40,6,38,0,0,0,0,0,7,39,5,37,0,0,0,8,40,6,38,0,0]7560; AVX512DQ-BW-FCP-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]7561; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm7, %zmm6, %zmm107562; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [0,7,39,5,37,0,0,0,8,40,6,38,0,0,0,9,0,7,39,5,37,0,0,0,8,40,6,38,0,0,0,9]7563; AVX512DQ-BW-FCP-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]7564; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm97565; AVX512DQ-BW-FCP-NEXT: movl $202911840, %ecx # imm = 0xC1830607566; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k27567; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm10, %zmm9 {%k2}7568; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [4,36,0,0,0,7,39,5,37,0,0,0,8,40,6,38,4,36,0,0,0,7,39,5,37,0,0,0,8,40,6,38]7569; AVX512DQ-BW-FCP-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]7570; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm107571; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm11 = [0,1,36,0,0,0,0,7,8,37,0,0,0,0,14,15,38,0,0,0,0,21,22,39,0,0,0,0,28,29,40,0]7572; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm10, %zmm117573; AVX512DQ-BW-FCP-NEXT: movl $1893843847, %ecx # imm = 0x70E1C3877574; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k37575; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm11, %zmm9 {%k3}7576; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [9,0,0,0,44,12,42,10,0,0,0,45,13,43,11,0,9,0,0,0,44,12,42,10,0,0,0,45,13,43,11,0]7577; AVX512DQ-BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7578; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm4, %zmm117579; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm10 = [43,9,41,0,0,0,12,44,10,42,0,0,0,13,45,11,43,9,41,0,0,0,12,44,10,42,0,0,0,13,45,11]7580; AVX512DQ-BW-FCP-NEXT: # zmm10 = mem[0,1,2,3,0,1,2,3]7581; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm7, %zmm6, %zmm107582; AVX512DQ-BW-FCP-NEXT: movl $405823681, %ecx # imm = 0x183060C17583; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k37584; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm11, %zmm10 {%k3}7585; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,11,43,9,41,0,0,0,12,44,10,42,0,0,0,13,0,11,43,9,41,0,0,0,12,44,10,42,0,0,0,13]7586; AVX512DQ-BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7587; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm117588; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm12 = [0,0,0,3,4,41,0,0,0,0,10,11,42,0,0,0,0,17,18,43,0,0,0,0,24,25,44,0,0,0,0,31]7589; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm11, %zmm127590; AVX512DQ-BW-FCP-NEXT: movl $-2029118408, %ecx # imm = 0x870E1C387591; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k37592; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm12, %zmm10 {%k3}7593; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,0,16,48,14,46,0,0,0,17,49,15,47,0,0,0,0,0,16,48,14,46,0,0,0,17,49,15,47,0,0,0]7594; AVX512DQ-BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7595; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm7, %zmm6, %zmm117596; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm12 = [16,48,14,46,0,0,0,17,49,15,47,0,0,0,18,50,16,48,14,46,0,0,0,17,49,15,47,0,0,0,18,50]7597; AVX512DQ-BW-FCP-NEXT: # zmm12 = mem[0,1,2,3,0,1,2,3]7598; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm127599; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm11, %zmm12 {%k1}7600; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [13,0,0,0,48,16,46,14,0,0,0,49,17,47,15,0,13,0,0,0,48,16,46,14,0,0,0,49,17,47,15,0]7601; AVX512DQ-BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7602; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm2, %zmm117603; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm13 = [0,45,0,0,0,0,6,7,46,0,0,0,0,13,14,47,0,0,0,0,20,21,48,0,0,0,0,27,28,49,0,0]7604; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm11, %zmm137605; AVX512DQ-BW-FCP-NEXT: movl $946921923, %ecx # imm = 0x3870E1C37606; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k17607; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm13, %zmm12 {%k1}7608; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,0,0,21,53,19,51,0,0,0,22,54,20,52,0,0,0,0,0,21,53,19,51,0,0,0,22,54,20,52,0,0]7609; AVX512DQ-BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7610; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm117611; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm13 = [18,50,0,0,0,21,53,19,51,0,0,0,22,54,20,52,18,50,0,0,0,21,53,19,51,0,0,0,22,54,20,52]7612; AVX512DQ-BW-FCP-NEXT: # zmm13 = mem[0,1,2,3,0,1,2,3]7613; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm7, %zmm6, %zmm137614; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm11, %zmm13 {%k2}7615; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [20,52,18,50,0,0,0,21,53,19,51,0,0,0,22,54,20,52,18,50,0,0,0,21,53,19,51,0,0,0,22,54]7616; AVX512DQ-BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7617; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm117618; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm14 = [0,0,2,3,50,0,0,0,0,9,10,51,0,0,0,0,16,17,52,0,0,0,0,23,24,53,0,0,0,0,30,31]7619; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm11, %zmm147620; AVX512DQ-BW-FCP-NEXT: movl $-1014559204, %ecx # imm = 0xC3870E1C7621; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k17622; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm14, %zmm13 {%k1}7623; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [0,25,57,23,55,0,0,0,26,58,24,56,0,0,0,27,0,25,57,23,55,0,0,0,26,58,24,56,0,0,0,27]7624; AVX512DQ-BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]7625; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm7, %zmm6, %zmm117626; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm6 = [57,23,55,0,0,0,26,58,24,56,0,0,0,27,59,25,57,23,55,0,0,0,26,58,24,56,0,0,0,27,59,25]7627; AVX512DQ-BW-FCP-NEXT: # zmm6 = mem[0,1,2,3,0,1,2,3]7628; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm67629; AVX512DQ-BW-FCP-NEXT: movl $-2096755688, %ecx # imm = 0x83060C187630; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k17631; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm11, %zmm6 {%k1}7632; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm3 = [0,0,0,25,57,23,55,0,0,0,26,58,24,56,0,0,0,0,0,25,57,23,55,0,0,0,26,58,24,56,0,0]7633; AVX512DQ-BW-FCP-NEXT: # zmm3 = mem[0,1,2,3,0,1,2,3]7634; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm37635; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm1 = [54,0,0,0,0,5,6,55,0,0,0,0,12,13,56,0,0,0,0,19,20,57,0,0,0,0,26,27,58,0,0,0]7636; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm3, %zmm17637; AVX512DQ-BW-FCP-NEXT: movl $473460961, %ecx # imm = 0x1C3870E17638; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k17639; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm1, %zmm6 {%k1}7640; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm6, 320(%rax)7641; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm13, 256(%rax)7642; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm12, 192(%rax)7643; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm10, 128(%rax)7644; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm9, 64(%rax)7645; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm8, (%rax)7646; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, 384(%rax)7647; AVX512DQ-BW-FCP-NEXT: vzeroupper7648; AVX512DQ-BW-FCP-NEXT: retq7649 %in.vec0 = load <32 x i16>, ptr %in.vecptr0, align 647650 %in.vec1 = load <32 x i16>, ptr %in.vecptr1, align 647651 %in.vec2 = load <32 x i16>, ptr %in.vecptr2, align 647652 %in.vec3 = load <32 x i16>, ptr %in.vecptr3, align 647653 %in.vec4 = load <32 x i16>, ptr %in.vecptr4, align 647654 %in.vec5 = load <32 x i16>, ptr %in.vecptr5, align 647655 %in.vec6 = load <32 x i16>, ptr %in.vecptr6, align 647656 %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>7657 %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>7658 %3 = shufflevector <32 x i16> %in.vec4, <32 x i16> %in.vec5, <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>7659 %4 = 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>7660 %5 = shufflevector <32 x i16> %in.vec6, <32 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 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>7661 %6 = shufflevector <64 x i16> %3, <64 x i16> %5, <96 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>7662 %7 = shufflevector <96 x i16> %6, <96 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 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 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>7663 %8 = shufflevector <128 x i16> %4, <128 x i16> %7, <224 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>7664 %interleaved.vec = shufflevector <224 x i16> %8, <224 x i16> poison, <224 x i32> <i32 0, i32 32, i32 64, i32 96, i32 128, i32 160, i32 192, i32 1, i32 33, i32 65, i32 97, i32 129, i32 161, i32 193, i32 2, i32 34, i32 66, i32 98, i32 130, i32 162, i32 194, i32 3, i32 35, i32 67, i32 99, i32 131, i32 163, i32 195, i32 4, i32 36, i32 68, i32 100, i32 132, i32 164, i32 196, i32 5, i32 37, i32 69, i32 101, i32 133, i32 165, i32 197, i32 6, i32 38, i32 70, i32 102, i32 134, i32 166, i32 198, i32 7, i32 39, i32 71, i32 103, i32 135, i32 167, i32 199, i32 8, i32 40, i32 72, i32 104, i32 136, i32 168, i32 200, i32 9, i32 41, i32 73, i32 105, i32 137, i32 169, i32 201, i32 10, i32 42, i32 74, i32 106, i32 138, i32 170, i32 202, i32 11, i32 43, i32 75, i32 107, i32 139, i32 171, i32 203, i32 12, i32 44, i32 76, i32 108, i32 140, i32 172, i32 204, i32 13, i32 45, i32 77, i32 109, i32 141, i32 173, i32 205, i32 14, i32 46, i32 78, i32 110, i32 142, i32 174, i32 206, i32 15, i32 47, i32 79, i32 111, i32 143, i32 175, i32 207, i32 16, i32 48, i32 80, i32 112, i32 144, i32 176, i32 208, i32 17, i32 49, i32 81, i32 113, i32 145, i32 177, i32 209, i32 18, i32 50, i32 82, i32 114, i32 146, i32 178, i32 210, i32 19, i32 51, i32 83, i32 115, i32 147, i32 179, i32 211, i32 20, i32 52, i32 84, i32 116, i32 148, i32 180, i32 212, i32 21, i32 53, i32 85, i32 117, i32 149, i32 181, i32 213, i32 22, i32 54, i32 86, i32 118, i32 150, i32 182, i32 214, i32 23, i32 55, i32 87, i32 119, i32 151, i32 183, i32 215, i32 24, i32 56, i32 88, i32 120, i32 152, i32 184, i32 216, i32 25, i32 57, i32 89, i32 121, i32 153, i32 185, i32 217, i32 26, i32 58, i32 90, i32 122, i32 154, i32 186, i32 218, i32 27, i32 59, i32 91, i32 123, i32 155, i32 187, i32 219, i32 28, i32 60, i32 92, i32 124, i32 156, i32 188, i32 220, i32 29, i32 61, i32 93, i32 125, i32 157, i32 189, i32 221, i32 30, i32 62, i32 94, i32 126, i32 158, i32 190, i32 222, i32 31, i32 63, i32 95, i32 127, i32 159, i32 191, i32 223>7665 store <224 x i16> %interleaved.vec, ptr %out.vec, align 647666 ret void7667}7668 7669define void @store_i16_stride7_vf64(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %in.vecptr5, ptr %in.vecptr6, ptr %out.vec) nounwind {7670; SSE-LABEL: store_i16_stride7_vf64:7671; SSE: # %bb.0:7672; SSE-NEXT: subq $1640, %rsp # imm = 0x6687673; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax7674; SSE-NEXT: movdqa 112(%rdi), %xmm157675; SSE-NEXT: movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7676; SSE-NEXT: movdqa 112(%rsi), %xmm27677; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7678; SSE-NEXT: movdqa 96(%rdx), %xmm57679; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7680; SSE-NEXT: movdqa 112(%rdx), %xmm107681; SSE-NEXT: movdqa 96(%rcx), %xmm127682; SSE-NEXT: movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7683; SSE-NEXT: movdqa 112(%rcx), %xmm117684; SSE-NEXT: movdqa 112(%r8), %xmm97685; SSE-NEXT: movdqa 112(%r9), %xmm87686; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7687; SSE-NEXT: movaps 112(%rax), %xmm77688; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm10[2,2,2,2]7689; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7690; SSE-NEXT: movdqa {{.*#+}} xmm13 = [65535,65535,65535,65535,65535,65535,0,65535]7691; SSE-NEXT: movdqa %xmm13, %xmm17692; SSE-NEXT: pandn %xmm0, %xmm17693; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm11[3,3,3,3,4,5,6,7]7694; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7695; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]7696; SSE-NEXT: pand %xmm13, %xmm07697; SSE-NEXT: por %xmm1, %xmm07698; SSE-NEXT: punpckhwd {{.*#+}} xmm15 = xmm15[4],xmm2[4],xmm15[5],xmm2[5],xmm15[6],xmm2[6],xmm15[7],xmm2[7]7699; SSE-NEXT: movdqa %xmm15, %xmm17700; SSE-NEXT: movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7701; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[3,0]7702; SSE-NEXT: movdqa {{.*#+}} xmm3 = [65535,0,65535,65535,65535,65535,65535,65535]7703; SSE-NEXT: pand %xmm3, %xmm07704; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm9[1,1,1,1]7705; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7706; SSE-NEXT: pandn %xmm2, %xmm37707; SSE-NEXT: por %xmm0, %xmm37708; SSE-NEXT: movdqa %xmm8, %xmm07709; SSE-NEXT: psrld $16, %xmm07710; SSE-NEXT: movdqa %xmm0, %xmm47711; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[1,0],xmm3[0,0]7712; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[2,0],xmm1[0,2]7713; SSE-NEXT: movaps {{.*#+}} xmm1 = [65535,65535,65535,0,65535,65535,65535,65535]7714; SSE-NEXT: andps %xmm1, %xmm47715; SSE-NEXT: andnps %xmm7, %xmm17716; SSE-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7717; SSE-NEXT: orps %xmm4, %xmm17718; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7719; SSE-NEXT: movdqa %xmm12, %xmm17720; SSE-NEXT: psrlq $48, %xmm17721; SSE-NEXT: movdqa %xmm5, %xmm37722; SSE-NEXT: punpckhqdq {{.*#+}} xmm3 = xmm3[1],xmm1[1]7723; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,0,65535,65535,65535]7724; SSE-NEXT: movdqa %xmm2, %xmm17725; SSE-NEXT: pandn %xmm3, %xmm17726; SSE-NEXT: movdqa 96(%rdi), %xmm47727; SSE-NEXT: movdqa %xmm4, (%rsp) # 16-byte Spill7728; SSE-NEXT: movdqa 96(%rsi), %xmm37729; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7730; SSE-NEXT: punpckhwd {{.*#+}} xmm4 = xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7]7731; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7732; SSE-NEXT: movdqa %xmm4, %xmm37733; SSE-NEXT: psrldq {{.*#+}} xmm3 = xmm3[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero7734; SSE-NEXT: por %xmm1, %xmm37735; SSE-NEXT: movdqa 96(%r8), %xmm17736; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7737; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]7738; SSE-NEXT: movdqa {{.*#+}} xmm5 = [65535,65535,65535,65535,65535,0,65535,65535]7739; SSE-NEXT: movdqa %xmm5, %xmm47740; SSE-NEXT: movdqa %xmm5, %xmm147741; SSE-NEXT: pandn %xmm1, %xmm47742; SSE-NEXT: por %xmm3, %xmm47743; SSE-NEXT: movdqa 96(%r9), %xmm17744; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7745; SSE-NEXT: psrld $16, %xmm17746; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,0],xmm4[2,0]7747; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm1[2,0]7748; SSE-NEXT: movdqa 96(%rax), %xmm17749; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7750; SSE-NEXT: movdqa {{.*#+}} xmm5 = [0,65535,65535,65535,65535,65535,65535,0]7751; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,3,3,3]7752; SSE-NEXT: movdqa %xmm5, %xmm47753; SSE-NEXT: pandn %xmm1, %xmm47754; SSE-NEXT: andps %xmm5, %xmm37755; SSE-NEXT: por %xmm3, %xmm47756; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7757; SSE-NEXT: movdqa %xmm11, %xmm17758; SSE-NEXT: psrlq $48, %xmm17759; SSE-NEXT: movdqa %xmm10, %xmm37760; SSE-NEXT: punpckhqdq {{.*#+}} xmm3 = xmm3[1],xmm1[1]7761; SSE-NEXT: movdqa %xmm2, %xmm17762; SSE-NEXT: pandn %xmm3, %xmm17763; SSE-NEXT: movdqa %xmm15, %xmm37764; SSE-NEXT: psrldq {{.*#+}} xmm3 = xmm3[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero7765; SSE-NEXT: por %xmm1, %xmm37766; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm9[2,2,3,3]7767; SSE-NEXT: movdqa %xmm14, %xmm47768; SSE-NEXT: pandn %xmm1, %xmm47769; SSE-NEXT: por %xmm3, %xmm47770; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,0],xmm4[2,0]7771; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm0[2,0]7772; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm7[3,3,3,3]7773; SSE-NEXT: movdqa %xmm5, %xmm17774; SSE-NEXT: pandn %xmm0, %xmm17775; SSE-NEXT: andps %xmm5, %xmm37776; SSE-NEXT: por %xmm3, %xmm17777; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7778; SSE-NEXT: movdqa (%rax), %xmm117779; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm11[0,1,0,1]7780; SSE-NEXT: movdqa %xmm14, %xmm17781; SSE-NEXT: pandn %xmm0, %xmm17782; SSE-NEXT: movdqa (%r8), %xmm87783; SSE-NEXT: movdqa (%r9), %xmm77784; SSE-NEXT: movdqa %xmm8, %xmm37785; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7786; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm7[0],xmm3[1],xmm7[1],xmm3[2],xmm7[2],xmm3[3],xmm7[3]7787; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7788; SSE-NEXT: movdqa %xmm3, %xmm07789; SSE-NEXT: movdqa %xmm3, %xmm67790; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7791; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]7792; SSE-NEXT: pand %xmm14, %xmm07793; SSE-NEXT: por %xmm1, %xmm07794; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,0,0,65535,65535]7795; SSE-NEXT: movdqa %xmm2, %xmm17796; SSE-NEXT: movdqa %xmm2, %xmm107797; SSE-NEXT: pandn %xmm0, %xmm17798; SSE-NEXT: movdqa (%rcx), %xmm57799; SSE-NEXT: movdqa %xmm5, %xmm07800; SSE-NEXT: psrld $16, %xmm07801; SSE-NEXT: movdqa (%rdx), %xmm27802; SSE-NEXT: movdqa %xmm2, %xmm37803; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]7804; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,0,65535,65535,65535,65535,65535]7805; SSE-NEXT: movdqa %xmm0, %xmm47806; SSE-NEXT: movdqa %xmm0, %xmm127807; SSE-NEXT: pandn %xmm3, %xmm47808; SSE-NEXT: movdqa (%rdi), %xmm97809; SSE-NEXT: movdqa (%rsi), %xmm07810; SSE-NEXT: movdqa %xmm0, %xmm37811; SSE-NEXT: movdqa %xmm0, %xmm157812; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7813; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm9[0],xmm3[1],xmm9[1],xmm3[2],xmm9[2],xmm3[3],xmm9[3]7814; SSE-NEXT: movdqa %xmm9, %xmm07815; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7816; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[2,2,2,2,4,5,6,7]7817; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,4]7818; SSE-NEXT: pand %xmm12, %xmm37819; SSE-NEXT: movdqa %xmm12, %xmm97820; SSE-NEXT: por %xmm4, %xmm37821; SSE-NEXT: pand %xmm10, %xmm37822; SSE-NEXT: por %xmm1, %xmm37823; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7824; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,0,65535,65535,65535,65535]7825; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7826; SSE-NEXT: pandn %xmm11, %xmm17827; SSE-NEXT: movdqa %xmm6, %xmm37828; SSE-NEXT: psrldq {{.*#+}} xmm3 = xmm3[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero7829; SSE-NEXT: por %xmm1, %xmm37830; SSE-NEXT: movdqa {{.*#+}} xmm12 = [65535,0,0,0,65535,65535,65535,65535]7831; SSE-NEXT: movdqa %xmm12, %xmm17832; SSE-NEXT: pandn %xmm3, %xmm17833; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7834; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm2[2,2,2,2]7835; SSE-NEXT: movdqa %xmm13, %xmm47836; SSE-NEXT: pandn %xmm3, %xmm47837; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm5[0,1,2,3,4,4,4,4]7838; SSE-NEXT: pand %xmm13, %xmm37839; SSE-NEXT: por %xmm4, %xmm37840; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm15[4],xmm0[5],xmm15[5],xmm0[6],xmm15[6],xmm0[7],xmm15[7]7841; SSE-NEXT: movdqa %xmm0, %xmm47842; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7843; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[3,3]7844; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm5[3,3,3,3,4,5,6,7]7845; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7846; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm4[0,2]7847; SSE-NEXT: andps %xmm12, %xmm37848; SSE-NEXT: orps %xmm1, %xmm37849; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7850; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm11[2,3,2,3]7851; SSE-NEXT: movdqa {{.*#+}} xmm13 = [65535,0,65535,65535,65535,65535,65535,65535]7852; SSE-NEXT: movdqa %xmm13, %xmm37853; SSE-NEXT: pandn %xmm1, %xmm37854; SSE-NEXT: punpckhwd {{.*#+}} xmm7 = xmm7[4],xmm8[4],xmm7[5],xmm8[5],xmm7[6],xmm8[6],xmm7[7],xmm8[7]7855; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm7[2,2,2,2,4,5,6,7]7856; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,5,4]7857; SSE-NEXT: pand %xmm13, %xmm17858; SSE-NEXT: movdqa %xmm13, %xmm157859; SSE-NEXT: por %xmm3, %xmm17860; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]7861; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7862; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,2],xmm2[2,3]7863; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,2],xmm1[0,3]7864; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7865; SSE-NEXT: movdqa 16(%rax), %xmm117866; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm11[0,1,0,1]7867; SSE-NEXT: movdqa %xmm14, %xmm27868; SSE-NEXT: movdqa %xmm14, %xmm37869; SSE-NEXT: pandn %xmm1, %xmm37870; SSE-NEXT: movdqa 16(%r8), %xmm147871; SSE-NEXT: movdqa 16(%r9), %xmm137872; SSE-NEXT: movdqa %xmm14, %xmm57873; SSE-NEXT: movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7874; SSE-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm13[0],xmm5[1],xmm13[1],xmm5[2],xmm13[2],xmm5[3],xmm13[3]7875; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7876; SSE-NEXT: movdqa %xmm5, %xmm17877; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7878; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]7879; SSE-NEXT: pand %xmm2, %xmm17880; SSE-NEXT: por %xmm3, %xmm17881; SSE-NEXT: movdqa %xmm10, %xmm37882; SSE-NEXT: pandn %xmm1, %xmm37883; SSE-NEXT: movdqa 16(%rcx), %xmm87884; SSE-NEXT: movdqa %xmm8, %xmm17885; SSE-NEXT: psrld $16, %xmm17886; SSE-NEXT: movdqa 16(%rdx), %xmm77887; SSE-NEXT: movdqa %xmm7, %xmm47888; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]7889; SSE-NEXT: movdqa %xmm9, %xmm27890; SSE-NEXT: movdqa %xmm9, %xmm17891; SSE-NEXT: pandn %xmm4, %xmm17892; SSE-NEXT: movdqa 16(%rdi), %xmm07893; SSE-NEXT: movdqa 16(%rsi), %xmm67894; SSE-NEXT: movdqa %xmm6, %xmm47895; SSE-NEXT: movdqa %xmm6, %xmm97896; SSE-NEXT: movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7897; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3]7898; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7899; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]7900; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,5,4]7901; SSE-NEXT: pand %xmm2, %xmm47902; SSE-NEXT: por %xmm1, %xmm47903; SSE-NEXT: pand %xmm10, %xmm47904; SSE-NEXT: movdqa %xmm10, %xmm67905; SSE-NEXT: por %xmm3, %xmm47906; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7907; SSE-NEXT: movdqa {{.*#+}} xmm10 = [65535,65535,65535,0,65535,65535,65535,65535]7908; SSE-NEXT: movdqa %xmm10, %xmm17909; SSE-NEXT: pandn %xmm11, %xmm17910; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7911; SSE-NEXT: psrldq {{.*#+}} xmm5 = xmm5[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero7912; SSE-NEXT: por %xmm1, %xmm57913; SSE-NEXT: movdqa %xmm12, %xmm17914; SSE-NEXT: pandn %xmm5, %xmm17915; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7916; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm7[2,2,2,2]7917; SSE-NEXT: movdqa {{.*#+}} xmm5 = [65535,65535,65535,65535,65535,65535,0,65535]7918; SSE-NEXT: movdqa %xmm5, %xmm47919; SSE-NEXT: pandn %xmm3, %xmm47920; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm8[0,1,2,3,4,4,4,4]7921; SSE-NEXT: pand %xmm5, %xmm37922; SSE-NEXT: por %xmm4, %xmm37923; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm9[4],xmm0[5],xmm9[5],xmm0[6],xmm9[6],xmm0[7],xmm9[7]7924; SSE-NEXT: movdqa %xmm0, %xmm47925; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7926; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[3,3]7927; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm8[3,3,3,3,4,5,6,7]7928; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7929; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm4[0,2]7930; SSE-NEXT: andps %xmm12, %xmm37931; SSE-NEXT: orps %xmm1, %xmm37932; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7933; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm11[2,3,2,3]7934; SSE-NEXT: movdqa %xmm15, %xmm37935; SSE-NEXT: pandn %xmm1, %xmm37936; SSE-NEXT: movdqa %xmm13, %xmm17937; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm14[4],xmm1[5],xmm14[5],xmm1[6],xmm14[6],xmm1[7],xmm14[7]7938; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,2,2,2,4,5,6,7]7939; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,5,4]7940; SSE-NEXT: pand %xmm15, %xmm17941; SSE-NEXT: por %xmm3, %xmm17942; SSE-NEXT: punpckhwd {{.*#+}} xmm7 = xmm7[4],xmm8[4],xmm7[5],xmm8[5],xmm7[6],xmm8[6],xmm7[7],xmm8[7]7943; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7944; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,2],xmm7[2,3]7945; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,2],xmm1[0,3]7946; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7947; SSE-NEXT: movdqa 32(%rax), %xmm77948; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm7[0,1,0,1]7949; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,65535,65535,0,65535,65535]7950; SSE-NEXT: movdqa %xmm2, %xmm37951; SSE-NEXT: pandn %xmm1, %xmm37952; SSE-NEXT: movdqa 32(%r8), %xmm147953; SSE-NEXT: movdqa 32(%r9), %xmm137954; SSE-NEXT: movdqa %xmm14, %xmm07955; SSE-NEXT: movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7956; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm13[0],xmm0[1],xmm13[1],xmm0[2],xmm13[2],xmm0[3],xmm13[3]7957; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7958; SSE-NEXT: movdqa %xmm0, %xmm17959; SSE-NEXT: movdqa %xmm0, %xmm117960; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7961; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]7962; SSE-NEXT: pand %xmm2, %xmm17963; SSE-NEXT: por %xmm3, %xmm17964; SSE-NEXT: movdqa %xmm6, %xmm87965; SSE-NEXT: movdqa %xmm6, %xmm37966; SSE-NEXT: pandn %xmm1, %xmm37967; SSE-NEXT: movdqa 32(%rcx), %xmm27968; SSE-NEXT: movdqa %xmm2, %xmm17969; SSE-NEXT: psrld $16, %xmm17970; SSE-NEXT: movdqa 32(%rdx), %xmm57971; SSE-NEXT: movdqa %xmm5, %xmm47972; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]7973; SSE-NEXT: movdqa {{.*#+}} xmm12 = [65535,0,0,65535,65535,65535,65535,65535]7974; SSE-NEXT: movdqa %xmm12, %xmm17975; SSE-NEXT: pandn %xmm4, %xmm17976; SSE-NEXT: movdqa 32(%rdi), %xmm97977; SSE-NEXT: movdqa 32(%rsi), %xmm07978; SSE-NEXT: movdqa %xmm0, %xmm47979; SSE-NEXT: movdqa %xmm0, %xmm67980; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7981; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm9[0],xmm4[1],xmm9[1],xmm4[2],xmm9[2],xmm4[3],xmm9[3]7982; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7983; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]7984; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm4[0,1,2,3,4,5,5,4]7985; SSE-NEXT: pand %xmm12, %xmm07986; SSE-NEXT: por %xmm1, %xmm07987; SSE-NEXT: pand %xmm8, %xmm07988; SSE-NEXT: por %xmm3, %xmm07989; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7990; SSE-NEXT: movdqa %xmm10, %xmm17991; SSE-NEXT: movdqa %xmm10, %xmm157992; SSE-NEXT: pandn %xmm7, %xmm17993; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7994; SSE-NEXT: movdqa %xmm11, %xmm37995; SSE-NEXT: psrldq {{.*#+}} xmm3 = xmm3[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero7996; SSE-NEXT: por %xmm1, %xmm37997; SSE-NEXT: movdqa {{.*#+}} xmm10 = [65535,0,0,0,65535,65535,65535,65535]7998; SSE-NEXT: movdqa %xmm10, %xmm17999; SSE-NEXT: pandn %xmm3, %xmm18000; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm5[2,2,2,2]8001; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8002; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,65535,0,65535]8003; SSE-NEXT: movdqa %xmm0, %xmm48004; SSE-NEXT: pandn %xmm3, %xmm48005; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm2[0,1,2,3,4,4,4,4]8006; SSE-NEXT: pand %xmm0, %xmm38007; SSE-NEXT: por %xmm4, %xmm38008; SSE-NEXT: movdqa %xmm9, %xmm08009; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]8010; SSE-NEXT: movdqa %xmm0, %xmm48011; SSE-NEXT: movdqa %xmm0, %xmm118012; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8013; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[3,3]8014; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm2[3,3,3,3,4,5,6,7]8015; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8016; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm4[0,2]8017; SSE-NEXT: andps %xmm10, %xmm08018; SSE-NEXT: orps %xmm1, %xmm08019; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8020; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm7[2,3,2,3]8021; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,65535,65535,65535]8022; SSE-NEXT: movdqa %xmm0, %xmm38023; SSE-NEXT: pandn %xmm1, %xmm38024; SSE-NEXT: movdqa %xmm13, %xmm18025; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm14[4],xmm1[5],xmm14[5],xmm1[6],xmm14[6],xmm1[7],xmm14[7]8026; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,2,2,2,4,5,6,7]8027; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,5,4]8028; SSE-NEXT: pand %xmm0, %xmm18029; SSE-NEXT: por %xmm3, %xmm18030; SSE-NEXT: punpckhwd {{.*#+}} xmm5 = xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]8031; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8032; SSE-NEXT: movdqa %xmm11, %xmm08033; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,2],xmm5[2,3]8034; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,2],xmm1[0,3]8035; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8036; SSE-NEXT: movdqa 48(%rax), %xmm58037; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[0,1,0,1]8038; SSE-NEXT: movdqa {{.*#+}} xmm14 = [65535,65535,65535,65535,65535,0,65535,65535]8039; SSE-NEXT: movdqa %xmm14, %xmm38040; SSE-NEXT: pandn %xmm1, %xmm38041; SSE-NEXT: movdqa 48(%r8), %xmm08042; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8043; SSE-NEXT: movdqa 48(%r9), %xmm128044; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm12[0],xmm0[1],xmm12[1],xmm0[2],xmm12[2],xmm0[3],xmm12[3]8045; SSE-NEXT: movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8046; SSE-NEXT: movdqa %xmm0, %xmm18047; SSE-NEXT: movdqa %xmm0, %xmm118048; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8049; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]8050; SSE-NEXT: pand %xmm14, %xmm18051; SSE-NEXT: por %xmm3, %xmm18052; SSE-NEXT: movdqa %xmm8, %xmm78053; SSE-NEXT: movdqa %xmm8, %xmm38054; SSE-NEXT: pandn %xmm1, %xmm38055; SSE-NEXT: movdqa 48(%rcx), %xmm08056; SSE-NEXT: movdqa %xmm0, %xmm18057; SSE-NEXT: movdqa %xmm0, %xmm98058; SSE-NEXT: psrld $16, %xmm18059; SSE-NEXT: movdqa 48(%rdx), %xmm08060; SSE-NEXT: movdqa %xmm0, %xmm48061; SSE-NEXT: movdqa %xmm0, %xmm108062; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]8063; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,0,0,65535,65535,65535,65535,65535]8064; SSE-NEXT: movdqa %xmm2, %xmm18065; SSE-NEXT: pandn %xmm4, %xmm18066; SSE-NEXT: movdqa 48(%rdi), %xmm138067; SSE-NEXT: movdqa 48(%rsi), %xmm08068; SSE-NEXT: movdqa %xmm0, %xmm48069; SSE-NEXT: movdqa %xmm0, %xmm88070; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8071; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm13[0],xmm4[1],xmm13[1],xmm4[2],xmm13[2],xmm4[3],xmm13[3]8072; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8073; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]8074; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm4[0,1,2,3,4,5,5,4]8075; SSE-NEXT: pand %xmm2, %xmm08076; SSE-NEXT: por %xmm1, %xmm08077; SSE-NEXT: pand %xmm7, %xmm08078; SSE-NEXT: por %xmm3, %xmm08079; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8080; SSE-NEXT: pandn %xmm5, %xmm158081; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8082; SSE-NEXT: movdqa %xmm11, %xmm38083; SSE-NEXT: psrldq {{.*#+}} xmm3 = xmm3[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero8084; SSE-NEXT: por %xmm15, %xmm38085; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,0,0,0,65535,65535,65535,65535]8086; SSE-NEXT: movdqa %xmm2, %xmm18087; SSE-NEXT: pandn %xmm3, %xmm18088; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8089; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm10[2,2,2,2]8090; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,65535,0,65535]8091; SSE-NEXT: movdqa %xmm0, %xmm48092; SSE-NEXT: pandn %xmm3, %xmm48093; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm9[0,1,2,3,4,4,4,4]8094; SSE-NEXT: pand %xmm0, %xmm38095; SSE-NEXT: por %xmm4, %xmm38096; SSE-NEXT: movdqa %xmm13, %xmm08097; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm8[4],xmm0[5],xmm8[5],xmm0[6],xmm8[6],xmm0[7],xmm8[7]8098; SSE-NEXT: movdqa %xmm0, %xmm48099; SSE-NEXT: movdqa %xmm0, %xmm68100; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8101; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[3,3]8102; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm9[3,3,3,3,4,5,6,7]8103; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8104; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm4[0,2]8105; SSE-NEXT: andps %xmm2, %xmm08106; SSE-NEXT: orps %xmm1, %xmm08107; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8108; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[2,3,2,3]8109; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,65535,65535,65535]8110; SSE-NEXT: movdqa %xmm0, %xmm38111; SSE-NEXT: pandn %xmm1, %xmm38112; SSE-NEXT: punpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload8113; SSE-NEXT: # xmm12 = xmm12[4],mem[4],xmm12[5],mem[5],xmm12[6],mem[6],xmm12[7],mem[7]8114; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm12[2,2,2,2,4,5,6,7]8115; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,5,4]8116; SSE-NEXT: pand %xmm0, %xmm18117; SSE-NEXT: por %xmm3, %xmm18118; SSE-NEXT: movdqa %xmm10, %xmm38119; SSE-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm9[4],xmm3[5],xmm9[5],xmm3[6],xmm9[6],xmm3[7],xmm9[7]8120; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8121; SSE-NEXT: movdqa %xmm6, %xmm08122; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,2],xmm3[2,3]8123; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,2],xmm1[0,3]8124; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8125; SSE-NEXT: movdqa 64(%rax), %xmm58126; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[0,1,0,1]8127; SSE-NEXT: movdqa %xmm14, %xmm38128; SSE-NEXT: pandn %xmm1, %xmm38129; SSE-NEXT: movdqa 64(%r8), %xmm18130; SSE-NEXT: movdqa 64(%r9), %xmm108131; SSE-NEXT: movdqa %xmm1, %xmm08132; SSE-NEXT: movdqa %xmm1, %xmm78133; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8134; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm10[0],xmm0[1],xmm10[1],xmm0[2],xmm10[2],xmm0[3],xmm10[3]8135; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8136; SSE-NEXT: movdqa %xmm0, %xmm18137; SSE-NEXT: movdqa %xmm0, %xmm28138; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8139; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]8140; SSE-NEXT: pand %xmm14, %xmm18141; SSE-NEXT: por %xmm3, %xmm18142; SSE-NEXT: movdqa {{.*#+}} xmm14 = [65535,65535,65535,0,0,0,65535,65535]8143; SSE-NEXT: movdqa %xmm14, %xmm38144; SSE-NEXT: pandn %xmm1, %xmm38145; SSE-NEXT: movdqa 64(%rcx), %xmm08146; SSE-NEXT: movdqa %xmm0, %xmm18147; SSE-NEXT: movdqa %xmm0, %xmm118148; SSE-NEXT: psrld $16, %xmm18149; SSE-NEXT: movdqa 64(%rdx), %xmm08150; SSE-NEXT: movdqa %xmm0, %xmm48151; SSE-NEXT: movdqa %xmm0, %xmm138152; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]8153; SSE-NEXT: movdqa {{.*#+}} xmm12 = [65535,0,0,65535,65535,65535,65535,65535]8154; SSE-NEXT: movdqa %xmm12, %xmm18155; SSE-NEXT: pandn %xmm4, %xmm18156; SSE-NEXT: movdqa 64(%rdi), %xmm88157; SSE-NEXT: movdqa 64(%rsi), %xmm08158; SSE-NEXT: movdqa %xmm0, %xmm48159; SSE-NEXT: movdqa %xmm0, %xmm68160; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8161; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],xmm8[3]8162; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8163; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]8164; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm4[0,1,2,3,4,5,5,4]8165; SSE-NEXT: pand %xmm12, %xmm08166; SSE-NEXT: por %xmm1, %xmm08167; SSE-NEXT: pand %xmm14, %xmm08168; SSE-NEXT: por %xmm3, %xmm08169; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8170; SSE-NEXT: movdqa {{.*#+}} xmm15 = [65535,65535,65535,0,65535,65535,65535,65535]8171; SSE-NEXT: movdqa %xmm15, %xmm18172; SSE-NEXT: pandn %xmm5, %xmm18173; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8174; SSE-NEXT: movdqa %xmm2, %xmm38175; SSE-NEXT: psrldq {{.*#+}} xmm3 = xmm3[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero8176; SSE-NEXT: por %xmm1, %xmm38177; SSE-NEXT: movdqa {{.*#+}} xmm9 = [65535,0,0,0,65535,65535,65535,65535]8178; SSE-NEXT: movdqa %xmm9, %xmm18179; SSE-NEXT: pandn %xmm3, %xmm18180; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm13[2,2,2,2]8181; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8182; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,65535,0,65535]8183; SSE-NEXT: movdqa %xmm0, %xmm48184; SSE-NEXT: pandn %xmm3, %xmm48185; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm11[0,1,2,3,4,4,4,4]8186; SSE-NEXT: pand %xmm0, %xmm38187; SSE-NEXT: por %xmm4, %xmm38188; SSE-NEXT: movdqa %xmm8, %xmm08189; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]8190; SSE-NEXT: movdqa %xmm0, %xmm48191; SSE-NEXT: movdqa %xmm0, %xmm28192; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8193; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[3,3]8194; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm11[3,3,3,3,4,5,6,7]8195; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8196; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm4[0,2]8197; SSE-NEXT: andps %xmm9, %xmm08198; SSE-NEXT: orps %xmm1, %xmm08199; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8200; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[2,3,2,3]8201; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,65535,65535,65535]8202; SSE-NEXT: movdqa %xmm0, %xmm38203; SSE-NEXT: pandn %xmm1, %xmm38204; SSE-NEXT: movdqa %xmm10, %xmm18205; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm7[4],xmm1[5],xmm7[5],xmm1[6],xmm7[6],xmm1[7],xmm7[7]8206; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,2,2,2,4,5,6,7]8207; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,5,4]8208; SSE-NEXT: pand %xmm0, %xmm18209; SSE-NEXT: por %xmm3, %xmm18210; SSE-NEXT: movdqa %xmm13, %xmm38211; SSE-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm11[4],xmm3[5],xmm11[5],xmm3[6],xmm11[6],xmm3[7],xmm11[7]8212; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8213; SSE-NEXT: movdqa %xmm2, %xmm08214; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,2],xmm3[2,3]8215; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,2],xmm1[0,3]8216; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8217; SSE-NEXT: movdqa 80(%rax), %xmm98218; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm9[0,1,0,1]8219; SSE-NEXT: movdqa {{.*#+}} xmm12 = [65535,65535,65535,65535,65535,0,65535,65535]8220; SSE-NEXT: movdqa %xmm12, %xmm38221; SSE-NEXT: pandn %xmm1, %xmm38222; SSE-NEXT: movdqa 80(%r8), %xmm18223; SSE-NEXT: movdqa 80(%r9), %xmm118224; SSE-NEXT: movdqa %xmm1, %xmm88225; SSE-NEXT: movdqa %xmm1, %xmm108226; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8227; SSE-NEXT: punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm11[0],xmm8[1],xmm11[1],xmm8[2],xmm11[2],xmm8[3],xmm11[3]8228; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8229; SSE-NEXT: movdqa %xmm8, %xmm18230; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8231; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]8232; SSE-NEXT: pand %xmm12, %xmm18233; SSE-NEXT: por %xmm3, %xmm18234; SSE-NEXT: movdqa %xmm14, %xmm38235; SSE-NEXT: pandn %xmm1, %xmm38236; SSE-NEXT: movdqa 80(%rcx), %xmm08237; SSE-NEXT: movdqa %xmm0, %xmm18238; SSE-NEXT: movdqa %xmm0, %xmm138239; SSE-NEXT: psrld $16, %xmm18240; SSE-NEXT: movdqa 80(%rdx), %xmm28241; SSE-NEXT: movdqa %xmm2, %xmm48242; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]8243; SSE-NEXT: movdqa {{.*#+}} xmm5 = [65535,0,0,65535,65535,65535,65535,65535]8244; SSE-NEXT: movdqa %xmm5, %xmm18245; SSE-NEXT: pandn %xmm4, %xmm18246; SSE-NEXT: movdqa 80(%rdi), %xmm78247; SSE-NEXT: movdqa 80(%rsi), %xmm08248; SSE-NEXT: movdqa %xmm0, %xmm48249; SSE-NEXT: movdqa %xmm0, %xmm68250; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8251; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm7[0],xmm4[1],xmm7[1],xmm4[2],xmm7[2],xmm4[3],xmm7[3]8252; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8253; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]8254; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm4[0,1,2,3,4,5,5,4]8255; SSE-NEXT: pand %xmm5, %xmm08256; SSE-NEXT: por %xmm1, %xmm08257; SSE-NEXT: pand %xmm14, %xmm08258; SSE-NEXT: por %xmm3, %xmm08259; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8260; SSE-NEXT: movdqa %xmm15, %xmm18261; SSE-NEXT: movdqa %xmm9, %xmm58262; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8263; SSE-NEXT: pandn %xmm9, %xmm18264; SSE-NEXT: psrldq {{.*#+}} xmm8 = xmm8[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero8265; SSE-NEXT: por %xmm1, %xmm88266; SSE-NEXT: movdqa {{.*#+}} xmm9 = [65535,0,0,0,65535,65535,65535,65535]8267; SSE-NEXT: movdqa %xmm9, %xmm18268; SSE-NEXT: pandn %xmm8, %xmm18269; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm2[2,2,2,2]8270; SSE-NEXT: movdqa %xmm2, %xmm88271; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8272; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,65535,0,65535]8273; SSE-NEXT: movdqa %xmm0, %xmm48274; SSE-NEXT: pandn %xmm3, %xmm48275; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm13[0,1,2,3,4,4,4,4]8276; SSE-NEXT: pand %xmm0, %xmm38277; SSE-NEXT: por %xmm4, %xmm38278; SSE-NEXT: movdqa %xmm7, %xmm08279; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]8280; SSE-NEXT: movdqa %xmm0, %xmm48281; SSE-NEXT: movdqa %xmm0, %xmm28282; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8283; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[3,3]8284; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm13[3,3,3,3,4,5,6,7]8285; SSE-NEXT: movdqa %xmm13, %xmm68286; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8287; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm4[0,2]8288; SSE-NEXT: andps %xmm9, %xmm08289; SSE-NEXT: movaps %xmm9, %xmm138290; SSE-NEXT: orps %xmm1, %xmm08291; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8292; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[2,3,2,3]8293; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,65535,65535,65535]8294; SSE-NEXT: movdqa %xmm0, %xmm38295; SSE-NEXT: pandn %xmm1, %xmm38296; SSE-NEXT: movdqa %xmm11, %xmm18297; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm10[4],xmm1[5],xmm10[5],xmm1[6],xmm10[6],xmm1[7],xmm10[7]8298; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,2,2,2,4,5,6,7]8299; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,5,4]8300; SSE-NEXT: pand %xmm0, %xmm18301; SSE-NEXT: movdqa %xmm0, %xmm118302; SSE-NEXT: por %xmm3, %xmm18303; SSE-NEXT: punpckhwd {{.*#+}} xmm8 = xmm8[4],xmm6[4],xmm8[5],xmm6[5],xmm8[6],xmm6[6],xmm8[7],xmm6[7]8304; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8305; SSE-NEXT: movdqa %xmm2, %xmm08306; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,2],xmm8[2,3]8307; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,2],xmm1[0,3]8308; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8309; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload8310; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[0,1,0,1]8311; SSE-NEXT: movdqa %xmm12, %xmm38312; SSE-NEXT: pandn %xmm1, %xmm38313; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload8314; SSE-NEXT: movdqa %xmm8, %xmm08315; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload8316; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3]8317; SSE-NEXT: movdqa %xmm0, %xmm18318; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8319; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]8320; SSE-NEXT: pand %xmm12, %xmm18321; SSE-NEXT: por %xmm3, %xmm18322; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8323; SSE-NEXT: movdqa %xmm2, %xmm38324; SSE-NEXT: psrld $16, %xmm38325; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload8326; SSE-NEXT: movdqa %xmm7, %xmm48327; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]8328; SSE-NEXT: movdqa {{.*#+}} xmm14 = [65535,0,0,65535,65535,65535,65535,65535]8329; SSE-NEXT: movdqa %xmm14, %xmm38330; SSE-NEXT: pandn %xmm4, %xmm38331; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload8332; SSE-NEXT: punpcklwd (%rsp), %xmm4 # 16-byte Folded Reload8333; SSE-NEXT: # xmm4 = xmm4[0],mem[0],xmm4[1],mem[1],xmm4[2],mem[2],xmm4[3],mem[3]8334; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]8335; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,5,4]8336; SSE-NEXT: pand %xmm14, %xmm48337; SSE-NEXT: por %xmm3, %xmm48338; SSE-NEXT: movdqa {{.*#+}} xmm10 = [65535,65535,65535,0,0,0,65535,65535]8339; SSE-NEXT: pand %xmm10, %xmm48340; SSE-NEXT: pandn %xmm1, %xmm108341; SSE-NEXT: por %xmm4, %xmm108342; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8343; SSE-NEXT: movdqa %xmm15, %xmm38344; SSE-NEXT: movdqa %xmm15, %xmm128345; SSE-NEXT: pandn %xmm5, %xmm38346; SSE-NEXT: movdqa %xmm5, %xmm108347; SSE-NEXT: movdqa %xmm0, %xmm18348; SSE-NEXT: psrldq {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero8349; SSE-NEXT: por %xmm3, %xmm18350; SSE-NEXT: movdqa %xmm7, %xmm148351; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm7[2,2,2,2]8352; SSE-NEXT: movdqa {{.*#+}} xmm9 = [65535,65535,65535,65535,65535,65535,0,65535]8353; SSE-NEXT: movdqa %xmm9, %xmm48354; SSE-NEXT: pandn %xmm3, %xmm48355; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm2[0,1,2,3,4,4,4,4]8356; SSE-NEXT: pand %xmm9, %xmm58357; SSE-NEXT: por %xmm4, %xmm58358; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8359; SSE-NEXT: movaps %xmm0, %xmm38360; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm5[3,3]8361; SSE-NEXT: movdqa %xmm7, %xmm48362; SSE-NEXT: punpckhwd {{.*#+}} xmm4 = xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7]8363; SSE-NEXT: movdqa %xmm4, %xmm58364; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8365; SSE-NEXT: punpcklwd {{.*#+}} xmm14 = xmm14[0],xmm2[0],xmm14[1],xmm2[1],xmm14[2],xmm2[2],xmm14[3],xmm2[3]8366; SSE-NEXT: movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8367; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm2[3,3,3,3,4,5,6,7]8368; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[0,2]8369; SSE-NEXT: movaps %xmm13, %xmm38370; SSE-NEXT: andps %xmm13, %xmm48371; SSE-NEXT: andnps %xmm1, %xmm38372; SSE-NEXT: orps %xmm4, %xmm38373; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8374; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm10[2,3,2,3]8375; SSE-NEXT: movdqa %xmm11, %xmm18376; SSE-NEXT: pandn %xmm3, %xmm18377; SSE-NEXT: movdqa %xmm8, %xmm28378; SSE-NEXT: movdqa %xmm6, %xmm38379; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]8380; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8381; SSE-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm8[4],xmm3[5],xmm8[5],xmm3[6],xmm8[6],xmm3[7],xmm8[7]8382; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[2,2,2,2,4,5,6,7]8383; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,4]8384; SSE-NEXT: pand %xmm11, %xmm38385; SSE-NEXT: movdqa %xmm11, %xmm158386; SSE-NEXT: por %xmm1, %xmm38387; SSE-NEXT: movaps %xmm0, %xmm18388; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm5[2,3]8389; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,2],xmm3[0,3]8390; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8391; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload8392; SSE-NEXT: movdqa %xmm9, %xmm18393; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload8394; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm4[4],xmm1[5],xmm4[5],xmm1[6],xmm4[6],xmm1[7],xmm4[7]8395; SSE-NEXT: movdqa %xmm9, %xmm38396; SSE-NEXT: punpcklwd {{.*#+}} xmm9 = xmm9[0],xmm4[0],xmm9[1],xmm4[1],xmm9[2],xmm4[2],xmm9[3],xmm4[3]8397; SSE-NEXT: psrld $16, %xmm48398; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]8399; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload8400; SSE-NEXT: movdqa %xmm13, %xmm48401; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload8402; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm10[0],xmm4[1],xmm10[1],xmm4[2],xmm10[2],xmm4[3],xmm10[3]8403; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]8404; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,5,4]8405; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload8406; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm6[0,0,0,0]8407; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,5,5]8408; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[2,1],xmm4[3,3]8409; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,0,65535,65535,65535,65535,65535]8410; SSE-NEXT: pand %xmm0, %xmm48411; SSE-NEXT: pandn %xmm3, %xmm08412; SSE-NEXT: por %xmm4, %xmm08413; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload8414; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm11[0,0,1,1]8415; SSE-NEXT: movdqa %xmm12, %xmm48416; SSE-NEXT: pandn %xmm3, %xmm48417; SSE-NEXT: pand %xmm12, %xmm08418; SSE-NEXT: por %xmm0, %xmm48419; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm5[0,2]8420; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8421; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,1,0,1]8422; SSE-NEXT: movdqa {{.*#+}} xmm5 = [65535,65535,65535,65535,65535,0,65535,65535]8423; SSE-NEXT: movdqa %xmm5, %xmm38424; SSE-NEXT: pandn %xmm0, %xmm38425; SSE-NEXT: andps %xmm5, %xmm48426; SSE-NEXT: por %xmm4, %xmm38427; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8428; SSE-NEXT: movdqa %xmm11, %xmm48429; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm11[2,2,2,2]8430; SSE-NEXT: movdqa %xmm11, %xmm08431; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8432; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,0],xmm1[2,0]8433; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8434; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9]8435; SSE-NEXT: movdqa {{.*#+}} xmm4 = [65535,65535,65535,65535,65535,0,0,65535]8436; SSE-NEXT: movdqa %xmm4, %xmm58437; SSE-NEXT: pandn %xmm1, %xmm58438; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8439; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]8440; SSE-NEXT: pand %xmm4, %xmm18441; SSE-NEXT: por %xmm5, %xmm18442; SSE-NEXT: movdqa {{.*#+}} xmm7 = [0,65535,65535,65535,65535,65535,65535,0]8443; SSE-NEXT: movdqa %xmm7, %xmm58444; SSE-NEXT: pandn %xmm3, %xmm58445; SSE-NEXT: pand %xmm7, %xmm18446; SSE-NEXT: por %xmm1, %xmm58447; SSE-NEXT: movdqa %xmm6, %xmm18448; SSE-NEXT: movdqa %xmm6, %xmm78449; SSE-NEXT: psrldq {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero8450; SSE-NEXT: movdqa %xmm15, %xmm38451; SSE-NEXT: pandn %xmm1, %xmm38452; SSE-NEXT: pand %xmm15, %xmm58453; SSE-NEXT: por %xmm5, %xmm38454; SSE-NEXT: movdqa {{.*#+}} xmm5 = [65535,65535,0,65535,65535,65535,65535,65535]8455; SSE-NEXT: pand %xmm5, %xmm38456; SSE-NEXT: movdqa %xmm2, %xmm68457; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm2[2,2,3,3]8458; SSE-NEXT: pandn %xmm1, %xmm58459; SSE-NEXT: por %xmm3, %xmm58460; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8461; SSE-NEXT: movdqa %xmm10, %xmm38462; SSE-NEXT: movdqa %xmm10, %xmm18463; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm10[1,1,1,1,4,5,6,7]8464; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8465; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm13[0],xmm3[1],xmm13[1],xmm3[2],xmm13[2],xmm3[3],xmm13[3]8466; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8467; SSE-NEXT: movdqa %xmm13, %xmm38468; SSE-NEXT: psrld $16, %xmm38469; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]8470; SSE-NEXT: movdqa %xmm4, %xmm38471; SSE-NEXT: pandn %xmm1, %xmm38472; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm9[0,1,2,3,4,5,6,6]8473; SSE-NEXT: pand %xmm4, %xmm18474; SSE-NEXT: por %xmm3, %xmm18475; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1],xmm9[2,3]8476; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0],xmm1[2,3]8477; SSE-NEXT: andps %xmm12, %xmm08478; SSE-NEXT: movdqa %xmm7, %xmm18479; SSE-NEXT: pslld $16, %xmm18480; SSE-NEXT: pandn %xmm1, %xmm128481; SSE-NEXT: por %xmm0, %xmm128482; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,0,65535,65535,65535]8483; SSE-NEXT: pand %xmm1, %xmm128484; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,1,1,3]8485; SSE-NEXT: pandn %xmm0, %xmm18486; SSE-NEXT: por %xmm12, %xmm18487; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8488; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8489; SSE-NEXT: movdqa %xmm1, %xmm08490; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8491; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]8492; SSE-NEXT: movdqa %xmm1, %xmm138493; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8494; SSE-NEXT: movdqa %xmm2, %xmm18495; SSE-NEXT: psrlq $48, %xmm18496; SSE-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]8497; SSE-NEXT: movdqa {{.*#+}} xmm8 = [65535,65535,65535,0,0,65535,65535,65535]8498; SSE-NEXT: movdqa %xmm8, %xmm18499; SSE-NEXT: pandn %xmm0, %xmm18500; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8501; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero8502; SSE-NEXT: por %xmm1, %xmm08503; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload8504; SSE-NEXT: movdqa %xmm3, %xmm28505; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8506; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]8507; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8508; SSE-NEXT: psrld $16, %xmm18509; SSE-NEXT: movdqa %xmm3, %xmm28510; SSE-NEXT: punpckhdq {{.*#+}} xmm2 = xmm2[2],xmm1[2],xmm2[3],xmm1[3]8511; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload8512; SSE-NEXT: movdqa %xmm11, %xmm18513; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]8514; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,4,7]8515; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,1]8516; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,5,4]8517; SSE-NEXT: movdqa {{.*#+}} xmm5 = [0,65535,65535,65535,65535,0,0,0]8518; SSE-NEXT: movdqa %xmm5, %xmm28519; SSE-NEXT: pandn %xmm1, %xmm28520; SSE-NEXT: pand %xmm5, %xmm08521; SSE-NEXT: por %xmm0, %xmm28522; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8523; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload8524; SSE-NEXT: movdqa %xmm6, %xmm08525; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8526; SSE-NEXT: punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm1[0],xmm6[1],xmm1[1],xmm6[2],xmm1[2],xmm6[3],xmm1[3]8527; SSE-NEXT: movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8528; SSE-NEXT: psrlq $48, %xmm18529; SSE-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]8530; SSE-NEXT: movdqa %xmm8, %xmm158531; SSE-NEXT: movdqa %xmm8, %xmm18532; SSE-NEXT: pandn %xmm0, %xmm18533; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8534; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero8535; SSE-NEXT: por %xmm1, %xmm08536; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload8537; SSE-NEXT: movdqa %xmm3, %xmm28538; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8539; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]8540; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8541; SSE-NEXT: psrld $16, %xmm18542; SSE-NEXT: movdqa %xmm3, %xmm28543; SSE-NEXT: punpckhdq {{.*#+}} xmm2 = xmm2[2],xmm1[2],xmm2[3],xmm1[3]8544; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload8545; SSE-NEXT: movdqa %xmm8, %xmm18546; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]8547; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,4,7]8548; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,1]8549; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,5,4]8550; SSE-NEXT: movdqa %xmm5, %xmm28551; SSE-NEXT: pandn %xmm1, %xmm28552; SSE-NEXT: pand %xmm5, %xmm08553; SSE-NEXT: por %xmm0, %xmm28554; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8555; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload8556; SSE-NEXT: movdqa %xmm7, %xmm08557; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8558; SSE-NEXT: punpcklwd {{.*#+}} xmm7 = xmm7[0],xmm1[0],xmm7[1],xmm1[1],xmm7[2],xmm1[2],xmm7[3],xmm1[3]8559; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8560; SSE-NEXT: psrlq $48, %xmm18561; SSE-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]8562; SSE-NEXT: movdqa %xmm15, %xmm18563; SSE-NEXT: pandn %xmm0, %xmm18564; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8565; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero8566; SSE-NEXT: por %xmm1, %xmm08567; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload8568; SSE-NEXT: movdqa %xmm3, %xmm28569; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8570; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]8571; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8572; SSE-NEXT: psrld $16, %xmm18573; SSE-NEXT: movdqa %xmm3, %xmm28574; SSE-NEXT: punpckhdq {{.*#+}} xmm2 = xmm2[2],xmm1[2],xmm2[3],xmm1[3]8575; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload8576; SSE-NEXT: movdqa %xmm14, %xmm18577; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]8578; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,4,7]8579; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,1]8580; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,5,4]8581; SSE-NEXT: movdqa %xmm5, %xmm28582; SSE-NEXT: pandn %xmm1, %xmm28583; SSE-NEXT: pand %xmm5, %xmm08584; SSE-NEXT: por %xmm0, %xmm28585; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8586; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8587; SSE-NEXT: movdqa %xmm1, %xmm08588; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8589; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]8590; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8591; SSE-NEXT: movdqa %xmm2, %xmm18592; SSE-NEXT: psrlq $48, %xmm18593; SSE-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]8594; SSE-NEXT: movdqa %xmm15, %xmm18595; SSE-NEXT: pandn %xmm0, %xmm18596; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8597; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero8598; SSE-NEXT: por %xmm1, %xmm08599; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload8600; SSE-NEXT: movdqa %xmm3, %xmm28601; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8602; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]8603; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8604; SSE-NEXT: psrld $16, %xmm18605; SSE-NEXT: movdqa %xmm3, %xmm28606; SSE-NEXT: punpckhdq {{.*#+}} xmm2 = xmm2[2],xmm1[2],xmm2[3],xmm1[3]8607; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload8608; SSE-NEXT: movdqa %xmm3, %xmm18609; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]8610; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,4,7]8611; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,1]8612; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,5,4]8613; SSE-NEXT: movdqa %xmm5, %xmm28614; SSE-NEXT: pandn %xmm1, %xmm28615; SSE-NEXT: pand %xmm5, %xmm08616; SSE-NEXT: por %xmm0, %xmm28617; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8618; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8619; SSE-NEXT: movdqa %xmm1, %xmm08620; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8621; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]8622; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8623; SSE-NEXT: movdqa %xmm2, %xmm18624; SSE-NEXT: psrlq $48, %xmm18625; SSE-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]8626; SSE-NEXT: movdqa %xmm15, %xmm18627; SSE-NEXT: pandn %xmm0, %xmm18628; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8629; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero8630; SSE-NEXT: por %xmm1, %xmm08631; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload8632; SSE-NEXT: movdqa %xmm10, %xmm28633; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8634; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]8635; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8636; SSE-NEXT: psrld $16, %xmm18637; SSE-NEXT: movdqa %xmm10, %xmm28638; SSE-NEXT: punpckhdq {{.*#+}} xmm2 = xmm2[2],xmm1[2],xmm2[3],xmm1[3]8639; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload8640; SSE-NEXT: movdqa %xmm10, %xmm18641; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]8642; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,4,7]8643; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,1]8644; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,5,4]8645; SSE-NEXT: movdqa %xmm5, %xmm28646; SSE-NEXT: pandn %xmm1, %xmm28647; SSE-NEXT: pand %xmm5, %xmm08648; SSE-NEXT: por %xmm0, %xmm28649; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8650; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8651; SSE-NEXT: movdqa %xmm1, %xmm08652; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8653; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]8654; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8655; SSE-NEXT: movdqa %xmm2, %xmm18656; SSE-NEXT: psrlq $48, %xmm18657; SSE-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]8658; SSE-NEXT: movdqa %xmm15, %xmm18659; SSE-NEXT: pandn %xmm0, %xmm18660; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8661; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero8662; SSE-NEXT: por %xmm1, %xmm08663; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload8664; SSE-NEXT: movdqa %xmm12, %xmm28665; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8666; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]8667; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8668; SSE-NEXT: psrld $16, %xmm18669; SSE-NEXT: movdqa %xmm12, %xmm28670; SSE-NEXT: punpckhdq {{.*#+}} xmm2 = xmm2[2],xmm1[2],xmm2[3],xmm1[3]8671; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload8672; SSE-NEXT: movdqa %xmm15, %xmm18673; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]8674; SSE-NEXT: pand %xmm5, %xmm08675; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,4,7]8676; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,1]8677; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,5,4]8678; SSE-NEXT: pandn %xmm1, %xmm58679; SSE-NEXT: por %xmm0, %xmm58680; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8681; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8682; SSE-NEXT: movdqa %xmm1, %xmm08683; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm1[1,1,1,1,4,5,6,7]8684; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8685; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8686; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]8687; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8688; SSE-NEXT: movdqa %xmm2, %xmm18689; SSE-NEXT: psrld $16, %xmm18690; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]8691; SSE-NEXT: movdqa %xmm4, %xmm18692; SSE-NEXT: pandn %xmm0, %xmm18693; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm13[0,1,2,3,4,5,6,6]8694; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]8695; SSE-NEXT: pand %xmm4, %xmm08696; SSE-NEXT: por %xmm1, %xmm08697; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8698; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm11[1,1]8699; SSE-NEXT: movaps {{.*#+}} xmm5 = [65535,65535,0,0,0,65535,65535,65535]8700; SSE-NEXT: movaps %xmm5, %xmm28701; SSE-NEXT: andnps %xmm1, %xmm28702; SSE-NEXT: pand %xmm5, %xmm08703; SSE-NEXT: orps %xmm0, %xmm28704; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8705; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8706; SSE-NEXT: movdqa %xmm1, %xmm08707; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm1[1,1,1,1,4,5,6,7]8708; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8709; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8710; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]8711; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8712; SSE-NEXT: movdqa %xmm2, %xmm18713; SSE-NEXT: psrld $16, %xmm18714; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]8715; SSE-NEXT: movdqa %xmm4, %xmm18716; SSE-NEXT: pandn %xmm0, %xmm18717; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm6[0,1,2,3,4,5,6,6]8718; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]8719; SSE-NEXT: pand %xmm4, %xmm08720; SSE-NEXT: por %xmm1, %xmm08721; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8722; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm8[1,1]8723; SSE-NEXT: movaps %xmm8, %xmm128724; SSE-NEXT: movaps %xmm5, %xmm28725; SSE-NEXT: andnps %xmm1, %xmm28726; SSE-NEXT: pand %xmm5, %xmm08727; SSE-NEXT: orps %xmm0, %xmm28728; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8729; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8730; SSE-NEXT: movdqa %xmm1, %xmm08731; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm1[1,1,1,1,4,5,6,7]8732; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8733; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8734; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]8735; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8736; SSE-NEXT: movdqa %xmm2, %xmm18737; SSE-NEXT: psrld $16, %xmm18738; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]8739; SSE-NEXT: movdqa %xmm4, %xmm18740; SSE-NEXT: pandn %xmm0, %xmm18741; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm7[0,1,2,3,4,5,6,6]8742; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]8743; SSE-NEXT: pand %xmm4, %xmm08744; SSE-NEXT: por %xmm1, %xmm08745; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8746; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm14[1,1]8747; SSE-NEXT: movaps %xmm14, %xmm118748; SSE-NEXT: movaps %xmm5, %xmm28749; SSE-NEXT: andnps %xmm1, %xmm28750; SSE-NEXT: pand %xmm5, %xmm08751; SSE-NEXT: orps %xmm0, %xmm28752; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8753; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8754; SSE-NEXT: movdqa %xmm1, %xmm08755; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm1[1,1,1,1,4,5,6,7]8756; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8757; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8758; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]8759; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8760; SSE-NEXT: movdqa %xmm2, %xmm18761; SSE-NEXT: psrld $16, %xmm18762; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]8763; SSE-NEXT: movdqa %xmm4, %xmm18764; SSE-NEXT: pandn %xmm0, %xmm18765; SSE-NEXT: pshufhw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload8766; SSE-NEXT: # xmm0 = mem[0,1,2,3,4,5,6,6]8767; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]8768; SSE-NEXT: pand %xmm4, %xmm08769; SSE-NEXT: por %xmm1, %xmm08770; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8771; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm3[1,1]8772; SSE-NEXT: movaps %xmm3, %xmm148773; SSE-NEXT: movaps %xmm5, %xmm28774; SSE-NEXT: andnps %xmm1, %xmm28775; SSE-NEXT: pand %xmm5, %xmm08776; SSE-NEXT: orps %xmm0, %xmm28777; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8778; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8779; SSE-NEXT: movdqa %xmm1, %xmm08780; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm1[1,1,1,1,4,5,6,7]8781; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8782; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8783; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]8784; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8785; SSE-NEXT: movdqa %xmm2, %xmm18786; SSE-NEXT: psrld $16, %xmm18787; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]8788; SSE-NEXT: movdqa %xmm4, %xmm18789; SSE-NEXT: pandn %xmm0, %xmm18790; SSE-NEXT: pshufhw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload8791; SSE-NEXT: # xmm0 = mem[0,1,2,3,4,5,6,6]8792; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]8793; SSE-NEXT: pand %xmm4, %xmm08794; SSE-NEXT: por %xmm1, %xmm08795; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8796; SSE-NEXT: movdqa %xmm10, %xmm138797; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm10[1,1]8798; SSE-NEXT: movaps %xmm5, %xmm28799; SSE-NEXT: andnps %xmm1, %xmm28800; SSE-NEXT: pand %xmm5, %xmm08801; SSE-NEXT: orps %xmm0, %xmm28802; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8803; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8804; SSE-NEXT: movdqa %xmm1, %xmm08805; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm1[1,1,1,1,4,5,6,7]8806; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8807; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8808; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]8809; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8810; SSE-NEXT: movdqa %xmm2, %xmm18811; SSE-NEXT: psrld $16, %xmm18812; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]8813; SSE-NEXT: movdqa %xmm4, %xmm18814; SSE-NEXT: pandn %xmm0, %xmm18815; SSE-NEXT: pshufhw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload8816; SSE-NEXT: # xmm0 = mem[0,1,2,3,4,5,6,6]8817; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]8818; SSE-NEXT: pand %xmm4, %xmm08819; SSE-NEXT: por %xmm1, %xmm08820; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8821; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm15[1,1]8822; SSE-NEXT: movaps %xmm5, %xmm28823; SSE-NEXT: andnps %xmm1, %xmm28824; SSE-NEXT: pand %xmm5, %xmm08825; SSE-NEXT: orps %xmm0, %xmm28826; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8827; SSE-NEXT: movdqa (%rsp), %xmm1 # 16-byte Reload8828; SSE-NEXT: movdqa %xmm1, %xmm08829; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm1[1,1,1,1,4,5,6,7]8830; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8831; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8832; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]8833; SSE-NEXT: movdqa %xmm1, (%rsp) # 16-byte Spill8834; SSE-NEXT: movdqa %xmm2, %xmm18835; SSE-NEXT: psrld $16, %xmm18836; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]8837; SSE-NEXT: movdqa %xmm4, %xmm18838; SSE-NEXT: pandn %xmm0, %xmm18839; SSE-NEXT: pshufhw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload8840; SSE-NEXT: # xmm0 = mem[0,1,2,3,4,5,6,6]8841; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]8842; SSE-NEXT: pand %xmm4, %xmm08843; SSE-NEXT: por %xmm1, %xmm08844; SSE-NEXT: pand %xmm5, %xmm08845; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8846; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload8847; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,2],xmm3[1,1]8848; SSE-NEXT: andnps %xmm1, %xmm58849; SSE-NEXT: orps %xmm0, %xmm58850; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8851; SSE-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload8852; SSE-NEXT: # xmm9 = xmm9[0],mem[0]8853; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8854; SSE-NEXT: shufps $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload8855; SSE-NEXT: # xmm0 = xmm0[0,1],mem[1,3]8856; SSE-NEXT: shufps {{.*#+}} xmm9 = xmm9[2,0],xmm0[0,2]8857; SSE-NEXT: movaps {{.*#+}} xmm2 = [65535,65535,65535,65535,65535,0,65535,65535]8858; SSE-NEXT: andps %xmm2, %xmm98859; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8860; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm1[0,1,2,3,5,6,6,7]8861; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5]8862; SSE-NEXT: andnps %xmm1, %xmm28863; SSE-NEXT: orps %xmm9, %xmm28864; SSE-NEXT: movaps {{.*#+}} xmm5 = [65535,65535,65535,65535,65535,65535,0,65535]8865; SSE-NEXT: andps %xmm5, %xmm28866; SSE-NEXT: movaps %xmm2, %xmm78867; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload8868; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm2[0,0,0,0]8869; SSE-NEXT: andnps %xmm1, %xmm58870; SSE-NEXT: orps %xmm7, %xmm58871; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8872; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload8873; SSE-NEXT: shufps $42, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload8874; SSE-NEXT: # xmm5 = xmm5[2,2],mem[2,0]8875; SSE-NEXT: movaps {{.*#+}} xmm1 = [0,65535,65535,65535,65535,65535,65535,0]8876; SSE-NEXT: andps %xmm1, %xmm58877; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,2,2,2]8878; SSE-NEXT: andnps %xmm0, %xmm18879; SSE-NEXT: orps %xmm5, %xmm18880; SSE-NEXT: movaps {{.*#+}} xmm5 = [65535,0,65535,65535,65535,65535,65535,65535]8881; SSE-NEXT: andps %xmm5, %xmm18882; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm2[2,3,2,3]8883; SSE-NEXT: andnps %xmm0, %xmm58884; SSE-NEXT: orps %xmm1, %xmm58885; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8886; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8887; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9]8888; SSE-NEXT: movdqa %xmm4, %xmm08889; SSE-NEXT: pandn %xmm1, %xmm08890; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload8891; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]8892; SSE-NEXT: pand %xmm4, %xmm18893; SSE-NEXT: por %xmm0, %xmm18894; SSE-NEXT: movdqa %xmm1, %xmm08895; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,0,0,0,65535]8896; SSE-NEXT: movdqa %xmm2, %xmm18897; SSE-NEXT: pandn %xmm0, %xmm18898; SSE-NEXT: movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload8899; SSE-NEXT: movapd %xmm10, %xmm58900; SSE-NEXT: shufpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload8901; SSE-NEXT: # xmm5 = xmm5[1],mem[0]8902; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8903; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]8904; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[2,0],xmm0[2,1]8905; SSE-NEXT: andps %xmm2, %xmm58906; SSE-NEXT: orps %xmm1, %xmm58907; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8908; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8909; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]8910; SSE-NEXT: movdqa %xmm4, %xmm18911; SSE-NEXT: pandn %xmm0, %xmm18912; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8913; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]8914; SSE-NEXT: pand %xmm4, %xmm08915; SSE-NEXT: por %xmm1, %xmm08916; SSE-NEXT: movdqa %xmm2, %xmm18917; SSE-NEXT: pandn %xmm0, %xmm18918; SSE-NEXT: shufpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload8919; SSE-NEXT: # xmm12 = xmm12[1],mem[0]8920; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8921; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]8922; SSE-NEXT: shufps {{.*#+}} xmm12 = xmm12[2,0],xmm0[2,1]8923; SSE-NEXT: andps %xmm2, %xmm128924; SSE-NEXT: orps %xmm1, %xmm128925; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8926; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]8927; SSE-NEXT: movdqa %xmm4, %xmm18928; SSE-NEXT: pandn %xmm0, %xmm18929; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8930; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]8931; SSE-NEXT: pand %xmm4, %xmm08932; SSE-NEXT: por %xmm1, %xmm08933; SSE-NEXT: movdqa %xmm2, %xmm18934; SSE-NEXT: pandn %xmm0, %xmm18935; SSE-NEXT: movaps %xmm11, %xmm68936; SSE-NEXT: shufpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload8937; SSE-NEXT: # xmm11 = xmm11[1],mem[0]8938; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8939; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]8940; SSE-NEXT: shufps {{.*#+}} xmm11 = xmm11[2,0],xmm0[2,1]8941; SSE-NEXT: andps %xmm2, %xmm118942; SSE-NEXT: orps %xmm1, %xmm118943; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8944; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]8945; SSE-NEXT: movdqa %xmm4, %xmm18946; SSE-NEXT: pandn %xmm0, %xmm18947; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8948; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]8949; SSE-NEXT: pand %xmm4, %xmm08950; SSE-NEXT: por %xmm1, %xmm08951; SSE-NEXT: movdqa %xmm2, %xmm18952; SSE-NEXT: pandn %xmm0, %xmm18953; SSE-NEXT: movaps %xmm14, %xmm158954; SSE-NEXT: movaps %xmm14, %xmm98955; SSE-NEXT: shufpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload8956; SSE-NEXT: # xmm9 = xmm9[1],mem[0]8957; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8958; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]8959; SSE-NEXT: shufps {{.*#+}} xmm9 = xmm9[2,0],xmm0[2,1]8960; SSE-NEXT: andps %xmm2, %xmm98961; SSE-NEXT: orps %xmm1, %xmm98962; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8963; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]8964; SSE-NEXT: movdqa %xmm4, %xmm18965; SSE-NEXT: pandn %xmm0, %xmm18966; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8967; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]8968; SSE-NEXT: pand %xmm4, %xmm08969; SSE-NEXT: por %xmm1, %xmm08970; SSE-NEXT: movdqa %xmm2, %xmm18971; SSE-NEXT: pandn %xmm0, %xmm18972; SSE-NEXT: movdqa %xmm13, %xmm78973; SSE-NEXT: shufpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload8974; SSE-NEXT: # xmm7 = xmm7[1],mem[0]8975; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8976; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]8977; SSE-NEXT: shufps {{.*#+}} xmm7 = xmm7[2,0],xmm0[2,1]8978; SSE-NEXT: andps %xmm2, %xmm78979; SSE-NEXT: orps %xmm1, %xmm78980; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8981; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]8982; SSE-NEXT: movdqa %xmm4, %xmm18983; SSE-NEXT: pandn %xmm0, %xmm18984; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8985; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]8986; SSE-NEXT: pand %xmm4, %xmm08987; SSE-NEXT: por %xmm1, %xmm08988; SSE-NEXT: movdqa %xmm2, %xmm18989; SSE-NEXT: pandn %xmm0, %xmm18990; SSE-NEXT: movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload8991; SSE-NEXT: movapd %xmm14, %xmm58992; SSE-NEXT: shufpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload8993; SSE-NEXT: # xmm5 = xmm5[1],mem[0]8994; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload8995; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]8996; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[2,0],xmm0[2,1]8997; SSE-NEXT: andps %xmm2, %xmm58998; SSE-NEXT: orps %xmm1, %xmm58999; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload9000; SSE-NEXT: pslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9]9001; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9002; SSE-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9003; SSE-NEXT: pand %xmm4, %xmm09004; SSE-NEXT: pandn %xmm1, %xmm49005; SSE-NEXT: por %xmm0, %xmm49006; SSE-NEXT: shufpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload9007; SSE-NEXT: # xmm3 = xmm3[1],mem[0]9008; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9009; SSE-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]9010; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[2,0],xmm0[2,1]9011; SSE-NEXT: andps %xmm2, %xmm39012; SSE-NEXT: pandn %xmm4, %xmm29013; SSE-NEXT: por %xmm3, %xmm29014; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9015; SSE-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload9016; SSE-NEXT: # xmm0 = xmm0[0],mem[0]9017; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload9018; SSE-NEXT: # xmm0 = xmm0[2,0],mem[2,1]9019; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload9020; SSE-NEXT: # xmm1 = mem[0,0,1,1]9021; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm10[0,0,1,1]9022; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]9023; SSE-NEXT: movdqa {{.*#+}} xmm4 = [65535,65535,65535,65535,0,0,0,65535]9024; SSE-NEXT: movdqa %xmm4, %xmm109025; SSE-NEXT: pandn %xmm1, %xmm109026; SSE-NEXT: andps %xmm4, %xmm09027; SSE-NEXT: por %xmm0, %xmm109028; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9029; SSE-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload9030; SSE-NEXT: # xmm0 = xmm0[0],mem[0]9031; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload9032; SSE-NEXT: # xmm0 = xmm0[2,0],mem[2,1]9033; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload9034; SSE-NEXT: # xmm1 = mem[0,0,1,1]9035; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm8[0,0,1,1]9036; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]9037; SSE-NEXT: movdqa %xmm4, %xmm89038; SSE-NEXT: pandn %xmm1, %xmm89039; SSE-NEXT: andps %xmm4, %xmm09040; SSE-NEXT: por %xmm0, %xmm89041; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9042; SSE-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload9043; SSE-NEXT: # xmm0 = xmm0[0],mem[0]9044; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload9045; SSE-NEXT: # xmm0 = xmm0[2,0],mem[2,1]9046; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload9047; SSE-NEXT: # xmm1 = mem[0,0,1,1]9048; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm6[0,0,1,1]9049; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]9050; SSE-NEXT: movdqa %xmm4, %xmm69051; SSE-NEXT: pandn %xmm1, %xmm69052; SSE-NEXT: andps %xmm4, %xmm09053; SSE-NEXT: por %xmm0, %xmm69054; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload9055; SSE-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload9056; SSE-NEXT: # xmm13 = xmm13[0],mem[0]9057; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload9058; SSE-NEXT: # xmm13 = xmm13[2,0],mem[2,1]9059; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload9060; SSE-NEXT: # xmm0 = mem[0,0,1,1]9061; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm15[0,0,1,1]9062; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]9063; SSE-NEXT: movdqa %xmm4, %xmm39064; SSE-NEXT: pandn %xmm0, %xmm39065; SSE-NEXT: andps %xmm4, %xmm139066; SSE-NEXT: por %xmm13, %xmm39067; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload9068; SSE-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload9069; SSE-NEXT: # xmm1 = xmm1[0],mem[0]9070; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload9071; SSE-NEXT: # xmm1 = xmm1[2,0],mem[2,1]9072; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload9073; SSE-NEXT: # xmm0 = mem[0,0,1,1]9074; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload9075; SSE-NEXT: # xmm13 = mem[0,0,1,1]9076; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm13[0],xmm0[1],xmm13[1]9077; SSE-NEXT: movdqa %xmm4, %xmm139078; SSE-NEXT: pandn %xmm0, %xmm139079; SSE-NEXT: andps %xmm4, %xmm19080; SSE-NEXT: por %xmm1, %xmm139081; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload9082; SSE-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload9083; SSE-NEXT: # xmm1 = xmm1[0],mem[0]9084; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload9085; SSE-NEXT: # xmm1 = xmm1[2,0],mem[2,1]9086; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload9087; SSE-NEXT: # xmm0 = mem[0,0,1,1]9088; SSE-NEXT: pshufd {{.*#+}} xmm15 = xmm14[0,0,1,1]9089; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm15[0],xmm0[1],xmm15[1]9090; SSE-NEXT: movdqa %xmm4, %xmm159091; SSE-NEXT: pandn %xmm0, %xmm159092; SSE-NEXT: andps %xmm4, %xmm19093; SSE-NEXT: por %xmm1, %xmm159094; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload9095; SSE-NEXT: unpcklpd (%rsp), %xmm1 # 16-byte Folded Reload9096; SSE-NEXT: # xmm1 = xmm1[0],mem[0]9097; SSE-NEXT: shufps $98, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload9098; SSE-NEXT: # xmm1 = xmm1[2,0],mem[2,1]9099; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload9100; SSE-NEXT: # xmm0 = mem[0,0,1,1]9101; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Folded Reload9102; SSE-NEXT: # xmm14 = mem[0,0,1,1]9103; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm14[0],xmm0[1],xmm14[1]9104; SSE-NEXT: andps %xmm4, %xmm19105; SSE-NEXT: pandn %xmm0, %xmm49106; SSE-NEXT: por %xmm1, %xmm49107; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax9108; SSE-NEXT: movdqa %xmm4, 672(%rax)9109; SSE-NEXT: movdqa %xmm15, 560(%rax)9110; SSE-NEXT: movdqa %xmm13, 448(%rax)9111; SSE-NEXT: movdqa %xmm3, 336(%rax)9112; SSE-NEXT: movdqa %xmm6, 224(%rax)9113; SSE-NEXT: movdqa %xmm8, 112(%rax)9114; SSE-NEXT: movdqa %xmm10, (%rax)9115; SSE-NEXT: movdqa %xmm2, 736(%rax)9116; SSE-NEXT: movaps %xmm5, 624(%rax)9117; SSE-NEXT: movaps %xmm7, 512(%rax)9118; SSE-NEXT: movaps %xmm9, 400(%rax)9119; SSE-NEXT: movaps %xmm11, 288(%rax)9120; SSE-NEXT: movaps %xmm12, 176(%rax)9121; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9122; SSE-NEXT: movaps %xmm0, 64(%rax)9123; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9124; SSE-NEXT: movaps %xmm0, 864(%rax)9125; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9126; SSE-NEXT: movaps %xmm0, 784(%rax)9127; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9128; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0,1,3]9129; SSE-NEXT: movaps %xmm0, 752(%rax)9130; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9131; SSE-NEXT: movaps %xmm0, 720(%rax)9132; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9133; SSE-NEXT: movaps %xmm0, 704(%rax)9134; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9135; SSE-NEXT: movaps %xmm0, 688(%rax)9136; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9137; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0,1,3]9138; SSE-NEXT: movaps %xmm0, 640(%rax)9139; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9140; SSE-NEXT: movaps %xmm0, 608(%rax)9141; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9142; SSE-NEXT: movaps %xmm0, 592(%rax)9143; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9144; SSE-NEXT: movaps %xmm0, 576(%rax)9145; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9146; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0,1,3]9147; SSE-NEXT: movaps %xmm0, 528(%rax)9148; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9149; SSE-NEXT: movaps %xmm0, 496(%rax)9150; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9151; SSE-NEXT: movaps %xmm0, 480(%rax)9152; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9153; SSE-NEXT: movaps %xmm0, 464(%rax)9154; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9155; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0,1,3]9156; SSE-NEXT: movaps %xmm0, 416(%rax)9157; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9158; SSE-NEXT: movaps %xmm0, 384(%rax)9159; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9160; SSE-NEXT: movaps %xmm0, 368(%rax)9161; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9162; SSE-NEXT: movaps %xmm0, 352(%rax)9163; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9164; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0,1,3]9165; SSE-NEXT: movaps %xmm0, 304(%rax)9166; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9167; SSE-NEXT: movaps %xmm0, 272(%rax)9168; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9169; SSE-NEXT: movaps %xmm0, 256(%rax)9170; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9171; SSE-NEXT: movaps %xmm0, 240(%rax)9172; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9173; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0,1,3]9174; SSE-NEXT: movaps %xmm0, 192(%rax)9175; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9176; SSE-NEXT: movaps %xmm0, 160(%rax)9177; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9178; SSE-NEXT: movaps %xmm0, 144(%rax)9179; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9180; SSE-NEXT: movaps %xmm0, 128(%rax)9181; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9182; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0,1,3]9183; SSE-NEXT: movaps %xmm0, 80(%rax)9184; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9185; SSE-NEXT: movaps %xmm0, 48(%rax)9186; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9187; SSE-NEXT: movaps %xmm0, 32(%rax)9188; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9189; SSE-NEXT: movaps %xmm0, 16(%rax)9190; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9191; SSE-NEXT: movaps %xmm0, 656(%rax)9192; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9193; SSE-NEXT: movaps %xmm0, 544(%rax)9194; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9195; SSE-NEXT: movaps %xmm0, 432(%rax)9196; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9197; SSE-NEXT: movaps %xmm0, 320(%rax)9198; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9199; SSE-NEXT: movaps %xmm0, 208(%rax)9200; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9201; SSE-NEXT: movaps %xmm0, 96(%rax)9202; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9203; SSE-NEXT: movaps %xmm0, 880(%rax)9204; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9205; SSE-NEXT: movaps %xmm0, 816(%rax)9206; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9207; SSE-NEXT: movaps %xmm0, 768(%rax)9208; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9209; SSE-NEXT: movaps %xmm0, 848(%rax)9210; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9211; SSE-NEXT: movaps %xmm0, 832(%rax)9212; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9213; SSE-NEXT: movaps %xmm0, 800(%rax)9214; SSE-NEXT: addq $1640, %rsp # imm = 0x6689215; SSE-NEXT: retq9216;9217; AVX-LABEL: store_i16_stride7_vf64:9218; AVX: # %bb.0:9219; AVX-NEXT: subq $1496, %rsp # imm = 0x5D89220; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax9221; AVX-NEXT: vmovdqa 112(%rsi), %xmm19222; AVX-NEXT: vmovdqa 112(%rdi), %xmm49223; AVX-NEXT: vpunpckhwd {{.*#+}} xmm5 = xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7]9224; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm5[0,1,0,1]9225; AVX-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,xmm5[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9226; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm09227; AVX-NEXT: vmovaps {{.*#+}} ymm14 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]9228; AVX-NEXT: vandnps %ymm0, %ymm14, %ymm09229; AVX-NEXT: vmovdqa 112(%rdx), %xmm69230; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm6[2,2,2,2]9231; AVX-NEXT: vmovdqa 112(%rcx), %xmm89232; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm8[3,3,3,3,4,5,6,7]9233; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]9234; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2,3,4,5],xmm2[6],xmm3[7]9235; AVX-NEXT: vpunpckhwd {{.*#+}} xmm9 = xmm6[4],xmm8[4],xmm6[5],xmm8[5],xmm6[6],xmm8[6],xmm6[7],xmm8[7]9236; AVX-NEXT: vpslldq {{.*#+}} xmm3 = zero,zero,zero,zero,zero,zero,xmm9[0,1,2,3,4,5,6,7,8,9]9237; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm29238; AVX-NEXT: vandps %ymm2, %ymm14, %ymm29239; AVX-NEXT: vorps %ymm0, %ymm2, %ymm79240; AVX-NEXT: vmovdqa 112(%r8), %xmm09241; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[1,1,1,1]9242; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm7[0],xmm2[1],xmm7[2,3,4,5,6,7]9243; AVX-NEXT: vmovdqa 112(%r9), %xmm29244; AVX-NEXT: vmovdqa 112(%rax), %xmm39245; AVX-NEXT: vextractf128 $1, %ymm7, %xmm79246; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm0[2,2,2,2]9247; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm11[0],xmm7[1,2,3,4,5,6],xmm11[7]9248; AVX-NEXT: vpsrldq {{.*#+}} xmm11 = xmm2[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero9249; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0],xmm11[1],xmm7[2,3,4,5,6,7]9250; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm3[2,2,3,3]9251; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1],xmm11[2],xmm7[3,4,5,6,7]9252; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9253; AVX-NEXT: vpsrld $16, %xmm8, %xmm79254; AVX-NEXT: vpunpckldq {{.*#+}} xmm11 = xmm6[0],xmm7[0],xmm6[1],xmm7[1]9255; AVX-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],xmm8[3]9256; AVX-NEXT: vpshufhw {{.*#+}} xmm12 = xmm7[0,1,2,3,4,5,6,6]9257; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm12[2,1,2,3]9258; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm11, %ymm119259; AVX-NEXT: vpsrld $16, %xmm1, %xmm129260; AVX-NEXT: vpunpckldq {{.*#+}} xmm12 = xmm4[0],xmm12[0],xmm4[1],xmm12[1]9261; AVX-NEXT: vpunpcklwd {{.*#+}} xmm13 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3]9262; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[2,2,2,2,4,5,6,7]9263; AVX-NEXT: vpshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,5,5,4]9264; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm13, %ymm129265; AVX-NEXT: vmovaps {{.*#+}} ymm15 = [65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0]9266; AVX-NEXT: vandnps %ymm11, %ymm15, %ymm119267; AVX-NEXT: vandps %ymm15, %ymm12, %ymm129268; AVX-NEXT: vorps %ymm11, %ymm12, %ymm119269; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm0[0,0,1,1]9270; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm11[0,1,2],xmm12[3],xmm11[4,5,6,7]9271; AVX-NEXT: vpmovzxwq {{.*#+}} xmm13 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero9272; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2,3],xmm13[4,5],xmm12[6,7]9273; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm3[0,1,0,1]9274; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2,3,4],xmm13[5],xmm12[6,7]9275; AVX-NEXT: vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9276; AVX-NEXT: vextractf128 $1, %ymm11, %xmm119277; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1],xmm0[2,3],xmm11[4,5,6,7]9278; AVX-NEXT: vpslld $16, %xmm2, %xmm129279; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2],xmm12[3],xmm11[4,5,6,7]9280; AVX-NEXT: vpmovzxdq {{.*#+}} xmm12 = xmm3[0],zero,xmm3[1],zero9281; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2,3],xmm12[4],xmm11[5,6,7]9282; AVX-NEXT: vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9283; AVX-NEXT: vpsrlq $48, %xmm8, %xmm89284; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm8 = xmm6[1],xmm8[1]9285; AVX-NEXT: vpsrld $16, %xmm2, %xmm119286; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm10[0,1],xmm11[2,3],xmm10[4,5,6,7]9287; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm9, %ymm89288; AVX-NEXT: vandnps %ymm8, %ymm14, %ymm89289; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm5[2,2,3,3]9290; AVX-NEXT: vpsrldq {{.*#+}} xmm5 = xmm5[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9291; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm9, %ymm59292; AVX-NEXT: vandps %ymm5, %ymm14, %ymm59293; AVX-NEXT: vorps %ymm5, %ymm8, %ymm59294; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm5[0,1,2,3,4,5],xmm0[6,7]9295; AVX-NEXT: vpshufhw {{.*#+}} xmm9 = xmm2[0,1,2,3,5,6,6,7]9296; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm9[2,2,2,2]9297; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm9[0],xmm8[1,2,3,4,5,6],xmm9[7]9298; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm3[2,3,2,3]9299; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0],xmm9[1],xmm8[2,3,4,5,6,7]9300; AVX-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9301; AVX-NEXT: vextractf128 $1, %ymm5, %xmm59302; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm0[2,2,3,3]9303; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4],xmm8[5],xmm5[6,7]9304; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5],xmm11[6,7]9305; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm3[3,3,3,3]9306; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm8[0],xmm5[1,2,3,4,5,6],xmm8[7]9307; AVX-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9308; AVX-NEXT: vmovdqa 96(%rdx), %xmm89309; AVX-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9310; AVX-NEXT: vmovdqa 96(%rcx), %xmm59311; AVX-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9312; AVX-NEXT: vpsrlq $48, %xmm5, %xmm59313; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm5 = xmm8[1],xmm5[1]9314; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,0,1,1]9315; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm5, %ymm59316; AVX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3]9317; AVX-NEXT: vmovdqa 96(%rsi), %xmm49318; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9319; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]9320; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]9321; AVX-NEXT: vmovdqa 96(%rdi), %xmm79322; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9323; AVX-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm7[4],xmm4[4],xmm7[5],xmm4[5],xmm7[6],xmm4[6],xmm7[7],xmm4[7]9324; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9325; AVX-NEXT: vpsrldq {{.*#+}} xmm4 = xmm4[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9326; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm4, %ymm19327; AVX-NEXT: vmovaps {{.*#+}} ymm7 = [65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]9328; AVX-NEXT: vandnps %ymm5, %ymm7, %ymm49329; AVX-NEXT: vandps %ymm7, %ymm1, %ymm19330; AVX-NEXT: vorps %ymm4, %ymm1, %ymm19331; AVX-NEXT: vmovdqa 96(%r8), %xmm49332; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9333; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[2,2,3,3]9334; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm1[0,1,2,3,4],xmm4[5],xmm1[6,7]9335; AVX-NEXT: vmovdqa 96(%r9), %xmm59336; AVX-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9337; AVX-NEXT: vpsrld $16, %xmm5, %xmm59338; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5],xmm5[6,7]9339; AVX-NEXT: vmovdqa 96(%rax), %xmm59340; AVX-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9341; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[3,3,3,3]9342; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0],xmm4[1,2,3,4,5,6],xmm5[7]9343; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9344; AVX-NEXT: vextractf128 $1, %ymm1, %xmm19345; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]9346; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3],xmm0[4,5],xmm1[6,7]9347; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0,1,2,3,4,5]9348; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7]9349; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm6[0,1,2],xmm3[3],xmm6[4,5,6,7]9350; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9351; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm3[0,0,0,0]9352; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5],xmm1[6],xmm0[7]9353; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9354; AVX-NEXT: vmovdqa (%rdx), %xmm109355; AVX-NEXT: vmovdqa (%rcx), %xmm99356; AVX-NEXT: vpsrld $16, %xmm9, %xmm09357; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm10[0],xmm0[0],xmm10[1],xmm0[1]9358; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3]9359; AVX-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9360; AVX-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9361; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,0,1,1]9362; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm39363; AVX-NEXT: vmovdqa (%rsi), %xmm19364; AVX-NEXT: vmovdqa (%rdi), %xmm29365; AVX-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]9366; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,1,2,2,4,5,6,7]9367; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,1,2,1]9368; AVX-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]9369; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]9370; AVX-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,5,4]9371; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm4, %ymm49372; AVX-NEXT: vmovaps {{.*#+}} ymm11 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]9373; AVX-NEXT: vandnps %ymm3, %ymm11, %ymm39374; AVX-NEXT: vandps %ymm4, %ymm11, %ymm49375; AVX-NEXT: vorps %ymm3, %ymm4, %ymm59376; AVX-NEXT: vmovdqa (%r9), %xmm49377; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9378; AVX-NEXT: vmovdqa (%r8), %xmm39379; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9380; AVX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]9381; AVX-NEXT: vpslldq {{.*#+}} xmm6 = zero,zero,xmm3[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9382; AVX-NEXT: vmovdqa (%rax), %xmm49383; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm4[0,1,0,1]9384; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1,2,3,4],xmm7[5],xmm6[6,7]9385; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm3[0,1,0,1]9386; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm4[0,0,0,0]9387; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5],xmm8[6,7]9388; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm7, %ymm69389; AVX-NEXT: vmovaps {{.*#+}} ymm7 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]9390; AVX-NEXT: vandps %ymm7, %ymm5, %ymm59391; AVX-NEXT: vandnps %ymm6, %ymm7, %ymm69392; AVX-NEXT: vorps %ymm6, %ymm5, %ymm59393; AVX-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9394; AVX-NEXT: vpsrld $16, %xmm1, %xmm59395; AVX-NEXT: vpunpckldq {{.*#+}} xmm5 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]9396; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]9397; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9398; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,0,1]9399; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm5, %ymm19400; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm9[3,3,3,3,4,5,6,7]9401; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,4,4]9402; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm10[2,2,2,2]9403; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5],xmm5[6],xmm2[7]9404; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]9405; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]9406; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm09407; AVX-NEXT: vmovaps {{.*#+}} ymm12 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535]9408; AVX-NEXT: vandnps %ymm1, %ymm12, %ymm19409; AVX-NEXT: vandps %ymm0, %ymm12, %ymm09410; AVX-NEXT: vorps %ymm1, %ymm0, %ymm09411; AVX-NEXT: vpsrldq {{.*#+}} xmm1 = xmm3[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9412; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9413; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm4[3],xmm1[4,5,6,7]9414; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm3[0,2],xmm4[1,3]9415; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm19416; AVX-NEXT: vmovaps {{.*#+}} ymm4 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]9417; AVX-NEXT: vandps %ymm4, %ymm0, %ymm09418; AVX-NEXT: vandnps %ymm1, %ymm4, %ymm19419; AVX-NEXT: vorps %ymm1, %ymm0, %ymm09420; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9421; AVX-NEXT: vmovdqa 16(%rdx), %xmm59422; AVX-NEXT: vmovdqa 16(%rcx), %xmm69423; AVX-NEXT: vpsrld $16, %xmm6, %xmm09424; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]9425; AVX-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3]9426; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9427; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm2[0,1,2,3,4,5,6,6]9428; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[2,1,2,3]9429; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm09430; AVX-NEXT: vmovdqa 16(%rsi), %xmm109431; AVX-NEXT: vmovdqa 16(%rdi), %xmm99432; AVX-NEXT: vpsrld $16, %xmm10, %xmm19433; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm9[0],xmm1[0],xmm9[1],xmm1[1]9434; AVX-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3]9435; AVX-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9436; AVX-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9437; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[2,2,2,2,4,5,6,7]9438; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,4]9439; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm19440; AVX-NEXT: vandnps %ymm0, %ymm15, %ymm09441; AVX-NEXT: vandps %ymm1, %ymm15, %ymm19442; AVX-NEXT: vorps %ymm0, %ymm1, %ymm09443; AVX-NEXT: vmovdqa 16(%r9), %xmm89444; AVX-NEXT: vmovdqa 16(%r8), %xmm79445; AVX-NEXT: vmovdqa 16(%rax), %xmm39446; AVX-NEXT: vpunpcklwd {{.*#+}} xmm13 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3]9447; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9448; AVX-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9449; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,xmm13[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9450; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm3[0,1,0,1]9451; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4],xmm2[5],xmm1[6,7]9452; AVX-NEXT: vshufps {{.*#+}} xmm2 = xmm13[0,2],xmm3[1,3]9453; AVX-NEXT: vmovaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9454; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm19455; AVX-NEXT: vmovaps {{.*#+}} ymm14 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]9456; AVX-NEXT: vandps %ymm0, %ymm14, %ymm09457; AVX-NEXT: vandnps %ymm1, %ymm14, %ymm19458; AVX-NEXT: vorps %ymm1, %ymm0, %ymm09459; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9460; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm9[4],xmm10[4],xmm9[5],xmm10[5],xmm9[6],xmm10[6],xmm9[7],xmm10[7]9461; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9462; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm1[0,1,0,1]9463; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9464; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm09465; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9466; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm6[3,3,3,3,4,5,6,7]9467; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]9468; AVX-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9469; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm5[2,2,2,2]9470; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm2[6],xmm1[7]9471; AVX-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm5[4],xmm6[4],xmm5[5],xmm6[5],xmm5[6],xmm6[6],xmm5[7],xmm6[7]9472; AVX-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9473; AVX-NEXT: vpslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9]9474; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm19475; AVX-NEXT: vmovaps {{.*#+}} ymm2 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]9476; AVX-NEXT: vandnps %ymm0, %ymm2, %ymm09477; AVX-NEXT: vandps %ymm2, %ymm1, %ymm19478; AVX-NEXT: vorps %ymm0, %ymm1, %ymm09479; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm7[4],xmm8[4],xmm7[5],xmm8[5],xmm7[6],xmm8[6],xmm7[7],xmm8[7]9480; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]9481; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]9482; AVX-NEXT: vmovaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9483; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm3[2,2,3,3]9484; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3],xmm1[4,5,6,7]9485; AVX-NEXT: vpsrldq {{.*#+}} xmm2 = xmm13[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9486; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm3[3],xmm2[4,5,6,7]9487; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm19488; AVX-NEXT: vmovaps {{.*#+}} ymm2 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]9489; AVX-NEXT: vandps %ymm2, %ymm0, %ymm09490; AVX-NEXT: vandnps %ymm1, %ymm2, %ymm19491; AVX-NEXT: vorps %ymm1, %ymm0, %ymm09492; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9493; AVX-NEXT: vmovdqa 32(%rdx), %xmm159494; AVX-NEXT: vmovdqa 32(%rcx), %xmm139495; AVX-NEXT: vpsrld $16, %xmm13, %xmm09496; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm15[0],xmm0[0],xmm15[1],xmm0[1]9497; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm15[0],xmm13[0],xmm15[1],xmm13[1],xmm15[2],xmm13[2],xmm15[3],xmm13[3]9498; AVX-NEXT: vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9499; AVX-NEXT: vmovdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9500; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,0,1,1]9501; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm19502; AVX-NEXT: vmovdqa 32(%rsi), %xmm29503; AVX-NEXT: vmovdqa 32(%rdi), %xmm79504; AVX-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm7[0],xmm2[0],xmm7[1],xmm2[1],xmm7[2],xmm2[2],xmm7[3],xmm2[3]9505; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,2,2,4,5,6,7]9506; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[0,1,2,1]9507; AVX-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm2[0],xmm7[0],xmm2[1],xmm7[1],xmm2[2],xmm7[2],xmm2[3],xmm7[3]9508; AVX-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[2,2,2,2,4,5,6,7]9509; AVX-NEXT: vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,5,4]9510; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm5, %ymm59511; AVX-NEXT: vandnps %ymm1, %ymm11, %ymm19512; AVX-NEXT: vandps %ymm5, %ymm11, %ymm59513; AVX-NEXT: vorps %ymm1, %ymm5, %ymm89514; AVX-NEXT: vmovdqa 32(%r9), %xmm69515; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9516; AVX-NEXT: vmovdqa 32(%r8), %xmm19517; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9518; AVX-NEXT: vmovdqa 32(%rax), %xmm59519; AVX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3]9520; AVX-NEXT: vpslldq {{.*#+}} xmm9 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9521; AVX-NEXT: vpshufd {{.*#+}} xmm10 = xmm5[0,1,0,1]9522; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0,1,2,3,4],xmm10[5],xmm9[6,7]9523; AVX-NEXT: vpshufd {{.*#+}} xmm10 = xmm1[0,1,0,1]9524; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm5[0,0,0,0]9525; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,5],xmm11[6,7]9526; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm10, %ymm99527; AVX-NEXT: vmovaps {{.*#+}} ymm3 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]9528; AVX-NEXT: vandps %ymm3, %ymm8, %ymm89529; AVX-NEXT: vandnps %ymm9, %ymm3, %ymm99530; AVX-NEXT: vorps %ymm9, %ymm8, %ymm69531; AVX-NEXT: vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9532; AVX-NEXT: vpsrld $16, %xmm2, %xmm89533; AVX-NEXT: vpunpckldq {{.*#+}} xmm8 = xmm7[0],xmm8[0],xmm7[1],xmm8[1]9534; AVX-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm7[4],xmm2[4],xmm7[5],xmm2[5],xmm7[6],xmm2[6],xmm7[7],xmm2[7]9535; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9536; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,1,0,1]9537; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm8, %ymm29538; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm13[3,3,3,3,4,5,6,7]9539; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]9540; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm15[2,2,2,2]9541; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5],xmm8[6],xmm7[7]9542; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]9543; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]9544; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm0, %ymm09545; AVX-NEXT: vandnps %ymm2, %ymm12, %ymm29546; AVX-NEXT: vandps %ymm0, %ymm12, %ymm09547; AVX-NEXT: vorps %ymm2, %ymm0, %ymm09548; AVX-NEXT: vpsrldq {{.*#+}} xmm2 = xmm1[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9549; AVX-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9550; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm5[3],xmm2[4,5,6,7]9551; AVX-NEXT: vshufps {{.*#+}} xmm1 = xmm1[0,2],xmm5[1,3]9552; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm19553; AVX-NEXT: vandps %ymm4, %ymm0, %ymm09554; AVX-NEXT: vandnps %ymm1, %ymm4, %ymm19555; AVX-NEXT: vorps %ymm1, %ymm0, %ymm09556; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9557; AVX-NEXT: vmovdqa 48(%rdx), %xmm69558; AVX-NEXT: vmovdqa 48(%rcx), %xmm89559; AVX-NEXT: vpsrld $16, %xmm8, %xmm09560; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm6[0],xmm0[0],xmm6[1],xmm0[1]9561; AVX-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],xmm8[3]9562; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9563; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm2[0,1,2,3,4,5,6,6]9564; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[2,1,2,3]9565; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm09566; AVX-NEXT: vmovdqa 48(%rsi), %xmm39567; AVX-NEXT: vmovdqa 48(%rdi), %xmm139568; AVX-NEXT: vpsrld $16, %xmm3, %xmm19569; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm13[0],xmm1[0],xmm13[1],xmm1[1]9570; AVX-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm3[0],xmm13[0],xmm3[1],xmm13[1],xmm3[2],xmm13[2],xmm3[3],xmm13[3]9571; AVX-NEXT: vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9572; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9573; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[2,2,2,2,4,5,6,7]9574; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,4]9575; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm19576; AVX-NEXT: vmovaps {{.*#+}} ymm4 = [65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0]9577; AVX-NEXT: vandnps %ymm0, %ymm4, %ymm09578; AVX-NEXT: vandps %ymm4, %ymm1, %ymm19579; AVX-NEXT: vorps %ymm0, %ymm1, %ymm09580; AVX-NEXT: vmovdqa 48(%r9), %xmm109581; AVX-NEXT: vmovdqa 48(%r8), %xmm99582; AVX-NEXT: vmovdqa 48(%rax), %xmm119583; AVX-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm9[0],xmm10[0],xmm9[1],xmm10[1],xmm9[2],xmm10[2],xmm9[3],xmm10[3]9584; AVX-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9585; AVX-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9586; AVX-NEXT: vmovdqa %xmm7, %xmm29587; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,xmm7[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9588; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm11[0,1,0,1]9589; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4],xmm7[5],xmm1[6,7]9590; AVX-NEXT: vshufps {{.*#+}} xmm7 = xmm2[0,2],xmm11[1,3]9591; AVX-NEXT: vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9592; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm1, %ymm19593; AVX-NEXT: vandps %ymm0, %ymm14, %ymm09594; AVX-NEXT: vandnps %ymm1, %ymm14, %ymm19595; AVX-NEXT: vmovaps %ymm14, %ymm59596; AVX-NEXT: vorps %ymm1, %ymm0, %ymm09597; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9598; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm13[4],xmm3[4],xmm13[5],xmm3[5],xmm13[6],xmm3[6],xmm13[7],xmm3[7]9599; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9600; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm1[0,1,0,1]9601; AVX-NEXT: vpslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9602; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm09603; AVX-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9604; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm8[3,3,3,3,4,5,6,7]9605; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]9606; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9607; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm6[2,2,2,2]9608; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm7[6],xmm1[7]9609; AVX-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm6[4],xmm8[4],xmm6[5],xmm8[5],xmm6[6],xmm8[6],xmm6[7],xmm8[7]9610; AVX-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9611; AVX-NEXT: vpslldq {{.*#+}} xmm7 = zero,zero,zero,zero,zero,zero,xmm3[0,1,2,3,4,5,6,7,8,9]9612; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm1, %ymm19613; AVX-NEXT: vmovaps {{.*#+}} ymm3 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]9614; AVX-NEXT: vandnps %ymm0, %ymm3, %ymm09615; AVX-NEXT: vandps %ymm3, %ymm1, %ymm19616; AVX-NEXT: vorps %ymm0, %ymm1, %ymm09617; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm9[4],xmm10[4],xmm9[5],xmm10[5],xmm9[6],xmm10[6],xmm9[7],xmm10[7]9618; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]9619; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]9620; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm11[2,2,3,3]9621; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm7[2,3],xmm1[4,5,6,7]9622; AVX-NEXT: vpsrldq {{.*#+}} xmm7 = xmm2[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9623; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm11[3],xmm7[4,5,6,7]9624; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm7, %ymm19625; AVX-NEXT: vmovaps {{.*#+}} ymm2 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]9626; AVX-NEXT: vandps %ymm2, %ymm0, %ymm09627; AVX-NEXT: vandnps %ymm1, %ymm2, %ymm19628; AVX-NEXT: vorps %ymm1, %ymm0, %ymm09629; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9630; AVX-NEXT: vmovdqa 64(%rdx), %xmm29631; AVX-NEXT: vmovdqa 64(%rcx), %xmm79632; AVX-NEXT: vpsrld $16, %xmm7, %xmm09633; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]9634; AVX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm2[0],xmm7[0],xmm2[1],xmm7[1],xmm2[2],xmm7[2],xmm2[3],xmm7[3]9635; AVX-NEXT: vmovdqa %xmm7, %xmm09636; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9637; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9638; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm3[0,0,1,1]9639; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm7, %ymm19640; AVX-NEXT: vmovdqa 64(%rsi), %xmm89641; AVX-NEXT: vmovdqa 64(%rdi), %xmm99642; AVX-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3]9643; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[0,1,2,2,4,5,6,7]9644; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,1,2,1]9645; AVX-NEXT: vpunpcklwd {{.*#+}} xmm10 = xmm8[0],xmm9[0],xmm8[1],xmm9[1],xmm8[2],xmm9[2],xmm8[3],xmm9[3]9646; AVX-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[2,2,2,2,4,5,6,7]9647; AVX-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,5,5,4]9648; AVX-NEXT: vinsertf128 $1, %xmm10, %ymm7, %ymm79649; AVX-NEXT: vmovaps {{.*#+}} ymm6 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]9650; AVX-NEXT: vandnps %ymm1, %ymm6, %ymm19651; AVX-NEXT: vandps %ymm6, %ymm7, %ymm79652; AVX-NEXT: vorps %ymm1, %ymm7, %ymm109653; AVX-NEXT: vmovdqa 64(%r9), %xmm19654; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9655; AVX-NEXT: vmovdqa 64(%r8), %xmm69656; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9657; AVX-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm6[0],xmm1[0],xmm6[1],xmm1[1],xmm6[2],xmm1[2],xmm6[3],xmm1[3]9658; AVX-NEXT: vpslldq {{.*#+}} xmm13 = zero,zero,xmm7[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9659; AVX-NEXT: vmovdqa 64(%rax), %xmm69660; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm6[0,1,0,1]9661; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1,2,3,4],xmm14[5],xmm13[6,7]9662; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm7[0,1,0,1]9663; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm6[0,0,0,0]9664; AVX-NEXT: vpblendw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,5],xmm15[6,7]9665; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm14, %ymm139666; AVX-NEXT: vmovaps {{.*#+}} ymm1 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]9667; AVX-NEXT: vandps %ymm1, %ymm10, %ymm109668; AVX-NEXT: vandnps %ymm13, %ymm1, %ymm139669; AVX-NEXT: vorps %ymm13, %ymm10, %ymm19670; AVX-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9671; AVX-NEXT: vpsrld $16, %xmm8, %xmm109672; AVX-NEXT: vpunpckldq {{.*#+}} xmm10 = xmm9[0],xmm10[0],xmm9[1],xmm10[1]9673; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm9[4],xmm8[4],xmm9[5],xmm8[5],xmm9[6],xmm8[6],xmm9[7],xmm8[7]9674; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9675; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm1[0,1,0,1]9676; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm10, %ymm89677; AVX-NEXT: vpshuflw {{.*#+}} xmm9 = xmm0[3,3,3,3,4,5,6,7]9678; AVX-NEXT: vpshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,4,4,4]9679; AVX-NEXT: vpshufd {{.*#+}} xmm10 = xmm2[2,2,2,2]9680; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,5],xmm10[6],xmm9[7]9681; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm3[0,1,2,3,4,5,6,6]9682; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]9683; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm0, %ymm09684; AVX-NEXT: vmovaps {{.*#+}} ymm1 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535]9685; AVX-NEXT: vandnps %ymm8, %ymm1, %ymm89686; AVX-NEXT: vandps %ymm1, %ymm0, %ymm09687; AVX-NEXT: vorps %ymm0, %ymm8, %ymm09688; AVX-NEXT: vpsrldq {{.*#+}} xmm8 = xmm7[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9689; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9690; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1,2],xmm6[3],xmm8[4,5,6,7]9691; AVX-NEXT: vshufps {{.*#+}} xmm7 = xmm7[0,2],xmm6[1,3]9692; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm7, %ymm79693; AVX-NEXT: vmovaps {{.*#+}} ymm1 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]9694; AVX-NEXT: vandps %ymm1, %ymm0, %ymm09695; AVX-NEXT: vandnps %ymm7, %ymm1, %ymm79696; AVX-NEXT: vorps %ymm7, %ymm0, %ymm09697; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9698; AVX-NEXT: vmovdqa 80(%rdx), %xmm19699; AVX-NEXT: vmovdqa 80(%rcx), %xmm99700; AVX-NEXT: vpsrld $16, %xmm9, %xmm09701; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]9702; AVX-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm1[0],xmm9[0],xmm1[1],xmm9[1],xmm1[2],xmm9[2],xmm1[3],xmm9[3]9703; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9704; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm2[0,1,2,3,4,5,6,6]9705; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[2,1,2,3]9706; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm0, %ymm09707; AVX-NEXT: vmovdqa 80(%rdi), %xmm89708; AVX-NEXT: vmovdqa 80(%rsi), %xmm129709; AVX-NEXT: vpsrld $16, %xmm12, %xmm79710; AVX-NEXT: vpunpckldq {{.*#+}} xmm7 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]9711; AVX-NEXT: vpunpcklwd {{.*#+}} xmm10 = xmm12[0],xmm8[0],xmm12[1],xmm8[1],xmm12[2],xmm8[2],xmm12[3],xmm8[3]9712; AVX-NEXT: vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9713; AVX-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9714; AVX-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[2,2,2,2,4,5,6,7]9715; AVX-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,5,5,4]9716; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm10, %ymm79717; AVX-NEXT: vandnps %ymm0, %ymm4, %ymm09718; AVX-NEXT: vandps %ymm4, %ymm7, %ymm79719; AVX-NEXT: vorps %ymm0, %ymm7, %ymm79720; AVX-NEXT: vmovdqa 80(%r9), %xmm49721; AVX-NEXT: vmovdqa 80(%r8), %xmm39722; AVX-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]9723; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9724; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9725; AVX-NEXT: vmovdqa 80(%rax), %xmm29726; AVX-NEXT: vmovdqa %xmm6, %xmm09727; AVX-NEXT: vpslldq {{.*#+}} xmm15 = zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9728; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm2[0,1,0,1]9729; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm15[0,1,2,3,4],xmm6[5],xmm15[6,7]9730; AVX-NEXT: vshufps {{.*#+}} xmm15 = xmm0[0,2],xmm2[1,3]9731; AVX-NEXT: vmovdqa %xmm0, %xmm109732; AVX-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9733; AVX-NEXT: vinsertf128 $1, %xmm15, %ymm6, %ymm69734; AVX-NEXT: vandps %ymm5, %ymm7, %ymm79735; AVX-NEXT: vandnps %ymm6, %ymm5, %ymm69736; AVX-NEXT: vorps %ymm6, %ymm7, %ymm09737; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9738; AVX-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm8[4],xmm12[4],xmm8[5],xmm12[5],xmm8[6],xmm12[6],xmm8[7],xmm12[7]9739; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9740; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm0[0,1,0,1]9741; AVX-NEXT: vpslldq {{.*#+}} xmm7 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9742; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm6, %ymm69743; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm9[3,3,3,3,4,5,6,7]9744; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]9745; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9746; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm1[2,2,2,2]9747; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5],xmm15[6],xmm7[7]9748; AVX-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm1[4],xmm9[4],xmm1[5],xmm9[5],xmm1[6],xmm9[6],xmm1[7],xmm9[7]9749; AVX-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9750; AVX-NEXT: vpslldq {{.*#+}} xmm15 = zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9]9751; AVX-NEXT: vinsertf128 $1, %xmm15, %ymm7, %ymm79752; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]9753; AVX-NEXT: vandnps %ymm6, %ymm0, %ymm69754; AVX-NEXT: vandps %ymm0, %ymm7, %ymm79755; AVX-NEXT: vorps %ymm6, %ymm7, %ymm69756; AVX-NEXT: vpunpckhwd {{.*#+}} xmm7 = xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]9757; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[0,1,2,2,4,5,6,7]9758; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,1,2,1]9759; AVX-NEXT: vmovaps %xmm2, (%rsp) # 16-byte Spill9760; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm2[2,2,3,3]9761; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1],xmm15[2,3],xmm7[4,5,6,7]9762; AVX-NEXT: vpsrldq {{.*#+}} xmm15 = xmm10[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9763; AVX-NEXT: vpblendw {{.*#+}} xmm15 = xmm15[0,1,2],xmm2[3],xmm15[4,5,6,7]9764; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm15, %ymm79765; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]9766; AVX-NEXT: vandps %ymm0, %ymm6, %ymm69767; AVX-NEXT: vandnps %ymm7, %ymm0, %ymm79768; AVX-NEXT: vorps %ymm7, %ymm6, %ymm09769; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9770; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload9771; AVX-NEXT: vpsrld $16, %xmm8, %xmm69772; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload9773; AVX-NEXT: vpunpckldq {{.*#+}} xmm7 = xmm2[0],xmm6[0],xmm2[1],xmm6[1]9774; AVX-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3]9775; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm6[0,0,1,1]9776; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm15, %ymm79777; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload9778; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload9779; AVX-NEXT: vpunpcklwd {{.*#+}} xmm15 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3]9780; AVX-NEXT: vpshuflw {{.*#+}} xmm15 = xmm15[0,1,2,2,4,5,6,7]9781; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm15[0,1,2,1]9782; AVX-NEXT: vpunpcklwd {{.*#+}} xmm14 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3]9783; AVX-NEXT: vpshuflw {{.*#+}} xmm14 = xmm14[2,2,2,2,4,5,6,7]9784; AVX-NEXT: vpshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,5,5,4]9785; AVX-NEXT: vinsertf128 $1, %xmm14, %ymm15, %ymm149786; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]9787; AVX-NEXT: vandnps %ymm7, %ymm0, %ymm79788; AVX-NEXT: vandps %ymm0, %ymm14, %ymm149789; AVX-NEXT: vorps %ymm7, %ymm14, %ymm149790; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload9791; AVX-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm7, %xmm7 # 16-byte Folded Reload9792; AVX-NEXT: # xmm7 = xmm7[0],mem[0],xmm7[1],mem[1],xmm7[2],mem[2],xmm7[3],mem[3]9793; AVX-NEXT: vpslldq {{.*#+}} xmm15 = zero,zero,xmm7[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9794; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9795; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm0[0,1,0,1]9796; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm15[0,1,2,3,4],xmm13[5],xmm15[6,7]9797; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm7[0,1,0,1]9798; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm0[0,0,0,0]9799; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm15[0,1,2,3,4,5],xmm12[6,7]9800; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm12, %ymm129801; AVX-NEXT: vmovaps {{.*#+}} ymm3 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]9802; AVX-NEXT: vandps %ymm3, %ymm14, %ymm139803; AVX-NEXT: vandnps %ymm12, %ymm3, %ymm129804; AVX-NEXT: vorps %ymm12, %ymm13, %ymm39805; AVX-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9806; AVX-NEXT: vpsrld $16, %xmm1, %xmm129807; AVX-NEXT: vpunpckldq {{.*#+}} xmm12 = xmm4[0],xmm12[0],xmm4[1],xmm12[1]9808; AVX-NEXT: vpermilps $68, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload9809; AVX-NEXT: # xmm13 = mem[0,1,0,1]9810; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm12, %ymm129811; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm8[3,3,3,3,4,5,6,7]9812; AVX-NEXT: vpshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,4,4,4]9813; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm2[2,2,2,2]9814; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,5],xmm14[6],xmm13[7]9815; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,6,6]9816; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[2,1,2,3]9817; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm6, %ymm69818; AVX-NEXT: vmovaps {{.*#+}} ymm10 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535]9819; AVX-NEXT: vandnps %ymm12, %ymm10, %ymm129820; AVX-NEXT: vandps %ymm6, %ymm10, %ymm69821; AVX-NEXT: vorps %ymm6, %ymm12, %ymm69822; AVX-NEXT: vpsrldq {{.*#+}} xmm12 = xmm7[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9823; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2],xmm0[3],xmm12[4,5,6,7]9824; AVX-NEXT: vshufps {{.*#+}} xmm7 = xmm7[0,2],xmm0[1,3]9825; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm7, %ymm79826; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]9827; AVX-NEXT: vandps %ymm0, %ymm6, %ymm69828; AVX-NEXT: vandnps %ymm7, %ymm0, %ymm79829; AVX-NEXT: vorps %ymm7, %ymm6, %ymm09830; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9831; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload9832; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload9833; AVX-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm14[4],xmm15[4],xmm14[5],xmm15[5],xmm14[6],xmm15[6],xmm14[7],xmm15[7]9834; AVX-NEXT: vpslldq {{.*#+}} xmm7 = zero,zero,zero,zero,zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9]9835; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm7, %ymm69836; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload9837; AVX-NEXT: vpslldq {{.*#+}} xmm7 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9838; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm2[2,2,3,3]9839; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm7, %ymm79840; AVX-NEXT: vandnps %ymm6, %ymm10, %ymm69841; AVX-NEXT: vandps %ymm7, %ymm10, %ymm79842; AVX-NEXT: vorps %ymm6, %ymm7, %ymm69843; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9844; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload9845; AVX-NEXT: vpunpckhwd {{.*#+}} xmm7 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]9846; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[2,2,2,2,4,5,6,7]9847; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,5,4]9848; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload9849; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm3[2,3,2,3]9850; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0],xmm12[1],xmm7[2,3,4,5,6,7]9851; AVX-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]9852; AVX-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[0,1,2,2,4,5,6,7]9853; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm12[0,1,2,1]9854; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm3[2,2,3,3]9855; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1],xmm13[2,3],xmm12[4,5,6,7]9856; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm12, %ymm129857; AVX-NEXT: vmovaps {{.*#+}} ymm5 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]9858; AVX-NEXT: vandnps %ymm6, %ymm5, %ymm69859; AVX-NEXT: vandps %ymm5, %ymm12, %ymm129860; AVX-NEXT: vorps %ymm6, %ymm12, %ymm49861; AVX-NEXT: vmovups %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9862; AVX-NEXT: vpsrlq $48, %xmm15, %xmm69863; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm6 = xmm14[1],xmm6[1]9864; AVX-NEXT: vpermilps $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload9865; AVX-NEXT: # xmm12 = mem[0,0,1,1]9866; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm6, %ymm69867; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload9868; AVX-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm7, %xmm12 # 16-byte Folded Reload9869; AVX-NEXT: # xmm12 = xmm7[0],mem[0],xmm7[1],mem[1],xmm7[2],mem[2],xmm7[3],mem[3]9870; AVX-NEXT: vpsrldq {{.*#+}} xmm13 = xmm2[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9871; AVX-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[0,1,2,2,4,5,6,7]9872; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm12[0,1,2,1]9873; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm13, %ymm129874; AVX-NEXT: vmovaps {{.*#+}} ymm2 = [65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]9875; AVX-NEXT: vandnps %ymm6, %ymm2, %ymm69876; AVX-NEXT: vandps %ymm2, %ymm12, %ymm129877; AVX-NEXT: vorps %ymm6, %ymm12, %ymm129878; AVX-NEXT: vpshufd $68, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload9879; AVX-NEXT: # xmm6 = mem[0,1,0,1]9880; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload9881; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm2[0,0,0,0]9882; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm6[0,1,2,3,4,5],xmm13[6,7]9883; AVX-NEXT: vpsrld $16, %xmm0, %xmm69884; AVX-NEXT: vpunpckhdq {{.*#+}} xmm6 = xmm1[2],xmm6[2],xmm1[3],xmm6[3]9885; AVX-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm3[4],xmm6[4],xmm3[5],xmm6[5],xmm3[6],xmm6[6],xmm3[7],xmm6[7]9886; AVX-NEXT: vmovdqa {{.*#+}} xmm6 = [8,9,8,9,8,9,8,9,12,13,6,7,10,11,12,13]9887; AVX-NEXT: vpshufb %xmm6, %xmm4, %xmm49888; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm4, %ymm139889; AVX-NEXT: vmovaps {{.*#+}} ymm8 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]9890; AVX-NEXT: vandps %ymm8, %ymm12, %ymm129891; AVX-NEXT: vandnps %ymm13, %ymm8, %ymm139892; AVX-NEXT: vorps %ymm13, %ymm12, %ymm09893; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9894; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9895; AVX-NEXT: vpsrlq $48, %xmm0, %xmm129896; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9897; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm12 = xmm0[1],xmm12[1]9898; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload9899; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm0, %ymm129900; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9901; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm0[2,2,3,3]9902; AVX-NEXT: vpsrldq {{.*#+}} xmm14 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9903; AVX-NEXT: vinsertf128 $1, %xmm14, %ymm13, %ymm139904; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]9905; AVX-NEXT: vandnps %ymm12, %ymm0, %ymm129906; AVX-NEXT: vandps %ymm0, %ymm13, %ymm139907; AVX-NEXT: vorps %ymm12, %ymm13, %ymm129908; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9909; AVX-NEXT: vpsrld $16, %xmm0, %xmm139910; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload9911; AVX-NEXT: vpunpckhdq {{.*#+}} xmm13 = xmm1[2],xmm13[2],xmm1[3],xmm13[3]9912; AVX-NEXT: vpunpckhwd {{.*#+}} xmm14 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]9913; AVX-NEXT: vpunpckhwd {{.*#+}} xmm13 = xmm2[4],xmm13[4],xmm2[5],xmm13[5],xmm2[6],xmm13[6],xmm2[7],xmm13[7]9914; AVX-NEXT: vpshuflw {{.*#+}} xmm14 = xmm14[2,2,2,2,4,5,6,7]9915; AVX-NEXT: vpshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,5,5,4]9916; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm2[2,3,2,3]9917; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm14[0],xmm3[1],xmm14[2,3,4,5,6,7]9918; AVX-NEXT: vpshufb %xmm6, %xmm13, %xmm139919; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm3, %ymm139920; AVX-NEXT: vmovaps {{.*#+}} ymm7 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]9921; AVX-NEXT: vandps %ymm7, %ymm12, %ymm129922; AVX-NEXT: vandnps %ymm13, %ymm7, %ymm139923; AVX-NEXT: vorps %ymm13, %ymm12, %ymm09924; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9925; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload9926; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload9927; AVX-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]9928; AVX-NEXT: vpslldq {{.*#+}} xmm13 = zero,zero,zero,zero,zero,zero,xmm12[0,1,2,3,4,5,6,7,8,9]9929; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm13, %ymm129930; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload9931; AVX-NEXT: vpslldq {{.*#+}} xmm13 = zero,zero,xmm4[0,1,2,3,4,5,6,7,8,9,10,11,12,13]9932; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm4[2,2,3,3]9933; AVX-NEXT: vinsertf128 $1, %xmm14, %ymm13, %ymm139934; AVX-NEXT: vandnps %ymm12, %ymm10, %ymm129935; AVX-NEXT: vandps %ymm10, %ymm13, %ymm139936; AVX-NEXT: vorps %ymm12, %ymm13, %ymm129937; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9938; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload9939; AVX-NEXT: vpunpckhwd {{.*#+}} xmm13 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]9940; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[2,2,2,2,4,5,6,7]9941; AVX-NEXT: vpshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,5,5,4]9942; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload9943; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm6[2,3,2,3]9944; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0],xmm14[1],xmm13[2,3,4,5,6,7]9945; AVX-NEXT: vpunpckhwd {{.*#+}} xmm14 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]9946; AVX-NEXT: vpshuflw {{.*#+}} xmm14 = xmm14[0,1,2,2,4,5,6,7]9947; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm14[0,1,2,1]9948; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm6[2,2,3,3]9949; AVX-NEXT: vpblendw {{.*#+}} xmm14 = xmm14[0,1],xmm15[2,3],xmm14[4,5,6,7]9950; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm14, %ymm139951; AVX-NEXT: vandnps %ymm12, %ymm5, %ymm129952; AVX-NEXT: vandps %ymm5, %ymm13, %ymm139953; AVX-NEXT: vorps %ymm12, %ymm13, %ymm59954; AVX-NEXT: vmovups %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9955; AVX-NEXT: vpsrlq $48, %xmm2, %xmm129956; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm12 = xmm3[1],xmm12[1]9957; AVX-NEXT: vpermilps $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload9958; AVX-NEXT: # xmm13 = mem[0,0,1,1]9959; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm12, %ymm129960; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload9961; AVX-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm13 # 16-byte Folded Reload9962; AVX-NEXT: # xmm13 = xmm2[0],mem[0],xmm2[1],mem[1],xmm2[2],mem[2],xmm2[3],mem[3]9963; AVX-NEXT: vpsrldq {{.*#+}} xmm14 = xmm4[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9964; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[0,1,2,2,4,5,6,7]9965; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm13[0,1,2,1]9966; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm14, %ymm139967; AVX-NEXT: vmovaps {{.*#+}} ymm2 = [65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]9968; AVX-NEXT: vandnps %ymm12, %ymm2, %ymm129969; AVX-NEXT: vandps %ymm2, %ymm13, %ymm139970; AVX-NEXT: vorps %ymm12, %ymm13, %ymm129971; AVX-NEXT: vpermilps $68, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload9972; AVX-NEXT: # xmm13 = mem[0,1,0,1]9973; AVX-NEXT: vshufps {{.*#+}} xmm14 = xmm11[0,0,0,0]9974; AVX-NEXT: vblendps {{.*#+}} xmm13 = xmm13[0,1,2],xmm14[3]9975; AVX-NEXT: vpsrld $16, %xmm0, %xmm149976; AVX-NEXT: vpunpckhdq {{.*#+}} xmm14 = xmm1[2],xmm14[2],xmm1[3],xmm14[3]9977; AVX-NEXT: vpunpckhwd {{.*#+}} xmm5 = xmm6[4],xmm14[4],xmm6[5],xmm14[5],xmm6[6],xmm14[6],xmm6[7],xmm14[7]9978; AVX-NEXT: vmovdqa {{.*#+}} xmm15 = [8,9,8,9,8,9,8,9,12,13,6,7,10,11,12,13]9979; AVX-NEXT: vpshufb %xmm15, %xmm5, %xmm59980; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm5, %ymm59981; AVX-NEXT: vandps %ymm8, %ymm12, %ymm129982; AVX-NEXT: vandnps %ymm5, %ymm8, %ymm59983; AVX-NEXT: vorps %ymm5, %ymm12, %ymm09984; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9985; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9986; AVX-NEXT: vpsrlq $48, %xmm0, %xmm59987; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9988; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm5 = xmm0[1],xmm5[1]9989; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload9990; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm0, %ymm59991; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload9992; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm0[2,2,3,3]9993; AVX-NEXT: vpsrldq {{.*#+}} xmm13 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero9994; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm12, %ymm129995; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]9996; AVX-NEXT: vandnps %ymm5, %ymm0, %ymm59997; AVX-NEXT: vandps %ymm0, %ymm12, %ymm129998; AVX-NEXT: vorps %ymm5, %ymm12, %ymm59999; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload10000; AVX-NEXT: vpsrld $16, %xmm1, %xmm1210001; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10002; AVX-NEXT: vpunpckhdq {{.*#+}} xmm12 = xmm0[2],xmm12[2],xmm0[3],xmm12[3]10003; AVX-NEXT: vpunpckhwd {{.*#+}} xmm13 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]10004; AVX-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm11[4],xmm12[4],xmm11[5],xmm12[5],xmm11[6],xmm12[6],xmm11[7],xmm12[7]10005; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[2,2,2,2,4,5,6,7]10006; AVX-NEXT: vpshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,5,5,4]10007; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm11[2,3,2,3]10008; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm13[0],xmm2[1],xmm13[2,3,4,5,6,7]10009; AVX-NEXT: vpshufb %xmm15, %xmm12, %xmm1210010; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm2, %ymm210011; AVX-NEXT: vandps %ymm7, %ymm5, %ymm510012; AVX-NEXT: vandnps %ymm2, %ymm7, %ymm210013; AVX-NEXT: vorps %ymm2, %ymm5, %ymm010014; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10015; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload10016; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload10017; AVX-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]10018; AVX-NEXT: vpslldq {{.*#+}} xmm12 = zero,zero,zero,zero,zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9]10019; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm12, %ymm210020; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload10021; AVX-NEXT: vpslldq {{.*#+}} xmm12 = zero,zero,xmm5[0,1,2,3,4,5,6,7,8,9,10,11,12,13]10022; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm5[2,2,3,3]10023; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm12, %ymm1210024; AVX-NEXT: vandnps %ymm2, %ymm10, %ymm210025; AVX-NEXT: vandps %ymm10, %ymm12, %ymm1210026; AVX-NEXT: vorps %ymm2, %ymm12, %ymm210027; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload10028; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload10029; AVX-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]10030; AVX-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[2,2,2,2,4,5,6,7]10031; AVX-NEXT: vpshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,5,5,4]10032; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10033; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm0[2,3,2,3]10034; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0],xmm13[1],xmm12[2,3,4,5,6,7]10035; AVX-NEXT: vpunpckhwd {{.*#+}} xmm13 = xmm6[4],xmm1[4],xmm6[5],xmm1[5],xmm6[6],xmm1[6],xmm6[7],xmm1[7]10036; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[0,1,2,2,4,5,6,7]10037; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm13[0,1,2,1]10038; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm0[2,2,3,3]10039; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1],xmm14[2,3],xmm13[4,5,6,7]10040; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm13, %ymm1210041; AVX-NEXT: vmovaps {{.*#+}} ymm14 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]10042; AVX-NEXT: vandnps %ymm2, %ymm14, %ymm210043; AVX-NEXT: vandps %ymm14, %ymm12, %ymm1210044; AVX-NEXT: vorps %ymm2, %ymm12, %ymm210045; AVX-NEXT: vpsrlq $48, %xmm4, %xmm1110046; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm11 = xmm3[1],xmm11[1]10047; AVX-NEXT: vpermilps $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload10048; AVX-NEXT: # xmm12 = mem[0,0,1,1]10049; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm11, %ymm1110050; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload10051; AVX-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm12 # 16-byte Folded Reload10052; AVX-NEXT: # xmm12 = xmm3[0],mem[0],xmm3[1],mem[1],xmm3[2],mem[2],xmm3[3],mem[3]10053; AVX-NEXT: vpsrldq {{.*#+}} xmm13 = xmm5[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero10054; AVX-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[0,1,2,2,4,5,6,7]10055; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm12[0,1,2,1]10056; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm13, %ymm1210057; AVX-NEXT: vmovaps {{.*#+}} ymm3 = [65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]10058; AVX-NEXT: vandnps %ymm11, %ymm3, %ymm1110059; AVX-NEXT: vandps %ymm3, %ymm12, %ymm1210060; AVX-NEXT: vorps %ymm11, %ymm12, %ymm1110061; AVX-NEXT: vpshufd $68, {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload10062; AVX-NEXT: # xmm10 = mem[0,1,0,1]10063; AVX-NEXT: vmovdqa (%rsp), %xmm5 # 16-byte Reload10064; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm5[0,0,0,0]10065; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,5],xmm12[6,7]10066; AVX-NEXT: vpsrld $16, %xmm1, %xmm1210067; AVX-NEXT: vpunpckhdq {{.*#+}} xmm12 = xmm6[2],xmm12[2],xmm6[3],xmm12[3]10068; AVX-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm0[4],xmm12[4],xmm0[5],xmm12[5],xmm0[6],xmm12[6],xmm0[7],xmm12[7]10069; AVX-NEXT: vpshufb %xmm15, %xmm1, %xmm110070; AVX-NEXT: vinsertf128 $1, %xmm10, %ymm1, %ymm110071; AVX-NEXT: vandps %ymm8, %ymm11, %ymm1010072; AVX-NEXT: vandnps %ymm1, %ymm8, %ymm110073; AVX-NEXT: vorps %ymm1, %ymm10, %ymm110074; AVX-NEXT: vpsrlq $48, %xmm9, %xmm410075; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10076; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm4 = xmm0[1],xmm4[1]10077; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10078; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm410079; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10080; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm0[2,2,3,3]10081; AVX-NEXT: vpsrldq {{.*#+}} xmm9 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero10082; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm8, %ymm810083; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]10084; AVX-NEXT: vandnps %ymm4, %ymm0, %ymm410085; AVX-NEXT: vandps %ymm0, %ymm8, %ymm810086; AVX-NEXT: vorps %ymm4, %ymm8, %ymm410087; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload10088; AVX-NEXT: vpsrld $16, %xmm3, %xmm810089; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10090; AVX-NEXT: vpunpckhdq {{.*#+}} xmm8 = xmm0[2],xmm8[2],xmm0[3],xmm8[3]10091; AVX-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm5[4],xmm8[4],xmm5[5],xmm8[5],xmm5[6],xmm8[6],xmm5[7],xmm8[7]10092; AVX-NEXT: vpshufb %xmm15, %xmm8, %xmm610093; AVX-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]10094; AVX-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[2,2,2,2,4,5,6,7]10095; AVX-NEXT: vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,5,4]10096; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm5[2,3,2,3]10097; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm8[0],xmm0[1],xmm8[2,3,4,5,6,7]10098; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm0, %ymm010099; AVX-NEXT: vandps %ymm7, %ymm4, %ymm410100; AVX-NEXT: vandnps %ymm0, %ymm7, %ymm010101; AVX-NEXT: vorps %ymm0, %ymm4, %ymm010102; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload10103; AVX-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload10104; AVX-NEXT: # xmm3 = xmm3[4],mem[4],xmm3[5],mem[5],xmm3[6],mem[6],xmm3[7],mem[7]10105; AVX-NEXT: vpslldq {{.*#+}} xmm4 = zero,zero,zero,zero,zero,zero,xmm3[0,1,2,3,4,5,6,7,8,9]10106; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm310107; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload10108; AVX-NEXT: vpslldq {{.*#+}} xmm4 = zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9,10,11,12,13]10109; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[2,2,3,3]10110; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm4, %ymm410111; AVX-NEXT: vmovaps {{.*#+}} ymm5 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535]10112; AVX-NEXT: vandnps %ymm3, %ymm5, %ymm310113; AVX-NEXT: vandps %ymm5, %ymm4, %ymm410114; AVX-NEXT: vorps %ymm3, %ymm4, %ymm310115; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload10116; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload10117; AVX-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm9[4],xmm8[4],xmm9[5],xmm8[5],xmm9[6],xmm8[6],xmm9[7],xmm8[7]10118; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]10119; AVX-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,5,4]10120; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload10121; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm5[2,3,2,3]10122; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm6[1],xmm4[2,3,4,5,6,7]10123; AVX-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm8[4],xmm9[4],xmm8[5],xmm9[5],xmm8[6],xmm9[6],xmm8[7],xmm9[7]10124; AVX-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,1,2,2,4,5,6,7]10125; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[0,1,2,1]10126; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm5[2,2,3,3]10127; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1],xmm8[2,3],xmm6[4,5,6,7]10128; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm6, %ymm410129; AVX-NEXT: vandnps %ymm3, %ymm14, %ymm310130; AVX-NEXT: vandps %ymm4, %ymm14, %ymm410131; AVX-NEXT: vorps %ymm3, %ymm4, %ymm310132; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax10133; AVX-NEXT: vmovaps %ymm3, 736(%rax)10134; AVX-NEXT: vmovaps %ymm0, 640(%rax)10135; AVX-NEXT: vmovaps %ymm1, 544(%rax)10136; AVX-NEXT: vmovaps %ymm2, 512(%rax)10137; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10138; AVX-NEXT: vmovaps %ymm0, 416(%rax)10139; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10140; AVX-NEXT: vmovaps %ymm0, 320(%rax)10141; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10142; AVX-NEXT: vmovaps %ymm0, 288(%rax)10143; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10144; AVX-NEXT: vmovaps %ymm0, 192(%rax)10145; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10146; AVX-NEXT: vmovaps %ymm0, 96(%rax)10147; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10148; AVX-NEXT: vmovaps %ymm0, 64(%rax)10149; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10150; AVX-NEXT: vmovaps %ymm0, 704(%rax)10151; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10152; AVX-NEXT: vmovaps %ymm0, 672(%rax)10153; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10154; AVX-NEXT: vmovaps %ymm0, 608(%rax)10155; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10156; AVX-NEXT: vmovaps %ymm0, 576(%rax)10157; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10158; AVX-NEXT: vmovaps %ymm0, 480(%rax)10159; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10160; AVX-NEXT: vmovaps %ymm0, 448(%rax)10161; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10162; AVX-NEXT: vmovaps %ymm0, 384(%rax)10163; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10164; AVX-NEXT: vmovaps %ymm0, 352(%rax)10165; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10166; AVX-NEXT: vmovaps %ymm0, 256(%rax)10167; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10168; AVX-NEXT: vmovaps %ymm0, 224(%rax)10169; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10170; AVX-NEXT: vmovaps %ymm0, 160(%rax)10171; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10172; AVX-NEXT: vmovaps %ymm0, 128(%rax)10173; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10174; AVX-NEXT: vmovaps %ymm0, 32(%rax)10175; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10176; AVX-NEXT: vmovaps %ymm0, (%rax)10177; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10178; AVX-NEXT: vmovaps %xmm0, 784(%rax)10179; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10180; AVX-NEXT: vmovaps %xmm0, 768(%rax)10181; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10182; AVX-NEXT: vmovaps %xmm0, 880(%rax)10183; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10184; AVX-NEXT: vmovaps %xmm0, 864(%rax)10185; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10186; AVX-NEXT: vmovaps %xmm0, 816(%rax)10187; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10188; AVX-NEXT: vmovaps %xmm0, 800(%rax)10189; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10190; AVX-NEXT: vmovaps %xmm0, 848(%rax)10191; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10192; AVX-NEXT: vmovaps %xmm0, 832(%rax)10193; AVX-NEXT: addq $1496, %rsp # imm = 0x5D810194; AVX-NEXT: vzeroupper10195; AVX-NEXT: retq10196;10197; AVX2-LABEL: store_i16_stride7_vf64:10198; AVX2: # %bb.0:10199; AVX2-NEXT: subq $1688, %rsp # imm = 0x69810200; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax10201; AVX2-NEXT: vmovdqa 64(%r8), %ymm410202; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10203; AVX2-NEXT: vmovdqa 32(%r8), %ymm310204; AVX2-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10205; AVX2-NEXT: vmovdqa (%r8), %ymm010206; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10207; AVX2-NEXT: vmovdqa 64(%r9), %ymm510208; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10209; AVX2-NEXT: vmovdqa 32(%r9), %ymm810210; AVX2-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10211; AVX2-NEXT: vmovdqa (%r9), %ymm110212; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10213; AVX2-NEXT: vmovdqa (%rax), %ymm910214; AVX2-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10215; AVX2-NEXT: vmovdqa 32(%rax), %ymm710216; AVX2-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10217; AVX2-NEXT: vmovdqa 64(%rax), %ymm610218; AVX2-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10219; AVX2-NEXT: vpmovsxbq {{.*#+}} ymm11 = [0,3,0,4]10220; AVX2-NEXT: vpermd %ymm0, %ymm11, %ymm010221; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,1,0,3,4,5,4,7]10222; AVX2-NEXT: vpshufhw {{.*#+}} ymm2 = ymm1[0,1,2,3,4,4,7,7,8,9,10,11,12,12,15,15]10223; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm1 = [0,0,0,0,0,65535,0,0,0,0,0,0,65535,0,0,0]10224; AVX2-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm010225; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm10 = [3,0,0,3,0,0,0,4]10226; AVX2-NEXT: vpermd %ymm3, %ymm11, %ymm210227; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm8[0,1,0,3,4,5,4,7]10228; AVX2-NEXT: vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,4,4,7,7,8,9,10,11,12,12,15,15]10229; AVX2-NEXT: vpblendvb %ymm1, %ymm2, %ymm3, %ymm210230; AVX2-NEXT: vpermd %ymm4, %ymm11, %ymm310231; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm5[0,1,0,3,4,5,4,7]10232; AVX2-NEXT: vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,4,4,7,7,8,9,10,11,12,12,15,15]10233; AVX2-NEXT: vpblendvb %ymm1, %ymm3, %ymm4, %ymm310234; AVX2-NEXT: vpermd %ymm9, %ymm10, %ymm110235; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0]10236; AVX2-NEXT: vpblendvb %ymm4, %ymm0, %ymm1, %ymm510237; AVX2-NEXT: vpermd %ymm7, %ymm10, %ymm010238; AVX2-NEXT: vpblendvb %ymm4, %ymm2, %ymm0, %ymm110239; AVX2-NEXT: vpermd %ymm6, %ymm10, %ymm010240; AVX2-NEXT: vpblendvb %ymm4, %ymm3, %ymm0, %ymm010241; AVX2-NEXT: vmovdqa (%rsi), %ymm210242; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10243; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,3,2,3,4,7,6,7]10244; AVX2-NEXT: vpshuflw {{.*#+}} ymm2 = ymm2[0,0,3,3,4,5,6,7,8,8,11,11,12,13,14,15]10245; AVX2-NEXT: vmovdqa (%rdi), %ymm310246; AVX2-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10247; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm7 = [3,0,0,0,4,0,0,4]10248; AVX2-NEXT: vpermd %ymm3, %ymm7, %ymm310249; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,65535,0,0,0,0,0,0,65535,0,0,0,0,0,0,65535]10250; AVX2-NEXT: vpblendvb %ymm6, %ymm3, %ymm2, %ymm210251; AVX2-NEXT: vmovdqa (%rcx), %ymm310252; AVX2-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10253; AVX2-NEXT: vpshuflw {{.*#+}} ymm3 = ymm3[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]10254; AVX2-NEXT: vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15]10255; AVX2-NEXT: vmovdqa (%rdx), %ymm410256; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10257; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm9 = [0,3,0,0,0,4,0,0]10258; AVX2-NEXT: vpermd %ymm4, %ymm9, %ymm410259; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm8 = [0,0,0,65535,0,0,0,0,0,0,65535,0,0,0,0,0]10260; AVX2-NEXT: vpblendvb %ymm8, %ymm4, %ymm3, %ymm310261; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]10262; AVX2-NEXT: vpblendvb %ymm10, %ymm2, %ymm3, %ymm210263; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]10264; AVX2-NEXT: vpblendvb %ymm3, %ymm2, %ymm5, %ymm210265; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10266; AVX2-NEXT: vmovdqa 32(%rsi), %ymm210267; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10268; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,3,2,3,4,7,6,7]10269; AVX2-NEXT: vpshuflw {{.*#+}} ymm2 = ymm2[0,0,3,3,4,5,6,7,8,8,11,11,12,13,14,15]10270; AVX2-NEXT: vmovdqa 32(%rdi), %ymm410271; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10272; AVX2-NEXT: vpermd %ymm4, %ymm7, %ymm410273; AVX2-NEXT: vpblendvb %ymm6, %ymm4, %ymm2, %ymm210274; AVX2-NEXT: vmovdqa 32(%rcx), %ymm410275; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10276; AVX2-NEXT: vpshuflw {{.*#+}} ymm4 = ymm4[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]10277; AVX2-NEXT: vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15]10278; AVX2-NEXT: vmovdqa 32(%rdx), %ymm510279; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10280; AVX2-NEXT: vpermd %ymm5, %ymm9, %ymm510281; AVX2-NEXT: vpblendvb %ymm8, %ymm5, %ymm4, %ymm410282; AVX2-NEXT: vpblendvb %ymm10, %ymm2, %ymm4, %ymm210283; AVX2-NEXT: vpblendvb %ymm3, %ymm2, %ymm1, %ymm110284; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10285; AVX2-NEXT: vmovdqa 64(%rsi), %ymm110286; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10287; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,3,2,3,4,7,6,7]10288; AVX2-NEXT: vpshuflw {{.*#+}} ymm1 = ymm1[0,0,3,3,4,5,6,7,8,8,11,11,12,13,14,15]10289; AVX2-NEXT: vmovdqa 64(%rdi), %ymm210290; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10291; AVX2-NEXT: vpermd %ymm2, %ymm7, %ymm210292; AVX2-NEXT: vpblendvb %ymm6, %ymm2, %ymm1, %ymm110293; AVX2-NEXT: vmovdqa 64(%rcx), %ymm210294; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10295; AVX2-NEXT: vpshuflw {{.*#+}} ymm2 = ymm2[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]10296; AVX2-NEXT: vpshufhw {{.*#+}} ymm2 = ymm2[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15]10297; AVX2-NEXT: vmovdqa 64(%rdx), %ymm410298; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10299; AVX2-NEXT: vpermd %ymm4, %ymm9, %ymm410300; AVX2-NEXT: vpblendvb %ymm8, %ymm4, %ymm2, %ymm210301; AVX2-NEXT: vpblendvb %ymm10, %ymm1, %ymm2, %ymm110302; AVX2-NEXT: vpblendvb %ymm3, %ymm1, %ymm0, %ymm010303; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10304; AVX2-NEXT: vmovdqa 96(%rsi), %ymm310305; AVX2-NEXT: vpshuflw {{.*#+}} ymm0 = ymm3[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]10306; AVX2-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10307; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,0,2,1,4,4,6,5]10308; AVX2-NEXT: vmovdqa 96(%rdi), %ymm510309; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm5[1,1,1,1,5,5,5,5]10310; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]10311; AVX2-NEXT: vmovdqa 96(%rcx), %ymm410312; AVX2-NEXT: vpshuflw {{.*#+}} ymm1 = ymm4[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]10313; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,0,0,0,4,4,4,4]10314; AVX2-NEXT: vmovdqa 96(%rdx), %ymm610315; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm6[0,1,1,3,4,5,5,7]10316; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3,4],ymm1[5],ymm2[6,7,8,9],ymm1[10],ymm2[11,12],ymm1[13],ymm2[14,15]10317; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]10318; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]10319; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]10320; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm010321; AVX2-NEXT: vmovdqa 96(%r8), %ymm710322; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm7[0,0,2,1,4,4,6,5]10323; AVX2-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10324; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,3]10325; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]10326; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm010327; AVX2-NEXT: vmovdqa 96(%r9), %ymm810328; AVX2-NEXT: vpshuflw {{.*#+}} ymm1 = ymm8[1,1,2,2,4,5,6,7,9,9,10,10,12,13,14,15]10329; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,2]10330; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]10331; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm010332; AVX2-NEXT: vmovdqa 96(%rax), %ymm910333; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm9[0,1,1,3,4,5,5,7]10334; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]10335; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535]10336; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm010337; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10338; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]10339; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10340; AVX2-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10341; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm6[2,2,2,2,6,6,6,6]10342; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]10343; AVX2-NEXT: vpshufhw {{.*#+}} ymm1 = ymm3[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]10344; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,2,2,6,6,6,6]10345; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10346; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm5[2,2,2,2,6,6,6,6]10347; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]10348; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]10349; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]10350; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]10351; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm010352; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm7[1,2,2,3,5,6,6,7]10353; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]10354; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]10355; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm010356; AVX2-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10357; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm8[2,1,2,3,6,5,6,7]10358; AVX2-NEXT: vpshuflw {{.*#+}} ymm1 = ymm1[0,0,3,3,4,5,6,7,8,8,11,11,12,13,14,15]10359; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,2]10360; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]10361; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm010362; AVX2-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10363; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm9[0,1,2,2,4,5,6,6]10364; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,3]10365; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]10366; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm010367; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10368; AVX2-NEXT: vpshufhw {{.*#+}} ymm0 = ymm3[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]10369; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,2,2,2,6,6,6,6]10370; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm5[3,3,3,3,7,7,7,7]10371; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8,9,10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]10372; AVX2-NEXT: vpshufhw {{.*#+}} ymm1 = ymm4[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]10373; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,2,2,6,6,6,6]10374; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm6[3,3,3,3,7,7,7,7]10375; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]10376; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,3]10377; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]10378; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]10379; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm010380; AVX2-NEXT: vpbroadcastd 124(%r8), %ymm110381; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]10382; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm010383; AVX2-NEXT: vpshufhw {{.*#+}} ymm1 = ymm8[0,1,2,3,5,5,7,6,8,9,10,11,13,13,15,14]10384; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[3,3,3,3]10385; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0]10386; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm010387; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm9[2,3,3,3,6,7,7,7]10388; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]10389; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]10390; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm010391; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10392; AVX2-NEXT: vmovdqa (%rsi), %xmm110393; AVX2-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10394; AVX2-NEXT: vmovdqa (%rdi), %xmm010395; AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10396; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]10397; AVX2-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]10398; AVX2-NEXT: vpshufb %xmm3, %xmm0, %xmm010399; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm0[0,0,1,1]10400; AVX2-NEXT: vmovdqa (%rcx), %xmm010401; AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10402; AVX2-NEXT: vmovdqa (%rdx), %xmm210403; AVX2-NEXT: vmovdqa %xmm2, (%rsp) # 16-byte Spill10404; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]10405; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,2,4,5,6,7]10406; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]10407; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm0[0,1,1,3]10408; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm0 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]10409; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm1310410; AVX2-NEXT: vmovdqa 32(%rsi), %xmm210411; AVX2-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10412; AVX2-NEXT: vmovdqa 32(%rdi), %xmm110413; AVX2-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10414; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]10415; AVX2-NEXT: vpshufb %xmm3, %xmm1, %xmm110416; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]10417; AVX2-NEXT: vmovdqa 32(%rcx), %xmm210418; AVX2-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10419; AVX2-NEXT: vmovdqa 32(%rdx), %xmm1110420; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm11[0],xmm2[0],xmm11[1],xmm2[1],xmm11[2],xmm2[2],xmm11[3],xmm2[3]10421; AVX2-NEXT: vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10422; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,3,2,4,5,6,7]10423; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]10424; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,1,3]10425; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm110426; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10427; AVX2-NEXT: vmovdqa 64(%rsi), %xmm210428; AVX2-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10429; AVX2-NEXT: vmovdqa 64(%rdi), %xmm110430; AVX2-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10431; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]10432; AVX2-NEXT: vpshufb %xmm3, %xmm1, %xmm110433; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]10434; AVX2-NEXT: vmovdqa 64(%rcx), %xmm210435; AVX2-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10436; AVX2-NEXT: vmovdqa 64(%rdx), %xmm910437; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm9[0],xmm2[0],xmm9[1],xmm2[1],xmm9[2],xmm2[2],xmm9[3],xmm2[3]10438; AVX2-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10439; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,3,2,4,5,6,7]10440; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]10441; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,1,3]10442; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm110443; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10444; AVX2-NEXT: vmovdqa 96(%rsi), %xmm210445; AVX2-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10446; AVX2-NEXT: vmovdqa 96(%rdi), %xmm110447; AVX2-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10448; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]10449; AVX2-NEXT: vpshufb %xmm3, %xmm1, %xmm110450; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]10451; AVX2-NEXT: vmovdqa 96(%rcx), %xmm510452; AVX2-NEXT: vmovdqa 96(%rdx), %xmm810453; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm8[0],xmm5[0],xmm8[1],xmm5[1],xmm8[2],xmm5[2],xmm8[3],xmm5[3]10454; AVX2-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10455; AVX2-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10456; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,3,2,4,5,6,7]10457; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]10458; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,1,3]10459; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm410460; AVX2-NEXT: vmovdqa (%r9), %xmm010461; AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10462; AVX2-NEXT: vmovdqa (%r8), %xmm110463; AVX2-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10464; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]10465; AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10466; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,1,3,2,4,5,6,7]10467; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,1,3]10468; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]10469; AVX2-NEXT: vpbroadcastd (%rax), %ymm210470; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0]10471; AVX2-NEXT: vpblendvb %ymm6, %ymm1, %ymm2, %ymm110472; AVX2-NEXT: vmovdqa 32(%r9), %xmm010473; AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10474; AVX2-NEXT: vmovdqa 32(%r8), %xmm210475; AVX2-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10476; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]10477; AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10478; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm0[0,1,3,2,4,5,6,7]10479; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,1,1,3]10480; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]10481; AVX2-NEXT: vpbroadcastd 32(%rax), %ymm310482; AVX2-NEXT: vpblendvb %ymm6, %ymm2, %ymm3, %ymm710483; AVX2-NEXT: vmovdqa 64(%r9), %xmm010484; AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10485; AVX2-NEXT: vmovdqa 64(%r8), %xmm210486; AVX2-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10487; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]10488; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm3[0,1,3,2,4,5,6,7]10489; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,1,1,3]10490; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]10491; AVX2-NEXT: vpbroadcastd 64(%rax), %ymm1210492; AVX2-NEXT: vpblendvb %ymm6, %ymm2, %ymm12, %ymm010493; AVX2-NEXT: vmovdqa 96(%r9), %xmm1010494; AVX2-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10495; AVX2-NEXT: vmovdqa 96(%r8), %xmm210496; AVX2-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill10497; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm10[0],xmm2[1],xmm10[1],xmm2[2],xmm10[2],xmm2[3],xmm10[3]10498; AVX2-NEXT: vpshuflw {{.*#+}} xmm15 = xmm2[0,1,3,2,4,5,6,7]10499; AVX2-NEXT: vpshufd {{.*#+}} xmm15 = xmm15[0,1,1,3]10500; AVX2-NEXT: vpermq {{.*#+}} ymm15 = ymm15[0,0,0,1]10501; AVX2-NEXT: vpbroadcastd 96(%rax), %ymm1410502; AVX2-NEXT: vpblendvb %ymm6, %ymm15, %ymm14, %ymm610503; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]10504; AVX2-NEXT: vpblendvb %ymm14, %ymm13, %ymm1, %ymm110505; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10506; AVX2-NEXT: vpblendvb %ymm14, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7, %ymm1 # 32-byte Folded Reload10507; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10508; AVX2-NEXT: vpblendvb %ymm14, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload10509; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10510; AVX2-NEXT: vpblendvb %ymm14, %ymm4, %ymm6, %ymm010511; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10512; AVX2-NEXT: vpbroadcastq {{.*#+}} xmm4 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]10513; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload10514; AVX2-NEXT: vpshufb %xmm4, %xmm0, %xmm010515; AVX2-NEXT: vpshufd $165, (%rsp), %xmm1 # 16-byte Folded Reload10516; AVX2-NEXT: # xmm1 = mem[1,1,2,2]10517; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1],xmm1[2,3],xmm0[4],xmm1[5,6],xmm0[7]10518; AVX2-NEXT: vpshuflw $255, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload10519; AVX2-NEXT: # xmm1 = mem[3,3,3,3,4,5,6,7]10520; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]10521; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload10522; AVX2-NEXT: vpshufd {{.*#+}} xmm6 = xmm12[1,1,2,3]10523; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm6[0,1],xmm1[2],xmm6[3,4],xmm1[5],xmm6[6,7]10524; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm0[0,0,1,1]10525; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,2,1]10526; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm0 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]10527; AVX2-NEXT: vpblendvb %ymm0, %ymm6, %ymm1, %ymm110528; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10529; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload10530; AVX2-NEXT: vpshufb %xmm4, %xmm1, %xmm110531; AVX2-NEXT: vpshufd {{.*#+}} xmm6 = xmm11[1,1,2,2]10532; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm6[0],xmm1[1],xmm6[2,3],xmm1[4],xmm6[5,6],xmm1[7]10533; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload10534; AVX2-NEXT: vpshuflw {{.*#+}} xmm6 = xmm13[3,3,3,3,4,5,6,7]10535; AVX2-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]10536; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload10537; AVX2-NEXT: vpshufd {{.*#+}} xmm14 = xmm10[1,1,2,3]10538; AVX2-NEXT: vpblendw {{.*#+}} xmm6 = xmm14[0,1],xmm6[2],xmm14[3,4],xmm6[5],xmm14[6,7]10539; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]10540; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,2,1]10541; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm6, %ymm110542; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10543; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload10544; AVX2-NEXT: vpshufb %xmm4, %xmm1, %xmm110545; AVX2-NEXT: vpshufd {{.*#+}} xmm14 = xmm9[1,1,2,2]10546; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm14[0],xmm1[1],xmm14[2,3],xmm1[4],xmm14[5,6],xmm1[7]10547; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload10548; AVX2-NEXT: vpshuflw {{.*#+}} xmm14 = xmm11[3,3,3,3,4,5,6,7]10549; AVX2-NEXT: vpshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,4,4,4]10550; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload10551; AVX2-NEXT: vpshufd {{.*#+}} xmm15 = xmm7[1,1,2,3]10552; AVX2-NEXT: vpblendw {{.*#+}} xmm14 = xmm15[0,1],xmm14[2],xmm15[3,4],xmm14[5],xmm15[6,7]10553; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]10554; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,2,1]10555; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm14, %ymm110556; AVX2-NEXT: vpshufb %xmm4, %xmm5, %xmm410557; AVX2-NEXT: vpshufd {{.*#+}} xmm14 = xmm8[1,1,2,2]10558; AVX2-NEXT: vpblendw {{.*#+}} xmm4 = xmm14[0],xmm4[1],xmm14[2,3],xmm4[4],xmm14[5,6],xmm4[7]10559; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload10560; AVX2-NEXT: vpshuflw {{.*#+}} xmm14 = xmm9[3,3,3,3,4,5,6,7]10561; AVX2-NEXT: vpshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,4,4,4]10562; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload10563; AVX2-NEXT: vpshufd {{.*#+}} xmm15 = xmm6[1,1,2,3]10564; AVX2-NEXT: vpblendw {{.*#+}} xmm14 = xmm15[0,1],xmm14[2],xmm15[3,4],xmm14[5],xmm15[6,7]10565; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]10566; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,2,1]10567; AVX2-NEXT: vpblendvb %ymm0, %ymm4, %ymm14, %ymm010568; AVX2-NEXT: vpshufhw $180, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload10569; AVX2-NEXT: # xmm4 = mem[0,1,2,3,4,5,7,6]10570; AVX2-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,2,3,3]10571; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,3]10572; AVX2-NEXT: vpbroadcastd 4(%rax), %ymm810573; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm14 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]10574; AVX2-NEXT: vpblendvb %ymm14, %ymm4, %ymm8, %ymm410575; AVX2-NEXT: vpshufhw $180, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload10576; AVX2-NEXT: # xmm5 = mem[0,1,2,3,4,5,7,6]10577; AVX2-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[0,2,3,3]10578; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,1,3]10579; AVX2-NEXT: vpbroadcastd 36(%rax), %ymm810580; AVX2-NEXT: vpblendvb %ymm14, %ymm5, %ymm8, %ymm510581; AVX2-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,7,6]10582; AVX2-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,2,3,3]10583; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,1,3]10584; AVX2-NEXT: vpbroadcastd 68(%rax), %ymm810585; AVX2-NEXT: vpblendvb %ymm14, %ymm3, %ymm8, %ymm310586; AVX2-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,6]10587; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,3,3]10588; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,1,3]10589; AVX2-NEXT: vpbroadcastd 100(%rax), %ymm810590; AVX2-NEXT: vpblendvb %ymm14, %ymm2, %ymm8, %ymm210591; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]10592; AVX2-NEXT: vpblendvb %ymm8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4, %ymm4 # 32-byte Folded Reload10593; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10594; AVX2-NEXT: vpblendvb %ymm8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5, %ymm4 # 32-byte Folded Reload10595; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10596; AVX2-NEXT: vpblendvb %ymm8, %ymm1, %ymm3, %ymm110597; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10598; AVX2-NEXT: vpblendvb %ymm8, %ymm0, %ymm2, %ymm010599; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10600; AVX2-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload10601; AVX2-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload10602; AVX2-NEXT: # xmm0 = xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]10603; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload10604; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm12[4],xmm1[5],xmm12[5],xmm1[6],xmm12[6],xmm1[7],xmm12[7]10605; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]10606; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,2,1]10607; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]10608; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,5,4]10609; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,3]10610; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]10611; AVX2-NEXT: vpblendvb %ymm3, %ymm1, %ymm0, %ymm010612; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload10613; AVX2-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload10614; AVX2-NEXT: # xmm1 = xmm1[4],mem[4],xmm1[5],mem[5],xmm1[6],mem[6],xmm1[7],mem[7]10615; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm13[4],xmm10[4],xmm13[5],xmm10[5],xmm13[6],xmm10[6],xmm13[7],xmm10[7]10616; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,2,3,3,4,5,6,7]10617; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,2,1]10618; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[2,1,2,3,4,5,6,7]10619; AVX2-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,4]10620; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,3]10621; AVX2-NEXT: vpblendvb %ymm3, %ymm2, %ymm1, %ymm110622; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload10623; AVX2-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload10624; AVX2-NEXT: # xmm2 = xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]10625; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm4 = xmm11[4],xmm7[4],xmm11[5],xmm7[5],xmm11[6],xmm7[6],xmm11[7],xmm7[7]10626; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,2,3,3,4,5,6,7]10627; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,2,1]10628; AVX2-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[2,1,2,3,4,5,6,7]10629; AVX2-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,5,4]10630; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,3]10631; AVX2-NEXT: vpblendvb %ymm3, %ymm4, %ymm2, %ymm210632; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload10633; AVX2-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload10634; AVX2-NEXT: # xmm4 = xmm4[4],mem[4],xmm4[5],mem[5],xmm4[6],mem[6],xmm4[7],mem[7]10635; AVX2-NEXT: vpunpckhwd {{.*#+}} xmm5 = xmm9[4],xmm6[4],xmm9[5],xmm6[5],xmm9[6],xmm6[6],xmm9[7],xmm6[7]10636; AVX2-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,2,3,3,4,5,6,7]10637; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,2,1]10638; AVX2-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[2,1,2,3,4,5,6,7]10639; AVX2-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,5,4]10640; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,3]10641; AVX2-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm310642; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload10643; AVX2-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload10644; AVX2-NEXT: # xmm4 = xmm4[4],mem[4],xmm4[5],mem[5],xmm4[6],mem[6],xmm4[7],mem[7]10645; AVX2-NEXT: vmovdqa {{.*#+}} xmm9 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]10646; AVX2-NEXT: vpshufb %xmm9, %xmm4, %xmm410647; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]10648; AVX2-NEXT: vpbroadcastd 8(%rax), %ymm510649; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]10650; AVX2-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm410651; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload10652; AVX2-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload10653; AVX2-NEXT: # xmm5 = xmm5[4],mem[4],xmm5[5],mem[5],xmm5[6],mem[6],xmm5[7],mem[7]10654; AVX2-NEXT: vpshufb %xmm9, %xmm5, %xmm510655; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]10656; AVX2-NEXT: vpbroadcastd 40(%rax), %ymm710657; AVX2-NEXT: vpblendvb %ymm6, %ymm5, %ymm7, %ymm510658; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload10659; AVX2-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm7, %xmm7 # 16-byte Folded Reload10660; AVX2-NEXT: # xmm7 = xmm7[4],mem[4],xmm7[5],mem[5],xmm7[6],mem[6],xmm7[7],mem[7]10661; AVX2-NEXT: vpshufb %xmm9, %xmm7, %xmm710662; AVX2-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,1,1]10663; AVX2-NEXT: vpbroadcastd 72(%rax), %ymm810664; AVX2-NEXT: vpblendvb %ymm6, %ymm7, %ymm8, %ymm710665; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload10666; AVX2-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm8, %xmm8 # 16-byte Folded Reload10667; AVX2-NEXT: # xmm8 = xmm8[4],mem[4],xmm8[5],mem[5],xmm8[6],mem[6],xmm8[7],mem[7]10668; AVX2-NEXT: vpshufb %xmm9, %xmm8, %xmm810669; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]10670; AVX2-NEXT: vpbroadcastd 104(%rax), %ymm910671; AVX2-NEXT: vpblendvb %ymm6, %ymm8, %ymm9, %ymm610672; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]10673; AVX2-NEXT: vpblendvb %ymm8, %ymm4, %ymm0, %ymm010674; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10675; AVX2-NEXT: vpblendvb %ymm8, %ymm5, %ymm1, %ymm010676; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10677; AVX2-NEXT: vpblendvb %ymm8, %ymm7, %ymm2, %ymm010678; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10679; AVX2-NEXT: vpblendvb %ymm8, %ymm6, %ymm3, %ymm010680; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10681; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm0 = [3,0,0,0,4,0,0,4]10682; AVX2-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm1 # 32-byte Folded Reload10683; AVX2-NEXT: vpshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Folded Reload10684; AVX2-NEXT: # ymm2 = mem[0,3,2,3,4,7,6,7]10685; AVX2-NEXT: vpshuflw {{.*#+}} ymm2 = ymm2[0,0,3,3,4,5,6,7,8,8,11,11,12,13,14,15]10686; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm0 = [0,65535,0,0,0,0,0,0,65535,0,0,0,0,0,0,65535]10687; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm110688; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm0 = [0,3,0,0,0,4,0,0]10689; AVX2-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 32-byte Folded Reload10690; AVX2-NEXT: vpshuflw $0, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Folded Reload10691; AVX2-NEXT: # ymm3 = mem[0,0,0,0,4,5,6,7,8,8,8,8,12,13,14,15]10692; AVX2-NEXT: vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,7,7,7,7,8,9,10,11,15,15,15,15]10693; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm0 = [0,0,0,65535,0,0,0,0,0,0,65535,0,0,0,0,0]10694; AVX2-NEXT: vpblendvb %ymm0, %ymm2, %ymm3, %ymm210695; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm0 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]10696; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm110697; AVX2-NEXT: vpmovsxbq {{.*#+}} ymm0 = [0,3,0,4]10698; AVX2-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 32-byte Folded Reload10699; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]10700; AVX2-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm110701; AVX2-NEXT: vpshufd $196, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Folded Reload10702; AVX2-NEXT: # ymm2 = mem[0,1,0,3,4,5,4,7]10703; AVX2-NEXT: vpshufhw {{.*#+}} ymm2 = ymm2[0,1,2,3,4,4,7,7,8,9,10,11,12,12,15,15]10704; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535]10705; AVX2-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm110706; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm0 = [3,0,0,3,0,0,0,4]10707; AVX2-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 32-byte Folded Reload10708; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535]10709; AVX2-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm010710; AVX2-NEXT: vmovdqu %ymm0, (%rsp) # 32-byte Spill10711; AVX2-NEXT: vpshuflw $249, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Folded Reload10712; AVX2-NEXT: # ymm2 = mem[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]10713; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,0,2,1,4,4,6,5]10714; AVX2-NEXT: vpshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Folded Reload10715; AVX2-NEXT: # ymm3 = mem[1,1,1,1,5,5,5,5]10716; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm3[2],ymm2[3,4],ymm3[5],ymm2[6,7,8,9],ymm3[10],ymm2[11,12],ymm3[13],ymm2[14,15]10717; AVX2-NEXT: vpshuflw $233, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Folded Reload10718; AVX2-NEXT: # ymm3 = mem[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]10719; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[0,0,0,0,4,4,4,4]10720; AVX2-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload10721; AVX2-NEXT: # ymm4 = mem[0,1,1,3,4,5,5,7]10722; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0,1],ymm3[2],ymm4[3,4],ymm3[5],ymm4[6,7,8,9],ymm3[10],ymm4[11,12],ymm3[13],ymm4[14,15]10723; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]10724; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,1,3,2]10725; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm0 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]10726; AVX2-NEXT: vpblendvb %ymm0, %ymm2, %ymm3, %ymm110727; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10728; AVX2-NEXT: vpshuflw $249, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Folded Reload10729; AVX2-NEXT: # ymm3 = mem[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]10730; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[0,0,2,1,4,4,6,5]10731; AVX2-NEXT: vpshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload10732; AVX2-NEXT: # ymm4 = mem[1,1,1,1,5,5,5,5]10733; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3,4],ymm4[5],ymm3[6,7,8,9],ymm4[10],ymm3[11,12],ymm4[13],ymm3[14,15]10734; AVX2-NEXT: vpshuflw $233, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload10735; AVX2-NEXT: # ymm4 = mem[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]10736; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[0,0,0,0,4,4,4,4]10737; AVX2-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Folded Reload10738; AVX2-NEXT: # ymm5 = mem[0,1,1,3,4,5,5,7]10739; AVX2-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1],ymm4[2],ymm5[3,4],ymm4[5],ymm5[6,7,8,9],ymm4[10],ymm5[11,12],ymm4[13],ymm5[14,15]10740; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]10741; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,1,3,2]10742; AVX2-NEXT: vpblendvb %ymm0, %ymm3, %ymm4, %ymm110743; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10744; AVX2-NEXT: vpshuflw $249, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload10745; AVX2-NEXT: # ymm4 = mem[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]10746; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[0,0,2,1,4,4,6,5]10747; AVX2-NEXT: vpshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Folded Reload10748; AVX2-NEXT: # ymm5 = mem[1,1,1,1,5,5,5,5]10749; AVX2-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm5[2],ymm4[3,4],ymm5[5],ymm4[6,7,8,9],ymm5[10],ymm4[11,12],ymm5[13],ymm4[14,15]10750; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload10751; AVX2-NEXT: vpshuflw {{.*#+}} ymm5 = ymm2[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]10752; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[0,0,0,0,4,4,4,4]10753; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload10754; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm1[0,1,1,3,4,5,5,7]10755; AVX2-NEXT: vpblendw {{.*#+}} ymm5 = ymm6[0,1],ymm5[2],ymm6[3,4],ymm5[5],ymm6[6,7,8,9],ymm5[10],ymm6[11,12],ymm5[13],ymm6[14,15]10756; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]10757; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,1,3,2]10758; AVX2-NEXT: vpblendvb %ymm0, %ymm4, %ymm5, %ymm010759; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10760; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10761; AVX2-NEXT: vpshuflw {{.*#+}} ymm5 = ymm0[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]10762; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[0,0,0,0,4,4,4,4]10763; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Reload10764; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm15[0,0,2,1,4,4,6,5]10765; AVX2-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0,1,2],ymm6[3],ymm5[4,5],ymm6[6],ymm5[7,8,9,10],ymm6[11],ymm5[12,13],ymm6[14],ymm5[15]10766; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]10767; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload10768; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm10[0,1,1,3,4,5,5,7]10769; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,2,3]10770; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm7 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]10771; AVX2-NEXT: vpblendvb %ymm7, %ymm5, %ymm6, %ymm510772; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload10773; AVX2-NEXT: vpshuflw {{.*#+}} ymm6 = ymm11[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]10774; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm6[0,0,0,0,4,4,4,4]10775; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload10776; AVX2-NEXT: vpshufd {{.*#+}} ymm8 = ymm4[0,0,2,1,4,4,6,5]10777; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm6[0,1,2],ymm8[3],ymm6[4,5],ymm8[6],ymm6[7,8,9,10],ymm8[11],ymm6[12,13],ymm8[14],ymm6[15]10778; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]10779; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload10780; AVX2-NEXT: vpshufd {{.*#+}} ymm8 = ymm12[0,1,1,3,4,5,5,7]10781; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,2,2,3]10782; AVX2-NEXT: vpblendvb %ymm7, %ymm6, %ymm8, %ymm610783; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload10784; AVX2-NEXT: vpshuflw {{.*#+}} ymm8 = ymm3[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]10785; AVX2-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[0,0,0,0,4,4,4,4]10786; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload10787; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm13[0,0,2,1,4,4,6,5]10788; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm8[0,1,2],ymm9[3],ymm8[4,5],ymm9[6],ymm8[7,8,9,10],ymm9[11],ymm8[12,13],ymm9[14],ymm8[15]10789; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]10790; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload10791; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm14[0,1,1,3,4,5,5,7]10792; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,2,2,3]10793; AVX2-NEXT: vpblendvb %ymm7, %ymm8, %ymm9, %ymm710794; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]10795; AVX2-NEXT: vpblendvb %ymm8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5, %ymm0 # 32-byte Folded Reload10796; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10797; AVX2-NEXT: vpblendvb %ymm8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm0 # 32-byte Folded Reload10798; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10799; AVX2-NEXT: vpblendvb %ymm8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7, %ymm0 # 32-byte Folded Reload10800; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10801; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm9 = [22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27,22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27]10802; AVX2-NEXT: # ymm9 = mem[0,1,0,1]10803; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10804; AVX2-NEXT: vpshufb %ymm9, %ymm0, %ymm510805; AVX2-NEXT: vpshufd $170, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload10806; AVX2-NEXT: # ymm6 = mem[2,2,2,2,6,6,6,6]10807; AVX2-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0,1],ymm6[2],ymm5[3,4],ymm6[5],ymm5[6,7,8,9],ymm6[10],ymm5[11,12],ymm6[13],ymm5[14,15]10808; AVX2-NEXT: vpshufhw $225, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload10809; AVX2-NEXT: # ymm6 = mem[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]10810; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm6[2,2,2,2,6,6,6,6]10811; AVX2-NEXT: vpshufd $170, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Folded Reload10812; AVX2-NEXT: # ymm7 = mem[2,2,2,2,6,6,6,6]10813; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm7[0],ymm6[1],ymm7[2,3],ymm6[4],ymm7[5,6,7,8],ymm6[9],ymm7[10,11],ymm6[12],ymm7[13,14,15]10814; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]10815; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,2,3]10816; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm0 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]10817; AVX2-NEXT: vpblendvb %ymm0, %ymm5, %ymm6, %ymm510818; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10819; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload10820; AVX2-NEXT: vpshufb %ymm9, %ymm5, %ymm610821; AVX2-NEXT: vpshufd $170, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Folded Reload10822; AVX2-NEXT: # ymm7 = mem[2,2,2,2,6,6,6,6]10823; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm6[0,1],ymm7[2],ymm6[3,4],ymm7[5],ymm6[6,7,8,9],ymm7[10],ymm6[11,12],ymm7[13],ymm6[14,15]10824; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload10825; AVX2-NEXT: vpshufhw {{.*#+}} ymm7 = ymm5[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]10826; AVX2-NEXT: vpshufd {{.*#+}} ymm7 = ymm7[2,2,2,2,6,6,6,6]10827; AVX2-NEXT: vpshufd $170, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload10828; AVX2-NEXT: # ymm8 = mem[2,2,2,2,6,6,6,6]10829; AVX2-NEXT: vpblendw {{.*#+}} ymm7 = ymm8[0],ymm7[1],ymm8[2,3],ymm7[4],ymm8[5,6,7,8],ymm7[9],ymm8[10,11],ymm7[12],ymm8[13,14,15]10830; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]10831; AVX2-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,2,2,3]10832; AVX2-NEXT: vpblendvb %ymm0, %ymm6, %ymm7, %ymm610833; AVX2-NEXT: vpshufb %ymm9, %ymm2, %ymm710834; AVX2-NEXT: vpshufd {{.*#+}} ymm8 = ymm1[2,2,2,2,6,6,6,6]10835; AVX2-NEXT: vpblendw {{.*#+}} ymm7 = ymm7[0,1],ymm8[2],ymm7[3,4],ymm8[5],ymm7[6,7,8,9],ymm8[10],ymm7[11,12],ymm8[13],ymm7[14,15]10836; AVX2-NEXT: vpshufhw $225, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload10837; AVX2-NEXT: # ymm8 = mem[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]10838; AVX2-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[2,2,2,2,6,6,6,6]10839; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10840; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm0[2,2,2,2,6,6,6,6]10841; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2,3],ymm8[4],ymm9[5,6,7,8],ymm8[9],ymm9[10,11],ymm8[12],ymm9[13,14,15]10842; AVX2-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,2,3]10843; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,2,2,3]10844; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm1 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]10845; AVX2-NEXT: vpblendvb %ymm1, %ymm7, %ymm8, %ymm710846; AVX2-NEXT: vpshuflw $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload10847; AVX2-NEXT: # ymm8 = mem[3,3,3,3,4,5,6,7,11,11,11,11,12,13,14,15]10848; AVX2-NEXT: vpshufhw {{.*#+}} ymm8 = ymm8[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]10849; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm15[1,2,2,3,5,6,6,7]10850; AVX2-NEXT: vmovdqa %ymm15, %ymm210851; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2],ymm9[3,4],ymm8[5],ymm9[6,7,8,9],ymm8[10],ymm9[11,12],ymm8[13],ymm9[14,15]10852; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,1,3,2]10853; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm10[0,1,2,2,4,5,6,6]10854; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,1,3,3]10855; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]10856; AVX2-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm810857; AVX2-NEXT: vpshuflw {{.*#+}} ymm9 = ymm11[3,3,3,3,4,5,6,7,11,11,11,11,12,13,14,15]10858; AVX2-NEXT: vpshufhw {{.*#+}} ymm9 = ymm9[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]10859; AVX2-NEXT: vpshufd {{.*#+}} ymm11 = ymm4[1,2,2,3,5,6,6,7]10860; AVX2-NEXT: vmovdqa %ymm4, %ymm110861; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm11[0,1],ymm9[2],ymm11[3,4],ymm9[5],ymm11[6,7,8,9],ymm9[10],ymm11[11,12],ymm9[13],ymm11[14,15]10862; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,1,3,2]10863; AVX2-NEXT: vpshufd {{.*#+}} ymm11 = ymm12[0,1,2,2,4,5,6,6]10864; AVX2-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,1,3,3]10865; AVX2-NEXT: vpblendvb %ymm10, %ymm9, %ymm11, %ymm910866; AVX2-NEXT: vpshuflw {{.*#+}} ymm11 = ymm3[3,3,3,3,4,5,6,7,11,11,11,11,12,13,14,15]10867; AVX2-NEXT: vpshufhw {{.*#+}} ymm11 = ymm11[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]10868; AVX2-NEXT: vpshufd {{.*#+}} ymm12 = ymm13[1,2,2,3,5,6,6,7]10869; AVX2-NEXT: vmovdqa %ymm13, %ymm1510870; AVX2-NEXT: vpblendw {{.*#+}} ymm11 = ymm12[0,1],ymm11[2],ymm12[3,4],ymm11[5],ymm12[6,7,8,9],ymm11[10],ymm12[11,12],ymm11[13],ymm12[14,15]10871; AVX2-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,1,3,2]10872; AVX2-NEXT: vpshufd {{.*#+}} ymm12 = ymm14[0,1,2,2,4,5,6,6]10873; AVX2-NEXT: vmovdqa %ymm14, %ymm310874; AVX2-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,1,3,3]10875; AVX2-NEXT: vpblendvb %ymm10, %ymm11, %ymm12, %ymm1010876; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]10877; AVX2-NEXT: vpblendvb %ymm11, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8, %ymm4 # 32-byte Folded Reload10878; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill10879; AVX2-NEXT: vpblendvb %ymm11, %ymm6, %ymm9, %ymm610880; AVX2-NEXT: vpblendvb %ymm11, %ymm7, %ymm10, %ymm710881; AVX2-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload10882; AVX2-NEXT: # ymm8 = mem[3,3,3,3,7,7,7,7]10883; AVX2-NEXT: vpshufhw $235, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Folded Reload10884; AVX2-NEXT: # ymm9 = mem[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]10885; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,2,2,2,6,6,6,6]10886; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm8[0,1,2],ymm9[3],ymm8[4,5],ymm9[6],ymm8[7,8,9,10],ymm9[11],ymm8[12,13],ymm9[14],ymm8[15]10887; AVX2-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Folded Reload10888; AVX2-NEXT: # ymm9 = mem[3,3,3,3,7,7,7,7]10889; AVX2-NEXT: vpshufhw $235, {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Folded Reload10890; AVX2-NEXT: # ymm10 = mem[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]10891; AVX2-NEXT: vpshufd {{.*#+}} ymm10 = ymm10[2,2,2,2,6,6,6,6]10892; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm9[0],ymm10[1],ymm9[2,3],ymm10[4],ymm9[5,6,7,8],ymm10[9],ymm9[10,11],ymm10[12],ymm9[13,14,15]10893; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,1,3,3]10894; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,2,2,3]10895; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]10896; AVX2-NEXT: vpblendvb %ymm4, %ymm8, %ymm9, %ymm810897; AVX2-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Folded Reload10898; AVX2-NEXT: # ymm9 = mem[3,3,3,3,7,7,7,7]10899; AVX2-NEXT: vpshufhw {{.*#+}} ymm10 = ymm5[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]10900; AVX2-NEXT: vpshufd {{.*#+}} ymm10 = ymm10[2,2,2,2,6,6,6,6]10901; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm9[0,1,2],ymm10[3],ymm9[4,5],ymm10[6],ymm9[7,8,9,10],ymm10[11],ymm9[12,13],ymm10[14],ymm9[15]10902; AVX2-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Folded Reload10903; AVX2-NEXT: # ymm10 = mem[3,3,3,3,7,7,7,7]10904; AVX2-NEXT: vpshufhw $235, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Folded Reload10905; AVX2-NEXT: # ymm11 = mem[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]10906; AVX2-NEXT: vpshufd {{.*#+}} ymm11 = ymm11[2,2,2,2,6,6,6,6]10907; AVX2-NEXT: vpblendw {{.*#+}} ymm10 = ymm10[0],ymm11[1],ymm10[2,3],ymm11[4],ymm10[5,6,7,8],ymm11[9],ymm10[10,11],ymm11[12],ymm10[13,14,15]10908; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,1,3,3]10909; AVX2-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,2,2,3]10910; AVX2-NEXT: vpblendvb %ymm4, %ymm9, %ymm10, %ymm910911; AVX2-NEXT: vpshufd {{.*#+}} ymm10 = ymm0[3,3,3,3,7,7,7,7]10912; AVX2-NEXT: vpshufhw $235, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Folded Reload10913; AVX2-NEXT: # ymm11 = mem[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]10914; AVX2-NEXT: vpshufd {{.*#+}} ymm11 = ymm11[2,2,2,2,6,6,6,6]10915; AVX2-NEXT: vpblendw {{.*#+}} ymm10 = ymm10[0,1,2],ymm11[3],ymm10[4,5],ymm11[6],ymm10[7,8,9,10],ymm11[11],ymm10[12,13],ymm11[14],ymm10[15]10916; AVX2-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Folded Reload10917; AVX2-NEXT: # ymm11 = mem[3,3,3,3,7,7,7,7]10918; AVX2-NEXT: vpshufhw $235, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Folded Reload10919; AVX2-NEXT: # ymm12 = mem[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]10920; AVX2-NEXT: vpshufd {{.*#+}} ymm12 = ymm12[2,2,2,2,6,6,6,6]10921; AVX2-NEXT: vpblendw {{.*#+}} ymm11 = ymm11[0],ymm12[1],ymm11[2,3],ymm12[4],ymm11[5,6,7,8],ymm12[9],ymm11[10,11],ymm12[12],ymm11[13,14,15]10922; AVX2-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,1,3,3]10923; AVX2-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,2,2,3]10924; AVX2-NEXT: vpblendvb %ymm4, %ymm10, %ymm11, %ymm1010925; AVX2-NEXT: vpshufd {{.*#+}} ymm11 = ymm2[3,3,3,3,7,7,7,7]10926; AVX2-NEXT: vpshufhw $249, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Folded Reload10927; AVX2-NEXT: # ymm12 = mem[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]10928; AVX2-NEXT: vpshufd {{.*#+}} ymm12 = ymm12[2,2,2,3,6,6,6,7]10929; AVX2-NEXT: vpblendw {{.*#+}} ymm11 = ymm12[0,1],ymm11[2],ymm12[3,4],ymm11[5],ymm12[6,7,8,9],ymm11[10],ymm12[11,12],ymm11[13],ymm12[14,15]10930; AVX2-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,2,3]10931; AVX2-NEXT: vpshufd $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Folded Reload10932; AVX2-NEXT: # ymm12 = mem[2,3,3,3,6,7,7,7]10933; AVX2-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,1,3,2]10934; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm13 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]10935; AVX2-NEXT: vpblendvb %ymm13, %ymm11, %ymm12, %ymm1110936; AVX2-NEXT: vpshufd {{.*#+}} ymm12 = ymm1[3,3,3,3,7,7,7,7]10937; AVX2-NEXT: vpshufhw $249, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload10938; AVX2-NEXT: # ymm14 = mem[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]10939; AVX2-NEXT: vpshufd {{.*#+}} ymm14 = ymm14[2,2,2,3,6,6,6,7]10940; AVX2-NEXT: vpblendw {{.*#+}} ymm12 = ymm14[0,1],ymm12[2],ymm14[3,4],ymm12[5],ymm14[6,7,8,9],ymm12[10],ymm14[11,12],ymm12[13],ymm14[14,15]10941; AVX2-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,2,2,3]10942; AVX2-NEXT: vpshufd $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload10943; AVX2-NEXT: # ymm14 = mem[2,3,3,3,6,7,7,7]10944; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,1,3,2]10945; AVX2-NEXT: vpblendvb %ymm13, %ymm12, %ymm14, %ymm1210946; AVX2-NEXT: vpshufd {{.*#+}} ymm14 = ymm15[3,3,3,3,7,7,7,7]10947; AVX2-NEXT: vpshufhw $249, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload10948; AVX2-NEXT: # ymm15 = mem[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]10949; AVX2-NEXT: vpshufd {{.*#+}} ymm15 = ymm15[2,2,2,3,6,6,6,7]10950; AVX2-NEXT: vpblendw {{.*#+}} ymm14 = ymm15[0,1],ymm14[2],ymm15[3,4],ymm14[5],ymm15[6,7,8,9],ymm14[10],ymm15[11,12],ymm14[13],ymm15[14,15]10951; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,2,2,3]10952; AVX2-NEXT: vpshufd {{.*#+}} ymm15 = ymm3[2,3,3,3,6,7,7,7]10953; AVX2-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,1,3,2]10954; AVX2-NEXT: vpblendvb %ymm13, %ymm14, %ymm15, %ymm1310955; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm14 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]10956; AVX2-NEXT: vpblendvb %ymm14, %ymm8, %ymm11, %ymm810957; AVX2-NEXT: vpblendvb %ymm14, %ymm9, %ymm12, %ymm910958; AVX2-NEXT: vpblendvb %ymm14, %ymm10, %ymm13, %ymm1010959; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax10960; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10961; AVX2-NEXT: vmovaps %ymm0, 544(%rax)10962; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10963; AVX2-NEXT: vmovaps %ymm0, 320(%rax)10964; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10965; AVX2-NEXT: vmovaps %ymm0, 96(%rax)10966; AVX2-NEXT: vmovdqa %ymm10, 640(%rax)10967; AVX2-NEXT: vmovdqa %ymm7, 608(%rax)10968; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10969; AVX2-NEXT: vmovaps %ymm0, 576(%rax)10970; AVX2-NEXT: vmovdqa %ymm9, 416(%rax)10971; AVX2-NEXT: vmovdqa %ymm6, 384(%rax)10972; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10973; AVX2-NEXT: vmovaps %ymm0, 352(%rax)10974; AVX2-NEXT: vmovdqa %ymm8, 192(%rax)10975; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10976; AVX2-NEXT: vmovaps %ymm0, 160(%rax)10977; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10978; AVX2-NEXT: vmovaps %ymm0, 128(%rax)10979; AVX2-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload10980; AVX2-NEXT: vmovaps %ymm0, 768(%rax)10981; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10982; AVX2-NEXT: vmovaps %ymm0, 736(%rax)10983; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10984; AVX2-NEXT: vmovaps %ymm0, 704(%rax)10985; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10986; AVX2-NEXT: vmovaps %ymm0, 672(%rax)10987; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10988; AVX2-NEXT: vmovaps %ymm0, 512(%rax)10989; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10990; AVX2-NEXT: vmovaps %ymm0, 480(%rax)10991; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10992; AVX2-NEXT: vmovaps %ymm0, 448(%rax)10993; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10994; AVX2-NEXT: vmovaps %ymm0, 288(%rax)10995; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10996; AVX2-NEXT: vmovaps %ymm0, 256(%rax)10997; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload10998; AVX2-NEXT: vmovaps %ymm0, 224(%rax)10999; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11000; AVX2-NEXT: vmovaps %ymm0, 64(%rax)11001; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11002; AVX2-NEXT: vmovaps %ymm0, 32(%rax)11003; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11004; AVX2-NEXT: vmovaps %ymm0, (%rax)11005; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11006; AVX2-NEXT: vmovaps %ymm0, 864(%rax)11007; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11008; AVX2-NEXT: vmovaps %ymm0, 832(%rax)11009; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11010; AVX2-NEXT: vmovaps %ymm0, 800(%rax)11011; AVX2-NEXT: addq $1688, %rsp # imm = 0x69811012; AVX2-NEXT: vzeroupper11013; AVX2-NEXT: retq11014;11015; AVX2-FP-LABEL: store_i16_stride7_vf64:11016; AVX2-FP: # %bb.0:11017; AVX2-FP-NEXT: subq $1544, %rsp # imm = 0x60811018; AVX2-FP-NEXT: vmovdqa 96(%rdi), %ymm011019; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11020; AVX2-FP-NEXT: vmovdqa 96(%rsi), %ymm211021; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11022; AVX2-FP-NEXT: vmovdqa 96(%rdx), %ymm311023; AVX2-FP-NEXT: vmovdqu %ymm3, (%rsp) # 32-byte Spill11024; AVX2-FP-NEXT: vmovdqa 96(%rcx), %ymm511025; AVX2-FP-NEXT: vmovdqa 96(%r8), %ymm711026; AVX2-FP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11027; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm14 = [3,0,0,0,4,0,0,4]11028; AVX2-FP-NEXT: vpermd %ymm0, %ymm14, %ymm111029; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm15 = [0,1,0,1,14,15,14,15,8,9,10,11,12,13,14,15,16,17,16,17,30,31,30,31,24,25,26,27,28,29,30,31]11030; AVX2-FP-NEXT: vpshufb %ymm15, %ymm2, %ymm411031; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,65535,0,0,0,0,0,0,65535,0,0,0,0,0,0,65535]11032; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm1, %ymm4, %ymm111033; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm10 = [0,3,0,0,0,4,0,0]11034; AVX2-FP-NEXT: vpermd %ymm3, %ymm10, %ymm411035; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm11 = [0,1,0,1,0,1,0,1,14,15,14,15,14,15,14,15,16,17,16,17,16,17,16,17,30,31,30,31,30,31,30,31]11036; AVX2-FP-NEXT: vpshufb %ymm11, %ymm5, %ymm611037; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,0,0,65535,0,0,0,0,0,0,65535,0,0,0,0,0]11038; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm4, %ymm6, %ymm411039; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]11040; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm1, %ymm4, %ymm111041; AVX2-FP-NEXT: vpmovsxbq {{.*#+}} ymm0 = [0,3,0,4]11042; AVX2-FP-NEXT: vpermd %ymm7, %ymm0, %ymm411043; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]11044; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm1, %ymm4, %ymm111045; AVX2-FP-NEXT: vmovdqa 96(%r9), %ymm411046; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm9 = [0,1,2,3,4,5,6,7,0,1,0,1,14,15,14,15,16,17,18,19,20,21,22,23,16,17,16,17,30,31,30,31]11047; AVX2-FP-NEXT: vpshufb %ymm9, %ymm4, %ymm611048; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535]11049; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm1, %ymm6, %ymm111050; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax11051; AVX2-FP-NEXT: vmovdqa 96(%rax), %ymm611052; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm0 = [3,0,0,3,0,0,0,4]11053; AVX2-FP-NEXT: vpermd %ymm6, %ymm0, %ymm711054; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535]11055; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm1, %ymm7, %ymm111056; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11057; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm011058; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11059; AVX2-FP-NEXT: vmovdqa (%rsi), %ymm311060; AVX2-FP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11061; AVX2-FP-NEXT: vpermd %ymm0, %ymm14, %ymm111062; AVX2-FP-NEXT: vpshufb %ymm15, %ymm3, %ymm711063; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm1, %ymm7, %ymm311064; AVX2-FP-NEXT: vmovdqa 32(%rdi), %ymm111065; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11066; AVX2-FP-NEXT: vmovdqa 32(%rsi), %ymm011067; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11068; AVX2-FP-NEXT: vpermd %ymm1, %ymm14, %ymm711069; AVX2-FP-NEXT: vpshufb %ymm15, %ymm0, %ymm811070; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm7, %ymm8, %ymm711071; AVX2-FP-NEXT: vmovdqa 64(%rdi), %ymm011072; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11073; AVX2-FP-NEXT: vpermd %ymm0, %ymm14, %ymm811074; AVX2-FP-NEXT: vmovdqa 64(%rsi), %ymm011075; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11076; AVX2-FP-NEXT: vpshufb %ymm15, %ymm0, %ymm1411077; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm8, %ymm14, %ymm111078; AVX2-FP-NEXT: vmovdqa (%rdx), %ymm011079; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11080; AVX2-FP-NEXT: vmovdqa (%rcx), %ymm211081; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11082; AVX2-FP-NEXT: vpermd %ymm0, %ymm10, %ymm811083; AVX2-FP-NEXT: vpshufb %ymm11, %ymm2, %ymm1411084; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm8, %ymm14, %ymm811085; AVX2-FP-NEXT: vmovdqa 32(%rdx), %ymm211086; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11087; AVX2-FP-NEXT: vmovdqa 32(%rcx), %ymm011088; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11089; AVX2-FP-NEXT: vpermd %ymm2, %ymm10, %ymm1411090; AVX2-FP-NEXT: vpshufb %ymm11, %ymm0, %ymm1511091; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm14, %ymm15, %ymm1411092; AVX2-FP-NEXT: vmovdqa 64(%rdx), %ymm011093; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11094; AVX2-FP-NEXT: vpermd %ymm0, %ymm10, %ymm1011095; AVX2-FP-NEXT: vmovdqa 64(%rcx), %ymm011096; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11097; AVX2-FP-NEXT: vpshufb %ymm11, %ymm0, %ymm1111098; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm10, %ymm11, %ymm1011099; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm3, %ymm8, %ymm311100; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm7, %ymm14, %ymm711101; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm1, %ymm10, %ymm011102; AVX2-FP-NEXT: vmovdqa (%r8), %ymm111103; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11104; AVX2-FP-NEXT: vmovdqa (%r9), %ymm211105; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11106; AVX2-FP-NEXT: vpmovsxbq {{.*#+}} ymm12 = [0,3,0,4]11107; AVX2-FP-NEXT: vpermd %ymm1, %ymm12, %ymm811108; AVX2-FP-NEXT: vpshufb %ymm9, %ymm2, %ymm1011109; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,0,0,0,0,65535,0,0,0,0,0,0,65535,0,0,0]11110; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm8, %ymm10, %ymm811111; AVX2-FP-NEXT: vmovdqa 32(%r8), %ymm211112; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11113; AVX2-FP-NEXT: vmovdqa 32(%r9), %ymm111114; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11115; AVX2-FP-NEXT: vpermd %ymm2, %ymm12, %ymm1011116; AVX2-FP-NEXT: vmovdqa %ymm12, %ymm211117; AVX2-FP-NEXT: vpshufb %ymm9, %ymm1, %ymm1211118; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm10, %ymm12, %ymm1011119; AVX2-FP-NEXT: vmovdqa 64(%r8), %ymm111120; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11121; AVX2-FP-NEXT: vpermd %ymm1, %ymm2, %ymm1211122; AVX2-FP-NEXT: vmovdqa 64(%r9), %ymm111123; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11124; AVX2-FP-NEXT: vpshufb %ymm9, %ymm1, %ymm911125; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm12, %ymm9, %ymm911126; AVX2-FP-NEXT: vmovdqa (%rax), %ymm111127; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11128; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [3,0,0,3,0,0,0,4]11129; AVX2-FP-NEXT: vpermd %ymm1, %ymm2, %ymm1111130; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0]11131; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm8, %ymm11, %ymm811132; AVX2-FP-NEXT: vmovdqa 32(%rax), %ymm111133; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11134; AVX2-FP-NEXT: vpermd %ymm1, %ymm2, %ymm1111135; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm10, %ymm11, %ymm1011136; AVX2-FP-NEXT: vmovdqa 64(%rax), %ymm111137; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11138; AVX2-FP-NEXT: vpermd %ymm1, %ymm2, %ymm1111139; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm9, %ymm11, %ymm911140; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]11141; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm3, %ymm8, %ymm111142; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11143; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm7, %ymm10, %ymm111144; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11145; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm0, %ymm9, %ymm011146; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11147; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload11148; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]11149; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload11150; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm3[1,1,1,1,5,5,5,5]11151; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]11152; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} ymm1 = ymm5[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]11153; AVX2-FP-NEXT: vmovdqu (%rsp), %ymm8 # 32-byte Reload11154; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm7 = ymm8[0,1,1,3,4,5,5,7]11155; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm7[0,1],ymm1[2],ymm7[3,4],ymm1[5],ymm7[6,7,8,9],ymm1[10],ymm7[11,12],ymm1[13],ymm7[14,15]11156; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]11157; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]11158; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]11159; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm011160; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload11161; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm10[0,0,2,1,4,4,6,5]11162; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,3]11163; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]11164; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm0, %ymm1, %ymm011165; AVX2-FP-NEXT: vpshuflw {{.*#+}} ymm1 = ymm4[1,1,2,2,4,5,6,7,9,9,10,10,12,13,14,15]11166; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,2]11167; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]11168; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm0, %ymm1, %ymm011169; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm6[0,1,1,3,4,5,5,7]11170; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]11171; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535]11172; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm0, %ymm1, %ymm011173; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11174; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]11175; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm8[2,2,2,2,6,6,6,6]11176; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]11177; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm9[10,11,8,9,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,u,u,u,u,26,27,24,25,u,u,u,u]11178; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm7 = ymm3[2,2,2,2,6,6,6,6]11179; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm7[0],ymm1[1],ymm7[2,3],ymm1[4],ymm7[5,6,7,8],ymm1[9],ymm7[10,11],ymm1[12],ymm7[13,14,15]11180; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]11181; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]11182; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]11183; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm011184; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm10[1,2,2,3,5,6,6,7]11185; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]11186; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]11187; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm0, %ymm1, %ymm011188; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,24,25,22,23,22,23,u,u,u,u,u,u,u,u]11189; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,2]11190; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]11191; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm0, %ymm1, %ymm011192; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm6[0,1,2,2,4,5,6,6]11193; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,3]11194; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]11195; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm0, %ymm1, %ymm011196; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11197; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]11198; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm3[3,3,3,3,7,7,7,7]11199; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8,9,10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]11200; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm5[14,15,12,13,u,u,u,u,u,u,u,u,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29,u,u,u,u]11201; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm2 = ymm8[3,3,3,3,7,7,7,7]11202; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]11203; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,3]11204; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]11205; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]11206; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm011207; AVX2-FP-NEXT: vpbroadcastd 124(%r8), %ymm111208; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]11209; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm011210; AVX2-FP-NEXT: vpshufhw {{.*#+}} ymm1 = ymm4[0,1,2,3,5,5,7,6,8,9,10,11,13,13,15,14]11211; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[3,3,3,3]11212; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0]11213; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm011214; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm1 = ymm6[2,3,3,3,6,7,7,7]11215; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]11216; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]11217; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm011218; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11219; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm111220; AVX2-FP-NEXT: vmovdqa %xmm1, (%rsp) # 16-byte Spill11221; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm011222; AVX2-FP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11223; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]11224; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm4 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]11225; AVX2-FP-NEXT: vpshufb %xmm4, %xmm0, %xmm011226; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm0[0,0,1,1]11227; AVX2-FP-NEXT: vmovdqa (%rcx), %xmm1211228; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm111229; AVX2-FP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11230; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm12[0],xmm1[1],xmm12[1],xmm1[2],xmm12[2],xmm1[3],xmm12[3]11231; AVX2-FP-NEXT: vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11232; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm0 = [0,1,2,3,0,1,2,3,6,7,4,5,6,7,4,5]11233; AVX2-FP-NEXT: vpshufb %xmm0, %xmm1, %xmm111234; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm1[0,1,1,3]11235; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm1 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]11236; AVX2-FP-NEXT: vpblendvb %ymm1, %ymm2, %ymm3, %ymm211237; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11238; AVX2-FP-NEXT: vmovdqa 32(%rsi), %xmm311239; AVX2-FP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11240; AVX2-FP-NEXT: vmovdqa 32(%rdi), %xmm211241; AVX2-FP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11242; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]11243; AVX2-FP-NEXT: vpshufb %xmm4, %xmm2, %xmm211244; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]11245; AVX2-FP-NEXT: vmovdqa 32(%rcx), %xmm1411246; AVX2-FP-NEXT: vmovdqa 32(%rdx), %xmm1111247; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm11[0],xmm14[0],xmm11[1],xmm14[1],xmm11[2],xmm14[2],xmm11[3],xmm14[3]11248; AVX2-FP-NEXT: vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11249; AVX2-FP-NEXT: vmovdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11250; AVX2-FP-NEXT: vpshufb %xmm0, %xmm3, %xmm311251; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,1,3]11252; AVX2-FP-NEXT: vpblendvb %ymm1, %ymm2, %ymm3, %ymm211253; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11254; AVX2-FP-NEXT: vmovdqa 64(%rsi), %xmm211255; AVX2-FP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11256; AVX2-FP-NEXT: vmovdqa 64(%rdi), %xmm311257; AVX2-FP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11258; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]11259; AVX2-FP-NEXT: vpshufb %xmm4, %xmm2, %xmm211260; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]11261; AVX2-FP-NEXT: vmovdqa 64(%rcx), %xmm311262; AVX2-FP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11263; AVX2-FP-NEXT: vmovdqa 64(%rdx), %xmm1011264; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm10[0],xmm3[0],xmm10[1],xmm3[1],xmm10[2],xmm3[2],xmm10[3],xmm3[3]11265; AVX2-FP-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11266; AVX2-FP-NEXT: vpshufb %xmm0, %xmm3, %xmm311267; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,1,3]11268; AVX2-FP-NEXT: vpblendvb %ymm1, %ymm2, %ymm3, %ymm211269; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11270; AVX2-FP-NEXT: vmovdqa 96(%rcx), %xmm211271; AVX2-FP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11272; AVX2-FP-NEXT: vmovdqa 96(%rdx), %xmm311273; AVX2-FP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11274; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]11275; AVX2-FP-NEXT: vpshufb %xmm0, %xmm2, %xmm011276; AVX2-FP-NEXT: vmovdqa 96(%rsi), %xmm311277; AVX2-FP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11278; AVX2-FP-NEXT: vmovdqa 96(%rdi), %xmm211279; AVX2-FP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11280; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]11281; AVX2-FP-NEXT: vpshufb %xmm4, %xmm2, %xmm211282; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]11283; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,1,3]11284; AVX2-FP-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm711285; AVX2-FP-NEXT: vmovdqa (%r9), %xmm011286; AVX2-FP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11287; AVX2-FP-NEXT: vmovdqa (%r8), %xmm111288; AVX2-FP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11289; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm9 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]11290; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm4 = [0,1,2,3,6,7,4,5,6,7,4,5,12,13,14,15]11291; AVX2-FP-NEXT: vpshufb %xmm4, %xmm9, %xmm111292; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]11293; AVX2-FP-NEXT: vpbroadcastd (%rax), %ymm211294; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0]11295; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm1, %ymm2, %ymm511296; AVX2-FP-NEXT: vmovdqa 32(%r9), %xmm011297; AVX2-FP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11298; AVX2-FP-NEXT: vmovdqa 32(%r8), %xmm111299; AVX2-FP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11300; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]11301; AVX2-FP-NEXT: vpshufb %xmm4, %xmm8, %xmm211302; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]11303; AVX2-FP-NEXT: vpbroadcastd 32(%rax), %ymm311304; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm2, %ymm3, %ymm111305; AVX2-FP-NEXT: vmovdqa 64(%r9), %xmm011306; AVX2-FP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11307; AVX2-FP-NEXT: vmovdqa 64(%r8), %xmm211308; AVX2-FP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11309; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]11310; AVX2-FP-NEXT: vpshufb %xmm4, %xmm3, %xmm211311; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]11312; AVX2-FP-NEXT: vpbroadcastd 64(%rax), %ymm1311313; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm2, %ymm13, %ymm011314; AVX2-FP-NEXT: vmovdqa 96(%r8), %xmm1311315; AVX2-FP-NEXT: vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11316; AVX2-FP-NEXT: vmovdqa 96(%r9), %xmm211317; AVX2-FP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill11318; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm13[0],xmm2[0],xmm13[1],xmm2[1],xmm13[2],xmm2[2],xmm13[3],xmm2[3]11319; AVX2-FP-NEXT: vpshufb %xmm4, %xmm2, %xmm411320; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]11321; AVX2-FP-NEXT: vpbroadcastd 96(%rax), %ymm1511322; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm4, %ymm15, %ymm411323; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]11324; AVX2-FP-NEXT: vpblendvb %ymm6, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5, %ymm5 # 32-byte Folded Reload11325; AVX2-FP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11326; AVX2-FP-NEXT: vpblendvb %ymm6, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload11327; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11328; AVX2-FP-NEXT: vpblendvb %ymm6, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload11329; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11330; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm7, %ymm4, %ymm011331; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11332; AVX2-FP-NEXT: vpbroadcastq {{.*#+}} xmm1 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]11333; AVX2-FP-NEXT: vpshufb %xmm1, %xmm12, %xmm011334; AVX2-FP-NEXT: vpshufd $165, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload11335; AVX2-FP-NEXT: # xmm4 = mem[1,1,2,2]11336; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm4[0],xmm0[1],xmm4[2,3],xmm0[4],xmm4[5,6],xmm0[7]11337; AVX2-FP-NEXT: vpbroadcastd {{.*#+}} xmm5 = [6,7,8,9,6,7,8,9,6,7,8,9,6,7,8,9]11338; AVX2-FP-NEXT: vmovdqa (%rsp), %xmm4 # 16-byte Reload11339; AVX2-FP-NEXT: vpshufb %xmm5, %xmm4, %xmm411340; AVX2-FP-NEXT: vpshufd $229, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload11341; AVX2-FP-NEXT: # xmm6 = mem[1,1,2,3]11342; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm4 = xmm6[0,1],xmm4[2],xmm6[3,4],xmm4[5],xmm6[6,7]11343; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]11344; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,2,1]11345; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]11346; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm0, %ymm4, %ymm611347; AVX2-FP-NEXT: vpshufb %xmm1, %xmm14, %xmm011348; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm4 = xmm11[1,1,2,2]11349; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm4[0],xmm0[1],xmm4[2,3],xmm0[4],xmm4[5,6],xmm0[7]11350; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload11351; AVX2-FP-NEXT: vpshufb %xmm5, %xmm4, %xmm411352; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload11353; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm15 = xmm14[1,1,2,3]11354; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm4 = xmm15[0,1],xmm4[2],xmm15[3,4],xmm4[5],xmm15[6,7]11355; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]11356; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,2,1]11357; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm0, %ymm4, %ymm411358; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload11359; AVX2-FP-NEXT: vpshufb %xmm1, %xmm0, %xmm011360; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm15 = xmm10[1,1,2,2]11361; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm15[0],xmm0[1],xmm15[2,3],xmm0[4],xmm15[5,6],xmm0[7]11362; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload11363; AVX2-FP-NEXT: vpshufb %xmm5, %xmm10, %xmm1511364; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload11365; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm13 = xmm12[1,1,2,3]11366; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1],xmm15[2],xmm13[3,4],xmm15[5],xmm13[6,7]11367; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]11368; AVX2-FP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[0,0,2,1]11369; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm0, %ymm13, %ymm011370; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload11371; AVX2-FP-NEXT: vpshufb %xmm1, %xmm13, %xmm111372; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload11373; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm13 = xmm15[1,1,2,2]11374; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm1 = xmm13[0],xmm1[1],xmm13[2,3],xmm1[4],xmm13[5,6],xmm1[7]11375; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload11376; AVX2-FP-NEXT: vpshufb %xmm5, %xmm11, %xmm511377; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload11378; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm13 = xmm10[1,1,2,3]11379; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm5 = xmm13[0,1],xmm5[2],xmm13[3,4],xmm5[5],xmm13[6,7]11380; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]11381; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,2,1]11382; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm1, %ymm5, %ymm111383; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm5 = [0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]11384; AVX2-FP-NEXT: vpshufb %xmm5, %xmm9, %xmm711385; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,1,3]11386; AVX2-FP-NEXT: vpbroadcastd 4(%rax), %ymm911387; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]11388; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm7, %ymm9, %ymm711389; AVX2-FP-NEXT: vpshufb %xmm5, %xmm8, %xmm811390; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,1,1,3]11391; AVX2-FP-NEXT: vpbroadcastd 36(%rax), %ymm911392; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm8, %ymm9, %ymm811393; AVX2-FP-NEXT: vpshufb %xmm5, %xmm3, %xmm311394; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,1,3]11395; AVX2-FP-NEXT: vpbroadcastd 68(%rax), %ymm911396; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm3, %ymm9, %ymm311397; AVX2-FP-NEXT: vpshufb %xmm5, %xmm2, %xmm211398; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,1,1,3]11399; AVX2-FP-NEXT: vpbroadcastd 100(%rax), %ymm511400; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm2, %ymm5, %ymm211401; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]11402; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm6, %ymm7, %ymm611403; AVX2-FP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11404; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm4, %ymm8, %ymm411405; AVX2-FP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11406; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm0, %ymm3, %ymm011407; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11408; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm1, %ymm2, %ymm011409; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11410; AVX2-FP-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload11411; AVX2-FP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload11412; AVX2-FP-NEXT: # xmm0 = xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]11413; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload11414; AVX2-FP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload11415; AVX2-FP-NEXT: # xmm1 = xmm1[4],mem[4],xmm1[5],mem[5],xmm1[6],mem[6],xmm1[7],mem[7]11416; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm3 = [4,5,2,3,4,5,6,7,8,9,10,11,10,11,8,9]11417; AVX2-FP-NEXT: vpshufb %xmm3, %xmm0, %xmm011418; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,3]11419; AVX2-FP-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,2,3,3,4,5,6,7]11420; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,2,1]11421; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]11422; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm0, %ymm1, %ymm011423; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload11424; AVX2-FP-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm14[4],xmm1[5],xmm14[5],xmm1[6],xmm14[6],xmm1[7],xmm14[7]11425; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload11426; AVX2-FP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload11427; AVX2-FP-NEXT: # xmm2 = xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]11428; AVX2-FP-NEXT: vpshufb %xmm3, %xmm1, %xmm111429; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,3]11430; AVX2-FP-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,2,3,3,4,5,6,7]11431; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,2,1]11432; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm1, %ymm2, %ymm111433; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload11434; AVX2-FP-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm2[4],xmm12[4],xmm2[5],xmm12[5],xmm2[6],xmm12[6],xmm2[7],xmm12[7]11435; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload11436; AVX2-FP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload11437; AVX2-FP-NEXT: # xmm5 = xmm5[4],mem[4],xmm5[5],mem[5],xmm5[6],mem[6],xmm5[7],mem[7]11438; AVX2-FP-NEXT: vpshufb %xmm3, %xmm2, %xmm211439; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,3]11440; AVX2-FP-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,2,3,3,4,5,6,7]11441; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,2,1]11442; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm2, %ymm5, %ymm211443; AVX2-FP-NEXT: vpunpckhwd {{.*#+}} xmm5 = xmm11[4],xmm10[4],xmm11[5],xmm10[5],xmm11[6],xmm10[6],xmm11[7],xmm10[7]11444; AVX2-FP-NEXT: vpshufb %xmm3, %xmm5, %xmm311445; AVX2-FP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm5 # 16-byte Folded Reload11446; AVX2-FP-NEXT: # xmm5 = xmm15[4],mem[4],xmm15[5],mem[5],xmm15[6],mem[6],xmm15[7],mem[7]11447; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,3]11448; AVX2-FP-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,2,3,3,4,5,6,7]11449; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,2,1]11450; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm3, %ymm5, %ymm311451; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload11452; AVX2-FP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload11453; AVX2-FP-NEXT: # xmm4 = xmm4[4],mem[4],xmm4[5],mem[5],xmm4[6],mem[6],xmm4[7],mem[7]11454; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm9 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]11455; AVX2-FP-NEXT: vpshufb %xmm9, %xmm4, %xmm411456; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]11457; AVX2-FP-NEXT: vpbroadcastd 8(%rax), %ymm511458; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]11459; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm411460; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload11461; AVX2-FP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload11462; AVX2-FP-NEXT: # xmm5 = xmm5[4],mem[4],xmm5[5],mem[5],xmm5[6],mem[6],xmm5[7],mem[7]11463; AVX2-FP-NEXT: vpshufb %xmm9, %xmm5, %xmm511464; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]11465; AVX2-FP-NEXT: vpbroadcastd 40(%rax), %ymm711466; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm5, %ymm7, %ymm511467; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload11468; AVX2-FP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm7, %xmm7 # 16-byte Folded Reload11469; AVX2-FP-NEXT: # xmm7 = xmm7[4],mem[4],xmm7[5],mem[5],xmm7[6],mem[6],xmm7[7],mem[7]11470; AVX2-FP-NEXT: vpshufb %xmm9, %xmm7, %xmm711471; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,1,1]11472; AVX2-FP-NEXT: vpbroadcastd 72(%rax), %ymm811473; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm7, %ymm8, %ymm711474; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload11475; AVX2-FP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm8, %xmm8 # 16-byte Folded Reload11476; AVX2-FP-NEXT: # xmm8 = xmm8[4],mem[4],xmm8[5],mem[5],xmm8[6],mem[6],xmm8[7],mem[7]11477; AVX2-FP-NEXT: vpshufb %xmm9, %xmm8, %xmm811478; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]11479; AVX2-FP-NEXT: vpbroadcastd 104(%rax), %ymm911480; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm8, %ymm9, %ymm611481; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]11482; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm4, %ymm0, %ymm011483; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11484; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm5, %ymm1, %ymm011485; AVX2-FP-NEXT: vmovdqu %ymm0, (%rsp) # 32-byte Spill11486; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm7, %ymm2, %ymm011487; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11488; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm6, %ymm3, %ymm011489; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11490; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11491; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]11492; AVX2-FP-NEXT: # ymm1 = mem[0,1,0,1]11493; AVX2-FP-NEXT: vpshufb %ymm1, %ymm0, %ymm411494; AVX2-FP-NEXT: vpshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Folded Reload11495; AVX2-FP-NEXT: # ymm5 = mem[1,1,1,1,5,5,5,5]11496; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm5[2],ymm4[3,4],ymm5[5],ymm4[6,7,8,9],ymm5[10],ymm4[11,12],ymm5[13],ymm4[14,15]11497; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11498; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} ymm5 = ymm0[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]11499; AVX2-FP-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload11500; AVX2-FP-NEXT: # ymm6 = mem[0,1,1,3,4,5,5,7]11501; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm5 = ymm6[0,1],ymm5[2],ymm6[3,4],ymm5[5],ymm6[6,7,8,9],ymm5[10],ymm6[11,12],ymm5[13],ymm6[14,15]11502; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]11503; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,1,3,2]11504; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]11505; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm4, %ymm5, %ymm011506; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11507; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11508; AVX2-FP-NEXT: vpshufb %ymm1, %ymm0, %ymm511509; AVX2-FP-NEXT: vpshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload11510; AVX2-FP-NEXT: # ymm6 = mem[1,1,1,1,5,5,5,5]11511; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm5 = ymm5[0,1],ymm6[2],ymm5[3,4],ymm6[5],ymm5[6,7,8,9],ymm6[10],ymm5[11,12],ymm6[13],ymm5[14,15]11512; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11513; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} ymm6 = ymm0[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]11514; AVX2-FP-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Folded Reload11515; AVX2-FP-NEXT: # ymm7 = mem[0,1,1,3,4,5,5,7]11516; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm6 = ymm7[0,1],ymm6[2],ymm7[3,4],ymm6[5],ymm7[6,7,8,9],ymm6[10],ymm7[11,12],ymm6[13],ymm7[14,15]11517; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]11518; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,1,3,2]11519; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm5, %ymm6, %ymm011520; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11521; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload11522; AVX2-FP-NEXT: vpshufb %ymm1, %ymm12, %ymm611523; AVX2-FP-NEXT: vpshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Folded Reload11524; AVX2-FP-NEXT: # ymm7 = mem[1,1,1,1,5,5,5,5]11525; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm6 = ymm6[0,1],ymm7[2],ymm6[3,4],ymm7[5],ymm6[6,7,8,9],ymm7[10],ymm6[11,12],ymm7[13],ymm6[14,15]11526; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload11527; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} ymm7 = ymm2[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]11528; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload11529; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm8 = ymm4[0,1,1,3,4,5,5,7]11530; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm7 = ymm8[0,1],ymm7[2],ymm8[3,4],ymm7[5],ymm8[6,7,8,9],ymm7[10],ymm8[11,12],ymm7[13],ymm8[14,15]11531; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]11532; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,1,3,2]11533; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm6, %ymm7, %ymm011534; AVX2-FP-NEXT: vpbroadcastd {{.*#+}} ymm7 = [18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21]11535; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload11536; AVX2-FP-NEXT: vpshufb %ymm7, %ymm6, %ymm811537; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload11538; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm9 = ymm14[0,0,2,1,4,4,6,5]11539; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm8[0,1,2],ymm9[3],ymm8[4,5],ymm9[6],ymm8[7,8,9,10],ymm9[11],ymm8[12,13],ymm9[14],ymm8[15]11540; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]11541; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload11542; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm9 = ymm13[0,1,1,3,4,5,5,7]11543; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,2,2,3]11544; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]11545; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm811546; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload11547; AVX2-FP-NEXT: vpshufb %ymm7, %ymm1, %ymm911548; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload11549; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm11 = ymm5[0,0,2,1,4,4,6,5]11550; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm9[0,1,2],ymm11[3],ymm9[4,5],ymm11[6],ymm9[7,8,9,10],ymm11[11],ymm9[12,13],ymm11[14],ymm9[15]11551; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]11552; AVX2-FP-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Folded Reload11553; AVX2-FP-NEXT: # ymm11 = mem[0,1,1,3,4,5,5,7]11554; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,2,2,3]11555; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm9, %ymm11, %ymm911556; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Reload11557; AVX2-FP-NEXT: vpshufb %ymm7, %ymm15, %ymm711558; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload11559; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm11 = ymm3[0,0,2,1,4,4,6,5]11560; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm7 = ymm7[0,1,2],ymm11[3],ymm7[4,5],ymm11[6],ymm7[7,8,9,10],ymm11[11],ymm7[12,13],ymm11[14],ymm7[15]11561; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]11562; AVX2-FP-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Folded Reload11563; AVX2-FP-NEXT: # ymm11 = mem[0,1,1,3,4,5,5,7]11564; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,2,2,3]11565; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm7, %ymm11, %ymm711566; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]11567; AVX2-FP-NEXT: vpblendvb %ymm10, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8, %ymm1 # 32-byte Folded Reload11568; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11569; AVX2-FP-NEXT: vpblendvb %ymm10, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9, %ymm1 # 32-byte Folded Reload11570; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11571; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm0, %ymm7, %ymm011572; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11573; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload11574; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27,22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27]11575; AVX2-FP-NEXT: # ymm11 = mem[0,1,0,1]11576; AVX2-FP-NEXT: vpshufb %ymm11, %ymm7, %ymm711577; AVX2-FP-NEXT: vpshufd $170, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload11578; AVX2-FP-NEXT: # ymm8 = mem[2,2,2,2,6,6,6,6]11579; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm7 = ymm7[0,1],ymm8[2],ymm7[3,4],ymm8[5],ymm7[6,7,8,9],ymm8[10],ymm7[11,12],ymm8[13],ymm7[14,15]11580; AVX2-FP-NEXT: vpmovsxdq {{.*#+}} ymm0 = [151522058,0,421010202,421010202]11581; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload11582; AVX2-FP-NEXT: vpshufb %ymm0, %ymm1, %ymm811583; AVX2-FP-NEXT: vpshufd $170, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Folded Reload11584; AVX2-FP-NEXT: # ymm9 = mem[2,2,2,2,6,6,6,6]11585; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2,3],ymm8[4],ymm9[5,6,7,8],ymm8[9],ymm9[10,11],ymm8[12],ymm9[13,14,15]11586; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,2,3]11587; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,2,2,3]11588; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm1 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]11589; AVX2-FP-NEXT: vpblendvb %ymm1, %ymm7, %ymm8, %ymm711590; AVX2-FP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11591; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload11592; AVX2-FP-NEXT: vpshufb %ymm11, %ymm7, %ymm811593; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload11594; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm9 = ymm7[2,2,2,2,6,6,6,6]11595; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm8[0,1],ymm9[2],ymm8[3,4],ymm9[5],ymm8[6,7,8,9],ymm9[10],ymm8[11,12],ymm9[13],ymm8[14,15]11596; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload11597; AVX2-FP-NEXT: vpshufb %ymm0, %ymm9, %ymm911598; AVX2-FP-NEXT: vpshufd $170, {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Folded Reload11599; AVX2-FP-NEXT: # ymm10 = mem[2,2,2,2,6,6,6,6]11600; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0],ymm9[1],ymm10[2,3],ymm9[4],ymm10[5,6,7,8],ymm9[9],ymm10[10,11],ymm9[12],ymm10[13,14,15]11601; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,2,3]11602; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,2,2,3]11603; AVX2-FP-NEXT: vpblendvb %ymm1, %ymm8, %ymm9, %ymm811604; AVX2-FP-NEXT: vpshufb %ymm11, %ymm2, %ymm911605; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm10 = ymm4[2,2,2,2,6,6,6,6]11606; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm9[0,1],ymm10[2],ymm9[3,4],ymm10[5],ymm9[6,7,8,9],ymm10[10],ymm9[11,12],ymm10[13],ymm9[14,15]11607; AVX2-FP-NEXT: vpshufb %ymm0, %ymm12, %ymm1011608; AVX2-FP-NEXT: vmovdqa %ymm12, %ymm011609; AVX2-FP-NEXT: vpshufd $170, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Folded Reload11610; AVX2-FP-NEXT: # ymm11 = mem[2,2,2,2,6,6,6,6]11611; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1],ymm11[2,3],ymm10[4],ymm11[5,6,7,8],ymm10[9],ymm11[10,11],ymm10[12],ymm11[13,14,15]11612; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,2,3]11613; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,2,2,3]11614; AVX2-FP-NEXT: vpblendvb %ymm1, %ymm9, %ymm10, %ymm911615; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm10 = [u,u,u,u,u,u,u,u,u,u,8,9,u,u,u,u,u,u,u,u,22,23,u,u,u,u,24,25,u,u,u,u]11616; AVX2-FP-NEXT: vpshufb %ymm10, %ymm6, %ymm1111617; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm12 = ymm14[1,2,2,3,5,6,6,7]11618; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm11 = ymm12[0,1],ymm11[2],ymm12[3,4],ymm11[5],ymm12[6,7,8,9],ymm11[10],ymm12[11,12],ymm11[13],ymm12[14,15]11619; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,1,3,2]11620; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm12 = ymm13[0,1,2,2,4,5,6,6]11621; AVX2-FP-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,1,3,3]11622; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]11623; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm11, %ymm12, %ymm1111624; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload11625; AVX2-FP-NEXT: vpshufb %ymm10, %ymm4, %ymm1211626; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm14 = ymm5[1,2,2,3,5,6,6,7]11627; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm12 = ymm14[0,1],ymm12[2],ymm14[3,4],ymm12[5],ymm14[6,7,8,9],ymm12[10],ymm14[11,12],ymm12[13],ymm14[14,15]11628; AVX2-FP-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,1,3,2]11629; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload11630; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm14 = ymm5[0,1,2,2,4,5,6,6]11631; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,1,3,3]11632; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm12, %ymm14, %ymm1211633; AVX2-FP-NEXT: vpshufb %ymm10, %ymm15, %ymm1011634; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm14 = ymm3[1,2,2,3,5,6,6,7]11635; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm10 = ymm14[0,1],ymm10[2],ymm14[3,4],ymm10[5],ymm14[6,7,8,9],ymm10[10],ymm14[11,12],ymm10[13],ymm14[14,15]11636; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,1,3,2]11637; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload11638; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm14 = ymm2[0,1,2,2,4,5,6,6]11639; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,1,3,3]11640; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm10, %ymm14, %ymm1011641; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]11642; AVX2-FP-NEXT: vpblendvb %ymm13, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm1 # 32-byte Folded Reload11643; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11644; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm8, %ymm12, %ymm811645; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm9, %ymm10, %ymm911646; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm14 = [u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]11647; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload11648; AVX2-FP-NEXT: vpshufb %ymm14, %ymm1, %ymm1011649; AVX2-FP-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Folded Reload11650; AVX2-FP-NEXT: # ymm11 = mem[3,3,3,3,7,7,7,7]11651; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm10 = ymm11[0,1,2],ymm10[3],ymm11[4,5],ymm10[6],ymm11[7,8,9,10],ymm10[11],ymm11[12,13],ymm10[14],ymm11[15]11652; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload11653; AVX2-FP-NEXT: vpmovsxdq {{.*#+}} ymm13 = [218894094,0,488382238,488382238]11654; AVX2-FP-NEXT: vpshufb %ymm13, %ymm1, %ymm1111655; AVX2-FP-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Folded Reload11656; AVX2-FP-NEXT: # ymm12 = mem[3,3,3,3,7,7,7,7]11657; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm11 = ymm12[0],ymm11[1],ymm12[2,3],ymm11[4],ymm12[5,6,7,8],ymm11[9],ymm12[10,11],ymm11[12],ymm12[13,14,15]11658; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,1,3,3]11659; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,2,2,3]11660; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]11661; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm10, %ymm11, %ymm1011662; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload11663; AVX2-FP-NEXT: vpshufb %ymm14, %ymm1, %ymm1111664; AVX2-FP-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Folded Reload11665; AVX2-FP-NEXT: # ymm12 = mem[3,3,3,3,7,7,7,7]11666; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm11 = ymm12[0,1,2],ymm11[3],ymm12[4,5],ymm11[6],ymm12[7,8,9,10],ymm11[11],ymm12[12,13],ymm11[14],ymm12[15]11667; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload11668; AVX2-FP-NEXT: vpshufb %ymm13, %ymm1, %ymm1211669; AVX2-FP-NEXT: vmovdqa %ymm13, %ymm111670; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm13 = ymm7[3,3,3,3,7,7,7,7]11671; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm12 = ymm13[0],ymm12[1],ymm13[2,3],ymm12[4],ymm13[5,6,7,8],ymm12[9],ymm13[10,11],ymm12[12],ymm13[13,14,15]11672; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,1,3,3]11673; AVX2-FP-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,2,2,3]11674; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm11, %ymm12, %ymm1111675; AVX2-FP-NEXT: vpshufb %ymm14, %ymm0, %ymm1211676; AVX2-FP-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Folded Reload11677; AVX2-FP-NEXT: # ymm13 = mem[3,3,3,3,7,7,7,7]11678; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm12 = ymm13[0,1,2],ymm12[3],ymm13[4,5],ymm12[6],ymm13[7,8,9,10],ymm12[11],ymm13[12,13],ymm12[14],ymm13[15]11679; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11680; AVX2-FP-NEXT: vpshufb %ymm1, %ymm0, %ymm1311681; AVX2-FP-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload11682; AVX2-FP-NEXT: # ymm14 = mem[3,3,3,3,7,7,7,7]11683; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm13 = ymm14[0],ymm13[1],ymm14[2,3],ymm13[4],ymm14[5,6,7,8],ymm13[9],ymm14[10,11],ymm13[12],ymm14[13,14,15]11684; AVX2-FP-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,1,3,3]11685; AVX2-FP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[0,2,2,3]11686; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm12, %ymm13, %ymm1211687; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm13 = [26,27,28,29,26,27,28,29,26,27,28,29,30,31,30,31,26,27,28,29,26,27,28,29,26,27,28,29,30,31,30,31]11688; AVX2-FP-NEXT: # ymm13 = mem[0,1,0,1]11689; AVX2-FP-NEXT: vpshufb %ymm13, %ymm6, %ymm1411690; AVX2-FP-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload11691; AVX2-FP-NEXT: # ymm15 = mem[3,3,3,3,7,7,7,7]11692; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm14 = ymm14[0,1],ymm15[2],ymm14[3,4],ymm15[5],ymm14[6,7,8,9],ymm15[10],ymm14[11,12],ymm15[13],ymm14[14,15]11693; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,2,2,3]11694; AVX2-FP-NEXT: vpshufd $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload11695; AVX2-FP-NEXT: # ymm15 = mem[2,3,3,3,6,7,7,7]11696; AVX2-FP-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,1,3,2]11697; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm0 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]11698; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm14, %ymm15, %ymm1411699; AVX2-FP-NEXT: vpshufb %ymm13, %ymm4, %ymm1511700; AVX2-FP-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Folded Reload11701; AVX2-FP-NEXT: # ymm1 = mem[3,3,3,3,7,7,7,7]11702; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm15[0,1],ymm1[2],ymm15[3,4],ymm1[5],ymm15[6,7,8,9],ymm1[10],ymm15[11,12],ymm1[13],ymm15[14,15]11703; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]11704; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm15 = ymm5[2,3,3,3,6,7,7,7]11705; AVX2-FP-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,1,3,2]11706; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm1, %ymm15, %ymm111707; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload11708; AVX2-FP-NEXT: vpshufb %ymm13, %ymm4, %ymm1311709; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm15 = ymm3[3,3,3,3,7,7,7,7]11710; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm13 = ymm13[0,1],ymm15[2],ymm13[3,4],ymm15[5],ymm13[6,7,8,9],ymm15[10],ymm13[11,12],ymm15[13],ymm13[14,15]11711; AVX2-FP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,2,2,3]11712; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm15 = ymm2[2,3,3,3,6,7,7,7]11713; AVX2-FP-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,1,3,2]11714; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm13, %ymm15, %ymm011715; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]11716; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm10, %ymm14, %ymm1011717; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm11, %ymm1, %ymm111718; AVX2-FP-NEXT: vpblendvb %ymm13, %ymm12, %ymm0, %ymm011719; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax11720; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload11721; AVX2-FP-NEXT: vmovaps %ymm2, 544(%rax)11722; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload11723; AVX2-FP-NEXT: vmovaps %ymm2, 320(%rax)11724; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload11725; AVX2-FP-NEXT: vmovaps %ymm2, 96(%rax)11726; AVX2-FP-NEXT: vmovdqa %ymm0, 640(%rax)11727; AVX2-FP-NEXT: vmovdqa %ymm9, 608(%rax)11728; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11729; AVX2-FP-NEXT: vmovaps %ymm0, 576(%rax)11730; AVX2-FP-NEXT: vmovdqa %ymm1, 416(%rax)11731; AVX2-FP-NEXT: vmovdqa %ymm8, 384(%rax)11732; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11733; AVX2-FP-NEXT: vmovaps %ymm0, 352(%rax)11734; AVX2-FP-NEXT: vmovdqa %ymm10, 192(%rax)11735; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11736; AVX2-FP-NEXT: vmovaps %ymm0, 160(%rax)11737; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11738; AVX2-FP-NEXT: vmovaps %ymm0, 128(%rax)11739; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11740; AVX2-FP-NEXT: vmovaps %ymm0, 768(%rax)11741; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11742; AVX2-FP-NEXT: vmovaps %ymm0, 736(%rax)11743; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11744; AVX2-FP-NEXT: vmovaps %ymm0, 704(%rax)11745; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11746; AVX2-FP-NEXT: vmovaps %ymm0, 672(%rax)11747; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11748; AVX2-FP-NEXT: vmovaps %ymm0, 512(%rax)11749; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11750; AVX2-FP-NEXT: vmovaps %ymm0, 480(%rax)11751; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11752; AVX2-FP-NEXT: vmovaps %ymm0, 448(%rax)11753; AVX2-FP-NEXT: vmovups (%rsp), %ymm0 # 32-byte Reload11754; AVX2-FP-NEXT: vmovaps %ymm0, 288(%rax)11755; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11756; AVX2-FP-NEXT: vmovaps %ymm0, 256(%rax)11757; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11758; AVX2-FP-NEXT: vmovaps %ymm0, 224(%rax)11759; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11760; AVX2-FP-NEXT: vmovaps %ymm0, 64(%rax)11761; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11762; AVX2-FP-NEXT: vmovaps %ymm0, 32(%rax)11763; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11764; AVX2-FP-NEXT: vmovaps %ymm0, (%rax)11765; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11766; AVX2-FP-NEXT: vmovaps %ymm0, 864(%rax)11767; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11768; AVX2-FP-NEXT: vmovaps %ymm0, 832(%rax)11769; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11770; AVX2-FP-NEXT: vmovaps %ymm0, 800(%rax)11771; AVX2-FP-NEXT: addq $1544, %rsp # imm = 0x60811772; AVX2-FP-NEXT: vzeroupper11773; AVX2-FP-NEXT: retq11774;11775; AVX2-FCP-LABEL: store_i16_stride7_vf64:11776; AVX2-FCP: # %bb.0:11777; AVX2-FCP-NEXT: subq $1256, %rsp # imm = 0x4E811778; AVX2-FCP-NEXT: vmovdqa 96(%rdi), %ymm011779; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11780; AVX2-FCP-NEXT: vmovdqa 96(%rsi), %ymm111781; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11782; AVX2-FCP-NEXT: vmovdqa 96(%rdx), %ymm211783; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11784; AVX2-FCP-NEXT: vmovdqa 96(%rcx), %ymm411785; AVX2-FCP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11786; AVX2-FCP-NEXT: vmovdqa 96(%r8), %ymm311787; AVX2-FCP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11788; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [3,0,0,0,4,0,0,4]11789; AVX2-FCP-NEXT: vpermd %ymm0, %ymm5, %ymm011790; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[0,1,0,1,14,15,14,15,8,9,10,11,12,13,14,15,16,17,16,17,30,31,30,31,24,25,26,27,28,29,30,31]11791; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [0,65535,0,0,0,0,0,0,65535,0,0,0,0,0,0,65535]11792; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm0, %ymm1, %ymm011793; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [0,3,0,0,0,4,0,0]11794; AVX2-FCP-NEXT: vpermd %ymm2, %ymm1, %ymm111795; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm4[0,1,0,1,0,1,0,1,14,15,14,15,14,15,14,15,16,17,16,17,16,17,16,17,30,31,30,31,30,31,30,31]11796; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,0,65535,0,0,0,0,0,0,65535,0,0,0,0,0]11797; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm1, %ymm2, %ymm111798; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]11799; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm011800; AVX2-FCP-NEXT: vpmovsxbq {{.*#+}} ymm1 = [0,3,0,4]11801; AVX2-FCP-NEXT: vpermd %ymm3, %ymm1, %ymm111802; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]11803; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm011804; AVX2-FCP-NEXT: vmovdqa 96(%r9), %ymm111805; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11806; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6,7,0,1,0,1,14,15,14,15,16,17,18,19,20,21,22,23,16,17,16,17,30,31,30,31]11807; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535]11808; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm011809; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax11810; AVX2-FCP-NEXT: vmovdqa 96(%rax), %ymm111811; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11812; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [3,0,0,3,0,0,0,4]11813; AVX2-FCP-NEXT: vpermd %ymm1, %ymm2, %ymm111814; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535]11815; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm011816; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11817; AVX2-FCP-NEXT: vmovdqa (%r8), %ymm1111818; AVX2-FCP-NEXT: vmovdqa (%r9), %ymm1011819; AVX2-FCP-NEXT: vpbroadcastd {{.*#+}} ymm1 = [18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21]11820; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm10, %ymm011821; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm11[0,0,2,1,4,4,6,5]11822; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm2[3],ymm0[4,5],ymm2[6],ymm0[7,8,9,10],ymm2[11],ymm0[12,13],ymm2[14],ymm0[15]11823; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]11824; AVX2-FCP-NEXT: vmovdqa (%rax), %ymm1211825; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [0,1,4,5,4,5,5,7]11826; AVX2-FCP-NEXT: vpermd %ymm12, %ymm5, %ymm311827; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]11828; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm3, %ymm311829; AVX2-FCP-NEXT: vmovdqa 32(%r8), %ymm611830; AVX2-FCP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11831; AVX2-FCP-NEXT: vmovdqa 32(%r9), %ymm711832; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm7, %ymm011833; AVX2-FCP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11834; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm6[0,0,2,1,4,4,6,5]11835; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm4[3],ymm0[4,5],ymm4[6],ymm0[7,8,9,10],ymm4[11],ymm0[12,13],ymm4[14],ymm0[15]11836; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]11837; AVX2-FCP-NEXT: vmovdqa 32(%rax), %ymm411838; AVX2-FCP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11839; AVX2-FCP-NEXT: vpermd %ymm4, %ymm5, %ymm411840; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm4, %ymm611841; AVX2-FCP-NEXT: vmovdqa 64(%r9), %ymm011842; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11843; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm0, %ymm011844; AVX2-FCP-NEXT: vmovdqa 64(%r8), %ymm111845; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11846; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,0,2,1,4,4,6,5]11847; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3],ymm0[4,5],ymm1[6],ymm0[7,8,9,10],ymm1[11],ymm0[12,13],ymm1[14],ymm0[15]11848; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]11849; AVX2-FCP-NEXT: vmovdqa 64(%rax), %ymm111850; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11851; AVX2-FCP-NEXT: vpermd %ymm1, %ymm5, %ymm111852; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm411853; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm511854; AVX2-FCP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11855; AVX2-FCP-NEXT: vmovdqa (%rsi), %ymm111856; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11857; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]11858; AVX2-FCP-NEXT: # ymm8 = mem[0,1,0,1]11859; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm1, %ymm111860; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm5[1,1,1,1,5,5,5,5]11861; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]11862; AVX2-FCP-NEXT: vmovdqa (%rdx), %ymm1511863; AVX2-FCP-NEXT: vmovdqa (%rcx), %ymm1311864; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} ymm2 = ymm13[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]11865; AVX2-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11866; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm15[0,1,1,3,4,5,5,7]11867; AVX2-FCP-NEXT: vmovdqu %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11868; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0,1],ymm2[2],ymm5[3,4],ymm2[5],ymm5[6,7,8,9],ymm2[10],ymm5[11,12],ymm2[13],ymm5[14,15]11869; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]11870; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,1,3,2]11871; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]11872; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm1, %ymm2, %ymm111873; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]11874; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm1, %ymm3, %ymm011875; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11876; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %ymm011877; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11878; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %ymm111879; AVX2-FCP-NEXT: vmovdqu %ymm1, (%rsp) # 32-byte Spill11880; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm1, %ymm111881; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm0[1,1,1,1,5,5,5,5]11882; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm3[2],ymm1[3,4],ymm3[5],ymm1[6,7,8,9],ymm3[10],ymm1[11,12],ymm3[13],ymm1[14,15]11883; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %ymm011884; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11885; AVX2-FCP-NEXT: vmovdqa 32(%rcx), %ymm311886; AVX2-FCP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11887; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} ymm3 = ymm3[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]11888; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm9 = ymm0[0,1,1,3,4,5,5,7]11889; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm9[0,1],ymm3[2],ymm9[3,4],ymm3[5],ymm9[6,7,8,9],ymm3[10],ymm9[11,12],ymm3[13],ymm9[14,15]11890; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]11891; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,1,3,2]11892; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm1, %ymm3, %ymm111893; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm1, %ymm6, %ymm011894; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11895; AVX2-FCP-NEXT: vmovdqa 64(%rdi), %ymm011896; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11897; AVX2-FCP-NEXT: vmovdqa 64(%rsi), %ymm111898; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11899; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm1, %ymm111900; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm9 = ymm0[1,1,1,1,5,5,5,5]11901; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm9[2],ymm1[3,4],ymm9[5],ymm1[6,7,8,9],ymm9[10],ymm1[11,12],ymm9[13],ymm1[14,15]11902; AVX2-FCP-NEXT: vmovdqa 64(%rdx), %ymm311903; AVX2-FCP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11904; AVX2-FCP-NEXT: vmovdqa 64(%rcx), %ymm011905; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11906; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]11907; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm14 = ymm3[0,1,1,3,4,5,5,7]11908; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm14[0,1],ymm0[2],ymm14[3,4],ymm0[5],ymm14[6,7,8,9],ymm0[10],ymm14[11,12],ymm0[13],ymm14[14,15]11909; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]11910; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,2]11911; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm1, %ymm0, %ymm011912; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm4, %ymm011913; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11914; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [u,u,u,u,u,u,u,u,u,u,8,9,u,u,u,u,u,u,u,u,22,23,u,u,u,u,24,25,u,u,u,u]11915; AVX2-FCP-NEXT: vmovdqa %ymm10, %ymm511916; AVX2-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11917; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm10, %ymm111918; AVX2-FCP-NEXT: vmovdqa %ymm11, %ymm611919; AVX2-FCP-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11920; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm11[1,2,2,3,5,6,6,7]11921; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3,4],ymm1[5],ymm2[6,7,8,9],ymm1[10],ymm2[11,12],ymm1[13],ymm2[14,15]11922; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]11923; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [4,5,2,2,6,6,6,6]11924; AVX2-FCP-NEXT: vmovdqa %ymm12, %ymm811925; AVX2-FCP-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11926; AVX2-FCP-NEXT: vpermd %ymm12, %ymm9, %ymm211927; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]11928; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm1, %ymm2, %ymm1211929; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm7, %ymm211930; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload11931; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm14 = ymm3[1,2,2,3,5,6,6,7]11932; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm14[0,1],ymm2[2],ymm14[3,4],ymm2[5],ymm14[6,7,8,9],ymm2[10],ymm14[11,12],ymm2[13],ymm14[14,15]11933; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,1,3,2]11934; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload11935; AVX2-FCP-NEXT: vpermd %ymm7, %ymm9, %ymm1411936; AVX2-FCP-NEXT: vmovdqa %ymm9, %ymm111937; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm2, %ymm14, %ymm211938; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload11939; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm10, %ymm011940; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload11941; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm14 = ymm11[1,2,2,3,5,6,6,7]11942; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm14[0,1],ymm0[2],ymm14[3,4],ymm0[5],ymm14[6,7,8,9],ymm0[10],ymm14[11,12],ymm0[13],ymm14[14,15]11943; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,2]11944; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload11945; AVX2-FCP-NEXT: vpermd %ymm9, %ymm1, %ymm1411946; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm0, %ymm14, %ymm011947; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11948; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27,22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27]11949; AVX2-FCP-NEXT: # ymm1 = mem[0,1,0,1]11950; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm13, %ymm411951; AVX2-FCP-NEXT: vmovdqa %ymm1, %ymm1311952; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm14 = ymm15[2,2,2,2,6,6,6,6]11953; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm14[2],ymm4[3,4],ymm14[5],ymm4[6,7,8,9],ymm14[10],ymm4[11,12],ymm14[13],ymm4[14,15]11954; AVX2-FCP-NEXT: vpmovsxdq {{.*#+}} ymm1 = [151522058,0,421010202,421010202]11955; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11956; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm0, %ymm1411957; AVX2-FCP-NEXT: vmovdqa %ymm1, %ymm011958; AVX2-FCP-NEXT: vpshufd $170, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload11959; AVX2-FCP-NEXT: # ymm15 = mem[2,2,2,2,6,6,6,6]11960; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm14 = ymm15[0],ymm14[1],ymm15[2,3],ymm14[4],ymm15[5,6,7,8],ymm14[9],ymm15[10,11],ymm14[12],ymm15[13,14,15]11961; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]11962; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,2,2,3]11963; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm1 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]11964; AVX2-FCP-NEXT: vpblendvb %ymm1, %ymm4, %ymm14, %ymm411965; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]11966; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm4, %ymm12, %ymm111967; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11968; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload11969; AVX2-FCP-NEXT: vpshufb %ymm13, %ymm12, %ymm111970; AVX2-FCP-NEXT: vpshufd $170, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload11971; AVX2-FCP-NEXT: # ymm4 = mem[2,2,2,2,6,6,6,6]11972; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm4[2],ymm1[3,4],ymm4[5],ymm1[6,7,8,9],ymm4[10],ymm1[11,12],ymm4[13],ymm1[14,15]11973; AVX2-FCP-NEXT: vmovdqu (%rsp), %ymm4 # 32-byte Reload11974; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm4, %ymm411975; AVX2-FCP-NEXT: vpshufd $170, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload11976; AVX2-FCP-NEXT: # ymm15 = mem[2,2,2,2,6,6,6,6]11977; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm15[0],ymm4[1],ymm15[2,3],ymm4[4],ymm15[5,6,7,8],ymm4[9],ymm15[10,11],ymm4[12],ymm15[13,14,15]11978; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]11979; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,2,3]11980; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]11981; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm1, %ymm4, %ymm111982; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm1, %ymm2, %ymm111983; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill11984; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload11985; AVX2-FCP-NEXT: vpshufb %ymm13, %ymm1, %ymm111986; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload11987; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm13[2,2,2,2,6,6,6,6]11988; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]11989; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload11990; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm2, %ymm211991; AVX2-FCP-NEXT: vpshufd $170, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload11992; AVX2-FCP-NEXT: # ymm4 = mem[2,2,2,2,6,6,6,6]11993; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm2[1],ymm4[2,3],ymm2[4],ymm4[5,6,7,8],ymm2[9],ymm4[10,11],ymm2[12],ymm4[13,14,15]11994; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]11995; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]11996; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm1, %ymm2, %ymm111997; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload11998; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm1, %ymm0, %ymm011999; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12000; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [26,27,28,29,26,27,28,29,26,27,28,29,30,31,30,31,26,27,28,29,26,27,28,29,26,27,28,29,30,31,30,31]12001; AVX2-FCP-NEXT: # ymm2 = mem[0,1,0,1]12002; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm5, %ymm012003; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm6[3,3,3,3,7,7,7,7]12004; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]12005; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]12006; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [6,7,3,3,7,7,6,7]12007; AVX2-FCP-NEXT: vpermd %ymm8, %ymm5, %ymm112008; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]12009; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm0, %ymm1, %ymm112010; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload12011; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm0, %ymm012012; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm14 = ymm3[3,3,3,3,7,7,7,7]12013; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm14[2],ymm0[3,4],ymm14[5],ymm0[6,7,8,9],ymm14[10],ymm0[11,12],ymm14[13],ymm0[14,15]12014; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]12015; AVX2-FCP-NEXT: vpermd %ymm7, %ymm5, %ymm1412016; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm0, %ymm14, %ymm012017; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm10, %ymm212018; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm14 = ymm11[3,3,3,3,7,7,7,7]12019; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm14[2],ymm2[3,4],ymm14[5],ymm2[6,7,8,9],ymm14[10],ymm2[11,12],ymm14[13],ymm2[14,15]12020; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]12021; AVX2-FCP-NEXT: vpermd %ymm9, %ymm5, %ymm1412022; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm2, %ymm14, %ymm212023; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12024; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]12025; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload12026; AVX2-FCP-NEXT: vpshufb %ymm6, %ymm3, %ymm412027; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload12028; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm14 = ymm8[3,3,3,3,7,7,7,7]12029; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm14[0,1,2],ymm4[3],ymm14[4,5],ymm4[6],ymm14[7,8,9,10],ymm4[11],ymm14[12,13],ymm4[14],ymm14[15]12030; AVX2-FCP-NEXT: vpmovsxdq {{.*#+}} ymm9 = [218894094,0,488382238,488382238]12031; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload12032; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm2, %ymm1412033; AVX2-FCP-NEXT: vpshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload12034; AVX2-FCP-NEXT: # ymm15 = mem[3,3,3,3,7,7,7,7]12035; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm14 = ymm15[0],ymm14[1],ymm15[2,3],ymm14[4],ymm15[5,6,7,8],ymm14[9],ymm15[10,11],ymm14[12],ymm15[13,14,15]12036; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,1,3,3]12037; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,2,2,3]12038; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]12039; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm4, %ymm14, %ymm412040; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]12041; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm4, %ymm1, %ymm112042; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12043; AVX2-FCP-NEXT: vmovdqu (%rsp), %ymm5 # 32-byte Reload12044; AVX2-FCP-NEXT: vpshufb %ymm6, %ymm5, %ymm112045; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload12046; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm14[3,3,3,3,7,7,7,7]12047; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm4[0,1,2],ymm1[3],ymm4[4,5],ymm1[6],ymm4[7,8,9,10],ymm1[11],ymm4[12,13],ymm1[14],ymm4[15]12048; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm12, %ymm412049; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload12050; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm15 = ymm11[3,3,3,3,7,7,7,7]12051; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm15[0],ymm4[1],ymm15[2,3],ymm4[4],ymm15[5,6,7,8],ymm4[9],ymm15[10,11],ymm4[12],ymm15[13,14,15]12052; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,3]12053; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,2,3]12054; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm1, %ymm4, %ymm112055; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm1, %ymm0, %ymm012056; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12057; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload12058; AVX2-FCP-NEXT: vpshufb %ymm6, %ymm7, %ymm012059; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload12060; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm6[3,3,3,3,7,7,7,7]12061; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8,9,10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]12062; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Reload12063; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm15, %ymm112064; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm13[3,3,3,3,7,7,7,7]12065; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm4[0],ymm1[1],ymm4[2,3],ymm1[4],ymm4[5,6,7,8],ymm1[9],ymm4[10,11],ymm1[12],ymm4[13,14,15]12066; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,3]12067; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]12068; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012069; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload12070; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm0, %ymm1, %ymm012071; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12072; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [3,0,0,0,4,0,0,4]12073; AVX2-FCP-NEXT: vpermd %ymm8, %ymm4, %ymm012074; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm8 = [0,1,0,1,14,15,14,15,8,9,10,11,12,13,14,15,16,17,16,17,30,31,30,31,24,25,26,27,28,29,30,31]12075; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm3, %ymm112076; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [0,65535,0,0,0,0,0,0,65535,0,0,0,0,0,0,65535]12077; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm0, %ymm1, %ymm012078; AVX2-FCP-NEXT: vpermd %ymm14, %ymm4, %ymm112079; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm5, %ymm212080; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm1, %ymm2, %ymm112081; AVX2-FCP-NEXT: vpermd %ymm6, %ymm4, %ymm212082; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm7, %ymm312083; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm2, %ymm3, %ymm212084; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm6 = [0,3,0,0,0,4,0,0]12085; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm3 # 32-byte Folded Reload12086; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm7 = [0,1,0,1,0,1,0,1,14,15,14,15,14,15,14,15,16,17,16,17,16,17,16,17,30,31,30,31,30,31,30,31]12087; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload12088; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm4, %ymm412089; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [0,0,0,65535,0,0,0,0,0,0,65535,0,0,0,0,0]12090; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm3, %ymm4, %ymm312091; AVX2-FCP-NEXT: vpermd %ymm11, %ymm6, %ymm412092; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm12, %ymm512093; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm4, %ymm5, %ymm412094; AVX2-FCP-NEXT: vpermd %ymm13, %ymm6, %ymm512095; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm15, %ymm612096; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm5, %ymm6, %ymm512097; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535]12098; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm0, %ymm3, %ymm012099; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm1, %ymm4, %ymm112100; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm2, %ymm5, %ymm212101; AVX2-FCP-NEXT: vpmovsxbq {{.*#+}} ymm7 = [0,3,0,4]12102; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm7, %ymm3 # 32-byte Folded Reload12103; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm8 = [0,1,2,3,4,5,6,7,0,1,0,1,14,15,14,15,16,17,18,19,20,21,22,23,16,17,16,17,30,31,30,31]12104; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload12105; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm4, %ymm412106; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [0,0,0,0,0,65535,0,0,0,0,0,0,65535,0,0,0]12107; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm312108; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm7, %ymm4 # 32-byte Folded Reload12109; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload12110; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm6, %ymm612111; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm4, %ymm6, %ymm412112; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm7, %ymm6 # 32-byte Folded Reload12113; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload12114; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm7, %ymm712115; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm6, %ymm7, %ymm512116; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [3,0,0,3,0,0,0,4]12117; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm8, %ymm6 # 32-byte Folded Reload12118; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0]12119; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm3, %ymm6, %ymm312120; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm8, %ymm6 # 32-byte Folded Reload12121; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm4, %ymm6, %ymm412122; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm8, %ymm6 # 32-byte Folded Reload12123; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm5, %ymm6, %ymm512124; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]12125; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm0, %ymm3, %ymm012126; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12127; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm1, %ymm4, %ymm012128; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12129; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm2, %ymm5, %ymm012130; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12131; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12132; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]12133; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload12134; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm3[1,1,1,1,5,5,5,5]12135; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]12136; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload12137; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} ymm1 = ymm6[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]12138; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload12139; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm4[0,1,1,3,4,5,5,7]12140; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3,4],ymm1[5],ymm2[6,7,8,9],ymm1[10],ymm2[11,12],ymm1[13],ymm2[14,15]12141; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]12142; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,1,3,2]12143; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]12144; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012145; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [4,4,2,1,6,5,6,5]12146; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload12147; AVX2-FCP-NEXT: vpermd %ymm7, %ymm1, %ymm112148; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535]12149; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012150; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload12151; AVX2-FCP-NEXT: vpshuflw {{.*#+}} ymm1 = ymm8[1,1,2,2,4,5,6,7,9,9,10,10,12,13,14,15]12152; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,2]12153; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]12154; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012155; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload12156; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [0,1,4,5,4,5,5,7]12157; AVX2-FCP-NEXT: vpermd %ymm9, %ymm1, %ymm112158; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535]12159; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012160; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12161; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,26,27,u,u,24,25,26,27,u,u,26,27,26,27]12162; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm4[2,2,2,2,6,6,6,6]12163; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]12164; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm5[10,11,8,9,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,u,u,u,u,26,27,24,25,u,u,u,u]12165; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm3[2,2,2,2,6,6,6,6]12166; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]12167; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]12168; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]12169; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0]12170; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012171; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [5,6,2,3,6,7,5,6]12172; AVX2-FCP-NEXT: vpermd %ymm7, %ymm1, %ymm112173; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]12174; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012175; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm8[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,24,25,22,23,22,23,u,u,u,u,u,u,u,u]12176; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,2]12177; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]12178; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012179; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [4,5,2,2,6,6,6,6]12180; AVX2-FCP-NEXT: vpermd %ymm9, %ymm1, %ymm112181; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]12182; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012183; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12184; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]12185; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm3[3,3,3,3,7,7,7,7]12186; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8,9,10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]12187; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm6[14,15,12,13,u,u,u,u,u,u,u,u,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29,u,u,u,u]12188; AVX2-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm4[3,3,3,3,7,7,7,7]12189; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]12190; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,3]12191; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]12192; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]12193; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012194; AVX2-FCP-NEXT: vpbroadcastd 124(%r8), %ymm112195; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0]12196; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012197; AVX2-FCP-NEXT: vpshufhw {{.*#+}} ymm1 = ymm8[0,1,2,3,5,5,7,6,8,9,10,11,13,13,15,14]12198; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[3,3,3,3]12199; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0]12200; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012201; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [6,7,3,3,7,7,6,7]12202; AVX2-FCP-NEXT: vpermd %ymm9, %ymm1, %ymm112203; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]12204; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm012205; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12206; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm1512207; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm012208; AVX2-FCP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12209; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm15[0],xmm0[1],xmm15[1],xmm0[2],xmm15[2],xmm0[3],xmm15[3]12210; AVX2-FCP-NEXT: vmovdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12211; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm4 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]12212; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm0, %xmm012213; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm0[0,0,1,1]12214; AVX2-FCP-NEXT: vmovdqa (%rcx), %xmm912215; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm112216; AVX2-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12217; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm9[0],xmm1[1],xmm9[1],xmm1[2],xmm9[2],xmm1[3],xmm9[3]12218; AVX2-FCP-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12219; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [0,1,2,3,0,1,2,3,6,7,4,5,6,7,4,5]12220; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm1, %xmm112221; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm1[0,1,1,3]12222; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm1 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]12223; AVX2-FCP-NEXT: vpblendvb %ymm1, %ymm2, %ymm3, %ymm1012224; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %xmm312225; AVX2-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12226; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %xmm212227; AVX2-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12228; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]12229; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm2, %xmm212230; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]12231; AVX2-FCP-NEXT: vmovdqa 32(%rcx), %xmm1312232; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %xmm312233; AVX2-FCP-NEXT: vmovdqa %xmm3, (%rsp) # 16-byte Spill12234; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm13[0],xmm3[1],xmm13[1],xmm3[2],xmm13[2],xmm3[3],xmm13[3]12235; AVX2-FCP-NEXT: vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12236; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm3, %xmm312237; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,1,3]12238; AVX2-FCP-NEXT: vpblendvb %ymm1, %ymm2, %ymm3, %ymm212239; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12240; AVX2-FCP-NEXT: vmovdqa 64(%rsi), %xmm212241; AVX2-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12242; AVX2-FCP-NEXT: vmovdqa 64(%rdi), %xmm312243; AVX2-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12244; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]12245; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm2, %xmm212246; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]12247; AVX2-FCP-NEXT: vmovdqa 64(%rcx), %xmm312248; AVX2-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12249; AVX2-FCP-NEXT: vmovdqa 64(%rdx), %xmm812250; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm8[0],xmm3[0],xmm8[1],xmm3[1],xmm8[2],xmm3[2],xmm8[3],xmm3[3]12251; AVX2-FCP-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12252; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm3, %xmm312253; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,1,3]12254; AVX2-FCP-NEXT: vpblendvb %ymm1, %ymm2, %ymm3, %ymm212255; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12256; AVX2-FCP-NEXT: vmovdqa 96(%rcx), %xmm212257; AVX2-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12258; AVX2-FCP-NEXT: vmovdqa 96(%rdx), %xmm312259; AVX2-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12260; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]12261; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm012262; AVX2-FCP-NEXT: vmovdqa 96(%rsi), %xmm312263; AVX2-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12264; AVX2-FCP-NEXT: vmovdqa 96(%rdi), %xmm212265; AVX2-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12266; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]12267; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm2, %xmm212268; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]12269; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,1,3]12270; AVX2-FCP-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm712271; AVX2-FCP-NEXT: vmovdqa (%r9), %xmm012272; AVX2-FCP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12273; AVX2-FCP-NEXT: vmovdqa (%r8), %xmm112274; AVX2-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12275; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]12276; AVX2-FCP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12277; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,2,3,6,7,4,5,6,7,4,5,12,13,14,15]12278; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm0, %xmm112279; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]12280; AVX2-FCP-NEXT: vpbroadcastd (%rax), %ymm312281; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0]12282; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm1, %ymm3, %ymm612283; AVX2-FCP-NEXT: vmovdqa 32(%r9), %xmm012284; AVX2-FCP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12285; AVX2-FCP-NEXT: vmovdqa 32(%r8), %xmm112286; AVX2-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12287; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm12 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]12288; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm12, %xmm312289; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]12290; AVX2-FCP-NEXT: vpbroadcastd 32(%rax), %ymm512291; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm3, %ymm5, %ymm112292; AVX2-FCP-NEXT: vmovdqa 64(%r9), %xmm012293; AVX2-FCP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12294; AVX2-FCP-NEXT: vmovdqa 64(%r8), %xmm312295; AVX2-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12296; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]12297; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm5, %xmm312298; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]12299; AVX2-FCP-NEXT: vpbroadcastd 64(%rax), %ymm1112300; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm3, %ymm11, %ymm012301; AVX2-FCP-NEXT: vmovdqa 96(%r9), %xmm1112302; AVX2-FCP-NEXT: vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12303; AVX2-FCP-NEXT: vmovdqa 96(%r8), %xmm312304; AVX2-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12305; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm11[0],xmm3[1],xmm11[1],xmm3[2],xmm11[2],xmm3[3],xmm11[3]12306; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm3, %xmm212307; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]12308; AVX2-FCP-NEXT: vpbroadcastd 96(%rax), %ymm1412309; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm2, %ymm14, %ymm212310; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]12311; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm10, %ymm6, %ymm612312; AVX2-FCP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12313; AVX2-FCP-NEXT: vpblendvb %ymm4, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload12314; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12315; AVX2-FCP-NEXT: vpblendvb %ymm4, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload12316; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12317; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm7, %ymm2, %ymm012318; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12319; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} xmm1 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]12320; AVX2-FCP-NEXT: vpshufb %xmm1, %xmm9, %xmm012321; AVX2-FCP-NEXT: vpshufd $165, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload12322; AVX2-FCP-NEXT: # xmm2 = mem[1,1,2,2]12323; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm2[0],xmm0[1],xmm2[2,3],xmm0[4],xmm2[5,6],xmm0[7]12324; AVX2-FCP-NEXT: vpbroadcastd {{.*#+}} xmm6 = [6,7,8,9,6,7,8,9,6,7,8,9,6,7,8,9]12325; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm15, %xmm212326; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload12327; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm4 = xmm15[1,1,2,3]12328; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0,1],xmm2[2],xmm4[3,4],xmm2[5],xmm4[6,7]12329; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]12330; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,2,1]12331; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]12332; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm0, %ymm2, %ymm012333; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12334; AVX2-FCP-NEXT: vpshufb %xmm1, %xmm13, %xmm012335; AVX2-FCP-NEXT: vpshufd $165, (%rsp), %xmm2 # 16-byte Folded Reload12336; AVX2-FCP-NEXT: # xmm2 = mem[1,1,2,2]12337; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm2[0],xmm0[1],xmm2[2,3],xmm0[4],xmm2[5,6],xmm0[7]12338; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload12339; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm13, %xmm212340; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload12341; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm14 = xmm10[1,1,2,3]12342; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm14[0,1],xmm2[2],xmm14[3,4],xmm2[5],xmm14[6,7]12343; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]12344; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,2,1]12345; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm0, %ymm2, %ymm412346; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload12347; AVX2-FCP-NEXT: vpshufb %xmm1, %xmm0, %xmm012348; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm14 = xmm8[1,1,2,2]12349; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm14[0],xmm0[1],xmm14[2,3],xmm0[4],xmm14[5,6],xmm0[7]12350; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload12351; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm8, %xmm1412352; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload12353; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm11 = xmm9[1,1,2,3]12354; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1],xmm14[2],xmm11[3,4],xmm14[5],xmm11[6,7]12355; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]12356; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,2,1]12357; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm0, %ymm11, %ymm212358; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload12359; AVX2-FCP-NEXT: vpshufb %xmm1, %xmm0, %xmm112360; AVX2-FCP-NEXT: vpshufd $165, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload12361; AVX2-FCP-NEXT: # xmm11 = mem[1,1,2,2]12362; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm11[0],xmm1[1],xmm11[2,3],xmm1[4],xmm11[5,6],xmm1[7]12363; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload12364; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm8, %xmm612365; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload12366; AVX2-FCP-NEXT: vpshufd {{.*#+}} xmm11 = xmm0[1,1,2,3]12367; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm11[0,1],xmm6[2],xmm11[3,4],xmm6[5],xmm11[6,7]12368; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]12369; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,2,1]12370; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm1, %ymm6, %ymm112371; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm6 = [0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]12372; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload12373; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm7, %xmm712374; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,1,3]12375; AVX2-FCP-NEXT: vpbroadcastd 4(%rax), %ymm1112376; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0]12377; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm7, %ymm11, %ymm712378; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm12, %xmm1112379; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,1,1,3]12380; AVX2-FCP-NEXT: vpbroadcastd 36(%rax), %ymm1212381; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm11, %ymm12, %ymm1112382; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm5, %xmm512383; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,1,3]12384; AVX2-FCP-NEXT: vpbroadcastd 68(%rax), %ymm1212385; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm5, %ymm12, %ymm512386; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm3, %xmm312387; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,1,1,3]12388; AVX2-FCP-NEXT: vpbroadcastd 100(%rax), %ymm612389; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm3, %ymm6, %ymm312390; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]12391; AVX2-FCP-NEXT: vpblendvb %ymm6, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7, %ymm7 # 32-byte Folded Reload12392; AVX2-FCP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12393; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm4, %ymm11, %ymm1112394; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm2, %ymm5, %ymm1212395; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm1, %ymm3, %ymm1412396; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload12397; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm15[4],xmm1[5],xmm15[5],xmm1[6],xmm15[6],xmm1[7],xmm15[7]12398; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload12399; AVX2-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload12400; AVX2-FCP-NEXT: # xmm2 = xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]12401; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm4 = [4,5,2,3,4,5,6,7,8,9,10,11,10,11,8,9]12402; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm1, %xmm112403; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,3]12404; AVX2-FCP-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,2,3,3,4,5,6,7]12405; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,2,1]12406; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [0,0,0,65535,65535,0,0,0,0,0,65535,65535,0,0,0,0]12407; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm1, %ymm2, %ymm112408; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm13[4],xmm10[4],xmm13[5],xmm10[5],xmm13[6],xmm10[6],xmm13[7],xmm10[7]12409; AVX2-FCP-NEXT: vmovdqa (%rsp), %xmm3 # 16-byte Reload12410; AVX2-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload12411; AVX2-FCP-NEXT: # xmm3 = xmm3[4],mem[4],xmm3[5],mem[5],xmm3[6],mem[6],xmm3[7],mem[7]12412; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm2, %xmm212413; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,3]12414; AVX2-FCP-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,2,3,3,4,5,6,7]12415; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,2,1]12416; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm2, %ymm3, %ymm212417; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload12418; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm3[4],xmm9[4],xmm3[5],xmm9[5],xmm3[6],xmm9[6],xmm3[7],xmm9[7]12419; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload12420; AVX2-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm6, %xmm6 # 16-byte Folded Reload12421; AVX2-FCP-NEXT: # xmm6 = xmm6[4],mem[4],xmm6[5],mem[5],xmm6[6],mem[6],xmm6[7],mem[7]12422; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm3, %xmm312423; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,3]12424; AVX2-FCP-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,2,3,3,4,5,6,7]12425; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,2,1]12426; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm3, %ymm6, %ymm312427; AVX2-FCP-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm8[4],xmm0[4],xmm8[5],xmm0[5],xmm8[6],xmm0[6],xmm8[7],xmm0[7]12428; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm6, %xmm412429; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload12430; AVX2-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm6 # 16-byte Folded Reload12431; AVX2-FCP-NEXT: # xmm6 = xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]12432; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,3]12433; AVX2-FCP-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,2,3,3,4,5,6,7]12434; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,2,1]12435; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm4, %ymm6, %ymm412436; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload12437; AVX2-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm5 # 16-byte Folded Reload12438; AVX2-FCP-NEXT: # xmm5 = xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]12439; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm10 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]12440; AVX2-FCP-NEXT: vpshufb %xmm10, %xmm5, %xmm512441; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]12442; AVX2-FCP-NEXT: vpbroadcastd 8(%rax), %ymm612443; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [65535,65535,0,0,0,0,0,65535,65535,0,0,0,0,0,65535,65535]12444; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm5, %ymm6, %ymm512445; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload12446; AVX2-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm6 # 16-byte Folded Reload12447; AVX2-FCP-NEXT: # xmm6 = xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]12448; AVX2-FCP-NEXT: vpshufb %xmm10, %xmm6, %xmm612449; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]12450; AVX2-FCP-NEXT: vpbroadcastd 40(%rax), %ymm812451; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm6, %ymm8, %ymm612452; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload12453; AVX2-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm8 # 16-byte Folded Reload12454; AVX2-FCP-NEXT: # xmm8 = xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]12455; AVX2-FCP-NEXT: vpshufb %xmm10, %xmm8, %xmm812456; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]12457; AVX2-FCP-NEXT: vpbroadcastd 72(%rax), %ymm912458; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm8, %ymm9, %ymm812459; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload12460; AVX2-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm9 # 16-byte Folded Reload12461; AVX2-FCP-NEXT: # xmm9 = xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]12462; AVX2-FCP-NEXT: vpshufb %xmm10, %xmm9, %xmm912463; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]12464; AVX2-FCP-NEXT: vpbroadcastd 104(%rax), %ymm1012465; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm9, %ymm10, %ymm712466; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [65535,65535,65535,0,0,0,0,65535,65535,65535,0,0,0,0,65535,65535]12467; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm5, %ymm1, %ymm112468; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm6, %ymm2, %ymm212469; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm8, %ymm3, %ymm312470; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm7, %ymm4, %ymm412471; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax12472; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12473; AVX2-FCP-NEXT: vmovaps %ymm5, 544(%rax)12474; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12475; AVX2-FCP-NEXT: vmovaps %ymm5, 320(%rax)12476; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12477; AVX2-FCP-NEXT: vmovaps %ymm5, 96(%rax)12478; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12479; AVX2-FCP-NEXT: vmovaps %ymm5, 640(%rax)12480; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12481; AVX2-FCP-NEXT: vmovaps %ymm5, 608(%rax)12482; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12483; AVX2-FCP-NEXT: vmovaps %ymm5, 576(%rax)12484; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12485; AVX2-FCP-NEXT: vmovaps %ymm5, 416(%rax)12486; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12487; AVX2-FCP-NEXT: vmovaps %ymm5, 384(%rax)12488; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12489; AVX2-FCP-NEXT: vmovaps %ymm5, 352(%rax)12490; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12491; AVX2-FCP-NEXT: vmovaps %ymm5, 192(%rax)12492; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12493; AVX2-FCP-NEXT: vmovaps %ymm5, 160(%rax)12494; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12495; AVX2-FCP-NEXT: vmovaps %ymm5, 128(%rax)12496; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12497; AVX2-FCP-NEXT: vmovaps %ymm5, 768(%rax)12498; AVX2-FCP-NEXT: vmovdqa %ymm4, 736(%rax)12499; AVX2-FCP-NEXT: vmovdqa %ymm14, 704(%rax)12500; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload12501; AVX2-FCP-NEXT: vmovaps %ymm0, 672(%rax)12502; AVX2-FCP-NEXT: vmovdqa %ymm3, 512(%rax)12503; AVX2-FCP-NEXT: vmovdqa %ymm12, 480(%rax)12504; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload12505; AVX2-FCP-NEXT: vmovaps %ymm0, 448(%rax)12506; AVX2-FCP-NEXT: vmovdqa %ymm2, 288(%rax)12507; AVX2-FCP-NEXT: vmovdqa %ymm11, 256(%rax)12508; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload12509; AVX2-FCP-NEXT: vmovaps %ymm0, 224(%rax)12510; AVX2-FCP-NEXT: vmovdqa %ymm1, 64(%rax)12511; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload12512; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%rax)12513; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload12514; AVX2-FCP-NEXT: vmovaps %ymm0, (%rax)12515; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload12516; AVX2-FCP-NEXT: vmovaps %ymm0, 864(%rax)12517; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload12518; AVX2-FCP-NEXT: vmovaps %ymm0, 832(%rax)12519; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload12520; AVX2-FCP-NEXT: vmovaps %ymm0, 800(%rax)12521; AVX2-FCP-NEXT: addq $1256, %rsp # imm = 0x4E812522; AVX2-FCP-NEXT: vzeroupper12523; AVX2-FCP-NEXT: retq12524;12525; AVX512-LABEL: store_i16_stride7_vf64:12526; AVX512: # %bb.0:12527; AVX512-NEXT: subq $2648, %rsp # imm = 0xA5812528; AVX512-NEXT: vmovdqa 96(%rcx), %ymm612529; AVX512-NEXT: vmovdqa 96(%rdx), %ymm1512530; AVX512-NEXT: vmovdqa 96(%rdi), %ymm712531; AVX512-NEXT: vmovdqa 96(%rsi), %ymm812532; AVX512-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128]12533; AVX512-NEXT: vpshufb %ymm0, %ymm6, %ymm212534; AVX512-NEXT: vmovdqa {{.*#+}} ymm1 = [u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u]12535; AVX512-NEXT: vpshufb %ymm1, %ymm15, %ymm312536; AVX512-NEXT: vporq %ymm2, %ymm3, %ymm1812537; AVX512-NEXT: vmovdqa {{.*#+}} ymm3 = [128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128,128,128,128,128]12538; AVX512-NEXT: vpshufb %ymm3, %ymm8, %ymm212539; AVX512-NEXT: vmovdqa {{.*#+}} ymm12 = [12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u,16,17,18,19]12540; AVX512-NEXT: vpshufb %ymm12, %ymm7, %ymm412541; AVX512-NEXT: vporq %ymm2, %ymm4, %ymm1912542; AVX512-NEXT: vmovdqa {{.*#+}} ymm11 = [128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128]12543; AVX512-NEXT: vmovdqa 64(%r9), %ymm212544; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12545; AVX512-NEXT: vpshufb %ymm11, %ymm2, %ymm212546; AVX512-NEXT: vmovdqa 64(%r8), %ymm412547; AVX512-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12548; AVX512-NEXT: vmovdqa {{.*#+}} ymm9 = [u,u,u,u,u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u]12549; AVX512-NEXT: vpshufb %ymm9, %ymm4, %ymm412550; AVX512-NEXT: vpor %ymm2, %ymm4, %ymm212551; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12552; AVX512-NEXT: vmovdqa 64(%rcx), %ymm412553; AVX512-NEXT: vpshufb %ymm0, %ymm4, %ymm212554; AVX512-NEXT: vmovdqa64 %ymm4, %ymm2912555; AVX512-NEXT: vmovdqa 64(%rdx), %ymm512556; AVX512-NEXT: vpshufb %ymm1, %ymm5, %ymm412557; AVX512-NEXT: vmovdqa64 %ymm5, %ymm2812558; AVX512-NEXT: vpor %ymm2, %ymm4, %ymm212559; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12560; AVX512-NEXT: vmovdqa 64(%rsi), %ymm412561; AVX512-NEXT: vpshufb %ymm3, %ymm4, %ymm212562; AVX512-NEXT: vmovdqa64 %ymm4, %ymm2412563; AVX512-NEXT: vmovdqa 64(%rdi), %ymm512564; AVX512-NEXT: vpshufb %ymm12, %ymm5, %ymm412565; AVX512-NEXT: vmovdqa64 %ymm5, %ymm2312566; AVX512-NEXT: vpor %ymm2, %ymm4, %ymm212567; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12568; AVX512-NEXT: vmovdqa (%r9), %ymm212569; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12570; AVX512-NEXT: vpshufb %ymm11, %ymm2, %ymm212571; AVX512-NEXT: vmovdqa (%r8), %ymm412572; AVX512-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12573; AVX512-NEXT: vpshufb %ymm9, %ymm4, %ymm412574; AVX512-NEXT: vpor %ymm2, %ymm4, %ymm212575; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12576; AVX512-NEXT: vmovdqa (%rcx), %ymm212577; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12578; AVX512-NEXT: vpshufb %ymm0, %ymm2, %ymm212579; AVX512-NEXT: vmovdqa (%rdx), %ymm412580; AVX512-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12581; AVX512-NEXT: vpshufb %ymm1, %ymm4, %ymm412582; AVX512-NEXT: vpor %ymm2, %ymm4, %ymm212583; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12584; AVX512-NEXT: vmovdqa (%rsi), %ymm212585; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12586; AVX512-NEXT: vpshufb %ymm3, %ymm2, %ymm212587; AVX512-NEXT: vmovdqa (%rdi), %ymm412588; AVX512-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12589; AVX512-NEXT: vpshufb %ymm12, %ymm4, %ymm412590; AVX512-NEXT: vpor %ymm2, %ymm4, %ymm212591; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12592; AVX512-NEXT: vmovdqa 32(%rcx), %ymm412593; AVX512-NEXT: vpshufb %ymm0, %ymm4, %ymm012594; AVX512-NEXT: vmovdqa 32(%rdx), %ymm212595; AVX512-NEXT: vpshufb %ymm1, %ymm2, %ymm112596; AVX512-NEXT: vpor %ymm0, %ymm1, %ymm012597; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12598; AVX512-NEXT: vmovdqa 32(%rsi), %ymm512599; AVX512-NEXT: vpshufb %ymm3, %ymm5, %ymm012600; AVX512-NEXT: vmovdqa 32(%rdi), %ymm312601; AVX512-NEXT: vpshufb %ymm12, %ymm3, %ymm112602; AVX512-NEXT: vpor %ymm0, %ymm1, %ymm012603; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12604; AVX512-NEXT: vmovdqa 32(%r8), %ymm112605; AVX512-NEXT: vpshufb %ymm9, %ymm1, %ymm912606; AVX512-NEXT: vmovdqa 32(%r9), %ymm012607; AVX512-NEXT: vpshufb %ymm11, %ymm0, %ymm1012608; AVX512-NEXT: vpor %ymm10, %ymm9, %ymm912609; AVX512-NEXT: vmovdqu64 %zmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12610; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27,22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27]12611; AVX512-NEXT: # ymm10 = mem[0,1,0,1]12612; AVX512-NEXT: vpshufb %ymm10, %ymm6, %ymm912613; AVX512-NEXT: vmovdqa64 %ymm10, %ymm2712614; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm15[2,2,2,2,6,6,6,6]12615; AVX512-NEXT: vpblendw {{.*#+}} ymm9 = ymm9[0,1],ymm10[2],ymm9[3,4],ymm10[5],ymm9[6,7,8,9],ymm10[10],ymm9[11,12],ymm10[13],ymm9[14,15]12616; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,2,3]12617; AVX512-NEXT: vmovdqu64 %zmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12618; AVX512-NEXT: vpshufhw {{.*#+}} ymm9 = ymm6[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]12619; AVX512-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,2,2,2,6,6,6,6]12620; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm15[3,3,3,3,7,7,7,7]12621; AVX512-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0],ymm9[1],ymm10[2,3],ymm9[4],ymm10[5,6,7,8],ymm9[9],ymm10[10,11],ymm9[12],ymm10[13,14,15]12622; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,2,2,3]12623; AVX512-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12624; AVX512-NEXT: vpshufhw {{.*#+}} ymm9 = ymm8[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]12625; AVX512-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,2,2,2,6,6,6,6]12626; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm7[2,2,2,2,6,6,6,6]12627; AVX512-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0],ymm9[1],ymm10[2,3],ymm9[4],ymm10[5,6,7,8],ymm9[9],ymm10[10,11],ymm9[12],ymm10[13,14,15]12628; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,2,2,3]12629; AVX512-NEXT: vmovdqu64 %zmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12630; AVX512-NEXT: vpshufhw {{.*#+}} ymm9 = ymm8[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]12631; AVX512-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,2,2,2,6,6,6,6]12632; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm7[3,3,3,3,7,7,7,7]12633; AVX512-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0,1,2],ymm9[3],ymm10[4,5],ymm9[6],ymm10[7,8,9,10],ymm9[11],ymm10[12,13],ymm9[14],ymm10[15]12634; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,1,3,3]12635; AVX512-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12636; AVX512-NEXT: vmovdqa 96(%r9), %ymm912637; AVX512-NEXT: vpshufhw {{.*#+}} ymm10 = ymm9[0,1,2,3,5,5,7,6,8,9,10,11,13,13,15,14]12638; AVX512-NEXT: vpermq {{.*#+}} ymm21 = ymm10[3,3,3,3]12639; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm9[2,1,2,3,6,5,6,7]12640; AVX512-NEXT: vpshuflw {{.*#+}} ymm10 = ymm10[0,0,3,3,4,5,6,7,8,8,11,11,12,13,14,15]12641; AVX512-NEXT: vpermq {{.*#+}} ymm20 = ymm10[2,2,2,2]12642; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm15[0,1,1,3,4,5,5,7]12643; AVX512-NEXT: vpshuflw {{.*#+}} ymm6 = ymm6[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]12644; AVX512-NEXT: vpshufd {{.*#+}} ymm6 = ymm6[0,0,0,0,4,4,4,4]12645; AVX512-NEXT: vpblendw {{.*#+}} ymm6 = ymm10[0,1],ymm6[2],ymm10[3,4],ymm6[5],ymm10[6,7,8,9],ymm6[10],ymm10[11,12],ymm6[13],ymm10[14,15]12646; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,1,3,2]12647; AVX512-NEXT: vpshufd {{.*#+}} ymm7 = ymm7[1,1,1,1,5,5,5,5]12648; AVX512-NEXT: vpshuflw {{.*#+}} ymm8 = ymm8[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]12649; AVX512-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[0,0,2,1,4,4,6,5]12650; AVX512-NEXT: vpblendw {{.*#+}} ymm7 = ymm8[0,1],ymm7[2],ymm8[3,4],ymm7[5],ymm8[6,7,8,9],ymm7[10],ymm8[11,12],ymm7[13],ymm8[14,15]12651; AVX512-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,2,3]12652; AVX512-NEXT: vprold $16, %ymm9, %ymm812653; AVX512-NEXT: vpshufb %ymm11, %ymm9, %ymm912654; AVX512-NEXT: vinserti64x4 $1, %ymm6, %zmm18, %zmm612655; AVX512-NEXT: vinserti64x4 $1, %ymm7, %zmm19, %zmm712656; AVX512-NEXT: vpternlogq {{.*#+}} zmm7 = zmm6 ^ (mem & (zmm7 ^ zmm6))12657; AVX512-NEXT: vmovdqa 96(%r8), %ymm612658; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm6[1,2,2,3,5,6,6,7]12659; AVX512-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12660; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm6[0,0,2,1,4,4,6,5]12661; AVX512-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[u,u],zero,zero,zero,zero,zero,zero,zero,zero,ymm6[14,15,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero,ymm6[16,17,u,u,u,u],zero,zero12662; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm12 = [65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]12663; AVX512-NEXT: vpternlogq {{.*#+}} ymm6 = ymm6 | (ymm7 & ymm12)12664; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm11 = [65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535]12665; AVX512-NEXT: vpternlogq {{.*#+}} ymm9 = ymm9 | (ymm6 & ymm11)12666; AVX512-NEXT: vextracti64x4 $1, %zmm7, %ymm612667; AVX512-NEXT: vpermq {{.*#+}} ymm7 = ymm10[2,1,3,3]12668; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm10 = [65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]12669; AVX512-NEXT: vpternlogq {{.*#+}} ymm7 = ymm7 ^ (ymm10 & (ymm7 ^ ymm6))12670; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm8[2,2,2,2]12671; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm8 = [65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535]12672; AVX512-NEXT: vpternlogq {{.*#+}} ymm6 = ymm6 ^ (ymm8 & (ymm6 ^ ymm7))12673; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm6 = zmm9[0,1,2,3],zmm6[0,1,2,3]12674; AVX512-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12675; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax12676; AVX512-NEXT: vmovdqa 96(%rax), %ymm612677; AVX512-NEXT: vpshufd {{.*#+}} ymm7 = ymm6[0,1,1,3,4,5,5,7]12678; AVX512-NEXT: vmovdqa {{.*#+}} ymm10 = [12,13,128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128]12679; AVX512-NEXT: vpshufb %ymm10, %ymm6, %ymm612680; AVX512-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,2,2,3]12681; AVX512-NEXT: vpandn %ymm7, %ymm12, %ymm712682; AVX512-NEXT: vmovdqa64 %zmm12, %zmm1712683; AVX512-NEXT: vinserti64x4 $1, %ymm7, %zmm6, %zmm612684; AVX512-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12685; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm30 = [65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535]12686; AVX512-NEXT: vpbroadcastd 72(%rax), %ymm612687; AVX512-NEXT: vpandnq %ymm6, %ymm30, %ymm612688; AVX512-NEXT: vmovdqa 64(%rax), %ymm712689; AVX512-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12690; AVX512-NEXT: vpshufb %ymm10, %ymm7, %ymm712691; AVX512-NEXT: vinserti64x4 $1, %ymm7, %zmm6, %zmm612692; AVX512-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12693; AVX512-NEXT: vmovdqa 64(%r9), %xmm712694; AVX512-NEXT: vmovdqa 64(%r8), %xmm812695; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]12696; AVX512-NEXT: vmovdqa64 %xmm8, %xmm1812697; AVX512-NEXT: vmovdqa64 %xmm7, %xmm2212698; AVX512-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]12699; AVX512-NEXT: vpshufb %xmm14, %xmm6, %xmm612700; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]12701; AVX512-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12702; AVX512-NEXT: vmovdqa 64(%rcx), %xmm912703; AVX512-NEXT: vmovdqa 64(%rdx), %xmm712704; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm7[4],xmm9[4],xmm7[5],xmm9[5],xmm7[6],xmm9[6],xmm7[7],xmm9[7]12705; AVX512-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[0,2,3,3,4,5,6,7]12706; AVX512-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,2,1]12707; AVX512-NEXT: vmovdqu64 %zmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12708; AVX512-NEXT: vmovdqa 64(%rdi), %xmm1112709; AVX512-NEXT: vmovdqa 64(%rsi), %xmm812710; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm8[4],xmm11[4],xmm8[5],xmm11[5],xmm8[6],xmm11[6],xmm8[7],xmm11[7]12711; AVX512-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[2,1,2,3,4,5,6,7]12712; AVX512-NEXT: vpshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,5,5,4]12713; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,0,1,3]12714; AVX512-NEXT: vmovdqu64 %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12715; AVX512-NEXT: vpbroadcastd 8(%rax), %ymm1212716; AVX512-NEXT: vpandnq %ymm12, %ymm30, %ymm1212717; AVX512-NEXT: vmovdqa (%rax), %ymm1312718; AVX512-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12719; AVX512-NEXT: vpshufb %ymm10, %ymm13, %ymm1312720; AVX512-NEXT: vinserti64x4 $1, %ymm13, %zmm12, %zmm1212721; AVX512-NEXT: vmovdqu64 %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12722; AVX512-NEXT: vmovdqa (%r9), %xmm612723; AVX512-NEXT: vmovdqa (%r8), %xmm1312724; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm13[4],xmm6[4],xmm13[5],xmm6[5],xmm13[6],xmm6[6],xmm13[7],xmm6[7]12725; AVX512-NEXT: vmovdqa64 %xmm13, %xmm2512726; AVX512-NEXT: vmovdqa64 %xmm6, %xmm2612727; AVX512-NEXT: vpshufb %xmm14, %xmm12, %xmm1212728; AVX512-NEXT: vmovdqa64 %xmm14, %xmm3112729; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,0,1,1]12730; AVX512-NEXT: vmovdqu64 %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12731; AVX512-NEXT: vmovdqa (%rcx), %xmm1512732; AVX512-NEXT: vmovdqa (%rdx), %xmm1312733; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm13[4],xmm15[4],xmm13[5],xmm15[5],xmm13[6],xmm15[6],xmm13[7],xmm15[7]12734; AVX512-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[0,2,3,3,4,5,6,7]12735; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,0,2,1]12736; AVX512-NEXT: vmovdqu64 %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12737; AVX512-NEXT: vmovdqa (%rdi), %xmm612738; AVX512-NEXT: vmovdqa (%rsi), %xmm1412739; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm14[4],xmm6[4],xmm14[5],xmm6[5],xmm14[6],xmm6[6],xmm14[7],xmm6[7]12740; AVX512-NEXT: vmovdqa64 %xmm14, %xmm1912741; AVX512-NEXT: vmovdqa64 %xmm6, %xmm1612742; AVX512-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[2,1,2,3,4,5,6,7]12743; AVX512-NEXT: vpshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,5,5,4]12744; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,0,1,3]12745; AVX512-NEXT: vmovdqu64 %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12746; AVX512-NEXT: vpshuflw {{.*#+}} ymm12 = ymm4[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]12747; AVX512-NEXT: vpshufd {{.*#+}} ymm12 = ymm12[0,0,0,0,4,4,4,4]12748; AVX512-NEXT: vpshufd {{.*#+}} ymm14 = ymm2[0,1,1,3,4,5,5,7]12749; AVX512-NEXT: vpblendw {{.*#+}} ymm12 = ymm14[0,1],ymm12[2],ymm14[3,4],ymm12[5],ymm14[6,7,8,9],ymm12[10],ymm14[11,12],ymm12[13],ymm14[14,15]12750; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,1,3,2]12751; AVX512-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12752; AVX512-NEXT: vpshuflw {{.*#+}} ymm12 = ymm5[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]12753; AVX512-NEXT: vpshufd {{.*#+}} ymm12 = ymm12[0,0,2,1,4,4,6,5]12754; AVX512-NEXT: vpshufd {{.*#+}} ymm14 = ymm3[1,1,1,1,5,5,5,5]12755; AVX512-NEXT: vpblendw {{.*#+}} ymm12 = ymm12[0,1],ymm14[2],ymm12[3,4],ymm14[5],ymm12[6,7,8,9],ymm14[10],ymm12[11,12],ymm14[13],ymm12[14,15]12756; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,2,2,3]12757; AVX512-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12758; AVX512-NEXT: vmovdqa 32(%rax), %ymm1212759; AVX512-NEXT: vpshufb %ymm10, %ymm12, %ymm1012760; AVX512-NEXT: vpshufd {{.*#+}} ymm12 = ymm12[0,1,1,3,4,5,5,7]12761; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,2,2,3]12762; AVX512-NEXT: vpandnq %ymm12, %ymm17, %ymm1212763; AVX512-NEXT: vinserti64x4 $1, %ymm12, %zmm10, %zmm1012764; AVX512-NEXT: vmovdqu64 %zmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12765; AVX512-NEXT: vpshuflw {{.*#+}} ymm10 = ymm0[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]12766; AVX512-NEXT: vpshufd {{.*#+}} ymm10 = ymm10[0,0,0,0,4,4,4,4]12767; AVX512-NEXT: vpshufd {{.*#+}} ymm12 = ymm1[0,0,2,1,4,4,6,5]12768; AVX512-NEXT: vpblendw {{.*#+}} ymm10 = ymm10[0,1,2],ymm12[3],ymm10[4,5],ymm12[6],ymm10[7,8,9,10],ymm12[11],ymm10[12,13],ymm12[14],ymm10[15]12769; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,3,3]12770; AVX512-NEXT: vmovdqu64 %zmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12771; AVX512-NEXT: vmovdqa64 %ymm27, %ymm1412772; AVX512-NEXT: vpshufb %ymm14, %ymm4, %ymm1012773; AVX512-NEXT: vpshufd {{.*#+}} ymm12 = ymm2[2,2,2,2,6,6,6,6]12774; AVX512-NEXT: vpblendw {{.*#+}} ymm10 = ymm10[0,1],ymm12[2],ymm10[3,4],ymm12[5],ymm10[6,7,8,9],ymm12[10],ymm10[11,12],ymm12[13],ymm10[14,15]12775; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]12776; AVX512-NEXT: vmovdqu64 %zmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12777; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[3,3,3,3,7,7,7,7]12778; AVX512-NEXT: vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]12779; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]12780; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm4[1],ymm2[2,3],ymm4[4],ymm2[5,6,7,8],ymm4[9],ymm2[10,11],ymm4[12],ymm2[13,14,15]12781; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]12782; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12783; AVX512-NEXT: vpshufhw {{.*#+}} ymm2 = ymm5[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]12784; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[2,2,2,2,6,6,6,6]12785; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm3[2,2,2,2,6,6,6,6]12786; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm2[1],ymm4[2,3],ymm2[4],ymm4[5,6,7,8],ymm2[9],ymm4[10,11],ymm2[12],ymm4[13,14,15]12787; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]12788; AVX512-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12789; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm3[3,3,3,3,7,7,7,7]12790; AVX512-NEXT: vpshufhw {{.*#+}} ymm3 = ymm5[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]12791; AVX512-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[2,2,2,2,6,6,6,6]12792; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1,2],ymm3[3],ymm2[4,5],ymm3[6],ymm2[7,8,9,10],ymm3[11],ymm2[12,13],ymm3[14],ymm2[15]12793; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,1,3,3]12794; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12795; AVX512-NEXT: vprold $16, %ymm0, %ymm212796; AVX512-NEXT: vpshufd {{.*#+}} ymm3 = ymm1[1,2,2,3,5,6,6,7]12797; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0,1],ymm2[2],ymm3[3,4],ymm2[5],ymm3[6,7,8,9],ymm2[10],ymm3[11,12],ymm2[13],ymm3[14,15]12798; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,1,3,2]12799; AVX512-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12800; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[3,3,3,3,7,7,7,7]12801; AVX512-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]12802; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,2,2,3,6,6,6,7]12803; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]12804; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]12805; AVX512-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12806; AVX512-NEXT: vmovdqa64 %ymm24, %ymm612807; AVX512-NEXT: vpshuflw {{.*#+}} ymm0 = ymm6[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]12808; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,0,2,1,4,4,6,5]12809; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm23[1,1,1,1,5,5,5,5]12810; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]12811; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]12812; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12813; AVX512-NEXT: vpshufhw {{.*#+}} ymm0 = ymm6[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]12814; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,2,2,2,6,6,6,6]12815; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm23[2,2,2,2,6,6,6,6]12816; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5,6,7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13,14,15]12817; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]12818; AVX512-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12819; AVX512-NEXT: vmovdqa64 %ymm29, %ymm212820; AVX512-NEXT: vpshuflw {{.*#+}} ymm0 = ymm2[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]12821; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4]12822; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm28[0,1,1,3,4,5,5,7]12823; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm0[2],ymm1[3,4],ymm0[5],ymm1[6,7,8,9],ymm0[10],ymm1[11,12],ymm0[13],ymm1[14,15]12824; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,2]12825; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12826; AVX512-NEXT: vpshufb %ymm14, %ymm2, %ymm012827; AVX512-NEXT: vmovdqa64 %ymm29, %ymm312828; AVX512-NEXT: vmovdqa64 %ymm27, %ymm1012829; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm28[2,2,2,2,6,6,6,6]12830; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]12831; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]12832; AVX512-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12833; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload12834; AVX512-NEXT: vpshuflw {{.*#+}} ymm0 = ymm5[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]12835; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4]12836; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload12837; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm12[0,0,2,1,4,4,6,5]12838; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3],ymm0[4,5],ymm1[6],ymm0[7,8,9,10],ymm1[11],ymm0[12,13],ymm1[14],ymm0[15]12839; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]12840; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12841; AVX512-NEXT: vprold $16, %ymm5, %ymm012842; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm12[1,2,2,3,5,6,6,7]12843; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm0[2],ymm1[3,4],ymm0[5],ymm1[6,7,8,9],ymm0[10],ymm1[11,12],ymm0[13],ymm1[14,15]12844; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,2]12845; AVX512-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12846; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm28[3,3,3,3,7,7,7,7]12847; AVX512-NEXT: vpshufhw {{.*#+}} ymm1 = ymm3[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]12848; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,2,2,6,6,6,6]12849; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5,6,7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13,14,15]12850; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]12851; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12852; AVX512-NEXT: vmovdqa 96(%rcx), %xmm012853; AVX512-NEXT: vmovdqa 96(%rdx), %xmm112854; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]12855; AVX512-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,3,2,4,5,6,7]12856; AVX512-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]12857; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12858; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm23[3,3,3,3,7,7,7,7]12859; AVX512-NEXT: vpshufhw {{.*#+}} ymm3 = ymm6[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]12860; AVX512-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[2,2,2,2,6,6,6,6]12861; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1,2],ymm3[3],ymm2[4,5],ymm3[6],ymm2[7,8,9,10],ymm3[11],ymm2[12,13],ymm3[14],ymm2[15]12862; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,1,3,3]12863; AVX512-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12864; AVX512-NEXT: vmovdqa 96(%rsi), %xmm212865; AVX512-NEXT: vmovdqa 96(%rdi), %xmm312866; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]12867; AVX512-NEXT: vmovdqa64 %xmm31, %xmm612868; AVX512-NEXT: vpshufb %xmm6, %xmm4, %xmm412869; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]12870; AVX512-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12871; AVX512-NEXT: vpshufd {{.*#+}} ymm4 = ymm12[3,3,3,3,7,7,7,7]12872; AVX512-NEXT: vpshufhw {{.*#+}} ymm5 = ymm5[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]12873; AVX512-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[2,2,2,3,6,6,6,7]12874; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1],ymm4[2],ymm5[3,4],ymm4[5],ymm5[6,7,8,9],ymm4[10],ymm5[11,12],ymm4[13],ymm5[14,15]12875; AVX512-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12876; AVX512-NEXT: vprold $16, %xmm2, %xmm412877; AVX512-NEXT: vpshufd {{.*#+}} xmm5 = xmm3[1,1,2,3]12878; AVX512-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0,1],xmm4[2],xmm5[3,4],xmm4[5],xmm5[6,7]12879; AVX512-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12880; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]12881; AVX512-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12882; AVX512-NEXT: vpbroadcastq {{.*#+}} xmm5 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]12883; AVX512-NEXT: vpshufb %xmm5, %xmm0, %xmm212884; AVX512-NEXT: vpshufd {{.*#+}} xmm3 = xmm1[1,1,2,2]12885; AVX512-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0],xmm2[1],xmm3[2,3],xmm2[4],xmm3[5,6],xmm2[7]12886; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12887; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]12888; AVX512-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12889; AVX512-NEXT: vmovdqa 96(%r9), %xmm012890; AVX512-NEXT: vmovdqa 96(%r8), %xmm112891; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]12892; AVX512-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill12893; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]12894; AVX512-NEXT: vmovdqa64 %xmm31, %xmm412895; AVX512-NEXT: vpshufb %xmm4, %xmm0, %xmm112896; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm17 = [16,18,19,19,19,19,0,0,0,1,0,1,2,3,2,3]12897; AVX512-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,6]12898; AVX512-NEXT: vpermt2d %zmm2, %zmm17, %zmm112899; AVX512-NEXT: vpbroadcastd 100(%rax), %ymm212900; AVX512-NEXT: vpbroadcastd 104(%rax), %ymm312901; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm2, %zmm012902; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm1))12903; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12904; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm7[0],xmm9[0],xmm7[1],xmm9[1],xmm7[2],xmm9[2],xmm7[3],xmm9[3]12905; AVX512-NEXT: vmovdqa %xmm5, %xmm1212906; AVX512-NEXT: vpshufb %xmm5, %xmm9, %xmm212907; AVX512-NEXT: vpshufd {{.*#+}} xmm3 = xmm7[1,1,2,2]12908; AVX512-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0],xmm2[1],xmm3[2,3],xmm2[4],xmm3[5,6],xmm2[7]12909; AVX512-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,3,2,4,5,6,7]12910; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm3 = [16,16,17,17,17,17,0,0,0,1,0,1,2,3,2,3]12911; AVX512-NEXT: vpermt2d %zmm1, %zmm3, %zmm212912; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm11[0],xmm8[0],xmm11[1],xmm8[1],xmm11[2],xmm8[2],xmm11[3],xmm8[3]12913; AVX512-NEXT: vpshufb %xmm4, %xmm1, %xmm112914; AVX512-NEXT: vmovdqa64 %xmm31, %xmm012915; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]12916; AVX512-NEXT: vprold $16, %xmm8, %xmm412917; AVX512-NEXT: vpshufd {{.*#+}} xmm5 = xmm11[1,1,2,3]12918; AVX512-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0,1],xmm4[2],xmm5[3,4],xmm4[5],xmm5[6,7]12919; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,2,1]12920; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm1, %zmm1412921; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm1 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0]12922; AVX512-NEXT: vpternlogq {{.*#+}} zmm14 = zmm2 ^ (zmm1 & (zmm14 ^ zmm2))12923; AVX512-NEXT: vmovdqa64 %xmm18, %xmm212924; AVX512-NEXT: vmovdqa64 %xmm22, %xmm412925; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3]12926; AVX512-NEXT: vpshufhw {{.*#+}} xmm4 = xmm2[0,1,2,3,4,5,7,6]12927; AVX512-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,3,2,4,5,6,7]12928; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm5 = [0,1,0,1,0,1,1,3,16,18,19,19,19,19,0,0]12929; AVX512-NEXT: vpermt2d %zmm4, %zmm5, %zmm212930; AVX512-NEXT: vpbroadcastd 64(%rax), %ymm412931; AVX512-NEXT: vpbroadcastd 68(%rax), %ymm612932; AVX512-NEXT: vinserti64x4 $1, %ymm6, %zmm4, %zmm2312933; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm18 = [65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535]12934; AVX512-NEXT: vpternlogq {{.*#+}} zmm23 = zmm23 ^ (zmm18 & (zmm23 ^ zmm2))12935; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm13[0],xmm15[0],xmm13[1],xmm15[1],xmm13[2],xmm15[2],xmm13[3],xmm15[3]12936; AVX512-NEXT: vpshufb %xmm12, %xmm15, %xmm412937; AVX512-NEXT: vpshufd {{.*#+}} xmm6 = xmm13[1,1,2,2]12938; AVX512-NEXT: vpblendw {{.*#+}} xmm4 = xmm6[0],xmm4[1],xmm6[2,3],xmm4[4],xmm6[5,6],xmm4[7]12939; AVX512-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,3,2,4,5,6,7]12940; AVX512-NEXT: vpermt2d %zmm2, %zmm3, %zmm412941; AVX512-NEXT: vmovdqa64 %xmm16, %xmm612942; AVX512-NEXT: vmovdqa64 %xmm19, %xmm312943; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm6[0],xmm3[0],xmm6[1],xmm3[1],xmm6[2],xmm3[2],xmm6[3],xmm3[3]12944; AVX512-NEXT: vpshufb %xmm0, %xmm2, %xmm212945; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]12946; AVX512-NEXT: vprold $16, %xmm19, %xmm312947; AVX512-NEXT: vpshufd {{.*#+}} xmm6 = xmm16[1,1,2,3]12948; AVX512-NEXT: vpblendw {{.*#+}} xmm3 = xmm6[0,1],xmm3[2],xmm6[3,4],xmm3[5],xmm6[6,7]12949; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,2,1]12950; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm2, %zmm712951; AVX512-NEXT: vpternlogq {{.*#+}} zmm7 = zmm4 ^ (zmm1 & (zmm7 ^ zmm4))12952; AVX512-NEXT: vmovdqa64 %xmm25, %xmm112953; AVX512-NEXT: vmovdqa64 %xmm26, %xmm212954; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]12955; AVX512-NEXT: vpshufhw {{.*#+}} xmm2 = xmm1[0,1,2,3,4,5,7,6]12956; AVX512-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,3,2,4,5,6,7]12957; AVX512-NEXT: vpermt2d %zmm2, %zmm5, %zmm112958; AVX512-NEXT: vpbroadcastd (%rax), %ymm212959; AVX512-NEXT: vpbroadcastd 4(%rax), %ymm312960; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm2, %zmm1912961; AVX512-NEXT: vpternlogq {{.*#+}} zmm19 = zmm19 ^ (zmm18 & (zmm19 ^ zmm1))12962; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload12963; AVX512-NEXT: vpshuflw {{.*#+}} ymm1 = ymm6[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]12964; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,0,2,1,4,4,6,5]12965; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload12966; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm11[1,1,1,1,5,5,5,5]12967; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]12968; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]12969; AVX512-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill12970; AVX512-NEXT: vpshufhw {{.*#+}} ymm1 = ymm6[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]12971; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,2,2,6,6,6,6]12972; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm11[2,2,2,2,6,6,6,6]12973; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]12974; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]12975; AVX512-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill12976; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload12977; AVX512-NEXT: vpshuflw {{.*#+}} ymm1 = ymm3[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]12978; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,0,0,0,4,4,4,4]12979; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload12980; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm12[0,1,1,3,4,5,5,7]12981; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3,4],ymm1[5],ymm2[6,7,8,9],ymm1[10],ymm2[11,12],ymm1[13],ymm2[14,15]12982; AVX512-NEXT: vpermq {{.*#+}} ymm28 = ymm1[2,1,3,2]12983; AVX512-NEXT: vpshufb %ymm10, %ymm3, %ymm112984; AVX512-NEXT: vmovdqa %ymm3, %ymm1012985; AVX512-NEXT: vpshufd {{.*#+}} ymm2 = ymm12[2,2,2,2,6,6,6,6]12986; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]12987; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload12988; AVX512-NEXT: vpshuflw {{.*#+}} ymm1 = ymm8[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]12989; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,0,0,0,4,4,4,4]12990; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload12991; AVX512-NEXT: vpshufd {{.*#+}} ymm3 = ymm9[0,0,2,1,4,4,6,5]12992; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm1[0,1,2],ymm3[3],ymm1[4,5],ymm3[6],ymm1[7,8,9,10],ymm3[11],ymm1[12,13],ymm3[14],ymm1[15]12993; AVX512-NEXT: vprold $16, %ymm8, %ymm112994; AVX512-NEXT: vpshufd {{.*#+}} ymm3 = ymm9[1,2,2,3,5,6,6,7]12995; AVX512-NEXT: vpblendw {{.*#+}} ymm5 = ymm3[0,1],ymm1[2],ymm3[3,4],ymm1[5],ymm3[6,7,8,9],ymm1[10],ymm3[11,12],ymm1[13],ymm3[14,15]12996; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm12[3,3,3,3,7,7,7,7]12997; AVX512-NEXT: vpshufhw {{.*#+}} ymm3 = ymm10[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]12998; AVX512-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[2,2,2,2,6,6,6,6]12999; AVX512-NEXT: vpblendw {{.*#+}} ymm3 = ymm1[0],ymm3[1],ymm1[2,3],ymm3[4],ymm1[5,6,7,8],ymm3[9],ymm1[10,11],ymm3[12],ymm1[13,14,15]13000; AVX512-NEXT: vpshufd {{.*#+}} ymm1 = ymm11[3,3,3,3,7,7,7,7]13001; AVX512-NEXT: vpshufhw {{.*#+}} ymm6 = ymm6[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]13002; AVX512-NEXT: vpshufd {{.*#+}} ymm6 = ymm6[2,2,2,2,6,6,6,6]13003; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1,2],ymm6[3],ymm1[4,5],ymm6[6],ymm1[7,8,9,10],ymm6[11],ymm1[12,13],ymm6[14],ymm1[15]13004; AVX512-NEXT: vpshufd {{.*#+}} ymm6 = ymm9[3,3,3,3,7,7,7,7]13005; AVX512-NEXT: vpshufhw {{.*#+}} ymm8 = ymm8[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]13006; AVX512-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[2,2,2,3,6,6,6,7]13007; AVX512-NEXT: vpblendw {{.*#+}} ymm6 = ymm8[0,1],ymm6[2],ymm8[3,4],ymm6[5],ymm8[6,7,8,9],ymm6[10],ymm8[11,12],ymm6[13],ymm8[14,15]13008; AVX512-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13009; AVX512-NEXT: vpermq {{.*#+}} ymm25 = ymm2[2,2,2,3]13010; AVX512-NEXT: vpermq {{.*#+}} ymm29 = ymm4[2,2,3,3]13011; AVX512-NEXT: vpermq {{.*#+}} ymm27 = ymm5[2,1,3,2]13012; AVX512-NEXT: vmovdqa 32(%rdi), %xmm1013013; AVX512-NEXT: vmovdqa 32(%rsi), %xmm1113014; AVX512-NEXT: vprold $16, %xmm11, %xmm213015; AVX512-NEXT: vpshufd {{.*#+}} xmm4 = xmm10[1,1,2,3]13016; AVX512-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0,1],xmm2[2],xmm4[3,4],xmm2[5],xmm4[6,7]13017; AVX512-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13018; AVX512-NEXT: vpermq {{.*#+}} ymm26 = ymm3[0,2,2,3]13019; AVX512-NEXT: vmovdqa 32(%r9), %xmm213020; AVX512-NEXT: vmovdqa 32(%r8), %xmm313021; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]13022; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]13023; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm10[0],xmm11[0],xmm10[1],xmm11[1],xmm10[2],xmm11[2],xmm10[3],xmm11[3]13024; AVX512-NEXT: vpshufb %xmm0, %xmm3, %xmm413025; AVX512-NEXT: vpshufb %xmm0, %xmm2, %xmm213026; AVX512-NEXT: vpshufhw {{.*#+}} xmm3 = xmm6[0,1,2,3,4,5,7,6]13027; AVX512-NEXT: vmovdqa64 %xmm6, %xmm2413028; AVX512-NEXT: vpermt2d %zmm3, %zmm17, %zmm213029; AVX512-NEXT: vpbroadcastd 36(%rax), %ymm013030; AVX512-NEXT: vpbroadcastd 40(%rax), %ymm313031; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm0, %zmm1313032; AVX512-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (mem & (zmm13 ^ zmm2))13033; AVX512-NEXT: vmovdqa 32(%rcx), %xmm813034; AVX512-NEXT: vmovdqa 32(%rdx), %xmm613035; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],xmm8[3]13036; AVX512-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,2,4,5,6,7]13037; AVX512-NEXT: vpshufd {{.*#+}} xmm12 = xmm0[0,0,1,1]13038; AVX512-NEXT: vpermq {{.*#+}} ymm17 = ymm1[2,1,3,3]13039; AVX512-NEXT: vpermq {{.*#+}} ymm15 = ymm4[0,0,1,1]13040; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload13041; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm1 # 32-byte Folded Reload13042; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload13043; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 32-byte Folded Reload13044; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm9 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]13045; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm9 & (zmm0 ^ zmm1))13046; AVX512-NEXT: vpermq $182, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Folded Reload13047; AVX512-NEXT: # ymm1 = mem[2,1,3,2]13048; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm31 = [65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535]13049; AVX512-NEXT: vpternlogq {{.*#+}} ymm1 = ymm1 ^ (ymm31 & (ymm1 ^ ymm0))13050; AVX512-NEXT: vpternlogq {{.*#+}} ymm20 = ymm20 ^ (ymm30 & (ymm20 ^ ymm1))13051; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload13052; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm1 # 32-byte Folded Reload13053; AVX512-NEXT: vpternlogq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm30, %zmm1 # 64-byte Folded Reload13054; AVX512-NEXT: # zmm1 = (zmm1 & zmm30) | mem13055; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload13056; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm4 # 32-byte Folded Reload13057; AVX512-NEXT: vpternlogq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm30, %zmm4 # 64-byte Folded Reload13058; AVX512-NEXT: # zmm4 = (zmm4 & zmm30) | mem13059; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload13060; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm2 # 32-byte Folded Reload13061; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload13062; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm3, %zmm30 # 32-byte Folded Reload13063; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm22 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]13064; AVX512-NEXT: vpternlogq {{.*#+}} zmm30 = zmm2 ^ (zmm22 & (zmm30 ^ zmm2))13065; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]13066; AVX512-NEXT: vpternlogq {{.*#+}} zmm30 = zmm1 ^ (zmm2 & (zmm30 ^ zmm1))13067; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload13068; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm1 # 32-byte Folded Reload13069; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload13070; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm3, %zmm5 # 32-byte Folded Reload13071; AVX512-NEXT: vpternlogq {{.*#+}} zmm5 = zmm1 ^ (zmm22 & (zmm5 ^ zmm1))13072; AVX512-NEXT: vpternlogq {{.*#+}} zmm5 = zmm4 ^ (zmm2 & (zmm5 ^ zmm4))13073; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload13074; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm1 # 32-byte Folded Reload13075; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload13076; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm16 # 32-byte Folded Reload13077; AVX512-NEXT: vpternlogq {{.*#+}} zmm16 = zmm1 ^ (mem & (zmm16 ^ zmm1))13078; AVX512-NEXT: vextracti64x4 $1, %zmm0, %ymm013079; AVX512-NEXT: vpternlogd {{.*#+}} ymm0 = m32bcst ^ (ymm18 & (ymm0 ^ m32bcst))13080; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535]13081; AVX512-NEXT: vpternlogq {{.*#+}} ymm21 = ymm21 ^ (ymm1 & (ymm21 ^ ymm0))13082; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm18 # 64-byte Reload13083; AVX512-NEXT: vpternlogq $248, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm18 # 64-byte Folded Reload13084; AVX512-NEXT: # zmm18 = zmm18 | (zmm1 & mem)13085; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload13086; AVX512-NEXT: vshufi64x2 $68, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm3 # 64-byte Folded Reload13087; AVX512-NEXT: # zmm3 = zmm0[0,1,2,3],mem[0,1,2,3]13088; AVX512-NEXT: vpternlogq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm3 # 64-byte Folded Reload13089; AVX512-NEXT: # zmm3 = (zmm3 & zmm1) | mem13090; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm1 = zmm20[0,1,2,3],zmm21[0,1,2,3]13091; AVX512-NEXT: vmovdqa64 64(%rax), %zmm213092; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm21 = [0,13,0,0,0,14,0,0,14,0,0,0,15,0,0,15]13093; AVX512-NEXT: vpermd %zmm2, %zmm21, %zmm2013094; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm4 = [65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]13095; AVX512-NEXT: vpternlogq {{.*#+}} zmm20 = zmm20 ^ (zmm4 & (zmm20 ^ zmm1))13096; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload13097; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm1 # 32-byte Folded Reload13098; AVX512-NEXT: vmovdqa64 (%rax), %zmm013099; AVX512-NEXT: vpermd %zmm0, %zmm21, %zmm2113100; AVX512-NEXT: vpternlogq {{.*#+}} zmm21 = zmm21 ^ (zmm4 & (zmm21 ^ zmm1))13101; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm1 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]13102; AVX512-NEXT: vpternlogq {{.*#+}} zmm23 = zmm23 ^ (zmm1 & (zmm23 ^ zmm14))13103; AVX512-NEXT: vpternlogq {{.*#+}} zmm19 = zmm19 ^ (zmm1 & (zmm19 ^ zmm7))13104; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload13105; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm1 # 32-byte Folded Reload13106; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload13107; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm4, %zmm7 # 32-byte Folded Reload13108; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm14 = [0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]13109; AVX512-NEXT: vpternlogq {{.*#+}} zmm7 = zmm1 ^ (zmm14 & (zmm7 ^ zmm1))13110; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload13111; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm1 # 32-byte Folded Reload13112; AVX512-NEXT: vinserti64x4 $1, %ymm25, %zmm28, %zmm2513113; AVX512-NEXT: vpternlogq {{.*#+}} zmm25 = zmm1 ^ (zmm14 & (zmm25 ^ zmm1))13114; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload13115; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm14 # 32-byte Folded Reload13116; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm28 = [0,0,4,0,0,0,5,0,0,5,0,0,0,6,0,0]13117; AVX512-NEXT: vpermd %zmm2, %zmm28, %zmm113118; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm4 = [65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]13119; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm4 & (zmm1 ^ zmm14))13120; AVX512-NEXT: vinserti64x4 $1, %ymm27, %zmm29, %zmm213121; AVX512-NEXT: vpermd %zmm0, %zmm28, %zmm1413122; AVX512-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (zmm4 & (zmm14 ^ zmm2))13123; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm0 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]13124; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm0 & (zmm1 ^ zmm7))13125; AVX512-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (zmm0 & (zmm14 ^ zmm25))13126; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload13127; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 32-byte Folded Reload13128; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload13129; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm2 # 32-byte Folded Reload13130; AVX512-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm9 & (zmm2 ^ zmm0))13131; AVX512-NEXT: vpermq $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload13132; AVX512-NEXT: # ymm0 = mem[0,1,1,3]13133; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload13134; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm4, %zmm013135; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload13136; AVX512-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm4, %zmm7 # 32-byte Folded Reload13137; AVX512-NEXT: vpternlogq {{.*#+}} zmm7 = zmm0 ^ (zmm9 & (zmm7 ^ zmm0))13138; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm12[0,1,1,3]13139; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm26, %zmm013140; AVX512-NEXT: vinserti64x4 $1, %ymm15, %zmm17, %zmm1213141; AVX512-NEXT: vpternlogq {{.*#+}} zmm12 = zmm0 ^ (zmm9 & (zmm12 ^ zmm0))13142; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm11[4],xmm10[4],xmm11[5],xmm10[5],xmm11[6],xmm10[6],xmm11[7],xmm10[7]13143; AVX512-NEXT: vpshufb {{.*#+}} xmm9 = xmm8[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]13144; AVX512-NEXT: vpshufd {{.*#+}} xmm10 = xmm6[1,1,2,2]13145; AVX512-NEXT: vpblendw {{.*#+}} xmm9 = xmm10[0],xmm9[1],xmm10[2,3],xmm9[4],xmm10[5,6],xmm9[7]13146; AVX512-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm6[4],xmm8[4],xmm6[5],xmm8[5],xmm6[6],xmm8[6],xmm6[7],xmm8[7]13147; AVX512-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload13148; AVX512-NEXT: # ymm8 = mem[2,2,2,3]13149; AVX512-NEXT: vpshuflw $180, {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload13150; AVX512-NEXT: # xmm10 = mem[0,1,3,2,4,5,6,7]13151; AVX512-NEXT: vpshufd {{.*#+}} xmm10 = xmm10[0,1,1,3]13152; AVX512-NEXT: vpshufd $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Folded Reload13153; AVX512-NEXT: # ymm11 = mem[2,3,3,3,6,7,7,7]13154; AVX512-NEXT: vpermq $96, {{[-0-9]+}}(%r{{[sb]}}p), %ymm25 # 32-byte Folded Reload13155; AVX512-NEXT: # ymm25 = mem[0,0,2,1]13156; AVX512-NEXT: vpshuflw $230, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload13157; AVX512-NEXT: # xmm4 = mem[2,1,2,3,4,5,6,7]13158; AVX512-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,5,4]13159; AVX512-NEXT: vpermq {{.*#+}} ymm27 = ymm4[0,0,1,3]13160; AVX512-NEXT: vpermq $80, {{[-0-9]+}}(%r{{[sb]}}p), %ymm17 # 32-byte Folded Reload13161; AVX512-NEXT: # ymm17 = mem[0,0,1,1]13162; AVX512-NEXT: vpshuflw $248, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload13163; AVX512-NEXT: # xmm15 = mem[0,2,3,3,4,5,6,7]13164; AVX512-NEXT: vpermq {{.*#+}} ymm15 = ymm15[0,0,2,1]13165; AVX512-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %ymm26 # 32-byte Folded Reload13166; AVX512-NEXT: # ymm26 = mem[2,2,2,3]13167; AVX512-NEXT: vmovdqa64 %xmm24, %xmm413168; AVX512-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,1,3,2,4,5,6,7]13169; AVX512-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,1,1,3]13170; AVX512-NEXT: vpshufd $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm28 # 32-byte Folded Reload13171; AVX512-NEXT: # ymm28 = mem[2,3,3,3,6,7,7,7]13172; AVX512-NEXT: vpermq $96, {{[-0-9]+}}(%r{{[sb]}}p), %ymm29 # 32-byte Folded Reload13173; AVX512-NEXT: # ymm29 = mem[0,0,2,1]13174; AVX512-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,1,2,3,4,5,6,7]13175; AVX512-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,5,4]13176; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,3]13177; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]13178; AVX512-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,2,3,3,4,5,6,7]13179; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,2,1]13180; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,0,0,1]13181; AVX512-NEXT: vinserti64x4 $1, %ymm10, %zmm8, %zmm813182; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm11[2,1,3,2]13183; AVX512-NEXT: vpbroadcastd 96(%rax), %ymm1113184; AVX512-NEXT: vinserti64x4 $1, %ymm11, %zmm10, %zmm1013185; AVX512-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm31 & (zmm10 ^ zmm8))13186; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]13187; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm26, %zmm413188; AVX512-NEXT: vpermq {{.*#+}} ymm8 = ymm28[2,1,3,2]13189; AVX512-NEXT: vpbroadcastd 32(%rax), %ymm1113190; AVX512-NEXT: vinserti64x4 $1, %ymm11, %zmm8, %zmm813191; AVX512-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 ^ (zmm31 & (zmm8 ^ zmm4))13192; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm4 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]13193; AVX512-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm4 & (zmm10 ^ zmm7))13194; AVX512-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 ^ (zmm4 & (zmm8 ^ zmm12))13195; AVX512-NEXT: vinserti64x4 $1, %ymm27, %zmm25, %zmm413196; AVX512-NEXT: vinserti64x4 $1, %ymm15, %zmm17, %zmm713197; AVX512-NEXT: vpternlogq {{.*#+}} zmm7 = zmm4 ^ (zmm22 & (zmm7 ^ zmm4))13198; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm29, %zmm013199; AVX512-NEXT: vinserti64x4 $1, %ymm6, %zmm9, %zmm413200; AVX512-NEXT: vpternlogq {{.*#+}} zmm4 = zmm0 ^ (zmm22 & (zmm4 ^ zmm0))13201; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm0 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0]13202; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm6 # 64-byte Reload13203; AVX512-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (zmm0 & (zmm6 ^ zmm7))13204; AVX512-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (zmm0 & (zmm13 ^ zmm4))13205; AVX512-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm16))13206; AVX512-NEXT: vpternlogq {{.*#+}} zmm21 = zmm21 ^ (mem & (zmm21 ^ zmm2))13207; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax13208; AVX512-NEXT: vmovdqa64 %zmm3, 320(%rax)13209; AVX512-NEXT: vmovdqa64 %zmm13, 256(%rax)13210; AVX512-NEXT: vmovdqa64 %zmm8, 192(%rax)13211; AVX512-NEXT: vmovdqa64 %zmm14, 128(%rax)13212; AVX512-NEXT: vmovdqa64 %zmm5, 64(%rax)13213; AVX512-NEXT: vmovdqa64 %zmm19, (%rax)13214; AVX512-NEXT: vmovdqa64 %zmm23, 448(%rax)13215; AVX512-NEXT: vmovdqa64 %zmm6, 704(%rax)13216; AVX512-NEXT: vmovdqa64 %zmm10, 640(%rax)13217; AVX512-NEXT: vmovdqa64 %zmm1, 576(%rax)13218; AVX512-NEXT: vmovdqa64 %zmm30, 512(%rax)13219; AVX512-NEXT: vmovdqa64 %zmm21, 384(%rax)13220; AVX512-NEXT: vmovdqa64 %zmm18, 768(%rax)13221; AVX512-NEXT: vmovdqa64 %zmm20, 832(%rax)13222; AVX512-NEXT: addq $2648, %rsp # imm = 0xA5813223; AVX512-NEXT: vzeroupper13224; AVX512-NEXT: retq13225;13226; AVX512-FCP-LABEL: store_i16_stride7_vf64:13227; AVX512-FCP: # %bb.0:13228; AVX512-FCP-NEXT: subq $1480, %rsp # imm = 0x5C813229; AVX512-FCP-NEXT: vmovdqa 96(%rcx), %ymm313230; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128]13231; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm3, %ymm013232; AVX512-FCP-NEXT: vmovdqa 96(%rdx), %ymm113233; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm8 = [u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u]13234; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm1, %ymm213235; AVX512-FCP-NEXT: vporq %ymm0, %ymm2, %ymm1613236; AVX512-FCP-NEXT: vmovdqa 96(%rsi), %ymm213237; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm10 = [128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128,128,128,128,128]13238; AVX512-FCP-NEXT: vpshufb %ymm10, %ymm2, %ymm013239; AVX512-FCP-NEXT: vmovdqa 96(%rdi), %ymm713240; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm11 = [12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u,16,17,18,19]13241; AVX512-FCP-NEXT: vpshufb %ymm11, %ymm7, %ymm413242; AVX512-FCP-NEXT: vpor %ymm0, %ymm4, %ymm513243; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128]13244; AVX512-FCP-NEXT: vmovdqa 64(%r9), %ymm913245; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm9, %ymm013246; AVX512-FCP-NEXT: vmovdqa64 %ymm9, %ymm2513247; AVX512-FCP-NEXT: vmovdqa 64(%r8), %ymm1313248; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm12 = [u,u,u,u,u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u]13249; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm13, %ymm913250; AVX512-FCP-NEXT: vmovdqa64 %ymm13, %ymm2613251; AVX512-FCP-NEXT: vpor %ymm0, %ymm9, %ymm013252; AVX512-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13253; AVX512-FCP-NEXT: vmovdqa 64(%rcx), %ymm013254; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm0, %ymm1413255; AVX512-FCP-NEXT: vmovdqa64 %ymm0, %ymm2713256; AVX512-FCP-NEXT: vmovdqa 64(%rdx), %ymm013257; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm0, %ymm1513258; AVX512-FCP-NEXT: vmovdqa64 %ymm0, %ymm2913259; AVX512-FCP-NEXT: vpor %ymm14, %ymm15, %ymm1313260; AVX512-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13261; AVX512-FCP-NEXT: vmovdqa 64(%rsi), %ymm013262; AVX512-FCP-NEXT: vpshufb %ymm10, %ymm0, %ymm1413263; AVX512-FCP-NEXT: vmovdqa64 %ymm0, %ymm2213264; AVX512-FCP-NEXT: vmovdqa 64(%rdi), %ymm013265; AVX512-FCP-NEXT: vpshufb %ymm11, %ymm0, %ymm1513266; AVX512-FCP-NEXT: vmovdqa64 %ymm0, %ymm2813267; AVX512-FCP-NEXT: vpor %ymm14, %ymm15, %ymm1313268; AVX512-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13269; AVX512-FCP-NEXT: vmovdqa (%r9), %ymm013270; AVX512-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13271; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm0, %ymm1413272; AVX512-FCP-NEXT: vmovdqa (%r8), %ymm013273; AVX512-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13274; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm0, %ymm1513275; AVX512-FCP-NEXT: vpor %ymm14, %ymm15, %ymm1313276; AVX512-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13277; AVX512-FCP-NEXT: vmovdqa (%rcx), %ymm013278; AVX512-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13279; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm0, %ymm1413280; AVX512-FCP-NEXT: vmovdqa (%rdx), %ymm013281; AVX512-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13282; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm0, %ymm1513283; AVX512-FCP-NEXT: vpor %ymm14, %ymm15, %ymm1313284; AVX512-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13285; AVX512-FCP-NEXT: vmovdqa (%rsi), %ymm013286; AVX512-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13287; AVX512-FCP-NEXT: vpshufb %ymm10, %ymm0, %ymm1513288; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm013289; AVX512-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13290; AVX512-FCP-NEXT: vpshufb %ymm11, %ymm0, %ymm1313291; AVX512-FCP-NEXT: vpor %ymm15, %ymm13, %ymm1313292; AVX512-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13293; AVX512-FCP-NEXT: vmovdqa 32(%rcx), %ymm1513294; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm15, %ymm613295; AVX512-FCP-NEXT: vmovdqa 32(%rdx), %ymm1413296; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm14, %ymm813297; AVX512-FCP-NEXT: vpor %ymm6, %ymm8, %ymm613298; AVX512-FCP-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13299; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %ymm013300; AVX512-FCP-NEXT: vpshufb %ymm10, %ymm0, %ymm613301; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %ymm913302; AVX512-FCP-NEXT: vpshufb %ymm11, %ymm9, %ymm813303; AVX512-FCP-NEXT: vpor %ymm6, %ymm8, %ymm613304; AVX512-FCP-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13305; AVX512-FCP-NEXT: vmovdqa 32(%r8), %ymm813306; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm8, %ymm613307; AVX512-FCP-NEXT: vmovdqa 32(%r9), %ymm1013308; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm10, %ymm1113309; AVX512-FCP-NEXT: vporq %ymm11, %ymm6, %ymm2113310; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} ymm11 = ymm3[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]13311; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm12 = ymm1[0,1,1,3,4,5,5,7]13312; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm12[0,1],ymm11[2],ymm12[3,4],ymm11[5],ymm12[6,7,8,9],ymm11[10],ymm12[11,12],ymm11[13],ymm12[14,15]13313; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,1,3,2]13314; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm13 = [18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]13315; AVX512-FCP-NEXT: # ymm13 = mem[0,1,0,1]13316; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm2, %ymm1213317; AVX512-FCP-NEXT: vmovdqa64 %ymm13, %ymm1713318; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm7[1,1,1,1,5,5,5,5]13319; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm12[0,1],ymm13[2],ymm12[3,4],ymm13[5],ymm12[6,7,8,9],ymm13[10],ymm12[11,12],ymm13[13],ymm12[14,15]13320; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,2,2,3]13321; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm11, %zmm16, %zmm1113322; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm12, %zmm5, %zmm1213323; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm12 = zmm11 ^ (mem & (zmm12 ^ zmm11))13324; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm13 = [65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]13325; AVX512-FCP-NEXT: vmovdqa 96(%r8), %ymm513326; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm11 = ymm5[u,u],zero,zero,zero,zero,zero,zero,zero,zero,ymm5[14,15,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero,ymm5[16,17,u,u,u,u],zero,zero13327; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm11 = ymm11 | (ymm12 & ymm13)13328; AVX512-FCP-NEXT: vmovdqa 96(%r9), %ymm613329; AVX512-FCP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13330; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm6, %ymm413331; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm16 = [65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535]13332; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm4 = ymm4 | (ymm11 & ymm16)13333; AVX512-FCP-NEXT: vmovdqa64 %zmm16, %zmm2013334; AVX512-FCP-NEXT: vextracti64x4 $1, %zmm12, %ymm1113335; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm12 = [0,4,0,0,0,5,0,0]13336; AVX512-FCP-NEXT: vpermd %ymm5, %ymm12, %ymm1213337; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm16 = [65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]13338; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm12 = ymm12 ^ (ymm16 & (ymm12 ^ ymm11))13339; AVX512-FCP-NEXT: vmovdqa64 %zmm16, %zmm1813340; AVX512-FCP-NEXT: vprold $16, %ymm6, %ymm1113341; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,2,2]13342; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm16 = [65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535]13343; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm11 = ymm11 ^ (ymm16 & (ymm11 ^ ymm12))13344; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm4 = zmm4[0,1,2,3],zmm11[0,1,2,3]13345; AVX512-FCP-NEXT: vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13346; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax13347; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm11 = [0,1,4,5,4,5,5,7]13348; AVX512-FCP-NEXT: vmovdqa 96(%rax), %ymm413349; AVX512-FCP-NEXT: vpermd %ymm4, %ymm11, %ymm1113350; AVX512-FCP-NEXT: vpandn %ymm11, %ymm13, %ymm1113351; AVX512-FCP-NEXT: vmovdqa64 %zmm13, %zmm1213352; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm13 = [12,13,128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128]13353; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm4, %ymm413354; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm11, %zmm4, %zmm413355; AVX512-FCP-NEXT: vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13356; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]13357; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm413358; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm11 = ymm7[3,3,3,3,7,7,7,7]13359; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm11[0,1,2],ymm4[3],ymm11[4,5],ymm4[6],ymm11[7,8,9,10],ymm4[11],ymm11[12,13],ymm4[14],ymm11[15]13360; AVX512-FCP-NEXT: vpmovsxdq {{.*#+}} ymm11 = [151522058,0,421010202,421010202]13361; AVX512-FCP-NEXT: vpshufb %ymm11, %ymm2, %ymm213362; AVX512-FCP-NEXT: vmovdqa64 %ymm11, %ymm2413363; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm7 = ymm7[2,2,2,2,6,6,6,6]13364; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm7[0],ymm2[1],ymm7[2,3],ymm2[4],ymm7[5,6,7,8],ymm2[9],ymm7[10,11],ymm2[12],ymm7[13,14,15]13365; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm7 = [0,2,2,3,10,9,11,11]13366; AVX512-FCP-NEXT: vpermt2q %zmm4, %zmm7, %zmm213367; AVX512-FCP-NEXT: vpmovsxdq {{.*#+}} ymm11 = [218894094,0,488382238,488382238]13368; AVX512-FCP-NEXT: vpshufb %ymm11, %ymm3, %ymm413369; AVX512-FCP-NEXT: vmovdqa64 %ymm11, %ymm1613370; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm11 = ymm1[3,3,3,3,7,7,7,7]13371; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm11[0],ymm4[1],ymm11[2,3],ymm4[4],ymm11[5,6,7,8],ymm4[9],ymm11[10,11],ymm4[12],ymm11[13,14,15]13372; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27,22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27]13373; AVX512-FCP-NEXT: # ymm11 = mem[0,1,0,1]13374; AVX512-FCP-NEXT: vpshufb %ymm11, %ymm3, %ymm313375; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,2,2,6,6,6,6]13376; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm3[0,1],ymm1[2],ymm3[3,4],ymm1[5],ymm3[6,7,8,9],ymm1[10],ymm3[11,12],ymm1[13],ymm3[14,15]13377; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm19 = [2,2,2,3,8,10,10,11]13378; AVX512-FCP-NEXT: vpermt2q %zmm4, %zmm19, %zmm113379; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm23 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]13380; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm2 ^ (zmm23 & (zmm1 ^ zmm2))13381; AVX512-FCP-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13382; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [5,0,0,0,6,0,0,6]13383; AVX512-FCP-NEXT: vpermd %ymm5, %ymm1, %ymm113384; AVX512-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13385; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm3 = [65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535]13386; AVX512-FCP-NEXT: vpbroadcastd 72(%rax), %ymm113387; AVX512-FCP-NEXT: vpandn %ymm1, %ymm3, %ymm113388; AVX512-FCP-NEXT: vmovdqa 64(%rax), %ymm213389; AVX512-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13390; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm2, %ymm213391; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm113392; AVX512-FCP-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13393; AVX512-FCP-NEXT: vpbroadcastd 8(%rax), %ymm113394; AVX512-FCP-NEXT: vpandn %ymm1, %ymm3, %ymm113395; AVX512-FCP-NEXT: vmovdqa (%rax), %ymm213396; AVX512-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13397; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm2, %ymm213398; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm113399; AVX512-FCP-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13400; AVX512-FCP-NEXT: vpbroadcastd {{.*#+}} ymm5 = [18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21]13401; AVX512-FCP-NEXT: vpshufb %ymm5, %ymm10, %ymm113402; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm8[0,0,2,1,4,4,6,5]13403; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1,2],ymm2[3],ymm1[4,5],ymm2[6],ymm1[7,8,9,10],ymm2[11],ymm1[12,13],ymm2[14],ymm1[15]13404; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,1,0,3,10,10,11,11]13405; AVX512-FCP-NEXT: vpermi2q %zmm1, %zmm21, %zmm213406; AVX512-FCP-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13407; AVX512-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13408; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm0, %ymm113409; AVX512-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13410; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm9[3,3,3,3,7,7,7,7]13411; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8,9,10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]13412; AVX512-FCP-NEXT: vmovdqa64 %ymm24, %ymm1313413; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm0, %ymm213414; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm9[2,2,2,2,6,6,6,6]13415; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5,6,7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13,14,15]13416; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm7, %zmm213417; AVX512-FCP-NEXT: vmovdqu %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13418; AVX512-FCP-NEXT: vmovdqa64 %ymm16, %ymm613419; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm15, %ymm113420; AVX512-FCP-NEXT: vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13421; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm14[3,3,3,3,7,7,7,7]13422; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm3[0],ymm1[1],ymm3[2,3],ymm1[4],ymm3[5,6,7,8],ymm1[9],ymm3[10,11],ymm1[12],ymm3[13,14,15]13423; AVX512-FCP-NEXT: vmovdqa %ymm11, %ymm713424; AVX512-FCP-NEXT: vpshufb %ymm11, %ymm15, %ymm313425; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm14[2,2,2,2,6,6,6,6]13426; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0,1],ymm4[2],ymm3[3,4],ymm4[5],ymm3[6,7,8,9],ymm4[10],ymm3[11,12],ymm4[13],ymm3[14,15]13427; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm19, %zmm013428; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm2 ^ (zmm23 & (zmm0 ^ zmm2))13429; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13430; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,28,29,26,27,28,29,26,27,28,29,30,31,30,31]13431; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm8[3,3,3,3,7,7,7,7]13432; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]13433; AVX512-FCP-NEXT: vprold $16, %ymm10, %ymm213434; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm8[1,2,2,3,5,6,6,7]13435; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0,1],ymm2[2],ymm3[3,4],ymm2[5],ymm3[6,7,8,9],ymm2[10],ymm3[11,12],ymm2[13],ymm3[14,15]13436; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm11 = [2,1,3,2,10,10,10,11]13437; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm11, %zmm213438; AVX512-FCP-NEXT: vmovdqa64 (%rax), %zmm1613439; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm0 = [0,13,0,0,0,14,0,0,14,0,0,0,15,0,0,15]13440; AVX512-FCP-NEXT: vpermd %zmm16, %zmm0, %zmm013441; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm18 & (zmm0 ^ zmm2))13442; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13443; AVX512-FCP-NEXT: vmovdqa64 %ymm22, %ymm1513444; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm15, %ymm113445; AVX512-FCP-NEXT: vmovdqa64 %ymm24, %ymm2113446; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm28[2,2,2,2,6,6,6,6]13447; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]13448; AVX512-FCP-NEXT: vmovdqa64 %ymm17, %ymm913449; AVX512-FCP-NEXT: vpshufb %ymm9, %ymm15, %ymm213450; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm28[1,1,1,1,5,5,5,5]13451; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm3[2],ymm2[3,4],ymm3[5],ymm2[6,7,8,9],ymm3[10],ymm2[11,12],ymm3[13],ymm2[14,15]13452; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm19, %zmm213453; AVX512-FCP-NEXT: vmovdqa64 %ymm27, %ymm013454; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm0, %ymm113455; AVX512-FCP-NEXT: vmovdqa %ymm7, %ymm1013456; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm29[2,2,2,2,6,6,6,6]13457; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm3[2],ymm1[3,4],ymm3[5],ymm1[6,7,8,9],ymm3[10],ymm1[11,12],ymm3[13],ymm1[14,15]13458; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} ymm3 = ymm0[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]13459; AVX512-FCP-NEXT: vmovdqa64 %ymm27, %ymm713460; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm29[0,1,1,3,4,5,5,7]13461; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm3[2],ymm4[3,4],ymm3[5],ymm4[6,7,8,9],ymm3[10],ymm4[11,12],ymm3[13],ymm4[14,15]13462; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm11, %zmm413463; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]13464; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm2 ^ (zmm1 & (zmm4 ^ zmm2))13465; AVX512-FCP-NEXT: vmovdqa64 %ymm25, %ymm1313466; AVX512-FCP-NEXT: vprold $16, %ymm25, %ymm213467; AVX512-FCP-NEXT: vmovdqa64 %ymm26, %ymm2513468; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm26[1,2,2,3,5,6,6,7]13469; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0,1],ymm2[2],ymm3[3,4],ymm2[5],ymm3[6,7,8,9],ymm2[10],ymm3[11,12],ymm2[13],ymm3[14,15]13470; AVX512-FCP-NEXT: vpshufb %ymm5, %ymm13, %ymm313471; AVX512-FCP-NEXT: vmovdqa64 %ymm13, %ymm1813472; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm26[0,0,2,1,4,4,6,5]13473; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1,2],ymm5[3],ymm3[4,5],ymm5[6],ymm3[7,8,9,10],ymm5[11],ymm3[12,13],ymm5[14],ymm3[15]13474; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm27 = [2,2,3,3,10,9,11,10]13475; AVX512-FCP-NEXT: vpermt2q %zmm2, %zmm27, %zmm313476; AVX512-FCP-NEXT: vmovdqa64 64(%rax), %zmm013477; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13478; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [0,0,4,0,0,0,5,0,0,5,0,0,0,6,0,0]13479; AVX512-FCP-NEXT: vpermd %zmm0, %zmm2, %zmm013480; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm12 & (zmm0 ^ zmm3))13481; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm4))13482; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13483; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm7, %ymm213484; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm29[3,3,3,3,7,7,7,7]13485; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5,6,7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13,14,15]13486; AVX512-FCP-NEXT: vmovdqa 64(%rcx), %xmm313487; AVX512-FCP-NEXT: vmovdqa 64(%rdx), %xmm413488; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} xmm12 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]13489; AVX512-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill13490; AVX512-FCP-NEXT: vpshufb %xmm12, %xmm3, %xmm213491; AVX512-FCP-NEXT: vmovdqa %xmm4, %xmm513492; AVX512-FCP-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill13493; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[1,1,2,2]13494; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0],xmm2[1],xmm4[2,3],xmm2[4],xmm4[5,6],xmm2[7]13495; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,2,3,0,1,2,3,6,7,4,5,6,7,4,5]13496; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3]13497; AVX512-FCP-NEXT: vpshufb %xmm14, %xmm4, %xmm413498; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm24 = [8,9,9,0,0,0,1,1]13499; AVX512-FCP-NEXT: vpermt2q %zmm4, %zmm24, %zmm213500; AVX512-FCP-NEXT: vmovdqa 64(%rdi), %xmm313501; AVX512-FCP-NEXT: vmovdqa %xmm3, (%rsp) # 16-byte Spill13502; AVX512-FCP-NEXT: vmovdqa 64(%rsi), %xmm613503; AVX512-FCP-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill13504; AVX512-FCP-NEXT: vprold $16, %xmm6, %xmm413505; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm5 = xmm3[1,1,2,3]13506; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0,1],xmm4[2],xmm5[3,4],xmm4[5],xmm5[6,7]13507; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm15 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]13508; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm3[0],xmm6[0],xmm3[1],xmm6[1],xmm3[2],xmm6[2],xmm3[3],xmm6[3]13509; AVX512-FCP-NEXT: vpshufb %xmm15, %xmm5, %xmm513510; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm26 = [0,0,1,1,8,8,0,9]13511; AVX512-FCP-NEXT: vpermt2q %zmm4, %zmm26, %zmm513512; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm4 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0]13513; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm5 = zmm2 ^ (zmm4 & (zmm5 ^ zmm2))13514; AVX512-FCP-NEXT: vmovdqa 64(%r9), %xmm213515; AVX512-FCP-NEXT: vmovdqa 64(%r8), %xmm613516; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm6[4],xmm2[4],xmm6[5],xmm2[5],xmm6[6],xmm2[6],xmm6[7],xmm2[7]13517; AVX512-FCP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill13518; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm6[0],xmm2[0],xmm6[1],xmm2[1],xmm6[2],xmm2[2],xmm6[3],xmm2[3]13519; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm7 = [0,1,2,3,6,7,4,5,6,7,4,5,12,13,14,15]13520; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]13521; AVX512-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm613522; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm2, %xmm213523; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm29 = [0,0,0,1,8,9,9,0]13524; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm29, %zmm213525; AVX512-FCP-NEXT: vpbroadcastd 64(%rax), %ymm613526; AVX512-FCP-NEXT: vpbroadcastd 68(%rax), %ymm813527; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm6, %zmm3013528; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm30 = zmm30 ^ (zmm20 & (zmm30 ^ zmm2))13529; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm2 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]13530; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm30 = zmm30 ^ (zmm2 & (zmm30 ^ zmm5))13531; AVX512-FCP-NEXT: vmovdqa (%rcx), %xmm313532; AVX512-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill13533; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm813534; AVX512-FCP-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill13535; AVX512-FCP-NEXT: vpshufb %xmm12, %xmm3, %xmm513536; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm6 = xmm8[1,1,2,2]13537; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm5 = xmm6[0],xmm5[1],xmm6[2,3],xmm5[4],xmm6[5,6],xmm5[7]13538; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm8[0],xmm3[0],xmm8[1],xmm3[1],xmm8[2],xmm3[2],xmm8[3],xmm3[3]13539; AVX512-FCP-NEXT: vpshufb %xmm14, %xmm6, %xmm613540; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm24, %zmm513541; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm313542; AVX512-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill13543; AVX512-FCP-NEXT: vmovdqa (%rsi), %xmm1213544; AVX512-FCP-NEXT: vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill13545; AVX512-FCP-NEXT: vprold $16, %xmm12, %xmm613546; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm8 = xmm3[1,1,2,3]13547; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm8[0,1],xmm6[2],xmm8[3,4],xmm6[5],xmm8[6,7]13548; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm3[0],xmm12[0],xmm3[1],xmm12[1],xmm3[2],xmm12[2],xmm3[3],xmm12[3]13549; AVX512-FCP-NEXT: vpshufb %xmm15, %xmm8, %xmm813550; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm26, %zmm813551; AVX512-FCP-NEXT: vmovdqa64 %zmm26, %zmm2413552; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm8 = zmm5 ^ (zmm4 & (zmm8 ^ zmm5))13553; AVX512-FCP-NEXT: vmovdqa (%r9), %xmm413554; AVX512-FCP-NEXT: vmovdqa (%r8), %xmm513555; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm3 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]13556; AVX512-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill13557; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]13558; AVX512-FCP-NEXT: vpshufb %xmm0, %xmm4, %xmm513559; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm4, %xmm413560; AVX512-FCP-NEXT: vmovdqa64 %xmm7, %xmm2613561; AVX512-FCP-NEXT: vpermt2q %zmm5, %zmm29, %zmm413562; AVX512-FCP-NEXT: vpbroadcastd (%rax), %ymm513563; AVX512-FCP-NEXT: vpbroadcastd 4(%rax), %ymm613564; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm5, %zmm2913565; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm29 = zmm29 ^ (zmm20 & (zmm29 ^ zmm4))13566; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm29 = zmm29 ^ (zmm2 & (zmm29 ^ zmm8))13567; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload13568; AVX512-FCP-NEXT: vmovdqa64 %ymm21, %ymm013569; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm7, %ymm213570; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm21 # 32-byte Reload13571; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm21[2,2,2,2,6,6,6,6]13572; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm2[1],ymm4[2,3],ymm2[4],ymm4[5,6,7,8],ymm2[9],ymm4[10,11],ymm2[12],ymm4[13,14,15]13573; AVX512-FCP-NEXT: vpshufb %ymm9, %ymm7, %ymm413574; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm21[1,1,1,1,5,5,5,5]13575; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm5[2],ymm4[3,4],ymm5[5],ymm4[6,7,8,9],ymm5[10],ymm4[11,12],ymm5[13],ymm4[14,15]13576; AVX512-FCP-NEXT: vpermt2q %zmm2, %zmm19, %zmm413577; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload13578; AVX512-FCP-NEXT: vpshufb %ymm10, %ymm3, %ymm213579; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm20 # 32-byte Reload13580; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm20[2,2,2,2,6,6,6,6]13581; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm2[0,1],ymm5[2],ymm2[3,4],ymm5[5],ymm2[6,7,8,9],ymm5[10],ymm2[11,12],ymm5[13],ymm2[14,15]13582; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} ymm2 = ymm3[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]13583; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm20[0,1,1,3,4,5,5,7]13584; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm6[0,1],ymm2[2],ymm6[3,4],ymm2[5],ymm6[6,7,8,9],ymm2[10],ymm6[11,12],ymm2[13],ymm6[14,15]13585; AVX512-FCP-NEXT: vpermt2q %zmm5, %zmm11, %zmm213586; AVX512-FCP-NEXT: vmovdqa 96(%rcx), %xmm1213587; AVX512-FCP-NEXT: vmovdqa 96(%rdx), %xmm1113588; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3]13589; AVX512-FCP-NEXT: vpshufb %xmm14, %xmm5, %xmm513590; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm9 = [0,2,2,3,8,9,9,0]13591; AVX512-FCP-NEXT: vpermt2q %zmm5, %zmm9, %zmm1313592; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm10 = [u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]13593; AVX512-FCP-NEXT: vmovdqa64 %ymm22, %ymm513594; AVX512-FCP-NEXT: vpshufb %ymm10, %ymm5, %ymm513595; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm28[3,3,3,3,7,7,7,7]13596; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm6[0,1,2],ymm5[3],ymm6[4,5],ymm5[6],ymm6[7,8,9,10],ymm5[11],ymm6[12,13],ymm5[14],ymm6[15]13597; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm4 ^ (zmm1 & (zmm2 ^ zmm4))13598; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload13599; AVX512-FCP-NEXT: vprold $16, %ymm5, %ymm113600; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm17 # 32-byte Reload13601; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm17[1,2,2,3,5,6,6,7]13602; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm4[0,1],ymm1[2],ymm4[3,4],ymm1[5],ymm4[6,7,8,9],ymm1[10],ymm4[11,12],ymm1[13],ymm4[14,15]13603; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21]13604; AVX512-FCP-NEXT: vmovdqa64 %ymm5, %ymm2813605; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm17[0,0,2,1,4,4,6,5]13606; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1,2],ymm5[3],ymm4[4,5],ymm5[6],ymm4[7,8,9,10],ymm5[11],ymm4[12,13],ymm5[14],ymm4[15]13607; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm27, %zmm413608; AVX512-FCP-NEXT: vmovdqa 96(%rsi), %xmm113609; AVX512-FCP-NEXT: vmovdqa 96(%rdi), %xmm513610; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm5[0],xmm1[0],xmm5[1],xmm1[1],xmm5[2],xmm1[2],xmm5[3],xmm1[3]13611; AVX512-FCP-NEXT: vpshufb %xmm15, %xmm6, %xmm613612; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm19 = [2,1,3,3,8,8,9,9]13613; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm19, %zmm813614; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm8 = zmm13 ^ (zmm23 & (zmm8 ^ zmm13))13615; AVX512-FCP-NEXT: vbroadcasti32x4 {{.*#+}} ymm22 = [26,27,28,29,26,27,28,29,26,27,28,29,30,31,30,31,26,27,28,29,26,27,28,29,26,27,28,29,30,31,30,31]13616; AVX512-FCP-NEXT: # ymm22 = mem[0,1,2,3,0,1,2,3]13617; AVX512-FCP-NEXT: vmovdqa64 %ymm22, %ymm013618; AVX512-FCP-NEXT: vmovdqa64 %ymm18, %ymm613619; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm6, %ymm013620; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm6 = ymm25[3,3,3,3,7,7,7,7]13621; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm0[0,1],ymm6[2],ymm0[3,4],ymm6[5],ymm0[6,7,8,9],ymm6[10],ymm0[11,12],ymm6[13],ymm0[14,15]13622; AVX512-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm0 = [0,5,4,0,0,6,5,0,0,5,4,0,0,6,5,0]13623; AVX512-FCP-NEXT: # zmm0 = mem[0,1,2,3,0,1,2,3]13624; AVX512-FCP-NEXT: vpermd %zmm16, %zmm0, %zmm1613625; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm16 = zmm16 ^ (mem & (zmm16 ^ zmm4))13626; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm16 = zmm16 ^ (mem & (zmm16 ^ zmm2))13627; AVX512-FCP-NEXT: vmovdqa 32(%rcx), %xmm213628; AVX512-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill13629; AVX512-FCP-NEXT: vmovdqa 32(%rdx), %xmm013630; AVX512-FCP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill13631; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]13632; AVX512-FCP-NEXT: vpshufb %xmm14, %xmm0, %xmm413633; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm3[14,15,12,13,u,u,u,u,u,u,u,u,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29,u,u,u,u]13634; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm20[3,3,3,3,7,7,7,7]13635; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5,6,7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13,14,15]13636; AVX512-FCP-NEXT: vpermt2q %zmm4, %zmm9, %zmm013637; AVX512-FCP-NEXT: vpshufb %ymm10, %ymm7, %ymm213638; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm21[3,3,3,3,7,7,7,7]13639; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm14 = ymm3[0,1,2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8,9,10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]13640; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %xmm1013641; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %xmm913642; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3]13643; AVX512-FCP-NEXT: vpshufb %xmm15, %xmm2, %xmm213644; AVX512-FCP-NEXT: vmovdqa64 %xmm15, %xmm2713645; AVX512-FCP-NEXT: vpermt2q %zmm2, %zmm19, %zmm1413646; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm21 = [2,2,2,3,8,8,8,9]13647; AVX512-FCP-NEXT: vmovdqa 96(%r9), %xmm413648; AVX512-FCP-NEXT: vmovdqa 96(%r8), %xmm313649; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm7 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]13650; AVX512-FCP-NEXT: vmovdqa64 %xmm26, %xmm1313651; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm7, %xmm1513652; AVX512-FCP-NEXT: vpermt2q %zmm15, %zmm21, %zmm613653; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm14 = zmm0 ^ (zmm23 & (zmm14 ^ zmm0))13654; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm18 = [6,7,3,3,7,7,6,7]13655; AVX512-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm18, %ymm0 # 32-byte Folded Reload13656; AVX512-FCP-NEXT: vpbroadcastd 96(%rax), %ymm1913657; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm19, %zmm0, %zmm1913658; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm23 = [65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535]13659; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm19 = zmm19 ^ (zmm23 & (zmm19 ^ zmm6))13660; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm26 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]13661; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm19 = zmm19 ^ (zmm26 & (zmm19 ^ zmm8))13662; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm1[4],xmm5[4],xmm1[5],xmm5[5],xmm1[6],xmm5[6],xmm1[7],xmm5[7]13663; AVX512-FCP-NEXT: vprold $16, %xmm1, %xmm013664; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm1 = xmm5[1,1,2,3]13665; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1],xmm0[2],xmm1[3,4],xmm0[5],xmm1[6,7]13666; AVX512-FCP-NEXT: vmovdqa64 %ymm22, %ymm113667; AVX512-FCP-NEXT: vmovdqa64 %ymm28, %ymm513668; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm5, %ymm113669; AVX512-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm17[3,3,3,3,7,7,7,7]13670; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm5[2],ymm1[3,4],ymm5[5],ymm1[6,7,8,9],ymm5[10],ymm1[11,12],ymm5[13],ymm1[14,15]13671; AVX512-FCP-NEXT: vmovdqa 32(%r9), %xmm813672; AVX512-FCP-NEXT: vmovdqa 32(%r8), %xmm613673; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],xmm8[3]13674; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm5, %xmm1513675; AVX512-FCP-NEXT: vpermt2q %zmm15, %zmm21, %zmm113676; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm13 = [4,5,2,3,4,5,6,7,8,9,10,11,10,11,8,9]13677; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm2, %xmm213678; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm21 = [0,0,0,1,8,8,9,0]13679; AVX512-FCP-NEXT: vpermt2q %zmm2, %zmm21, %zmm013680; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm11[4],xmm12[4],xmm11[5],xmm12[5],xmm11[6],xmm12[6],xmm11[7],xmm12[7]13681; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} xmm20 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]13682; AVX512-FCP-NEXT: vmovdqa64 %xmm20, %xmm1513683; AVX512-FCP-NEXT: vpshufb %xmm15, %xmm12, %xmm1213684; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm11 = xmm11[1,1,2,2]13685; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm12 = xmm11[0],xmm12[1],xmm11[2,3],xmm12[4],xmm11[5,6],xmm12[7]13686; AVX512-FCP-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,2,3,3,4,5,6,7]13687; AVX512-FCP-NEXT: vmovdqa64 %zmm24, %zmm2513688; AVX512-FCP-NEXT: vpermt2q %zmm2, %zmm24, %zmm1213689; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm28 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]13690; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm12 = zmm0 ^ (zmm28 & (zmm12 ^ zmm0))13691; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]13692; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload13693; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm22 # 32-byte Reload13694; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm22 = ymm22 ^ (ymm23 & (ymm22 ^ ymm2))13695; AVX512-FCP-NEXT: vextracti64x4 $1, %zmm2, %ymm213696; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} xmm24 = [0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]13697; AVX512-FCP-NEXT: vmovdqa64 %xmm24, %xmm313698; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm7, %xmm313699; AVX512-FCP-NEXT: vmovdqa64 %xmm27, %xmm1513700; AVX512-FCP-NEXT: vpshufb %xmm15, %xmm0, %xmm013701; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm27 = [8,9,9,0,0,0,1,1]13702; AVX512-FCP-NEXT: vpermt2q %zmm3, %zmm27, %zmm013703; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload13704; AVX512-FCP-NEXT: vpshufhw {{.*#+}} ymm3 = ymm4[0,1,2,3,5,5,7,6,8,9,10,11,13,13,15,14]13705; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[3,3,3,3]13706; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,24,25,22,23,22,23,u,u,u,u,u,u,u,u]13707; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,2]13708; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload13709; AVX512-FCP-NEXT: vpshufb %xmm15, %xmm7, %xmm713710; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm7[0,0,1,1]13711; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload13712; AVX512-FCP-NEXT: vpshufb %xmm15, %xmm7, %xmm713713; AVX512-FCP-NEXT: vmovdqa64 %xmm15, %xmm3113714; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm17 = ymm7[0,0,1,1]13715; AVX512-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm18, %ymm7 # 32-byte Folded Reload13716; AVX512-FCP-NEXT: vpbroadcastd 32(%rax), %ymm1513717; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm15, %zmm7, %zmm713718; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 ^ (zmm23 & (zmm7 ^ zmm1))13719; AVX512-FCP-NEXT: vpbroadcastd 100(%rax), %ymm113720; AVX512-FCP-NEXT: vpbroadcastd 104(%rax), %ymm1513721; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm15, %zmm1, %zmm1513722; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm18 = [65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535]13723; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm15 = zmm15 ^ (zmm18 & (zmm15 ^ zmm0))13724; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 ^ (zmm26 & (zmm7 ^ zmm14))13725; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm0 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0]13726; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm15 = zmm15 ^ (zmm0 & (zmm15 ^ zmm12))13727; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm1 = xmm9[4],xmm10[4],xmm9[5],xmm10[5],xmm9[6],xmm10[6],xmm9[7],xmm10[7]13728; AVX512-FCP-NEXT: vprold $16, %xmm9, %xmm913729; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm10 = xmm10[1,1,2,3]13730; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm9 = xmm10[0,1],xmm9[2],xmm10[3,4],xmm9[5],xmm10[6,7]13731; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm1, %xmm113732; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm21, %zmm913733; AVX512-FCP-NEXT: vmovdqa64 %xmm20, %xmm113734; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload13735; AVX512-FCP-NEXT: vpshufb %xmm1, %xmm10, %xmm113736; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload13737; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm10 = xmm12[4],xmm10[4],xmm12[5],xmm10[5],xmm12[6],xmm10[6],xmm12[7],xmm10[7]13738; AVX512-FCP-NEXT: vpshufd {{.*#+}} xmm12 = xmm12[1,1,2,2]13739; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm12[0],xmm1[1],xmm12[2,3],xmm1[4],xmm12[5,6],xmm1[7]13740; AVX512-FCP-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[0,2,3,3,4,5,6,7]13741; AVX512-FCP-NEXT: vpermt2q %zmm10, %zmm25, %zmm113742; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm9 ^ (zmm28 & (zmm1 ^ zmm9))13743; AVX512-FCP-NEXT: vmovdqa64 %xmm24, %xmm913744; AVX512-FCP-NEXT: vpshufb %xmm9, %xmm5, %xmm513745; AVX512-FCP-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm6[4],xmm8[4],xmm6[5],xmm8[5],xmm6[6],xmm8[6],xmm6[7],xmm8[7]13746; AVX512-FCP-NEXT: vmovdqa64 %xmm31, %xmm813747; AVX512-FCP-NEXT: vpshufb %xmm8, %xmm6, %xmm613748; AVX512-FCP-NEXT: vpermt2q %zmm5, %zmm27, %zmm613749; AVX512-FCP-NEXT: vpbroadcastd 36(%rax), %ymm513750; AVX512-FCP-NEXT: vpbroadcastd 40(%rax), %ymm813751; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm5, %zmm513752; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 ^ (zmm18 & (zmm5 ^ zmm6))13753; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 ^ (zmm0 & (zmm5 ^ zmm1))13754; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm0 = [65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535]13755; AVX512-FCP-NEXT: vpternlogd {{.*#+}} ymm2 = m32bcst ^ (ymm0 & (ymm2 ^ m32bcst))13756; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm0 = [0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535]13757; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm3 = ymm3 ^ (ymm0 & (ymm3 ^ ymm2))13758; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm6 = [65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535]13759; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm4 = ymm4 ^ (ymm6 & (ymm4 ^ ymm22))13760; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm1 = zmm4[0,1,2,3],zmm3[0,1,2,3]13761; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [0,13,0,0,0,14,0,0,14,0,0,0,15,0,0,15]13762; AVX512-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm2 # 64-byte Folded Reload13763; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm1))13764; AVX512-FCP-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm11, %zmm1 # 32-byte Folded Reload13765; AVX512-FCP-NEXT: vpternlogq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm6, %zmm1 # 64-byte Folded Reload13766; AVX512-FCP-NEXT: # zmm1 = (zmm1 & zmm6) | mem13767; AVX512-FCP-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm17, %zmm3 # 32-byte Folded Reload13768; AVX512-FCP-NEXT: vpternlogq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm6, %zmm3 # 64-byte Folded Reload13769; AVX512-FCP-NEXT: # zmm3 = (zmm3 & zmm6) | mem13770; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload13771; AVX512-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload13772; AVX512-FCP-NEXT: # xmm4 = xmm4[4],mem[4],xmm4[5],mem[5],xmm4[6],mem[6],xmm4[7],mem[7]13773; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload13774; AVX512-FCP-NEXT: vpunpckhwd (%rsp), %xmm6, %xmm6 # 16-byte Folded Reload13775; AVX512-FCP-NEXT: # xmm6 = xmm6[4],mem[4],xmm6[5],mem[5],xmm6[6],mem[6],xmm6[7],mem[7]13776; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload13777; AVX512-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm8, %xmm8 # 16-byte Folded Reload13778; AVX512-FCP-NEXT: # xmm8 = xmm8[4],mem[4],xmm8[5],mem[5],xmm8[6],mem[6],xmm8[7],mem[7]13779; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload13780; AVX512-FCP-NEXT: vpunpckhwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm9, %xmm9 # 16-byte Folded Reload13781; AVX512-FCP-NEXT: # xmm9 = xmm9[4],mem[4],xmm9[5],mem[5],xmm9[6],mem[6],xmm9[7],mem[7]13782; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm6, %xmm613783; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm9, %xmm913784; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload13785; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} ymm10 = ymm10[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]13786; AVX512-FCP-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Folded Reload13787; AVX512-FCP-NEXT: # ymm11 = mem[0,1,1,3,4,5,5,7]13788; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm11[0,1],ymm10[2],ymm11[3,4],ymm10[5],ymm11[6,7,8,9],ymm10[10],ymm11[11,12],ymm10[13],ymm11[14,15]13789; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload13790; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm11 = ymm11[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]13791; AVX512-FCP-NEXT: vpshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Folded Reload13792; AVX512-FCP-NEXT: # ymm12 = mem[1,1,1,1,5,5,5,5]13793; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm11[0,1],ymm12[2],ymm11[3,4],ymm12[5],ymm11[6,7,8,9],ymm12[10],ymm11[11,12],ymm12[13],ymm11[14,15]13794; AVX512-FCP-NEXT: vmovdqa 32(%rax), %ymm1213795; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm13 = [0,1,4,5,4,5,5,7]13796; AVX512-FCP-NEXT: vpermd %ymm12, %ymm13, %ymm1313797; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[12,13],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm12[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm12[16,17],zero,zero13798; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm14 = [65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]13799; AVX512-FCP-NEXT: vpandn %ymm13, %ymm14, %ymm1313800; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm13, %zmm12, %zmm1213801; AVX512-FCP-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,2,3,3,4,5,6,7]13802; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,2,1]13803; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,3]13804; AVX512-FCP-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[0,2,3,3,4,5,6,7]13805; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,2,1]13806; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,3]13807; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,1,3,2]13808; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,2,3]13809; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm13 # 64-byte Reload13810; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm14 # 64-byte Reload13811; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (mem & (zmm14 ^ zmm13))13812; AVX512-FCP-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm4, %zmm4 # 32-byte Folded Reload13813; AVX512-FCP-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm6, %zmm6 # 32-byte Folded Reload13814; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm4 ^ (zmm28 & (zmm6 ^ zmm4))13815; AVX512-FCP-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm8, %zmm4 # 32-byte Folded Reload13816; AVX512-FCP-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm9, %zmm8 # 32-byte Folded Reload13817; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm8 = zmm4 ^ (zmm28 & (zmm8 ^ zmm4))13818; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm4 = [0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]13819; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm1 ^ (zmm4 & (zmm6 ^ zmm1))13820; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm8 = zmm3 ^ (zmm4 & (zmm8 ^ zmm3))13821; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload13822; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm10, %zmm1, %zmm113823; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload13824; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm11, %zmm3, %zmm313825; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm1 ^ (mem & (zmm3 ^ zmm1))13826; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload13827; AVX512-FCP-NEXT: vpternlogq $248, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm1 # 64-byte Folded Reload13828; AVX512-FCP-NEXT: # zmm1 = zmm1 | (zmm0 & mem)13829; AVX512-FCP-NEXT: vpternlogq $248, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm12 # 64-byte Folded Reload13830; AVX512-FCP-NEXT: # zmm12 = zmm12 | (zmm0 & mem)13831; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm12 = zmm12 ^ (mem & (zmm12 ^ zmm3))13832; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax13833; AVX512-FCP-NEXT: vmovdqa64 %zmm12, 320(%rax)13834; AVX512-FCP-NEXT: vmovdqa64 %zmm5, 256(%rax)13835; AVX512-FCP-NEXT: vmovdqa64 %zmm7, 192(%rax)13836; AVX512-FCP-NEXT: vmovdqa64 %zmm16, 128(%rax)13837; AVX512-FCP-NEXT: vmovdqa64 %zmm29, (%rax)13838; AVX512-FCP-NEXT: vmovdqa64 %zmm30, 448(%rax)13839; AVX512-FCP-NEXT: vmovdqa64 %zmm15, 704(%rax)13840; AVX512-FCP-NEXT: vmovdqa64 %zmm19, 640(%rax)13841; AVX512-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload13842; AVX512-FCP-NEXT: vmovaps %zmm0, 576(%rax)13843; AVX512-FCP-NEXT: vmovdqa64 %zmm14, 384(%rax)13844; AVX512-FCP-NEXT: vmovdqa64 %zmm8, 64(%rax)13845; AVX512-FCP-NEXT: vmovdqa64 %zmm6, 512(%rax)13846; AVX512-FCP-NEXT: vmovdqa64 %zmm2, 832(%rax)13847; AVX512-FCP-NEXT: vmovdqa64 %zmm1, 768(%rax)13848; AVX512-FCP-NEXT: addq $1480, %rsp # imm = 0x5C813849; AVX512-FCP-NEXT: vzeroupper13850; AVX512-FCP-NEXT: retq13851;13852; AVX512DQ-LABEL: store_i16_stride7_vf64:13853; AVX512DQ: # %bb.0:13854; AVX512DQ-NEXT: subq $2648, %rsp # imm = 0xA5813855; AVX512DQ-NEXT: vmovdqa 96(%rcx), %ymm613856; AVX512DQ-NEXT: vmovdqa 96(%rdx), %ymm1513857; AVX512DQ-NEXT: vmovdqa 96(%rdi), %ymm713858; AVX512DQ-NEXT: vmovdqa 96(%rsi), %ymm813859; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128]13860; AVX512DQ-NEXT: vpshufb %ymm0, %ymm6, %ymm213861; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm1 = [u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u]13862; AVX512DQ-NEXT: vpshufb %ymm1, %ymm15, %ymm313863; AVX512DQ-NEXT: vporq %ymm2, %ymm3, %ymm1813864; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm3 = [128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128,128,128,128,128]13865; AVX512DQ-NEXT: vpshufb %ymm3, %ymm8, %ymm213866; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm12 = [12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u,16,17,18,19]13867; AVX512DQ-NEXT: vpshufb %ymm12, %ymm7, %ymm413868; AVX512DQ-NEXT: vporq %ymm2, %ymm4, %ymm1913869; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm11 = [128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128]13870; AVX512DQ-NEXT: vmovdqa 64(%r9), %ymm213871; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13872; AVX512DQ-NEXT: vpshufb %ymm11, %ymm2, %ymm213873; AVX512DQ-NEXT: vmovdqa 64(%r8), %ymm413874; AVX512DQ-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13875; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm9 = [u,u,u,u,u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u]13876; AVX512DQ-NEXT: vpshufb %ymm9, %ymm4, %ymm413877; AVX512DQ-NEXT: vpor %ymm2, %ymm4, %ymm213878; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13879; AVX512DQ-NEXT: vmovdqa 64(%rcx), %ymm413880; AVX512DQ-NEXT: vpshufb %ymm0, %ymm4, %ymm213881; AVX512DQ-NEXT: vmovdqa64 %ymm4, %ymm2913882; AVX512DQ-NEXT: vmovdqa 64(%rdx), %ymm513883; AVX512DQ-NEXT: vpshufb %ymm1, %ymm5, %ymm413884; AVX512DQ-NEXT: vmovdqa64 %ymm5, %ymm2813885; AVX512DQ-NEXT: vpor %ymm2, %ymm4, %ymm213886; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13887; AVX512DQ-NEXT: vmovdqa 64(%rsi), %ymm413888; AVX512DQ-NEXT: vpshufb %ymm3, %ymm4, %ymm213889; AVX512DQ-NEXT: vmovdqa64 %ymm4, %ymm2413890; AVX512DQ-NEXT: vmovdqa 64(%rdi), %ymm513891; AVX512DQ-NEXT: vpshufb %ymm12, %ymm5, %ymm413892; AVX512DQ-NEXT: vmovdqa64 %ymm5, %ymm2313893; AVX512DQ-NEXT: vpor %ymm2, %ymm4, %ymm213894; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13895; AVX512DQ-NEXT: vmovdqa (%r9), %ymm213896; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13897; AVX512DQ-NEXT: vpshufb %ymm11, %ymm2, %ymm213898; AVX512DQ-NEXT: vmovdqa (%r8), %ymm413899; AVX512DQ-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13900; AVX512DQ-NEXT: vpshufb %ymm9, %ymm4, %ymm413901; AVX512DQ-NEXT: vpor %ymm2, %ymm4, %ymm213902; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13903; AVX512DQ-NEXT: vmovdqa (%rcx), %ymm213904; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13905; AVX512DQ-NEXT: vpshufb %ymm0, %ymm2, %ymm213906; AVX512DQ-NEXT: vmovdqa (%rdx), %ymm413907; AVX512DQ-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13908; AVX512DQ-NEXT: vpshufb %ymm1, %ymm4, %ymm413909; AVX512DQ-NEXT: vpor %ymm2, %ymm4, %ymm213910; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13911; AVX512DQ-NEXT: vmovdqa (%rsi), %ymm213912; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13913; AVX512DQ-NEXT: vpshufb %ymm3, %ymm2, %ymm213914; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm413915; AVX512DQ-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13916; AVX512DQ-NEXT: vpshufb %ymm12, %ymm4, %ymm413917; AVX512DQ-NEXT: vpor %ymm2, %ymm4, %ymm213918; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13919; AVX512DQ-NEXT: vmovdqa 32(%rcx), %ymm413920; AVX512DQ-NEXT: vpshufb %ymm0, %ymm4, %ymm013921; AVX512DQ-NEXT: vmovdqa 32(%rdx), %ymm213922; AVX512DQ-NEXT: vpshufb %ymm1, %ymm2, %ymm113923; AVX512DQ-NEXT: vpor %ymm0, %ymm1, %ymm013924; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13925; AVX512DQ-NEXT: vmovdqa 32(%rsi), %ymm513926; AVX512DQ-NEXT: vpshufb %ymm3, %ymm5, %ymm013927; AVX512DQ-NEXT: vmovdqa 32(%rdi), %ymm313928; AVX512DQ-NEXT: vpshufb %ymm12, %ymm3, %ymm113929; AVX512DQ-NEXT: vpor %ymm0, %ymm1, %ymm013930; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13931; AVX512DQ-NEXT: vmovdqa 32(%r8), %ymm113932; AVX512DQ-NEXT: vpshufb %ymm9, %ymm1, %ymm913933; AVX512DQ-NEXT: vmovdqa 32(%r9), %ymm013934; AVX512DQ-NEXT: vpshufb %ymm11, %ymm0, %ymm1013935; AVX512DQ-NEXT: vpor %ymm10, %ymm9, %ymm913936; AVX512DQ-NEXT: vmovdqu64 %zmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13937; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27,22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27]13938; AVX512DQ-NEXT: # ymm10 = mem[0,1,0,1]13939; AVX512DQ-NEXT: vpshufb %ymm10, %ymm6, %ymm913940; AVX512DQ-NEXT: vmovdqa64 %ymm10, %ymm2713941; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm15[2,2,2,2,6,6,6,6]13942; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm9 = ymm9[0,1],ymm10[2],ymm9[3,4],ymm10[5],ymm9[6,7,8,9],ymm10[10],ymm9[11,12],ymm10[13],ymm9[14,15]13943; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,2,3]13944; AVX512DQ-NEXT: vmovdqu64 %zmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13945; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm9 = ymm6[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]13946; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,2,2,2,6,6,6,6]13947; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm15[3,3,3,3,7,7,7,7]13948; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0],ymm9[1],ymm10[2,3],ymm9[4],ymm10[5,6,7,8],ymm9[9],ymm10[10,11],ymm9[12],ymm10[13,14,15]13949; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,2,2,3]13950; AVX512DQ-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13951; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm9 = ymm8[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]13952; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,2,2,2,6,6,6,6]13953; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm7[2,2,2,2,6,6,6,6]13954; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0],ymm9[1],ymm10[2,3],ymm9[4],ymm10[5,6,7,8],ymm9[9],ymm10[10,11],ymm9[12],ymm10[13,14,15]13955; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,2,2,3]13956; AVX512DQ-NEXT: vmovdqu64 %zmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill13957; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm9 = ymm8[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]13958; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm9 = ymm9[2,2,2,2,6,6,6,6]13959; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm7[3,3,3,3,7,7,7,7]13960; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0,1,2],ymm9[3],ymm10[4,5],ymm9[6],ymm10[7,8,9,10],ymm9[11],ymm10[12,13],ymm9[14],ymm10[15]13961; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,1,3,3]13962; AVX512DQ-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13963; AVX512DQ-NEXT: vmovdqa 96(%r9), %ymm913964; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm10 = ymm9[0,1,2,3,5,5,7,6,8,9,10,11,13,13,15,14]13965; AVX512DQ-NEXT: vpermq {{.*#+}} ymm21 = ymm10[3,3,3,3]13966; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm9[2,1,2,3,6,5,6,7]13967; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm10 = ymm10[0,0,3,3,4,5,6,7,8,8,11,11,12,13,14,15]13968; AVX512DQ-NEXT: vpermq {{.*#+}} ymm20 = ymm10[2,2,2,2]13969; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm15[0,1,1,3,4,5,5,7]13970; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm6 = ymm6[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]13971; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm6 = ymm6[0,0,0,0,4,4,4,4]13972; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm6 = ymm10[0,1],ymm6[2],ymm10[3,4],ymm6[5],ymm10[6,7,8,9],ymm6[10],ymm10[11,12],ymm6[13],ymm10[14,15]13973; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,1,3,2]13974; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm7 = ymm7[1,1,1,1,5,5,5,5]13975; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm8 = ymm8[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]13976; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[0,0,2,1,4,4,6,5]13977; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm7 = ymm8[0,1],ymm7[2],ymm8[3,4],ymm7[5],ymm8[6,7,8,9],ymm7[10],ymm8[11,12],ymm7[13],ymm8[14,15]13978; AVX512DQ-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,2,3]13979; AVX512DQ-NEXT: vprold $16, %ymm9, %ymm813980; AVX512DQ-NEXT: vpshufb %ymm11, %ymm9, %ymm913981; AVX512DQ-NEXT: vinserti64x4 $1, %ymm6, %zmm18, %zmm613982; AVX512DQ-NEXT: vinserti64x4 $1, %ymm7, %zmm19, %zmm713983; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm7 = zmm6 ^ (mem & (zmm7 ^ zmm6))13984; AVX512DQ-NEXT: vmovdqa 96(%r8), %ymm613985; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm6[1,2,2,3,5,6,6,7]13986; AVX512DQ-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill13987; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm6[0,0,2,1,4,4,6,5]13988; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[u,u],zero,zero,zero,zero,zero,zero,zero,zero,ymm6[14,15,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero,ymm6[16,17,u,u,u,u],zero,zero13989; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm12 = [65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]13990; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm6 = ymm6 | (ymm7 & ymm12)13991; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm11 = [65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535]13992; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm9 = ymm9 | (ymm6 & ymm11)13993; AVX512DQ-NEXT: vextracti64x4 $1, %zmm7, %ymm613994; AVX512DQ-NEXT: vpermq {{.*#+}} ymm7 = ymm10[2,1,3,3]13995; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm10 = [65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]13996; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm7 = ymm7 ^ (ymm10 & (ymm7 ^ ymm6))13997; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm8[2,2,2,2]13998; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm8 = [65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535]13999; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm6 = ymm6 ^ (ymm8 & (ymm6 ^ ymm7))14000; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm6 = zmm9[0,1,2,3],zmm6[0,1,2,3]14001; AVX512DQ-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14002; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax14003; AVX512DQ-NEXT: vmovdqa 96(%rax), %ymm614004; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm7 = ymm6[0,1,1,3,4,5,5,7]14005; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm10 = [12,13,128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128]14006; AVX512DQ-NEXT: vpshufb %ymm10, %ymm6, %ymm614007; AVX512DQ-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,2,2,3]14008; AVX512DQ-NEXT: vpandn %ymm7, %ymm12, %ymm714009; AVX512DQ-NEXT: vmovdqa64 %zmm12, %zmm1714010; AVX512DQ-NEXT: vinserti64x4 $1, %ymm7, %zmm6, %zmm614011; AVX512DQ-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14012; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm30 = [65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535]14013; AVX512DQ-NEXT: vpbroadcastd 72(%rax), %ymm614014; AVX512DQ-NEXT: vpandnq %ymm6, %ymm30, %ymm614015; AVX512DQ-NEXT: vmovdqa 64(%rax), %ymm714016; AVX512DQ-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14017; AVX512DQ-NEXT: vpshufb %ymm10, %ymm7, %ymm714018; AVX512DQ-NEXT: vinserti64x4 $1, %ymm7, %zmm6, %zmm614019; AVX512DQ-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14020; AVX512DQ-NEXT: vmovdqa 64(%r9), %xmm714021; AVX512DQ-NEXT: vmovdqa 64(%r8), %xmm814022; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]14023; AVX512DQ-NEXT: vmovdqa64 %xmm8, %xmm1814024; AVX512DQ-NEXT: vmovdqa64 %xmm7, %xmm2214025; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]14026; AVX512DQ-NEXT: vpshufb %xmm14, %xmm6, %xmm614027; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]14028; AVX512DQ-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14029; AVX512DQ-NEXT: vmovdqa 64(%rcx), %xmm914030; AVX512DQ-NEXT: vmovdqa 64(%rdx), %xmm714031; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm8 = xmm7[4],xmm9[4],xmm7[5],xmm9[5],xmm7[6],xmm9[6],xmm7[7],xmm9[7]14032; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[0,2,3,3,4,5,6,7]14033; AVX512DQ-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,2,1]14034; AVX512DQ-NEXT: vmovdqu64 %zmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14035; AVX512DQ-NEXT: vmovdqa 64(%rdi), %xmm1114036; AVX512DQ-NEXT: vmovdqa 64(%rsi), %xmm814037; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm8[4],xmm11[4],xmm8[5],xmm11[5],xmm8[6],xmm11[6],xmm8[7],xmm11[7]14038; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[2,1,2,3,4,5,6,7]14039; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,5,5,4]14040; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,0,1,3]14041; AVX512DQ-NEXT: vmovdqu64 %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14042; AVX512DQ-NEXT: vpbroadcastd 8(%rax), %ymm1214043; AVX512DQ-NEXT: vpandnq %ymm12, %ymm30, %ymm1214044; AVX512DQ-NEXT: vmovdqa (%rax), %ymm1314045; AVX512DQ-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14046; AVX512DQ-NEXT: vpshufb %ymm10, %ymm13, %ymm1314047; AVX512DQ-NEXT: vinserti64x4 $1, %ymm13, %zmm12, %zmm1214048; AVX512DQ-NEXT: vmovdqu64 %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14049; AVX512DQ-NEXT: vmovdqa (%r9), %xmm614050; AVX512DQ-NEXT: vmovdqa (%r8), %xmm1314051; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm13[4],xmm6[4],xmm13[5],xmm6[5],xmm13[6],xmm6[6],xmm13[7],xmm6[7]14052; AVX512DQ-NEXT: vmovdqa64 %xmm13, %xmm2514053; AVX512DQ-NEXT: vmovdqa64 %xmm6, %xmm2614054; AVX512DQ-NEXT: vpshufb %xmm14, %xmm12, %xmm1214055; AVX512DQ-NEXT: vmovdqa64 %xmm14, %xmm3114056; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,0,1,1]14057; AVX512DQ-NEXT: vmovdqu64 %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14058; AVX512DQ-NEXT: vmovdqa (%rcx), %xmm1514059; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm1314060; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm13[4],xmm15[4],xmm13[5],xmm15[5],xmm13[6],xmm15[6],xmm13[7],xmm15[7]14061; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[0,2,3,3,4,5,6,7]14062; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,0,2,1]14063; AVX512DQ-NEXT: vmovdqu64 %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14064; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm614065; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm1414066; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm12 = xmm14[4],xmm6[4],xmm14[5],xmm6[5],xmm14[6],xmm6[6],xmm14[7],xmm6[7]14067; AVX512DQ-NEXT: vmovdqa64 %xmm14, %xmm1914068; AVX512DQ-NEXT: vmovdqa64 %xmm6, %xmm1614069; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[2,1,2,3,4,5,6,7]14070; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,5,5,4]14071; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,0,1,3]14072; AVX512DQ-NEXT: vmovdqu64 %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14073; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm12 = ymm4[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]14074; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm12 = ymm12[0,0,0,0,4,4,4,4]14075; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm14 = ymm2[0,1,1,3,4,5,5,7]14076; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm12 = ymm14[0,1],ymm12[2],ymm14[3,4],ymm12[5],ymm14[6,7,8,9],ymm12[10],ymm14[11,12],ymm12[13],ymm14[14,15]14077; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,1,3,2]14078; AVX512DQ-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14079; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm12 = ymm5[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]14080; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm12 = ymm12[0,0,2,1,4,4,6,5]14081; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm14 = ymm3[1,1,1,1,5,5,5,5]14082; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm12 = ymm12[0,1],ymm14[2],ymm12[3,4],ymm14[5],ymm12[6,7,8,9],ymm14[10],ymm12[11,12],ymm14[13],ymm12[14,15]14083; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,2,2,3]14084; AVX512DQ-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14085; AVX512DQ-NEXT: vmovdqa 32(%rax), %ymm1214086; AVX512DQ-NEXT: vpshufb %ymm10, %ymm12, %ymm1014087; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm12 = ymm12[0,1,1,3,4,5,5,7]14088; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,2,2,3]14089; AVX512DQ-NEXT: vpandnq %ymm12, %ymm17, %ymm1214090; AVX512DQ-NEXT: vinserti64x4 $1, %ymm12, %zmm10, %zmm1014091; AVX512DQ-NEXT: vmovdqu64 %zmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14092; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm10 = ymm0[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]14093; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm10 = ymm10[0,0,0,0,4,4,4,4]14094; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm12 = ymm1[0,0,2,1,4,4,6,5]14095; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm10 = ymm10[0,1,2],ymm12[3],ymm10[4,5],ymm12[6],ymm10[7,8,9,10],ymm12[11],ymm10[12,13],ymm12[14],ymm10[15]14096; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,3,3]14097; AVX512DQ-NEXT: vmovdqu64 %zmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14098; AVX512DQ-NEXT: vmovdqa64 %ymm27, %ymm1414099; AVX512DQ-NEXT: vpshufb %ymm14, %ymm4, %ymm1014100; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm12 = ymm2[2,2,2,2,6,6,6,6]14101; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm10 = ymm10[0,1],ymm12[2],ymm10[3,4],ymm12[5],ymm10[6,7,8,9],ymm12[10],ymm10[11,12],ymm12[13],ymm10[14,15]14102; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]14103; AVX512DQ-NEXT: vmovdqu64 %zmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14104; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[3,3,3,3,7,7,7,7]14105; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]14106; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,2,2,6,6,6,6]14107; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm4[1],ymm2[2,3],ymm4[4],ymm2[5,6,7,8],ymm4[9],ymm2[10,11],ymm4[12],ymm2[13,14,15]14108; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]14109; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14110; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm2 = ymm5[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]14111; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[2,2,2,2,6,6,6,6]14112; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm3[2,2,2,2,6,6,6,6]14113; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm2[1],ymm4[2,3],ymm2[4],ymm4[5,6,7,8],ymm2[9],ymm4[10,11],ymm2[12],ymm4[13,14,15]14114; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]14115; AVX512DQ-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14116; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm3[3,3,3,3,7,7,7,7]14117; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm3 = ymm5[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]14118; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[2,2,2,2,6,6,6,6]14119; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1,2],ymm3[3],ymm2[4,5],ymm3[6],ymm2[7,8,9,10],ymm3[11],ymm2[12,13],ymm3[14],ymm2[15]14120; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,1,3,3]14121; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14122; AVX512DQ-NEXT: vprold $16, %ymm0, %ymm214123; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm3 = ymm1[1,2,2,3,5,6,6,7]14124; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0,1],ymm2[2],ymm3[3,4],ymm2[5],ymm3[6,7,8,9],ymm2[10],ymm3[11,12],ymm2[13],ymm3[14,15]14125; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,1,3,2]14126; AVX512DQ-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14127; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[3,3,3,3,7,7,7,7]14128; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]14129; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,2,2,3,6,6,6,7]14130; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]14131; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]14132; AVX512DQ-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14133; AVX512DQ-NEXT: vmovdqa64 %ymm24, %ymm614134; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm0 = ymm6[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]14135; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,0,2,1,4,4,6,5]14136; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm23[1,1,1,1,5,5,5,5]14137; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]14138; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]14139; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14140; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm0 = ymm6[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]14141; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,2,2,2,6,6,6,6]14142; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm23[2,2,2,2,6,6,6,6]14143; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5,6,7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13,14,15]14144; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]14145; AVX512DQ-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14146; AVX512DQ-NEXT: vmovdqa64 %ymm29, %ymm214147; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm0 = ymm2[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]14148; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4]14149; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm28[0,1,1,3,4,5,5,7]14150; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm0[2],ymm1[3,4],ymm0[5],ymm1[6,7,8,9],ymm0[10],ymm1[11,12],ymm0[13],ymm1[14,15]14151; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,2]14152; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14153; AVX512DQ-NEXT: vpshufb %ymm14, %ymm2, %ymm014154; AVX512DQ-NEXT: vmovdqa64 %ymm29, %ymm314155; AVX512DQ-NEXT: vmovdqa64 %ymm27, %ymm1014156; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm28[2,2,2,2,6,6,6,6]14157; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]14158; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]14159; AVX512DQ-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14160; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload14161; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm0 = ymm5[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]14162; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4]14163; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload14164; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm12[0,0,2,1,4,4,6,5]14165; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3],ymm0[4,5],ymm1[6],ymm0[7,8,9,10],ymm1[11],ymm0[12,13],ymm1[14],ymm0[15]14166; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]14167; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14168; AVX512DQ-NEXT: vprold $16, %ymm5, %ymm014169; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm12[1,2,2,3,5,6,6,7]14170; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm0[2],ymm1[3,4],ymm0[5],ymm1[6,7,8,9],ymm0[10],ymm1[11,12],ymm0[13],ymm1[14,15]14171; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,2]14172; AVX512DQ-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14173; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm28[3,3,3,3,7,7,7,7]14174; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm1 = ymm3[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]14175; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,2,2,6,6,6,6]14176; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5,6,7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13,14,15]14177; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]14178; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14179; AVX512DQ-NEXT: vmovdqa 96(%rcx), %xmm014180; AVX512DQ-NEXT: vmovdqa 96(%rdx), %xmm114181; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]14182; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,3,2,4,5,6,7]14183; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]14184; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14185; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm23[3,3,3,3,7,7,7,7]14186; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm3 = ymm6[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]14187; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[2,2,2,2,6,6,6,6]14188; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1,2],ymm3[3],ymm2[4,5],ymm3[6],ymm2[7,8,9,10],ymm3[11],ymm2[12,13],ymm3[14],ymm2[15]14189; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,1,3,3]14190; AVX512DQ-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14191; AVX512DQ-NEXT: vmovdqa 96(%rsi), %xmm214192; AVX512DQ-NEXT: vmovdqa 96(%rdi), %xmm314193; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]14194; AVX512DQ-NEXT: vmovdqa64 %xmm31, %xmm614195; AVX512DQ-NEXT: vpshufb %xmm6, %xmm4, %xmm414196; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]14197; AVX512DQ-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14198; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm4 = ymm12[3,3,3,3,7,7,7,7]14199; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm5 = ymm5[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]14200; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[2,2,2,3,6,6,6,7]14201; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm5[0,1],ymm4[2],ymm5[3,4],ymm4[5],ymm5[6,7,8,9],ymm4[10],ymm5[11,12],ymm4[13],ymm5[14,15]14202; AVX512DQ-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14203; AVX512DQ-NEXT: vprold $16, %xmm2, %xmm414204; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm5 = xmm3[1,1,2,3]14205; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0,1],xmm4[2],xmm5[3,4],xmm4[5],xmm5[6,7]14206; AVX512DQ-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14207; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]14208; AVX512DQ-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill14209; AVX512DQ-NEXT: vpbroadcastq {{.*#+}} xmm5 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]14210; AVX512DQ-NEXT: vpshufb %xmm5, %xmm0, %xmm214211; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm3 = xmm1[1,1,2,2]14212; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0],xmm2[1],xmm3[2,3],xmm2[4],xmm3[5,6],xmm2[7]14213; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14214; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]14215; AVX512DQ-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill14216; AVX512DQ-NEXT: vmovdqa 96(%r9), %xmm014217; AVX512DQ-NEXT: vmovdqa 96(%r8), %xmm114218; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]14219; AVX512DQ-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill14220; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]14221; AVX512DQ-NEXT: vmovdqa64 %xmm31, %xmm414222; AVX512DQ-NEXT: vpshufb %xmm4, %xmm0, %xmm114223; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm17 = [16,18,19,19,19,19,0,0,0,1,0,1,2,3,2,3]14224; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,6]14225; AVX512DQ-NEXT: vpermt2d %zmm2, %zmm17, %zmm114226; AVX512DQ-NEXT: vpbroadcastd 100(%rax), %ymm214227; AVX512DQ-NEXT: vpbroadcastd 104(%rax), %ymm314228; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm2, %zmm014229; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm1))14230; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14231; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm7[0],xmm9[0],xmm7[1],xmm9[1],xmm7[2],xmm9[2],xmm7[3],xmm9[3]14232; AVX512DQ-NEXT: vmovdqa %xmm5, %xmm1214233; AVX512DQ-NEXT: vpshufb %xmm5, %xmm9, %xmm214234; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm3 = xmm7[1,1,2,2]14235; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0],xmm2[1],xmm3[2,3],xmm2[4],xmm3[5,6],xmm2[7]14236; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,3,2,4,5,6,7]14237; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm3 = [16,16,17,17,17,17,0,0,0,1,0,1,2,3,2,3]14238; AVX512DQ-NEXT: vpermt2d %zmm1, %zmm3, %zmm214239; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm11[0],xmm8[0],xmm11[1],xmm8[1],xmm11[2],xmm8[2],xmm11[3],xmm8[3]14240; AVX512DQ-NEXT: vpshufb %xmm4, %xmm1, %xmm114241; AVX512DQ-NEXT: vmovdqa64 %xmm31, %xmm014242; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]14243; AVX512DQ-NEXT: vprold $16, %xmm8, %xmm414244; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm5 = xmm11[1,1,2,3]14245; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0,1],xmm4[2],xmm5[3,4],xmm4[5],xmm5[6,7]14246; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,2,1]14247; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm1, %zmm1414248; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm1 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0]14249; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm14 = zmm2 ^ (zmm1 & (zmm14 ^ zmm2))14250; AVX512DQ-NEXT: vmovdqa64 %xmm18, %xmm214251; AVX512DQ-NEXT: vmovdqa64 %xmm22, %xmm414252; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3]14253; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm4 = xmm2[0,1,2,3,4,5,7,6]14254; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,3,2,4,5,6,7]14255; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm5 = [0,1,0,1,0,1,1,3,16,18,19,19,19,19,0,0]14256; AVX512DQ-NEXT: vpermt2d %zmm4, %zmm5, %zmm214257; AVX512DQ-NEXT: vpbroadcastd 64(%rax), %ymm414258; AVX512DQ-NEXT: vpbroadcastd 68(%rax), %ymm614259; AVX512DQ-NEXT: vinserti64x4 $1, %ymm6, %zmm4, %zmm2314260; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm18 = [65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535]14261; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm23 = zmm23 ^ (zmm18 & (zmm23 ^ zmm2))14262; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm13[0],xmm15[0],xmm13[1],xmm15[1],xmm13[2],xmm15[2],xmm13[3],xmm15[3]14263; AVX512DQ-NEXT: vpshufb %xmm12, %xmm15, %xmm414264; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm6 = xmm13[1,1,2,2]14265; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm4 = xmm6[0],xmm4[1],xmm6[2,3],xmm4[4],xmm6[5,6],xmm4[7]14266; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,3,2,4,5,6,7]14267; AVX512DQ-NEXT: vpermt2d %zmm2, %zmm3, %zmm414268; AVX512DQ-NEXT: vmovdqa64 %xmm16, %xmm614269; AVX512DQ-NEXT: vmovdqa64 %xmm19, %xmm314270; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm6[0],xmm3[0],xmm6[1],xmm3[1],xmm6[2],xmm3[2],xmm6[3],xmm3[3]14271; AVX512DQ-NEXT: vpshufb %xmm0, %xmm2, %xmm214272; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]14273; AVX512DQ-NEXT: vprold $16, %xmm19, %xmm314274; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm6 = xmm16[1,1,2,3]14275; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm3 = xmm6[0,1],xmm3[2],xmm6[3,4],xmm3[5],xmm6[6,7]14276; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,2,1]14277; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm2, %zmm714278; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm7 = zmm4 ^ (zmm1 & (zmm7 ^ zmm4))14279; AVX512DQ-NEXT: vmovdqa64 %xmm25, %xmm114280; AVX512DQ-NEXT: vmovdqa64 %xmm26, %xmm214281; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]14282; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm2 = xmm1[0,1,2,3,4,5,7,6]14283; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,3,2,4,5,6,7]14284; AVX512DQ-NEXT: vpermt2d %zmm2, %zmm5, %zmm114285; AVX512DQ-NEXT: vpbroadcastd (%rax), %ymm214286; AVX512DQ-NEXT: vpbroadcastd 4(%rax), %ymm314287; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm2, %zmm1914288; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm19 = zmm19 ^ (zmm18 & (zmm19 ^ zmm1))14289; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload14290; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm1 = ymm6[1,2,3,3,4,5,6,7,9,10,11,11,12,13,14,15]14291; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,0,2,1,4,4,6,5]14292; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload14293; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm11[1,1,1,1,5,5,5,5]14294; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]14295; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]14296; AVX512DQ-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14297; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm1 = ymm6[0,1,2,3,5,4,6,7,8,9,10,11,13,12,14,15]14298; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,2,2,6,6,6,6]14299; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm11[2,2,2,2,6,6,6,6]14300; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]14301; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]14302; AVX512DQ-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14303; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload14304; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm1 = ymm3[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]14305; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,0,0,0,4,4,4,4]14306; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload14307; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm12[0,1,1,3,4,5,5,7]14308; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3,4],ymm1[5],ymm2[6,7,8,9],ymm1[10],ymm2[11,12],ymm1[13],ymm2[14,15]14309; AVX512DQ-NEXT: vpermq {{.*#+}} ymm28 = ymm1[2,1,3,2]14310; AVX512DQ-NEXT: vpshufb %ymm10, %ymm3, %ymm114311; AVX512DQ-NEXT: vmovdqa %ymm3, %ymm1014312; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm2 = ymm12[2,2,2,2,6,6,6,6]14313; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]14314; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload14315; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm1 = ymm8[1,2,2,3,4,5,6,7,9,10,10,11,12,13,14,15]14316; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,0,0,0,4,4,4,4]14317; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload14318; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm3 = ymm9[0,0,2,1,4,4,6,5]14319; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm1[0,1,2],ymm3[3],ymm1[4,5],ymm3[6],ymm1[7,8,9,10],ymm3[11],ymm1[12,13],ymm3[14],ymm1[15]14320; AVX512DQ-NEXT: vprold $16, %ymm8, %ymm114321; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm3 = ymm9[1,2,2,3,5,6,6,7]14322; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm5 = ymm3[0,1],ymm1[2],ymm3[3,4],ymm1[5],ymm3[6,7,8,9],ymm1[10],ymm3[11,12],ymm1[13],ymm3[14,15]14323; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm12[3,3,3,3,7,7,7,7]14324; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm3 = ymm10[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]14325; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[2,2,2,2,6,6,6,6]14326; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm3 = ymm1[0],ymm3[1],ymm1[2,3],ymm3[4],ymm1[5,6,7,8],ymm3[9],ymm1[10,11],ymm3[12],ymm1[13,14,15]14327; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm1 = ymm11[3,3,3,3,7,7,7,7]14328; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm6 = ymm6[0,1,2,3,7,6,6,7,8,9,10,11,15,14,14,15]14329; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm6 = ymm6[2,2,2,2,6,6,6,6]14330; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1,2],ymm6[3],ymm1[4,5],ymm6[6],ymm1[7,8,9,10],ymm6[11],ymm1[12,13],ymm6[14],ymm1[15]14331; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm6 = ymm9[3,3,3,3,7,7,7,7]14332; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm8 = ymm8[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]14333; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm8 = ymm8[2,2,2,3,6,6,6,7]14334; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm6 = ymm8[0,1],ymm6[2],ymm8[3,4],ymm6[5],ymm8[6,7,8,9],ymm6[10],ymm8[11,12],ymm6[13],ymm8[14,15]14335; AVX512DQ-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14336; AVX512DQ-NEXT: vpermq {{.*#+}} ymm25 = ymm2[2,2,2,3]14337; AVX512DQ-NEXT: vpermq {{.*#+}} ymm29 = ymm4[2,2,3,3]14338; AVX512DQ-NEXT: vpermq {{.*#+}} ymm27 = ymm5[2,1,3,2]14339; AVX512DQ-NEXT: vmovdqa 32(%rdi), %xmm1014340; AVX512DQ-NEXT: vmovdqa 32(%rsi), %xmm1114341; AVX512DQ-NEXT: vprold $16, %xmm11, %xmm214342; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm4 = xmm10[1,1,2,3]14343; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0,1],xmm2[2],xmm4[3,4],xmm2[5],xmm4[6,7]14344; AVX512DQ-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14345; AVX512DQ-NEXT: vpermq {{.*#+}} ymm26 = ymm3[0,2,2,3]14346; AVX512DQ-NEXT: vmovdqa 32(%r9), %xmm214347; AVX512DQ-NEXT: vmovdqa 32(%r8), %xmm314348; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]14349; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm2 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]14350; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm10[0],xmm11[0],xmm10[1],xmm11[1],xmm10[2],xmm11[2],xmm10[3],xmm11[3]14351; AVX512DQ-NEXT: vpshufb %xmm0, %xmm3, %xmm414352; AVX512DQ-NEXT: vpshufb %xmm0, %xmm2, %xmm214353; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm3 = xmm6[0,1,2,3,4,5,7,6]14354; AVX512DQ-NEXT: vmovdqa64 %xmm6, %xmm2414355; AVX512DQ-NEXT: vpermt2d %zmm3, %zmm17, %zmm214356; AVX512DQ-NEXT: vpbroadcastd 36(%rax), %ymm014357; AVX512DQ-NEXT: vpbroadcastd 40(%rax), %ymm314358; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm0, %zmm1314359; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (mem & (zmm13 ^ zmm2))14360; AVX512DQ-NEXT: vmovdqa 32(%rcx), %xmm814361; AVX512DQ-NEXT: vmovdqa 32(%rdx), %xmm614362; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],xmm8[3]14363; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,2,4,5,6,7]14364; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm12 = xmm0[0,0,1,1]14365; AVX512DQ-NEXT: vpermq {{.*#+}} ymm17 = ymm1[2,1,3,3]14366; AVX512DQ-NEXT: vpermq {{.*#+}} ymm15 = ymm4[0,0,1,1]14367; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload14368; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm1 # 32-byte Folded Reload14369; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload14370; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 32-byte Folded Reload14371; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm9 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]14372; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm9 & (zmm0 ^ zmm1))14373; AVX512DQ-NEXT: vpermq $182, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Folded Reload14374; AVX512DQ-NEXT: # ymm1 = mem[2,1,3,2]14375; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm31 = [65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535]14376; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm1 = ymm1 ^ (ymm31 & (ymm1 ^ ymm0))14377; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm20 = ymm20 ^ (ymm30 & (ymm20 ^ ymm1))14378; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload14379; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm1 # 32-byte Folded Reload14380; AVX512DQ-NEXT: vpternlogq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm30, %zmm1 # 64-byte Folded Reload14381; AVX512DQ-NEXT: # zmm1 = (zmm1 & zmm30) | mem14382; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload14383; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm4 # 32-byte Folded Reload14384; AVX512DQ-NEXT: vpternlogq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm30, %zmm4 # 64-byte Folded Reload14385; AVX512DQ-NEXT: # zmm4 = (zmm4 & zmm30) | mem14386; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload14387; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm2 # 32-byte Folded Reload14388; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload14389; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm3, %zmm30 # 32-byte Folded Reload14390; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm22 = [65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535]14391; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm30 = zmm2 ^ (zmm22 & (zmm30 ^ zmm2))14392; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535]14393; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm30 = zmm1 ^ (zmm2 & (zmm30 ^ zmm1))14394; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload14395; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm1 # 32-byte Folded Reload14396; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload14397; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm3, %zmm5 # 32-byte Folded Reload14398; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm5 = zmm1 ^ (zmm22 & (zmm5 ^ zmm1))14399; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm5 = zmm4 ^ (zmm2 & (zmm5 ^ zmm4))14400; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload14401; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm1 # 32-byte Folded Reload14402; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload14403; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm16 # 32-byte Folded Reload14404; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm16 = zmm1 ^ (mem & (zmm16 ^ zmm1))14405; AVX512DQ-NEXT: vextracti64x4 $1, %zmm0, %ymm014406; AVX512DQ-NEXT: vpternlogd {{.*#+}} ymm0 = m32bcst ^ (ymm18 & (ymm0 ^ m32bcst))14407; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535]14408; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm21 = ymm21 ^ (ymm1 & (ymm21 ^ ymm0))14409; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm18 # 64-byte Reload14410; AVX512DQ-NEXT: vpternlogq $248, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm18 # 64-byte Folded Reload14411; AVX512DQ-NEXT: # zmm18 = zmm18 | (zmm1 & mem)14412; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload14413; AVX512DQ-NEXT: vshufi64x2 $68, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm3 # 64-byte Folded Reload14414; AVX512DQ-NEXT: # zmm3 = zmm0[0,1,2,3],mem[0,1,2,3]14415; AVX512DQ-NEXT: vpternlogq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm3 # 64-byte Folded Reload14416; AVX512DQ-NEXT: # zmm3 = (zmm3 & zmm1) | mem14417; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm1 = zmm20[0,1,2,3],zmm21[0,1,2,3]14418; AVX512DQ-NEXT: vmovdqa64 64(%rax), %zmm214419; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm21 = [0,13,0,0,0,14,0,0,14,0,0,0,15,0,0,15]14420; AVX512DQ-NEXT: vpermd %zmm2, %zmm21, %zmm2014421; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm4 = [65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]14422; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm20 = zmm20 ^ (zmm4 & (zmm20 ^ zmm1))14423; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload14424; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm1 # 32-byte Folded Reload14425; AVX512DQ-NEXT: vmovdqa64 (%rax), %zmm014426; AVX512DQ-NEXT: vpermd %zmm0, %zmm21, %zmm2114427; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm21 = zmm21 ^ (zmm4 & (zmm21 ^ zmm1))14428; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm1 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]14429; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm23 = zmm23 ^ (zmm1 & (zmm23 ^ zmm14))14430; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm19 = zmm19 ^ (zmm1 & (zmm19 ^ zmm7))14431; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload14432; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm1 # 32-byte Folded Reload14433; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload14434; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm4, %zmm7 # 32-byte Folded Reload14435; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm14 = [0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]14436; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm7 = zmm1 ^ (zmm14 & (zmm7 ^ zmm1))14437; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload14438; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm1 # 32-byte Folded Reload14439; AVX512DQ-NEXT: vinserti64x4 $1, %ymm25, %zmm28, %zmm2514440; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm25 = zmm1 ^ (zmm14 & (zmm25 ^ zmm1))14441; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload14442; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm14 # 32-byte Folded Reload14443; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm28 = [0,0,4,0,0,0,5,0,0,5,0,0,0,6,0,0]14444; AVX512DQ-NEXT: vpermd %zmm2, %zmm28, %zmm114445; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm4 = [65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]14446; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm4 & (zmm1 ^ zmm14))14447; AVX512DQ-NEXT: vinserti64x4 $1, %ymm27, %zmm29, %zmm214448; AVX512DQ-NEXT: vpermd %zmm0, %zmm28, %zmm1414449; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (zmm4 & (zmm14 ^ zmm2))14450; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm0 = [65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0]14451; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm0 & (zmm1 ^ zmm7))14452; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (zmm0 & (zmm14 ^ zmm25))14453; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload14454; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 32-byte Folded Reload14455; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload14456; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm2 # 32-byte Folded Reload14457; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm9 & (zmm2 ^ zmm0))14458; AVX512DQ-NEXT: vpermq $212, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload14459; AVX512DQ-NEXT: # ymm0 = mem[0,1,1,3]14460; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload14461; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm4, %zmm014462; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Reload14463; AVX512DQ-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm4, %zmm7 # 32-byte Folded Reload14464; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm7 = zmm0 ^ (zmm9 & (zmm7 ^ zmm0))14465; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm12[0,1,1,3]14466; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm26, %zmm014467; AVX512DQ-NEXT: vinserti64x4 $1, %ymm15, %zmm17, %zmm1214468; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm12 = zmm0 ^ (zmm9 & (zmm12 ^ zmm0))14469; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm11[4],xmm10[4],xmm11[5],xmm10[5],xmm11[6],xmm10[6],xmm11[7],xmm10[7]14470; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm9 = xmm8[u,u,4,5,u,u,u,u,6,7,u,u,u,u,8,9]14471; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm10 = xmm6[1,1,2,2]14472; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm9 = xmm10[0],xmm9[1],xmm10[2,3],xmm9[4],xmm10[5,6],xmm9[7]14473; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} xmm6 = xmm6[4],xmm8[4],xmm6[5],xmm8[5],xmm6[6],xmm8[6],xmm6[7],xmm8[7]14474; AVX512DQ-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload14475; AVX512DQ-NEXT: # ymm8 = mem[2,2,2,3]14476; AVX512DQ-NEXT: vpshuflw $180, {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload14477; AVX512DQ-NEXT: # xmm10 = mem[0,1,3,2,4,5,6,7]14478; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm10 = xmm10[0,1,1,3]14479; AVX512DQ-NEXT: vpshufd $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Folded Reload14480; AVX512DQ-NEXT: # ymm11 = mem[2,3,3,3,6,7,7,7]14481; AVX512DQ-NEXT: vpermq $96, {{[-0-9]+}}(%r{{[sb]}}p), %ymm25 # 32-byte Folded Reload14482; AVX512DQ-NEXT: # ymm25 = mem[0,0,2,1]14483; AVX512DQ-NEXT: vpshuflw $230, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload14484; AVX512DQ-NEXT: # xmm4 = mem[2,1,2,3,4,5,6,7]14485; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,5,4]14486; AVX512DQ-NEXT: vpermq {{.*#+}} ymm27 = ymm4[0,0,1,3]14487; AVX512DQ-NEXT: vpermq $80, {{[-0-9]+}}(%r{{[sb]}}p), %ymm17 # 32-byte Folded Reload14488; AVX512DQ-NEXT: # ymm17 = mem[0,0,1,1]14489; AVX512DQ-NEXT: vpshuflw $248, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload14490; AVX512DQ-NEXT: # xmm15 = mem[0,2,3,3,4,5,6,7]14491; AVX512DQ-NEXT: vpermq {{.*#+}} ymm15 = ymm15[0,0,2,1]14492; AVX512DQ-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %ymm26 # 32-byte Folded Reload14493; AVX512DQ-NEXT: # ymm26 = mem[2,2,2,3]14494; AVX512DQ-NEXT: vmovdqa64 %xmm24, %xmm414495; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,1,3,2,4,5,6,7]14496; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,1,1,3]14497; AVX512DQ-NEXT: vpshufd $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm28 # 32-byte Folded Reload14498; AVX512DQ-NEXT: # ymm28 = mem[2,3,3,3,6,7,7,7]14499; AVX512DQ-NEXT: vpermq $96, {{[-0-9]+}}(%r{{[sb]}}p), %ymm29 # 32-byte Folded Reload14500; AVX512DQ-NEXT: # ymm29 = mem[0,0,2,1]14501; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,1,2,3,4,5,6,7]14502; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,5,4]14503; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,3]14504; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]14505; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,2,3,3,4,5,6,7]14506; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,2,1]14507; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,0,0,1]14508; AVX512DQ-NEXT: vinserti64x4 $1, %ymm10, %zmm8, %zmm814509; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm11[2,1,3,2]14510; AVX512DQ-NEXT: vpbroadcastd 96(%rax), %ymm1114511; AVX512DQ-NEXT: vinserti64x4 $1, %ymm11, %zmm10, %zmm1014512; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm31 & (zmm10 ^ zmm8))14513; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]14514; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm26, %zmm414515; AVX512DQ-NEXT: vpermq {{.*#+}} ymm8 = ymm28[2,1,3,2]14516; AVX512DQ-NEXT: vpbroadcastd 32(%rax), %ymm1114517; AVX512DQ-NEXT: vinserti64x4 $1, %ymm11, %zmm8, %zmm814518; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 ^ (zmm31 & (zmm8 ^ zmm4))14519; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm4 = [0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535]14520; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm4 & (zmm10 ^ zmm7))14521; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 ^ (zmm4 & (zmm8 ^ zmm12))14522; AVX512DQ-NEXT: vinserti64x4 $1, %ymm27, %zmm25, %zmm414523; AVX512DQ-NEXT: vinserti64x4 $1, %ymm15, %zmm17, %zmm714524; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm7 = zmm4 ^ (zmm22 & (zmm7 ^ zmm4))14525; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm29, %zmm014526; AVX512DQ-NEXT: vinserti64x4 $1, %ymm6, %zmm9, %zmm414527; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm4 = zmm0 ^ (zmm22 & (zmm4 ^ zmm0))14528; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm0 = [65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0]14529; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm6 # 64-byte Reload14530; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (zmm0 & (zmm6 ^ zmm7))14531; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (zmm0 & (zmm13 ^ zmm4))14532; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm16))14533; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm21 = zmm21 ^ (mem & (zmm21 ^ zmm2))14534; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax14535; AVX512DQ-NEXT: vmovdqa64 %zmm3, 320(%rax)14536; AVX512DQ-NEXT: vmovdqa64 %zmm13, 256(%rax)14537; AVX512DQ-NEXT: vmovdqa64 %zmm8, 192(%rax)14538; AVX512DQ-NEXT: vmovdqa64 %zmm14, 128(%rax)14539; AVX512DQ-NEXT: vmovdqa64 %zmm5, 64(%rax)14540; AVX512DQ-NEXT: vmovdqa64 %zmm19, (%rax)14541; AVX512DQ-NEXT: vmovdqa64 %zmm23, 448(%rax)14542; AVX512DQ-NEXT: vmovdqa64 %zmm6, 704(%rax)14543; AVX512DQ-NEXT: vmovdqa64 %zmm10, 640(%rax)14544; AVX512DQ-NEXT: vmovdqa64 %zmm1, 576(%rax)14545; AVX512DQ-NEXT: vmovdqa64 %zmm30, 512(%rax)14546; AVX512DQ-NEXT: vmovdqa64 %zmm21, 384(%rax)14547; AVX512DQ-NEXT: vmovdqa64 %zmm18, 768(%rax)14548; AVX512DQ-NEXT: vmovdqa64 %zmm20, 832(%rax)14549; AVX512DQ-NEXT: addq $2648, %rsp # imm = 0xA5814550; AVX512DQ-NEXT: vzeroupper14551; AVX512DQ-NEXT: retq14552;14553; AVX512DQ-FCP-LABEL: store_i16_stride7_vf64:14554; AVX512DQ-FCP: # %bb.0:14555; AVX512DQ-FCP-NEXT: subq $1480, %rsp # imm = 0x5C814556; AVX512DQ-FCP-NEXT: vmovdqa 96(%rcx), %ymm314557; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128]14558; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm3, %ymm014559; AVX512DQ-FCP-NEXT: vmovdqa 96(%rdx), %ymm114560; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm8 = [u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u]14561; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm1, %ymm214562; AVX512DQ-FCP-NEXT: vporq %ymm0, %ymm2, %ymm1614563; AVX512DQ-FCP-NEXT: vmovdqa 96(%rsi), %ymm214564; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm10 = [128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128,128,128,128,128,128,128]14565; AVX512DQ-FCP-NEXT: vpshufb %ymm10, %ymm2, %ymm014566; AVX512DQ-FCP-NEXT: vmovdqa 96(%rdi), %ymm714567; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm11 = [12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u,u,u,u,u,16,17,18,19]14568; AVX512DQ-FCP-NEXT: vpshufb %ymm11, %ymm7, %ymm414569; AVX512DQ-FCP-NEXT: vpor %ymm0, %ymm4, %ymm514570; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128,128,128]14571; AVX512DQ-FCP-NEXT: vmovdqa 64(%r9), %ymm914572; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm9, %ymm014573; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm9, %ymm2514574; AVX512DQ-FCP-NEXT: vmovdqa 64(%r8), %ymm1314575; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm12 = [u,u,u,u,u,u,u,u,12,13,14,15,128,128,u,u,u,u,u,u,u,u,u,u,16,17,128,128,u,u,u,u]14576; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm13, %ymm914577; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm13, %ymm2614578; AVX512DQ-FCP-NEXT: vpor %ymm0, %ymm9, %ymm014579; AVX512DQ-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14580; AVX512DQ-FCP-NEXT: vmovdqa 64(%rcx), %ymm014581; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm0, %ymm1414582; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm0, %ymm2714583; AVX512DQ-FCP-NEXT: vmovdqa 64(%rdx), %ymm014584; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm0, %ymm1514585; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm0, %ymm2914586; AVX512DQ-FCP-NEXT: vpor %ymm14, %ymm15, %ymm1314587; AVX512DQ-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14588; AVX512DQ-FCP-NEXT: vmovdqa 64(%rsi), %ymm014589; AVX512DQ-FCP-NEXT: vpshufb %ymm10, %ymm0, %ymm1414590; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm0, %ymm2214591; AVX512DQ-FCP-NEXT: vmovdqa 64(%rdi), %ymm014592; AVX512DQ-FCP-NEXT: vpshufb %ymm11, %ymm0, %ymm1514593; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm0, %ymm2814594; AVX512DQ-FCP-NEXT: vpor %ymm14, %ymm15, %ymm1314595; AVX512DQ-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14596; AVX512DQ-FCP-NEXT: vmovdqa (%r9), %ymm014597; AVX512DQ-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14598; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm0, %ymm1414599; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %ymm014600; AVX512DQ-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14601; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm0, %ymm1514602; AVX512DQ-FCP-NEXT: vpor %ymm14, %ymm15, %ymm1314603; AVX512DQ-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14604; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %ymm014605; AVX512DQ-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14606; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm0, %ymm1414607; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %ymm014608; AVX512DQ-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14609; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm0, %ymm1514610; AVX512DQ-FCP-NEXT: vpor %ymm14, %ymm15, %ymm1314611; AVX512DQ-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14612; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %ymm014613; AVX512DQ-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14614; AVX512DQ-FCP-NEXT: vpshufb %ymm10, %ymm0, %ymm1514615; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm014616; AVX512DQ-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14617; AVX512DQ-FCP-NEXT: vpshufb %ymm11, %ymm0, %ymm1314618; AVX512DQ-FCP-NEXT: vpor %ymm15, %ymm13, %ymm1314619; AVX512DQ-FCP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14620; AVX512DQ-FCP-NEXT: vmovdqa 32(%rcx), %ymm1514621; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm15, %ymm614622; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdx), %ymm1414623; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm14, %ymm814624; AVX512DQ-FCP-NEXT: vpor %ymm6, %ymm8, %ymm614625; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14626; AVX512DQ-FCP-NEXT: vmovdqa 32(%rsi), %ymm014627; AVX512DQ-FCP-NEXT: vpshufb %ymm10, %ymm0, %ymm614628; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %ymm914629; AVX512DQ-FCP-NEXT: vpshufb %ymm11, %ymm9, %ymm814630; AVX512DQ-FCP-NEXT: vpor %ymm6, %ymm8, %ymm614631; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14632; AVX512DQ-FCP-NEXT: vmovdqa 32(%r8), %ymm814633; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm8, %ymm614634; AVX512DQ-FCP-NEXT: vmovdqa 32(%r9), %ymm1014635; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm10, %ymm1114636; AVX512DQ-FCP-NEXT: vporq %ymm11, %ymm6, %ymm2114637; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} ymm11 = ymm3[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]14638; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm12 = ymm1[0,1,1,3,4,5,5,7]14639; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm12[0,1],ymm11[2],ymm12[3,4],ymm11[5],ymm12[6,7,8,9],ymm11[10],ymm12[11,12],ymm11[13],ymm12[14,15]14640; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,1,3,2]14641; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm13 = [18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23,18,19,20,21,18,19,20,21,24,25,26,27,22,23,22,23]14642; AVX512DQ-FCP-NEXT: # ymm13 = mem[0,1,0,1]14643; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm2, %ymm1214644; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm13, %ymm1714645; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm13 = ymm7[1,1,1,1,5,5,5,5]14646; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm12[0,1],ymm13[2],ymm12[3,4],ymm13[5],ymm12[6,7,8,9],ymm13[10],ymm12[11,12],ymm13[13],ymm12[14,15]14647; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,2,2,3]14648; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm11, %zmm16, %zmm1114649; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm12, %zmm5, %zmm1214650; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm12 = zmm11 ^ (mem & (zmm12 ^ zmm11))14651; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm13 = [65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535]14652; AVX512DQ-FCP-NEXT: vmovdqa 96(%r8), %ymm514653; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm11 = ymm5[u,u],zero,zero,zero,zero,zero,zero,zero,zero,ymm5[14,15,u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero,ymm5[16,17,u,u,u,u],zero,zero14654; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm11 = ymm11 | (ymm12 & ymm13)14655; AVX512DQ-FCP-NEXT: vmovdqa 96(%r9), %ymm614656; AVX512DQ-FCP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14657; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm6, %ymm414658; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm16 = [65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535]14659; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm4 = ymm4 | (ymm11 & ymm16)14660; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm16, %zmm2014661; AVX512DQ-FCP-NEXT: vextracti64x4 $1, %zmm12, %ymm1114662; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm12 = [0,4,0,0,0,5,0,0]14663; AVX512DQ-FCP-NEXT: vpermd %ymm5, %ymm12, %ymm1214664; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm16 = [65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0]14665; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm12 = ymm12 ^ (ymm16 & (ymm12 ^ ymm11))14666; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm16, %zmm1814667; AVX512DQ-FCP-NEXT: vprold $16, %ymm6, %ymm1114668; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,2,2]14669; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm16 = [65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535]14670; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm11 = ymm11 ^ (ymm16 & (ymm11 ^ ymm12))14671; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm4 = zmm4[0,1,2,3],zmm11[0,1,2,3]14672; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14673; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax14674; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm11 = [0,1,4,5,4,5,5,7]14675; AVX512DQ-FCP-NEXT: vmovdqa 96(%rax), %ymm414676; AVX512DQ-FCP-NEXT: vpermd %ymm4, %ymm11, %ymm1114677; AVX512DQ-FCP-NEXT: vpandn %ymm11, %ymm13, %ymm1114678; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm13, %zmm1214679; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm13 = [12,13,128,128,128,128,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,128,128,128,128,16,17,128,128]14680; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm4, %ymm414681; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm11, %zmm4, %zmm414682; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14683; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [u,u,u,u,u,u,u,u,u,u,u,u,14,15,12,13,u,u,u,u,30,31,28,29,u,u,u,u,30,31,28,29]14684; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm414685; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm11 = ymm7[3,3,3,3,7,7,7,7]14686; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm11[0,1,2],ymm4[3],ymm11[4,5],ymm4[6],ymm11[7,8,9,10],ymm4[11],ymm11[12,13],ymm4[14],ymm11[15]14687; AVX512DQ-FCP-NEXT: vpmovsxdq {{.*#+}} ymm11 = [151522058,0,421010202,421010202]14688; AVX512DQ-FCP-NEXT: vpshufb %ymm11, %ymm2, %ymm214689; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm11, %ymm2414690; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm7 = ymm7[2,2,2,2,6,6,6,6]14691; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm7[0],ymm2[1],ymm7[2,3],ymm2[4],ymm7[5,6,7,8],ymm2[9],ymm7[10,11],ymm2[12],ymm7[13,14,15]14692; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm7 = [0,2,2,3,10,9,11,11]14693; AVX512DQ-FCP-NEXT: vpermt2q %zmm4, %zmm7, %zmm214694; AVX512DQ-FCP-NEXT: vpmovsxdq {{.*#+}} ymm11 = [218894094,0,488382238,488382238]14695; AVX512DQ-FCP-NEXT: vpshufb %ymm11, %ymm3, %ymm414696; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm11, %ymm1614697; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm11 = ymm1[3,3,3,3,7,7,7,7]14698; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm11[0],ymm4[1],ymm11[2,3],ymm4[4],ymm11[5,6,7,8],ymm4[9],ymm11[10,11],ymm4[12],ymm11[13,14,15]14699; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27,22,23,26,27,0,0,24,25,26,27,0,0,26,27,26,27]14700; AVX512DQ-FCP-NEXT: # ymm11 = mem[0,1,0,1]14701; AVX512DQ-FCP-NEXT: vpshufb %ymm11, %ymm3, %ymm314702; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,2,2,6,6,6,6]14703; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm3[0,1],ymm1[2],ymm3[3,4],ymm1[5],ymm3[6,7,8,9],ymm1[10],ymm3[11,12],ymm1[13],ymm3[14,15]14704; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm19 = [2,2,2,3,8,10,10,11]14705; AVX512DQ-FCP-NEXT: vpermt2q %zmm4, %zmm19, %zmm114706; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm23 = [65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535]14707; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm2 ^ (zmm23 & (zmm1 ^ zmm2))14708; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14709; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [5,0,0,0,6,0,0,6]14710; AVX512DQ-FCP-NEXT: vpermd %ymm5, %ymm1, %ymm114711; AVX512DQ-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14712; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm3 = [65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535,65535,65535,65535,65535,65535,0,65535]14713; AVX512DQ-FCP-NEXT: vpbroadcastd 72(%rax), %ymm114714; AVX512DQ-FCP-NEXT: vpandn %ymm1, %ymm3, %ymm114715; AVX512DQ-FCP-NEXT: vmovdqa 64(%rax), %ymm214716; AVX512DQ-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14717; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm2, %ymm214718; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm114719; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14720; AVX512DQ-FCP-NEXT: vpbroadcastd 8(%rax), %ymm114721; AVX512DQ-FCP-NEXT: vpandn %ymm1, %ymm3, %ymm114722; AVX512DQ-FCP-NEXT: vmovdqa (%rax), %ymm214723; AVX512DQ-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14724; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm2, %ymm214725; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm114726; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14727; AVX512DQ-FCP-NEXT: vpbroadcastd {{.*#+}} ymm5 = [18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21,18,19,20,21]14728; AVX512DQ-FCP-NEXT: vpshufb %ymm5, %ymm10, %ymm114729; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm8[0,0,2,1,4,4,6,5]14730; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1,2],ymm2[3],ymm1[4,5],ymm2[6],ymm1[7,8,9,10],ymm2[11],ymm1[12,13],ymm2[14],ymm1[15]14731; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [0,1,0,3,10,10,11,11]14732; AVX512DQ-FCP-NEXT: vpermi2q %zmm1, %zmm21, %zmm214733; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14734; AVX512DQ-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14735; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm0, %ymm114736; AVX512DQ-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14737; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm9[3,3,3,3,7,7,7,7]14738; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8,9,10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]14739; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm24, %ymm1314740; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm0, %ymm214741; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm9[2,2,2,2,6,6,6,6]14742; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5,6,7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13,14,15]14743; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm7, %zmm214744; AVX512DQ-FCP-NEXT: vmovdqu %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14745; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm16, %ymm614746; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm15, %ymm114747; AVX512DQ-FCP-NEXT: vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill14748; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm14[3,3,3,3,7,7,7,7]14749; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm3[0],ymm1[1],ymm3[2,3],ymm1[4],ymm3[5,6,7,8],ymm1[9],ymm3[10,11],ymm1[12],ymm3[13,14,15]14750; AVX512DQ-FCP-NEXT: vmovdqa %ymm11, %ymm714751; AVX512DQ-FCP-NEXT: vpshufb %ymm11, %ymm15, %ymm314752; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm14[2,2,2,2,6,6,6,6]14753; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0,1],ymm4[2],ymm3[3,4],ymm4[5],ymm3[6,7,8,9],ymm4[10],ymm3[11,12],ymm4[13],ymm3[14,15]14754; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm19, %zmm014755; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm2 ^ (zmm23 & (zmm0 ^ zmm2))14756; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14757; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,28,29,26,27,28,29,26,27,28,29,30,31,30,31]14758; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm8[3,3,3,3,7,7,7,7]14759; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]14760; AVX512DQ-FCP-NEXT: vprold $16, %ymm10, %ymm214761; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm8[1,2,2,3,5,6,6,7]14762; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0,1],ymm2[2],ymm3[3,4],ymm2[5],ymm3[6,7,8,9],ymm2[10],ymm3[11,12],ymm2[13],ymm3[14,15]14763; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm11 = [2,1,3,2,10,10,10,11]14764; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm11, %zmm214765; AVX512DQ-FCP-NEXT: vmovdqa64 (%rax), %zmm1614766; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm0 = [0,13,0,0,0,14,0,0,14,0,0,0,15,0,0,15]14767; AVX512DQ-FCP-NEXT: vpermd %zmm16, %zmm0, %zmm014768; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm18 & (zmm0 ^ zmm2))14769; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14770; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm22, %ymm1514771; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm15, %ymm114772; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm24, %ymm2114773; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm2 = ymm28[2,2,2,2,6,6,6,6]14774; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5,6,7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13,14,15]14775; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm17, %ymm914776; AVX512DQ-FCP-NEXT: vpshufb %ymm9, %ymm15, %ymm214777; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm28[1,1,1,1,5,5,5,5]14778; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm3[2],ymm2[3,4],ymm3[5],ymm2[6,7,8,9],ymm3[10],ymm2[11,12],ymm3[13],ymm2[14,15]14779; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm19, %zmm214780; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm27, %ymm014781; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm0, %ymm114782; AVX512DQ-FCP-NEXT: vmovdqa %ymm7, %ymm1014783; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm29[2,2,2,2,6,6,6,6]14784; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm3[2],ymm1[3,4],ymm3[5],ymm1[6,7,8,9],ymm3[10],ymm1[11,12],ymm3[13],ymm1[14,15]14785; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} ymm3 = ymm0[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11]14786; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm27, %ymm714787; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm4 = ymm29[0,1,1,3,4,5,5,7]14788; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm3[2],ymm4[3,4],ymm3[5],ymm4[6,7,8,9],ymm3[10],ymm4[11,12],ymm3[13],ymm4[14,15]14789; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm11, %zmm414790; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535]14791; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm2 ^ (zmm1 & (zmm4 ^ zmm2))14792; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm25, %ymm1314793; AVX512DQ-FCP-NEXT: vprold $16, %ymm25, %ymm214794; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm26, %ymm2514795; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm3 = ymm26[1,2,2,3,5,6,6,7]14796; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0,1],ymm2[2],ymm3[3,4],ymm2[5],ymm3[6,7,8,9],ymm2[10],ymm3[11,12],ymm2[13],ymm3[14,15]14797; AVX512DQ-FCP-NEXT: vpshufb %ymm5, %ymm13, %ymm314798; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm13, %ymm1814799; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm5 = ymm26[0,0,2,1,4,4,6,5]14800; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0,1,2],ymm5[3],ymm3[4,5],ymm5[6],ymm3[7,8,9,10],ymm5[11],ymm3[12,13],ymm5[14],ymm3[15]14801; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm27 = [2,2,3,3,10,9,11,10]14802; AVX512DQ-FCP-NEXT: vpermt2q %zmm2, %zmm27, %zmm314803; AVX512DQ-FCP-NEXT: vmovdqa64 64(%rax), %zmm014804; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14805; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [0,0,4,0,0,0,5,0,0,5,0,0,0,6,0,0]14806; AVX512DQ-FCP-NEXT: vpermd %zmm0, %zmm2, %zmm014807; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm12 & (zmm0 ^ zmm3))14808; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm4))14809; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill14810; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm7, %ymm214811; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} ymm0 = ymm29[3,3,3,3,7,7,7,7]14812; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5,6,7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13,14,15]14813; AVX512DQ-FCP-NEXT: vmovdqa 64(%rcx), %xmm314814; AVX512DQ-FCP-NEXT: vmovdqa 64(%rdx), %xmm414815; AVX512DQ-FCP-NEXT: vpbroadcastq {{.*#+}} xmm12 = [6,7,4,5,0,0,8,9,6,7,4,5,0,0,8,9]14816; AVX512DQ-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill14817; AVX512DQ-FCP-NEXT: vpshufb %xmm12, %xmm3, %xmm214818; AVX512DQ-FCP-NEXT: vmovdqa %xmm4, %xmm514819; AVX512DQ-FCP-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill14820; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[1,1,2,2]14821; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0],xmm2[1],xmm4[2,3],xmm2[4],xmm4[5,6],xmm2[7]14822; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,2,3,0,1,2,3,6,7,4,5,6,7,4,5]14823; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm4 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3]14824; AVX512DQ-FCP-NEXT: vpshufb %xmm14, %xmm4, %xmm414825; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm24 = [8,9,9,0,0,0,1,1]14826; AVX512DQ-FCP-NEXT: vpermt2q %zmm4, %zmm24, %zmm214827; AVX512DQ-FCP-NEXT: vmovdqa 64(%rdi), %xmm314828; AVX512DQ-FCP-NEXT: vmovdqa %xmm3, (%rsp) # 16-byte Spill14829; AVX512DQ-FCP-NEXT: vmovdqa 64(%rsi), %xmm614830; AVX512DQ-FCP-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill14831; AVX512DQ-FCP-NEXT: vprold $16, %xmm6, %xmm414832; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm5 = xmm3[1,1,2,3]14833; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0,1],xmm4[2],xmm5[3,4],xmm4[5],xmm5[6,7]14834; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm15 = [0,1,2,3,4,5,4,5,6,7,10,11,8,9,10,11]14835; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm3[0],xmm6[0],xmm3[1],xmm6[1],xmm3[2],xmm6[2],xmm3[3],xmm6[3]14836; AVX512DQ-FCP-NEXT: vpshufb %xmm15, %xmm5, %xmm514837; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm26 = [0,0,1,1,8,8,0,9]14838; AVX512DQ-FCP-NEXT: vpermt2q %zmm4, %zmm26, %zmm514839; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm4 = [65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0,65535,65535,65535,65535,65535,0,0]14840; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm5 = zmm2 ^ (zmm4 & (zmm5 ^ zmm2))14841; AVX512DQ-FCP-NEXT: vmovdqa 64(%r9), %xmm214842; AVX512DQ-FCP-NEXT: vmovdqa 64(%r8), %xmm614843; AVX512DQ-FCP-NEXT: vpunpckhwd {{.*#+}} xmm0 = xmm6[4],xmm2[4],xmm6[5],xmm2[5],xmm6[6],xmm2[6],xmm6[7],xmm2[7]14844; AVX512DQ-FCP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill14845; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm6[0],xmm2[0],xmm6[1],xmm2[1],xmm6[2],xmm2[2],xmm6[3],xmm2[3]14846; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm7 = [0,1,2,3,6,7,4,5,6,7,4,5,12,13,14,15]14847; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [0,1,2,3,8,9,10,11,14,15,12,13,14,15,12,13]14848; AVX512DQ-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm614849; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm2, %xmm214850; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm29 = [0,0,0,1,8,9,9,0]14851; AVX512DQ-FCP-NEXT: vpermt2q %zmm6, %zmm29, %zmm214852; AVX512DQ-FCP-NEXT: vpbroadcastd 64(%rax), %ymm614853; AVX512DQ-FCP-NEXT: vpbroadcastd 68(%rax), %ymm814854; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm6, %zmm3014855; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm30 = zmm30 ^ (zmm20 & (zmm30 ^ zmm2))14856; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm2 = [65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535,0,0,0,65535,65535,65535,65535]14857; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm30 = zmm30 ^ (zmm2 & (zmm30 ^ zmm5))14858; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %xmm314859; AVX512DQ-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill14860; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm814861; AVX512DQ-FCP-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill14862; AVX512DQ-FCP-NEXT: vpshufb %xmm12, %xmm3, %xmm514863; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm6 = xmm8[1,1,2,2]14864; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm5 = xmm6[0],xmm5[1],xmm6[2,3],xmm5[4],xmm6[5,6],xmm5[7]14865; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm6 = xmm8[0],xmm3[0],xmm8[1],xmm3[1],xmm8[2],xmm3[2],xmm8[3],xmm3[3]14866; AVX512DQ-FCP-NEXT: vpshufb %xmm14, %xmm6, %xmm614867; AVX512DQ-FCP-NEXT: vpermt2q %zmm6, %zmm24, %zmm514868; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm314869; AVX512DQ-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill14870; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %xmm1214871; AVX512DQ-FCP-NEXT: vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill14872; AVX512DQ-FCP-NEXT: vprold $16, %xmm12, %xmm614873; AVX512DQ-FCP-NEXT: vpshufd {{.*#+}} xmm8 = xmm3[1,1,2,3]14874; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm8[0,1],xmm6[2],xmm8[3,4],xmm6[5],xmm8[6,7]14875; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm8 = xmm3[0],xmm12[0],xmm3[1],xmm12[1],xmm3[2],xmm12[2],xmm3[3],xmm12[3]14876; AVX512DQ-FCP-NEXT: vpshuFile truncated to the first 1 MiB.