7131 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_i8_stride6_vf2(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %in.vecptr5, ptr %out.vec) nounwind {19; SSE-LABEL: store_i8_stride6_vf2:20; SSE: # %bb.0:21; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax22; SSE-NEXT: movdqa (%rdi), %xmm023; SSE-NEXT: movdqa (%rdx), %xmm124; SSE-NEXT: movdqa (%r8), %xmm225; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]26; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]27; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]28; SSE-NEXT: pxor %xmm1, %xmm129; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]30; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm0[0,1,2,3,5,7,6,7]31; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,2,2]32; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,1,3,4,5,6,7]33; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7]34; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,1]35; SSE-NEXT: packuswb %xmm1, %xmm036; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,0,65535,65535,0,65535,65535]37; SSE-NEXT: pand %xmm1, %xmm038; SSE-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]39; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]40; SSE-NEXT: pandn %xmm2, %xmm141; SSE-NEXT: por %xmm0, %xmm142; SSE-NEXT: movdqa {{.*#+}} xmm0 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]43; SSE-NEXT: pand %xmm0, %xmm144; SSE-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1],xmm2[2],mem[2],xmm2[3],mem[3],xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]45; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]46; SSE-NEXT: pandn %xmm2, %xmm047; SSE-NEXT: por %xmm1, %xmm048; SSE-NEXT: movq %xmm0, (%rax)49; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]50; SSE-NEXT: movd %xmm0, 8(%rax)51; SSE-NEXT: retq52;53; AVX-LABEL: store_i8_stride6_vf2:54; AVX: # %bb.0:55; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax56; AVX-NEXT: vmovdqa (%rdi), %xmm057; AVX-NEXT: vmovdqa (%rdx), %xmm158; AVX-NEXT: vmovdqa (%r9), %xmm259; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]60; AVX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]61; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]62; AVX-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]63; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1],zero,xmm0[2,6,10,14,3],zero,xmm0[u,u,u,u]64; AVX-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,zero,xmm2[1,u,u,u,u]65; AVX-NEXT: vpor %xmm1, %xmm0, %xmm066; AVX-NEXT: vpextrd $2, %xmm0, 8(%rax)67; AVX-NEXT: vmovq %xmm0, (%rax)68; AVX-NEXT: retq69;70; AVX2-LABEL: store_i8_stride6_vf2:71; AVX2: # %bb.0:72; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax73; AVX2-NEXT: vmovdqa (%rdi), %xmm074; AVX2-NEXT: vmovdqa (%rdx), %xmm175; AVX2-NEXT: vmovdqa (%r9), %xmm276; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]77; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]78; AVX2-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]79; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]80; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1],zero,xmm0[2,6,10,14,3],zero,xmm0[u,u,u,u]81; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,zero,xmm2[1,u,u,u,u]82; AVX2-NEXT: vpor %xmm1, %xmm0, %xmm083; AVX2-NEXT: vpextrd $2, %xmm0, 8(%rax)84; AVX2-NEXT: vmovq %xmm0, (%rax)85; AVX2-NEXT: retq86;87; AVX2-FP-LABEL: store_i8_stride6_vf2:88; AVX2-FP: # %bb.0:89; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax90; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm091; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm192; AVX2-FP-NEXT: vmovdqa (%r9), %xmm293; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]94; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]95; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]96; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]97; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1],zero,xmm0[2,6,10,14,3],zero,xmm0[u,u,u,u]98; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,zero,xmm2[1,u,u,u,u]99; AVX2-FP-NEXT: vpor %xmm1, %xmm0, %xmm0100; AVX2-FP-NEXT: vpextrd $2, %xmm0, 8(%rax)101; AVX2-FP-NEXT: vmovq %xmm0, (%rax)102; AVX2-FP-NEXT: retq103;104; AVX2-FCP-LABEL: store_i8_stride6_vf2:105; AVX2-FCP: # %bb.0:106; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax107; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm0108; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm1109; AVX2-FCP-NEXT: vmovdqa (%r9), %xmm2110; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]111; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]112; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]113; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]114; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1],zero,xmm0[2,6,10,14,3],zero,xmm0[u,u,u,u]115; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,zero,xmm2[1,u,u,u,u]116; AVX2-FCP-NEXT: vpor %xmm1, %xmm0, %xmm0117; AVX2-FCP-NEXT: vpextrd $2, %xmm0, 8(%rax)118; AVX2-FCP-NEXT: vmovq %xmm0, (%rax)119; AVX2-FCP-NEXT: retq120;121; AVX512-LABEL: store_i8_stride6_vf2:122; AVX512: # %bb.0:123; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax124; AVX512-NEXT: vmovdqa (%rdi), %xmm0125; AVX512-NEXT: vmovdqa (%rdx), %xmm1126; AVX512-NEXT: vmovdqa (%r9), %xmm2127; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]128; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]129; AVX512-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]130; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]131; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1],zero,xmm0[2,6,10,14,3],zero,xmm0[u,u,u,u]132; AVX512-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,zero,xmm2[1,u,u,u,u]133; AVX512-NEXT: vpor %xmm1, %xmm0, %xmm0134; AVX512-NEXT: vpextrd $2, %xmm0, 8(%rax)135; AVX512-NEXT: vmovq %xmm0, (%rax)136; AVX512-NEXT: retq137;138; AVX512-FCP-LABEL: store_i8_stride6_vf2:139; AVX512-FCP: # %bb.0:140; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax141; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm0142; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm1143; AVX512-FCP-NEXT: vmovdqa (%r9), %xmm2144; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]145; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]146; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]147; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]148; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1],zero,xmm0[2,6,10,14,3],zero,xmm0[u,u,u,u]149; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,zero,xmm2[1,u,u,u,u]150; AVX512-FCP-NEXT: vpor %xmm1, %xmm0, %xmm0151; AVX512-FCP-NEXT: vpextrd $2, %xmm0, 8(%rax)152; AVX512-FCP-NEXT: vmovq %xmm0, (%rax)153; AVX512-FCP-NEXT: retq154;155; AVX512DQ-LABEL: store_i8_stride6_vf2:156; AVX512DQ: # %bb.0:157; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax158; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm0159; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm1160; AVX512DQ-NEXT: vmovdqa (%r9), %xmm2161; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]162; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]163; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]164; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]165; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1],zero,xmm0[2,6,10,14,3],zero,xmm0[u,u,u,u]166; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,zero,xmm2[1,u,u,u,u]167; AVX512DQ-NEXT: vpor %xmm1, %xmm0, %xmm0168; AVX512DQ-NEXT: vpextrd $2, %xmm0, 8(%rax)169; AVX512DQ-NEXT: vmovq %xmm0, (%rax)170; AVX512DQ-NEXT: retq171;172; AVX512DQ-FCP-LABEL: store_i8_stride6_vf2:173; AVX512DQ-FCP: # %bb.0:174; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax175; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm0176; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm1177; AVX512DQ-FCP-NEXT: vmovdqa (%r9), %xmm2178; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]179; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]180; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]181; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]182; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1],zero,xmm0[2,6,10,14,3],zero,xmm0[u,u,u,u]183; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,zero,xmm2[1,u,u,u,u]184; AVX512DQ-FCP-NEXT: vpor %xmm1, %xmm0, %xmm0185; AVX512DQ-FCP-NEXT: vpextrd $2, %xmm0, 8(%rax)186; AVX512DQ-FCP-NEXT: vmovq %xmm0, (%rax)187; AVX512DQ-FCP-NEXT: retq188;189; AVX512BW-LABEL: store_i8_stride6_vf2:190; AVX512BW: # %bb.0:191; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %rax192; AVX512BW-NEXT: vmovdqa (%rdi), %xmm0193; AVX512BW-NEXT: vmovdqa (%rdx), %xmm1194; AVX512BW-NEXT: vmovdqa (%r9), %xmm2195; AVX512BW-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]196; AVX512BW-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]197; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]198; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]199; AVX512BW-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1],zero,xmm0[2,6,10,14,3],zero,xmm0[u,u,u,u]200; AVX512BW-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,zero,xmm2[1,u,u,u,u]201; AVX512BW-NEXT: vpor %xmm1, %xmm0, %xmm0202; AVX512BW-NEXT: vpextrd $2, %xmm0, 8(%rax)203; AVX512BW-NEXT: vmovq %xmm0, (%rax)204; AVX512BW-NEXT: retq205;206; AVX512BW-FCP-LABEL: store_i8_stride6_vf2:207; AVX512BW-FCP: # %bb.0:208; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax209; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm0210; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm1211; AVX512BW-FCP-NEXT: vmovdqa (%r9), %xmm2212; AVX512BW-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]213; AVX512BW-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]214; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]215; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]216; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1],zero,xmm0[2,6,10,14,3],zero,xmm0[u,u,u,u]217; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,zero,xmm2[1,u,u,u,u]218; AVX512BW-FCP-NEXT: vpor %xmm1, %xmm0, %xmm0219; AVX512BW-FCP-NEXT: vpextrd $2, %xmm0, 8(%rax)220; AVX512BW-FCP-NEXT: vmovq %xmm0, (%rax)221; AVX512BW-FCP-NEXT: retq222;223; AVX512DQ-BW-LABEL: store_i8_stride6_vf2:224; AVX512DQ-BW: # %bb.0:225; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %rax226; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm0227; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm1228; AVX512DQ-BW-NEXT: vmovdqa (%r9), %xmm2229; AVX512DQ-BW-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]230; AVX512DQ-BW-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]231; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]232; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]233; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1],zero,xmm0[2,6,10,14,3],zero,xmm0[u,u,u,u]234; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,zero,xmm2[1,u,u,u,u]235; AVX512DQ-BW-NEXT: vpor %xmm1, %xmm0, %xmm0236; AVX512DQ-BW-NEXT: vpextrd $2, %xmm0, 8(%rax)237; AVX512DQ-BW-NEXT: vmovq %xmm0, (%rax)238; AVX512DQ-BW-NEXT: retq239;240; AVX512DQ-BW-FCP-LABEL: store_i8_stride6_vf2:241; AVX512DQ-BW-FCP: # %bb.0:242; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax243; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm0244; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm1245; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r9), %xmm2246; AVX512DQ-BW-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]247; AVX512DQ-BW-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]248; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]249; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]250; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1],zero,xmm0[2,6,10,14,3],zero,xmm0[u,u,u,u]251; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,zero,xmm2[1,u,u,u,u]252; AVX512DQ-BW-FCP-NEXT: vpor %xmm1, %xmm0, %xmm0253; AVX512DQ-BW-FCP-NEXT: vpextrd $2, %xmm0, 8(%rax)254; AVX512DQ-BW-FCP-NEXT: vmovq %xmm0, (%rax)255; AVX512DQ-BW-FCP-NEXT: retq256 %in.vec0 = load <2 x i8>, ptr %in.vecptr0, align 64257 %in.vec1 = load <2 x i8>, ptr %in.vecptr1, align 64258 %in.vec2 = load <2 x i8>, ptr %in.vecptr2, align 64259 %in.vec3 = load <2 x i8>, ptr %in.vecptr3, align 64260 %in.vec4 = load <2 x i8>, ptr %in.vecptr4, align 64261 %in.vec5 = load <2 x i8>, ptr %in.vecptr5, align 64262 %1 = shufflevector <2 x i8> %in.vec0, <2 x i8> %in.vec1, <4 x i32> <i32 0, i32 1, i32 2, i32 3>263 %2 = shufflevector <2 x i8> %in.vec2, <2 x i8> %in.vec3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>264 %3 = shufflevector <2 x i8> %in.vec4, <2 x i8> %in.vec5, <4 x i32> <i32 0, i32 1, i32 2, i32 3>265 %4 = shufflevector <4 x i8> %1, <4 x i8> %2, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>266 %5 = shufflevector <4 x i8> %3, <4 x i8> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>267 %6 = shufflevector <8 x i8> %4, <8 x i8> %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>268 %interleaved.vec = shufflevector <12 x i8> %6, <12 x i8> poison, <12 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 1, i32 3, i32 5, i32 7, i32 9, i32 11>269 store <12 x i8> %interleaved.vec, ptr %out.vec, align 64270 ret void271}272 273define void @store_i8_stride6_vf4(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %in.vecptr5, ptr %out.vec) nounwind {274; SSE-LABEL: store_i8_stride6_vf4:275; SSE: # %bb.0:276; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax277; SSE-NEXT: movdqa (%rdi), %xmm1278; SSE-NEXT: movdqa (%rdx), %xmm2279; SSE-NEXT: movdqa (%r8), %xmm0280; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]281; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]282; SSE-NEXT: pxor %xmm3, %xmm3283; SSE-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]284; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,2,2,3]285; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,1,0,2,4,5,6,7]286; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm2[0,2,1,3]287; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[1,3,2,3,4,5,6,7]288; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,4,6]289; SSE-NEXT: packuswb %xmm5, %xmm4290; SSE-NEXT: movdqa {{.*#+}} xmm5 = [65535,0,65535,65535,0,65535,65535,0]291; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]292; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm1[0,1,1,3]293; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7]294; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm1[0,2,2,0]295; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm6[0,2,2,3,4,5,6,7]296; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,7,5]297; SSE-NEXT: packuswb %xmm3, %xmm6298; SSE-NEXT: pand %xmm5, %xmm6299; SSE-NEXT: pandn %xmm4, %xmm5300; SSE-NEXT: por %xmm6, %xmm5301; SSE-NEXT: movdqa {{.*#+}} xmm3 = [65535,65535,0,65535,65535,0,65535,65535]302; SSE-NEXT: pand %xmm3, %xmm5303; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]304; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm0[0,0,0,0]305; SSE-NEXT: pandn %xmm4, %xmm3306; SSE-NEXT: por %xmm5, %xmm3307; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,1,3]308; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,7,6,7]309; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]310; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,3,1,4,5,6,7]311; SSE-NEXT: packuswb %xmm2, %xmm1312; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]313; SSE-NEXT: movdqa {{.*#+}} xmm2 = [65535,0,0,65535,65535,65535,65535,65535]314; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]315; SSE-NEXT: pand %xmm2, %xmm0316; SSE-NEXT: pandn %xmm1, %xmm2317; SSE-NEXT: por %xmm0, %xmm2318; SSE-NEXT: movq %xmm2, 16(%rax)319; SSE-NEXT: movdqa %xmm3, (%rax)320; SSE-NEXT: retq321;322; AVX-LABEL: store_i8_stride6_vf4:323; AVX: # %bb.0:324; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax325; AVX-NEXT: vmovdqa (%rdi), %xmm0326; AVX-NEXT: vmovdqa (%rdx), %xmm1327; AVX-NEXT: vmovdqa (%r8), %xmm2328; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]329; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]330; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]331; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]332; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm0[0,4,8,12],zero,zero,xmm0[1,5,9,13],zero,zero,xmm0[2,6,10,14]333; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,zero,zero,zero,xmm1[0,4],zero,zero,zero,zero,xmm1[1,5],zero,zero,zero,zero334; AVX-NEXT: vpor %xmm3, %xmm2, %xmm2335; AVX-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[3,7,11,15],zero,zero,xmm0[u,u,u,u,u,u,u,u]336; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[2,6],zero,zero,zero,zero,xmm1[3,7,u,u,u,u,u,u,u,u]337; AVX-NEXT: vpor %xmm1, %xmm0, %xmm0338; AVX-NEXT: vmovq %xmm0, 16(%rax)339; AVX-NEXT: vmovdqa %xmm2, (%rax)340; AVX-NEXT: retq341;342; AVX2-LABEL: store_i8_stride6_vf4:343; AVX2: # %bb.0:344; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax345; AVX2-NEXT: vmovdqa (%rdi), %xmm0346; AVX2-NEXT: vmovdqa (%rdx), %xmm1347; AVX2-NEXT: vmovdqa (%r8), %xmm2348; AVX2-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]349; AVX2-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]350; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]351; AVX2-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]352; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0353; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,zero,ymm0[1,5,9,13],zero,zero,ymm0[2,6,10,14,18,22],zero,zero,zero,zero,ymm0[19,23],zero,zero,zero,zero,zero,zero,zero,zero354; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]355; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,4],zero,zero,zero,zero,ymm0[1,5],zero,zero,zero,zero,zero,zero,ymm0[19,23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero356; AVX2-NEXT: vpor %ymm0, %ymm1, %ymm0357; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1358; AVX2-NEXT: vmovq %xmm1, 16(%rax)359; AVX2-NEXT: vmovdqa %xmm0, (%rax)360; AVX2-NEXT: vzeroupper361; AVX2-NEXT: retq362;363; AVX2-FP-LABEL: store_i8_stride6_vf4:364; AVX2-FP: # %bb.0:365; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax366; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm0367; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm1368; AVX2-FP-NEXT: vmovdqa (%r8), %xmm2369; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]370; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]371; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]372; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]373; AVX2-FP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0374; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,zero,ymm0[1,5,9,13],zero,zero,ymm0[2,6,10,14,18,22],zero,zero,zero,zero,ymm0[19,23],zero,zero,zero,zero,zero,zero,zero,zero375; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]376; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,4],zero,zero,zero,zero,ymm0[1,5],zero,zero,zero,zero,zero,zero,ymm0[19,23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero377; AVX2-FP-NEXT: vpor %ymm0, %ymm1, %ymm0378; AVX2-FP-NEXT: vextracti128 $1, %ymm0, %xmm1379; AVX2-FP-NEXT: vmovq %xmm1, 16(%rax)380; AVX2-FP-NEXT: vmovdqa %xmm0, (%rax)381; AVX2-FP-NEXT: vzeroupper382; AVX2-FP-NEXT: retq383;384; AVX2-FCP-LABEL: store_i8_stride6_vf4:385; AVX2-FCP: # %bb.0:386; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax387; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm0388; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm1389; AVX2-FCP-NEXT: vmovdqa (%r8), %xmm2390; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]391; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]392; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]393; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]394; AVX2-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0395; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,zero,ymm0[1,5,9,13],zero,zero,ymm0[2,6,10,14,18,22],zero,zero,zero,zero,ymm0[19,23],zero,zero,zero,zero,zero,zero,zero,zero396; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]397; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,4],zero,zero,zero,zero,ymm0[1,5],zero,zero,zero,zero,zero,zero,ymm0[19,23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero398; AVX2-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0399; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1400; AVX2-FCP-NEXT: vmovq %xmm1, 16(%rax)401; AVX2-FCP-NEXT: vmovdqa %xmm0, (%rax)402; AVX2-FCP-NEXT: vzeroupper403; AVX2-FCP-NEXT: retq404;405; AVX512-LABEL: store_i8_stride6_vf4:406; AVX512: # %bb.0:407; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax408; AVX512-NEXT: vmovdqa (%rdi), %xmm0409; AVX512-NEXT: vmovdqa (%rdx), %xmm1410; AVX512-NEXT: vmovdqa (%r8), %xmm2411; AVX512-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]412; AVX512-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]413; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]414; AVX512-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]415; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0416; AVX512-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,zero,ymm0[1,5,9,13],zero,zero,ymm0[2,6,10,14,18,22],zero,zero,zero,zero,ymm0[19,23,u,u,u,u,u,u,u,u]417; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]418; AVX512-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,4],zero,zero,zero,zero,ymm0[1,5],zero,zero,zero,zero,zero,zero,ymm0[19,23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero419; AVX512-NEXT: vpor %ymm0, %ymm1, %ymm0420; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm1421; AVX512-NEXT: vmovq %xmm1, 16(%rax)422; AVX512-NEXT: vmovdqa %xmm0, (%rax)423; AVX512-NEXT: vzeroupper424; AVX512-NEXT: retq425;426; AVX512-FCP-LABEL: store_i8_stride6_vf4:427; AVX512-FCP: # %bb.0:428; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax429; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm0430; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm1431; AVX512-FCP-NEXT: vmovdqa (%r8), %xmm2432; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]433; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]434; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]435; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]436; AVX512-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0437; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,zero,ymm0[1,5,9,13],zero,zero,ymm0[2,6,10,14,18,22],zero,zero,zero,zero,ymm0[19,23,u,u,u,u,u,u,u,u]438; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]439; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,4],zero,zero,zero,zero,ymm0[1,5],zero,zero,zero,zero,zero,zero,ymm0[19,23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero440; AVX512-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0441; AVX512-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1442; AVX512-FCP-NEXT: vmovq %xmm1, 16(%rax)443; AVX512-FCP-NEXT: vmovdqa %xmm0, (%rax)444; AVX512-FCP-NEXT: vzeroupper445; AVX512-FCP-NEXT: retq446;447; AVX512DQ-LABEL: store_i8_stride6_vf4:448; AVX512DQ: # %bb.0:449; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax450; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm0451; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm1452; AVX512DQ-NEXT: vmovdqa (%r8), %xmm2453; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]454; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]455; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]456; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]457; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0458; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,zero,ymm0[1,5,9,13],zero,zero,ymm0[2,6,10,14,18,22],zero,zero,zero,zero,ymm0[19,23,u,u,u,u,u,u,u,u]459; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]460; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,4],zero,zero,zero,zero,ymm0[1,5],zero,zero,zero,zero,zero,zero,ymm0[19,23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero461; AVX512DQ-NEXT: vpor %ymm0, %ymm1, %ymm0462; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm1463; AVX512DQ-NEXT: vmovq %xmm1, 16(%rax)464; AVX512DQ-NEXT: vmovdqa %xmm0, (%rax)465; AVX512DQ-NEXT: vzeroupper466; AVX512DQ-NEXT: retq467;468; AVX512DQ-FCP-LABEL: store_i8_stride6_vf4:469; AVX512DQ-FCP: # %bb.0:470; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax471; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm0472; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm1473; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %xmm2474; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]475; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]476; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]477; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]478; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0479; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,zero,ymm0[1,5,9,13],zero,zero,ymm0[2,6,10,14,18,22],zero,zero,zero,zero,ymm0[19,23,u,u,u,u,u,u,u,u]480; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]481; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,4],zero,zero,zero,zero,ymm0[1,5],zero,zero,zero,zero,zero,zero,ymm0[19,23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero482; AVX512DQ-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0483; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1484; AVX512DQ-FCP-NEXT: vmovq %xmm1, 16(%rax)485; AVX512DQ-FCP-NEXT: vmovdqa %xmm0, (%rax)486; AVX512DQ-FCP-NEXT: vzeroupper487; AVX512DQ-FCP-NEXT: retq488;489; AVX512BW-LABEL: store_i8_stride6_vf4:490; AVX512BW: # %bb.0:491; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %rax492; AVX512BW-NEXT: vmovdqa (%rdi), %xmm0493; AVX512BW-NEXT: vmovdqa (%rdx), %xmm1494; AVX512BW-NEXT: vmovdqa (%r8), %xmm2495; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]496; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]497; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]498; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]499; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0500; AVX512BW-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,zero,ymm0[1,5,9,13],zero,zero,ymm0[2,6,10,14,18,22],zero,zero,zero,zero,ymm0[19,23],zero,zero,zero,zero,zero,zero,zero,zero501; AVX512BW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]502; AVX512BW-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,4],zero,zero,zero,zero,ymm0[1,5],zero,zero,zero,zero,zero,zero,ymm0[19,23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero503; AVX512BW-NEXT: vpor %ymm1, %ymm0, %ymm0504; AVX512BW-NEXT: vextracti128 $1, %ymm0, %xmm1505; AVX512BW-NEXT: vmovq %xmm1, 16(%rax)506; AVX512BW-NEXT: vmovdqa %xmm0, (%rax)507; AVX512BW-NEXT: vzeroupper508; AVX512BW-NEXT: retq509;510; AVX512BW-FCP-LABEL: store_i8_stride6_vf4:511; AVX512BW-FCP: # %bb.0:512; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax513; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm0514; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm1515; AVX512BW-FCP-NEXT: vmovdqa (%r8), %xmm2516; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]517; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]518; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]519; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]520; AVX512BW-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0521; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,zero,ymm0[1,5,9,13],zero,zero,ymm0[2,6,10,14,18,22],zero,zero,zero,zero,ymm0[19,23],zero,zero,zero,zero,zero,zero,zero,zero522; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]523; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,4],zero,zero,zero,zero,ymm0[1,5],zero,zero,zero,zero,zero,zero,ymm0[19,23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero524; AVX512BW-FCP-NEXT: vpor %ymm1, %ymm0, %ymm0525; AVX512BW-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1526; AVX512BW-FCP-NEXT: vmovq %xmm1, 16(%rax)527; AVX512BW-FCP-NEXT: vmovdqa %xmm0, (%rax)528; AVX512BW-FCP-NEXT: vzeroupper529; AVX512BW-FCP-NEXT: retq530;531; AVX512DQ-BW-LABEL: store_i8_stride6_vf4:532; AVX512DQ-BW: # %bb.0:533; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %rax534; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm0535; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm1536; AVX512DQ-BW-NEXT: vmovdqa (%r8), %xmm2537; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]538; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]539; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]540; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]541; AVX512DQ-BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0542; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,zero,ymm0[1,5,9,13],zero,zero,ymm0[2,6,10,14,18,22],zero,zero,zero,zero,ymm0[19,23],zero,zero,zero,zero,zero,zero,zero,zero543; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]544; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,4],zero,zero,zero,zero,ymm0[1,5],zero,zero,zero,zero,zero,zero,ymm0[19,23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero545; AVX512DQ-BW-NEXT: vpor %ymm1, %ymm0, %ymm0546; AVX512DQ-BW-NEXT: vextracti128 $1, %ymm0, %xmm1547; AVX512DQ-BW-NEXT: vmovq %xmm1, 16(%rax)548; AVX512DQ-BW-NEXT: vmovdqa %xmm0, (%rax)549; AVX512DQ-BW-NEXT: vzeroupper550; AVX512DQ-BW-NEXT: retq551;552; AVX512DQ-BW-FCP-LABEL: store_i8_stride6_vf4:553; AVX512DQ-BW-FCP: # %bb.0:554; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax555; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm0556; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm1557; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r8), %xmm2558; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]559; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]560; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]561; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],mem[0],xmm2[1],mem[1]562; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0563; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,zero,ymm0[1,5,9,13],zero,zero,ymm0[2,6,10,14,18,22],zero,zero,zero,zero,ymm0[19,23],zero,zero,zero,zero,zero,zero,zero,zero564; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]565; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0,4],zero,zero,zero,zero,ymm0[1,5],zero,zero,zero,zero,zero,zero,ymm0[19,23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero566; AVX512DQ-BW-FCP-NEXT: vpor %ymm1, %ymm0, %ymm0567; AVX512DQ-BW-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1568; AVX512DQ-BW-FCP-NEXT: vmovq %xmm1, 16(%rax)569; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm0, (%rax)570; AVX512DQ-BW-FCP-NEXT: vzeroupper571; AVX512DQ-BW-FCP-NEXT: retq572 %in.vec0 = load <4 x i8>, ptr %in.vecptr0, align 64573 %in.vec1 = load <4 x i8>, ptr %in.vecptr1, align 64574 %in.vec2 = load <4 x i8>, ptr %in.vecptr2, align 64575 %in.vec3 = load <4 x i8>, ptr %in.vecptr3, align 64576 %in.vec4 = load <4 x i8>, ptr %in.vecptr4, align 64577 %in.vec5 = load <4 x i8>, ptr %in.vecptr5, align 64578 %1 = shufflevector <4 x i8> %in.vec0, <4 x i8> %in.vec1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>579 %2 = shufflevector <4 x i8> %in.vec2, <4 x i8> %in.vec3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>580 %3 = shufflevector <4 x i8> %in.vec4, <4 x i8> %in.vec5, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>581 %4 = shufflevector <8 x i8> %1, <8 x i8> %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>582 %5 = shufflevector <8 x i8> %3, <8 x i8> 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>583 %6 = shufflevector <16 x i8> %4, <16 x i8> %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>584 %interleaved.vec = shufflevector <24 x i8> %6, <24 x i8> poison, <24 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 2, i32 6, i32 10, i32 14, i32 18, i32 22, i32 3, i32 7, i32 11, i32 15, i32 19, i32 23>585 store <24 x i8> %interleaved.vec, ptr %out.vec, align 64586 ret void587}588 589define void @store_i8_stride6_vf8(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %in.vecptr5, ptr %out.vec) nounwind {590; SSE-LABEL: store_i8_stride6_vf8:591; SSE: # %bb.0:592; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax593; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero594; SSE-NEXT: movq {{.*#+}} xmm1 = mem[0],zero595; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]596; SSE-NEXT: movq {{.*#+}} xmm2 = mem[0],zero597; SSE-NEXT: movq {{.*#+}} xmm1 = mem[0],zero598; SSE-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]599; SSE-NEXT: movq {{.*#+}} xmm1 = mem[0],zero600; SSE-NEXT: movq {{.*#+}} xmm7 = mem[0],zero601; SSE-NEXT: pxor %xmm4, %xmm4602; SSE-NEXT: movdqa %xmm1, %xmm3603; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1],xmm1[2],xmm7[2],xmm1[3],xmm7[3],xmm1[4],xmm7[4],xmm1[5],xmm7[5],xmm1[6],xmm7[6],xmm1[7],xmm7[7]604; SSE-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm4[0],xmm7[1],xmm4[1],xmm7[2],xmm4[2],xmm7[3],xmm4[3],xmm7[4],xmm4[4],xmm7[5],xmm4[5],xmm7[6],xmm4[6],xmm7[7],xmm4[7]605; SSE-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]606; SSE-NEXT: movdqa %xmm3, %xmm4607; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm7[0],xmm4[1],xmm7[1],xmm4[2],xmm7[2],xmm4[3],xmm7[3]608; SSE-NEXT: packuswb %xmm4, %xmm4609; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,3]610; SSE-NEXT: movdqa {{.*#+}} xmm4 = [65535,65535,0,65535,65535,0,65535,65535]611; SSE-NEXT: movdqa %xmm4, %xmm8612; SSE-NEXT: pandn %xmm5, %xmm8613; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm0[0,0,1,1]614; SSE-NEXT: movdqa {{.*#+}} xmm5 = [65535,0,65535,65535,0,65535,65535,0]615; SSE-NEXT: pand %xmm5, %xmm9616; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm2[1,0,2,2,4,5,6,7]617; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm6[0,1,0,1]618; SSE-NEXT: movdqa %xmm5, %xmm6619; SSE-NEXT: pandn %xmm10, %xmm6620; SSE-NEXT: por %xmm9, %xmm6621; SSE-NEXT: pand %xmm4, %xmm6622; SSE-NEXT: por %xmm8, %xmm6623; SSE-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm7[4],xmm3[5],xmm7[5],xmm3[6],xmm7[6],xmm3[7],xmm7[7]624; SSE-NEXT: packuswb %xmm3, %xmm3625; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,1,3,3]626; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm0[3,3,3,3]627; SSE-NEXT: movdqa %xmm4, %xmm8628; SSE-NEXT: pandn %xmm7, %xmm8629; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm2[0,1,2,3,5,6,7,7]630; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[2,2,2,3]631; SSE-NEXT: pand %xmm4, %xmm7632; SSE-NEXT: por %xmm8, %xmm7633; SSE-NEXT: pand %xmm5, %xmm7634; SSE-NEXT: pandn %xmm3, %xmm5635; SSE-NEXT: por %xmm7, %xmm5636; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]637; SSE-NEXT: pand %xmm4, %xmm0638; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[3,3,3,3,4,5,6,7]639; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,4,4]640; SSE-NEXT: pandn %xmm2, %xmm4641; SSE-NEXT: por %xmm0, %xmm4642; SSE-NEXT: movdqa {{.*#+}} xmm0 = [0,65535,65535,0,65535,65535,0,65535]643; SSE-NEXT: pand %xmm0, %xmm4644; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]645; SSE-NEXT: pandn %xmm1, %xmm0646; SSE-NEXT: por %xmm4, %xmm0647; SSE-NEXT: movdqa %xmm5, 32(%rax)648; SSE-NEXT: movdqa %xmm0, 16(%rax)649; SSE-NEXT: movdqa %xmm6, (%rax)650; SSE-NEXT: retq651;652; AVX-LABEL: store_i8_stride6_vf8:653; AVX: # %bb.0:654; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax655; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero656; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero657; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]658; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero659; AVX-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero660; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]661; AVX-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero662; AVX-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero663; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]664; AVX-NEXT: vpshufb {{.*#+}} xmm3 = xmm1[u,u],zero,zero,xmm1[3,11,u,u],zero,zero,xmm1[4,12,u,u],zero,zero665; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm0[u,u,3,11],zero,zero,xmm0[u,u,4,12],zero,zero,xmm0[u,u,5,13]666; AVX-NEXT: vpor %xmm3, %xmm4, %xmm3667; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm2[2,10,u,u,u,u,3,11,u,u,u,u,4,12,u,u]668; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm4[0],xmm3[1,2],xmm4[3],xmm3[4,5],xmm4[6],xmm3[7]669; AVX-NEXT: vpshufb {{.*#+}} xmm4 = zero,zero,xmm1[0,8,u,u],zero,zero,xmm1[1,9,u,u],zero,zero,xmm1[2,10]670; AVX-NEXT: vpshufb {{.*#+}} xmm5 = xmm0[0,8],zero,zero,xmm0[u,u,1,9],zero,zero,xmm0[u,u,2,10],zero,zero671; AVX-NEXT: vpor %xmm4, %xmm5, %xmm4672; AVX-NEXT: vpshufb {{.*#+}} xmm5 = xmm2[u,u,u,u,0,8,u,u,u,u,1,9,u,u,u,u]673; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2],xmm4[3,4],xmm5[5],xmm4[6,7]674; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm3675; AVX-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,u,6,14],zero,zero,xmm0[u,u,7,15],zero,zero,xmm0[u,u]676; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[5,13,u,u],zero,zero,xmm1[6,14,u,u],zero,zero,xmm1[7,15,u,u]677; AVX-NEXT: vpor %xmm0, %xmm1, %xmm0678; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm2[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15]679; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]680; AVX-NEXT: vmovdqa %xmm0, 32(%rax)681; AVX-NEXT: vmovaps %ymm3, (%rax)682; AVX-NEXT: vzeroupper683; AVX-NEXT: retq684;685; AVX2-LABEL: store_i8_stride6_vf8:686; AVX2: # %bb.0:687; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax688; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero689; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero690; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]691; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero692; AVX2-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero693; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]694; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2695; AVX2-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero696; AVX2-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero697; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]698; AVX2-NEXT: vmovdqa {{.*#+}} ymm4 = [0,8,0,8,u,u,1,9,1,9,u,u,2,10,2,10,u,u,3,11,3,11,u,u,4,12,4,12,u,u,5,13]699; AVX2-NEXT: vpshufb %ymm4, %ymm2, %ymm5700; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]701; AVX2-NEXT: vpshufb %ymm4, %ymm2, %ymm2702; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0],ymm2[1],ymm5[2,3],ymm2[4],ymm5[5,6],ymm2[7],ymm5[8],ymm2[9],ymm5[10,11],ymm2[12],ymm5[13,14],ymm2[15]703; AVX2-NEXT: vpshufb {{.*#+}} xmm4 = xmm3[2,10,1,9,0,8,3,11,u,u,u,u,4,12,u,u]704; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]705; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]706; AVX2-NEXT: vpblendvb %ymm5, %ymm2, %ymm4, %ymm2707; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,u,6,14],zero,zero,xmm0[u,u,7,15],zero,zero,xmm0[u,u]708; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[5,13,u,u],zero,zero,xmm1[6,14,u,u],zero,zero,xmm1[7,15,u,u]709; AVX2-NEXT: vpor %xmm0, %xmm1, %xmm0710; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm3[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15]711; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]712; AVX2-NEXT: vmovdqa %xmm0, 32(%rax)713; AVX2-NEXT: vmovdqa %ymm2, (%rax)714; AVX2-NEXT: vzeroupper715; AVX2-NEXT: retq716;717; AVX2-FP-LABEL: store_i8_stride6_vf8:718; AVX2-FP: # %bb.0:719; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax720; AVX2-FP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero721; AVX2-FP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero722; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]723; AVX2-FP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero724; AVX2-FP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero725; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]726; AVX2-FP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2727; AVX2-FP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero728; AVX2-FP-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero729; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]730; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,8,0,8,u,u,1,9,1,9,u,u,2,10,2,10,u,u,3,11,3,11,u,u,4,12,4,12,u,u,5,13]731; AVX2-FP-NEXT: vpshufb %ymm4, %ymm2, %ymm5732; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]733; AVX2-FP-NEXT: vpshufb %ymm4, %ymm2, %ymm2734; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0],ymm2[1],ymm5[2,3],ymm2[4],ymm5[5,6],ymm2[7],ymm5[8],ymm2[9],ymm5[10,11],ymm2[12],ymm5[13,14],ymm2[15]735; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm4 = xmm3[2,10,1,9,0,8,3,11,u,u,u,u,4,12,u,u]736; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]737; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]738; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm2, %ymm4, %ymm2739; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,u,6,14],zero,zero,xmm0[u,u,7,15],zero,zero,xmm0[u,u]740; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[5,13,u,u],zero,zero,xmm1[6,14,u,u],zero,zero,xmm1[7,15,u,u]741; AVX2-FP-NEXT: vpor %xmm0, %xmm1, %xmm0742; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm1 = xmm3[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15]743; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]744; AVX2-FP-NEXT: vmovdqa %xmm0, 32(%rax)745; AVX2-FP-NEXT: vmovdqa %ymm2, (%rax)746; AVX2-FP-NEXT: vzeroupper747; AVX2-FP-NEXT: retq748;749; AVX2-FCP-LABEL: store_i8_stride6_vf8:750; AVX2-FCP: # %bb.0:751; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax752; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero753; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero754; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]755; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero756; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero757; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]758; AVX2-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2759; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero760; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero761; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]762; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,8,0,8,u,u,1,9,1,9,u,u,2,10,2,10,u,u,3,11,3,11,u,u,4,12,4,12,u,u,5,13]763; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm5764; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]765; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm2766; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0],ymm2[1],ymm5[2,3],ymm2[4],ymm5[5,6],ymm2[7],ymm5[8],ymm2[9],ymm5[10,11],ymm2[12],ymm5[13,14],ymm2[15]767; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm3[2,10,1,9,0,8,3,11,u,u,u,u,4,12,u,u]768; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]769; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]770; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm2, %ymm4, %ymm2771; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,u,6,14],zero,zero,xmm0[u,u,7,15],zero,zero,xmm0[u,u]772; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[5,13,u,u],zero,zero,xmm1[6,14,u,u],zero,zero,xmm1[7,15,u,u]773; AVX2-FCP-NEXT: vpor %xmm0, %xmm1, %xmm0774; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm3[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15]775; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]776; AVX2-FCP-NEXT: vmovdqa %xmm0, 32(%rax)777; AVX2-FCP-NEXT: vmovdqa %ymm2, (%rax)778; AVX2-FCP-NEXT: vzeroupper779; AVX2-FCP-NEXT: retq780;781; AVX512-LABEL: store_i8_stride6_vf8:782; AVX512: # %bb.0:783; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax784; AVX512-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero785; AVX512-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero786; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]787; AVX512-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero788; AVX512-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero789; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]790; AVX512-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero791; AVX512-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero792; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]793; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm3794; AVX512-NEXT: vmovdqa {{.*#+}} ymm4 = [0,8,0,8,u,u,1,9,1,9,u,u,2,10,2,10,u,u,3,11,3,11,u,u,4,12,4,12,u,u,5,13]795; AVX512-NEXT: vpshufb %ymm4, %ymm3, %ymm5796; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,0,1]797; AVX512-NEXT: vpshufb %ymm4, %ymm3, %ymm3798; AVX512-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0],ymm3[1],ymm5[2,3],ymm3[4],ymm5[5,6],ymm3[7],ymm5[8],ymm3[9],ymm5[10,11],ymm3[12],ymm5[13,14],ymm3[15]799; AVX512-NEXT: vpshufb {{.*#+}} xmm4 = xmm2[2,10,1,9,0,8,3,11,u,u,u,u,4,12,u,u]800; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]801; AVX512-NEXT: vpternlogq {{.*#+}} ymm4 = ymm4 ^ (mem & (ymm4 ^ ymm3))802; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,u,6,14],zero,zero,xmm0[u,u,7,15],zero,zero,xmm0[u,u]803; AVX512-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[5,13,u,u],zero,zero,xmm1[6,14,u,u],zero,zero,xmm1[7,15,u,u]804; AVX512-NEXT: vpor %xmm0, %xmm1, %xmm0805; AVX512-NEXT: vpshufb {{.*#+}} xmm1 = xmm2[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15]806; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]807; AVX512-NEXT: vinserti32x4 $2, %xmm0, %zmm4, %zmm1808; AVX512-NEXT: vmovdqa %xmm0, 32(%rax)809; AVX512-NEXT: vmovdqa %ymm1, (%rax)810; AVX512-NEXT: vzeroupper811; AVX512-NEXT: retq812;813; AVX512-FCP-LABEL: store_i8_stride6_vf8:814; AVX512-FCP: # %bb.0:815; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax816; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero817; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero818; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]819; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero820; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero821; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]822; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero823; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero824; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]825; AVX512-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm3826; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,8,0,8,u,u,1,9,1,9,u,u,2,10,2,10,u,u,3,11,3,11,u,u,4,12,4,12,u,u,5,13]827; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm5828; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,0,1]829; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm3830; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0],ymm3[1],ymm5[2,3],ymm3[4],ymm5[5,6],ymm3[7],ymm5[8],ymm3[9],ymm5[10,11],ymm3[12],ymm5[13,14],ymm3[15]831; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm2[2,10,1,9,0,8,3,11,u,u,u,u,4,12,u,u]832; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]833; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm4 = ymm4 ^ (mem & (ymm4 ^ ymm3))834; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,u,6,14],zero,zero,xmm0[u,u,7,15],zero,zero,xmm0[u,u]835; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[5,13,u,u],zero,zero,xmm1[6,14,u,u],zero,zero,xmm1[7,15,u,u]836; AVX512-FCP-NEXT: vpor %xmm0, %xmm1, %xmm0837; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm2[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15]838; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]839; AVX512-FCP-NEXT: vinserti32x4 $2, %xmm0, %zmm4, %zmm1840; AVX512-FCP-NEXT: vmovdqa %xmm0, 32(%rax)841; AVX512-FCP-NEXT: vmovdqa %ymm1, (%rax)842; AVX512-FCP-NEXT: vzeroupper843; AVX512-FCP-NEXT: retq844;845; AVX512DQ-LABEL: store_i8_stride6_vf8:846; AVX512DQ: # %bb.0:847; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax848; AVX512DQ-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero849; AVX512DQ-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero850; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]851; AVX512DQ-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero852; AVX512DQ-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero853; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]854; AVX512DQ-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero855; AVX512DQ-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero856; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]857; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm3858; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm4 = [0,8,0,8,u,u,1,9,1,9,u,u,2,10,2,10,u,u,3,11,3,11,u,u,4,12,4,12,u,u,5,13]859; AVX512DQ-NEXT: vpshufb %ymm4, %ymm3, %ymm5860; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,0,1]861; AVX512DQ-NEXT: vpshufb %ymm4, %ymm3, %ymm3862; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0],ymm3[1],ymm5[2,3],ymm3[4],ymm5[5,6],ymm3[7],ymm5[8],ymm3[9],ymm5[10,11],ymm3[12],ymm5[13,14],ymm3[15]863; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm4 = xmm2[2,10,1,9,0,8,3,11,u,u,u,u,4,12,u,u]864; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]865; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm4 = ymm4 ^ (mem & (ymm4 ^ ymm3))866; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,u,6,14],zero,zero,xmm0[u,u,7,15],zero,zero,xmm0[u,u]867; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[5,13,u,u],zero,zero,xmm1[6,14,u,u],zero,zero,xmm1[7,15,u,u]868; AVX512DQ-NEXT: vpor %xmm0, %xmm1, %xmm0869; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm1 = xmm2[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15]870; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]871; AVX512DQ-NEXT: vinserti32x4 $2, %xmm0, %zmm4, %zmm1872; AVX512DQ-NEXT: vmovdqa %xmm0, 32(%rax)873; AVX512DQ-NEXT: vmovdqa %ymm1, (%rax)874; AVX512DQ-NEXT: vzeroupper875; AVX512DQ-NEXT: retq876;877; AVX512DQ-FCP-LABEL: store_i8_stride6_vf8:878; AVX512DQ-FCP: # %bb.0:879; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax880; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero881; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero882; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]883; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero884; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero885; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]886; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero887; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero888; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]889; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm3890; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,8,0,8,u,u,1,9,1,9,u,u,2,10,2,10,u,u,3,11,3,11,u,u,4,12,4,12,u,u,5,13]891; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm5892; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,0,1]893; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm3894; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0],ymm3[1],ymm5[2,3],ymm3[4],ymm5[5,6],ymm3[7],ymm5[8],ymm3[9],ymm5[10,11],ymm3[12],ymm5[13,14],ymm3[15]895; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm2[2,10,1,9,0,8,3,11,u,u,u,u,4,12,u,u]896; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]897; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm4 = ymm4 ^ (mem & (ymm4 ^ ymm3))898; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,u,6,14],zero,zero,xmm0[u,u,7,15],zero,zero,xmm0[u,u]899; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[5,13,u,u],zero,zero,xmm1[6,14,u,u],zero,zero,xmm1[7,15,u,u]900; AVX512DQ-FCP-NEXT: vpor %xmm0, %xmm1, %xmm0901; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm2[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15]902; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]903; AVX512DQ-FCP-NEXT: vinserti32x4 $2, %xmm0, %zmm4, %zmm1904; AVX512DQ-FCP-NEXT: vmovdqa %xmm0, 32(%rax)905; AVX512DQ-FCP-NEXT: vmovdqa %ymm1, (%rax)906; AVX512DQ-FCP-NEXT: vzeroupper907; AVX512DQ-FCP-NEXT: retq908;909; AVX512BW-LABEL: store_i8_stride6_vf8:910; AVX512BW: # %bb.0:911; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %rax912; AVX512BW-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero913; AVX512BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero914; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]915; AVX512BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero916; AVX512BW-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero917; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]918; AVX512BW-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero919; AVX512BW-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero920; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]921; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm3922; AVX512BW-NEXT: vmovdqa {{.*#+}} ymm4 = [0,8,0,8,u,u,1,9,1,9,u,u,2,10,2,10,u,u,3,11,3,11,u,u,4,12,4,12,u,u,5,13]923; AVX512BW-NEXT: vpshufb %ymm4, %ymm3, %ymm5924; AVX512BW-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,0,1]925; AVX512BW-NEXT: vpshufb %ymm4, %ymm3, %ymm3926; AVX512BW-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0],ymm3[1],ymm5[2,3],ymm3[4],ymm5[5,6],ymm3[7],ymm5[8],ymm3[9],ymm5[10,11],ymm3[12],ymm5[13,14],ymm3[15]927; AVX512BW-NEXT: vpshufb {{.*#+}} xmm4 = xmm2[2,10,1,9,0,8,3,11,u,u,u,u,4,12,u,u]928; AVX512BW-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]929; AVX512BW-NEXT: movw $18724, %cx # imm = 0x4924930; AVX512BW-NEXT: kmovd %ecx, %k1931; AVX512BW-NEXT: vmovdqu16 %ymm4, %ymm3 {%k1}932; AVX512BW-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,u,6,14],zero,zero,xmm0[u,u,7,15],zero,zero,xmm0[u,u]933; AVX512BW-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[5,13,u,u],zero,zero,xmm1[6,14,u,u],zero,zero,xmm1[7,15,u,u]934; AVX512BW-NEXT: vpor %xmm0, %xmm1, %xmm0935; AVX512BW-NEXT: vpshufb {{.*#+}} xmm1 = xmm2[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15]936; AVX512BW-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]937; AVX512BW-NEXT: vinserti32x4 $2, %xmm0, %zmm3, %zmm1938; AVX512BW-NEXT: vmovdqa %xmm0, 32(%rax)939; AVX512BW-NEXT: vmovdqa %ymm1, (%rax)940; AVX512BW-NEXT: vzeroupper941; AVX512BW-NEXT: retq942;943; AVX512BW-FCP-LABEL: store_i8_stride6_vf8:944; AVX512BW-FCP: # %bb.0:945; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax946; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero947; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero948; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]949; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero950; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero951; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]952; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero953; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero954; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]955; AVX512BW-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm3956; AVX512BW-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,8,0,8,u,u,1,9,1,9,u,u,2,10,2,10,u,u,3,11,3,11,u,u,4,12,4,12,u,u,5,13]957; AVX512BW-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm5958; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,0,1]959; AVX512BW-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm3960; AVX512BW-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0],ymm3[1],ymm5[2,3],ymm3[4],ymm5[5,6],ymm3[7],ymm5[8],ymm3[9],ymm5[10,11],ymm3[12],ymm5[13,14],ymm3[15]961; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm2[2,10,1,9,0,8,3,11,u,u,u,u,4,12,u,u]962; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]963; AVX512BW-FCP-NEXT: movw $18724, %cx # imm = 0x4924964; AVX512BW-FCP-NEXT: kmovd %ecx, %k1965; AVX512BW-FCP-NEXT: vmovdqu16 %ymm4, %ymm3 {%k1}966; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,u,6,14],zero,zero,xmm0[u,u,7,15],zero,zero,xmm0[u,u]967; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[5,13,u,u],zero,zero,xmm1[6,14,u,u],zero,zero,xmm1[7,15,u,u]968; AVX512BW-FCP-NEXT: vpor %xmm0, %xmm1, %xmm0969; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm2[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15]970; AVX512BW-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]971; AVX512BW-FCP-NEXT: vinserti32x4 $2, %xmm0, %zmm3, %zmm1972; AVX512BW-FCP-NEXT: vmovdqa %xmm0, 32(%rax)973; AVX512BW-FCP-NEXT: vmovdqa %ymm1, (%rax)974; AVX512BW-FCP-NEXT: vzeroupper975; AVX512BW-FCP-NEXT: retq976;977; AVX512DQ-BW-LABEL: store_i8_stride6_vf8:978; AVX512DQ-BW: # %bb.0:979; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %rax980; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero981; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero982; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]983; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero984; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero985; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]986; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero987; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero988; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]989; AVX512DQ-BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm3990; AVX512DQ-BW-NEXT: vmovdqa {{.*#+}} ymm4 = [0,8,0,8,u,u,1,9,1,9,u,u,2,10,2,10,u,u,3,11,3,11,u,u,4,12,4,12,u,u,5,13]991; AVX512DQ-BW-NEXT: vpshufb %ymm4, %ymm3, %ymm5992; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,0,1]993; AVX512DQ-BW-NEXT: vpshufb %ymm4, %ymm3, %ymm3994; AVX512DQ-BW-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0],ymm3[1],ymm5[2,3],ymm3[4],ymm5[5,6],ymm3[7],ymm5[8],ymm3[9],ymm5[10,11],ymm3[12],ymm5[13,14],ymm3[15]995; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm4 = xmm2[2,10,1,9,0,8,3,11,u,u,u,u,4,12,u,u]996; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]997; AVX512DQ-BW-NEXT: movw $18724, %cx # imm = 0x4924998; AVX512DQ-BW-NEXT: kmovd %ecx, %k1999; AVX512DQ-BW-NEXT: vmovdqu16 %ymm4, %ymm3 {%k1}1000; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,u,6,14],zero,zero,xmm0[u,u,7,15],zero,zero,xmm0[u,u]1001; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[5,13,u,u],zero,zero,xmm1[6,14,u,u],zero,zero,xmm1[7,15,u,u]1002; AVX512DQ-BW-NEXT: vpor %xmm0, %xmm1, %xmm01003; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm1 = xmm2[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15]1004; AVX512DQ-BW-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]1005; AVX512DQ-BW-NEXT: vinserti32x4 $2, %xmm0, %zmm3, %zmm11006; AVX512DQ-BW-NEXT: vmovdqa %xmm0, 32(%rax)1007; AVX512DQ-BW-NEXT: vmovdqa %ymm1, (%rax)1008; AVX512DQ-BW-NEXT: vzeroupper1009; AVX512DQ-BW-NEXT: retq1010;1011; AVX512DQ-BW-FCP-LABEL: store_i8_stride6_vf8:1012; AVX512DQ-BW-FCP: # %bb.0:1013; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax1014; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero1015; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero1016; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]1017; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero1018; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero1019; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]1020; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero1021; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero1022; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm3[0],xmm2[0]1023; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm31024; AVX512DQ-BW-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,8,0,8,u,u,1,9,1,9,u,u,2,10,2,10,u,u,3,11,3,11,u,u,4,12,4,12,u,u,5,13]1025; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm51026; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,3,0,1]1027; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm31028; AVX512DQ-BW-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0],ymm3[1],ymm5[2,3],ymm3[4],ymm5[5,6],ymm3[7],ymm5[8],ymm3[9],ymm5[10,11],ymm3[12],ymm5[13,14],ymm3[15]1029; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm2[2,10,1,9,0,8,3,11,u,u,u,u,4,12,u,u]1030; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]1031; AVX512DQ-BW-FCP-NEXT: movw $18724, %cx # imm = 0x49241032; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k11033; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %ymm4, %ymm3 {%k1}1034; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,u,6,14],zero,zero,xmm0[u,u,7,15],zero,zero,xmm0[u,u]1035; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[5,13,u,u],zero,zero,xmm1[6,14,u,u],zero,zero,xmm1[7,15,u,u]1036; AVX512DQ-BW-FCP-NEXT: vpor %xmm0, %xmm1, %xmm01037; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm2[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15]1038; AVX512DQ-BW-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]1039; AVX512DQ-BW-FCP-NEXT: vinserti32x4 $2, %xmm0, %zmm3, %zmm11040; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm0, 32(%rax)1041; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm1, (%rax)1042; AVX512DQ-BW-FCP-NEXT: vzeroupper1043; AVX512DQ-BW-FCP-NEXT: retq1044 %in.vec0 = load <8 x i8>, ptr %in.vecptr0, align 641045 %in.vec1 = load <8 x i8>, ptr %in.vecptr1, align 641046 %in.vec2 = load <8 x i8>, ptr %in.vecptr2, align 641047 %in.vec3 = load <8 x i8>, ptr %in.vecptr3, align 641048 %in.vec4 = load <8 x i8>, ptr %in.vecptr4, align 641049 %in.vec5 = load <8 x i8>, ptr %in.vecptr5, align 641050 %1 = shufflevector <8 x i8> %in.vec0, <8 x i8> %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>1051 %2 = shufflevector <8 x i8> %in.vec2, <8 x i8> %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>1052 %3 = shufflevector <8 x i8> %in.vec4, <8 x i8> %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>1053 %4 = shufflevector <16 x i8> %1, <16 x i8> %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>1054 %5 = shufflevector <16 x i8> %3, <16 x i8> 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>1055 %6 = shufflevector <32 x i8> %4, <32 x i8> %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>1056 %interleaved.vec = shufflevector <48 x i8> %6, <48 x i8> poison, <48 x i32> <i32 0, i32 8, i32 16, i32 24, i32 32, i32 40, i32 1, i32 9, i32 17, i32 25, i32 33, i32 41, i32 2, i32 10, i32 18, i32 26, i32 34, i32 42, i32 3, i32 11, i32 19, i32 27, i32 35, i32 43, i32 4, i32 12, i32 20, i32 28, i32 36, i32 44, i32 5, i32 13, i32 21, i32 29, i32 37, i32 45, i32 6, i32 14, i32 22, i32 30, i32 38, i32 46, i32 7, i32 15, i32 23, i32 31, i32 39, i32 47>1057 store <48 x i8> %interleaved.vec, ptr %out.vec, align 641058 ret void1059}1060 1061define void @store_i8_stride6_vf16(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %in.vecptr5, ptr %out.vec) nounwind {1062; SSE-LABEL: store_i8_stride6_vf16:1063; SSE: # %bb.0:1064; SSE-NEXT: movdqa (%rdi), %xmm121065; SSE-NEXT: movdqa (%rsi), %xmm81066; SSE-NEXT: movdqa (%rdx), %xmm131067; SSE-NEXT: movdqa (%rcx), %xmm21068; SSE-NEXT: movdqa (%r8), %xmm111069; SSE-NEXT: movdqa (%r9), %xmm101070; SSE-NEXT: movdqa %xmm12, %xmm01071; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],xmm8[3],xmm0[4],xmm8[4],xmm0[5],xmm8[5],xmm0[6],xmm8[6],xmm0[7],xmm8[7]1072; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1073; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]1074; SSE-NEXT: movdqa {{.*#+}} xmm4 = [65535,0,65535,65535,0,65535,65535,0]1075; SSE-NEXT: pand %xmm4, %xmm01076; SSE-NEXT: movdqa %xmm13, %xmm71077; SSE-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm2[0],xmm7[1],xmm2[1],xmm7[2],xmm2[2],xmm7[3],xmm2[3],xmm7[4],xmm2[4],xmm7[5],xmm2[5],xmm7[6],xmm2[6],xmm7[7],xmm2[7]1078; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm7[1,0,2,2,4,5,6,7]1079; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,1]1080; SSE-NEXT: movdqa %xmm4, %xmm31081; SSE-NEXT: pandn %xmm1, %xmm31082; SSE-NEXT: por %xmm0, %xmm31083; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,0,65535,65535,0,65535,65535]1084; SSE-NEXT: pand %xmm1, %xmm31085; SSE-NEXT: movdqa %xmm11, %xmm61086; SSE-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1087; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,0,0]1088; SSE-NEXT: movdqa %xmm1, %xmm91089; SSE-NEXT: pandn %xmm0, %xmm91090; SSE-NEXT: por %xmm3, %xmm91091; SSE-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]1092; SSE-NEXT: pand %xmm3, %xmm91093; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm10[0],xmm0[1],xmm10[1],xmm0[2],xmm10[2],xmm0[3],xmm10[3],xmm0[4],xmm10[4],xmm0[5],xmm10[5],xmm0[6],xmm10[6],xmm0[7],xmm10[7]1094; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1095; SSE-NEXT: pshufd {{.*#+}} xmm14 = xmm0[0,0,0,0]1096; SSE-NEXT: movdqa %xmm3, %xmm01097; SSE-NEXT: pandn %xmm14, %xmm01098; SSE-NEXT: por %xmm9, %xmm01099; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1100; SSE-NEXT: punpckhbw {{.*#+}} xmm12 = xmm12[8],xmm8[8],xmm12[9],xmm8[9],xmm12[10],xmm8[10],xmm12[11],xmm8[11],xmm12[12],xmm8[12],xmm12[13],xmm8[13],xmm12[14],xmm8[14],xmm12[15],xmm8[15]1101; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm12[1,1,2,2]1102; SSE-NEXT: pand %xmm1, %xmm81103; SSE-NEXT: punpckhbw {{.*#+}} xmm13 = xmm13[8],xmm2[8],xmm13[9],xmm2[9],xmm13[10],xmm2[10],xmm13[11],xmm2[11],xmm13[12],xmm2[12],xmm13[13],xmm2[13],xmm13[14],xmm2[14],xmm13[15],xmm2[15]1104; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm13[3,3,3,3,4,5,6,7]1105; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,4,4]1106; SSE-NEXT: movdqa %xmm1, %xmm91107; SSE-NEXT: pandn %xmm2, %xmm91108; SSE-NEXT: por %xmm8, %xmm91109; SSE-NEXT: movdqa {{.*#+}} xmm8 = [0,65535,65535,0,65535,65535,0,65535]1110; SSE-NEXT: pand %xmm8, %xmm91111; SSE-NEXT: punpckhbw {{.*#+}} xmm11 = xmm11[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]1112; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm11[1,1,2,2]1113; SSE-NEXT: movdqa %xmm8, %xmm141114; SSE-NEXT: pandn %xmm2, %xmm141115; SSE-NEXT: por %xmm9, %xmm141116; SSE-NEXT: movdqa {{.*#+}} xmm9 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]1117; SSE-NEXT: punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm10[8],xmm2[9],xmm10[9],xmm2[10],xmm10[10],xmm2[11],xmm10[11],xmm2[12],xmm10[12],xmm2[13],xmm10[13],xmm2[14],xmm10[14],xmm2[15],xmm10[15]1118; SSE-NEXT: pshufd {{.*#+}} xmm15 = xmm2[1,1,2,2]1119; SSE-NEXT: movdqa %xmm9, %xmm101120; SSE-NEXT: pandn %xmm15, %xmm101121; SSE-NEXT: pand %xmm9, %xmm141122; SSE-NEXT: por %xmm14, %xmm101123; SSE-NEXT: pshufd {{.*#+}} xmm14 = xmm12[3,3,3,3]1124; SSE-NEXT: movdqa %xmm1, %xmm151125; SSE-NEXT: pandn %xmm14, %xmm151126; SSE-NEXT: pshufhw {{.*#+}} xmm14 = xmm13[0,1,2,3,5,6,7,7]1127; SSE-NEXT: pshufd {{.*#+}} xmm14 = xmm14[2,2,2,3]1128; SSE-NEXT: pand %xmm1, %xmm141129; SSE-NEXT: por %xmm15, %xmm141130; SSE-NEXT: pshufd {{.*#+}} xmm15 = xmm11[2,2,3,3]1131; SSE-NEXT: movdqa %xmm4, %xmm51132; SSE-NEXT: pandn %xmm15, %xmm51133; SSE-NEXT: pand %xmm4, %xmm141134; SSE-NEXT: por %xmm14, %xmm51135; SSE-NEXT: movdqa {{.*#+}} xmm14 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]1136; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm2[2,2,3,3]1137; SSE-NEXT: movdqa %xmm14, %xmm151138; SSE-NEXT: pandn %xmm0, %xmm151139; SSE-NEXT: pand %xmm14, %xmm51140; SSE-NEXT: por %xmm5, %xmm151141; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm13[1,0,2,2,4,5,6,7]1142; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]1143; SSE-NEXT: movdqa %xmm4, %xmm51144; SSE-NEXT: pandn %xmm0, %xmm51145; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm12[0,0,1,1]1146; SSE-NEXT: pand %xmm4, %xmm01147; SSE-NEXT: por %xmm0, %xmm51148; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm11[0,0,0,0]1149; SSE-NEXT: movdqa %xmm1, %xmm111150; SSE-NEXT: pandn %xmm0, %xmm111151; SSE-NEXT: pand %xmm1, %xmm51152; SSE-NEXT: por %xmm5, %xmm111153; SSE-NEXT: pand %xmm3, %xmm111154; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,0,0,0]1155; SSE-NEXT: pandn %xmm0, %xmm31156; SSE-NEXT: por %xmm11, %xmm31157; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload1158; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm5[3,3,3,3]1159; SSE-NEXT: movdqa %xmm1, %xmm21160; SSE-NEXT: pandn %xmm0, %xmm21161; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm7[0,1,2,3,5,6,7,7]1162; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,2,2,3]1163; SSE-NEXT: pand %xmm1, %xmm01164; SSE-NEXT: por %xmm2, %xmm01165; SSE-NEXT: pand %xmm4, %xmm01166; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm6[2,2,3,3]1167; SSE-NEXT: pandn %xmm2, %xmm41168; SSE-NEXT: por %xmm0, %xmm41169; SSE-NEXT: pand %xmm14, %xmm41170; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload1171; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm11[2,2,3,3]1172; SSE-NEXT: pandn %xmm0, %xmm141173; SSE-NEXT: por %xmm4, %xmm141174; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm5[1,1,2,2]1175; SSE-NEXT: pand %xmm1, %xmm01176; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm7[3,3,3,3,4,5,6,7]1177; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,4,4]1178; SSE-NEXT: pandn %xmm2, %xmm11179; SSE-NEXT: por %xmm0, %xmm11180; SSE-NEXT: pand %xmm8, %xmm11181; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,2,2]1182; SSE-NEXT: pandn %xmm0, %xmm81183; SSE-NEXT: por %xmm1, %xmm81184; SSE-NEXT: pand %xmm9, %xmm81185; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm11[1,1,2,2]1186; SSE-NEXT: pandn %xmm0, %xmm91187; SSE-NEXT: por %xmm8, %xmm91188; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax1189; SSE-NEXT: movdqa %xmm9, 16(%rax)1190; SSE-NEXT: movdqa %xmm14, 32(%rax)1191; SSE-NEXT: movdqa %xmm3, 48(%rax)1192; SSE-NEXT: movdqa %xmm15, 80(%rax)1193; SSE-NEXT: movdqa %xmm10, 64(%rax)1194; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1195; SSE-NEXT: movaps %xmm0, (%rax)1196; SSE-NEXT: retq1197;1198; AVX-LABEL: store_i8_stride6_vf16:1199; AVX: # %bb.0:1200; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax1201; AVX-NEXT: vmovdqa (%rdi), %xmm11202; AVX-NEXT: vmovdqa (%rsi), %xmm21203; AVX-NEXT: vmovdqa (%rdx), %xmm31204; AVX-NEXT: vmovdqa (%rcx), %xmm41205; AVX-NEXT: vmovdqa (%r8), %xmm51206; AVX-NEXT: vmovdqa (%r9), %xmm61207; AVX-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]1208; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm7[1,1,2,2]1209; AVX-NEXT: vpunpcklbw {{.*#+}} xmm8 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]1210; AVX-NEXT: vpshuflw {{.*#+}} xmm9 = xmm8[3,3,3,3,4,5,6,7]1211; AVX-NEXT: vpshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,4,4,4]1212; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm9[2],xmm0[3,4],xmm9[5],xmm0[6,7]1213; AVX-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3],xmm5[4],xmm6[4],xmm5[5],xmm6[5],xmm5[6],xmm6[6],xmm5[7],xmm6[7]1214; AVX-NEXT: vpshufd {{.*#+}} xmm10 = xmm9[1,1,2,2]1215; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm10[0],xmm0[1,2],xmm10[3],xmm0[4,5],xmm10[6],xmm0[7]1216; AVX-NEXT: vpshufd {{.*#+}} xmm10 = xmm7[0,0,1,1]1217; AVX-NEXT: vpshuflw {{.*#+}} xmm11 = xmm8[1,0,2,2,4,5,6,7]1218; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm11[0,1,0,1]1219; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0],xmm11[1],xmm10[2,3],xmm11[4],xmm10[5,6],xmm11[7]1220; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm9[0,0,0,0]1221; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0,1],xmm11[2],xmm10[3,4],xmm11[5],xmm10[6,7]1222; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm10, %ymm01223; AVX-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]1224; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm1[0,0,1,1]1225; AVX-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm3[8],xmm4[8],xmm3[9],xmm4[9],xmm3[10],xmm4[10],xmm3[11],xmm4[11],xmm3[12],xmm4[12],xmm3[13],xmm4[13],xmm3[14],xmm4[14],xmm3[15],xmm4[15]1226; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm3[1,0,2,2,4,5,6,7]1227; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,1,0,1]1228; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2,3],xmm4[4],xmm2[5,6],xmm4[7]1229; AVX-NEXT: vpunpckhbw {{.*#+}} xmm4 = xmm5[8],xmm6[8],xmm5[9],xmm6[9],xmm5[10],xmm6[10],xmm5[11],xmm6[11],xmm5[12],xmm6[12],xmm5[13],xmm6[13],xmm5[14],xmm6[14],xmm5[15],xmm6[15]1230; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm4[0,0,0,0]1231; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm5[2],xmm2[3,4],xmm5[5],xmm2[6,7]1232; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm7[3,3,3,3]1233; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm8[0,1,2,3,5,6,7,7]1234; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[2,2,2,3]1235; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm6[0,1],xmm5[2],xmm6[3,4],xmm5[5],xmm6[6,7]1236; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm9[2,2,3,3]1237; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm6[1],xmm5[2,3],xmm6[4],xmm5[5,6],xmm6[7]1238; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm5, %ymm21239; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm1[3,3,3,3]1240; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm3[0,1,2,3,5,6,7,7]1241; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[2,2,2,3]1242; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm6[0,1],xmm5[2],xmm6[3,4],xmm5[5],xmm6[6,7]1243; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm4[2,2,3,3]1244; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm6[1],xmm5[2,3],xmm6[4],xmm5[5,6],xmm6[7]1245; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]1246; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[3,3,3,3,4,5,6,7]1247; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]1248; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm3[2],xmm1[3,4],xmm3[5],xmm1[6,7]1249; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm4[1,1,2,2]1250; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0],xmm1[1,2],xmm3[3],xmm1[4,5],xmm3[6],xmm1[7]1251; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm1, %ymm11252; AVX-NEXT: vmovaps %ymm1, 64(%rax)1253; AVX-NEXT: vmovaps %ymm2, 32(%rax)1254; AVX-NEXT: vmovaps %ymm0, (%rax)1255; AVX-NEXT: vzeroupper1256; AVX-NEXT: retq1257;1258; AVX2-LABEL: store_i8_stride6_vf16:1259; AVX2: # %bb.0:1260; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax1261; AVX2-NEXT: vmovdqa (%rdi), %xmm01262; AVX2-NEXT: vmovdqa (%rdx), %xmm11263; AVX2-NEXT: vmovdqa (%r8), %xmm21264; AVX2-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01265; AVX2-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11266; AVX2-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm21267; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm1[0,2,0,2]1268; AVX2-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,ymm3[0,8],zero,zero,zero,zero,ymm3[1,9],zero,zero,zero,zero,ymm3[2,10],zero,zero,zero,zero,ymm3[19,27],zero,zero,zero,zero,ymm3[20,28],zero,zero,zero,zero1269; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,0,2]1270; AVX2-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,zero,zero,ymm4[1,9],zero,zero,zero,zero,ymm4[2,10],zero,zero,zero,zero,ymm4[19,27],zero,zero,zero,zero,ymm4[20,28],zero,zero,zero,zero,ymm4[21,29]1271; AVX2-NEXT: vpor %ymm3, %ymm4, %ymm31272; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,2,0,2]1273; AVX2-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,0,8,u,u,u,u,1,9,u,u,u,u,18,26,u,u,u,u,19,27,u,u,u,u,20,28,u,u]1274; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]1275; AVX2-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm31276; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,1,3]1277; AVX2-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[6,14],zero,zero,zero,zero,ymm4[7,15],zero,zero,zero,zero,ymm4[16,24],zero,zero,zero,zero,ymm4[17,25],zero,zero,zero,zero,ymm4[18,26],zero,zero1278; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm1[0,2,1,3]1279; AVX2-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[5,13],zero,zero,zero,zero,ymm5[6,14],zero,zero,zero,zero,ymm5[7,15],zero,zero,zero,zero,ymm5[16,24],zero,zero,zero,zero,ymm5[17,25],zero,zero,zero,zero,ymm5[18,26]1280; AVX2-NEXT: vpor %ymm4, %ymm5, %ymm41281; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm2[0,2,1,3]1282; AVX2-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15,u,u,u,u,16,24,u,u,u,u,17,25,u,u,u,u]1283; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]1284; AVX2-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm41285; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,1,3]1286; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm1[3,11],zero,zero,zero,zero,ymm1[4,12],zero,zero,zero,zero,ymm1[21,29],zero,zero,zero,zero,ymm1[22,30],zero,zero,zero,zero,ymm1[23,31],zero,zero1287; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,1,3]1288; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[3,11],zero,zero,zero,zero,ymm0[4,12],zero,zero,zero,zero,ymm0[5,13],zero,zero,zero,zero,ymm0[22,30],zero,zero,zero,zero,ymm0[23,31],zero,zero,zero,zero1289; AVX2-NEXT: vpor %ymm1, %ymm0, %ymm01290; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,3,1,3]1291; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[2,10,u,u,u,u,3,11,u,u,u,u,4,12,u,u,u,u,21,29,u,u,u,u,22,30,u,u,u,u,23,31]1292; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]1293; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm01294; AVX2-NEXT: vmovdqa %ymm0, 64(%rax)1295; AVX2-NEXT: vmovdqa %ymm4, 32(%rax)1296; AVX2-NEXT: vmovdqa %ymm3, (%rax)1297; AVX2-NEXT: vzeroupper1298; AVX2-NEXT: retq1299;1300; AVX2-FP-LABEL: store_i8_stride6_vf16:1301; AVX2-FP: # %bb.0:1302; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax1303; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm01304; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm11305; AVX2-FP-NEXT: vmovdqa (%r8), %xmm21306; AVX2-FP-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01307; AVX2-FP-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11308; AVX2-FP-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm21309; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm1[0,2,0,2]1310; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,ymm3[0,8],zero,zero,zero,zero,ymm3[1,9],zero,zero,zero,zero,ymm3[2,10],zero,zero,zero,zero,ymm3[19,27],zero,zero,zero,zero,ymm3[20,28],zero,zero,zero,zero1311; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,0,2]1312; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,zero,zero,ymm4[1,9],zero,zero,zero,zero,ymm4[2,10],zero,zero,zero,zero,ymm4[19,27],zero,zero,zero,zero,ymm4[20,28],zero,zero,zero,zero,ymm4[21,29]1313; AVX2-FP-NEXT: vpor %ymm3, %ymm4, %ymm31314; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,2,0,2]1315; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,0,8,u,u,u,u,1,9,u,u,u,u,18,26,u,u,u,u,19,27,u,u,u,u,20,28,u,u]1316; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]1317; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm31318; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,1,3]1319; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[6,14],zero,zero,zero,zero,ymm4[7,15],zero,zero,zero,zero,ymm4[16,24],zero,zero,zero,zero,ymm4[17,25],zero,zero,zero,zero,ymm4[18,26],zero,zero1320; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm1[0,2,1,3]1321; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[5,13],zero,zero,zero,zero,ymm5[6,14],zero,zero,zero,zero,ymm5[7,15],zero,zero,zero,zero,ymm5[16,24],zero,zero,zero,zero,ymm5[17,25],zero,zero,zero,zero,ymm5[18,26]1322; AVX2-FP-NEXT: vpor %ymm4, %ymm5, %ymm41323; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm2[0,2,1,3]1324; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15,u,u,u,u,16,24,u,u,u,u,17,25,u,u,u,u]1325; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]1326; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm41327; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,1,3]1328; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm1[3,11],zero,zero,zero,zero,ymm1[4,12],zero,zero,zero,zero,ymm1[21,29],zero,zero,zero,zero,ymm1[22,30],zero,zero,zero,zero,ymm1[23,31],zero,zero1329; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,1,3]1330; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[3,11],zero,zero,zero,zero,ymm0[4,12],zero,zero,zero,zero,ymm0[5,13],zero,zero,zero,zero,ymm0[22,30],zero,zero,zero,zero,ymm0[23,31],zero,zero,zero,zero1331; AVX2-FP-NEXT: vpor %ymm1, %ymm0, %ymm01332; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,3,1,3]1333; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[2,10,u,u,u,u,3,11,u,u,u,u,4,12,u,u,u,u,21,29,u,u,u,u,22,30,u,u,u,u,23,31]1334; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]1335; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm01336; AVX2-FP-NEXT: vmovdqa %ymm0, 64(%rax)1337; AVX2-FP-NEXT: vmovdqa %ymm4, 32(%rax)1338; AVX2-FP-NEXT: vmovdqa %ymm3, (%rax)1339; AVX2-FP-NEXT: vzeroupper1340; AVX2-FP-NEXT: retq1341;1342; AVX2-FCP-LABEL: store_i8_stride6_vf16:1343; AVX2-FCP: # %bb.0:1344; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax1345; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm01346; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm11347; AVX2-FCP-NEXT: vmovdqa (%r8), %xmm21348; AVX2-FCP-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01349; AVX2-FCP-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11350; AVX2-FCP-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm21351; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm1[0,2,0,2]1352; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,ymm3[0,8],zero,zero,zero,zero,ymm3[1,9],zero,zero,zero,zero,ymm3[2,10],zero,zero,zero,zero,ymm3[19,27],zero,zero,zero,zero,ymm3[20,28],zero,zero,zero,zero1353; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,0,2]1354; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,zero,zero,ymm4[1,9],zero,zero,zero,zero,ymm4[2,10],zero,zero,zero,zero,ymm4[19,27],zero,zero,zero,zero,ymm4[20,28],zero,zero,zero,zero,ymm4[21,29]1355; AVX2-FCP-NEXT: vpor %ymm3, %ymm4, %ymm31356; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,2,0,2]1357; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,0,8,u,u,u,u,1,9,u,u,u,u,18,26,u,u,u,u,19,27,u,u,u,u,20,28,u,u]1358; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]1359; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm31360; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,1,3]1361; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[6,14],zero,zero,zero,zero,ymm4[7,15],zero,zero,zero,zero,ymm4[16,24],zero,zero,zero,zero,ymm4[17,25],zero,zero,zero,zero,ymm4[18,26],zero,zero1362; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm1[0,2,1,3]1363; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[5,13],zero,zero,zero,zero,ymm5[6,14],zero,zero,zero,zero,ymm5[7,15],zero,zero,zero,zero,ymm5[16,24],zero,zero,zero,zero,ymm5[17,25],zero,zero,zero,zero,ymm5[18,26]1364; AVX2-FCP-NEXT: vpor %ymm4, %ymm5, %ymm41365; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm2[0,2,1,3]1366; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[u,u,5,13,u,u,u,u,6,14,u,u,u,u,7,15,u,u,u,u,16,24,u,u,u,u,17,25,u,u,u,u]1367; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]1368; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm41369; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,1,3]1370; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm1[3,11],zero,zero,zero,zero,ymm1[4,12],zero,zero,zero,zero,ymm1[21,29],zero,zero,zero,zero,ymm1[22,30],zero,zero,zero,zero,ymm1[23,31],zero,zero1371; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,1,3]1372; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[3,11],zero,zero,zero,zero,ymm0[4,12],zero,zero,zero,zero,ymm0[5,13],zero,zero,zero,zero,ymm0[22,30],zero,zero,zero,zero,ymm0[23,31],zero,zero,zero,zero1373; AVX2-FCP-NEXT: vpor %ymm1, %ymm0, %ymm01374; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,3,1,3]1375; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[2,10,u,u,u,u,3,11,u,u,u,u,4,12,u,u,u,u,21,29,u,u,u,u,22,30,u,u,u,u,23,31]1376; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]1377; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm01378; AVX2-FCP-NEXT: vmovdqa %ymm0, 64(%rax)1379; AVX2-FCP-NEXT: vmovdqa %ymm4, 32(%rax)1380; AVX2-FCP-NEXT: vmovdqa %ymm3, (%rax)1381; AVX2-FCP-NEXT: vzeroupper1382; AVX2-FCP-NEXT: retq1383;1384; AVX512-LABEL: store_i8_stride6_vf16:1385; AVX512: # %bb.0:1386; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax1387; AVX512-NEXT: vmovdqa (%rdi), %xmm01388; AVX512-NEXT: vmovdqa (%rdx), %xmm11389; AVX512-NEXT: vmovdqa (%r8), %xmm21390; AVX512-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11391; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm1[0,2,0,2]1392; AVX512-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,ymm3[0,8,u,u],zero,zero,ymm3[1,9,u,u],zero,zero,ymm3[2,10,u,u],zero,zero,ymm3[19,27,u,u],zero,zero,ymm3[20,28,u,u],zero,zero1393; AVX512-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01394; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,1,3]1395; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,ymm4[u,u,6,14],zero,zero,ymm4[u,u,7,15],zero,zero,ymm4[u,u,16,24],zero,zero,ymm4[u,u,17,25],zero,zero,ymm4[u,u,18,26],zero,zero1396; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm31397; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,0,2]1398; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,ymm4[u,u,1,9],zero,zero,ymm4[u,u,2,10],zero,zero,ymm4[u,u,19,27],zero,zero,ymm4[u,u,20,28],zero,zero,ymm4[u,u,21,29]1399; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm1[0,2,1,3]1400; AVX512-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[5,13,u,u],zero,zero,ymm5[6,14,u,u],zero,zero,ymm5[7,15,u,u],zero,zero,ymm5[16,24,u,u],zero,zero,ymm5[17,25,u,u],zero,zero,ymm5[18,26]1401; AVX512-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41402; AVX512-NEXT: vporq %zmm3, %zmm4, %zmm31403; AVX512-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm21404; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,2,0,2]1405; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[0,8],zero,zero,zero,zero,ymm4[1,9],zero,zero,zero,zero,ymm4[18,26],zero,zero,zero,zero,ymm4[19,27],zero,zero,zero,zero,ymm4[20,28],zero,zero1406; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm2[0,2,1,3]1407; AVX512-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,ymm5[5,13],zero,zero,zero,zero,ymm5[6,14],zero,zero,zero,zero,ymm5[7,15],zero,zero,zero,zero,ymm5[16,24],zero,zero,zero,zero,ymm5[17,25],zero,zero,zero,zero1408; AVX512-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41409; AVX512-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 | (zmm3 & mem)1410; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,1,3]1411; AVX512-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u],zero,zero,ymm1[3,11,u,u],zero,zero,ymm1[4,12,u,u],zero,zero,ymm1[21,29,u,u],zero,zero,ymm1[22,30,u,u],zero,zero,ymm1[23,31,u,u]1412; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,1,3]1413; AVX512-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,3,11],zero,zero,ymm0[u,u,4,12],zero,zero,ymm0[u,u,5,13],zero,zero,ymm0[u,u,22,30],zero,zero,ymm0[u,u,23,31],zero,zero,ymm0[u,u]1414; AVX512-NEXT: vpor %ymm1, %ymm0, %ymm01415; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,3,1,3]1416; AVX512-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[2,10],zero,zero,zero,zero,ymm1[3,11],zero,zero,zero,zero,ymm1[4,12],zero,zero,zero,zero,ymm1[21,29],zero,zero,zero,zero,ymm1[22,30],zero,zero,zero,zero,ymm1[23,31]1417; AVX512-NEXT: vpternlogq {{.*#+}} ymm1 = ymm1 | (ymm0 & mem)1418; AVX512-NEXT: vmovdqa %ymm1, 64(%rax)1419; AVX512-NEXT: vmovdqa64 %zmm4, (%rax)1420; AVX512-NEXT: vzeroupper1421; AVX512-NEXT: retq1422;1423; AVX512-FCP-LABEL: store_i8_stride6_vf16:1424; AVX512-FCP: # %bb.0:1425; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax1426; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm01427; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm11428; AVX512-FCP-NEXT: vmovdqa (%r8), %xmm21429; AVX512-FCP-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11430; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm1[0,2,0,2]1431; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,ymm3[0,8,u,u],zero,zero,ymm3[1,9,u,u],zero,zero,ymm3[2,10,u,u],zero,zero,ymm3[19,27,u,u],zero,zero,ymm3[20,28,u,u],zero,zero1432; AVX512-FCP-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01433; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,1,3]1434; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,ymm4[u,u,6,14],zero,zero,ymm4[u,u,7,15],zero,zero,ymm4[u,u,16,24],zero,zero,ymm4[u,u,17,25],zero,zero,ymm4[u,u,18,26],zero,zero1435; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm31436; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,0,2]1437; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,ymm4[u,u,1,9],zero,zero,ymm4[u,u,2,10],zero,zero,ymm4[u,u,19,27],zero,zero,ymm4[u,u,20,28],zero,zero,ymm4[u,u,21,29]1438; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm1[0,2,1,3]1439; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[5,13,u,u],zero,zero,ymm5[6,14,u,u],zero,zero,ymm5[7,15,u,u],zero,zero,ymm5[16,24,u,u],zero,zero,ymm5[17,25,u,u],zero,zero,ymm5[18,26]1440; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41441; AVX512-FCP-NEXT: vporq %zmm3, %zmm4, %zmm31442; AVX512-FCP-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm21443; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,2,0,2]1444; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[0,8],zero,zero,zero,zero,ymm4[1,9],zero,zero,zero,zero,ymm4[18,26],zero,zero,zero,zero,ymm4[19,27],zero,zero,zero,zero,ymm4[20,28],zero,zero1445; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm2[0,2,1,3]1446; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,ymm5[5,13],zero,zero,zero,zero,ymm5[6,14],zero,zero,zero,zero,ymm5[7,15],zero,zero,zero,zero,ymm5[16,24],zero,zero,zero,zero,ymm5[17,25],zero,zero,zero,zero1447; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41448; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 | (zmm3 & mem)1449; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,1,3]1450; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u],zero,zero,ymm1[3,11,u,u],zero,zero,ymm1[4,12,u,u],zero,zero,ymm1[21,29,u,u],zero,zero,ymm1[22,30,u,u],zero,zero,ymm1[23,31,u,u]1451; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,1,3]1452; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,3,11],zero,zero,ymm0[u,u,4,12],zero,zero,ymm0[u,u,5,13],zero,zero,ymm0[u,u,22,30],zero,zero,ymm0[u,u,23,31],zero,zero,ymm0[u,u]1453; AVX512-FCP-NEXT: vpor %ymm1, %ymm0, %ymm01454; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,3,1,3]1455; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[2,10],zero,zero,zero,zero,ymm1[3,11],zero,zero,zero,zero,ymm1[4,12],zero,zero,zero,zero,ymm1[21,29],zero,zero,zero,zero,ymm1[22,30],zero,zero,zero,zero,ymm1[23,31]1456; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm1 = ymm1 | (ymm0 & mem)1457; AVX512-FCP-NEXT: vmovdqa %ymm1, 64(%rax)1458; AVX512-FCP-NEXT: vmovdqa64 %zmm4, (%rax)1459; AVX512-FCP-NEXT: vzeroupper1460; AVX512-FCP-NEXT: retq1461;1462; AVX512DQ-LABEL: store_i8_stride6_vf16:1463; AVX512DQ: # %bb.0:1464; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax1465; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm01466; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm11467; AVX512DQ-NEXT: vmovdqa (%r8), %xmm21468; AVX512DQ-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11469; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm1[0,2,0,2]1470; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,ymm3[0,8,u,u],zero,zero,ymm3[1,9,u,u],zero,zero,ymm3[2,10,u,u],zero,zero,ymm3[19,27,u,u],zero,zero,ymm3[20,28,u,u],zero,zero1471; AVX512DQ-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01472; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,1,3]1473; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,ymm4[u,u,6,14],zero,zero,ymm4[u,u,7,15],zero,zero,ymm4[u,u,16,24],zero,zero,ymm4[u,u,17,25],zero,zero,ymm4[u,u,18,26],zero,zero1474; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm31475; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,0,2]1476; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,ymm4[u,u,1,9],zero,zero,ymm4[u,u,2,10],zero,zero,ymm4[u,u,19,27],zero,zero,ymm4[u,u,20,28],zero,zero,ymm4[u,u,21,29]1477; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm1[0,2,1,3]1478; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[5,13,u,u],zero,zero,ymm5[6,14,u,u],zero,zero,ymm5[7,15,u,u],zero,zero,ymm5[16,24,u,u],zero,zero,ymm5[17,25,u,u],zero,zero,ymm5[18,26]1479; AVX512DQ-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41480; AVX512DQ-NEXT: vporq %zmm3, %zmm4, %zmm31481; AVX512DQ-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm21482; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,2,0,2]1483; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[0,8],zero,zero,zero,zero,ymm4[1,9],zero,zero,zero,zero,ymm4[18,26],zero,zero,zero,zero,ymm4[19,27],zero,zero,zero,zero,ymm4[20,28],zero,zero1484; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm2[0,2,1,3]1485; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,ymm5[5,13],zero,zero,zero,zero,ymm5[6,14],zero,zero,zero,zero,ymm5[7,15],zero,zero,zero,zero,ymm5[16,24],zero,zero,zero,zero,ymm5[17,25],zero,zero,zero,zero1486; AVX512DQ-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41487; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 | (zmm3 & mem)1488; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,1,3]1489; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u],zero,zero,ymm1[3,11,u,u],zero,zero,ymm1[4,12,u,u],zero,zero,ymm1[21,29,u,u],zero,zero,ymm1[22,30,u,u],zero,zero,ymm1[23,31,u,u]1490; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,1,3]1491; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,3,11],zero,zero,ymm0[u,u,4,12],zero,zero,ymm0[u,u,5,13],zero,zero,ymm0[u,u,22,30],zero,zero,ymm0[u,u,23,31],zero,zero,ymm0[u,u]1492; AVX512DQ-NEXT: vpor %ymm1, %ymm0, %ymm01493; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,3,1,3]1494; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[2,10],zero,zero,zero,zero,ymm1[3,11],zero,zero,zero,zero,ymm1[4,12],zero,zero,zero,zero,ymm1[21,29],zero,zero,zero,zero,ymm1[22,30],zero,zero,zero,zero,ymm1[23,31]1495; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm1 = ymm1 | (ymm0 & mem)1496; AVX512DQ-NEXT: vmovdqa %ymm1, 64(%rax)1497; AVX512DQ-NEXT: vmovdqa64 %zmm4, (%rax)1498; AVX512DQ-NEXT: vzeroupper1499; AVX512DQ-NEXT: retq1500;1501; AVX512DQ-FCP-LABEL: store_i8_stride6_vf16:1502; AVX512DQ-FCP: # %bb.0:1503; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax1504; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm01505; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm11506; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %xmm21507; AVX512DQ-FCP-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11508; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm1[0,2,0,2]1509; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,ymm3[0,8,u,u],zero,zero,ymm3[1,9,u,u],zero,zero,ymm3[2,10,u,u],zero,zero,ymm3[19,27,u,u],zero,zero,ymm3[20,28,u,u],zero,zero1510; AVX512DQ-FCP-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01511; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,1,3]1512; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,ymm4[u,u,6,14],zero,zero,ymm4[u,u,7,15],zero,zero,ymm4[u,u,16,24],zero,zero,ymm4[u,u,17,25],zero,zero,ymm4[u,u,18,26],zero,zero1513; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm31514; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,0,2]1515; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,ymm4[u,u,1,9],zero,zero,ymm4[u,u,2,10],zero,zero,ymm4[u,u,19,27],zero,zero,ymm4[u,u,20,28],zero,zero,ymm4[u,u,21,29]1516; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm1[0,2,1,3]1517; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[5,13,u,u],zero,zero,ymm5[6,14,u,u],zero,zero,ymm5[7,15,u,u],zero,zero,ymm5[16,24,u,u],zero,zero,ymm5[17,25,u,u],zero,zero,ymm5[18,26]1518; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41519; AVX512DQ-FCP-NEXT: vporq %zmm3, %zmm4, %zmm31520; AVX512DQ-FCP-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm21521; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,2,0,2]1522; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[0,8],zero,zero,zero,zero,ymm4[1,9],zero,zero,zero,zero,ymm4[18,26],zero,zero,zero,zero,ymm4[19,27],zero,zero,zero,zero,ymm4[20,28],zero,zero1523; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm2[0,2,1,3]1524; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,ymm5[5,13],zero,zero,zero,zero,ymm5[6,14],zero,zero,zero,zero,ymm5[7,15],zero,zero,zero,zero,ymm5[16,24],zero,zero,zero,zero,ymm5[17,25],zero,zero,zero,zero1525; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41526; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 | (zmm3 & mem)1527; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,1,3]1528; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u],zero,zero,ymm1[3,11,u,u],zero,zero,ymm1[4,12,u,u],zero,zero,ymm1[21,29,u,u],zero,zero,ymm1[22,30,u,u],zero,zero,ymm1[23,31,u,u]1529; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,1,3]1530; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,3,11],zero,zero,ymm0[u,u,4,12],zero,zero,ymm0[u,u,5,13],zero,zero,ymm0[u,u,22,30],zero,zero,ymm0[u,u,23,31],zero,zero,ymm0[u,u]1531; AVX512DQ-FCP-NEXT: vpor %ymm1, %ymm0, %ymm01532; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,3,1,3]1533; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[2,10],zero,zero,zero,zero,ymm1[3,11],zero,zero,zero,zero,ymm1[4,12],zero,zero,zero,zero,ymm1[21,29],zero,zero,zero,zero,ymm1[22,30],zero,zero,zero,zero,ymm1[23,31]1534; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm1 = ymm1 | (ymm0 & mem)1535; AVX512DQ-FCP-NEXT: vmovdqa %ymm1, 64(%rax)1536; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, (%rax)1537; AVX512DQ-FCP-NEXT: vzeroupper1538; AVX512DQ-FCP-NEXT: retq1539;1540; AVX512BW-LABEL: store_i8_stride6_vf16:1541; AVX512BW: # %bb.0:1542; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %rax1543; AVX512BW-NEXT: vmovdqa (%rdi), %xmm01544; AVX512BW-NEXT: vmovdqa (%rdx), %xmm11545; AVX512BW-NEXT: vmovdqa (%r8), %xmm21546; AVX512BW-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01547; AVX512BW-NEXT: vpermq {{.*#+}} ymm3 = ymm0[0,2,0,2]1548; AVX512BW-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11549; AVX512BW-NEXT: vpermq {{.*#+}} ymm4 = ymm1[0,2,1,3]1550; AVX512BW-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm31551; AVX512BW-NEXT: vpshufb {{.*#+}} zmm3 = zmm3[0,8],zero,zero,zero,zero,zmm3[1,9],zero,zero,zero,zero,zmm3[2,10],zero,zero,zero,zero,zmm3[19,27],zero,zero,zero,zero,zmm3[20,28],zero,zero,zero,zero,zmm3[21,29,37,45],zero,zero,zero,zero,zmm3[38,46],zero,zero,zero,zero,zmm3[39,47],zero,zero,zero,zero,zmm3[48,56],zero,zero,zero,zero,zmm3[49,57],zero,zero,zero,zero,zmm3[50,58]1552; AVX512BW-NEXT: vpermq {{.*#+}} ymm4 = ymm1[0,2,0,2]1553; AVX512BW-NEXT: vpermq {{.*#+}} ymm5 = ymm0[0,2,1,3]1554; AVX512BW-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41555; AVX512BW-NEXT: vpshufb {{.*#+}} zmm4 = zero,zero,zmm4[0,8],zero,zero,zero,zero,zmm4[1,9],zero,zero,zero,zero,zmm4[2,10],zero,zero,zero,zero,zmm4[19,27],zero,zero,zero,zero,zmm4[20,28],zero,zero,zero,zero,zero,zero,zero,zero,zmm4[38,46],zero,zero,zero,zero,zmm4[39,47],zero,zero,zero,zero,zmm4[48,56],zero,zero,zero,zero,zmm4[49,57],zero,zero,zero,zero,zmm4[50,58],zero,zero1556; AVX512BW-NEXT: vporq %zmm3, %zmm4, %zmm31557; AVX512BW-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm21558; AVX512BW-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,2,0,2]1559; AVX512BW-NEXT: vpermq {{.*#+}} ymm5 = ymm2[0,2,1,3]1560; AVX512BW-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41561; AVX512BW-NEXT: vpshufb {{.*#+}} zmm4 = zmm4[u,u,u,u,0,8,u,u,u,u,1,9,u,u,u,u,18,26,u,u,u,u,19,27,u,u,u,u,20,28,u,u,u,u,37,45,u,u,u,u,38,46,u,u,u,u,39,47,u,u,u,u,48,56,u,u,u,u,49,57,u,u,u,u]1562; AVX512BW-NEXT: movl $613566756, %ecx # imm = 0x249249241563; AVX512BW-NEXT: kmovd %ecx, %k11564; AVX512BW-NEXT: vmovdqu16 %zmm4, %zmm3 {%k1}1565; AVX512BW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,1,3]1566; AVX512BW-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[3,11],zero,zero,zero,zero,ymm0[4,12],zero,zero,zero,zero,ymm0[5,13],zero,zero,zero,zero,ymm0[22,30],zero,zero,zero,zero,ymm0[23,31],zero,zero,zero,zero1567; AVX512BW-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,1,3]1568; AVX512BW-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm1[3,11],zero,zero,zero,zero,ymm1[4,12],zero,zero,zero,zero,ymm1[21,29],zero,zero,zero,zero,ymm1[22,30],zero,zero,zero,zero,ymm1[23,31],zero,zero1569; AVX512BW-NEXT: vpor %ymm0, %ymm1, %ymm01570; AVX512BW-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,3,1,3]1571; AVX512BW-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[2,10,u,u,u,u,3,11,u,u,u,u,4,12,u,u,u,u,21,29,u,u,u,u,22,30,u,u,u,u,23,31]1572; AVX512BW-NEXT: movw $-28087, %cx # imm = 0x92491573; AVX512BW-NEXT: kmovd %ecx, %k11574; AVX512BW-NEXT: vmovdqu16 %ymm1, %ymm0 {%k1}1575; AVX512BW-NEXT: vmovdqa %ymm0, 64(%rax)1576; AVX512BW-NEXT: vmovdqa64 %zmm3, (%rax)1577; AVX512BW-NEXT: vzeroupper1578; AVX512BW-NEXT: retq1579;1580; AVX512BW-FCP-LABEL: store_i8_stride6_vf16:1581; AVX512BW-FCP: # %bb.0:1582; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax1583; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm01584; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm11585; AVX512BW-FCP-NEXT: vmovdqa (%r8), %xmm21586; AVX512BW-FCP-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11587; AVX512BW-FCP-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01588; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm3 = [0,2,0,2,8,10,9,11]1589; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm41590; AVX512BW-FCP-NEXT: vpermt2q %zmm1, %zmm3, %zmm41591; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} zmm4 = zmm4[0,8],zero,zero,zero,zero,zmm4[1,9],zero,zero,zero,zero,zmm4[2,10],zero,zero,zero,zero,zmm4[19,27],zero,zero,zero,zero,zmm4[20,28],zero,zero,zero,zero,zmm4[21,29,37,45],zero,zero,zero,zero,zmm4[38,46],zero,zero,zero,zero,zmm4[39,47],zero,zero,zero,zero,zmm4[48,56],zero,zero,zero,zero,zmm4[49,57],zero,zero,zero,zero,zmm4[50,58]1592; AVX512BW-FCP-NEXT: vpermi2q %zmm0, %zmm1, %zmm31593; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} zmm3 = zero,zero,zmm3[0,8],zero,zero,zero,zero,zmm3[1,9],zero,zero,zero,zero,zmm3[2,10],zero,zero,zero,zero,zmm3[19,27],zero,zero,zero,zero,zmm3[20,28],zero,zero,zero,zero,zero,zero,zero,zero,zmm3[38,46],zero,zero,zero,zero,zmm3[39,47],zero,zero,zero,zero,zmm3[48,56],zero,zero,zero,zero,zmm3[49,57],zero,zero,zero,zero,zmm3[50,58],zero,zero1594; AVX512BW-FCP-NEXT: vporq %zmm4, %zmm3, %zmm31595; AVX512BW-FCP-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm21596; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm4 = [0,2,0,2,0,2,1,3]1597; AVX512BW-FCP-NEXT: vpermq %zmm2, %zmm4, %zmm41598; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} zmm4 = zmm4[u,u,u,u,0,8,u,u,u,u,1,9,u,u,u,u,18,26,u,u,u,u,19,27,u,u,u,u,20,28,u,u,u,u,37,45,u,u,u,u,38,46,u,u,u,u,39,47,u,u,u,u,48,56,u,u,u,u,49,57,u,u,u,u]1599; AVX512BW-FCP-NEXT: movl $613566756, %ecx # imm = 0x249249241600; AVX512BW-FCP-NEXT: kmovd %ecx, %k11601; AVX512BW-FCP-NEXT: vmovdqu16 %zmm4, %zmm3 {%k1}1602; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,1,3]1603; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[3,11],zero,zero,zero,zero,ymm0[4,12],zero,zero,zero,zero,ymm0[5,13],zero,zero,zero,zero,ymm0[22,30],zero,zero,zero,zero,ymm0[23,31],zero,zero,zero,zero1604; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,1,3]1605; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm1[3,11],zero,zero,zero,zero,ymm1[4,12],zero,zero,zero,zero,ymm1[21,29],zero,zero,zero,zero,ymm1[22,30],zero,zero,zero,zero,ymm1[23,31],zero,zero1606; AVX512BW-FCP-NEXT: vpor %ymm0, %ymm1, %ymm01607; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,3,1,3]1608; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[2,10,u,u,u,u,3,11,u,u,u,u,4,12,u,u,u,u,21,29,u,u,u,u,22,30,u,u,u,u,23,31]1609; AVX512BW-FCP-NEXT: movw $-28087, %cx # imm = 0x92491610; AVX512BW-FCP-NEXT: kmovd %ecx, %k11611; AVX512BW-FCP-NEXT: vmovdqu16 %ymm1, %ymm0 {%k1}1612; AVX512BW-FCP-NEXT: vmovdqa %ymm0, 64(%rax)1613; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, (%rax)1614; AVX512BW-FCP-NEXT: vzeroupper1615; AVX512BW-FCP-NEXT: retq1616;1617; AVX512DQ-BW-LABEL: store_i8_stride6_vf16:1618; AVX512DQ-BW: # %bb.0:1619; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %rax1620; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm01621; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm11622; AVX512DQ-BW-NEXT: vmovdqa (%r8), %xmm21623; AVX512DQ-BW-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01624; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm3 = ymm0[0,2,0,2]1625; AVX512DQ-BW-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11626; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm4 = ymm1[0,2,1,3]1627; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm31628; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} zmm3 = zmm3[0,8],zero,zero,zero,zero,zmm3[1,9],zero,zero,zero,zero,zmm3[2,10],zero,zero,zero,zero,zmm3[19,27],zero,zero,zero,zero,zmm3[20,28],zero,zero,zero,zero,zmm3[21,29,37,45],zero,zero,zero,zero,zmm3[38,46],zero,zero,zero,zero,zmm3[39,47],zero,zero,zero,zero,zmm3[48,56],zero,zero,zero,zero,zmm3[49,57],zero,zero,zero,zero,zmm3[50,58]1629; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm4 = ymm1[0,2,0,2]1630; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm5 = ymm0[0,2,1,3]1631; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41632; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} zmm4 = zero,zero,zmm4[0,8],zero,zero,zero,zero,zmm4[1,9],zero,zero,zero,zero,zmm4[2,10],zero,zero,zero,zero,zmm4[19,27],zero,zero,zero,zero,zmm4[20,28],zero,zero,zero,zero,zero,zero,zero,zero,zmm4[38,46],zero,zero,zero,zero,zmm4[39,47],zero,zero,zero,zero,zmm4[48,56],zero,zero,zero,zero,zmm4[49,57],zero,zero,zero,zero,zmm4[50,58],zero,zero1633; AVX512DQ-BW-NEXT: vporq %zmm3, %zmm4, %zmm31634; AVX512DQ-BW-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm21635; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,2,0,2]1636; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm5 = ymm2[0,2,1,3]1637; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41638; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} zmm4 = zmm4[u,u,u,u,0,8,u,u,u,u,1,9,u,u,u,u,18,26,u,u,u,u,19,27,u,u,u,u,20,28,u,u,u,u,37,45,u,u,u,u,38,46,u,u,u,u,39,47,u,u,u,u,48,56,u,u,u,u,49,57,u,u,u,u]1639; AVX512DQ-BW-NEXT: movl $613566756, %ecx # imm = 0x249249241640; AVX512DQ-BW-NEXT: kmovd %ecx, %k11641; AVX512DQ-BW-NEXT: vmovdqu16 %zmm4, %zmm3 {%k1}1642; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,1,3]1643; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[3,11],zero,zero,zero,zero,ymm0[4,12],zero,zero,zero,zero,ymm0[5,13],zero,zero,zero,zero,ymm0[22,30],zero,zero,zero,zero,ymm0[23,31],zero,zero,zero,zero1644; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,1,3]1645; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm1[3,11],zero,zero,zero,zero,ymm1[4,12],zero,zero,zero,zero,ymm1[21,29],zero,zero,zero,zero,ymm1[22,30],zero,zero,zero,zero,ymm1[23,31],zero,zero1646; AVX512DQ-BW-NEXT: vpor %ymm0, %ymm1, %ymm01647; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,3,1,3]1648; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[2,10,u,u,u,u,3,11,u,u,u,u,4,12,u,u,u,u,21,29,u,u,u,u,22,30,u,u,u,u,23,31]1649; AVX512DQ-BW-NEXT: movw $-28087, %cx # imm = 0x92491650; AVX512DQ-BW-NEXT: kmovd %ecx, %k11651; AVX512DQ-BW-NEXT: vmovdqu16 %ymm1, %ymm0 {%k1}1652; AVX512DQ-BW-NEXT: vmovdqa %ymm0, 64(%rax)1653; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, (%rax)1654; AVX512DQ-BW-NEXT: vzeroupper1655; AVX512DQ-BW-NEXT: retq1656;1657; AVX512DQ-BW-FCP-LABEL: store_i8_stride6_vf16:1658; AVX512DQ-BW-FCP: # %bb.0:1659; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax1660; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm01661; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm11662; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r8), %xmm21663; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11664; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01665; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm3 = [0,2,0,2,8,10,9,11]1666; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, %zmm41667; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm1, %zmm3, %zmm41668; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} zmm4 = zmm4[0,8],zero,zero,zero,zero,zmm4[1,9],zero,zero,zero,zero,zmm4[2,10],zero,zero,zero,zero,zmm4[19,27],zero,zero,zero,zero,zmm4[20,28],zero,zero,zero,zero,zmm4[21,29,37,45],zero,zero,zero,zero,zmm4[38,46],zero,zero,zero,zero,zmm4[39,47],zero,zero,zero,zero,zmm4[48,56],zero,zero,zero,zero,zmm4[49,57],zero,zero,zero,zero,zmm4[50,58]1669; AVX512DQ-BW-FCP-NEXT: vpermi2q %zmm0, %zmm1, %zmm31670; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} zmm3 = zero,zero,zmm3[0,8],zero,zero,zero,zero,zmm3[1,9],zero,zero,zero,zero,zmm3[2,10],zero,zero,zero,zero,zmm3[19,27],zero,zero,zero,zero,zmm3[20,28],zero,zero,zero,zero,zero,zero,zero,zero,zmm3[38,46],zero,zero,zero,zero,zmm3[39,47],zero,zero,zero,zero,zmm3[48,56],zero,zero,zero,zero,zmm3[49,57],zero,zero,zero,zero,zmm3[50,58],zero,zero1671; AVX512DQ-BW-FCP-NEXT: vporq %zmm4, %zmm3, %zmm31672; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%r9), %ymm2, %ymm21673; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm4 = [0,2,0,2,0,2,1,3]1674; AVX512DQ-BW-FCP-NEXT: vpermq %zmm2, %zmm4, %zmm41675; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} zmm4 = zmm4[u,u,u,u,0,8,u,u,u,u,1,9,u,u,u,u,18,26,u,u,u,u,19,27,u,u,u,u,20,28,u,u,u,u,37,45,u,u,u,u,38,46,u,u,u,u,39,47,u,u,u,u,48,56,u,u,u,u,49,57,u,u,u,u]1676; AVX512DQ-BW-FCP-NEXT: movl $613566756, %ecx # imm = 0x249249241677; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k11678; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm4, %zmm3 {%k1}1679; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,1,3]1680; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[3,11],zero,zero,zero,zero,ymm0[4,12],zero,zero,zero,zero,ymm0[5,13],zero,zero,zero,zero,ymm0[22,30],zero,zero,zero,zero,ymm0[23,31],zero,zero,zero,zero1681; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,1,3]1682; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,ymm1[3,11],zero,zero,zero,zero,ymm1[4,12],zero,zero,zero,zero,ymm1[21,29],zero,zero,zero,zero,ymm1[22,30],zero,zero,zero,zero,ymm1[23,31],zero,zero1683; AVX512DQ-BW-FCP-NEXT: vpor %ymm0, %ymm1, %ymm01684; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm2[1,3,1,3]1685; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[2,10,u,u,u,u,3,11,u,u,u,u,4,12,u,u,u,u,21,29,u,u,u,u,22,30,u,u,u,u,23,31]1686; AVX512DQ-BW-FCP-NEXT: movw $-28087, %cx # imm = 0x92491687; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k11688; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %ymm1, %ymm0 {%k1}1689; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm0, 64(%rax)1690; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, (%rax)1691; AVX512DQ-BW-FCP-NEXT: vzeroupper1692; AVX512DQ-BW-FCP-NEXT: retq1693 %in.vec0 = load <16 x i8>, ptr %in.vecptr0, align 641694 %in.vec1 = load <16 x i8>, ptr %in.vecptr1, align 641695 %in.vec2 = load <16 x i8>, ptr %in.vecptr2, align 641696 %in.vec3 = load <16 x i8>, ptr %in.vecptr3, align 641697 %in.vec4 = load <16 x i8>, ptr %in.vecptr4, align 641698 %in.vec5 = load <16 x i8>, ptr %in.vecptr5, align 641699 %1 = shufflevector <16 x i8> %in.vec0, <16 x i8> %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>1700 %2 = shufflevector <16 x i8> %in.vec2, <16 x i8> %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>1701 %3 = shufflevector <16 x i8> %in.vec4, <16 x i8> %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>1702 %4 = shufflevector <32 x i8> %1, <32 x i8> %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>1703 %5 = shufflevector <32 x i8> %3, <32 x i8> 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>1704 %6 = shufflevector <64 x i8> %4, <64 x i8> %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>1705 %interleaved.vec = shufflevector <96 x i8> %6, <96 x i8> poison, <96 x i32> <i32 0, i32 16, i32 32, i32 48, i32 64, i32 80, i32 1, i32 17, i32 33, i32 49, i32 65, i32 81, i32 2, i32 18, i32 34, i32 50, i32 66, i32 82, i32 3, i32 19, i32 35, i32 51, i32 67, i32 83, i32 4, i32 20, i32 36, i32 52, i32 68, i32 84, i32 5, i32 21, i32 37, i32 53, i32 69, i32 85, i32 6, i32 22, i32 38, i32 54, i32 70, i32 86, i32 7, i32 23, i32 39, i32 55, i32 71, i32 87, i32 8, i32 24, i32 40, i32 56, i32 72, i32 88, i32 9, i32 25, i32 41, i32 57, i32 73, i32 89, i32 10, i32 26, i32 42, i32 58, i32 74, i32 90, i32 11, i32 27, i32 43, i32 59, i32 75, i32 91, i32 12, i32 28, i32 44, i32 60, i32 76, i32 92, i32 13, i32 29, i32 45, i32 61, i32 77, i32 93, i32 14, i32 30, i32 46, i32 62, i32 78, i32 94, i32 15, i32 31, i32 47, i32 63, i32 79, i32 95>1706 store <96 x i8> %interleaved.vec, ptr %out.vec, align 641707 ret void1708}1709 1710define void @store_i8_stride6_vf32(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %in.vecptr5, ptr %out.vec) nounwind {1711; SSE-LABEL: store_i8_stride6_vf32:1712; SSE: # %bb.0:1713; SSE-NEXT: subq $200, %rsp1714; SSE-NEXT: movdqa 16(%rdi), %xmm81715; SSE-NEXT: movdqa 16(%rsi), %xmm51716; SSE-NEXT: movdqa 16(%rdx), %xmm121717; SSE-NEXT: movdqa 16(%rcx), %xmm41718; SSE-NEXT: movdqa 16(%r8), %xmm111719; SSE-NEXT: movdqa 16(%r9), %xmm01720; SSE-NEXT: movdqa %xmm8, %xmm11721; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm5[8],xmm1[9],xmm5[9],xmm1[10],xmm5[10],xmm1[11],xmm5[11],xmm1[12],xmm5[12],xmm1[13],xmm5[13],xmm1[14],xmm5[14],xmm1[15],xmm5[15]1722; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1723; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm1[0,0,1,1]1724; SSE-NEXT: movdqa {{.*#+}} xmm9 = [65535,0,65535,65535,0,65535,65535,0]1725; SSE-NEXT: pand %xmm9, %xmm21726; SSE-NEXT: movdqa %xmm12, %xmm11727; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm4[8],xmm1[9],xmm4[9],xmm1[10],xmm4[10],xmm1[11],xmm4[11],xmm1[12],xmm4[12],xmm1[13],xmm4[13],xmm1[14],xmm4[14],xmm1[15],xmm4[15]1728; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1729; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm1[1,0,2,2,4,5,6,7]1730; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,1,0,1]1731; SSE-NEXT: movdqa %xmm9, %xmm61732; SSE-NEXT: pandn %xmm3, %xmm61733; SSE-NEXT: por %xmm2, %xmm61734; SSE-NEXT: movdqa {{.*#+}} xmm3 = [65535,65535,0,65535,65535,0,65535,65535]1735; SSE-NEXT: pand %xmm3, %xmm61736; SSE-NEXT: movdqa %xmm11, %xmm11737; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]1738; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1739; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm1[0,0,0,0]1740; SSE-NEXT: movdqa %xmm3, %xmm71741; SSE-NEXT: pandn %xmm2, %xmm71742; SSE-NEXT: por %xmm6, %xmm71743; SSE-NEXT: movdqa {{.*#+}} xmm2 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]1744; SSE-NEXT: pand %xmm2, %xmm71745; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15]1746; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1747; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm1[0,0,0,0]1748; SSE-NEXT: movdqa %xmm2, %xmm11749; SSE-NEXT: pandn %xmm6, %xmm11750; SSE-NEXT: por %xmm7, %xmm11751; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1752; SSE-NEXT: punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm5[0],xmm8[1],xmm5[1],xmm8[2],xmm5[2],xmm8[3],xmm5[3],xmm8[4],xmm5[4],xmm8[5],xmm5[5],xmm8[6],xmm5[6],xmm8[7],xmm5[7]1753; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1754; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm8[3,3,3,3]1755; SSE-NEXT: movdqa %xmm3, %xmm61756; SSE-NEXT: pandn %xmm5, %xmm61757; SSE-NEXT: punpcklbw {{.*#+}} xmm12 = xmm12[0],xmm4[0],xmm12[1],xmm4[1],xmm12[2],xmm4[2],xmm12[3],xmm4[3],xmm12[4],xmm4[4],xmm12[5],xmm4[5],xmm12[6],xmm4[6],xmm12[7],xmm4[7]1758; SSE-NEXT: movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1759; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm12[0,1,2,3,5,6,7,7]1760; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[2,2,2,3]1761; SSE-NEXT: pand %xmm3, %xmm41762; SSE-NEXT: por %xmm6, %xmm41763; SSE-NEXT: pand %xmm9, %xmm41764; SSE-NEXT: punpcklbw {{.*#+}} xmm11 = xmm11[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1765; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1766; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm11[2,2,3,3]1767; SSE-NEXT: movdqa %xmm9, %xmm61768; SSE-NEXT: pandn %xmm5, %xmm61769; SSE-NEXT: por %xmm4, %xmm61770; SSE-NEXT: movdqa {{.*#+}} xmm10 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]1771; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1772; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1773; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,2,3,3]1774; SSE-NEXT: movdqa %xmm10, %xmm11775; SSE-NEXT: pandn %xmm0, %xmm11776; SSE-NEXT: movdqa (%rdi), %xmm01777; SSE-NEXT: pand %xmm10, %xmm61778; SSE-NEXT: por %xmm6, %xmm11779; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1780; SSE-NEXT: movdqa (%rsi), %xmm141781; SSE-NEXT: movdqa %xmm0, %xmm11782; SSE-NEXT: movdqa %xmm0, %xmm81783; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm14[8],xmm1[9],xmm14[9],xmm1[10],xmm14[10],xmm1[11],xmm14[11],xmm1[12],xmm14[12],xmm1[13],xmm14[13],xmm1[14],xmm14[14],xmm1[15],xmm14[15]1784; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]1785; SSE-NEXT: movdqa %xmm1, %xmm21786; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1787; SSE-NEXT: movdqa %xmm3, %xmm61788; SSE-NEXT: pandn %xmm0, %xmm61789; SSE-NEXT: movdqa (%rdx), %xmm111790; SSE-NEXT: movdqa (%rcx), %xmm121791; SSE-NEXT: movdqa %xmm11, %xmm11792; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm12[8],xmm1[9],xmm12[9],xmm1[10],xmm12[10],xmm1[11],xmm12[11],xmm1[12],xmm12[12],xmm1[13],xmm12[13],xmm1[14],xmm12[14],xmm1[15],xmm12[15]1793; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm1[0,1,2,3,5,6,7,7]1794; SSE-NEXT: movdqa %xmm1, %xmm51795; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1796; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,2,2,3]1797; SSE-NEXT: pand %xmm3, %xmm01798; SSE-NEXT: por %xmm6, %xmm01799; SSE-NEXT: movdqa (%r8), %xmm131800; SSE-NEXT: movdqa %xmm13, %xmm71801; SSE-NEXT: punpckhbw {{.*#+}} xmm7 = xmm7[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]1802; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm7[2,2,3,3]1803; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1804; SSE-NEXT: movdqa %xmm9, %xmm151805; SSE-NEXT: pandn %xmm6, %xmm151806; SSE-NEXT: pand %xmm9, %xmm01807; SSE-NEXT: por %xmm0, %xmm151808; SSE-NEXT: movdqa (%r9), %xmm61809; SSE-NEXT: punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm6[8],xmm4[9],xmm6[9],xmm4[10],xmm6[10],xmm4[11],xmm6[11],xmm4[12],xmm6[12],xmm4[13],xmm6[13],xmm4[14],xmm6[14],xmm4[15],xmm6[15]1810; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm4[2,2,3,3]1811; SSE-NEXT: movdqa %xmm4, (%rsp) # 16-byte Spill1812; SSE-NEXT: movdqa %xmm10, %xmm11813; SSE-NEXT: pandn %xmm0, %xmm11814; SSE-NEXT: pand %xmm10, %xmm151815; SSE-NEXT: por %xmm15, %xmm11816; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1817; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm5[3,3,3,3,4,5,6,7]1818; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]1819; SSE-NEXT: movdqa %xmm3, %xmm151820; SSE-NEXT: pandn %xmm0, %xmm151821; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,2,2]1822; SSE-NEXT: pand %xmm3, %xmm01823; SSE-NEXT: por %xmm0, %xmm151824; SSE-NEXT: movdqa {{.*#+}} xmm1 = [0,65535,65535,0,65535,65535,0,65535]1825; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm7[1,1,2,2]1826; SSE-NEXT: movdqa %xmm1, %xmm01827; SSE-NEXT: pandn %xmm2, %xmm01828; SSE-NEXT: pand %xmm1, %xmm151829; SSE-NEXT: por %xmm15, %xmm01830; SSE-NEXT: movdqa {{.*#+}} xmm5 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]1831; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[1,1,2,2]1832; SSE-NEXT: movdqa %xmm5, %xmm151833; SSE-NEXT: pandn %xmm2, %xmm151834; SSE-NEXT: pand %xmm5, %xmm01835; SSE-NEXT: por %xmm0, %xmm151836; SSE-NEXT: movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1837; SSE-NEXT: punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm14[0],xmm8[1],xmm14[1],xmm8[2],xmm14[2],xmm8[3],xmm14[3],xmm8[4],xmm14[4],xmm8[5],xmm14[5],xmm8[6],xmm14[6],xmm8[7],xmm14[7]1838; SSE-NEXT: punpcklbw {{.*#+}} xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3],xmm11[4],xmm12[4],xmm11[5],xmm12[5],xmm11[6],xmm12[6],xmm11[7],xmm12[7]1839; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm11[3,3,3,3,4,5,6,7]1840; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1841; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]1842; SSE-NEXT: movdqa %xmm3, %xmm21843; SSE-NEXT: pandn %xmm0, %xmm21844; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm8[1,1,2,2]1845; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1846; SSE-NEXT: pand %xmm3, %xmm01847; SSE-NEXT: por %xmm0, %xmm21848; SSE-NEXT: punpcklbw {{.*#+}} xmm13 = xmm13[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1849; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm13[1,1,2,2]1850; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1851; SSE-NEXT: movdqa %xmm1, %xmm41852; SSE-NEXT: pandn %xmm0, %xmm41853; SSE-NEXT: pand %xmm1, %xmm21854; SSE-NEXT: por %xmm2, %xmm41855; SSE-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]1856; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,2,2]1857; SSE-NEXT: movdqa %xmm2, %xmm61858; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1859; SSE-NEXT: movdqa %xmm5, %xmm121860; SSE-NEXT: pandn %xmm0, %xmm121861; SSE-NEXT: pand %xmm5, %xmm41862; SSE-NEXT: por %xmm4, %xmm121863; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm11[1,0,2,2,4,5,6,7]1864; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]1865; SSE-NEXT: movdqa %xmm9, %xmm21866; SSE-NEXT: pandn %xmm0, %xmm21867; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm8[0,0,1,1]1868; SSE-NEXT: pand %xmm9, %xmm01869; SSE-NEXT: por %xmm0, %xmm21870; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm13[0,0,0,0]1871; SSE-NEXT: movdqa %xmm3, %xmm41872; SSE-NEXT: pandn %xmm0, %xmm41873; SSE-NEXT: pand %xmm3, %xmm21874; SSE-NEXT: por %xmm2, %xmm41875; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,0,0]1876; SSE-NEXT: movdqa {{.*#+}} xmm7 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]1877; SSE-NEXT: movdqa %xmm7, %xmm111878; SSE-NEXT: pandn %xmm0, %xmm111879; SSE-NEXT: pand %xmm7, %xmm41880; SSE-NEXT: por %xmm4, %xmm111881; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload1882; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm4[3,3,3,3]1883; SSE-NEXT: movdqa %xmm3, %xmm21884; SSE-NEXT: pandn %xmm0, %xmm21885; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload1886; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm13[0,1,2,3,5,6,7,7]1887; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,2,2,3]1888; SSE-NEXT: pand %xmm3, %xmm01889; SSE-NEXT: por %xmm2, %xmm01890; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload1891; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm14[2,2,3,3]1892; SSE-NEXT: movdqa %xmm9, %xmm81893; SSE-NEXT: pandn %xmm2, %xmm81894; SSE-NEXT: pand %xmm9, %xmm01895; SSE-NEXT: por %xmm0, %xmm81896; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload1897; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm15[2,2,3,3]1898; SSE-NEXT: movdqa %xmm10, %xmm61899; SSE-NEXT: pandn %xmm0, %xmm61900; SSE-NEXT: pand %xmm10, %xmm81901; SSE-NEXT: por %xmm8, %xmm61902; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm13[3,3,3,3,4,5,6,7]1903; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]1904; SSE-NEXT: movdqa %xmm3, %xmm21905; SSE-NEXT: pandn %xmm0, %xmm21906; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,2,2]1907; SSE-NEXT: pand %xmm3, %xmm01908; SSE-NEXT: por %xmm0, %xmm21909; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm14[1,1,2,2]1910; SSE-NEXT: movdqa %xmm1, %xmm81911; SSE-NEXT: pandn %xmm0, %xmm81912; SSE-NEXT: pand %xmm1, %xmm21913; SSE-NEXT: por %xmm2, %xmm81914; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm15[1,1,2,2]1915; SSE-NEXT: movdqa %xmm5, %xmm151916; SSE-NEXT: pandn %xmm0, %xmm151917; SSE-NEXT: pand %xmm5, %xmm81918; SSE-NEXT: por %xmm8, %xmm151919; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload1920; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm2[3,3,3,3,4,5,6,7]1921; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]1922; SSE-NEXT: movdqa %xmm3, %xmm81923; SSE-NEXT: pandn %xmm0, %xmm81924; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload1925; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm13[1,1,2,2]1926; SSE-NEXT: pand %xmm3, %xmm01927; SSE-NEXT: por %xmm0, %xmm81928; SSE-NEXT: pand %xmm1, %xmm81929; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload1930; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm14[1,1,2,2]1931; SSE-NEXT: pandn %xmm0, %xmm11932; SSE-NEXT: por %xmm8, %xmm11933; SSE-NEXT: pand %xmm5, %xmm11934; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload1935; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,2,2]1936; SSE-NEXT: pandn %xmm0, %xmm51937; SSE-NEXT: por %xmm1, %xmm51938; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm2[1,0,2,2,4,5,6,7]1939; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]1940; SSE-NEXT: movdqa %xmm9, %xmm11941; SSE-NEXT: pandn %xmm0, %xmm11942; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm13[0,0,1,1]1943; SSE-NEXT: pand %xmm9, %xmm01944; SSE-NEXT: por %xmm0, %xmm11945; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm14[0,0,0,0]1946; SSE-NEXT: movdqa %xmm3, %xmm81947; SSE-NEXT: pandn %xmm0, %xmm81948; SSE-NEXT: pand %xmm3, %xmm11949; SSE-NEXT: por %xmm1, %xmm81950; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,0,0,0]1951; SSE-NEXT: movdqa %xmm7, %xmm01952; SSE-NEXT: pandn %xmm1, %xmm01953; SSE-NEXT: pand %xmm7, %xmm81954; SSE-NEXT: por %xmm8, %xmm01955; SSE-NEXT: pshuflw $161, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1956; SSE-NEXT: # xmm1 = mem[1,0,2,2,4,5,6,7]1957; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,1]1958; SSE-NEXT: movdqa %xmm9, %xmm81959; SSE-NEXT: pandn %xmm1, %xmm81960; SSE-NEXT: pshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1961; SSE-NEXT: # xmm1 = mem[0,0,1,1]1962; SSE-NEXT: pand %xmm9, %xmm11963; SSE-NEXT: por %xmm1, %xmm81964; SSE-NEXT: pshufd $0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1965; SSE-NEXT: # xmm1 = mem[0,0,0,0]1966; SSE-NEXT: movdqa %xmm3, %xmm131967; SSE-NEXT: pandn %xmm1, %xmm131968; SSE-NEXT: pand %xmm3, %xmm81969; SSE-NEXT: por %xmm8, %xmm131970; SSE-NEXT: pand %xmm7, %xmm131971; SSE-NEXT: pshufd $0, (%rsp), %xmm1 # 16-byte Folded Reload1972; SSE-NEXT: # xmm1 = mem[0,0,0,0]1973; SSE-NEXT: pandn %xmm1, %xmm71974; SSE-NEXT: por %xmm13, %xmm71975; SSE-NEXT: pshufd $255, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1976; SSE-NEXT: # xmm1 = mem[3,3,3,3]1977; SSE-NEXT: pshufhw $249, {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload1978; SSE-NEXT: # xmm8 = mem[0,1,2,3,5,6,7,7]1979; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm8[2,2,2,3]1980; SSE-NEXT: pand %xmm3, %xmm81981; SSE-NEXT: pandn %xmm1, %xmm31982; SSE-NEXT: por %xmm8, %xmm31983; SSE-NEXT: pand %xmm9, %xmm31984; SSE-NEXT: pshufd $250, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1985; SSE-NEXT: # xmm1 = mem[2,2,3,3]1986; SSE-NEXT: pandn %xmm1, %xmm91987; SSE-NEXT: por %xmm3, %xmm91988; SSE-NEXT: pand %xmm10, %xmm91989; SSE-NEXT: pshufd $250, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1990; SSE-NEXT: # xmm1 = mem[2,2,3,3]1991; SSE-NEXT: pandn %xmm1, %xmm101992; SSE-NEXT: por %xmm9, %xmm101993; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax1994; SSE-NEXT: movdqa %xmm10, 32(%rax)1995; SSE-NEXT: movdqa %xmm7, 48(%rax)1996; SSE-NEXT: movdqa %xmm0, 96(%rax)1997; SSE-NEXT: movdqa %xmm5, 112(%rax)1998; SSE-NEXT: movdqa %xmm15, 160(%rax)1999; SSE-NEXT: movdqa %xmm6, 176(%rax)2000; SSE-NEXT: movdqa %xmm11, (%rax)2001; SSE-NEXT: movdqa %xmm12, 16(%rax)2002; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2003; SSE-NEXT: movaps %xmm0, 64(%rax)2004; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2005; SSE-NEXT: movaps %xmm0, 80(%rax)2006; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2007; SSE-NEXT: movaps %xmm0, 128(%rax)2008; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2009; SSE-NEXT: movaps %xmm0, 144(%rax)2010; SSE-NEXT: addq $200, %rsp2011; SSE-NEXT: retq2012;2013; AVX-LABEL: store_i8_stride6_vf32:2014; AVX: # %bb.0:2015; AVX-NEXT: vmovdqa 16(%rsi), %xmm02016; AVX-NEXT: vmovdqa 16(%rdi), %xmm12017; AVX-NEXT: vpunpcklbw {{.*#+}} xmm11 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]2018; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm11[3,3,3,3]2019; AVX-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15]2020; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[0,0,1,1]2021; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm12022; AVX-NEXT: vmovaps {{.*#+}} ymm10 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]2023; AVX-NEXT: vandnps %ymm1, %ymm10, %ymm22024; AVX-NEXT: vmovdqa 16(%rcx), %xmm12025; AVX-NEXT: vmovdqa 16(%rdx), %xmm32026; AVX-NEXT: vpunpcklbw {{.*#+}} xmm14 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3],xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],xmm1[7]2027; AVX-NEXT: vpshufhw {{.*#+}} xmm4 = xmm14[0,1,2,3,5,6,7,7]2028; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[2,2,2,3]2029; AVX-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm3[8],xmm1[8],xmm3[9],xmm1[9],xmm3[10],xmm1[10],xmm3[11],xmm1[11],xmm3[12],xmm1[12],xmm3[13],xmm1[13],xmm3[14],xmm1[14],xmm3[15],xmm1[15]2030; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm1[1,0,2,2,4,5,6,7]2031; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,0,1]2032; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm32033; AVX-NEXT: vandps %ymm3, %ymm10, %ymm32034; AVX-NEXT: vorps %ymm2, %ymm3, %ymm22035; AVX-NEXT: vextractf128 $1, %ymm2, %xmm32036; AVX-NEXT: vmovdqa 16(%r8), %xmm122037; AVX-NEXT: vpshufb {{.*#+}} xmm4 = zero,zero,zero,zero,xmm12[8,u],zero,zero,zero,zero,xmm12[9,u],zero,zero,zero,zero2038; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm4[2],xmm3[3,4],xmm4[5],xmm3[6,7]2039; AVX-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[0,1,2,3,4],zero,xmm3[6,7,8,9,10],zero,xmm3[12,13,14,15]2040; AVX-NEXT: vmovdqa 16(%r9), %xmm132041; AVX-NEXT: vpshufb {{.*#+}} xmm4 = zero,zero,zero,zero,zero,xmm13[8],zero,zero,zero,zero,zero,xmm13[9],zero,zero,zero,zero2042; AVX-NEXT: vpor %xmm4, %xmm3, %xmm32043; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2044; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,zero,xmm12[5,u],zero,zero,zero,zero,xmm12[6,u],zero,zero,zero,zero,xmm12[7,u]2045; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1],xmm2[2,3],xmm3[4],xmm2[5,6],xmm3[7]2046; AVX-NEXT: vmovdqa {{.*#+}} xmm9 = [0,1,2,128,4,5,6,7,8,128,10,11,12,13,14,128]2047; AVX-NEXT: vpshufb %xmm9, %xmm2, %xmm22048; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm13[5],zero,zero,zero,zero,zero,xmm13[6],zero,zero,zero,zero,zero,xmm13[7]2049; AVX-NEXT: vpor %xmm3, %xmm2, %xmm22050; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2051; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[1,1,2,2]2052; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]2053; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm2, %ymm02054; AVX-NEXT: vandps %ymm0, %ymm10, %ymm02055; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm1[3,3,3,3,4,5,6,7]2056; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,4,4]2057; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,6,7,7]2058; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[2,2,2,3]2059; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm12060; AVX-NEXT: vandnps %ymm1, %ymm10, %ymm12061; AVX-NEXT: vorps %ymm1, %ymm0, %ymm02062; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm12[10,u],zero,zero,zero,zero,xmm12[11,u],zero,zero,zero,zero,xmm12[12,u],zero,zero2063; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm0[1,2],xmm1[3],xmm0[4,5],xmm1[6],xmm0[7]2064; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0],zero,xmm1[2,3,4,5,6],zero,xmm1[8,9,10,11,12],zero,xmm1[14,15]2065; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,xmm13[10],zero,zero,zero,zero,zero,xmm13[11],zero,zero,zero,zero,zero,xmm13[12],zero,zero2066; AVX-NEXT: vpor %xmm3, %xmm1, %xmm12067; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2068; AVX-NEXT: vextractf128 $1, %ymm0, %xmm02069; AVX-NEXT: vmovdqa {{.*#+}} xmm2 = [128,128,13,u,128,128,128,128,14,u,128,128,128,128,15,u]2070; AVX-NEXT: vpshufb %xmm2, %xmm12, %xmm12071; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]2072; AVX-NEXT: vpshufb %xmm9, %xmm0, %xmm02073; AVX-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm13[13],zero,zero,zero,zero,zero,xmm13[14],zero,zero,zero,zero,zero,xmm13[15]2074; AVX-NEXT: vpor %xmm1, %xmm0, %xmm02075; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2076; AVX-NEXT: vmovdqa (%rsi), %xmm82077; AVX-NEXT: vmovdqa (%rdi), %xmm62078; AVX-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm6[8],xmm8[8],xmm6[9],xmm8[9],xmm6[10],xmm8[10],xmm6[11],xmm8[11],xmm6[12],xmm8[12],xmm6[13],xmm8[13],xmm6[14],xmm8[14],xmm6[15],xmm8[15]2079; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm5[1,1,2,2]2080; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm5[3,3,3,3]2081; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm02082; AVX-NEXT: vmovdqa (%rcx), %xmm72083; AVX-NEXT: vmovdqa (%rdx), %xmm42084; AVX-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm4[8],xmm7[8],xmm4[9],xmm7[9],xmm4[10],xmm7[10],xmm4[11],xmm7[11],xmm4[12],xmm7[12],xmm4[13],xmm7[13],xmm4[14],xmm7[14],xmm4[15],xmm7[15]2085; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm3[3,3,3,3,4,5,6,7]2086; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]2087; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm3[0,1,2,3,5,6,7,7]2088; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm15[2,2,2,3]2089; AVX-NEXT: vinsertf128 $1, %xmm15, %ymm1, %ymm12090; AVX-NEXT: vandps %ymm0, %ymm10, %ymm02091; AVX-NEXT: vandnps %ymm1, %ymm10, %ymm12092; AVX-NEXT: vorps %ymm1, %ymm0, %ymm152093; AVX-NEXT: vmovdqa (%r8), %xmm12094; AVX-NEXT: vpshufb %xmm2, %xmm1, %xmm02095; AVX-NEXT: vextractf128 $1, %ymm15, %xmm22096; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm2[0],xmm0[1],xmm2[2,3],xmm0[4],xmm2[5,6],xmm0[7]2097; AVX-NEXT: vpshufb %xmm9, %xmm0, %xmm22098; AVX-NEXT: vmovdqa (%r9), %xmm02099; AVX-NEXT: vpshufb {{.*#+}} xmm9 = zero,zero,zero,xmm0[13],zero,zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,zero,xmm0[15]2100; AVX-NEXT: vpor %xmm2, %xmm9, %xmm22101; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2102; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm1[10,u],zero,zero,zero,zero,xmm1[11,u],zero,zero,zero,zero,xmm1[12,u],zero,zero2103; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm15[1,2],xmm2[3],xmm15[4,5],xmm2[6],xmm15[7]2104; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[0],zero,xmm2[2,3,4,5,6],zero,xmm2[8,9,10,11,12],zero,xmm2[14,15]2105; AVX-NEXT: vpshufb {{.*#+}} xmm9 = zero,xmm0[10],zero,zero,zero,zero,zero,xmm0[11],zero,zero,zero,zero,zero,xmm0[12],zero,zero2106; AVX-NEXT: vpor %xmm2, %xmm9, %xmm22107; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2108; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm11[0,0,1,1]2109; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm11[1,1,2,2]2110; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm2, %ymm92111; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm14[1,0,2,2,4,5,6,7]2112; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,1,0,1]2113; AVX-NEXT: vpshuflw {{.*#+}} xmm11 = xmm14[3,3,3,3,4,5,6,7]2114; AVX-NEXT: vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]2115; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm2, %ymm112116; AVX-NEXT: vmovaps {{.*#+}} ymm2 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]2117; AVX-NEXT: vandps %ymm2, %ymm9, %ymm92118; AVX-NEXT: vandnps %ymm11, %ymm2, %ymm112119; AVX-NEXT: vorps %ymm11, %ymm9, %ymm152120; AVX-NEXT: vpshufb {{.*#+}} xmm11 = zero,zero,zero,zero,xmm12[0,u],zero,zero,zero,zero,xmm12[1,u],zero,zero,zero,zero2121; AVX-NEXT: vpblendw {{.*#+}} xmm11 = xmm15[0,1],xmm11[2],xmm15[3,4],xmm11[5],xmm15[6,7]2122; AVX-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,2,3,4,128,6,7,8,9,10,128,12,13,14,15]2123; AVX-NEXT: vpshufb %xmm14, %xmm11, %xmm112124; AVX-NEXT: vpshufb {{.*#+}} xmm10 = zero,zero,zero,zero,zero,xmm13[0],zero,zero,zero,zero,zero,xmm13[1],zero,zero,zero,zero2125; AVX-NEXT: vpor %xmm10, %xmm11, %xmm112126; AVX-NEXT: vextractf128 $1, %ymm15, %xmm102127; AVX-NEXT: vmovdqa {{.*#+}} xmm15 = [2,u,128,128,128,128,3,u,128,128,128,128,4,u,128,128]2128; AVX-NEXT: vpshufb %xmm15, %xmm12, %xmm122129; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm12[0],xmm10[1,2],xmm12[3],xmm10[4,5],xmm12[6],xmm10[7]2130; AVX-NEXT: vmovdqa {{.*#+}} xmm9 = [0,128,2,3,4,5,6,128,8,9,10,11,12,128,14,15]2131; AVX-NEXT: vpshufb %xmm9, %xmm10, %xmm102132; AVX-NEXT: vmovdqa {{.*#+}} xmm12 = [128,2,128,128,128,128,128,3,128,128,128,128,128,4,128,128]2133; AVX-NEXT: vpshufb %xmm12, %xmm13, %xmm132134; AVX-NEXT: vpor %xmm13, %xmm10, %xmm102135; AVX-NEXT: vpunpcklbw {{.*#+}} xmm6 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],xmm8[3],xmm6[4],xmm8[4],xmm6[5],xmm8[5],xmm6[6],xmm8[6],xmm6[7],xmm8[7]2136; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm6[0,0,1,1]2137; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm6[1,1,2,2]2138; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm8, %ymm82139; AVX-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm4[0],xmm7[0],xmm4[1],xmm7[1],xmm4[2],xmm7[2],xmm4[3],xmm7[3],xmm4[4],xmm7[4],xmm4[5],xmm7[5],xmm4[6],xmm7[6],xmm4[7],xmm7[7]2140; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm4[1,0,2,2,4,5,6,7]2141; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,1,0,1]2142; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm4[3,3,3,3,4,5,6,7]2143; AVX-NEXT: vpshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,4,4,4]2144; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm7, %ymm72145; AVX-NEXT: vandps %ymm2, %ymm8, %ymm82146; AVX-NEXT: vandnps %ymm7, %ymm2, %ymm22147; AVX-NEXT: vorps %ymm2, %ymm8, %ymm72148; AVX-NEXT: vpshufb %xmm15, %xmm1, %xmm22149; AVX-NEXT: vextractf128 $1, %ymm7, %xmm82150; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm8[1,2],xmm2[3],xmm8[4,5],xmm2[6],xmm8[7]2151; AVX-NEXT: vpshufb %xmm9, %xmm2, %xmm22152; AVX-NEXT: vpshufb %xmm12, %xmm0, %xmm82153; AVX-NEXT: vpor %xmm2, %xmm8, %xmm22154; AVX-NEXT: vpshufb {{.*#+}} xmm8 = zero,zero,zero,zero,xmm1[0,u],zero,zero,zero,zero,xmm1[1,u],zero,zero,zero,zero2155; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1],xmm8[2],xmm7[3,4],xmm8[5],xmm7[6,7]2156; AVX-NEXT: vpshufb %xmm14, %xmm7, %xmm72157; AVX-NEXT: vpshufb {{.*#+}} xmm8 = zero,zero,zero,zero,zero,xmm0[0],zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero2158; AVX-NEXT: vpor %xmm7, %xmm8, %xmm72159; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[3,3,3,3]2160; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[0,0,1,1]2161; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm52162; AVX-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,6,7,7]2163; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[2,2,2,3]2164; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,0,2,2,4,5,6,7]2165; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,0,1]2166; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm32167; AVX-NEXT: vmovaps {{.*#+}} ymm6 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]2168; AVX-NEXT: vandnps %ymm5, %ymm6, %ymm42169; AVX-NEXT: vandps %ymm6, %ymm3, %ymm32170; AVX-NEXT: vorps %ymm4, %ymm3, %ymm32171; AVX-NEXT: vpshufb {{.*#+}} xmm4 = zero,zero,xmm1[5,u],zero,zero,zero,zero,xmm1[6,u],zero,zero,zero,zero,xmm1[7,u]2172; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm3[0],xmm4[1],xmm3[2,3],xmm4[4],xmm3[5,6],xmm4[7]2173; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[0,1,2],zero,xmm4[4,5,6,7,8],zero,xmm4[10,11,12,13,14],zero2174; AVX-NEXT: vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm0[5],zero,zero,zero,zero,zero,xmm0[6],zero,zero,zero,zero,zero,xmm0[7]2175; AVX-NEXT: vpor %xmm5, %xmm4, %xmm42176; AVX-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,zero,xmm1[8,u],zero,zero,zero,zero,xmm1[9,u],zero,zero,zero,zero2177; AVX-NEXT: vextractf128 $1, %ymm3, %xmm32178; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0,1],xmm1[2],xmm3[3,4],xmm1[5],xmm3[6,7]2179; AVX-NEXT: vpshufb %xmm14, %xmm1, %xmm12180; AVX-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,zero,zero,zero,xmm0[8],zero,zero,zero,zero,zero,xmm0[9],zero,zero,zero,zero2181; AVX-NEXT: vpor %xmm0, %xmm1, %xmm02182; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax2183; AVX-NEXT: vmovdqa %xmm0, 48(%rax)2184; AVX-NEXT: vmovdqa %xmm4, 32(%rax)2185; AVX-NEXT: vmovdqa %xmm7, (%rax)2186; AVX-NEXT: vmovdqa %xmm2, 16(%rax)2187; AVX-NEXT: vmovdqa %xmm10, 112(%rax)2188; AVX-NEXT: vmovdqa %xmm11, 96(%rax)2189; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2190; AVX-NEXT: vmovaps %xmm0, 64(%rax)2191; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2192; AVX-NEXT: vmovaps %xmm0, 80(%rax)2193; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2194; AVX-NEXT: vmovaps %xmm0, 176(%rax)2195; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2196; AVX-NEXT: vmovaps %xmm0, 160(%rax)2197; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2198; AVX-NEXT: vmovaps %xmm0, 128(%rax)2199; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2200; AVX-NEXT: vmovaps %xmm0, 144(%rax)2201; AVX-NEXT: vzeroupper2202; AVX-NEXT: retq2203;2204; AVX2-LABEL: store_i8_stride6_vf32:2205; AVX2: # %bb.0:2206; AVX2-NEXT: pushq %rax2207; AVX2-NEXT: vmovdqa (%rdi), %ymm12208; AVX2-NEXT: vmovdqa (%rsi), %ymm32209; AVX2-NEXT: vmovdqa (%rdx), %ymm02210; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2211; AVX2-NEXT: vmovdqa (%rcx), %ymm22212; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2213; AVX2-NEXT: vmovdqa (%r8), %ymm42214; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm7 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]2215; AVX2-NEXT: vmovdqa (%rcx), %xmm62216; AVX2-NEXT: vpshufb %xmm7, %xmm6, %xmm52217; AVX2-NEXT: vmovdqa (%rdx), %xmm82218; AVX2-NEXT: vpshufb %xmm7, %xmm8, %xmm92219; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm9[0],xmm5[0],xmm9[1],xmm5[1],xmm9[2],xmm5[2],xmm9[3],xmm5[3],xmm9[4],xmm5[4],xmm9[5],xmm5[5],xmm9[6],xmm5[6],xmm9[7],xmm5[7]2220; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]2221; AVX2-NEXT: vmovdqa (%rsi), %xmm112222; AVX2-NEXT: vpbroadcastq {{.*#+}} xmm9 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2223; AVX2-NEXT: vpshufb %xmm9, %xmm11, %xmm102224; AVX2-NEXT: vmovdqa (%rdi), %xmm132225; AVX2-NEXT: vpshufb %xmm9, %xmm13, %xmm92226; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm9[8],xmm10[8],xmm9[9],xmm10[9],xmm9[10],xmm10[10],xmm9[11],xmm10[11],xmm9[12],xmm10[12],xmm9[13],xmm10[13],xmm9[14],xmm10[14],xmm9[15],xmm10[15]2227; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,0,1]2228; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm10 = [65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535]2229; AVX2-NEXT: vpblendvb %ymm10, %ymm5, %ymm9, %ymm92230; AVX2-NEXT: vmovdqa (%r8), %xmm52231; AVX2-NEXT: vpshufb {{.*#+}} xmm12 = xmm5[6,u,5,u,8,u,7,u,9,u,9,u,9,u,9,u]2232; AVX2-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,0,0,1]2233; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]2234; AVX2-NEXT: vpblendvb %ymm14, %ymm9, %ymm12, %ymm92235; AVX2-NEXT: vpshufb %ymm7, %ymm2, %ymm122236; AVX2-NEXT: vpshufb %ymm7, %ymm0, %ymm72237; AVX2-NEXT: vpunpcklbw {{.*#+}} ymm12 = ymm7[0],ymm12[0],ymm7[1],ymm12[1],ymm7[2],ymm12[2],ymm7[3],ymm12[3],ymm7[4],ymm12[4],ymm7[5],ymm12[5],ymm7[6],ymm12[6],ymm7[7],ymm12[7],ymm7[16],ymm12[16],ymm7[17],ymm12[17],ymm7[18],ymm12[18],ymm7[19],ymm12[19],ymm7[20],ymm12[20],ymm7[21],ymm12[21],ymm7[22],ymm12[22],ymm7[23],ymm12[23]2238; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm7 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2239; AVX2-NEXT: vpshufb %ymm7, %ymm3, %ymm152240; AVX2-NEXT: vmovdqa %ymm1, %ymm22241; AVX2-NEXT: vpshufb %ymm7, %ymm1, %ymm72242; AVX2-NEXT: vpunpcklbw {{.*#+}} ymm15 = ymm7[0],ymm15[0],ymm7[1],ymm15[1],ymm7[2],ymm15[2],ymm7[3],ymm15[3],ymm7[4],ymm15[4],ymm7[5],ymm15[5],ymm7[6],ymm15[6],ymm7[7],ymm15[7],ymm7[16],ymm15[16],ymm7[17],ymm15[17],ymm7[18],ymm15[18],ymm7[19],ymm15[19],ymm7[20],ymm15[20],ymm7[21],ymm15[21],ymm7[22],ymm15[22],ymm7[23],ymm15[23]2243; AVX2-NEXT: vmovdqa (%r9), %ymm72244; AVX2-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,2,2,3]2245; AVX2-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,2,2,3]2246; AVX2-NEXT: vpblendvb %ymm10, %ymm12, %ymm15, %ymm122247; AVX2-NEXT: vmovdqa (%r9), %xmm102248; AVX2-NEXT: vpshufb {{.*#+}} ymm15 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u,u]2249; AVX2-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,2,2,3]2250; AVX2-NEXT: vpblendvb %ymm14, %ymm12, %ymm15, %ymm122251; AVX2-NEXT: vpshufb {{.*#+}} xmm14 = xmm10[u,6,u,5,u,8,u,7,u,9,u,9,u,9,u,9]2252; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,0,1]2253; AVX2-NEXT: vmovdqa {{.*#+}} ymm15 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]2254; AVX2-NEXT: vpblendvb %ymm15, %ymm9, %ymm14, %ymm02255; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2256; AVX2-NEXT: vpshufb {{.*#+}} ymm14 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u]2257; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,2,2,3]2258; AVX2-NEXT: vpblendvb %ymm15, %ymm12, %ymm14, %ymm02259; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2260; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm14 = xmm13[0],xmm11[0],xmm13[1],xmm11[1],xmm13[2],xmm11[2],xmm13[3],xmm11[3],xmm13[4],xmm11[4],xmm13[5],xmm11[5],xmm13[6],xmm11[6],xmm13[7],xmm11[7]2261; AVX2-NEXT: vpshuflw {{.*#+}} xmm14 = xmm14[0,3,2,1,4,5,6,7]2262; AVX2-NEXT: vpshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,5,6,5]2263; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,0,1]2264; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm15 = xmm8[0],xmm6[0],xmm8[1],xmm6[1],xmm8[2],xmm6[2],xmm8[3],xmm6[3],xmm8[4],xmm6[4],xmm8[5],xmm6[5],xmm8[6],xmm6[6],xmm8[7],xmm6[7]2265; AVX2-NEXT: vpshuflw {{.*#+}} xmm15 = xmm15[1,0,3,2,4,5,6,7]2266; AVX2-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,4,4,4]2267; AVX2-NEXT: vpermq {{.*#+}} ymm15 = ymm15[0,0,0,1]2268; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm0 = [65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535]2269; AVX2-NEXT: vpblendvb %ymm0, %ymm14, %ymm15, %ymm142270; AVX2-NEXT: vpunpcklbw {{.*#+}} ymm15 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[4],ymm3[4],ymm1[5],ymm3[5],ymm1[6],ymm3[6],ymm1[7],ymm3[7],ymm1[16],ymm3[16],ymm1[17],ymm3[17],ymm1[18],ymm3[18],ymm1[19],ymm3[19],ymm1[20],ymm3[20],ymm1[21],ymm3[21],ymm1[22],ymm3[22],ymm1[23],ymm3[23]2271; AVX2-NEXT: vmovdqa %ymm3, %ymm122272; AVX2-NEXT: vpshuflw {{.*#+}} ymm15 = ymm15[0,3,2,1,4,5,6,7,8,11,10,9,12,13,14,15]2273; AVX2-NEXT: vpshufhw {{.*#+}} ymm15 = ymm15[0,1,2,3,4,5,6,5,8,9,10,11,12,13,14,13]2274; AVX2-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,2,2,3]2275; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload2276; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload2277; AVX2-NEXT: vpunpcklbw {{.*#+}} ymm9 = ymm3[0],ymm1[0],ymm3[1],ymm1[1],ymm3[2],ymm1[2],ymm3[3],ymm1[3],ymm3[4],ymm1[4],ymm3[5],ymm1[5],ymm3[6],ymm1[6],ymm3[7],ymm1[7],ymm3[16],ymm1[16],ymm3[17],ymm1[17],ymm3[18],ymm1[18],ymm3[19],ymm1[19],ymm3[20],ymm1[20],ymm3[21],ymm1[21],ymm3[22],ymm1[22],ymm3[23],ymm1[23]2278; AVX2-NEXT: vpshuflw {{.*#+}} ymm9 = ymm9[1,0,3,2,4,5,6,7,9,8,11,10,12,13,14,15]2279; AVX2-NEXT: vpshufhw {{.*#+}} ymm9 = ymm9[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]2280; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,2,3]2281; AVX2-NEXT: vpblendvb %ymm0, %ymm15, %ymm9, %ymm02282; AVX2-NEXT: vpshufb {{.*#+}} xmm9 = xmm5[2,u,1,u,0,u,3,u,4,u,4,u,4,u,4,u]2283; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,0,1]2284; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm15 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]2285; AVX2-NEXT: vpblendvb %ymm15, %ymm14, %ymm9, %ymm92286; AVX2-NEXT: vpshufb {{.*#+}} ymm14 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,u,17,u,16,u,19,u,u,u,u,u,20,u,u,u]2287; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,2,2,3]2288; AVX2-NEXT: vpblendvb %ymm15, %ymm0, %ymm14, %ymm02289; AVX2-NEXT: vpshufb {{.*#+}} xmm14 = xmm10[u,2,u,1,u,0,u,3,u,4,u,4,u,4,u,4]2290; AVX2-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,0,1]2291; AVX2-NEXT: vmovdqa {{.*#+}} ymm15 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]2292; AVX2-NEXT: vpblendvb %ymm15, %ymm9, %ymm14, %ymm142293; AVX2-NEXT: vpshufb {{.*#+}} ymm9 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,u,17,u,16,u,19,u,u,u,u,u,20,u,u]2294; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,2,3]2295; AVX2-NEXT: vpblendvb %ymm15, %ymm0, %ymm9, %ymm152296; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm13[8],xmm11[8],xmm13[9],xmm11[9],xmm13[10],xmm11[10],xmm13[11],xmm11[11],xmm13[12],xmm11[12],xmm13[13],xmm11[13],xmm13[14],xmm11[14],xmm13[15],xmm11[15]2297; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]2298; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]2299; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm6 = xmm8[8],xmm6[8],xmm8[9],xmm6[9],xmm8[10],xmm6[10],xmm8[11],xmm6[11],xmm8[12],xmm6[12],xmm8[13],xmm6[13],xmm8[14],xmm6[14],xmm8[15],xmm6[15]2300; AVX2-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]2301; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,0,1]2302; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm8 = [0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0]2303; AVX2-NEXT: vpblendvb %ymm8, %ymm0, %ymm6, %ymm02304; AVX2-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm2[8],ymm12[8],ymm2[9],ymm12[9],ymm2[10],ymm12[10],ymm2[11],ymm12[11],ymm2[12],ymm12[12],ymm2[13],ymm12[13],ymm2[14],ymm12[14],ymm2[15],ymm12[15],ymm2[24],ymm12[24],ymm2[25],ymm12[25],ymm2[26],ymm12[26],ymm2[27],ymm12[27],ymm2[28],ymm12[28],ymm2[29],ymm12[29],ymm2[30],ymm12[30],ymm2[31],ymm12[31]2305; AVX2-NEXT: vpunpckhbw {{.*#+}} ymm1 = ymm3[8],ymm1[8],ymm3[9],ymm1[9],ymm3[10],ymm1[10],ymm3[11],ymm1[11],ymm3[12],ymm1[12],ymm3[13],ymm1[13],ymm3[14],ymm1[14],ymm3[15],ymm1[15],ymm3[24],ymm1[24],ymm3[25],ymm1[25],ymm3[26],ymm1[26],ymm3[27],ymm1[27],ymm3[28],ymm1[28],ymm3[29],ymm1[29],ymm3[30],ymm1[30],ymm3[31],ymm1[31]2306; AVX2-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]2307; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]2308; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]2309; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]2310; AVX2-NEXT: vpblendvb %ymm8, %ymm2, %ymm1, %ymm12311; AVX2-NEXT: vpshufb {{.*#+}} xmm2 = xmm5[10,u,13,u,12,u,11,u,14,u,13,u,14,u,15,u]2312; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]2313; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]2314; AVX2-NEXT: vpblendvb %ymm3, %ymm0, %ymm2, %ymm02315; AVX2-NEXT: vpshufb {{.*#+}} ymm2 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,u,29,u,28,u,27,u,30,u,u,u,u,u,31,u]2316; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]2317; AVX2-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm12318; AVX2-NEXT: vpshufb {{.*#+}} xmm2 = xmm10[u,10,u,13,u,12,u,11,u,14,u,13,u,14,u,15]2319; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]2320; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]2321; AVX2-NEXT: vpblendvb %ymm3, %ymm0, %ymm2, %ymm02322; AVX2-NEXT: vpshufb {{.*#+}} ymm2 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,u,29,u,28,u,27,u,30,u,u,u,u,u,31]2323; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]2324; AVX2-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm12325; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax2326; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload2327; AVX2-NEXT: vmovaps %ymm2, 128(%rax)2328; AVX2-NEXT: vmovdqa %ymm1, 160(%rax)2329; AVX2-NEXT: vmovdqa %ymm0, 64(%rax)2330; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload2331; AVX2-NEXT: vmovaps %ymm0, 32(%rax)2332; AVX2-NEXT: vmovdqa %ymm15, 96(%rax)2333; AVX2-NEXT: vmovdqa %ymm14, (%rax)2334; AVX2-NEXT: popq %rax2335; AVX2-NEXT: vzeroupper2336; AVX2-NEXT: retq2337;2338; AVX2-FP-LABEL: store_i8_stride6_vf32:2339; AVX2-FP: # %bb.0:2340; AVX2-FP-NEXT: subq $40, %rsp2341; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm22342; AVX2-FP-NEXT: vmovdqa (%rsi), %ymm62343; AVX2-FP-NEXT: vmovdqa (%rdx), %ymm32344; AVX2-FP-NEXT: vmovdqa (%rcx), %ymm42345; AVX2-FP-NEXT: vmovdqa (%r8), %ymm02346; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2347; AVX2-FP-NEXT: vpbroadcastq {{.*#+}} ymm9 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]2348; AVX2-FP-NEXT: vmovdqa (%rcx), %xmm12349; AVX2-FP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2350; AVX2-FP-NEXT: vpshufb %xmm9, %xmm1, %xmm72351; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm12352; AVX2-FP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2353; AVX2-FP-NEXT: vpshufb %xmm9, %xmm1, %xmm82354; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3],xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]2355; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,0,1]2356; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm102357; AVX2-FP-NEXT: vpbroadcastq {{.*#+}} xmm11 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2358; AVX2-FP-NEXT: vpshufb %xmm11, %xmm10, %xmm122359; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm52360; AVX2-FP-NEXT: vpshufb %xmm11, %xmm5, %xmm112361; AVX2-FP-NEXT: vpunpckhbw {{.*#+}} xmm11 = xmm11[8],xmm12[8],xmm11[9],xmm12[9],xmm11[10],xmm12[10],xmm11[11],xmm12[11],xmm11[12],xmm12[12],xmm11[13],xmm12[13],xmm11[14],xmm12[14],xmm11[15],xmm12[15]2362; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,0,1]2363; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535]2364; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm7, %ymm11, %ymm112365; AVX2-FP-NEXT: vmovdqa (%r8), %xmm72366; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm13 = xmm7[6,u,5,u,8,u,7,u,9,u,9,u,9,u,9,u]2367; AVX2-FP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[0,0,0,1]2368; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]2369; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm11, %ymm13, %ymm112370; AVX2-FP-NEXT: vpshufb %ymm9, %ymm4, %ymm132371; AVX2-FP-NEXT: vpshufb %ymm9, %ymm3, %ymm92372; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} ymm13 = ymm9[0],ymm13[0],ymm9[1],ymm13[1],ymm9[2],ymm13[2],ymm9[3],ymm13[3],ymm9[4],ymm13[4],ymm9[5],ymm13[5],ymm9[6],ymm13[6],ymm9[7],ymm13[7],ymm9[16],ymm13[16],ymm9[17],ymm13[17],ymm9[18],ymm13[18],ymm9[19],ymm13[19],ymm9[20],ymm13[20],ymm9[21],ymm13[21],ymm9[22],ymm13[22],ymm9[23],ymm13[23]2373; AVX2-FP-NEXT: vpbroadcastq {{.*#+}} ymm9 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2374; AVX2-FP-NEXT: vpshufb %ymm9, %ymm6, %ymm152375; AVX2-FP-NEXT: vpshufb %ymm9, %ymm2, %ymm92376; AVX2-FP-NEXT: vmovdqa %ymm2, %ymm82377; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} ymm15 = ymm9[0],ymm15[0],ymm9[1],ymm15[1],ymm9[2],ymm15[2],ymm9[3],ymm15[3],ymm9[4],ymm15[4],ymm9[5],ymm15[5],ymm9[6],ymm15[6],ymm9[7],ymm15[7],ymm9[16],ymm15[16],ymm9[17],ymm15[17],ymm9[18],ymm15[18],ymm9[19],ymm15[19],ymm9[20],ymm15[20],ymm9[21],ymm15[21],ymm9[22],ymm15[22],ymm9[23],ymm15[23]2378; AVX2-FP-NEXT: vmovdqa (%r9), %ymm12379; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2380; AVX2-FP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,2,2,3]2381; AVX2-FP-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,2,2,3]2382; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm13, %ymm15, %ymm132383; AVX2-FP-NEXT: vmovdqa (%r9), %xmm122384; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm15 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u,u]2385; AVX2-FP-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,2,2,3]2386; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm13, %ymm15, %ymm132387; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm14 = xmm12[u,6,u,5,u,8,u,7,u,9,u,9,u,9,u,9]2388; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,0,1]2389; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm15 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]2390; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm11, %ymm14, %ymm02391; AVX2-FP-NEXT: vmovdqu %ymm0, (%rsp) # 32-byte Spill2392; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm14 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u]2393; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,2,2,3]2394; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm13, %ymm14, %ymm02395; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2396; AVX2-FP-NEXT: vpunpckhbw {{.*#+}} xmm14 = xmm5[8],xmm10[8],xmm5[9],xmm10[9],xmm5[10],xmm10[10],xmm5[11],xmm10[11],xmm5[12],xmm10[12],xmm5[13],xmm10[13],xmm5[14],xmm10[14],xmm5[15],xmm10[15]2397; AVX2-FP-NEXT: vmovdqa %xmm10, %xmm132398; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm14 = xmm14[8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]2399; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,0,1]2400; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload2401; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2402; AVX2-FP-NEXT: vpunpckhbw {{.*#+}} xmm15 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]2403; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm15 = xmm15[10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]2404; AVX2-FP-NEXT: vpermq {{.*#+}} ymm15 = ymm15[0,0,0,1]2405; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm0 = [0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0]2406; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm14, %ymm15, %ymm142407; AVX2-FP-NEXT: vpunpckhbw {{.*#+}} ymm15 = ymm8[8],ymm6[8],ymm8[9],ymm6[9],ymm8[10],ymm6[10],ymm8[11],ymm6[11],ymm8[12],ymm6[12],ymm8[13],ymm6[13],ymm8[14],ymm6[14],ymm8[15],ymm6[15],ymm8[24],ymm6[24],ymm8[25],ymm6[25],ymm8[26],ymm6[26],ymm8[27],ymm6[27],ymm8[28],ymm6[28],ymm8[29],ymm6[29],ymm8[30],ymm6[30],ymm8[31],ymm6[31]2408; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm15 = ymm15[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]2409; AVX2-FP-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,2,2,3]2410; AVX2-FP-NEXT: vpunpckhbw {{.*#+}} ymm11 = ymm3[8],ymm4[8],ymm3[9],ymm4[9],ymm3[10],ymm4[10],ymm3[11],ymm4[11],ymm3[12],ymm4[12],ymm3[13],ymm4[13],ymm3[14],ymm4[14],ymm3[15],ymm4[15],ymm3[24],ymm4[24],ymm3[25],ymm4[25],ymm3[26],ymm4[26],ymm3[27],ymm4[27],ymm3[28],ymm4[28],ymm3[29],ymm4[29],ymm3[30],ymm4[30],ymm3[31],ymm4[31]2411; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm11 = ymm11[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]2412; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,2,3]2413; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm15, %ymm11, %ymm02414; AVX2-FP-NEXT: vmovdqa %xmm7, %xmm92415; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm11 = xmm7[10,u,13,u,12,u,11,u,14,u,13,u,14,u,15,u]2416; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,0,1]2417; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]2418; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm14, %ymm11, %ymm112419; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload2420; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm14 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,u,29,u,28,u,27,u,30,u,u,u,u,u,31,u]2421; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,2,2,3]2422; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm0, %ymm14, %ymm02423; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm14 = xmm12[u,10,u,13,u,12,u,11,u,14,u,13,u,14,u,15]2424; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,0,1]2425; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm15 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]2426; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm11, %ymm14, %ymm142427; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload2428; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm11 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,u,29,u,28,u,27,u,30,u,u,u,u,u,31]2429; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,2,3]2430; AVX2-FP-NEXT: vpblendvb %ymm15, %ymm0, %ymm11, %ymm152431; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm5[0],xmm13[0],xmm5[1],xmm13[1],xmm5[2],xmm13[2],xmm5[3],xmm13[3],xmm5[4],xmm13[4],xmm5[5],xmm13[5],xmm5[6],xmm13[6],xmm5[7],xmm13[7]2432; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,6,7,4,5,2,3,8,9,10,11,12,13,10,11]2433; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]2434; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]2435; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[2,3,0,1,6,7,4,5,8,9,8,9,8,9,8,9]2436; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]2437; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535]2438; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm0, %ymm5, %ymm02439; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm8[0],ymm6[0],ymm8[1],ymm6[1],ymm8[2],ymm6[2],ymm8[3],ymm6[3],ymm8[4],ymm6[4],ymm8[5],ymm6[5],ymm8[6],ymm6[6],ymm8[7],ymm6[7],ymm8[16],ymm6[16],ymm8[17],ymm6[17],ymm8[18],ymm6[18],ymm8[19],ymm6[19],ymm8[20],ymm6[20],ymm8[21],ymm6[21],ymm8[22],ymm6[22],ymm8[23],ymm6[23]2440; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[4],ymm4[4],ymm3[5],ymm4[5],ymm3[6],ymm4[6],ymm3[7],ymm4[7],ymm3[16],ymm4[16],ymm3[17],ymm4[17],ymm3[18],ymm4[18],ymm3[19],ymm4[19],ymm3[20],ymm4[20],ymm3[21],ymm4[21],ymm3[22],ymm4[22],ymm3[23],ymm4[23]2441; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,17,22,23,20,21,18,19,24,25,26,27,28,29,26,27]2442; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]2443; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,16,17,22,23,20,21,24,25,24,25,24,25,24,25]2444; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]2445; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm2, %ymm1, %ymm12446; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm2 = xmm9[2,u,1,u,0,u,3,u,4,u,4,u,4,u,4,u]2447; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]2448; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]2449; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm0, %ymm2, %ymm02450; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm2 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,u,17,u,16,u,19,u,u,u,u,u,20,u,u,u]2451; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]2452; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm12453; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm2 = xmm12[u,2,u,1,u,0,u,3,u,4,u,4,u,4,u,4]2454; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]2455; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm3 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]2456; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm0, %ymm2, %ymm02457; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm2 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,u,17,u,16,u,19,u,u,u,u,u,20,u,u]2458; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]2459; AVX2-FP-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm12460; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax2461; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload2462; AVX2-FP-NEXT: vmovaps %ymm2, 128(%rax)2463; AVX2-FP-NEXT: vmovdqa %ymm1, 96(%rax)2464; AVX2-FP-NEXT: vmovdqa %ymm15, 160(%rax)2465; AVX2-FP-NEXT: vmovdqa %ymm14, 64(%rax)2466; AVX2-FP-NEXT: vmovups (%rsp), %ymm1 # 32-byte Reload2467; AVX2-FP-NEXT: vmovaps %ymm1, 32(%rax)2468; AVX2-FP-NEXT: vmovdqa %ymm0, (%rax)2469; AVX2-FP-NEXT: addq $40, %rsp2470; AVX2-FP-NEXT: vzeroupper2471; AVX2-FP-NEXT: retq2472;2473; AVX2-FCP-LABEL: store_i8_stride6_vf32:2474; AVX2-FCP: # %bb.0:2475; AVX2-FCP-NEXT: subq $40, %rsp2476; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm22477; AVX2-FCP-NEXT: vmovdqa (%rsi), %ymm62478; AVX2-FCP-NEXT: vmovdqa (%rdx), %ymm32479; AVX2-FCP-NEXT: vmovdqa (%rcx), %ymm42480; AVX2-FCP-NEXT: vmovdqa (%r8), %ymm02481; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2482; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm9 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]2483; AVX2-FCP-NEXT: vmovdqa (%rcx), %xmm12484; AVX2-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2485; AVX2-FCP-NEXT: vpshufb %xmm9, %xmm1, %xmm72486; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm12487; AVX2-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2488; AVX2-FCP-NEXT: vpshufb %xmm9, %xmm1, %xmm82489; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3],xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]2490; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,0,1]2491; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm102492; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} xmm11 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2493; AVX2-FCP-NEXT: vpshufb %xmm11, %xmm10, %xmm122494; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm52495; AVX2-FCP-NEXT: vpshufb %xmm11, %xmm5, %xmm112496; AVX2-FCP-NEXT: vpunpckhbw {{.*#+}} xmm11 = xmm11[8],xmm12[8],xmm11[9],xmm12[9],xmm11[10],xmm12[10],xmm11[11],xmm12[11],xmm11[12],xmm12[12],xmm11[13],xmm12[13],xmm11[14],xmm12[14],xmm11[15],xmm12[15]2497; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,0,1]2498; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535]2499; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm7, %ymm11, %ymm112500; AVX2-FCP-NEXT: vmovdqa (%r8), %xmm72501; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm13 = xmm7[6,u,5,u,8,u,7,u,9,u,9,u,9,u,9,u]2502; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[0,0,0,1]2503; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]2504; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm11, %ymm13, %ymm112505; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm4, %ymm132506; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm3, %ymm92507; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} ymm13 = ymm9[0],ymm13[0],ymm9[1],ymm13[1],ymm9[2],ymm13[2],ymm9[3],ymm13[3],ymm9[4],ymm13[4],ymm9[5],ymm13[5],ymm9[6],ymm13[6],ymm9[7],ymm13[7],ymm9[16],ymm13[16],ymm9[17],ymm13[17],ymm9[18],ymm13[18],ymm9[19],ymm13[19],ymm9[20],ymm13[20],ymm9[21],ymm13[21],ymm9[22],ymm13[22],ymm9[23],ymm13[23]2508; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm9 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2509; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm6, %ymm152510; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm2, %ymm92511; AVX2-FCP-NEXT: vmovdqa %ymm2, %ymm82512; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} ymm15 = ymm9[0],ymm15[0],ymm9[1],ymm15[1],ymm9[2],ymm15[2],ymm9[3],ymm15[3],ymm9[4],ymm15[4],ymm9[5],ymm15[5],ymm9[6],ymm15[6],ymm9[7],ymm15[7],ymm9[16],ymm15[16],ymm9[17],ymm15[17],ymm9[18],ymm15[18],ymm9[19],ymm15[19],ymm9[20],ymm15[20],ymm9[21],ymm15[21],ymm9[22],ymm15[22],ymm9[23],ymm15[23]2513; AVX2-FCP-NEXT: vmovdqa (%r9), %ymm12514; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2515; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm13 = ymm13[2,2,2,3]2516; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,2,2,3]2517; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm13, %ymm15, %ymm132518; AVX2-FCP-NEXT: vmovdqa (%r9), %xmm122519; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm15 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u,u]2520; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,2,2,3]2521; AVX2-FCP-NEXT: vpblendvb %ymm14, %ymm13, %ymm15, %ymm132522; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm14 = xmm12[u,6,u,5,u,8,u,7,u,9,u,9,u,9,u,9]2523; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,0,1]2524; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm15 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]2525; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm11, %ymm14, %ymm02526; AVX2-FCP-NEXT: vmovdqu %ymm0, (%rsp) # 32-byte Spill2527; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm14 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u]2528; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,2,2,3]2529; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm13, %ymm14, %ymm02530; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2531; AVX2-FCP-NEXT: vpunpckhbw {{.*#+}} xmm14 = xmm5[8],xmm10[8],xmm5[9],xmm10[9],xmm5[10],xmm10[10],xmm5[11],xmm10[11],xmm5[12],xmm10[12],xmm5[13],xmm10[13],xmm5[14],xmm10[14],xmm5[15],xmm10[15]2532; AVX2-FCP-NEXT: vmovdqa %xmm10, %xmm132533; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm14 = xmm14[8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]2534; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,0,1]2535; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload2536; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2537; AVX2-FCP-NEXT: vpunpckhbw {{.*#+}} xmm15 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]2538; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm15 = xmm15[10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]2539; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm15 = ymm15[0,0,0,1]2540; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm0 = [0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0]2541; AVX2-FCP-NEXT: vpblendvb %ymm0, %ymm14, %ymm15, %ymm142542; AVX2-FCP-NEXT: vpunpckhbw {{.*#+}} ymm15 = ymm8[8],ymm6[8],ymm8[9],ymm6[9],ymm8[10],ymm6[10],ymm8[11],ymm6[11],ymm8[12],ymm6[12],ymm8[13],ymm6[13],ymm8[14],ymm6[14],ymm8[15],ymm6[15],ymm8[24],ymm6[24],ymm8[25],ymm6[25],ymm8[26],ymm6[26],ymm8[27],ymm6[27],ymm8[28],ymm6[28],ymm8[29],ymm6[29],ymm8[30],ymm6[30],ymm8[31],ymm6[31]2543; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm15 = ymm15[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]2544; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,2,2,3]2545; AVX2-FCP-NEXT: vpunpckhbw {{.*#+}} ymm11 = ymm3[8],ymm4[8],ymm3[9],ymm4[9],ymm3[10],ymm4[10],ymm3[11],ymm4[11],ymm3[12],ymm4[12],ymm3[13],ymm4[13],ymm3[14],ymm4[14],ymm3[15],ymm4[15],ymm3[24],ymm4[24],ymm3[25],ymm4[25],ymm3[26],ymm4[26],ymm3[27],ymm4[27],ymm3[28],ymm4[28],ymm3[29],ymm4[29],ymm3[30],ymm4[30],ymm3[31],ymm4[31]2546; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm11 = ymm11[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]2547; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,2,3]2548; AVX2-FCP-NEXT: vpblendvb %ymm0, %ymm15, %ymm11, %ymm02549; AVX2-FCP-NEXT: vmovdqa %xmm7, %xmm92550; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm11 = xmm7[10,u,13,u,12,u,11,u,14,u,13,u,14,u,15,u]2551; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,0,1]2552; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm15 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]2553; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm14, %ymm11, %ymm112554; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload2555; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm14 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,u,29,u,28,u,27,u,30,u,u,u,u,u,31,u]2556; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,2,2,3]2557; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm0, %ymm14, %ymm02558; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm14 = xmm12[u,10,u,13,u,12,u,11,u,14,u,13,u,14,u,15]2559; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,0,0,1]2560; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm15 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]2561; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm11, %ymm14, %ymm142562; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload2563; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm11 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,u,29,u,28,u,27,u,30,u,u,u,u,u,31]2564; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,2,3]2565; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm0, %ymm11, %ymm152566; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm5[0],xmm13[0],xmm5[1],xmm13[1],xmm5[2],xmm13[2],xmm5[3],xmm13[3],xmm5[4],xmm13[4],xmm5[5],xmm13[5],xmm5[6],xmm13[6],xmm5[7],xmm13[7]2567; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,6,7,4,5,2,3,8,9,10,11,12,13,10,11]2568; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]2569; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]2570; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[2,3,0,1,6,7,4,5,8,9,8,9,8,9,8,9]2571; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]2572; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535]2573; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm0, %ymm5, %ymm02574; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm8[0],ymm6[0],ymm8[1],ymm6[1],ymm8[2],ymm6[2],ymm8[3],ymm6[3],ymm8[4],ymm6[4],ymm8[5],ymm6[5],ymm8[6],ymm6[6],ymm8[7],ymm6[7],ymm8[16],ymm6[16],ymm8[17],ymm6[17],ymm8[18],ymm6[18],ymm8[19],ymm6[19],ymm8[20],ymm6[20],ymm8[21],ymm6[21],ymm8[22],ymm6[22],ymm8[23],ymm6[23]2575; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[4],ymm4[4],ymm3[5],ymm4[5],ymm3[6],ymm4[6],ymm3[7],ymm4[7],ymm3[16],ymm4[16],ymm3[17],ymm4[17],ymm3[18],ymm4[18],ymm3[19],ymm4[19],ymm3[20],ymm4[20],ymm3[21],ymm4[21],ymm3[22],ymm4[22],ymm3[23],ymm4[23]2576; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,17,22,23,20,21,18,19,24,25,26,27,28,29,26,27]2577; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]2578; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,16,17,22,23,20,21,24,25,24,25,24,25,24,25]2579; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]2580; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm2, %ymm1, %ymm12581; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm9[2,u,1,u,0,u,3,u,4,u,4,u,4,u,4,u]2582; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]2583; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]2584; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm0, %ymm2, %ymm02585; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,u,17,u,16,u,19,u,u,u,u,u,20,u,u,u]2586; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]2587; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm12588; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm12[u,2,u,1,u,0,u,3,u,4,u,4,u,4,u,4]2589; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]2590; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm3 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]2591; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm0, %ymm2, %ymm02592; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,u,17,u,16,u,19,u,u,u,u,u,20,u,u]2593; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]2594; AVX2-FCP-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm12595; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax2596; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload2597; AVX2-FCP-NEXT: vmovaps %ymm2, 128(%rax)2598; AVX2-FCP-NEXT: vmovdqa %ymm1, 96(%rax)2599; AVX2-FCP-NEXT: vmovdqa %ymm15, 160(%rax)2600; AVX2-FCP-NEXT: vmovdqa %ymm14, 64(%rax)2601; AVX2-FCP-NEXT: vmovups (%rsp), %ymm1 # 32-byte Reload2602; AVX2-FCP-NEXT: vmovaps %ymm1, 32(%rax)2603; AVX2-FCP-NEXT: vmovdqa %ymm0, (%rax)2604; AVX2-FCP-NEXT: addq $40, %rsp2605; AVX2-FCP-NEXT: vzeroupper2606; AVX2-FCP-NEXT: retq2607;2608; AVX512-LABEL: store_i8_stride6_vf32:2609; AVX512: # %bb.0:2610; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax2611; AVX512-NEXT: vmovdqa (%rdi), %ymm22612; AVX512-NEXT: vmovdqa (%rsi), %ymm32613; AVX512-NEXT: vmovdqa (%rdx), %ymm42614; AVX512-NEXT: vmovdqa (%rcx), %ymm52615; AVX512-NEXT: vmovdqa (%r8), %ymm02616; AVX512-NEXT: vmovdqa (%r9), %ymm12617; AVX512-NEXT: vmovdqa (%rcx), %xmm72618; AVX512-NEXT: vmovdqa (%rdx), %xmm82619; AVX512-NEXT: vpunpckhbw {{.*#+}} xmm6 = xmm8[8],xmm7[8],xmm8[9],xmm7[9],xmm8[10],xmm7[10],xmm8[11],xmm7[11],xmm8[12],xmm7[12],xmm8[13],xmm7[13],xmm8[14],xmm7[14],xmm8[15],xmm7[15]2620; AVX512-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]2621; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,0,1]2622; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm9 = ymm4[0],ymm5[0],ymm4[1],ymm5[1],ymm4[2],ymm5[2],ymm4[3],ymm5[3],ymm4[4],ymm5[4],ymm4[5],ymm5[5],ymm4[6],ymm5[6],ymm4[7],ymm5[7],ymm4[16],ymm5[16],ymm4[17],ymm5[17],ymm4[18],ymm5[18],ymm4[19],ymm5[19],ymm4[20],ymm5[20],ymm4[21],ymm5[21],ymm4[22],ymm5[22],ymm4[23],ymm5[23]2623; AVX512-NEXT: vprold $16, %ymm9, %ymm92624; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,2,3]2625; AVX512-NEXT: vinserti64x4 $1, %ymm9, %zmm6, %zmm62626; AVX512-NEXT: vmovdqa (%rsi), %xmm92627; AVX512-NEXT: vmovdqa (%rdi), %xmm102628; AVX512-NEXT: vpunpckhbw {{.*#+}} xmm11 = xmm10[8],xmm9[8],xmm10[9],xmm9[9],xmm10[10],xmm9[10],xmm10[11],xmm9[11],xmm10[12],xmm9[12],xmm10[13],xmm9[13],xmm10[14],xmm9[14],xmm10[15],xmm9[15]2629; AVX512-NEXT: vpshufb {{.*#+}} xmm11 = xmm11[8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]2630; AVX512-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,0,1]2631; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm12 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[4],ymm3[4],ymm2[5],ymm3[5],ymm2[6],ymm3[6],ymm2[7],ymm3[7],ymm2[16],ymm3[16],ymm2[17],ymm3[17],ymm2[18],ymm3[18],ymm2[19],ymm3[19],ymm2[20],ymm3[20],ymm2[21],ymm3[21],ymm2[22],ymm3[22],ymm2[23],ymm3[23]2632; AVX512-NEXT: vpshuflw {{.*#+}} ymm12 = ymm12[0,3,2,1,4,5,6,7,8,11,10,9,12,13,14,15]2633; AVX512-NEXT: vpshufhw {{.*#+}} ymm12 = ymm12[0,1,2,3,4,5,6,5,8,9,10,11,12,13,14,13]2634; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,2,2,3]2635; AVX512-NEXT: vinserti64x4 $1, %ymm12, %zmm11, %zmm132636; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm14 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]2637; AVX512-NEXT: vpternlogq {{.*#+}} zmm13 = zmm6 ^ (zmm14 & (zmm13 ^ zmm6))2638; AVX512-NEXT: vmovdqa (%r9), %xmm112639; AVX512-NEXT: vmovdqa (%r8), %xmm122640; AVX512-NEXT: vpunpckhbw {{.*#+}} xmm6 = xmm12[8],xmm11[8],xmm12[9],xmm11[9],xmm12[10],xmm11[10],xmm12[11],xmm11[11],xmm12[12],xmm11[12],xmm12[13],xmm11[13],xmm12[14],xmm11[14],xmm12[15],xmm11[15]2641; AVX512-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[4,5,10,11,8,9,6,7,12,13,10,11,12,13,14,15]2642; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,0,1]2643; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm15 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2644; AVX512-NEXT: vpshuflw {{.*#+}} ymm15 = ymm15[2,1,0,3,4,5,6,7,10,9,8,11,12,13,14,15]2645; AVX512-NEXT: vpshufhw {{.*#+}} ymm15 = ymm15[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]2646; AVX512-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,2,2,3]2647; AVX512-NEXT: vinserti64x4 $1, %ymm15, %zmm6, %zmm62648; AVX512-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm13))2649; AVX512-NEXT: vpbroadcastq {{.*#+}} xmm13 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2650; AVX512-NEXT: vpshufb %xmm13, %xmm9, %xmm152651; AVX512-NEXT: vpshufb %xmm13, %xmm10, %xmm132652; AVX512-NEXT: vpunpckhbw {{.*#+}} xmm13 = xmm13[8],xmm15[8],xmm13[9],xmm15[9],xmm13[10],xmm15[10],xmm13[11],xmm15[11],xmm13[12],xmm15[12],xmm13[13],xmm15[13],xmm13[14],xmm15[14],xmm13[15],xmm15[15]2653; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm15 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3],xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]2654; AVX512-NEXT: vprold $16, %xmm15, %xmm152655; AVX512-NEXT: vinserti64x4 $1, %ymm13, %zmm15, %zmm132656; AVX512-NEXT: vpermq {{.*#+}} zmm15 = zmm13[0,0,0,1,4,4,4,5]2657; AVX512-NEXT: vpbroadcastq {{.*#+}} ymm13 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]2658; AVX512-NEXT: vpshufb %xmm13, %xmm7, %xmm72659; AVX512-NEXT: vpshufb %xmm13, %xmm8, %xmm82660; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3],xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]2661; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm8 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3],xmm10[4],xmm9[4],xmm10[5],xmm9[5],xmm10[6],xmm9[6],xmm10[7],xmm9[7]2662; AVX512-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[0,3,2,1,4,5,6,7]2663; AVX512-NEXT: vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,6,5]2664; AVX512-NEXT: vinserti64x4 $1, %ymm7, %zmm8, %zmm72665; AVX512-NEXT: vpermq {{.*#+}} zmm8 = zmm7[0,0,0,1,4,4,4,5]2666; AVX512-NEXT: vpternlogq {{.*#+}} zmm8 = zmm15 ^ (mem & (zmm8 ^ zmm15))2667; AVX512-NEXT: vpbroadcastq {{.*#+}} ymm7 = [6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0]2668; AVX512-NEXT: vpshufb %xmm7, %xmm11, %xmm92669; AVX512-NEXT: vpshufb %xmm7, %xmm12, %xmm102670; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3],xmm10[4],xmm9[4],xmm10[5],xmm9[5],xmm10[6],xmm9[6],xmm10[7],xmm9[7]2671; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm10 = xmm12[0],xmm11[0],xmm12[1],xmm11[1],xmm12[2],xmm11[2],xmm12[3],xmm11[3],xmm12[4],xmm11[4],xmm12[5],xmm11[5],xmm12[6],xmm11[6],xmm12[7],xmm11[7]2672; AVX512-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[2,1,0,3,4,5,6,7]2673; AVX512-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,4,4,4]2674; AVX512-NEXT: vinserti64x4 $1, %ymm9, %zmm10, %zmm92675; AVX512-NEXT: vpermq {{.*#+}} zmm9 = zmm9[0,0,0,1,4,4,4,5]2676; AVX512-NEXT: vpternlogq {{.*#+}} zmm9 = zmm9 ^ (zmm14 & (zmm9 ^ zmm8))2677; AVX512-NEXT: vpbroadcastq {{.*#+}} ymm8 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2678; AVX512-NEXT: vpshufb %ymm8, %ymm3, %ymm102679; AVX512-NEXT: vpshufb %ymm8, %ymm2, %ymm82680; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm8 = ymm8[0],ymm10[0],ymm8[1],ymm10[1],ymm8[2],ymm10[2],ymm8[3],ymm10[3],ymm8[4],ymm10[4],ymm8[5],ymm10[5],ymm8[6],ymm10[6],ymm8[7],ymm10[7],ymm8[16],ymm10[16],ymm8[17],ymm10[17],ymm8[18],ymm10[18],ymm8[19],ymm10[19],ymm8[20],ymm10[20],ymm8[21],ymm10[21],ymm8[22],ymm10[22],ymm8[23],ymm10[23]2681; AVX512-NEXT: vpunpckhbw {{.*#+}} ymm10 = ymm4[8],ymm5[8],ymm4[9],ymm5[9],ymm4[10],ymm5[10],ymm4[11],ymm5[11],ymm4[12],ymm5[12],ymm4[13],ymm5[13],ymm4[14],ymm5[14],ymm4[15],ymm5[15],ymm4[24],ymm5[24],ymm4[25],ymm5[25],ymm4[26],ymm5[26],ymm4[27],ymm5[27],ymm4[28],ymm5[28],ymm4[29],ymm5[29],ymm4[30],ymm5[30],ymm4[31],ymm5[31]2682; AVX512-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]2683; AVX512-NEXT: vinserti64x4 $1, %ymm10, %zmm8, %zmm82684; AVX512-NEXT: vpermq {{.*#+}} zmm8 = zmm8[2,2,2,3,6,6,6,7]2685; AVX512-NEXT: vpshufb %ymm13, %ymm5, %ymm52686; AVX512-NEXT: vpshufb %ymm13, %ymm4, %ymm42687; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm4[0],ymm5[0],ymm4[1],ymm5[1],ymm4[2],ymm5[2],ymm4[3],ymm5[3],ymm4[4],ymm5[4],ymm4[5],ymm5[5],ymm4[6],ymm5[6],ymm4[7],ymm5[7],ymm4[16],ymm5[16],ymm4[17],ymm5[17],ymm4[18],ymm5[18],ymm4[19],ymm5[19],ymm4[20],ymm5[20],ymm4[21],ymm5[21],ymm4[22],ymm5[22],ymm4[23],ymm5[23]2688; AVX512-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm2[8],ymm3[8],ymm2[9],ymm3[9],ymm2[10],ymm3[10],ymm2[11],ymm3[11],ymm2[12],ymm3[12],ymm2[13],ymm3[13],ymm2[14],ymm3[14],ymm2[15],ymm3[15],ymm2[24],ymm3[24],ymm2[25],ymm3[25],ymm2[26],ymm3[26],ymm2[27],ymm3[27],ymm2[28],ymm3[28],ymm2[29],ymm3[29],ymm2[30],ymm3[30],ymm2[31],ymm3[31]2689; AVX512-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]2690; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm4, %zmm22691; AVX512-NEXT: vpermq {{.*#+}} zmm2 = zmm2[2,2,2,3,6,6,6,7]2692; AVX512-NEXT: vbroadcasti64x4 {{.*#+}} zmm3 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]2693; AVX512-NEXT: # zmm3 = mem[0,1,2,3,0,1,2,3]2694; AVX512-NEXT: vpternlogq {{.*#+}} zmm3 = zmm8 ^ (zmm3 & (zmm2 ^ zmm8))2695; AVX512-NEXT: vpshufb %ymm7, %ymm1, %ymm22696; AVX512-NEXT: vpshufb %ymm7, %ymm0, %ymm42697; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm4[0],ymm2[0],ymm4[1],ymm2[1],ymm4[2],ymm2[2],ymm4[3],ymm2[3],ymm4[4],ymm2[4],ymm4[5],ymm2[5],ymm4[6],ymm2[6],ymm4[7],ymm2[7],ymm4[16],ymm2[16],ymm4[17],ymm2[17],ymm4[18],ymm2[18],ymm4[19],ymm2[19],ymm4[20],ymm2[20],ymm4[21],ymm2[21],ymm4[22],ymm2[22],ymm4[23],ymm2[23]2698; AVX512-NEXT: vpunpckhbw {{.*#+}} ymm0 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]2699; AVX512-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,20,21,26,27,24,25,22,23,28,29,26,27,28,29,30,31]2700; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm02701; AVX512-NEXT: vpermq {{.*#+}} zmm0 = zmm0[2,2,2,3,6,6,6,7]2702; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm3))2703; AVX512-NEXT: vmovdqa64 %zmm0, 128(%rax)2704; AVX512-NEXT: vmovdqa64 %zmm9, (%rax)2705; AVX512-NEXT: vmovdqa64 %zmm6, 64(%rax)2706; AVX512-NEXT: vzeroupper2707; AVX512-NEXT: retq2708;2709; AVX512-FCP-LABEL: store_i8_stride6_vf32:2710; AVX512-FCP: # %bb.0:2711; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax2712; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm22713; AVX512-FCP-NEXT: vmovdqa (%rsi), %ymm32714; AVX512-FCP-NEXT: vmovdqa (%rdx), %ymm42715; AVX512-FCP-NEXT: vmovdqa (%rcx), %ymm52716; AVX512-FCP-NEXT: vmovdqa (%r8), %ymm02717; AVX512-FCP-NEXT: vmovdqa (%r9), %ymm12718; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} ymm6 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2719; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm3, %ymm72720; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm62721; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm6[0],ymm7[0],ymm6[1],ymm7[1],ymm6[2],ymm7[2],ymm6[3],ymm7[3],ymm6[4],ymm7[4],ymm6[5],ymm7[5],ymm6[6],ymm7[6],ymm6[7],ymm7[7],ymm6[16],ymm7[16],ymm6[17],ymm7[17],ymm6[18],ymm7[18],ymm6[19],ymm7[19],ymm6[20],ymm7[20],ymm6[21],ymm7[21],ymm6[22],ymm7[22],ymm6[23],ymm7[23]2722; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} ymm7 = ymm4[8],ymm5[8],ymm4[9],ymm5[9],ymm4[10],ymm5[10],ymm4[11],ymm5[11],ymm4[12],ymm5[12],ymm4[13],ymm5[13],ymm4[14],ymm5[14],ymm4[15],ymm5[15],ymm4[24],ymm5[24],ymm4[25],ymm5[25],ymm4[26],ymm5[26],ymm4[27],ymm5[27],ymm4[28],ymm5[28],ymm4[29],ymm5[29],ymm4[30],ymm5[30],ymm4[31],ymm5[31]2723; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]2724; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm7, %zmm6, %zmm62725; AVX512-FCP-NEXT: vpermq {{.*#+}} zmm6 = zmm6[2,2,2,3,6,6,6,7]2726; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} ymm7 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]2727; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm5, %ymm82728; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm4, %ymm92729; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm8 = ymm9[0],ymm8[0],ymm9[1],ymm8[1],ymm9[2],ymm8[2],ymm9[3],ymm8[3],ymm9[4],ymm8[4],ymm9[5],ymm8[5],ymm9[6],ymm8[6],ymm9[7],ymm8[7],ymm9[16],ymm8[16],ymm9[17],ymm8[17],ymm9[18],ymm8[18],ymm9[19],ymm8[19],ymm9[20],ymm8[20],ymm9[21],ymm8[21],ymm9[22],ymm8[22],ymm9[23],ymm8[23]2730; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} ymm9 = ymm2[8],ymm3[8],ymm2[9],ymm3[9],ymm2[10],ymm3[10],ymm2[11],ymm3[11],ymm2[12],ymm3[12],ymm2[13],ymm3[13],ymm2[14],ymm3[14],ymm2[15],ymm3[15],ymm2[24],ymm3[24],ymm2[25],ymm3[25],ymm2[26],ymm3[26],ymm2[27],ymm3[27],ymm2[28],ymm3[28],ymm2[29],ymm3[29],ymm2[30],ymm3[30],ymm2[31],ymm3[31]2731; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]2732; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm9, %zmm8, %zmm82733; AVX512-FCP-NEXT: vpermq {{.*#+}} zmm8 = zmm8[2,2,2,3,6,6,6,7]2734; AVX512-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]2735; AVX512-FCP-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]2736; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm9 = zmm6 ^ (zmm9 & (zmm8 ^ zmm6))2737; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} ymm10 = [6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0]2738; AVX512-FCP-NEXT: vpshufb %ymm10, %ymm1, %ymm62739; AVX512-FCP-NEXT: vpshufb %ymm10, %ymm0, %ymm82740; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm8[0],ymm6[0],ymm8[1],ymm6[1],ymm8[2],ymm6[2],ymm8[3],ymm6[3],ymm8[4],ymm6[4],ymm8[5],ymm6[5],ymm8[6],ymm6[6],ymm8[7],ymm6[7],ymm8[16],ymm6[16],ymm8[17],ymm6[17],ymm8[18],ymm6[18],ymm8[19],ymm6[19],ymm8[20],ymm6[20],ymm8[21],ymm6[21],ymm8[22],ymm6[22],ymm8[23],ymm6[23]2741; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} ymm8 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]2742; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm8[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,20,21,26,27,24,25,22,23,28,29,26,27,28,29,30,31]2743; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm6, %zmm62744; AVX512-FCP-NEXT: vpermq {{.*#+}} zmm6 = zmm6[2,2,2,3,6,6,6,7]2745; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm9))2746; AVX512-FCP-NEXT: vmovdqa (%rcx), %xmm92747; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm9, %xmm82748; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm112749; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm11, %xmm72750; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm12 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3],xmm7[4],xmm8[4],xmm7[5],xmm8[5],xmm7[6],xmm8[6],xmm7[7],xmm8[7]2751; AVX512-FCP-NEXT: vmovdqa (%rsi), %xmm72752; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm82753; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm13 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3],xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]2754; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[0,1,6,7,4,5,2,3,8,9,10,11,12,13,10,11]2755; AVX512-FCP-NEXT: vinserti32x4 $2, %xmm12, %zmm13, %zmm122756; AVX512-FCP-NEXT: vpermq {{.*#+}} zmm12 = zmm12[0,0,0,1,4,4,4,5]2757; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} xmm13 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2758; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm7, %xmm142759; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm8, %xmm132760; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} xmm13 = xmm13[8],xmm14[8],xmm13[9],xmm14[9],xmm13[10],xmm14[10],xmm13[11],xmm14[11],xmm13[12],xmm14[12],xmm13[13],xmm14[13],xmm13[14],xmm14[14],xmm13[15],xmm14[15]2761; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm14 = xmm11[0],xmm9[0],xmm11[1],xmm9[1],xmm11[2],xmm9[2],xmm11[3],xmm9[3],xmm11[4],xmm9[4],xmm11[5],xmm9[5],xmm11[6],xmm9[6],xmm11[7],xmm9[7]2762; AVX512-FCP-NEXT: vprold $16, %xmm14, %xmm142763; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm13, %zmm14, %zmm132764; AVX512-FCP-NEXT: vpermq {{.*#+}} zmm14 = zmm13[0,0,0,1,4,4,4,5]2765; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (mem & (zmm14 ^ zmm12))2766; AVX512-FCP-NEXT: vmovdqa (%r9), %xmm122767; AVX512-FCP-NEXT: vpshufb %xmm10, %xmm12, %xmm152768; AVX512-FCP-NEXT: vmovdqa (%r8), %xmm132769; AVX512-FCP-NEXT: vpshufb %xmm10, %xmm13, %xmm102770; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm10 = xmm10[0],xmm15[0],xmm10[1],xmm15[1],xmm10[2],xmm15[2],xmm10[3],xmm15[3],xmm10[4],xmm15[4],xmm10[5],xmm15[5],xmm10[6],xmm15[6],xmm10[7],xmm15[7]2771; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm15 = xmm13[0],xmm12[0],xmm13[1],xmm12[1],xmm13[2],xmm12[2],xmm13[3],xmm12[3],xmm13[4],xmm12[4],xmm13[5],xmm12[5],xmm13[6],xmm12[6],xmm13[7],xmm12[7]2772; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm15 = xmm15[4,5,2,3,0,1,6,7,8,9,8,9,8,9,8,9]2773; AVX512-FCP-NEXT: vinserti32x4 $2, %xmm10, %zmm15, %zmm102774; AVX512-FCP-NEXT: vpermq {{.*#+}} zmm10 = zmm10[0,0,0,1,4,4,4,5]2775; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm15 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]2776; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm15 & (zmm10 ^ zmm14))2777; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm4[0],ymm5[0],ymm4[1],ymm5[1],ymm4[2],ymm5[2],ymm4[3],ymm5[3],ymm4[4],ymm5[4],ymm4[5],ymm5[5],ymm4[6],ymm5[6],ymm4[7],ymm5[7],ymm4[16],ymm5[16],ymm4[17],ymm5[17],ymm4[18],ymm5[18],ymm4[19],ymm5[19],ymm4[20],ymm5[20],ymm4[21],ymm5[21],ymm4[22],ymm5[22],ymm4[23],ymm5[23]2778; AVX512-FCP-NEXT: vprold $16, %ymm4, %ymm42779; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm11[8],xmm9[8],xmm11[9],xmm9[9],xmm11[10],xmm9[10],xmm11[11],xmm9[11],xmm11[12],xmm9[12],xmm11[13],xmm9[13],xmm11[14],xmm9[14],xmm11[15],xmm9[15]2780; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]2781; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm9 = [0,0,0,1,10,10,10,11]2782; AVX512-FCP-NEXT: vpermt2q %zmm4, %zmm9, %zmm52783; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[4],ymm3[4],ymm2[5],ymm3[5],ymm2[6],ymm3[6],ymm2[7],ymm3[7],ymm2[16],ymm3[16],ymm2[17],ymm3[17],ymm2[18],ymm3[18],ymm2[19],ymm3[19],ymm2[20],ymm3[20],ymm2[21],ymm3[21],ymm2[22],ymm3[22],ymm2[23],ymm3[23]2784; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,17,22,23,20,21,18,19,24,25,26,27,28,29,26,27]2785; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm8[8],xmm7[8],xmm8[9],xmm7[9],xmm8[10],xmm7[10],xmm8[11],xmm7[11],xmm8[12],xmm7[12],xmm8[13],xmm7[13],xmm8[14],xmm7[14],xmm8[15],xmm7[15]2786; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]2787; AVX512-FCP-NEXT: vpermt2q %zmm2, %zmm9, %zmm32788; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm5 ^ (zmm15 & (zmm3 ^ zmm5))2789; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2790; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,20,21,18,19,16,17,22,23,24,25,24,25,24,25,24,25]2791; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm13[8],xmm12[8],xmm13[9],xmm12[9],xmm13[10],xmm12[10],xmm13[11],xmm12[11],xmm13[12],xmm12[12],xmm13[13],xmm12[13],xmm13[14],xmm12[14],xmm13[15],xmm12[15]2792; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[4,5,10,11,8,9,6,7,12,13,10,11,12,13,14,15]2793; AVX512-FCP-NEXT: vpermt2q %zmm0, %zmm9, %zmm12794; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm3))2795; AVX512-FCP-NEXT: vmovdqa64 %zmm1, 64(%rax)2796; AVX512-FCP-NEXT: vmovdqa64 %zmm10, (%rax)2797; AVX512-FCP-NEXT: vmovdqa64 %zmm6, 128(%rax)2798; AVX512-FCP-NEXT: vzeroupper2799; AVX512-FCP-NEXT: retq2800;2801; AVX512DQ-LABEL: store_i8_stride6_vf32:2802; AVX512DQ: # %bb.0:2803; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax2804; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm22805; AVX512DQ-NEXT: vmovdqa (%rsi), %ymm32806; AVX512DQ-NEXT: vmovdqa (%rdx), %ymm42807; AVX512DQ-NEXT: vmovdqa (%rcx), %ymm52808; AVX512DQ-NEXT: vmovdqa (%r8), %ymm02809; AVX512DQ-NEXT: vmovdqa (%r9), %ymm12810; AVX512DQ-NEXT: vmovdqa (%rcx), %xmm72811; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm82812; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} xmm6 = xmm8[8],xmm7[8],xmm8[9],xmm7[9],xmm8[10],xmm7[10],xmm8[11],xmm7[11],xmm8[12],xmm7[12],xmm8[13],xmm7[13],xmm8[14],xmm7[14],xmm8[15],xmm7[15]2813; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]2814; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,0,1]2815; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm9 = ymm4[0],ymm5[0],ymm4[1],ymm5[1],ymm4[2],ymm5[2],ymm4[3],ymm5[3],ymm4[4],ymm5[4],ymm4[5],ymm5[5],ymm4[6],ymm5[6],ymm4[7],ymm5[7],ymm4[16],ymm5[16],ymm4[17],ymm5[17],ymm4[18],ymm5[18],ymm4[19],ymm5[19],ymm4[20],ymm5[20],ymm4[21],ymm5[21],ymm4[22],ymm5[22],ymm4[23],ymm5[23]2816; AVX512DQ-NEXT: vprold $16, %ymm9, %ymm92817; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,2,3]2818; AVX512DQ-NEXT: vinserti64x4 $1, %ymm9, %zmm6, %zmm62819; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm92820; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm102821; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} xmm11 = xmm10[8],xmm9[8],xmm10[9],xmm9[9],xmm10[10],xmm9[10],xmm10[11],xmm9[11],xmm10[12],xmm9[12],xmm10[13],xmm9[13],xmm10[14],xmm9[14],xmm10[15],xmm9[15]2822; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm11 = xmm11[8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]2823; AVX512DQ-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,0,1]2824; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm12 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[4],ymm3[4],ymm2[5],ymm3[5],ymm2[6],ymm3[6],ymm2[7],ymm3[7],ymm2[16],ymm3[16],ymm2[17],ymm3[17],ymm2[18],ymm3[18],ymm2[19],ymm3[19],ymm2[20],ymm3[20],ymm2[21],ymm3[21],ymm2[22],ymm3[22],ymm2[23],ymm3[23]2825; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm12 = ymm12[0,3,2,1,4,5,6,7,8,11,10,9,12,13,14,15]2826; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm12 = ymm12[0,1,2,3,4,5,6,5,8,9,10,11,12,13,14,13]2827; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm12[2,2,2,3]2828; AVX512DQ-NEXT: vinserti64x4 $1, %ymm12, %zmm11, %zmm132829; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm14 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]2830; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm13 = zmm6 ^ (zmm14 & (zmm13 ^ zmm6))2831; AVX512DQ-NEXT: vmovdqa (%r9), %xmm112832; AVX512DQ-NEXT: vmovdqa (%r8), %xmm122833; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} xmm6 = xmm12[8],xmm11[8],xmm12[9],xmm11[9],xmm12[10],xmm11[10],xmm12[11],xmm11[11],xmm12[12],xmm11[12],xmm12[13],xmm11[13],xmm12[14],xmm11[14],xmm12[15],xmm11[15]2834; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[4,5,10,11,8,9,6,7,12,13,10,11,12,13,14,15]2835; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,0,1]2836; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm15 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2837; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm15 = ymm15[2,1,0,3,4,5,6,7,10,9,8,11,12,13,14,15]2838; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm15 = ymm15[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]2839; AVX512DQ-NEXT: vpermq {{.*#+}} ymm15 = ymm15[2,2,2,3]2840; AVX512DQ-NEXT: vinserti64x4 $1, %ymm15, %zmm6, %zmm62841; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm13))2842; AVX512DQ-NEXT: vpbroadcastq {{.*#+}} xmm13 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2843; AVX512DQ-NEXT: vpshufb %xmm13, %xmm9, %xmm152844; AVX512DQ-NEXT: vpshufb %xmm13, %xmm10, %xmm132845; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} xmm13 = xmm13[8],xmm15[8],xmm13[9],xmm15[9],xmm13[10],xmm15[10],xmm13[11],xmm15[11],xmm13[12],xmm15[12],xmm13[13],xmm15[13],xmm13[14],xmm15[14],xmm13[15],xmm15[15]2846; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm15 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3],xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]2847; AVX512DQ-NEXT: vprold $16, %xmm15, %xmm152848; AVX512DQ-NEXT: vinserti64x4 $1, %ymm13, %zmm15, %zmm132849; AVX512DQ-NEXT: vpermq {{.*#+}} zmm15 = zmm13[0,0,0,1,4,4,4,5]2850; AVX512DQ-NEXT: vpbroadcastq {{.*#+}} ymm13 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]2851; AVX512DQ-NEXT: vpshufb %xmm13, %xmm7, %xmm72852; AVX512DQ-NEXT: vpshufb %xmm13, %xmm8, %xmm82853; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3],xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]2854; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm8 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3],xmm10[4],xmm9[4],xmm10[5],xmm9[5],xmm10[6],xmm9[6],xmm10[7],xmm9[7]2855; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[0,3,2,1,4,5,6,7]2856; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,6,5]2857; AVX512DQ-NEXT: vinserti64x4 $1, %ymm7, %zmm8, %zmm72858; AVX512DQ-NEXT: vpermq {{.*#+}} zmm8 = zmm7[0,0,0,1,4,4,4,5]2859; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm8 = zmm15 ^ (mem & (zmm8 ^ zmm15))2860; AVX512DQ-NEXT: vpbroadcastq {{.*#+}} ymm7 = [6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0]2861; AVX512DQ-NEXT: vpshufb %xmm7, %xmm11, %xmm92862; AVX512DQ-NEXT: vpshufb %xmm7, %xmm12, %xmm102863; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3],xmm10[4],xmm9[4],xmm10[5],xmm9[5],xmm10[6],xmm9[6],xmm10[7],xmm9[7]2864; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm10 = xmm12[0],xmm11[0],xmm12[1],xmm11[1],xmm12[2],xmm11[2],xmm12[3],xmm11[3],xmm12[4],xmm11[4],xmm12[5],xmm11[5],xmm12[6],xmm11[6],xmm12[7],xmm11[7]2865; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[2,1,0,3,4,5,6,7]2866; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,4,4,4]2867; AVX512DQ-NEXT: vinserti64x4 $1, %ymm9, %zmm10, %zmm92868; AVX512DQ-NEXT: vpermq {{.*#+}} zmm9 = zmm9[0,0,0,1,4,4,4,5]2869; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm9 = zmm9 ^ (zmm14 & (zmm9 ^ zmm8))2870; AVX512DQ-NEXT: vpbroadcastq {{.*#+}} ymm8 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2871; AVX512DQ-NEXT: vpshufb %ymm8, %ymm3, %ymm102872; AVX512DQ-NEXT: vpshufb %ymm8, %ymm2, %ymm82873; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm8 = ymm8[0],ymm10[0],ymm8[1],ymm10[1],ymm8[2],ymm10[2],ymm8[3],ymm10[3],ymm8[4],ymm10[4],ymm8[5],ymm10[5],ymm8[6],ymm10[6],ymm8[7],ymm10[7],ymm8[16],ymm10[16],ymm8[17],ymm10[17],ymm8[18],ymm10[18],ymm8[19],ymm10[19],ymm8[20],ymm10[20],ymm8[21],ymm10[21],ymm8[22],ymm10[22],ymm8[23],ymm10[23]2874; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm10 = ymm4[8],ymm5[8],ymm4[9],ymm5[9],ymm4[10],ymm5[10],ymm4[11],ymm5[11],ymm4[12],ymm5[12],ymm4[13],ymm5[13],ymm4[14],ymm5[14],ymm4[15],ymm5[15],ymm4[24],ymm5[24],ymm4[25],ymm5[25],ymm4[26],ymm5[26],ymm4[27],ymm5[27],ymm4[28],ymm5[28],ymm4[29],ymm5[29],ymm4[30],ymm5[30],ymm4[31],ymm5[31]2875; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]2876; AVX512DQ-NEXT: vinserti64x4 $1, %ymm10, %zmm8, %zmm82877; AVX512DQ-NEXT: vpermq {{.*#+}} zmm8 = zmm8[2,2,2,3,6,6,6,7]2878; AVX512DQ-NEXT: vpshufb %ymm13, %ymm5, %ymm52879; AVX512DQ-NEXT: vpshufb %ymm13, %ymm4, %ymm42880; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm4[0],ymm5[0],ymm4[1],ymm5[1],ymm4[2],ymm5[2],ymm4[3],ymm5[3],ymm4[4],ymm5[4],ymm4[5],ymm5[5],ymm4[6],ymm5[6],ymm4[7],ymm5[7],ymm4[16],ymm5[16],ymm4[17],ymm5[17],ymm4[18],ymm5[18],ymm4[19],ymm5[19],ymm4[20],ymm5[20],ymm4[21],ymm5[21],ymm4[22],ymm5[22],ymm4[23],ymm5[23]2881; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm2[8],ymm3[8],ymm2[9],ymm3[9],ymm2[10],ymm3[10],ymm2[11],ymm3[11],ymm2[12],ymm3[12],ymm2[13],ymm3[13],ymm2[14],ymm3[14],ymm2[15],ymm3[15],ymm2[24],ymm3[24],ymm2[25],ymm3[25],ymm2[26],ymm3[26],ymm2[27],ymm3[27],ymm2[28],ymm3[28],ymm2[29],ymm3[29],ymm2[30],ymm3[30],ymm2[31],ymm3[31]2882; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]2883; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm4, %zmm22884; AVX512DQ-NEXT: vpermq {{.*#+}} zmm2 = zmm2[2,2,2,3,6,6,6,7]2885; AVX512DQ-NEXT: vbroadcasti64x4 {{.*#+}} zmm3 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]2886; AVX512DQ-NEXT: # zmm3 = mem[0,1,2,3,0,1,2,3]2887; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm3 = zmm8 ^ (zmm3 & (zmm2 ^ zmm8))2888; AVX512DQ-NEXT: vpshufb %ymm7, %ymm1, %ymm22889; AVX512DQ-NEXT: vpshufb %ymm7, %ymm0, %ymm42890; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm4[0],ymm2[0],ymm4[1],ymm2[1],ymm4[2],ymm2[2],ymm4[3],ymm2[3],ymm4[4],ymm2[4],ymm4[5],ymm2[5],ymm4[6],ymm2[6],ymm4[7],ymm2[7],ymm4[16],ymm2[16],ymm4[17],ymm2[17],ymm4[18],ymm2[18],ymm4[19],ymm2[19],ymm4[20],ymm2[20],ymm4[21],ymm2[21],ymm4[22],ymm2[22],ymm4[23],ymm2[23]2891; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm0 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]2892; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,20,21,26,27,24,25,22,23,28,29,26,27,28,29,30,31]2893; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm02894; AVX512DQ-NEXT: vpermq {{.*#+}} zmm0 = zmm0[2,2,2,3,6,6,6,7]2895; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm3))2896; AVX512DQ-NEXT: vmovdqa64 %zmm0, 128(%rax)2897; AVX512DQ-NEXT: vmovdqa64 %zmm9, (%rax)2898; AVX512DQ-NEXT: vmovdqa64 %zmm6, 64(%rax)2899; AVX512DQ-NEXT: vzeroupper2900; AVX512DQ-NEXT: retq2901;2902; AVX512DQ-FCP-LABEL: store_i8_stride6_vf32:2903; AVX512DQ-FCP: # %bb.0:2904; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax2905; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm22906; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %ymm32907; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %ymm42908; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %ymm52909; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %ymm02910; AVX512DQ-FCP-NEXT: vmovdqa (%r9), %ymm12911; AVX512DQ-FCP-NEXT: vpbroadcastq {{.*#+}} ymm6 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2912; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm3, %ymm72913; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm62914; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm6[0],ymm7[0],ymm6[1],ymm7[1],ymm6[2],ymm7[2],ymm6[3],ymm7[3],ymm6[4],ymm7[4],ymm6[5],ymm7[5],ymm6[6],ymm7[6],ymm6[7],ymm7[7],ymm6[16],ymm7[16],ymm6[17],ymm7[17],ymm6[18],ymm7[18],ymm6[19],ymm7[19],ymm6[20],ymm7[20],ymm6[21],ymm7[21],ymm6[22],ymm7[22],ymm6[23],ymm7[23]2915; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} ymm7 = ymm4[8],ymm5[8],ymm4[9],ymm5[9],ymm4[10],ymm5[10],ymm4[11],ymm5[11],ymm4[12],ymm5[12],ymm4[13],ymm5[13],ymm4[14],ymm5[14],ymm4[15],ymm5[15],ymm4[24],ymm5[24],ymm4[25],ymm5[25],ymm4[26],ymm5[26],ymm4[27],ymm5[27],ymm4[28],ymm5[28],ymm4[29],ymm5[29],ymm4[30],ymm5[30],ymm4[31],ymm5[31]2916; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]2917; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm7, %zmm6, %zmm62918; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} zmm6 = zmm6[2,2,2,3,6,6,6,7]2919; AVX512DQ-FCP-NEXT: vpbroadcastq {{.*#+}} ymm7 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]2920; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm5, %ymm82921; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm4, %ymm92922; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm8 = ymm9[0],ymm8[0],ymm9[1],ymm8[1],ymm9[2],ymm8[2],ymm9[3],ymm8[3],ymm9[4],ymm8[4],ymm9[5],ymm8[5],ymm9[6],ymm8[6],ymm9[7],ymm8[7],ymm9[16],ymm8[16],ymm9[17],ymm8[17],ymm9[18],ymm8[18],ymm9[19],ymm8[19],ymm9[20],ymm8[20],ymm9[21],ymm8[21],ymm9[22],ymm8[22],ymm9[23],ymm8[23]2923; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} ymm9 = ymm2[8],ymm3[8],ymm2[9],ymm3[9],ymm2[10],ymm3[10],ymm2[11],ymm3[11],ymm2[12],ymm3[12],ymm2[13],ymm3[13],ymm2[14],ymm3[14],ymm2[15],ymm3[15],ymm2[24],ymm3[24],ymm2[25],ymm3[25],ymm2[26],ymm3[26],ymm2[27],ymm3[27],ymm2[28],ymm3[28],ymm2[29],ymm3[29],ymm2[30],ymm3[30],ymm2[31],ymm3[31]2924; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]2925; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm9, %zmm8, %zmm82926; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} zmm8 = zmm8[2,2,2,3,6,6,6,7]2927; AVX512DQ-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm9 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]2928; AVX512DQ-FCP-NEXT: # zmm9 = mem[0,1,2,3,0,1,2,3]2929; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm9 = zmm6 ^ (zmm9 & (zmm8 ^ zmm6))2930; AVX512DQ-FCP-NEXT: vpbroadcastq {{.*#+}} ymm10 = [6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0]2931; AVX512DQ-FCP-NEXT: vpshufb %ymm10, %ymm1, %ymm62932; AVX512DQ-FCP-NEXT: vpshufb %ymm10, %ymm0, %ymm82933; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm8[0],ymm6[0],ymm8[1],ymm6[1],ymm8[2],ymm6[2],ymm8[3],ymm6[3],ymm8[4],ymm6[4],ymm8[5],ymm6[5],ymm8[6],ymm6[6],ymm8[7],ymm6[7],ymm8[16],ymm6[16],ymm8[17],ymm6[17],ymm8[18],ymm6[18],ymm8[19],ymm6[19],ymm8[20],ymm6[20],ymm8[21],ymm6[21],ymm8[22],ymm6[22],ymm8[23],ymm6[23]2934; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} ymm8 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]2935; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm8[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,20,21,26,27,24,25,22,23,28,29,26,27,28,29,30,31]2936; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm6, %zmm62937; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} zmm6 = zmm6[2,2,2,3,6,6,6,7]2938; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm9))2939; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %xmm92940; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm9, %xmm82941; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm112942; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm11, %xmm72943; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm12 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3],xmm7[4],xmm8[4],xmm7[5],xmm8[5],xmm7[6],xmm8[6],xmm7[7],xmm8[7]2944; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %xmm72945; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm82946; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm13 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3],xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]2947; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[0,1,6,7,4,5,2,3,8,9,10,11,12,13,10,11]2948; AVX512DQ-FCP-NEXT: vinserti32x4 $2, %xmm12, %zmm13, %zmm122949; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} zmm12 = zmm12[0,0,0,1,4,4,4,5]2950; AVX512DQ-FCP-NEXT: vpbroadcastq {{.*#+}} xmm13 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]2951; AVX512DQ-FCP-NEXT: vpshufb %xmm13, %xmm7, %xmm142952; AVX512DQ-FCP-NEXT: vpshufb %xmm13, %xmm8, %xmm132953; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} xmm13 = xmm13[8],xmm14[8],xmm13[9],xmm14[9],xmm13[10],xmm14[10],xmm13[11],xmm14[11],xmm13[12],xmm14[12],xmm13[13],xmm14[13],xmm13[14],xmm14[14],xmm13[15],xmm14[15]2954; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm14 = xmm11[0],xmm9[0],xmm11[1],xmm9[1],xmm11[2],xmm9[2],xmm11[3],xmm9[3],xmm11[4],xmm9[4],xmm11[5],xmm9[5],xmm11[6],xmm9[6],xmm11[7],xmm9[7]2955; AVX512DQ-FCP-NEXT: vprold $16, %xmm14, %xmm142956; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm13, %zmm14, %zmm132957; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} zmm14 = zmm13[0,0,0,1,4,4,4,5]2958; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (mem & (zmm14 ^ zmm12))2959; AVX512DQ-FCP-NEXT: vmovdqa (%r9), %xmm122960; AVX512DQ-FCP-NEXT: vpshufb %xmm10, %xmm12, %xmm152961; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %xmm132962; AVX512DQ-FCP-NEXT: vpshufb %xmm10, %xmm13, %xmm102963; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm10 = xmm10[0],xmm15[0],xmm10[1],xmm15[1],xmm10[2],xmm15[2],xmm10[3],xmm15[3],xmm10[4],xmm15[4],xmm10[5],xmm15[5],xmm10[6],xmm15[6],xmm10[7],xmm15[7]2964; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm15 = xmm13[0],xmm12[0],xmm13[1],xmm12[1],xmm13[2],xmm12[2],xmm13[3],xmm12[3],xmm13[4],xmm12[4],xmm13[5],xmm12[5],xmm13[6],xmm12[6],xmm13[7],xmm12[7]2965; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm15 = xmm15[4,5,2,3,0,1,6,7,8,9,8,9,8,9,8,9]2966; AVX512DQ-FCP-NEXT: vinserti32x4 $2, %xmm10, %zmm15, %zmm102967; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} zmm10 = zmm10[0,0,0,1,4,4,4,5]2968; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm15 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]2969; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm15 & (zmm10 ^ zmm14))2970; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm4[0],ymm5[0],ymm4[1],ymm5[1],ymm4[2],ymm5[2],ymm4[3],ymm5[3],ymm4[4],ymm5[4],ymm4[5],ymm5[5],ymm4[6],ymm5[6],ymm4[7],ymm5[7],ymm4[16],ymm5[16],ymm4[17],ymm5[17],ymm4[18],ymm5[18],ymm4[19],ymm5[19],ymm4[20],ymm5[20],ymm4[21],ymm5[21],ymm4[22],ymm5[22],ymm4[23],ymm5[23]2971; AVX512DQ-FCP-NEXT: vprold $16, %ymm4, %ymm42972; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm11[8],xmm9[8],xmm11[9],xmm9[9],xmm11[10],xmm9[10],xmm11[11],xmm9[11],xmm11[12],xmm9[12],xmm11[13],xmm9[13],xmm11[14],xmm9[14],xmm11[15],xmm9[15]2973; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]2974; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm9 = [0,0,0,1,10,10,10,11]2975; AVX512DQ-FCP-NEXT: vpermt2q %zmm4, %zmm9, %zmm52976; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[4],ymm3[4],ymm2[5],ymm3[5],ymm2[6],ymm3[6],ymm2[7],ymm3[7],ymm2[16],ymm3[16],ymm2[17],ymm3[17],ymm2[18],ymm3[18],ymm2[19],ymm3[19],ymm2[20],ymm3[20],ymm2[21],ymm3[21],ymm2[22],ymm3[22],ymm2[23],ymm3[23]2977; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,17,22,23,20,21,18,19,24,25,26,27,28,29,26,27]2978; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm8[8],xmm7[8],xmm8[9],xmm7[9],xmm8[10],xmm7[10],xmm8[11],xmm7[11],xmm8[12],xmm7[12],xmm8[13],xmm7[13],xmm8[14],xmm7[14],xmm8[15],xmm7[15]2979; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]2980; AVX512DQ-FCP-NEXT: vpermt2q %zmm2, %zmm9, %zmm32981; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm5 ^ (zmm15 & (zmm3 ^ zmm5))2982; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]2983; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,20,21,18,19,16,17,22,23,24,25,24,25,24,25,24,25]2984; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm13[8],xmm12[8],xmm13[9],xmm12[9],xmm13[10],xmm12[10],xmm13[11],xmm12[11],xmm13[12],xmm12[12],xmm13[13],xmm12[13],xmm13[14],xmm12[14],xmm13[15],xmm12[15]2985; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[4,5,10,11,8,9,6,7,12,13,10,11,12,13,14,15]2986; AVX512DQ-FCP-NEXT: vpermt2q %zmm0, %zmm9, %zmm12987; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm3))2988; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, 64(%rax)2989; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm10, (%rax)2990; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm6, 128(%rax)2991; AVX512DQ-FCP-NEXT: vzeroupper2992; AVX512DQ-FCP-NEXT: retq2993;2994; AVX512BW-LABEL: store_i8_stride6_vf32:2995; AVX512BW: # %bb.0:2996; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %rax2997; AVX512BW-NEXT: vmovdqa (%rdi), %ymm22998; AVX512BW-NEXT: vmovdqa (%rsi), %ymm32999; AVX512BW-NEXT: vmovdqa (%rdx), %ymm43000; AVX512BW-NEXT: vmovdqa (%rcx), %ymm53001; AVX512BW-NEXT: vmovdqa (%r8), %ymm03002; AVX512BW-NEXT: vmovdqa (%r9), %ymm13003; AVX512BW-NEXT: vpbroadcastq {{.*#+}} ymm6 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]3004; AVX512BW-NEXT: vpshufb %ymm6, %ymm3, %ymm73005; AVX512BW-NEXT: vpshufb %ymm6, %ymm2, %ymm63006; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm6[0],ymm7[0],ymm6[1],ymm7[1],ymm6[2],ymm7[2],ymm6[3],ymm7[3],ymm6[4],ymm7[4],ymm6[5],ymm7[5],ymm6[6],ymm7[6],ymm6[7],ymm7[7],ymm6[16],ymm7[16],ymm6[17],ymm7[17],ymm6[18],ymm7[18],ymm6[19],ymm7[19],ymm6[20],ymm7[20],ymm6[21],ymm7[21],ymm6[22],ymm7[22],ymm6[23],ymm7[23]3007; AVX512BW-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]3008; AVX512BW-NEXT: vpbroadcastq {{.*#+}} ymm7 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]3009; AVX512BW-NEXT: vpshufb %ymm7, %ymm5, %ymm83010; AVX512BW-NEXT: vpshufb %ymm7, %ymm4, %ymm93011; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm8 = ymm9[0],ymm8[0],ymm9[1],ymm8[1],ymm9[2],ymm8[2],ymm9[3],ymm8[3],ymm9[4],ymm8[4],ymm9[5],ymm8[5],ymm9[6],ymm8[6],ymm9[7],ymm8[7],ymm9[16],ymm8[16],ymm9[17],ymm8[17],ymm9[18],ymm8[18],ymm9[19],ymm8[19],ymm9[20],ymm8[20],ymm9[21],ymm8[21],ymm9[22],ymm8[22],ymm9[23],ymm8[23]3012; AVX512BW-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,2,3]3013; AVX512BW-NEXT: movw $18724, %r10w # imm = 0x49243014; AVX512BW-NEXT: kmovd %r10d, %k13015; AVX512BW-NEXT: vmovdqu16 %ymm6, %ymm8 {%k1}3016; AVX512BW-NEXT: vpbroadcastq {{.*#+}} ymm9 = [6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0]3017; AVX512BW-NEXT: vpshufb %ymm9, %ymm1, %ymm63018; AVX512BW-NEXT: vpshufb %ymm9, %ymm0, %ymm103019; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm10[0],ymm6[0],ymm10[1],ymm6[1],ymm10[2],ymm6[2],ymm10[3],ymm6[3],ymm10[4],ymm6[4],ymm10[5],ymm6[5],ymm10[6],ymm6[6],ymm10[7],ymm6[7],ymm10[16],ymm6[16],ymm10[17],ymm6[17],ymm10[18],ymm6[18],ymm10[19],ymm6[19],ymm10[20],ymm6[20],ymm10[21],ymm6[21],ymm10[22],ymm6[22],ymm10[23],ymm6[23]3020; AVX512BW-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]3021; AVX512BW-NEXT: movw $9362, %r10w # imm = 0x24923022; AVX512BW-NEXT: kmovd %r10d, %k23023; AVX512BW-NEXT: vmovdqu16 %ymm6, %ymm8 {%k2}3024; AVX512BW-NEXT: vpunpckhbw {{.*#+}} ymm6 = ymm4[8],ymm5[8],ymm4[9],ymm5[9],ymm4[10],ymm5[10],ymm4[11],ymm5[11],ymm4[12],ymm5[12],ymm4[13],ymm5[13],ymm4[14],ymm5[14],ymm4[15],ymm5[15],ymm4[24],ymm5[24],ymm4[25],ymm5[25],ymm4[26],ymm5[26],ymm4[27],ymm5[27],ymm4[28],ymm5[28],ymm4[29],ymm5[29],ymm4[30],ymm5[30],ymm4[31],ymm5[31]3025; AVX512BW-NEXT: vpunpckhbw {{.*#+}} ymm10 = ymm2[8],ymm3[8],ymm2[9],ymm3[9],ymm2[10],ymm3[10],ymm2[11],ymm3[11],ymm2[12],ymm3[12],ymm2[13],ymm3[13],ymm2[14],ymm3[14],ymm2[15],ymm3[15],ymm2[24],ymm3[24],ymm2[25],ymm3[25],ymm2[26],ymm3[26],ymm2[27],ymm3[27],ymm2[28],ymm3[28],ymm2[29],ymm3[29],ymm2[30],ymm3[30],ymm2[31],ymm3[31]3026; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,11,27,0,12,28,0,13,29,0,14,30,0,15,31,0]3027; AVX512BW-NEXT: vpermi2w %ymm6, %ymm10, %ymm113028; AVX512BW-NEXT: vinserti64x4 $1, %ymm11, %zmm0, %zmm63029; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm10 = [42,17,18,43,20,21,44,23,24,45,26,27,46,29,30,47]3030; AVX512BW-NEXT: vpunpckhbw {{.*#+}} ymm11 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]3031; AVX512BW-NEXT: vpermi2w %zmm11, %zmm6, %zmm103032; AVX512BW-NEXT: vinserti64x4 $1, %ymm10, %zmm8, %zmm63033; AVX512BW-NEXT: vmovdqa (%rsi), %xmm83034; AVX512BW-NEXT: vpbroadcastq {{.*#+}} xmm10 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]3035; AVX512BW-NEXT: vpshufb %xmm10, %xmm8, %xmm113036; AVX512BW-NEXT: vmovdqa (%rdi), %xmm123037; AVX512BW-NEXT: vpshufb %xmm10, %xmm12, %xmm103038; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm10 = xmm10[8],xmm11[8],xmm10[9],xmm11[9],xmm10[10],xmm11[10],xmm10[11],xmm11[11],xmm10[12],xmm11[12],xmm10[13],xmm11[13],xmm10[14],xmm11[14],xmm10[15],xmm11[15]3039; AVX512BW-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,0,0,1]3040; AVX512BW-NEXT: vmovdqa (%rcx), %xmm113041; AVX512BW-NEXT: vpshufb %xmm7, %xmm11, %xmm133042; AVX512BW-NEXT: vmovdqa (%rdx), %xmm143043; AVX512BW-NEXT: vpshufb %xmm7, %xmm14, %xmm73044; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm7[0],xmm13[0],xmm7[1],xmm13[1],xmm7[2],xmm13[2],xmm7[3],xmm13[3],xmm7[4],xmm13[4],xmm7[5],xmm13[5],xmm7[6],xmm13[6],xmm7[7],xmm13[7]3045; AVX512BW-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,0,1]3046; AVX512BW-NEXT: vmovdqu16 %ymm10, %ymm7 {%k1}3047; AVX512BW-NEXT: vmovdqa (%r9), %xmm103048; AVX512BW-NEXT: vpshufb %xmm9, %xmm10, %xmm133049; AVX512BW-NEXT: vmovdqa (%r8), %xmm153050; AVX512BW-NEXT: vpshufb %xmm9, %xmm15, %xmm93051; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm9[0],xmm13[0],xmm9[1],xmm13[1],xmm9[2],xmm13[2],xmm9[3],xmm13[3],xmm9[4],xmm13[4],xmm9[5],xmm13[5],xmm9[6],xmm13[6],xmm9[7],xmm13[7]3052; AVX512BW-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,0,1]3053; AVX512BW-NEXT: vmovdqu16 %ymm9, %ymm7 {%k2}3054; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm14[0],xmm11[0],xmm14[1],xmm11[1],xmm14[2],xmm11[2],xmm14[3],xmm11[3],xmm14[4],xmm11[4],xmm14[5],xmm11[5],xmm14[6],xmm11[6],xmm14[7],xmm11[7]3055; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm13 = xmm12[0],xmm8[0],xmm12[1],xmm8[1],xmm12[2],xmm8[2],xmm12[3],xmm8[3],xmm12[4],xmm8[4],xmm12[5],xmm8[5],xmm12[6],xmm8[6],xmm12[7],xmm8[7]3056; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm16 = [0,16,0,1,17,0,2,18,0,3,19,0,4,20,0,5]3057; AVX512BW-NEXT: vpermi2w %ymm9, %ymm13, %ymm163058; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm15[0],xmm10[0],xmm15[1],xmm10[1],xmm15[2],xmm10[2],xmm15[3],xmm10[3],xmm15[4],xmm10[4],xmm15[5],xmm10[5],xmm15[6],xmm10[6],xmm15[7],xmm10[7]3059; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,1,16,3,4,17,6,7,18,9,10,19,12,13,20,15]3060; AVX512BW-NEXT: vpermi2w %ymm9, %ymm16, %ymm133061; AVX512BW-NEXT: vinserti64x4 $1, %ymm7, %zmm13, %zmm73062; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm14[8],xmm11[8],xmm14[9],xmm11[9],xmm14[10],xmm11[10],xmm14[11],xmm11[11],xmm14[12],xmm11[12],xmm14[13],xmm11[13],xmm14[14],xmm11[14],xmm14[15],xmm11[15]3063; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm8 = xmm12[8],xmm8[8],xmm12[9],xmm8[9],xmm12[10],xmm8[10],xmm12[11],xmm8[11],xmm12[12],xmm8[12],xmm12[13],xmm8[13],xmm12[14],xmm8[14],xmm12[15],xmm8[15]3064; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,3,19,0,4,20,0,5,21,0,6,22,0,7,23,0]3065; AVX512BW-NEXT: vpermi2w %ymm9, %ymm8, %ymm113066; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm8 = xmm15[8],xmm10[8],xmm15[9],xmm10[9],xmm15[10],xmm10[10],xmm15[11],xmm10[11],xmm15[12],xmm10[12],xmm15[13],xmm10[13],xmm15[14],xmm10[14],xmm15[15],xmm10[15]3067; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm9 = [18,1,2,19,4,5,20,7,8,21,10,11,22,13,14,23]3068; AVX512BW-NEXT: vpermi2w %ymm8, %ymm11, %ymm93069; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm4[0],ymm5[0],ymm4[1],ymm5[1],ymm4[2],ymm5[2],ymm4[3],ymm5[3],ymm4[4],ymm5[4],ymm4[5],ymm5[5],ymm4[6],ymm5[6],ymm4[7],ymm5[7],ymm4[16],ymm5[16],ymm4[17],ymm5[17],ymm4[18],ymm5[18],ymm4[19],ymm5[19],ymm4[20],ymm5[20],ymm4[21],ymm5[21],ymm4[22],ymm5[22],ymm4[23],ymm5[23]3070; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[4],ymm3[4],ymm2[5],ymm3[5],ymm2[6],ymm3[6],ymm2[7],ymm3[7],ymm2[16],ymm3[16],ymm2[17],ymm3[17],ymm2[18],ymm3[18],ymm2[19],ymm3[19],ymm2[20],ymm3[20],ymm2[21],ymm3[21],ymm2[22],ymm3[22],ymm2[23],ymm3[23]3071; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm3 = [8,24,0,9,25,0,10,26,0,11,27,0,12,28,0,13]3072; AVX512BW-NEXT: vpermi2w %ymm4, %ymm2, %ymm33073; AVX512BW-NEXT: vinserti64x4 $1, %ymm3, %zmm0, %zmm23074; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm3 = [16,17,40,19,20,41,22,23,42,25,26,43,28,29,44,31]3075; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]3076; AVX512BW-NEXT: vpermi2w %zmm0, %zmm2, %zmm33077; AVX512BW-NEXT: vinserti64x4 $1, %ymm3, %zmm9, %zmm03078; AVX512BW-NEXT: vmovdqa64 %zmm0, 64(%rax)3079; AVX512BW-NEXT: vmovdqa64 %zmm7, (%rax)3080; AVX512BW-NEXT: vmovdqa64 %zmm6, 128(%rax)3081; AVX512BW-NEXT: vzeroupper3082; AVX512BW-NEXT: retq3083;3084; AVX512BW-FCP-LABEL: store_i8_stride6_vf32:3085; AVX512BW-FCP: # %bb.0:3086; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax3087; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %ymm23088; AVX512BW-FCP-NEXT: vmovdqa (%rsi), %ymm33089; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %ymm43090; AVX512BW-FCP-NEXT: vmovdqa (%rcx), %ymm53091; AVX512BW-FCP-NEXT: vmovdqa (%r8), %ymm03092; AVX512BW-FCP-NEXT: vmovdqa (%r9), %ymm13093; AVX512BW-FCP-NEXT: vpbroadcastq {{.*#+}} ymm6 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]3094; AVX512BW-FCP-NEXT: vpshufb %ymm6, %ymm3, %ymm73095; AVX512BW-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm63096; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm6[0],ymm7[0],ymm6[1],ymm7[1],ymm6[2],ymm7[2],ymm6[3],ymm7[3],ymm6[4],ymm7[4],ymm6[5],ymm7[5],ymm6[6],ymm7[6],ymm6[7],ymm7[7],ymm6[16],ymm7[16],ymm6[17],ymm7[17],ymm6[18],ymm7[18],ymm6[19],ymm7[19],ymm6[20],ymm7[20],ymm6[21],ymm7[21],ymm6[22],ymm7[22],ymm6[23],ymm7[23]3097; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]3098; AVX512BW-FCP-NEXT: vpbroadcastq {{.*#+}} ymm7 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]3099; AVX512BW-FCP-NEXT: vpshufb %ymm7, %ymm5, %ymm83100; AVX512BW-FCP-NEXT: vpshufb %ymm7, %ymm4, %ymm93101; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm8 = ymm9[0],ymm8[0],ymm9[1],ymm8[1],ymm9[2],ymm8[2],ymm9[3],ymm8[3],ymm9[4],ymm8[4],ymm9[5],ymm8[5],ymm9[6],ymm8[6],ymm9[7],ymm8[7],ymm9[16],ymm8[16],ymm9[17],ymm8[17],ymm9[18],ymm8[18],ymm9[19],ymm8[19],ymm9[20],ymm8[20],ymm9[21],ymm8[21],ymm9[22],ymm8[22],ymm9[23],ymm8[23]3102; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,2,3]3103; AVX512BW-FCP-NEXT: movw $18724, %r10w # imm = 0x49243104; AVX512BW-FCP-NEXT: kmovd %r10d, %k13105; AVX512BW-FCP-NEXT: vmovdqu16 %ymm6, %ymm8 {%k1}3106; AVX512BW-FCP-NEXT: vpbroadcastq {{.*#+}} ymm9 = [6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0]3107; AVX512BW-FCP-NEXT: vpshufb %ymm9, %ymm1, %ymm63108; AVX512BW-FCP-NEXT: vpshufb %ymm9, %ymm0, %ymm103109; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm10[0],ymm6[0],ymm10[1],ymm6[1],ymm10[2],ymm6[2],ymm10[3],ymm6[3],ymm10[4],ymm6[4],ymm10[5],ymm6[5],ymm10[6],ymm6[6],ymm10[7],ymm6[7],ymm10[16],ymm6[16],ymm10[17],ymm6[17],ymm10[18],ymm6[18],ymm10[19],ymm6[19],ymm10[20],ymm6[20],ymm10[21],ymm6[21],ymm10[22],ymm6[22],ymm10[23],ymm6[23]3110; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]3111; AVX512BW-FCP-NEXT: movw $9362, %r10w # imm = 0x24923112; AVX512BW-FCP-NEXT: kmovd %r10d, %k23113; AVX512BW-FCP-NEXT: vmovdqu16 %ymm6, %ymm8 {%k2}3114; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm6 = ymm4[8],ymm5[8],ymm4[9],ymm5[9],ymm4[10],ymm5[10],ymm4[11],ymm5[11],ymm4[12],ymm5[12],ymm4[13],ymm5[13],ymm4[14],ymm5[14],ymm4[15],ymm5[15],ymm4[24],ymm5[24],ymm4[25],ymm5[25],ymm4[26],ymm5[26],ymm4[27],ymm5[27],ymm4[28],ymm5[28],ymm4[29],ymm5[29],ymm4[30],ymm5[30],ymm4[31],ymm5[31]3115; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm10 = ymm2[8],ymm3[8],ymm2[9],ymm3[9],ymm2[10],ymm3[10],ymm2[11],ymm3[11],ymm2[12],ymm3[12],ymm2[13],ymm3[13],ymm2[14],ymm3[14],ymm2[15],ymm3[15],ymm2[24],ymm3[24],ymm2[25],ymm3[25],ymm2[26],ymm3[26],ymm2[27],ymm3[27],ymm2[28],ymm3[28],ymm2[29],ymm3[29],ymm2[30],ymm3[30],ymm2[31],ymm3[31]3116; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,11,27,0,12,28,0,13,29,0,14,30,0,15,31,0]3117; AVX512BW-FCP-NEXT: vpermi2w %ymm6, %ymm10, %ymm113118; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm11, %zmm0, %zmm63119; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [42,17,18,43,20,21,44,23,24,45,26,27,46,29,30,47]3120; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm11 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]3121; AVX512BW-FCP-NEXT: vpermi2w %zmm11, %zmm6, %zmm103122; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm10, %zmm8, %zmm63123; AVX512BW-FCP-NEXT: vmovdqa (%rsi), %xmm83124; AVX512BW-FCP-NEXT: vpbroadcastq {{.*#+}} xmm10 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]3125; AVX512BW-FCP-NEXT: vpshufb %xmm10, %xmm8, %xmm113126; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm123127; AVX512BW-FCP-NEXT: vpshufb %xmm10, %xmm12, %xmm103128; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm10 = xmm10[8],xmm11[8],xmm10[9],xmm11[9],xmm10[10],xmm11[10],xmm10[11],xmm11[11],xmm10[12],xmm11[12],xmm10[13],xmm11[13],xmm10[14],xmm11[14],xmm10[15],xmm11[15]3129; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,0,0,1]3130; AVX512BW-FCP-NEXT: vmovdqa (%rcx), %xmm113131; AVX512BW-FCP-NEXT: vpshufb %xmm7, %xmm11, %xmm133132; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm143133; AVX512BW-FCP-NEXT: vpshufb %xmm7, %xmm14, %xmm73134; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm7[0],xmm13[0],xmm7[1],xmm13[1],xmm7[2],xmm13[2],xmm7[3],xmm13[3],xmm7[4],xmm13[4],xmm7[5],xmm13[5],xmm7[6],xmm13[6],xmm7[7],xmm13[7]3135; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,0,1]3136; AVX512BW-FCP-NEXT: vmovdqu16 %ymm10, %ymm7 {%k1}3137; AVX512BW-FCP-NEXT: vmovdqa (%r9), %xmm103138; AVX512BW-FCP-NEXT: vpshufb %xmm9, %xmm10, %xmm133139; AVX512BW-FCP-NEXT: vmovdqa (%r8), %xmm153140; AVX512BW-FCP-NEXT: vpshufb %xmm9, %xmm15, %xmm93141; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm9[0],xmm13[0],xmm9[1],xmm13[1],xmm9[2],xmm13[2],xmm9[3],xmm13[3],xmm9[4],xmm13[4],xmm9[5],xmm13[5],xmm9[6],xmm13[6],xmm9[7],xmm13[7]3142; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,0,1]3143; AVX512BW-FCP-NEXT: vmovdqu16 %ymm9, %ymm7 {%k2}3144; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm14[0],xmm11[0],xmm14[1],xmm11[1],xmm14[2],xmm11[2],xmm14[3],xmm11[3],xmm14[4],xmm11[4],xmm14[5],xmm11[5],xmm14[6],xmm11[6],xmm14[7],xmm11[7]3145; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm13 = xmm12[0],xmm8[0],xmm12[1],xmm8[1],xmm12[2],xmm8[2],xmm12[3],xmm8[3],xmm12[4],xmm8[4],xmm12[5],xmm8[5],xmm12[6],xmm8[6],xmm12[7],xmm8[7]3146; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm16 = [0,16,0,1,17,0,2,18,0,3,19,0,4,20,0,5]3147; AVX512BW-FCP-NEXT: vpermi2w %ymm9, %ymm13, %ymm163148; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm15[0],xmm10[0],xmm15[1],xmm10[1],xmm15[2],xmm10[2],xmm15[3],xmm10[3],xmm15[4],xmm10[4],xmm15[5],xmm10[5],xmm15[6],xmm10[6],xmm15[7],xmm10[7]3149; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,1,16,3,4,17,6,7,18,9,10,19,12,13,20,15]3150; AVX512BW-FCP-NEXT: vpermi2w %ymm9, %ymm16, %ymm133151; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm7, %zmm13, %zmm73152; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm14[8],xmm11[8],xmm14[9],xmm11[9],xmm14[10],xmm11[10],xmm14[11],xmm11[11],xmm14[12],xmm11[12],xmm14[13],xmm11[13],xmm14[14],xmm11[14],xmm14[15],xmm11[15]3153; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm8 = xmm12[8],xmm8[8],xmm12[9],xmm8[9],xmm12[10],xmm8[10],xmm12[11],xmm8[11],xmm12[12],xmm8[12],xmm12[13],xmm8[13],xmm12[14],xmm8[14],xmm12[15],xmm8[15]3154; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,3,19,0,4,20,0,5,21,0,6,22,0,7,23,0]3155; AVX512BW-FCP-NEXT: vpermi2w %ymm9, %ymm8, %ymm113156; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm8 = xmm15[8],xmm10[8],xmm15[9],xmm10[9],xmm15[10],xmm10[10],xmm15[11],xmm10[11],xmm15[12],xmm10[12],xmm15[13],xmm10[13],xmm15[14],xmm10[14],xmm15[15],xmm10[15]3157; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [18,1,2,19,4,5,20,7,8,21,10,11,22,13,14,23]3158; AVX512BW-FCP-NEXT: vpermi2w %ymm8, %ymm11, %ymm93159; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm4[0],ymm5[0],ymm4[1],ymm5[1],ymm4[2],ymm5[2],ymm4[3],ymm5[3],ymm4[4],ymm5[4],ymm4[5],ymm5[5],ymm4[6],ymm5[6],ymm4[7],ymm5[7],ymm4[16],ymm5[16],ymm4[17],ymm5[17],ymm4[18],ymm5[18],ymm4[19],ymm5[19],ymm4[20],ymm5[20],ymm4[21],ymm5[21],ymm4[22],ymm5[22],ymm4[23],ymm5[23]3160; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[4],ymm3[4],ymm2[5],ymm3[5],ymm2[6],ymm3[6],ymm2[7],ymm3[7],ymm2[16],ymm3[16],ymm2[17],ymm3[17],ymm2[18],ymm3[18],ymm2[19],ymm3[19],ymm2[20],ymm3[20],ymm2[21],ymm3[21],ymm2[22],ymm3[22],ymm2[23],ymm3[23]3161; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [8,24,0,9,25,0,10,26,0,11,27,0,12,28,0,13]3162; AVX512BW-FCP-NEXT: vpermi2w %ymm4, %ymm2, %ymm33163; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm0, %zmm23164; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [16,17,40,19,20,41,22,23,42,25,26,43,28,29,44,31]3165; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]3166; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm2, %zmm33167; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm9, %zmm03168; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, 64(%rax)3169; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, (%rax)3170; AVX512BW-FCP-NEXT: vmovdqa64 %zmm6, 128(%rax)3171; AVX512BW-FCP-NEXT: vzeroupper3172; AVX512BW-FCP-NEXT: retq3173;3174; AVX512DQ-BW-LABEL: store_i8_stride6_vf32:3175; AVX512DQ-BW: # %bb.0:3176; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %rax3177; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %ymm23178; AVX512DQ-BW-NEXT: vmovdqa (%rsi), %ymm33179; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %ymm43180; AVX512DQ-BW-NEXT: vmovdqa (%rcx), %ymm53181; AVX512DQ-BW-NEXT: vmovdqa (%r8), %ymm03182; AVX512DQ-BW-NEXT: vmovdqa (%r9), %ymm13183; AVX512DQ-BW-NEXT: vpbroadcastq {{.*#+}} ymm6 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]3184; AVX512DQ-BW-NEXT: vpshufb %ymm6, %ymm3, %ymm73185; AVX512DQ-BW-NEXT: vpshufb %ymm6, %ymm2, %ymm63186; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm6[0],ymm7[0],ymm6[1],ymm7[1],ymm6[2],ymm7[2],ymm6[3],ymm7[3],ymm6[4],ymm7[4],ymm6[5],ymm7[5],ymm6[6],ymm7[6],ymm6[7],ymm7[7],ymm6[16],ymm7[16],ymm6[17],ymm7[17],ymm6[18],ymm7[18],ymm6[19],ymm7[19],ymm6[20],ymm7[20],ymm6[21],ymm7[21],ymm6[22],ymm7[22],ymm6[23],ymm7[23]3187; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]3188; AVX512DQ-BW-NEXT: vpbroadcastq {{.*#+}} ymm7 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]3189; AVX512DQ-BW-NEXT: vpshufb %ymm7, %ymm5, %ymm83190; AVX512DQ-BW-NEXT: vpshufb %ymm7, %ymm4, %ymm93191; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm8 = ymm9[0],ymm8[0],ymm9[1],ymm8[1],ymm9[2],ymm8[2],ymm9[3],ymm8[3],ymm9[4],ymm8[4],ymm9[5],ymm8[5],ymm9[6],ymm8[6],ymm9[7],ymm8[7],ymm9[16],ymm8[16],ymm9[17],ymm8[17],ymm9[18],ymm8[18],ymm9[19],ymm8[19],ymm9[20],ymm8[20],ymm9[21],ymm8[21],ymm9[22],ymm8[22],ymm9[23],ymm8[23]3192; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,2,3]3193; AVX512DQ-BW-NEXT: movw $18724, %r10w # imm = 0x49243194; AVX512DQ-BW-NEXT: kmovd %r10d, %k13195; AVX512DQ-BW-NEXT: vmovdqu16 %ymm6, %ymm8 {%k1}3196; AVX512DQ-BW-NEXT: vpbroadcastq {{.*#+}} ymm9 = [6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0]3197; AVX512DQ-BW-NEXT: vpshufb %ymm9, %ymm1, %ymm63198; AVX512DQ-BW-NEXT: vpshufb %ymm9, %ymm0, %ymm103199; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm10[0],ymm6[0],ymm10[1],ymm6[1],ymm10[2],ymm6[2],ymm10[3],ymm6[3],ymm10[4],ymm6[4],ymm10[5],ymm6[5],ymm10[6],ymm6[6],ymm10[7],ymm6[7],ymm10[16],ymm6[16],ymm10[17],ymm6[17],ymm10[18],ymm6[18],ymm10[19],ymm6[19],ymm10[20],ymm6[20],ymm10[21],ymm6[21],ymm10[22],ymm6[22],ymm10[23],ymm6[23]3200; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]3201; AVX512DQ-BW-NEXT: movw $9362, %r10w # imm = 0x24923202; AVX512DQ-BW-NEXT: kmovd %r10d, %k23203; AVX512DQ-BW-NEXT: vmovdqu16 %ymm6, %ymm8 {%k2}3204; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} ymm6 = ymm4[8],ymm5[8],ymm4[9],ymm5[9],ymm4[10],ymm5[10],ymm4[11],ymm5[11],ymm4[12],ymm5[12],ymm4[13],ymm5[13],ymm4[14],ymm5[14],ymm4[15],ymm5[15],ymm4[24],ymm5[24],ymm4[25],ymm5[25],ymm4[26],ymm5[26],ymm4[27],ymm5[27],ymm4[28],ymm5[28],ymm4[29],ymm5[29],ymm4[30],ymm5[30],ymm4[31],ymm5[31]3205; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} ymm10 = ymm2[8],ymm3[8],ymm2[9],ymm3[9],ymm2[10],ymm3[10],ymm2[11],ymm3[11],ymm2[12],ymm3[12],ymm2[13],ymm3[13],ymm2[14],ymm3[14],ymm2[15],ymm3[15],ymm2[24],ymm3[24],ymm2[25],ymm3[25],ymm2[26],ymm3[26],ymm2[27],ymm3[27],ymm2[28],ymm3[28],ymm2[29],ymm3[29],ymm2[30],ymm3[30],ymm2[31],ymm3[31]3206; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,11,27,0,12,28,0,13,29,0,14,30,0,15,31,0]3207; AVX512DQ-BW-NEXT: vpermi2w %ymm6, %ymm10, %ymm113208; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm11, %zmm0, %zmm63209; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm10 = [42,17,18,43,20,21,44,23,24,45,26,27,46,29,30,47]3210; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} ymm11 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]3211; AVX512DQ-BW-NEXT: vpermi2w %zmm11, %zmm6, %zmm103212; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm10, %zmm8, %zmm63213; AVX512DQ-BW-NEXT: vmovdqa (%rsi), %xmm83214; AVX512DQ-BW-NEXT: vpbroadcastq {{.*#+}} xmm10 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]3215; AVX512DQ-BW-NEXT: vpshufb %xmm10, %xmm8, %xmm113216; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm123217; AVX512DQ-BW-NEXT: vpshufb %xmm10, %xmm12, %xmm103218; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm10 = xmm10[8],xmm11[8],xmm10[9],xmm11[9],xmm10[10],xmm11[10],xmm10[11],xmm11[11],xmm10[12],xmm11[12],xmm10[13],xmm11[13],xmm10[14],xmm11[14],xmm10[15],xmm11[15]3219; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,0,0,1]3220; AVX512DQ-BW-NEXT: vmovdqa (%rcx), %xmm113221; AVX512DQ-BW-NEXT: vpshufb %xmm7, %xmm11, %xmm133222; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm143223; AVX512DQ-BW-NEXT: vpshufb %xmm7, %xmm14, %xmm73224; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm7[0],xmm13[0],xmm7[1],xmm13[1],xmm7[2],xmm13[2],xmm7[3],xmm13[3],xmm7[4],xmm13[4],xmm7[5],xmm13[5],xmm7[6],xmm13[6],xmm7[7],xmm13[7]3225; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,0,1]3226; AVX512DQ-BW-NEXT: vmovdqu16 %ymm10, %ymm7 {%k1}3227; AVX512DQ-BW-NEXT: vmovdqa (%r9), %xmm103228; AVX512DQ-BW-NEXT: vpshufb %xmm9, %xmm10, %xmm133229; AVX512DQ-BW-NEXT: vmovdqa (%r8), %xmm153230; AVX512DQ-BW-NEXT: vpshufb %xmm9, %xmm15, %xmm93231; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm9[0],xmm13[0],xmm9[1],xmm13[1],xmm9[2],xmm13[2],xmm9[3],xmm13[3],xmm9[4],xmm13[4],xmm9[5],xmm13[5],xmm9[6],xmm13[6],xmm9[7],xmm13[7]3232; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,0,1]3233; AVX512DQ-BW-NEXT: vmovdqu16 %ymm9, %ymm7 {%k2}3234; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm14[0],xmm11[0],xmm14[1],xmm11[1],xmm14[2],xmm11[2],xmm14[3],xmm11[3],xmm14[4],xmm11[4],xmm14[5],xmm11[5],xmm14[6],xmm11[6],xmm14[7],xmm11[7]3235; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm13 = xmm12[0],xmm8[0],xmm12[1],xmm8[1],xmm12[2],xmm8[2],xmm12[3],xmm8[3],xmm12[4],xmm8[4],xmm12[5],xmm8[5],xmm12[6],xmm8[6],xmm12[7],xmm8[7]3236; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm16 = [0,16,0,1,17,0,2,18,0,3,19,0,4,20,0,5]3237; AVX512DQ-BW-NEXT: vpermi2w %ymm9, %ymm13, %ymm163238; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm15[0],xmm10[0],xmm15[1],xmm10[1],xmm15[2],xmm10[2],xmm15[3],xmm10[3],xmm15[4],xmm10[4],xmm15[5],xmm10[5],xmm15[6],xmm10[6],xmm15[7],xmm10[7]3239; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,1,16,3,4,17,6,7,18,9,10,19,12,13,20,15]3240; AVX512DQ-BW-NEXT: vpermi2w %ymm9, %ymm16, %ymm133241; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm7, %zmm13, %zmm73242; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm14[8],xmm11[8],xmm14[9],xmm11[9],xmm14[10],xmm11[10],xmm14[11],xmm11[11],xmm14[12],xmm11[12],xmm14[13],xmm11[13],xmm14[14],xmm11[14],xmm14[15],xmm11[15]3243; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm8 = xmm12[8],xmm8[8],xmm12[9],xmm8[9],xmm12[10],xmm8[10],xmm12[11],xmm8[11],xmm12[12],xmm8[12],xmm12[13],xmm8[13],xmm12[14],xmm8[14],xmm12[15],xmm8[15]3244; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,3,19,0,4,20,0,5,21,0,6,22,0,7,23,0]3245; AVX512DQ-BW-NEXT: vpermi2w %ymm9, %ymm8, %ymm113246; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm8 = xmm15[8],xmm10[8],xmm15[9],xmm10[9],xmm15[10],xmm10[10],xmm15[11],xmm10[11],xmm15[12],xmm10[12],xmm15[13],xmm10[13],xmm15[14],xmm10[14],xmm15[15],xmm10[15]3247; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm9 = [18,1,2,19,4,5,20,7,8,21,10,11,22,13,14,23]3248; AVX512DQ-BW-NEXT: vpermi2w %ymm8, %ymm11, %ymm93249; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm4[0],ymm5[0],ymm4[1],ymm5[1],ymm4[2],ymm5[2],ymm4[3],ymm5[3],ymm4[4],ymm5[4],ymm4[5],ymm5[5],ymm4[6],ymm5[6],ymm4[7],ymm5[7],ymm4[16],ymm5[16],ymm4[17],ymm5[17],ymm4[18],ymm5[18],ymm4[19],ymm5[19],ymm4[20],ymm5[20],ymm4[21],ymm5[21],ymm4[22],ymm5[22],ymm4[23],ymm5[23]3250; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[4],ymm3[4],ymm2[5],ymm3[5],ymm2[6],ymm3[6],ymm2[7],ymm3[7],ymm2[16],ymm3[16],ymm2[17],ymm3[17],ymm2[18],ymm3[18],ymm2[19],ymm3[19],ymm2[20],ymm3[20],ymm2[21],ymm3[21],ymm2[22],ymm3[22],ymm2[23],ymm3[23]3251; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm3 = [8,24,0,9,25,0,10,26,0,11,27,0,12,28,0,13]3252; AVX512DQ-BW-NEXT: vpermi2w %ymm4, %ymm2, %ymm33253; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm3, %zmm0, %zmm23254; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm3 = [16,17,40,19,20,41,22,23,42,25,26,43,28,29,44,31]3255; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]3256; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm2, %zmm33257; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm3, %zmm9, %zmm03258; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, 64(%rax)3259; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, (%rax)3260; AVX512DQ-BW-NEXT: vmovdqa64 %zmm6, 128(%rax)3261; AVX512DQ-BW-NEXT: vzeroupper3262; AVX512DQ-BW-NEXT: retq3263;3264; AVX512DQ-BW-FCP-LABEL: store_i8_stride6_vf32:3265; AVX512DQ-BW-FCP: # %bb.0:3266; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax3267; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %ymm23268; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rsi), %ymm33269; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %ymm43270; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rcx), %ymm53271; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r8), %ymm03272; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r9), %ymm13273; AVX512DQ-BW-FCP-NEXT: vpbroadcastq {{.*#+}} ymm6 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]3274; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm6, %ymm3, %ymm73275; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm63276; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm6[0],ymm7[0],ymm6[1],ymm7[1],ymm6[2],ymm7[2],ymm6[3],ymm7[3],ymm6[4],ymm7[4],ymm6[5],ymm7[5],ymm6[6],ymm7[6],ymm6[7],ymm7[7],ymm6[16],ymm7[16],ymm6[17],ymm7[17],ymm6[18],ymm7[18],ymm6[19],ymm7[19],ymm6[20],ymm7[20],ymm6[21],ymm7[21],ymm6[22],ymm7[22],ymm6[23],ymm7[23]3277; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]3278; AVX512DQ-BW-FCP-NEXT: vpbroadcastq {{.*#+}} ymm7 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]3279; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm7, %ymm5, %ymm83280; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm7, %ymm4, %ymm93281; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm8 = ymm9[0],ymm8[0],ymm9[1],ymm8[1],ymm9[2],ymm8[2],ymm9[3],ymm8[3],ymm9[4],ymm8[4],ymm9[5],ymm8[5],ymm9[6],ymm8[6],ymm9[7],ymm8[7],ymm9[16],ymm8[16],ymm9[17],ymm8[17],ymm9[18],ymm8[18],ymm9[19],ymm8[19],ymm9[20],ymm8[20],ymm9[21],ymm8[21],ymm9[22],ymm8[22],ymm9[23],ymm8[23]3282; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,2,3]3283; AVX512DQ-BW-FCP-NEXT: movw $18724, %r10w # imm = 0x49243284; AVX512DQ-BW-FCP-NEXT: kmovd %r10d, %k13285; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %ymm6, %ymm8 {%k1}3286; AVX512DQ-BW-FCP-NEXT: vpbroadcastq {{.*#+}} ymm9 = [6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0]3287; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm9, %ymm1, %ymm63288; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm9, %ymm0, %ymm103289; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm10[0],ymm6[0],ymm10[1],ymm6[1],ymm10[2],ymm6[2],ymm10[3],ymm6[3],ymm10[4],ymm6[4],ymm10[5],ymm6[5],ymm10[6],ymm6[6],ymm10[7],ymm6[7],ymm10[16],ymm6[16],ymm10[17],ymm6[17],ymm10[18],ymm6[18],ymm10[19],ymm6[19],ymm10[20],ymm6[20],ymm10[21],ymm6[21],ymm10[22],ymm6[22],ymm10[23],ymm6[23]3290; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]3291; AVX512DQ-BW-FCP-NEXT: movw $9362, %r10w # imm = 0x24923292; AVX512DQ-BW-FCP-NEXT: kmovd %r10d, %k23293; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %ymm6, %ymm8 {%k2}3294; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm6 = ymm4[8],ymm5[8],ymm4[9],ymm5[9],ymm4[10],ymm5[10],ymm4[11],ymm5[11],ymm4[12],ymm5[12],ymm4[13],ymm5[13],ymm4[14],ymm5[14],ymm4[15],ymm5[15],ymm4[24],ymm5[24],ymm4[25],ymm5[25],ymm4[26],ymm5[26],ymm4[27],ymm5[27],ymm4[28],ymm5[28],ymm4[29],ymm5[29],ymm4[30],ymm5[30],ymm4[31],ymm5[31]3295; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm10 = ymm2[8],ymm3[8],ymm2[9],ymm3[9],ymm2[10],ymm3[10],ymm2[11],ymm3[11],ymm2[12],ymm3[12],ymm2[13],ymm3[13],ymm2[14],ymm3[14],ymm2[15],ymm3[15],ymm2[24],ymm3[24],ymm2[25],ymm3[25],ymm2[26],ymm3[26],ymm2[27],ymm3[27],ymm2[28],ymm3[28],ymm2[29],ymm3[29],ymm2[30],ymm3[30],ymm2[31],ymm3[31]3296; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,11,27,0,12,28,0,13,29,0,14,30,0,15,31,0]3297; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm6, %ymm10, %ymm113298; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm11, %zmm0, %zmm63299; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm10 = [42,17,18,43,20,21,44,23,24,45,26,27,46,29,30,47]3300; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm11 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]3301; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm11, %zmm6, %zmm103302; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm10, %zmm8, %zmm63303; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rsi), %xmm83304; AVX512DQ-BW-FCP-NEXT: vpbroadcastq {{.*#+}} xmm10 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]3305; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm10, %xmm8, %xmm113306; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm123307; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm10, %xmm12, %xmm103308; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm10 = xmm10[8],xmm11[8],xmm10[9],xmm11[9],xmm10[10],xmm11[10],xmm10[11],xmm11[11],xmm10[12],xmm11[12],xmm10[13],xmm11[13],xmm10[14],xmm11[14],xmm10[15],xmm11[15]3309; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,0,0,1]3310; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rcx), %xmm113311; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm7, %xmm11, %xmm133312; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm143313; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm7, %xmm14, %xmm73314; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm7[0],xmm13[0],xmm7[1],xmm13[1],xmm7[2],xmm13[2],xmm7[3],xmm13[3],xmm7[4],xmm13[4],xmm7[5],xmm13[5],xmm7[6],xmm13[6],xmm7[7],xmm13[7]3315; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,0,1]3316; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %ymm10, %ymm7 {%k1}3317; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r9), %xmm103318; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm9, %xmm10, %xmm133319; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r8), %xmm153320; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm9, %xmm15, %xmm93321; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm9[0],xmm13[0],xmm9[1],xmm13[1],xmm9[2],xmm13[2],xmm9[3],xmm13[3],xmm9[4],xmm13[4],xmm9[5],xmm13[5],xmm9[6],xmm13[6],xmm9[7],xmm13[7]3322; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,0,1]3323; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %ymm9, %ymm7 {%k2}3324; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm14[0],xmm11[0],xmm14[1],xmm11[1],xmm14[2],xmm11[2],xmm14[3],xmm11[3],xmm14[4],xmm11[4],xmm14[5],xmm11[5],xmm14[6],xmm11[6],xmm14[7],xmm11[7]3325; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm13 = xmm12[0],xmm8[0],xmm12[1],xmm8[1],xmm12[2],xmm8[2],xmm12[3],xmm8[3],xmm12[4],xmm8[4],xmm12[5],xmm8[5],xmm12[6],xmm8[6],xmm12[7],xmm8[7]3326; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm16 = [0,16,0,1,17,0,2,18,0,3,19,0,4,20,0,5]3327; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm9, %ymm13, %ymm163328; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm15[0],xmm10[0],xmm15[1],xmm10[1],xmm15[2],xmm10[2],xmm15[3],xmm10[3],xmm15[4],xmm10[4],xmm15[5],xmm10[5],xmm15[6],xmm10[6],xmm15[7],xmm10[7]3329; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,1,16,3,4,17,6,7,18,9,10,19,12,13,20,15]3330; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm9, %ymm16, %ymm133331; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm7, %zmm13, %zmm73332; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm14[8],xmm11[8],xmm14[9],xmm11[9],xmm14[10],xmm11[10],xmm14[11],xmm11[11],xmm14[12],xmm11[12],xmm14[13],xmm11[13],xmm14[14],xmm11[14],xmm14[15],xmm11[15]3333; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm8 = xmm12[8],xmm8[8],xmm12[9],xmm8[9],xmm12[10],xmm8[10],xmm12[11],xmm8[11],xmm12[12],xmm8[12],xmm12[13],xmm8[13],xmm12[14],xmm8[14],xmm12[15],xmm8[15]3334; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [0,3,19,0,4,20,0,5,21,0,6,22,0,7,23,0]3335; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm9, %ymm8, %ymm113336; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm8 = xmm15[8],xmm10[8],xmm15[9],xmm10[9],xmm15[10],xmm10[10],xmm15[11],xmm10[11],xmm15[12],xmm10[12],xmm15[13],xmm10[13],xmm15[14],xmm10[14],xmm15[15],xmm10[15]3337; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [18,1,2,19,4,5,20,7,8,21,10,11,22,13,14,23]3338; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm8, %ymm11, %ymm93339; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm4[0],ymm5[0],ymm4[1],ymm5[1],ymm4[2],ymm5[2],ymm4[3],ymm5[3],ymm4[4],ymm5[4],ymm4[5],ymm5[5],ymm4[6],ymm5[6],ymm4[7],ymm5[7],ymm4[16],ymm5[16],ymm4[17],ymm5[17],ymm4[18],ymm5[18],ymm4[19],ymm5[19],ymm4[20],ymm5[20],ymm4[21],ymm5[21],ymm4[22],ymm5[22],ymm4[23],ymm5[23]3340; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm2[0],ymm3[0],ymm2[1],ymm3[1],ymm2[2],ymm3[2],ymm2[3],ymm3[3],ymm2[4],ymm3[4],ymm2[5],ymm3[5],ymm2[6],ymm3[6],ymm2[7],ymm3[7],ymm2[16],ymm3[16],ymm2[17],ymm3[17],ymm2[18],ymm3[18],ymm2[19],ymm3[19],ymm2[20],ymm3[20],ymm2[21],ymm3[21],ymm2[22],ymm3[22],ymm2[23],ymm3[23]3341; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [8,24,0,9,25,0,10,26,0,11,27,0,12,28,0,13]3342; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm4, %ymm2, %ymm33343; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm0, %zmm23344; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [16,17,40,19,20,41,22,23,42,25,26,43,28,29,44,31]3345; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]3346; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm2, %zmm33347; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm9, %zmm03348; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, 64(%rax)3349; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, (%rax)3350; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm6, 128(%rax)3351; AVX512DQ-BW-FCP-NEXT: vzeroupper3352; AVX512DQ-BW-FCP-NEXT: retq3353 %in.vec0 = load <32 x i8>, ptr %in.vecptr0, align 643354 %in.vec1 = load <32 x i8>, ptr %in.vecptr1, align 643355 %in.vec2 = load <32 x i8>, ptr %in.vecptr2, align 643356 %in.vec3 = load <32 x i8>, ptr %in.vecptr3, align 643357 %in.vec4 = load <32 x i8>, ptr %in.vecptr4, align 643358 %in.vec5 = load <32 x i8>, ptr %in.vecptr5, align 643359 %1 = shufflevector <32 x i8> %in.vec0, <32 x i8> %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>3360 %2 = shufflevector <32 x i8> %in.vec2, <32 x i8> %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>3361 %3 = shufflevector <32 x i8> %in.vec4, <32 x i8> %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>3362 %4 = shufflevector <64 x i8> %1, <64 x i8> %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>3363 %5 = shufflevector <64 x i8> %3, <64 x i8> 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 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>3364 %6 = shufflevector <128 x i8> %4, <128 x i8> %5, <192 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>3365 %interleaved.vec = shufflevector <192 x i8> %6, <192 x i8> poison, <192 x i32> <i32 0, i32 32, i32 64, i32 96, i32 128, i32 160, i32 1, i32 33, i32 65, i32 97, i32 129, i32 161, i32 2, i32 34, i32 66, i32 98, i32 130, i32 162, i32 3, i32 35, i32 67, i32 99, i32 131, i32 163, i32 4, i32 36, i32 68, i32 100, i32 132, i32 164, i32 5, i32 37, i32 69, i32 101, i32 133, i32 165, i32 6, i32 38, i32 70, i32 102, i32 134, i32 166, i32 7, i32 39, i32 71, i32 103, i32 135, i32 167, i32 8, i32 40, i32 72, i32 104, i32 136, i32 168, i32 9, i32 41, i32 73, i32 105, i32 137, i32 169, i32 10, i32 42, i32 74, i32 106, i32 138, i32 170, i32 11, i32 43, i32 75, i32 107, i32 139, i32 171, i32 12, i32 44, i32 76, i32 108, i32 140, i32 172, i32 13, i32 45, i32 77, i32 109, i32 141, i32 173, i32 14, i32 46, i32 78, i32 110, i32 142, i32 174, i32 15, i32 47, i32 79, i32 111, i32 143, i32 175, i32 16, i32 48, i32 80, i32 112, i32 144, i32 176, i32 17, i32 49, i32 81, i32 113, i32 145, i32 177, i32 18, i32 50, i32 82, i32 114, i32 146, i32 178, i32 19, i32 51, i32 83, i32 115, i32 147, i32 179, i32 20, i32 52, i32 84, i32 116, i32 148, i32 180, i32 21, i32 53, i32 85, i32 117, i32 149, i32 181, i32 22, i32 54, i32 86, i32 118, i32 150, i32 182, i32 23, i32 55, i32 87, i32 119, i32 151, i32 183, i32 24, i32 56, i32 88, i32 120, i32 152, i32 184, i32 25, i32 57, i32 89, i32 121, i32 153, i32 185, i32 26, i32 58, i32 90, i32 122, i32 154, i32 186, i32 27, i32 59, i32 91, i32 123, i32 155, i32 187, i32 28, i32 60, i32 92, i32 124, i32 156, i32 188, i32 29, i32 61, i32 93, i32 125, i32 157, i32 189, i32 30, i32 62, i32 94, i32 126, i32 158, i32 190, i32 31, i32 63, i32 95, i32 127, i32 159, i32 191>3366 store <192 x i8> %interleaved.vec, ptr %out.vec, align 643367 ret void3368}3369 3370define void @store_i8_stride6_vf64(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %in.vecptr5, ptr %out.vec) nounwind {3371; SSE-LABEL: store_i8_stride6_vf64:3372; SSE: # %bb.0:3373; SSE-NEXT: subq $184, %rsp3374; SSE-NEXT: movdqa (%rdi), %xmm13375; SSE-NEXT: movdqa (%rsi), %xmm53376; SSE-NEXT: movdqa (%rdx), %xmm43377; SSE-NEXT: movdqa (%rcx), %xmm93378; SSE-NEXT: movdqa (%r8), %xmm63379; SSE-NEXT: movdqa (%r9), %xmm23380; SSE-NEXT: movdqa %xmm1, %xmm83381; SSE-NEXT: punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm5[0],xmm8[1],xmm5[1],xmm8[2],xmm5[2],xmm8[3],xmm5[3],xmm8[4],xmm5[4],xmm8[5],xmm5[5],xmm8[6],xmm5[6],xmm8[7],xmm5[7]3382; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm8[0,0,1,1]3383; SSE-NEXT: movdqa {{.*#+}} xmm12 = [65535,0,65535,65535,0,65535,65535,0]3384; SSE-NEXT: pand %xmm12, %xmm33385; SSE-NEXT: movdqa %xmm4, %xmm103386; SSE-NEXT: punpcklbw {{.*#+}} xmm10 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3],xmm10[4],xmm9[4],xmm10[5],xmm9[5],xmm10[6],xmm9[6],xmm10[7],xmm9[7]3387; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm10[1,0,2,2,4,5,6,7]3388; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[0,1,0,1]3389; SSE-NEXT: pandn %xmm7, %xmm123390; SSE-NEXT: por %xmm3, %xmm123391; SSE-NEXT: movdqa {{.*#+}} xmm3 = [65535,65535,0,65535,65535,0,65535,65535]3392; SSE-NEXT: pand %xmm3, %xmm123393; SSE-NEXT: movdqa %xmm6, %xmm113394; SSE-NEXT: punpcklbw {{.*#+}} xmm11 = xmm11[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]3395; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm11[0,0,0,0]3396; SSE-NEXT: movdqa %xmm3, %xmm133397; SSE-NEXT: pandn %xmm7, %xmm133398; SSE-NEXT: por %xmm12, %xmm133399; SSE-NEXT: movdqa {{.*#+}} xmm12 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]3400; SSE-NEXT: pand %xmm12, %xmm133401; SSE-NEXT: punpcklbw {{.*#+}} xmm15 = xmm15[0],xmm2[0],xmm15[1],xmm2[1],xmm15[2],xmm2[2],xmm15[3],xmm2[3],xmm15[4],xmm2[4],xmm15[5],xmm2[5],xmm15[6],xmm2[6],xmm15[7],xmm2[7]3402; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm15[0,0,0,0]3403; SSE-NEXT: movdqa %xmm12, %xmm03404; SSE-NEXT: pandn %xmm7, %xmm03405; SSE-NEXT: por %xmm13, %xmm03406; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3407; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm10[3,3,3,3,4,5,6,7]3408; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]3409; SSE-NEXT: movdqa %xmm3, %xmm133410; SSE-NEXT: pandn %xmm7, %xmm133411; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm8[1,1,2,2]3412; SSE-NEXT: pand %xmm3, %xmm73413; SSE-NEXT: por %xmm7, %xmm133414; SSE-NEXT: movdqa {{.*#+}} xmm0 = [0,65535,65535,0,65535,65535,0,65535]3415; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm11[1,1,2,2]3416; SSE-NEXT: movdqa %xmm0, %xmm143417; SSE-NEXT: pandn %xmm7, %xmm143418; SSE-NEXT: pand %xmm0, %xmm133419; SSE-NEXT: por %xmm13, %xmm143420; SSE-NEXT: movdqa {{.*#+}} xmm13 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]3421; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm15[1,1,2,2]3422; SSE-NEXT: movdqa %xmm13, %xmm03423; SSE-NEXT: pandn %xmm7, %xmm03424; SSE-NEXT: pand %xmm13, %xmm143425; SSE-NEXT: por %xmm14, %xmm03426; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3427; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm8[3,3,3,3]3428; SSE-NEXT: movdqa %xmm3, %xmm83429; SSE-NEXT: pandn %xmm7, %xmm83430; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm10[0,1,2,3,5,6,7,7]3431; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[2,2,2,3]3432; SSE-NEXT: pand %xmm3, %xmm73433; SSE-NEXT: por %xmm8, %xmm73434; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm11[2,2,3,3]3435; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,0,65535,65535,0]3436; SSE-NEXT: movdqa %xmm0, %xmm103437; SSE-NEXT: pandn %xmm8, %xmm103438; SSE-NEXT: pand %xmm0, %xmm73439; SSE-NEXT: movdqa %xmm0, %xmm113440; SSE-NEXT: por %xmm7, %xmm103441; SSE-NEXT: movdqa {{.*#+}} xmm14 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]3442; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm15[2,2,3,3]3443; SSE-NEXT: movdqa %xmm14, %xmm03444; SSE-NEXT: pandn %xmm7, %xmm03445; SSE-NEXT: pand %xmm14, %xmm103446; SSE-NEXT: por %xmm10, %xmm03447; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3448; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm5[8],xmm1[9],xmm5[9],xmm1[10],xmm5[10],xmm1[11],xmm5[11],xmm1[12],xmm5[12],xmm1[13],xmm5[13],xmm1[14],xmm5[14],xmm1[15],xmm5[15]3449; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,1,1]3450; SSE-NEXT: pand %xmm11, %xmm53451; SSE-NEXT: punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm9[8],xmm4[9],xmm9[9],xmm4[10],xmm9[10],xmm4[11],xmm9[11],xmm4[12],xmm9[12],xmm4[13],xmm9[13],xmm4[14],xmm9[14],xmm4[15],xmm9[15]3452; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm4[1,0,2,2,4,5,6,7]3453; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[0,1,0,1]3454; SSE-NEXT: movdqa %xmm11, %xmm83455; SSE-NEXT: pandn %xmm7, %xmm83456; SSE-NEXT: por %xmm5, %xmm83457; SSE-NEXT: pand %xmm3, %xmm83458; SSE-NEXT: punpckhbw {{.*#+}} xmm6 = xmm6[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3459; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm6[0,0,0,0]3460; SSE-NEXT: movdqa %xmm3, %xmm73461; SSE-NEXT: pandn %xmm5, %xmm73462; SSE-NEXT: por %xmm8, %xmm73463; SSE-NEXT: pand %xmm12, %xmm73464; SSE-NEXT: punpckhbw {{.*#+}} xmm2 = xmm2[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3465; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm2[0,0,0,0]3466; SSE-NEXT: movdqa %xmm12, %xmm03467; SSE-NEXT: pandn %xmm5, %xmm03468; SSE-NEXT: por %xmm7, %xmm03469; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3470; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm4[3,3,3,3,4,5,6,7]3471; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]3472; SSE-NEXT: movdqa %xmm3, %xmm73473; SSE-NEXT: pandn %xmm5, %xmm73474; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,2,2]3475; SSE-NEXT: pand %xmm3, %xmm53476; SSE-NEXT: por %xmm5, %xmm73477; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm6[1,1,2,2]3478; SSE-NEXT: movdqa {{.*#+}} xmm0 = [0,65535,65535,0,65535,65535,0,65535]3479; SSE-NEXT: movdqa %xmm0, %xmm83480; SSE-NEXT: pandn %xmm5, %xmm83481; SSE-NEXT: pand %xmm0, %xmm73482; SSE-NEXT: por %xmm7, %xmm83483; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm2[1,1,2,2]3484; SSE-NEXT: movdqa %xmm13, %xmm03485; SSE-NEXT: pandn %xmm5, %xmm03486; SSE-NEXT: pand %xmm13, %xmm83487; SSE-NEXT: por %xmm8, %xmm03488; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3489; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,3,3,3]3490; SSE-NEXT: movdqa %xmm3, %xmm53491; SSE-NEXT: pandn %xmm1, %xmm53492; SSE-NEXT: movdqa 16(%rdx), %xmm13493; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,6,7,7]3494; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[2,2,2,3]3495; SSE-NEXT: pand %xmm3, %xmm43496; SSE-NEXT: por %xmm5, %xmm43497; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm6[2,2,3,3]3498; SSE-NEXT: movdqa %xmm11, %xmm63499; SSE-NEXT: pandn %xmm5, %xmm63500; SSE-NEXT: movdqa 16(%rcx), %xmm53501; SSE-NEXT: pand %xmm11, %xmm43502; SSE-NEXT: por %xmm4, %xmm63503; SSE-NEXT: pand %xmm14, %xmm63504; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,2,3,3]3505; SSE-NEXT: movdqa %xmm14, %xmm03506; SSE-NEXT: pandn %xmm2, %xmm03507; SSE-NEXT: por %xmm6, %xmm03508; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3509; SSE-NEXT: movdqa %xmm1, %xmm93510; SSE-NEXT: punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm5[0],xmm9[1],xmm5[1],xmm9[2],xmm5[2],xmm9[3],xmm5[3],xmm9[4],xmm5[4],xmm9[5],xmm5[5],xmm9[6],xmm5[6],xmm9[7],xmm5[7]3511; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm9[1,0,2,2,4,5,6,7]3512; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,0,1]3513; SSE-NEXT: movdqa %xmm11, %xmm03514; SSE-NEXT: movdqa %xmm11, %xmm63515; SSE-NEXT: pandn %xmm2, %xmm63516; SSE-NEXT: movdqa 16(%rdi), %xmm23517; SSE-NEXT: movdqa 16(%rsi), %xmm83518; SSE-NEXT: movdqa %xmm2, %xmm113519; SSE-NEXT: punpcklbw {{.*#+}} xmm11 = xmm11[0],xmm8[0],xmm11[1],xmm8[1],xmm11[2],xmm8[2],xmm11[3],xmm8[3],xmm11[4],xmm8[4],xmm11[5],xmm8[5],xmm11[6],xmm8[6],xmm11[7],xmm8[7]3520; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm11[0,0,1,1]3521; SSE-NEXT: pand %xmm0, %xmm43522; SSE-NEXT: por %xmm4, %xmm63523; SSE-NEXT: movdqa 16(%r8), %xmm43524; SSE-NEXT: movdqa %xmm4, %xmm103525; SSE-NEXT: punpcklbw {{.*#+}} xmm10 = xmm10[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]3526; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm10[0,0,0,0]3527; SSE-NEXT: movdqa %xmm3, %xmm133528; SSE-NEXT: pandn %xmm7, %xmm133529; SSE-NEXT: pand %xmm3, %xmm63530; SSE-NEXT: por %xmm6, %xmm133531; SSE-NEXT: movdqa 16(%r9), %xmm63532; SSE-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3],xmm7[4],xmm6[4],xmm7[5],xmm6[5],xmm7[6],xmm6[6],xmm7[7],xmm6[7]3533; SSE-NEXT: pshufd {{.*#+}} xmm15 = xmm7[0,0,0,0]3534; SSE-NEXT: movdqa %xmm12, %xmm03535; SSE-NEXT: pandn %xmm15, %xmm03536; SSE-NEXT: pand %xmm12, %xmm133537; SSE-NEXT: por %xmm13, %xmm03538; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3539; SSE-NEXT: pshuflw {{.*#+}} xmm13 = xmm9[3,3,3,3,4,5,6,7]3540; SSE-NEXT: pshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,4,4,4]3541; SSE-NEXT: movdqa %xmm3, %xmm153542; SSE-NEXT: pandn %xmm13, %xmm153543; SSE-NEXT: pshufd {{.*#+}} xmm13 = xmm11[1,1,2,2]3544; SSE-NEXT: pand %xmm3, %xmm133545; SSE-NEXT: por %xmm13, %xmm153546; SSE-NEXT: pshufd {{.*#+}} xmm13 = xmm10[1,1,2,2]3547; SSE-NEXT: movdqa {{.*#+}} xmm0 = [0,65535,65535,0,65535,65535,0,65535]3548; SSE-NEXT: movdqa %xmm0, %xmm123549; SSE-NEXT: pandn %xmm13, %xmm123550; SSE-NEXT: pand %xmm0, %xmm153551; SSE-NEXT: por %xmm15, %xmm123552; SSE-NEXT: pshufd {{.*#+}} xmm13 = xmm7[1,1,2,2]3553; SSE-NEXT: movdqa {{.*#+}} xmm15 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]3554; SSE-NEXT: movdqa %xmm15, %xmm03555; SSE-NEXT: pandn %xmm13, %xmm03556; SSE-NEXT: pand %xmm15, %xmm123557; SSE-NEXT: movdqa %xmm15, %xmm133558; SSE-NEXT: por %xmm12, %xmm03559; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3560; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm11[3,3,3,3]3561; SSE-NEXT: movdqa %xmm3, %xmm123562; SSE-NEXT: pandn %xmm11, %xmm123563; SSE-NEXT: pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,5,6,7,7]3564; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm9[2,2,2,3]3565; SSE-NEXT: pand %xmm3, %xmm93566; SSE-NEXT: por %xmm12, %xmm93567; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm10[2,2,3,3]3568; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,0,65535,65535,0]3569; SSE-NEXT: movdqa %xmm0, %xmm113570; SSE-NEXT: pandn %xmm10, %xmm113571; SSE-NEXT: pand %xmm0, %xmm93572; SSE-NEXT: movdqa %xmm0, %xmm103573; SSE-NEXT: por %xmm9, %xmm113574; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[2,2,3,3]3575; SSE-NEXT: movdqa %xmm14, %xmm03576; SSE-NEXT: pandn %xmm7, %xmm03577; SSE-NEXT: pand %xmm14, %xmm113578; SSE-NEXT: por %xmm11, %xmm03579; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3580; SSE-NEXT: punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]3581; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm5[8],xmm1[9],xmm5[9],xmm1[10],xmm5[10],xmm1[11],xmm5[11],xmm1[12],xmm5[12],xmm1[13],xmm5[13],xmm1[14],xmm5[14],xmm1[15],xmm5[15]3582; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm1[1,0,2,2,4,5,6,7]3583; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]3584; SSE-NEXT: movdqa %xmm10, %xmm73585; SSE-NEXT: pandn %xmm5, %xmm73586; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm2[0,0,1,1]3587; SSE-NEXT: pand %xmm10, %xmm53588; SSE-NEXT: por %xmm5, %xmm73589; SSE-NEXT: punpckhbw {{.*#+}} xmm4 = xmm4[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3590; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,0,0]3591; SSE-NEXT: movdqa %xmm3, %xmm83592; SSE-NEXT: pandn %xmm5, %xmm83593; SSE-NEXT: pand %xmm3, %xmm73594; SSE-NEXT: por %xmm7, %xmm83595; SSE-NEXT: punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm6[8],xmm5[9],xmm6[9],xmm5[10],xmm6[10],xmm5[11],xmm6[11],xmm5[12],xmm6[12],xmm5[13],xmm6[13],xmm5[14],xmm6[14],xmm5[15],xmm6[15]3596; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,0,0]3597; SSE-NEXT: movdqa {{.*#+}} xmm0 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]3598; SSE-NEXT: movdqa %xmm0, %xmm73599; SSE-NEXT: pandn %xmm6, %xmm73600; SSE-NEXT: pand %xmm0, %xmm83601; SSE-NEXT: movdqa %xmm0, %xmm153602; SSE-NEXT: por %xmm8, %xmm73603; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3604; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm1[3,3,3,3,4,5,6,7]3605; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]3606; SSE-NEXT: movdqa %xmm3, %xmm73607; SSE-NEXT: pandn %xmm6, %xmm73608; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm2[1,1,2,2]3609; SSE-NEXT: pand %xmm3, %xmm63610; SSE-NEXT: por %xmm6, %xmm73611; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm4[1,1,2,2]3612; SSE-NEXT: movdqa {{.*#+}} xmm0 = [0,65535,65535,0,65535,65535,0,65535]3613; SSE-NEXT: movdqa %xmm0, %xmm83614; SSE-NEXT: pandn %xmm6, %xmm83615; SSE-NEXT: pand %xmm0, %xmm73616; SSE-NEXT: por %xmm7, %xmm83617; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm5[1,1,2,2]3618; SSE-NEXT: movdqa %xmm13, %xmm03619; SSE-NEXT: pandn %xmm6, %xmm03620; SSE-NEXT: pand %xmm13, %xmm83621; SSE-NEXT: por %xmm8, %xmm03622; SSE-NEXT: movdqa %xmm0, (%rsp) # 16-byte Spill3623; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[3,3,3,3]3624; SSE-NEXT: movdqa %xmm3, %xmm63625; SSE-NEXT: pandn %xmm2, %xmm63626; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,6,7,7]3627; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,2,3]3628; SSE-NEXT: pand %xmm3, %xmm13629; SSE-NEXT: por %xmm6, %xmm13630; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[2,2,3,3]3631; SSE-NEXT: movdqa %xmm10, %xmm43632; SSE-NEXT: pandn %xmm2, %xmm43633; SSE-NEXT: pand %xmm10, %xmm13634; SSE-NEXT: por %xmm1, %xmm43635; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[2,2,3,3]3636; SSE-NEXT: movdqa %xmm14, %xmm03637; SSE-NEXT: pandn %xmm1, %xmm03638; SSE-NEXT: pand %xmm14, %xmm43639; SSE-NEXT: por %xmm4, %xmm03640; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3641; SSE-NEXT: movdqa 32(%rdx), %xmm13642; SSE-NEXT: movdqa 32(%rcx), %xmm53643; SSE-NEXT: movdqa %xmm1, %xmm93644; SSE-NEXT: punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm5[0],xmm9[1],xmm5[1],xmm9[2],xmm5[2],xmm9[3],xmm5[3],xmm9[4],xmm5[4],xmm9[5],xmm5[5],xmm9[6],xmm5[6],xmm9[7],xmm5[7]3645; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm9[1,0,2,2,4,5,6,7]3646; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,0,1]3647; SSE-NEXT: movdqa %xmm10, %xmm63648; SSE-NEXT: pandn %xmm2, %xmm63649; SSE-NEXT: movdqa 32(%rdi), %xmm23650; SSE-NEXT: movdqa 32(%rsi), %xmm83651; SSE-NEXT: movdqa %xmm2, %xmm113652; SSE-NEXT: punpcklbw {{.*#+}} xmm11 = xmm11[0],xmm8[0],xmm11[1],xmm8[1],xmm11[2],xmm8[2],xmm11[3],xmm8[3],xmm11[4],xmm8[4],xmm11[5],xmm8[5],xmm11[6],xmm8[6],xmm11[7],xmm8[7]3653; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm11[0,0,1,1]3654; SSE-NEXT: pand %xmm10, %xmm43655; SSE-NEXT: por %xmm4, %xmm63656; SSE-NEXT: movdqa 32(%r8), %xmm43657; SSE-NEXT: movdqa %xmm4, %xmm103658; SSE-NEXT: punpcklbw {{.*#+}} xmm10 = xmm10[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]3659; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm10[0,0,0,0]3660; SSE-NEXT: movdqa %xmm3, %xmm123661; SSE-NEXT: pandn %xmm7, %xmm123662; SSE-NEXT: pand %xmm3, %xmm63663; SSE-NEXT: por %xmm6, %xmm123664; SSE-NEXT: movdqa 32(%r9), %xmm63665; SSE-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3],xmm7[4],xmm6[4],xmm7[5],xmm6[5],xmm7[6],xmm6[6],xmm7[7],xmm6[7]3666; SSE-NEXT: pshufd {{.*#+}} xmm13 = xmm7[0,0,0,0]3667; SSE-NEXT: movdqa %xmm15, %xmm03668; SSE-NEXT: pandn %xmm13, %xmm03669; SSE-NEXT: pand %xmm15, %xmm123670; SSE-NEXT: por %xmm12, %xmm03671; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3672; SSE-NEXT: pshuflw {{.*#+}} xmm12 = xmm9[3,3,3,3,4,5,6,7]3673; SSE-NEXT: pshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,4,4,4]3674; SSE-NEXT: movdqa %xmm3, %xmm133675; SSE-NEXT: pandn %xmm12, %xmm133676; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm11[1,1,2,2]3677; SSE-NEXT: pand %xmm3, %xmm123678; SSE-NEXT: por %xmm12, %xmm133679; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm10[1,1,2,2]3680; SSE-NEXT: movdqa {{.*#+}} xmm0 = [0,65535,65535,0,65535,65535,0,65535]3681; SSE-NEXT: movdqa %xmm0, %xmm153682; SSE-NEXT: pandn %xmm12, %xmm153683; SSE-NEXT: pand %xmm0, %xmm133684; SSE-NEXT: por %xmm13, %xmm153685; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm7[1,1,2,2]3686; SSE-NEXT: movdqa {{.*#+}} xmm13 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]3687; SSE-NEXT: movdqa %xmm13, %xmm03688; SSE-NEXT: pandn %xmm12, %xmm03689; SSE-NEXT: pand %xmm13, %xmm153690; SSE-NEXT: por %xmm15, %xmm03691; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3692; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm11[3,3,3,3]3693; SSE-NEXT: movdqa %xmm3, %xmm123694; SSE-NEXT: pandn %xmm11, %xmm123695; SSE-NEXT: pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,5,6,7,7]3696; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm9[2,2,2,3]3697; SSE-NEXT: pand %xmm3, %xmm93698; SSE-NEXT: por %xmm12, %xmm93699; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm10[2,2,3,3]3700; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,0,65535,65535,0]3701; SSE-NEXT: movdqa %xmm0, %xmm113702; SSE-NEXT: pandn %xmm10, %xmm113703; SSE-NEXT: pand %xmm0, %xmm93704; SSE-NEXT: movdqa %xmm0, %xmm103705; SSE-NEXT: por %xmm9, %xmm113706; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[2,2,3,3]3707; SSE-NEXT: movdqa %xmm14, %xmm03708; SSE-NEXT: pandn %xmm7, %xmm03709; SSE-NEXT: pand %xmm14, %xmm113710; SSE-NEXT: por %xmm11, %xmm03711; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3712; SSE-NEXT: punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]3713; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm5[8],xmm1[9],xmm5[9],xmm1[10],xmm5[10],xmm1[11],xmm5[11],xmm1[12],xmm5[12],xmm1[13],xmm5[13],xmm1[14],xmm5[14],xmm1[15],xmm5[15]3714; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm1[1,0,2,2,4,5,6,7]3715; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]3716; SSE-NEXT: movdqa %xmm10, %xmm73717; SSE-NEXT: pandn %xmm5, %xmm73718; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm2[0,0,1,1]3719; SSE-NEXT: pand %xmm10, %xmm53720; SSE-NEXT: por %xmm5, %xmm73721; SSE-NEXT: punpckhbw {{.*#+}} xmm4 = xmm4[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3722; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,0,0]3723; SSE-NEXT: movdqa %xmm3, %xmm83724; SSE-NEXT: pandn %xmm5, %xmm83725; SSE-NEXT: pand %xmm3, %xmm73726; SSE-NEXT: por %xmm7, %xmm83727; SSE-NEXT: punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm6[8],xmm5[9],xmm6[9],xmm5[10],xmm6[10],xmm5[11],xmm6[11],xmm5[12],xmm6[12],xmm5[13],xmm6[13],xmm5[14],xmm6[14],xmm5[15],xmm6[15]3728; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,0,0]3729; SSE-NEXT: movdqa {{.*#+}} xmm0 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]3730; SSE-NEXT: movdqa %xmm0, %xmm73731; SSE-NEXT: pandn %xmm6, %xmm73732; SSE-NEXT: pand %xmm0, %xmm83733; SSE-NEXT: movdqa %xmm0, %xmm153734; SSE-NEXT: por %xmm8, %xmm73735; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3736; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm1[3,3,3,3,4,5,6,7]3737; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]3738; SSE-NEXT: movdqa %xmm3, %xmm73739; SSE-NEXT: pandn %xmm6, %xmm73740; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm2[1,1,2,2]3741; SSE-NEXT: pand %xmm3, %xmm63742; SSE-NEXT: por %xmm6, %xmm73743; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm4[1,1,2,2]3744; SSE-NEXT: movdqa {{.*#+}} xmm0 = [0,65535,65535,0,65535,65535,0,65535]3745; SSE-NEXT: movdqa %xmm0, %xmm83746; SSE-NEXT: pandn %xmm6, %xmm83747; SSE-NEXT: pand %xmm0, %xmm73748; SSE-NEXT: por %xmm7, %xmm83749; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm5[1,1,2,2]3750; SSE-NEXT: movdqa %xmm13, %xmm73751; SSE-NEXT: pandn %xmm6, %xmm73752; SSE-NEXT: pand %xmm13, %xmm83753; SSE-NEXT: por %xmm8, %xmm73754; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3755; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[3,3,3,3]3756; SSE-NEXT: movdqa %xmm3, %xmm63757; SSE-NEXT: pandn %xmm2, %xmm63758; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,6,7,7]3759; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,2,3]3760; SSE-NEXT: pand %xmm3, %xmm13761; SSE-NEXT: por %xmm6, %xmm13762; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[2,2,3,3]3763; SSE-NEXT: movdqa %xmm10, %xmm43764; SSE-NEXT: pandn %xmm2, %xmm43765; SSE-NEXT: pand %xmm10, %xmm13766; SSE-NEXT: por %xmm1, %xmm43767; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[2,2,3,3]3768; SSE-NEXT: movdqa %xmm14, %xmm03769; SSE-NEXT: pandn %xmm1, %xmm03770; SSE-NEXT: pand %xmm14, %xmm43771; SSE-NEXT: por %xmm4, %xmm03772; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3773; SSE-NEXT: movdqa 48(%rdx), %xmm93774; SSE-NEXT: movdqa 48(%rcx), %xmm03775; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3776; SSE-NEXT: movdqa %xmm9, %xmm83777; SSE-NEXT: punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm0[0],xmm8[1],xmm0[1],xmm8[2],xmm0[2],xmm8[3],xmm0[3],xmm8[4],xmm0[4],xmm8[5],xmm0[5],xmm8[6],xmm0[6],xmm8[7],xmm0[7]3778; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm8[1,0,2,2,4,5,6,7]3779; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,1]3780; SSE-NEXT: movdqa %xmm10, %xmm03781; SSE-NEXT: movdqa %xmm10, %xmm43782; SSE-NEXT: pandn %xmm1, %xmm43783; SSE-NEXT: movdqa 48(%rdi), %xmm63784; SSE-NEXT: movdqa 48(%rsi), %xmm103785; SSE-NEXT: movdqa %xmm6, %xmm13786; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm10[0],xmm1[1],xmm10[1],xmm1[2],xmm10[2],xmm1[3],xmm10[3],xmm1[4],xmm10[4],xmm1[5],xmm10[5],xmm1[6],xmm10[6],xmm1[7],xmm10[7]3787; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm1[0,0,1,1]3788; SSE-NEXT: pand %xmm0, %xmm23789; SSE-NEXT: por %xmm2, %xmm43790; SSE-NEXT: movdqa 48(%r8), %xmm73791; SSE-NEXT: movdqa %xmm7, %xmm23792; SSE-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]3793; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm2[0,0,0,0]3794; SSE-NEXT: movdqa %xmm3, %xmm123795; SSE-NEXT: pandn %xmm11, %xmm123796; SSE-NEXT: pand %xmm3, %xmm43797; SSE-NEXT: por %xmm4, %xmm123798; SSE-NEXT: movdqa 48(%r9), %xmm113799; SSE-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm11[0],xmm5[1],xmm11[1],xmm5[2],xmm11[2],xmm5[3],xmm11[3],xmm5[4],xmm11[4],xmm5[5],xmm11[5],xmm5[6],xmm11[6],xmm5[7],xmm11[7]3800; SSE-NEXT: pshufd {{.*#+}} xmm13 = xmm5[0,0,0,0]3801; SSE-NEXT: movdqa %xmm15, %xmm03802; SSE-NEXT: pandn %xmm13, %xmm153803; SSE-NEXT: pand %xmm0, %xmm123804; SSE-NEXT: por %xmm12, %xmm153805; SSE-NEXT: pshuflw {{.*#+}} xmm12 = xmm8[3,3,3,3,4,5,6,7]3806; SSE-NEXT: pshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,4,4,4]3807; SSE-NEXT: movdqa %xmm3, %xmm133808; SSE-NEXT: pandn %xmm12, %xmm133809; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm1[1,1,2,2]3810; SSE-NEXT: pand %xmm3, %xmm123811; SSE-NEXT: por %xmm12, %xmm133812; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm2[1,1,2,2]3813; SSE-NEXT: movdqa {{.*#+}} xmm4 = [0,65535,65535,0,65535,65535,0,65535]3814; SSE-NEXT: movdqa %xmm4, %xmm03815; SSE-NEXT: pandn %xmm12, %xmm03816; SSE-NEXT: pand %xmm4, %xmm133817; SSE-NEXT: por %xmm13, %xmm03818; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm5[1,1,2,2]3819; SSE-NEXT: movdqa {{.*#+}} xmm4 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]3820; SSE-NEXT: movdqa %xmm4, %xmm133821; SSE-NEXT: pandn %xmm12, %xmm133822; SSE-NEXT: pand %xmm4, %xmm03823; SSE-NEXT: por %xmm0, %xmm133824; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]3825; SSE-NEXT: movdqa %xmm3, %xmm13826; SSE-NEXT: pandn %xmm0, %xmm13827; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm8[0,1,2,3,5,6,7,7]3828; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,2,2,3]3829; SSE-NEXT: pand %xmm3, %xmm03830; SSE-NEXT: por %xmm1, %xmm03831; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm2[2,2,3,3]3832; SSE-NEXT: movdqa {{.*#+}} xmm12 = [65535,0,65535,65535,0,65535,65535,0]3833; SSE-NEXT: movdqa %xmm12, %xmm23834; SSE-NEXT: pandn %xmm1, %xmm23835; SSE-NEXT: pand %xmm12, %xmm03836; SSE-NEXT: por %xmm0, %xmm23837; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm5[2,2,3,3]3838; SSE-NEXT: movdqa %xmm14, %xmm83839; SSE-NEXT: pandn %xmm0, %xmm83840; SSE-NEXT: pand %xmm14, %xmm23841; SSE-NEXT: por %xmm2, %xmm83842; SSE-NEXT: punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm10[8],xmm6[9],xmm10[9],xmm6[10],xmm10[10],xmm6[11],xmm10[11],xmm6[12],xmm10[12],xmm6[13],xmm10[13],xmm6[14],xmm10[14],xmm6[15],xmm10[15]3843; SSE-NEXT: punpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload3844; SSE-NEXT: # xmm9 = xmm9[8],mem[8],xmm9[9],mem[9],xmm9[10],mem[10],xmm9[11],mem[11],xmm9[12],mem[12],xmm9[13],mem[13],xmm9[14],mem[14],xmm9[15],mem[15]3845; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm9[1,0,2,2,4,5,6,7]3846; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]3847; SSE-NEXT: movdqa %xmm12, %xmm13848; SSE-NEXT: pandn %xmm0, %xmm13849; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,1,1]3850; SSE-NEXT: pand %xmm12, %xmm03851; SSE-NEXT: por %xmm0, %xmm13852; SSE-NEXT: punpckhbw {{.*#+}} xmm7 = xmm7[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3853; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,0,0,0]3854; SSE-NEXT: movdqa %xmm3, %xmm23855; SSE-NEXT: pandn %xmm0, %xmm23856; SSE-NEXT: pand %xmm3, %xmm13857; SSE-NEXT: por %xmm1, %xmm23858; SSE-NEXT: movdqa {{.*#+}} xmm4 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]3859; SSE-NEXT: pand %xmm4, %xmm23860; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm11[8],xmm1[9],xmm11[9],xmm1[10],xmm11[10],xmm1[11],xmm11[11],xmm1[12],xmm11[12],xmm1[13],xmm11[13],xmm1[14],xmm11[14],xmm1[15],xmm11[15]3861; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,0,0]3862; SSE-NEXT: pandn %xmm0, %xmm43863; SSE-NEXT: por %xmm2, %xmm43864; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm9[3,3,3,3,4,5,6,7]3865; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]3866; SSE-NEXT: movdqa %xmm3, %xmm23867; SSE-NEXT: pandn %xmm0, %xmm23868; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,2,2]3869; SSE-NEXT: pand %xmm3, %xmm03870; SSE-NEXT: por %xmm0, %xmm23871; SSE-NEXT: movdqa {{.*#+}} xmm10 = [0,65535,65535,0,65535,65535,0,65535]3872; SSE-NEXT: pand %xmm10, %xmm23873; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,2,2]3874; SSE-NEXT: pandn %xmm0, %xmm103875; SSE-NEXT: por %xmm2, %xmm103876; SSE-NEXT: movdqa {{.*#+}} xmm2 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]3877; SSE-NEXT: pand %xmm2, %xmm103878; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,2]3879; SSE-NEXT: pandn %xmm0, %xmm23880; SSE-NEXT: por %xmm10, %xmm23881; SSE-NEXT: movdqa %xmm2, %xmm103882; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm6[3,3,3,3]3883; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm9[0,1,2,3,5,6,7,7]3884; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,2,2,3]3885; SSE-NEXT: pand %xmm3, %xmm23886; SSE-NEXT: pandn %xmm0, %xmm33887; SSE-NEXT: por %xmm2, %xmm33888; SSE-NEXT: movdqa %xmm12, %xmm23889; SSE-NEXT: pand %xmm12, %xmm33890; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm7[2,2,3,3]3891; SSE-NEXT: pandn %xmm0, %xmm23892; SSE-NEXT: por %xmm3, %xmm23893; SSE-NEXT: pand %xmm14, %xmm23894; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,2,3,3]3895; SSE-NEXT: pandn %xmm0, %xmm143896; SSE-NEXT: por %xmm2, %xmm143897; SSE-NEXT: movq {{[0-9]+}}(%rsp), %rax3898; SSE-NEXT: movdqa %xmm14, 368(%rax)3899; SSE-NEXT: movdqa %xmm10, 352(%rax)3900; SSE-NEXT: movdqa %xmm4, 336(%rax)3901; SSE-NEXT: movdqa %xmm8, 320(%rax)3902; SSE-NEXT: movdqa %xmm13, 304(%rax)3903; SSE-NEXT: movdqa %xmm15, 288(%rax)3904; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3905; SSE-NEXT: movaps %xmm0, 272(%rax)3906; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3907; SSE-NEXT: movaps %xmm0, 256(%rax)3908; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3909; SSE-NEXT: movaps %xmm0, 240(%rax)3910; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3911; SSE-NEXT: movaps %xmm0, 224(%rax)3912; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3913; SSE-NEXT: movaps %xmm0, 208(%rax)3914; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3915; SSE-NEXT: movaps %xmm0, 192(%rax)3916; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3917; SSE-NEXT: movaps %xmm0, 176(%rax)3918; SSE-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload3919; SSE-NEXT: movaps %xmm0, 160(%rax)3920; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3921; SSE-NEXT: movaps %xmm0, 144(%rax)3922; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3923; SSE-NEXT: movaps %xmm0, 128(%rax)3924; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3925; SSE-NEXT: movaps %xmm0, 112(%rax)3926; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3927; SSE-NEXT: movaps %xmm0, 96(%rax)3928; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3929; SSE-NEXT: movaps %xmm0, 80(%rax)3930; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3931; SSE-NEXT: movaps %xmm0, 64(%rax)3932; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3933; SSE-NEXT: movaps %xmm0, 48(%rax)3934; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3935; SSE-NEXT: movaps %xmm0, 32(%rax)3936; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3937; SSE-NEXT: movaps %xmm0, 16(%rax)3938; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3939; SSE-NEXT: movaps %xmm0, (%rax)3940; SSE-NEXT: addq $184, %rsp3941; SSE-NEXT: retq3942;3943; AVX-LABEL: store_i8_stride6_vf64:3944; AVX: # %bb.0:3945; AVX-NEXT: subq $200, %rsp3946; AVX-NEXT: vmovdqa 48(%rsi), %xmm13947; AVX-NEXT: vmovdqa 48(%rdi), %xmm23948; AVX-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]3949; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[3,3,3,3]3950; AVX-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm2[8],xmm1[8],xmm2[9],xmm1[9],xmm2[10],xmm1[10],xmm2[11],xmm1[11],xmm2[12],xmm1[12],xmm2[13],xmm1[13],xmm2[14],xmm1[14],xmm2[15],xmm1[15]3951; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm1[0,0,1,1]3952; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm23953; AVX-NEXT: vmovaps {{.*#+}} ymm10 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]3954; AVX-NEXT: vandnps %ymm2, %ymm10, %ymm23955; AVX-NEXT: vmovdqa 48(%rcx), %xmm43956; AVX-NEXT: vmovdqa 48(%rdx), %xmm53957; AVX-NEXT: vpunpcklbw {{.*#+}} xmm3 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3],xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]3958; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm3[0,1,2,3,5,6,7,7]3959; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[2,2,2,3]3960; AVX-NEXT: vpunpckhbw {{.*#+}} xmm4 = xmm5[8],xmm4[8],xmm5[9],xmm4[9],xmm5[10],xmm4[10],xmm5[11],xmm4[11],xmm5[12],xmm4[12],xmm5[13],xmm4[13],xmm5[14],xmm4[14],xmm5[15],xmm4[15]3961; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm4[1,0,2,2,4,5,6,7]3962; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]3963; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm6, %ymm53964; AVX-NEXT: vandps %ymm5, %ymm10, %ymm53965; AVX-NEXT: vorps %ymm2, %ymm5, %ymm63966; AVX-NEXT: vextractf128 $1, %ymm6, %xmm53967; AVX-NEXT: vmovdqa 48(%r8), %xmm23968; AVX-NEXT: vpshufb {{.*#+}} xmm7 = zero,zero,zero,zero,xmm2[8,u],zero,zero,zero,zero,xmm2[9,u],zero,zero,zero,zero3969; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1],xmm7[2],xmm5[3,4],xmm7[5],xmm5[6,7]3970; AVX-NEXT: vpshufb {{.*#+}} xmm7 = xmm5[0,1,2,3,4],zero,xmm5[6,7,8,9,10],zero,xmm5[12,13,14,15]3971; AVX-NEXT: vmovdqa 48(%r9), %xmm53972; AVX-NEXT: vpshufb {{.*#+}} xmm8 = zero,zero,zero,zero,zero,xmm5[8],zero,zero,zero,zero,zero,xmm5[9],zero,zero,zero,zero3973; AVX-NEXT: vpor %xmm7, %xmm8, %xmm73974; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3975; AVX-NEXT: vpshufb {{.*#+}} xmm7 = zero,zero,xmm2[5,u],zero,zero,zero,zero,xmm2[6,u],zero,zero,zero,zero,xmm2[7,u]3976; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0],xmm7[1],xmm6[2,3],xmm7[4],xmm6[5,6],xmm7[7]3977; AVX-NEXT: vmovdqa {{.*#+}} xmm8 = [0,1,2,128,4,5,6,7,8,128,10,11,12,13,14,128]3978; AVX-NEXT: vpshufb %xmm8, %xmm6, %xmm63979; AVX-NEXT: vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm5[5],zero,zero,zero,zero,zero,xmm5[6],zero,zero,zero,zero,zero,xmm5[7]3980; AVX-NEXT: vpor %xmm7, %xmm6, %xmm63981; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3982; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm1[1,1,2,2]3983; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[3,3,3,3]3984; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm6, %ymm13985; AVX-NEXT: vandps %ymm1, %ymm10, %ymm13986; AVX-NEXT: vpshuflw {{.*#+}} xmm6 = xmm4[3,3,3,3,4,5,6,7]3987; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]3988; AVX-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,6,7,7]3989; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[2,2,2,3]3990; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm6, %ymm43991; AVX-NEXT: vandnps %ymm4, %ymm10, %ymm43992; AVX-NEXT: vorps %ymm4, %ymm1, %ymm13993; AVX-NEXT: vextractf128 $1, %ymm1, %xmm43994; AVX-NEXT: vmovdqa {{.*#+}} xmm15 = [128,128,13,u,128,128,128,128,14,u,128,128,128,128,15,u]3995; AVX-NEXT: vpshufb %xmm15, %xmm2, %xmm63996; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm6[1],xmm4[2,3],xmm6[4],xmm4[5,6],xmm6[7]3997; AVX-NEXT: vpshufb %xmm8, %xmm4, %xmm43998; AVX-NEXT: vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm5[13],zero,zero,zero,zero,zero,xmm5[14],zero,zero,zero,zero,zero,xmm5[15]3999; AVX-NEXT: vpor %xmm6, %xmm4, %xmm44000; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4001; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm2[10,u],zero,zero,zero,zero,xmm2[11,u],zero,zero,zero,zero,xmm2[12,u],zero,zero4002; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm4[0],xmm1[1,2],xmm4[3],xmm1[4,5],xmm4[6],xmm1[7]4003; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0],zero,xmm1[2,3,4,5,6],zero,xmm1[8,9,10,11,12],zero,xmm1[14,15]4004; AVX-NEXT: vmovdqa {{.*#+}} xmm13 = [128,10,128,128,128,128,128,11,128,128,128,128,128,12,128,128]4005; AVX-NEXT: vpshufb %xmm13, %xmm5, %xmm44006; AVX-NEXT: vpor %xmm4, %xmm1, %xmm14007; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4008; AVX-NEXT: vmovdqa 32(%rsi), %xmm64009; AVX-NEXT: vmovdqa 32(%rdi), %xmm114010; AVX-NEXT: vpunpckhbw {{.*#+}} xmm7 = xmm11[8],xmm6[8],xmm11[9],xmm6[9],xmm11[10],xmm6[10],xmm11[11],xmm6[11],xmm11[12],xmm6[12],xmm11[13],xmm6[13],xmm11[14],xmm6[14],xmm11[15],xmm6[15]4011; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm7[1,1,2,2]4012; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm7[3,3,3,3]4013; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm1, %ymm14014; AVX-NEXT: vmovdqa 32(%rcx), %xmm124015; AVX-NEXT: vmovdqa 32(%rdx), %xmm144016; AVX-NEXT: vpunpckhbw {{.*#+}} xmm4 = xmm14[8],xmm12[8],xmm14[9],xmm12[9],xmm14[10],xmm12[10],xmm14[11],xmm12[11],xmm14[12],xmm12[12],xmm14[13],xmm12[13],xmm14[14],xmm12[14],xmm14[15],xmm12[15]4017; AVX-NEXT: vpshuflw {{.*#+}} xmm8 = xmm4[3,3,3,3,4,5,6,7]4018; AVX-NEXT: vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]4019; AVX-NEXT: vpshufhw {{.*#+}} xmm9 = xmm4[0,1,2,3,5,6,7,7]4020; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm9[2,2,2,3]4021; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm8, %ymm84022; AVX-NEXT: vandps %ymm1, %ymm10, %ymm14023; AVX-NEXT: vandnps %ymm8, %ymm10, %ymm84024; AVX-NEXT: vorps %ymm1, %ymm8, %ymm94025; AVX-NEXT: vmovdqa 32(%r8), %xmm14026; AVX-NEXT: vextractf128 $1, %ymm9, %xmm84027; AVX-NEXT: vpshufb %xmm15, %xmm1, %xmm104028; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0],xmm10[1],xmm8[2,3],xmm10[4],xmm8[5,6],xmm10[7]4029; AVX-NEXT: vpshufb {{.*#+}} xmm10 = xmm8[0,1,2],zero,xmm8[4,5,6,7,8],zero,xmm8[10,11,12,13,14],zero4030; AVX-NEXT: vmovdqa 32(%r9), %xmm84031; AVX-NEXT: vpshufb {{.*#+}} xmm15 = zero,zero,zero,xmm8[13],zero,zero,zero,zero,zero,xmm8[14],zero,zero,zero,zero,zero,xmm8[15]4032; AVX-NEXT: vpor %xmm15, %xmm10, %xmm104033; AVX-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4034; AVX-NEXT: vpshufb {{.*#+}} xmm10 = xmm1[10,u],zero,zero,zero,zero,xmm1[11,u],zero,zero,zero,zero,xmm1[12,u],zero,zero4035; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm10[0],xmm9[1,2],xmm10[3],xmm9[4,5],xmm10[6],xmm9[7]4036; AVX-NEXT: vmovdqa {{.*#+}} xmm15 = [0,128,2,3,4,5,6,128,8,9,10,11,12,128,14,15]4037; AVX-NEXT: vpshufb %xmm15, %xmm9, %xmm94038; AVX-NEXT: vpshufb %xmm13, %xmm8, %xmm104039; AVX-NEXT: vpor %xmm10, %xmm9, %xmm94040; AVX-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4041; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm0[0,0,1,1]4042; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]4043; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm9, %ymm04044; AVX-NEXT: vpshuflw {{.*#+}} xmm9 = xmm3[1,0,2,2,4,5,6,7]4045; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm9[0,1,0,1]4046; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[3,3,3,3,4,5,6,7]4047; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]4048; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm9, %ymm34049; AVX-NEXT: vmovaps {{.*#+}} ymm9 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]4050; AVX-NEXT: vandps %ymm0, %ymm9, %ymm04051; AVX-NEXT: vandnps %ymm3, %ymm9, %ymm34052; AVX-NEXT: vorps %ymm3, %ymm0, %ymm04053; AVX-NEXT: vextractf128 $1, %ymm0, %xmm34054; AVX-NEXT: vpshufb {{.*#+}} xmm9 = xmm2[2,u],zero,zero,zero,zero,xmm2[3,u],zero,zero,zero,zero,xmm2[4,u],zero,zero4055; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm9[0],xmm3[1,2],xmm9[3],xmm3[4,5],xmm9[6],xmm3[7]4056; AVX-NEXT: vpshufb %xmm15, %xmm3, %xmm34057; AVX-NEXT: vmovdqa {{.*#+}} xmm13 = [128,2,128,128,128,128,128,3,128,128,128,128,128,4,128,128]4058; AVX-NEXT: vpshufb %xmm13, %xmm5, %xmm94059; AVX-NEXT: vpor %xmm3, %xmm9, %xmm34060; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4061; AVX-NEXT: vmovdqa {{.*#+}} xmm10 = [128,128,128,128,0,u,128,128,128,128,1,u,128,128,128,128]4062; AVX-NEXT: vpshufb %xmm10, %xmm2, %xmm24063; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm2[2],xmm0[3,4],xmm2[5],xmm0[6,7]4064; AVX-NEXT: vmovdqa {{.*#+}} xmm9 = [0,1,2,3,4,128,6,7,8,9,10,128,12,13,14,15]4065; AVX-NEXT: vpshufb %xmm9, %xmm0, %xmm04066; AVX-NEXT: vmovdqa {{.*#+}} xmm15 = [128,128,128,128,128,0,128,128,128,128,128,1,128,128,128,128]4067; AVX-NEXT: vpshufb %xmm15, %xmm5, %xmm24068; AVX-NEXT: vpor %xmm2, %xmm0, %xmm04069; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4070; AVX-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm11[0],xmm6[0],xmm11[1],xmm6[1],xmm11[2],xmm6[2],xmm11[3],xmm6[3],xmm11[4],xmm6[4],xmm11[5],xmm6[5],xmm11[6],xmm6[6],xmm11[7],xmm6[7]4071; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,0,1,1]4072; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[1,1,2,2]4073; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm24074; AVX-NEXT: vpunpcklbw {{.*#+}} xmm3 = xmm14[0],xmm12[0],xmm14[1],xmm12[1],xmm14[2],xmm12[2],xmm14[3],xmm12[3],xmm14[4],xmm12[4],xmm14[5],xmm12[5],xmm14[6],xmm12[6],xmm14[7],xmm12[7]4075; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm3[1,0,2,2,4,5,6,7]4076; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]4077; AVX-NEXT: vpshuflw {{.*#+}} xmm6 = xmm3[3,3,3,3,4,5,6,7]4078; AVX-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]4079; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm5, %ymm54080; AVX-NEXT: vmovaps {{.*#+}} ymm6 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]4081; AVX-NEXT: vandps %ymm6, %ymm2, %ymm24082; AVX-NEXT: vandnps %ymm5, %ymm6, %ymm54083; AVX-NEXT: vorps %ymm5, %ymm2, %ymm24084; AVX-NEXT: vextractf128 $1, %ymm2, %xmm54085; AVX-NEXT: vpshufb {{.*#+}} xmm6 = xmm1[2,u],zero,zero,zero,zero,xmm1[3,u],zero,zero,zero,zero,xmm1[4,u],zero,zero4086; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm6[0],xmm5[1,2],xmm6[3],xmm5[4,5],xmm6[6],xmm5[7]4087; AVX-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[0],zero,xmm5[2,3,4,5,6],zero,xmm5[8,9,10,11,12],zero,xmm5[14,15]4088; AVX-NEXT: vpshufb %xmm13, %xmm8, %xmm64089; AVX-NEXT: vpor %xmm6, %xmm5, %xmm54090; AVX-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4091; AVX-NEXT: vpshufb %xmm10, %xmm1, %xmm54092; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm5[2],xmm2[3,4],xmm5[5],xmm2[6,7]4093; AVX-NEXT: vpshufb %xmm9, %xmm2, %xmm24094; AVX-NEXT: vpshufb %xmm15, %xmm8, %xmm54095; AVX-NEXT: vpor %xmm5, %xmm2, %xmm24096; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4097; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]4098; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm7[0,0,1,1]4099; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm04100; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm3[0,1,2,3,5,6,7,7]4101; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[2,2,2,3]4102; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm4[1,0,2,2,4,5,6,7]4103; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,0,1]4104; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm24105; AVX-NEXT: vmovaps {{.*#+}} ymm15 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]4106; AVX-NEXT: vandnps %ymm0, %ymm15, %ymm04107; AVX-NEXT: vandps %ymm2, %ymm15, %ymm24108; AVX-NEXT: vorps %ymm0, %ymm2, %ymm04109; AVX-NEXT: vextractf128 $1, %ymm0, %xmm24110; AVX-NEXT: vmovdqa {{.*#+}} xmm5 = [128,128,128,128,8,u,128,128,128,128,9,u,128,128,128,128]4111; AVX-NEXT: vpshufb %xmm5, %xmm1, %xmm34112; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm3[2],xmm2[3,4],xmm3[5],xmm2[6,7]4113; AVX-NEXT: vpshufb %xmm9, %xmm2, %xmm24114; AVX-NEXT: vmovdqa %xmm9, %xmm144115; AVX-NEXT: vmovdqa {{.*#+}} xmm6 = [128,128,128,128,128,8,128,128,128,128,128,9,128,128,128,128]4116; AVX-NEXT: vpshufb %xmm6, %xmm8, %xmm34117; AVX-NEXT: vpor %xmm3, %xmm2, %xmm24118; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4119; AVX-NEXT: vmovdqa {{.*#+}} xmm7 = [128,128,5,u,128,128,128,128,6,u,128,128,128,128,7,u]4120; AVX-NEXT: vpshufb %xmm7, %xmm1, %xmm14121; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5,6],xmm1[7]4122; AVX-NEXT: vmovdqa {{.*#+}} xmm13 = [0,1,2,128,4,5,6,7,8,128,10,11,12,13,14,128]4123; AVX-NEXT: vpshufb %xmm13, %xmm0, %xmm04124; AVX-NEXT: vmovdqa {{.*#+}} xmm9 = [128,128,128,5,128,128,128,128,128,6,128,128,128,128,128,7]4125; AVX-NEXT: vpshufb %xmm9, %xmm8, %xmm14126; AVX-NEXT: vpor %xmm1, %xmm0, %xmm04127; AVX-NEXT: vmovdqa %xmm0, (%rsp) # 16-byte Spill4128; AVX-NEXT: vmovdqa 16(%rsi), %xmm04129; AVX-NEXT: vmovdqa 16(%rdi), %xmm14130; AVX-NEXT: vpunpcklbw {{.*#+}} xmm11 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]4131; AVX-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15]4132; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm11[3,3,3,3]4133; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,0,1,1]4134; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm14135; AVX-NEXT: vmovdqa 16(%rcx), %xmm24136; AVX-NEXT: vmovdqa 16(%rdx), %xmm34137; AVX-NEXT: vpunpcklbw {{.*#+}} xmm10 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]4138; AVX-NEXT: vpunpckhbw {{.*#+}} xmm4 = xmm3[8],xmm2[8],xmm3[9],xmm2[9],xmm3[10],xmm2[10],xmm3[11],xmm2[11],xmm3[12],xmm2[12],xmm3[13],xmm2[13],xmm3[14],xmm2[14],xmm3[15],xmm2[15]4139; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm10[0,1,2,3,5,6,7,7]4140; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[2,2,2,3]4141; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm4[1,0,2,2,4,5,6,7]4142; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,1,0,1]4143; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm24144; AVX-NEXT: vandnps %ymm1, %ymm15, %ymm14145; AVX-NEXT: vandps %ymm2, %ymm15, %ymm24146; AVX-NEXT: vorps %ymm1, %ymm2, %ymm14147; AVX-NEXT: vmovdqa 16(%r8), %xmm34148; AVX-NEXT: vextractf128 $1, %ymm1, %xmm24149; AVX-NEXT: vpshufb %xmm5, %xmm3, %xmm54150; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm5[2],xmm2[3,4],xmm5[5],xmm2[6,7]4151; AVX-NEXT: vpshufb %xmm14, %xmm2, %xmm54152; AVX-NEXT: vmovdqa 16(%r9), %xmm24153; AVX-NEXT: vpshufb %xmm6, %xmm2, %xmm64154; AVX-NEXT: vpor %xmm6, %xmm5, %xmm54155; AVX-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4156; AVX-NEXT: vpshufb %xmm7, %xmm3, %xmm54157; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm5[1],xmm1[2,3],xmm5[4],xmm1[5,6],xmm5[7]4158; AVX-NEXT: vpshufb %xmm13, %xmm1, %xmm14159; AVX-NEXT: vpshufb %xmm9, %xmm2, %xmm54160; AVX-NEXT: vpor %xmm5, %xmm1, %xmm14161; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4162; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,2]4163; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]4164; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm04165; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm4[3,3,3,3,4,5,6,7]4166; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]4167; AVX-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,6,7,7]4168; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[2,2,2,3]4169; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm1, %ymm14170; AVX-NEXT: vandps %ymm0, %ymm15, %ymm04171; AVX-NEXT: vandnps %ymm1, %ymm15, %ymm14172; AVX-NEXT: vorps %ymm1, %ymm0, %ymm04173; AVX-NEXT: vextractf128 $1, %ymm0, %xmm14174; AVX-NEXT: vmovdqa {{.*#+}} xmm14 = [128,128,13,u,128,128,128,128,14,u,128,128,128,128,15,u]4175; AVX-NEXT: vpshufb %xmm14, %xmm3, %xmm44176; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm4[1],xmm1[2,3],xmm4[4],xmm1[5,6],xmm4[7]4177; AVX-NEXT: vpshufb %xmm13, %xmm1, %xmm14178; AVX-NEXT: vmovdqa {{.*#+}} xmm15 = [128,128,128,13,128,128,128,128,128,14,128,128,128,128,128,15]4179; AVX-NEXT: vpshufb %xmm15, %xmm2, %xmm44180; AVX-NEXT: vpor %xmm4, %xmm1, %xmm14181; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4182; AVX-NEXT: vmovdqa {{.*#+}} xmm13 = [10,u,128,128,128,128,11,u,128,128,128,128,12,u,128,128]4183; AVX-NEXT: vpshufb %xmm13, %xmm3, %xmm14184; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2],xmm1[3],xmm0[4,5],xmm1[6],xmm0[7]4185; AVX-NEXT: vmovdqa {{.*#+}} xmm13 = [0,128,2,3,4,5,6,128,8,9,10,11,12,128,14,15]4186; AVX-NEXT: vpshufb %xmm13, %xmm0, %xmm04187; AVX-NEXT: vpshufb {{.*#+}} xmm1 = zero,xmm2[10],zero,zero,zero,zero,zero,xmm2[11],zero,zero,zero,zero,zero,xmm2[12],zero,zero4188; AVX-NEXT: vpor %xmm1, %xmm0, %xmm04189; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4190; AVX-NEXT: vmovdqa (%rsi), %xmm84191; AVX-NEXT: vmovdqa (%rdi), %xmm74192; AVX-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm7[8],xmm8[8],xmm7[9],xmm8[9],xmm7[10],xmm8[10],xmm7[11],xmm8[11],xmm7[12],xmm8[12],xmm7[13],xmm8[13],xmm7[14],xmm8[14],xmm7[15],xmm8[15]4193; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4194; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm1[1,1,2,2]4195; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[3,3,3,3]4196; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm04197; AVX-NEXT: vmovdqa (%rcx), %xmm64198; AVX-NEXT: vmovdqa (%rdx), %xmm54199; AVX-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm5[8],xmm6[8],xmm5[9],xmm6[9],xmm5[10],xmm6[10],xmm5[11],xmm6[11],xmm5[12],xmm6[12],xmm5[13],xmm6[13],xmm5[14],xmm6[14],xmm5[15],xmm6[15]4200; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm9[3,3,3,3,4,5,6,7]4201; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]4202; AVX-NEXT: vpshufhw {{.*#+}} xmm12 = xmm9[0,1,2,3,5,6,7,7]4203; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm12[2,2,2,3]4204; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm1, %ymm14205; AVX-NEXT: vmovaps {{.*#+}} ymm4 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]4206; AVX-NEXT: vandps %ymm4, %ymm0, %ymm04207; AVX-NEXT: vandnps %ymm1, %ymm4, %ymm14208; AVX-NEXT: vorps %ymm1, %ymm0, %ymm124209; AVX-NEXT: vmovdqa (%r8), %xmm14210; AVX-NEXT: vpshufb %xmm14, %xmm1, %xmm04211; AVX-NEXT: vextractf128 $1, %ymm12, %xmm144212; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm14[0],xmm0[1],xmm14[2,3],xmm0[4],xmm14[5,6],xmm0[7]4213; AVX-NEXT: vpshufb {{.*#+}} xmm14 = xmm0[0,1,2],zero,xmm0[4,5,6,7,8],zero,xmm0[10,11,12,13,14],zero4214; AVX-NEXT: vmovdqa (%r9), %xmm04215; AVX-NEXT: vpshufb %xmm15, %xmm0, %xmm154216; AVX-NEXT: vpor %xmm15, %xmm14, %xmm44217; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4218; AVX-NEXT: vpshufb {{.*#+}} xmm15 = xmm1[10,u],zero,zero,zero,zero,xmm1[11,u],zero,zero,zero,zero,xmm1[12,u],zero,zero4219; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm15[0],xmm12[1,2],xmm15[3],xmm12[4,5],xmm15[6],xmm12[7]4220; AVX-NEXT: vmovdqa %xmm13, %xmm44221; AVX-NEXT: vpshufb %xmm13, %xmm12, %xmm124222; AVX-NEXT: vpshufb {{.*#+}} xmm15 = zero,xmm0[10],zero,zero,zero,zero,zero,xmm0[11],zero,zero,zero,zero,zero,xmm0[12],zero,zero4223; AVX-NEXT: vpor %xmm15, %xmm12, %xmm124224; AVX-NEXT: vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4225; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm11[0,0,1,1]4226; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm11[1,1,2,2]4227; AVX-NEXT: vinsertf128 $1, %xmm11, %ymm15, %ymm114228; AVX-NEXT: vpshuflw {{.*#+}} xmm15 = xmm10[1,0,2,2,4,5,6,7]4229; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm15[0,1,0,1]4230; AVX-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[3,3,3,3,4,5,6,7]4231; AVX-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,4,4,4]4232; AVX-NEXT: vinsertf128 $1, %xmm10, %ymm15, %ymm104233; AVX-NEXT: vmovaps {{.*#+}} ymm13 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]4234; AVX-NEXT: vandps %ymm13, %ymm11, %ymm114235; AVX-NEXT: vandnps %ymm10, %ymm13, %ymm104236; AVX-NEXT: vorps %ymm10, %ymm11, %ymm114237; AVX-NEXT: vextractf128 $1, %ymm11, %xmm104238; AVX-NEXT: vmovdqa {{.*#+}} xmm12 = [2,u,128,128,128,128,3,u,128,128,128,128,4,u,128,128]4239; AVX-NEXT: vpshufb %xmm12, %xmm3, %xmm154240; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm15[0],xmm10[1,2],xmm15[3],xmm10[4,5],xmm15[6],xmm10[7]4241; AVX-NEXT: vpshufb %xmm4, %xmm10, %xmm104242; AVX-NEXT: vmovdqa {{.*#+}} xmm14 = [128,2,128,128,128,128,128,3,128,128,128,128,128,4,128,128]4243; AVX-NEXT: vpshufb %xmm14, %xmm2, %xmm154244; AVX-NEXT: vpor %xmm15, %xmm10, %xmm44245; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4246; AVX-NEXT: vmovdqa {{.*#+}} xmm15 = [128,128,128,128,0,u,128,128,128,128,1,u,128,128,128,128]4247; AVX-NEXT: vpshufb %xmm15, %xmm3, %xmm34248; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm11[0,1],xmm3[2],xmm11[3,4],xmm3[5],xmm11[6,7]4249; AVX-NEXT: vmovdqa {{.*#+}} xmm11 = [0,1,2,3,4,128,6,7,8,9,10,128,12,13,14,15]4250; AVX-NEXT: vpshufb %xmm11, %xmm3, %xmm34251; AVX-NEXT: vmovdqa {{.*#+}} xmm10 = [128,128,128,128,128,0,128,128,128,128,128,1,128,128,128,128]4252; AVX-NEXT: vpshufb %xmm10, %xmm2, %xmm24253; AVX-NEXT: vpor %xmm2, %xmm3, %xmm24254; AVX-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3],xmm7[4],xmm8[4],xmm7[5],xmm8[5],xmm7[6],xmm8[6],xmm7[7],xmm8[7]4255; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm7[0,0,1,1]4256; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm7[1,1,2,2]4257; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm3, %ymm34258; AVX-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3],xmm5[4],xmm6[4],xmm5[5],xmm6[5],xmm5[6],xmm6[6],xmm5[7],xmm6[7]4259; AVX-NEXT: vpshuflw {{.*#+}} xmm6 = xmm4[1,0,2,2,4,5,6,7]4260; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[0,1,0,1]4261; AVX-NEXT: vpshuflw {{.*#+}} xmm8 = xmm4[3,3,3,3,4,5,6,7]4262; AVX-NEXT: vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]4263; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm6, %ymm64264; AVX-NEXT: vandps %ymm3, %ymm13, %ymm34265; AVX-NEXT: vandnps %ymm6, %ymm13, %ymm64266; AVX-NEXT: vorps %ymm6, %ymm3, %ymm64267; AVX-NEXT: vpshufb %xmm12, %xmm1, %xmm34268; AVX-NEXT: vextractf128 $1, %ymm6, %xmm84269; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm8[1,2],xmm3[3],xmm8[4,5],xmm3[6],xmm8[7]4270; AVX-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[0],zero,xmm3[2,3,4,5,6],zero,xmm3[8,9,10,11,12],zero,xmm3[14,15]4271; AVX-NEXT: vpshufb %xmm14, %xmm0, %xmm84272; AVX-NEXT: vpor %xmm3, %xmm8, %xmm34273; AVX-NEXT: vpshufb %xmm15, %xmm1, %xmm84274; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1],xmm8[2],xmm6[3,4],xmm8[5],xmm6[6,7]4275; AVX-NEXT: vpshufb %xmm11, %xmm6, %xmm64276; AVX-NEXT: vpshufb %xmm10, %xmm0, %xmm84277; AVX-NEXT: vpor %xmm6, %xmm8, %xmm64278; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[3,3,3,3]4279; AVX-NEXT: vpermilps $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload4280; AVX-NEXT: # xmm8 = mem[0,0,1,1]4281; AVX-NEXT: vinsertf128 $1, %xmm8, %ymm7, %ymm74282; AVX-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,6,7,7]4283; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[2,2,2,3]4284; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm9[1,0,2,2,4,5,6,7]4285; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]4286; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm4, %ymm44287; AVX-NEXT: vmovaps {{.*#+}} ymm8 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]4288; AVX-NEXT: vandnps %ymm7, %ymm8, %ymm54289; AVX-NEXT: vandps %ymm4, %ymm8, %ymm44290; AVX-NEXT: vorps %ymm5, %ymm4, %ymm44291; AVX-NEXT: vpshufb {{.*#+}} xmm5 = zero,zero,zero,zero,xmm1[8,u],zero,zero,zero,zero,xmm1[9,u],zero,zero,zero,zero4292; AVX-NEXT: vextractf128 $1, %ymm4, %xmm74293; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm7[0,1],xmm5[2],xmm7[3,4],xmm5[5],xmm7[6,7]4294; AVX-NEXT: vpshufb %xmm11, %xmm5, %xmm54295; AVX-NEXT: vpshufb {{.*#+}} xmm7 = zero,zero,zero,zero,zero,xmm0[8],zero,zero,zero,zero,zero,xmm0[9],zero,zero,zero,zero4296; AVX-NEXT: vpor %xmm7, %xmm5, %xmm54297; AVX-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,xmm1[5,u],zero,zero,zero,zero,xmm1[6,u],zero,zero,zero,zero,xmm1[7,u]4298; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm4[0],xmm1[1],xmm4[2,3],xmm1[4],xmm4[5,6],xmm1[7]4299; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,2],zero,xmm1[4,5,6,7,8],zero,xmm1[10,11,12,13,14],zero4300; AVX-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,zero,xmm0[5],zero,zero,zero,zero,zero,xmm0[6],zero,zero,zero,zero,zero,xmm0[7]4301; AVX-NEXT: vpor %xmm0, %xmm1, %xmm04302; AVX-NEXT: movq {{[0-9]+}}(%rsp), %rax4303; AVX-NEXT: vmovdqa %xmm0, 32(%rax)4304; AVX-NEXT: vmovdqa %xmm5, 48(%rax)4305; AVX-NEXT: vmovdqa %xmm6, (%rax)4306; AVX-NEXT: vmovdqa %xmm3, 16(%rax)4307; AVX-NEXT: vmovdqa %xmm2, 96(%rax)4308; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4309; AVX-NEXT: vmovaps %xmm0, 112(%rax)4310; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4311; AVX-NEXT: vmovaps %xmm0, 64(%rax)4312; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4313; AVX-NEXT: vmovaps %xmm0, 80(%rax)4314; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4315; AVX-NEXT: vmovaps %xmm0, 160(%rax)4316; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4317; AVX-NEXT: vmovaps %xmm0, 176(%rax)4318; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4319; AVX-NEXT: vmovaps %xmm0, 128(%rax)4320; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4321; AVX-NEXT: vmovaps %xmm0, 144(%rax)4322; AVX-NEXT: vmovaps (%rsp), %xmm0 # 16-byte Reload4323; AVX-NEXT: vmovaps %xmm0, 224(%rax)4324; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4325; AVX-NEXT: vmovaps %xmm0, 240(%rax)4326; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4327; AVX-NEXT: vmovaps %xmm0, 192(%rax)4328; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4329; AVX-NEXT: vmovaps %xmm0, 208(%rax)4330; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4331; AVX-NEXT: vmovaps %xmm0, 288(%rax)4332; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4333; AVX-NEXT: vmovaps %xmm0, 304(%rax)4334; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4335; AVX-NEXT: vmovaps %xmm0, 256(%rax)4336; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4337; AVX-NEXT: vmovaps %xmm0, 272(%rax)4338; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4339; AVX-NEXT: vmovaps %xmm0, 352(%rax)4340; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4341; AVX-NEXT: vmovaps %xmm0, 368(%rax)4342; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4343; AVX-NEXT: vmovaps %xmm0, 320(%rax)4344; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4345; AVX-NEXT: vmovaps %xmm0, 336(%rax)4346; AVX-NEXT: addq $200, %rsp4347; AVX-NEXT: vzeroupper4348; AVX-NEXT: retq4349;4350; AVX2-LABEL: store_i8_stride6_vf64:4351; AVX2: # %bb.0:4352; AVX2-NEXT: subq $664, %rsp # imm = 0x2984353; AVX2-NEXT: vmovdqa 32(%rdx), %ymm64354; AVX2-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4355; AVX2-NEXT: vmovdqa 32(%rcx), %ymm74356; AVX2-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4357; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm0 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]4358; AVX2-NEXT: vmovdqa (%rcx), %xmm84359; AVX2-NEXT: vmovdqa 32(%rcx), %xmm54360; AVX2-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4361; AVX2-NEXT: vpshufb %xmm0, %xmm8, %xmm14362; AVX2-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4363; AVX2-NEXT: vmovdqa (%rdx), %xmm114364; AVX2-NEXT: vmovdqa 32(%rdx), %xmm94365; AVX2-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4366; AVX2-NEXT: vpshufb %xmm0, %xmm11, %xmm24367; AVX2-NEXT: vmovdqa %xmm11, (%rsp) # 16-byte Spill4368; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]4369; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4370; AVX2-NEXT: vmovdqa (%rsi), %xmm154371; AVX2-NEXT: vmovdqa 32(%rsi), %xmm144372; AVX2-NEXT: vpbroadcastq {{.*#+}} xmm3 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]4373; AVX2-NEXT: vpshufb %xmm3, %xmm15, %xmm24374; AVX2-NEXT: vmovdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4375; AVX2-NEXT: vmovdqa (%rdi), %xmm104376; AVX2-NEXT: vmovdqa 32(%rdi), %xmm134377; AVX2-NEXT: vpshufb %xmm3, %xmm10, %xmm44378; AVX2-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4379; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm2 = xmm4[8],xmm2[8],xmm4[9],xmm2[9],xmm4[10],xmm2[10],xmm4[11],xmm2[11],xmm4[12],xmm2[12],xmm4[13],xmm2[13],xmm4[14],xmm2[14],xmm4[15],xmm2[15]4380; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,0,0,1]4381; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535]4382; AVX2-NEXT: vpblendvb %ymm2, %ymm1, %ymm4, %ymm14383; AVX2-NEXT: vpshufb %xmm0, %xmm5, %xmm44384; AVX2-NEXT: vpshufb %xmm0, %xmm9, %xmm54385; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3],xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]4386; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]4387; AVX2-NEXT: vpshufb %xmm3, %xmm14, %xmm54388; AVX2-NEXT: vmovdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4389; AVX2-NEXT: vpshufb %xmm3, %xmm13, %xmm34390; AVX2-NEXT: vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4391; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm3[8],xmm5[8],xmm3[9],xmm5[9],xmm3[10],xmm5[10],xmm3[11],xmm5[11],xmm3[12],xmm5[12],xmm3[13],xmm5[13],xmm3[14],xmm5[14],xmm3[15],xmm5[15]4392; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]4393; AVX2-NEXT: vpblendvb %ymm2, %ymm4, %ymm3, %ymm34394; AVX2-NEXT: vpshufb %ymm0, %ymm7, %ymm44395; AVX2-NEXT: vpshufb %ymm0, %ymm6, %ymm54396; AVX2-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm5[0],ymm4[0],ymm5[1],ymm4[1],ymm5[2],ymm4[2],ymm5[3],ymm4[3],ymm5[4],ymm4[4],ymm5[5],ymm4[5],ymm5[6],ymm4[6],ymm5[7],ymm4[7],ymm5[16],ymm4[16],ymm5[17],ymm4[17],ymm5[18],ymm4[18],ymm5[19],ymm4[19],ymm5[20],ymm4[20],ymm5[21],ymm4[21],ymm5[22],ymm4[22],ymm5[23],ymm4[23]4397; AVX2-NEXT: vmovdqa 32(%rdi), %ymm74398; AVX2-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4399; AVX2-NEXT: vmovdqa 32(%rsi), %ymm64400; AVX2-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4401; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm5 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]4402; AVX2-NEXT: vpshufb %ymm5, %ymm6, %ymm64403; AVX2-NEXT: vpshufb %ymm5, %ymm7, %ymm74404; AVX2-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm7[0],ymm6[0],ymm7[1],ymm6[1],ymm7[2],ymm6[2],ymm7[3],ymm6[3],ymm7[4],ymm6[4],ymm7[5],ymm6[5],ymm7[6],ymm6[6],ymm7[7],ymm6[7],ymm7[16],ymm6[16],ymm7[17],ymm6[17],ymm7[18],ymm6[18],ymm7[19],ymm6[19],ymm7[20],ymm6[20],ymm7[21],ymm6[21],ymm7[22],ymm6[22],ymm7[23],ymm6[23]4405; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]4406; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]4407; AVX2-NEXT: vpblendvb %ymm2, %ymm4, %ymm6, %ymm44408; AVX2-NEXT: vmovdqa (%rdx), %ymm74409; AVX2-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4410; AVX2-NEXT: vmovdqa (%rcx), %ymm64411; AVX2-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4412; AVX2-NEXT: vpshufb %ymm0, %ymm6, %ymm64413; AVX2-NEXT: vpshufb %ymm0, %ymm7, %ymm04414; AVX2-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm6[0],ymm0[1],ymm6[1],ymm0[2],ymm6[2],ymm0[3],ymm6[3],ymm0[4],ymm6[4],ymm0[5],ymm6[5],ymm0[6],ymm6[6],ymm0[7],ymm6[7],ymm0[16],ymm6[16],ymm0[17],ymm6[17],ymm0[18],ymm6[18],ymm0[19],ymm6[19],ymm0[20],ymm6[20],ymm0[21],ymm6[21],ymm0[22],ymm6[22],ymm0[23],ymm6[23]4415; AVX2-NEXT: vmovdqa (%rdi), %ymm74416; AVX2-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4417; AVX2-NEXT: vmovdqa (%rsi), %ymm124418; AVX2-NEXT: vpshufb %ymm5, %ymm12, %ymm64419; AVX2-NEXT: vpshufb %ymm5, %ymm7, %ymm54420; AVX2-NEXT: vpunpcklbw {{.*#+}} ymm5 = ymm5[0],ymm6[0],ymm5[1],ymm6[1],ymm5[2],ymm6[2],ymm5[3],ymm6[3],ymm5[4],ymm6[4],ymm5[5],ymm6[5],ymm5[6],ymm6[6],ymm5[7],ymm6[7],ymm5[16],ymm6[16],ymm5[17],ymm6[17],ymm5[18],ymm6[18],ymm5[19],ymm6[19],ymm5[20],ymm6[20],ymm5[21],ymm6[21],ymm5[22],ymm6[22],ymm5[23],ymm6[23]4421; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]4422; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]4423; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm5, %ymm04424; AVX2-NEXT: vmovdqa (%r8), %xmm74425; AVX2-NEXT: vpmovsxbw {{.*#+}} xmm2 = [6,5,8,7,9,9,9,9]4426; AVX2-NEXT: vpshufb %xmm2, %xmm7, %xmm54427; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]4428; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]4429; AVX2-NEXT: vpblendvb %ymm6, %ymm1, %ymm5, %ymm14430; AVX2-NEXT: vmovdqa 32(%r8), %xmm54431; AVX2-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4432; AVX2-NEXT: vpshufb %xmm2, %xmm5, %xmm24433; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]4434; AVX2-NEXT: vpblendvb %ymm6, %ymm3, %ymm2, %ymm24435; AVX2-NEXT: vmovdqa 32(%r8), %ymm54436; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4437; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0]4438; AVX2-NEXT: # ymm3 = mem[0,1,0,1]4439; AVX2-NEXT: vpshufb %ymm3, %ymm5, %ymm54440; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]4441; AVX2-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm44442; AVX2-NEXT: vmovdqa (%r8), %ymm54443; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4444; AVX2-NEXT: vpshufb %ymm3, %ymm5, %ymm34445; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]4446; AVX2-NEXT: vpblendvb %ymm6, %ymm0, %ymm3, %ymm04447; AVX2-NEXT: vmovdqa (%r9), %xmm54448; AVX2-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4449; AVX2-NEXT: vmovdqa {{.*#+}} xmm3 = [u,6,u,5,u,8,u,7,u,9,u,9,u,9,u,9]4450; AVX2-NEXT: vpshufb %xmm3, %xmm5, %xmm54451; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]4452; AVX2-NEXT: vmovdqa {{.*#+}} ymm6 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]4453; AVX2-NEXT: vpblendvb %ymm6, %ymm1, %ymm5, %ymm14454; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4455; AVX2-NEXT: vmovdqa 32(%r9), %xmm94456; AVX2-NEXT: vpshufb %xmm3, %xmm9, %xmm14457; AVX2-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4458; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4459; AVX2-NEXT: vpblendvb %ymm6, %ymm2, %ymm1, %ymm14460; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4461; AVX2-NEXT: vmovdqa 32(%r9), %ymm24462; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4463; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0]4464; AVX2-NEXT: # ymm1 = mem[0,1,0,1]4465; AVX2-NEXT: vpshufb %ymm1, %ymm2, %ymm24466; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]4467; AVX2-NEXT: vpblendvb %ymm6, %ymm4, %ymm2, %ymm24468; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4469; AVX2-NEXT: vmovdqa (%r9), %ymm24470; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4471; AVX2-NEXT: vpshufb %ymm1, %ymm2, %ymm14472; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]4473; AVX2-NEXT: vpblendvb %ymm6, %ymm0, %ymm1, %ymm04474; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4475; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm10[0],xmm15[0],xmm10[1],xmm15[1],xmm10[2],xmm15[2],xmm10[3],xmm15[3],xmm10[4],xmm15[4],xmm10[5],xmm15[5],xmm10[6],xmm15[6],xmm10[7],xmm15[7]4476; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,3,2,1,4,5,6,7]4477; AVX2-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,5]4478; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm0[0,0,0,1]4479; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm11[0],xmm8[0],xmm11[1],xmm8[1],xmm11[2],xmm8[2],xmm11[3],xmm8[3],xmm11[4],xmm8[4],xmm11[5],xmm8[5],xmm11[6],xmm8[6],xmm11[7],xmm8[7]4480; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[1,0,3,2,4,5,6,7]4481; AVX2-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]4482; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm0[0,0,0,1]4483; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm0 = [65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535]4484; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm114485; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm1 = xmm13[0],xmm14[0],xmm13[1],xmm14[1],xmm13[2],xmm14[2],xmm13[3],xmm14[3],xmm13[4],xmm14[4],xmm13[5],xmm14[5],xmm13[6],xmm14[6],xmm13[7],xmm14[7]4486; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]4487; AVX2-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,5]4488; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4489; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4490; AVX2-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload4491; AVX2-NEXT: # xmm2 = xmm2[0],mem[0],xmm2[1],mem[1],xmm2[2],mem[2],xmm2[3],mem[3],xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]4492; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[1,0,3,2,4,5,6,7]4493; AVX2-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,4,4]4494; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]4495; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm64496; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload4497; AVX2-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload4498; AVX2-NEXT: # ymm1 = ymm1[0],mem[0],ymm1[1],mem[1],ymm1[2],mem[2],ymm1[3],mem[3],ymm1[4],mem[4],ymm1[5],mem[5],ymm1[6],mem[6],ymm1[7],mem[7],ymm1[16],mem[16],ymm1[17],mem[17],ymm1[18],mem[18],ymm1[19],mem[19],ymm1[20],mem[20],ymm1[21],mem[21],ymm1[22],mem[22],ymm1[23],mem[23]4499; AVX2-NEXT: vpshuflw {{.*#+}} ymm1 = ymm1[0,3,2,1,4,5,6,7,8,11,10,9,12,13,14,15]4500; AVX2-NEXT: vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6,5,8,9,10,11,12,13,14,13]4501; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]4502; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Reload4503; AVX2-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm2 # 32-byte Folded Reload4504; AVX2-NEXT: # ymm2 = ymm15[0],mem[0],ymm15[1],mem[1],ymm15[2],mem[2],ymm15[3],mem[3],ymm15[4],mem[4],ymm15[5],mem[5],ymm15[6],mem[6],ymm15[7],mem[7],ymm15[16],mem[16],ymm15[17],mem[17],ymm15[18],mem[18],ymm15[19],mem[19],ymm15[20],mem[20],ymm15[21],mem[21],ymm15[22],mem[22],ymm15[23],mem[23]4505; AVX2-NEXT: vpshuflw {{.*#+}} ymm2 = ymm2[1,0,3,2,4,5,6,7,9,8,11,10,12,13,14,15]4506; AVX2-NEXT: vpshufhw {{.*#+}} ymm2 = ymm2[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]4507; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]4508; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm14509; AVX2-NEXT: vmovdqa %ymm12, %ymm134510; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload4511; AVX2-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm12[0],ymm13[0],ymm12[1],ymm13[1],ymm12[2],ymm13[2],ymm12[3],ymm13[3],ymm12[4],ymm13[4],ymm12[5],ymm13[5],ymm12[6],ymm13[6],ymm12[7],ymm13[7],ymm12[16],ymm13[16],ymm12[17],ymm13[17],ymm12[18],ymm13[18],ymm12[19],ymm13[19],ymm12[20],ymm13[20],ymm12[21],ymm13[21],ymm12[22],ymm13[22],ymm12[23],ymm13[23]4512; AVX2-NEXT: vpshuflw {{.*#+}} ymm2 = ymm2[0,3,2,1,4,5,6,7,8,11,10,9,12,13,14,15]4513; AVX2-NEXT: vpshufhw {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5,6,5,8,9,10,11,12,13,14,13]4514; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]4515; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload4516; AVX2-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm3 # 32-byte Folded Reload4517; AVX2-NEXT: # ymm3 = ymm3[0],mem[0],ymm3[1],mem[1],ymm3[2],mem[2],ymm3[3],mem[3],ymm3[4],mem[4],ymm3[5],mem[5],ymm3[6],mem[6],ymm3[7],mem[7],ymm3[16],mem[16],ymm3[17],mem[17],ymm3[18],mem[18],ymm3[19],mem[19],ymm3[20],mem[20],ymm3[21],mem[21],ymm3[22],mem[22],ymm3[23],mem[23]4518; AVX2-NEXT: vpshuflw {{.*#+}} ymm3 = ymm3[1,0,3,2,4,5,6,7,9,8,11,10,12,13,14,15]4519; AVX2-NEXT: vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]4520; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]4521; AVX2-NEXT: vpblendvb %ymm0, %ymm2, %ymm3, %ymm04522; AVX2-NEXT: vpmovsxbw {{.*#+}} xmm2 = [2,1,0,3,4,4,4,4]4523; AVX2-NEXT: vmovdqa %xmm7, %xmm144524; AVX2-NEXT: vpshufb %xmm2, %xmm7, %xmm34525; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]4526; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm4 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]4527; AVX2-NEXT: vpblendvb %ymm4, %ymm11, %ymm3, %ymm34528; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload4529; AVX2-NEXT: vpshufb %xmm2, %xmm7, %xmm24530; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]4531; AVX2-NEXT: vpblendvb %ymm4, %ymm6, %ymm2, %ymm24532; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm6 = [2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0]4533; AVX2-NEXT: # ymm6 = mem[0,1,0,1]4534; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload4535; AVX2-NEXT: vpshufb %ymm6, %ymm5, %ymm114536; AVX2-NEXT: vpermq {{.*#+}} ymm11 = ymm11[2,2,2,3]4537; AVX2-NEXT: vpblendvb %ymm4, %ymm1, %ymm11, %ymm14538; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload4539; AVX2-NEXT: vpshufb %ymm6, %ymm8, %ymm64540; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]4541; AVX2-NEXT: vpblendvb %ymm4, %ymm0, %ymm6, %ymm54542; AVX2-NEXT: vmovdqa {{.*#+}} xmm4 = [u,2,u,1,u,0,u,3,u,4,u,4,u,4,u,4]4543; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload4544; AVX2-NEXT: vpshufb %xmm4, %xmm11, %xmm64545; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,0,1]4546; AVX2-NEXT: vmovdqa {{.*#+}} ymm0 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]4547; AVX2-NEXT: vpblendvb %ymm0, %ymm3, %ymm6, %ymm34548; AVX2-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4549; AVX2-NEXT: vpshufb %xmm4, %xmm9, %xmm34550; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]4551; AVX2-NEXT: vpblendvb %ymm0, %ymm2, %ymm3, %ymm24552; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4553; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0]4554; AVX2-NEXT: # ymm2 = mem[0,1,0,1]4555; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload4556; AVX2-NEXT: vpshufb %ymm2, %ymm9, %ymm34557; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]4558; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm3, %ymm14559; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4560; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload4561; AVX2-NEXT: vpshufb %ymm2, %ymm10, %ymm14562; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]4563; AVX2-NEXT: vpblendvb %ymm0, %ymm5, %ymm1, %ymm04564; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4565; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4566; AVX2-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload4567; AVX2-NEXT: # xmm0 = xmm0[8],mem[8],xmm0[9],mem[9],xmm0[10],mem[10],xmm0[11],mem[11],xmm0[12],mem[12],xmm0[13],mem[13],xmm0[14],mem[14],xmm0[15],mem[15]4568; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4569; AVX2-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload4570; AVX2-NEXT: # xmm1 = xmm1[8],mem[8],xmm1[9],mem[9],xmm1[10],mem[10],xmm1[11],mem[11],xmm1[12],mem[12],xmm1[13],mem[13],xmm1[14],mem[14],xmm1[15],mem[15]4571; AVX2-NEXT: vmovdqa {{.*#+}} xmm5 = [8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]4572; AVX2-NEXT: vpshufb %xmm5, %xmm0, %xmm04573; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm0[0,0,0,1]4574; AVX2-NEXT: vmovdqa {{.*#+}} xmm3 = [10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]4575; AVX2-NEXT: vpshufb %xmm3, %xmm1, %xmm14576; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm1[0,0,0,1]4577; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm1 = [0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0]4578; AVX2-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm64579; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4580; AVX2-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload4581; AVX2-NEXT: # xmm0 = xmm0[8],mem[8],xmm0[9],mem[9],xmm0[10],mem[10],xmm0[11],mem[11],xmm0[12],mem[12],xmm0[13],mem[13],xmm0[14],mem[14],xmm0[15],mem[15]4582; AVX2-NEXT: vpshufb %xmm5, %xmm0, %xmm04583; AVX2-NEXT: vmovdqa (%rsp), %xmm2 # 16-byte Reload4584; AVX2-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm5 # 16-byte Folded Reload4585; AVX2-NEXT: # xmm5 = xmm2[8],mem[8],xmm2[9],mem[9],xmm2[10],mem[10],xmm2[11],mem[11],xmm2[12],mem[12],xmm2[13],mem[13],xmm2[14],mem[14],xmm2[15],mem[15]4586; AVX2-NEXT: vpshufb %xmm3, %xmm5, %xmm34587; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]4588; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]4589; AVX2-NEXT: vpblendvb %ymm1, %ymm0, %ymm3, %ymm44590; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4591; AVX2-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm3 # 32-byte Folded Reload4592; AVX2-NEXT: # ymm3 = ymm0[8],mem[8],ymm0[9],mem[9],ymm0[10],mem[10],ymm0[11],mem[11],ymm0[12],mem[12],ymm0[13],mem[13],ymm0[14],mem[14],ymm0[15],mem[15],ymm0[24],mem[24],ymm0[25],mem[25],ymm0[26],mem[26],ymm0[27],mem[27],ymm0[28],mem[28],ymm0[29],mem[29],ymm0[30],mem[30],ymm0[31],mem[31]4593; AVX2-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm5 # 32-byte Folded Reload4594; AVX2-NEXT: # ymm5 = ymm15[8],mem[8],ymm15[9],mem[9],ymm15[10],mem[10],ymm15[11],mem[11],ymm15[12],mem[12],ymm15[13],mem[13],ymm15[14],mem[14],ymm15[15],mem[15],ymm15[24],mem[24],ymm15[25],mem[25],ymm15[26],mem[26],ymm15[27],mem[27],ymm15[28],mem[28],ymm15[29],mem[29],ymm15[30],mem[30],ymm15[31],mem[31]4595; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]4596; AVX2-NEXT: # ymm0 = mem[0,1,0,1]4597; AVX2-NEXT: vpshufb %ymm0, %ymm3, %ymm34598; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]4599; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]4600; AVX2-NEXT: # ymm2 = mem[0,1,0,1]4601; AVX2-NEXT: vpshufb %ymm2, %ymm5, %ymm54602; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]4603; AVX2-NEXT: vpblendvb %ymm1, %ymm3, %ymm5, %ymm34604; AVX2-NEXT: vpunpckhbw {{.*#+}} ymm5 = ymm12[8],ymm13[8],ymm12[9],ymm13[9],ymm12[10],ymm13[10],ymm12[11],ymm13[11],ymm12[12],ymm13[12],ymm12[13],ymm13[13],ymm12[14],ymm13[14],ymm12[15],ymm13[15],ymm12[24],ymm13[24],ymm12[25],ymm13[25],ymm12[26],ymm13[26],ymm12[27],ymm13[27],ymm12[28],ymm13[28],ymm12[29],ymm13[29],ymm12[30],ymm13[30],ymm12[31],ymm13[31]4605; AVX2-NEXT: vpshufb %ymm0, %ymm5, %ymm04606; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload4607; AVX2-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm5, %ymm5 # 32-byte Folded Reload4608; AVX2-NEXT: # ymm5 = ymm5[8],mem[8],ymm5[9],mem[9],ymm5[10],mem[10],ymm5[11],mem[11],ymm5[12],mem[12],ymm5[13],mem[13],ymm5[14],mem[14],ymm5[15],mem[15],ymm5[24],mem[24],ymm5[25],mem[25],ymm5[26],mem[26],ymm5[27],mem[27],ymm5[28],mem[28],ymm5[29],mem[29],ymm5[30],mem[30],ymm5[31],mem[31]4609; AVX2-NEXT: vpshufb %ymm2, %ymm5, %ymm24610; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]4611; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]4612; AVX2-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm04613; AVX2-NEXT: vpmovsxbw {{.*#+}} xmm1 = [10,13,12,11,14,13,14,15]4614; AVX2-NEXT: vpshufb %xmm1, %xmm7, %xmm24615; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]4616; AVX2-NEXT: vpmovsxbw {{.*#+}} ymm5 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]4617; AVX2-NEXT: vpblendvb %ymm5, %ymm6, %ymm2, %ymm24618; AVX2-NEXT: vpshufb %xmm1, %xmm14, %xmm14619; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4620; AVX2-NEXT: vpblendvb %ymm5, %ymm4, %ymm1, %ymm14621; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0]4622; AVX2-NEXT: # ymm4 = mem[0,1,0,1]4623; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload4624; AVX2-NEXT: vpshufb %ymm4, %ymm6, %ymm64625; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]4626; AVX2-NEXT: vpblendvb %ymm5, %ymm3, %ymm6, %ymm34627; AVX2-NEXT: vpshufb %ymm4, %ymm8, %ymm44628; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]4629; AVX2-NEXT: vpblendvb %ymm5, %ymm0, %ymm4, %ymm04630; AVX2-NEXT: vmovdqa {{.*#+}} xmm4 = [u,10,u,13,u,12,u,11,u,14,u,13,u,14,u,15]4631; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload4632; AVX2-NEXT: vpshufb %xmm4, %xmm5, %xmm54633; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]4634; AVX2-NEXT: vmovdqa {{.*#+}} ymm6 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]4635; AVX2-NEXT: vpblendvb %ymm6, %ymm2, %ymm5, %ymm24636; AVX2-NEXT: vpshufb %xmm4, %xmm11, %xmm44637; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]4638; AVX2-NEXT: vpblendvb %ymm6, %ymm1, %ymm4, %ymm14639; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15]4640; AVX2-NEXT: # ymm4 = mem[0,1,0,1]4641; AVX2-NEXT: vpshufb %ymm4, %ymm9, %ymm54642; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]4643; AVX2-NEXT: vpblendvb %ymm6, %ymm3, %ymm5, %ymm34644; AVX2-NEXT: vpshufb %ymm4, %ymm10, %ymm44645; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]4646; AVX2-NEXT: vpblendvb %ymm6, %ymm0, %ymm4, %ymm04647; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax4648; AVX2-NEXT: vmovdqa %ymm0, 160(%rax)4649; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4650; AVX2-NEXT: vmovaps %ymm0, 128(%rax)4651; AVX2-NEXT: vmovdqa %ymm3, 352(%rax)4652; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4653; AVX2-NEXT: vmovaps %ymm0, 320(%rax)4654; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4655; AVX2-NEXT: vmovaps %ymm0, 96(%rax)4656; AVX2-NEXT: vmovdqa %ymm1, 64(%rax)4657; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4658; AVX2-NEXT: vmovaps %ymm0, 224(%rax)4659; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4660; AVX2-NEXT: vmovaps %ymm0, 288(%rax)4661; AVX2-NEXT: vmovdqa %ymm2, 256(%rax)4662; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4663; AVX2-NEXT: vmovaps %ymm0, 32(%rax)4664; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4665; AVX2-NEXT: vmovaps %ymm0, 192(%rax)4666; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4667; AVX2-NEXT: vmovaps %ymm0, (%rax)4668; AVX2-NEXT: addq $664, %rsp # imm = 0x2984669; AVX2-NEXT: vzeroupper4670; AVX2-NEXT: retq4671;4672; AVX2-FP-LABEL: store_i8_stride6_vf64:4673; AVX2-FP: # %bb.0:4674; AVX2-FP-NEXT: subq $664, %rsp # imm = 0x2984675; AVX2-FP-NEXT: vmovdqa 32(%rdx), %ymm64676; AVX2-FP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4677; AVX2-FP-NEXT: vmovdqa 32(%rcx), %ymm74678; AVX2-FP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4679; AVX2-FP-NEXT: vpbroadcastq {{.*#+}} ymm0 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]4680; AVX2-FP-NEXT: vmovdqa (%rcx), %xmm14681; AVX2-FP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4682; AVX2-FP-NEXT: vmovdqa 32(%rcx), %xmm144683; AVX2-FP-NEXT: vpshufb %xmm0, %xmm1, %xmm14684; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm24685; AVX2-FP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4686; AVX2-FP-NEXT: vmovdqa 32(%rdx), %xmm84687; AVX2-FP-NEXT: vpshufb %xmm0, %xmm2, %xmm24688; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]4689; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4690; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm124691; AVX2-FP-NEXT: vmovdqa 32(%rsi), %xmm94692; AVX2-FP-NEXT: vpbroadcastq {{.*#+}} xmm3 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]4693; AVX2-FP-NEXT: vpshufb %xmm3, %xmm12, %xmm24694; AVX2-FP-NEXT: vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4695; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm134696; AVX2-FP-NEXT: vmovdqa 32(%rdi), %xmm114697; AVX2-FP-NEXT: vpshufb %xmm3, %xmm13, %xmm44698; AVX2-FP-NEXT: vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4699; AVX2-FP-NEXT: vpunpckhbw {{.*#+}} xmm2 = xmm4[8],xmm2[8],xmm4[9],xmm2[9],xmm4[10],xmm2[10],xmm4[11],xmm2[11],xmm4[12],xmm2[12],xmm4[13],xmm2[13],xmm4[14],xmm2[14],xmm4[15],xmm2[15]4700; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,0,0,1]4701; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535]4702; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm1, %ymm4, %ymm14703; AVX2-FP-NEXT: vpshufb %xmm0, %xmm14, %xmm44704; AVX2-FP-NEXT: vmovdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4705; AVX2-FP-NEXT: vpshufb %xmm0, %xmm8, %xmm54706; AVX2-FP-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4707; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3],xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]4708; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]4709; AVX2-FP-NEXT: vpshufb %xmm3, %xmm9, %xmm54710; AVX2-FP-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4711; AVX2-FP-NEXT: vpshufb %xmm3, %xmm11, %xmm34712; AVX2-FP-NEXT: vmovdqa %xmm11, (%rsp) # 16-byte Spill4713; AVX2-FP-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm3[8],xmm5[8],xmm3[9],xmm5[9],xmm3[10],xmm5[10],xmm3[11],xmm5[11],xmm3[12],xmm5[12],xmm3[13],xmm5[13],xmm3[14],xmm5[14],xmm3[15],xmm5[15]4714; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]4715; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm4, %ymm3, %ymm34716; AVX2-FP-NEXT: vpshufb %ymm0, %ymm7, %ymm44717; AVX2-FP-NEXT: vpshufb %ymm0, %ymm6, %ymm54718; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm5[0],ymm4[0],ymm5[1],ymm4[1],ymm5[2],ymm4[2],ymm5[3],ymm4[3],ymm5[4],ymm4[4],ymm5[5],ymm4[5],ymm5[6],ymm4[6],ymm5[7],ymm4[7],ymm5[16],ymm4[16],ymm5[17],ymm4[17],ymm5[18],ymm4[18],ymm5[19],ymm4[19],ymm5[20],ymm4[20],ymm5[21],ymm4[21],ymm5[22],ymm4[22],ymm5[23],ymm4[23]4719; AVX2-FP-NEXT: vmovdqa 32(%rdi), %ymm74720; AVX2-FP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4721; AVX2-FP-NEXT: vmovdqa 32(%rsi), %ymm64722; AVX2-FP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4723; AVX2-FP-NEXT: vpbroadcastq {{.*#+}} ymm5 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]4724; AVX2-FP-NEXT: vpshufb %ymm5, %ymm6, %ymm64725; AVX2-FP-NEXT: vpshufb %ymm5, %ymm7, %ymm74726; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm7[0],ymm6[0],ymm7[1],ymm6[1],ymm7[2],ymm6[2],ymm7[3],ymm6[3],ymm7[4],ymm6[4],ymm7[5],ymm6[5],ymm7[6],ymm6[6],ymm7[7],ymm6[7],ymm7[16],ymm6[16],ymm7[17],ymm6[17],ymm7[18],ymm6[18],ymm7[19],ymm6[19],ymm7[20],ymm6[20],ymm7[21],ymm6[21],ymm7[22],ymm6[22],ymm7[23],ymm6[23]4727; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]4728; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]4729; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm4, %ymm6, %ymm44730; AVX2-FP-NEXT: vmovdqa (%rdx), %ymm154731; AVX2-FP-NEXT: vmovdqa (%rcx), %ymm64732; AVX2-FP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4733; AVX2-FP-NEXT: vpshufb %ymm0, %ymm6, %ymm64734; AVX2-FP-NEXT: vpshufb %ymm0, %ymm15, %ymm04735; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm6[0],ymm0[1],ymm6[1],ymm0[2],ymm6[2],ymm0[3],ymm6[3],ymm0[4],ymm6[4],ymm0[5],ymm6[5],ymm0[6],ymm6[6],ymm0[7],ymm6[7],ymm0[16],ymm6[16],ymm0[17],ymm6[17],ymm0[18],ymm6[18],ymm0[19],ymm6[19],ymm0[20],ymm6[20],ymm0[21],ymm6[21],ymm0[22],ymm6[22],ymm0[23],ymm6[23]4736; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm104737; AVX2-FP-NEXT: vmovdqa (%rsi), %ymm64738; AVX2-FP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4739; AVX2-FP-NEXT: vpshufb %ymm5, %ymm6, %ymm64740; AVX2-FP-NEXT: vpshufb %ymm5, %ymm10, %ymm54741; AVX2-FP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4742; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} ymm5 = ymm5[0],ymm6[0],ymm5[1],ymm6[1],ymm5[2],ymm6[2],ymm5[3],ymm6[3],ymm5[4],ymm6[4],ymm5[5],ymm6[5],ymm5[6],ymm6[6],ymm5[7],ymm6[7],ymm5[16],ymm6[16],ymm5[17],ymm6[17],ymm5[18],ymm6[18],ymm5[19],ymm6[19],ymm5[20],ymm6[20],ymm5[21],ymm6[21],ymm5[22],ymm6[22],ymm5[23],ymm6[23]4743; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]4744; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]4745; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm0, %ymm5, %ymm04746; AVX2-FP-NEXT: vmovdqa (%r8), %xmm54747; AVX2-FP-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4748; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} xmm2 = [6,5,8,7,9,9,9,9]4749; AVX2-FP-NEXT: vpshufb %xmm2, %xmm5, %xmm54750; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]4751; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]4752; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm1, %ymm5, %ymm14753; AVX2-FP-NEXT: vmovdqa 32(%r8), %xmm74754; AVX2-FP-NEXT: vpshufb %xmm2, %xmm7, %xmm24755; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]4756; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm3, %ymm2, %ymm24757; AVX2-FP-NEXT: vmovdqa 32(%r8), %ymm54758; AVX2-FP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4759; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0]4760; AVX2-FP-NEXT: # ymm3 = mem[0,1,0,1]4761; AVX2-FP-NEXT: vpshufb %ymm3, %ymm5, %ymm54762; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]4763; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm44764; AVX2-FP-NEXT: vmovdqa (%r8), %ymm54765; AVX2-FP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4766; AVX2-FP-NEXT: vpshufb %ymm3, %ymm5, %ymm34767; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]4768; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm0, %ymm3, %ymm64769; AVX2-FP-NEXT: vmovdqa (%r9), %xmm04770; AVX2-FP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4771; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm3 = [u,6,u,5,u,8,u,7,u,9,u,9,u,9,u,9]4772; AVX2-FP-NEXT: vpshufb %xmm3, %xmm0, %xmm54773; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]4774; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm0 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]4775; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm1, %ymm5, %ymm14776; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4777; AVX2-FP-NEXT: vmovdqa 32(%r9), %xmm14778; AVX2-FP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4779; AVX2-FP-NEXT: vpshufb %xmm3, %xmm1, %xmm14780; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4781; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm2, %ymm1, %ymm14782; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4783; AVX2-FP-NEXT: vmovdqa 32(%r9), %ymm24784; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4785; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0]4786; AVX2-FP-NEXT: # ymm1 = mem[0,1,0,1]4787; AVX2-FP-NEXT: vpshufb %ymm1, %ymm2, %ymm24788; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]4789; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm4, %ymm2, %ymm24790; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4791; AVX2-FP-NEXT: vmovdqa (%r9), %ymm24792; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4793; AVX2-FP-NEXT: vpshufb %ymm1, %ymm2, %ymm14794; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]4795; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm6, %ymm1, %ymm04796; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4797; AVX2-FP-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm11[8],xmm9[8],xmm11[9],xmm9[9],xmm11[10],xmm9[10],xmm11[11],xmm9[11],xmm11[12],xmm9[12],xmm11[13],xmm9[13],xmm11[14],xmm9[14],xmm11[15],xmm9[15]4798; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm2 = [8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]4799; AVX2-FP-NEXT: vpshufb %xmm2, %xmm0, %xmm04800; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]4801; AVX2-FP-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm8[8],xmm14[8],xmm8[9],xmm14[9],xmm8[10],xmm14[10],xmm8[11],xmm14[11],xmm8[12],xmm14[12],xmm8[13],xmm14[13],xmm8[14],xmm14[14],xmm8[15],xmm14[15]4802; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm3 = [10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]4803; AVX2-FP-NEXT: vpshufb %xmm3, %xmm1, %xmm14804; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4805; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0]4806; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm0, %ymm1, %ymm54807; AVX2-FP-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm13[8],xmm12[8],xmm13[9],xmm12[9],xmm13[10],xmm12[10],xmm13[11],xmm12[11],xmm13[12],xmm12[12],xmm13[13],xmm12[13],xmm13[14],xmm12[14],xmm13[15],xmm12[15]4808; AVX2-FP-NEXT: vpshufb %xmm2, %xmm0, %xmm04809; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4810; AVX2-FP-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload4811; AVX2-FP-NEXT: # xmm1 = xmm1[8],mem[8],xmm1[9],mem[9],xmm1[10],mem[10],xmm1[11],mem[11],xmm1[12],mem[12],xmm1[13],mem[13],xmm1[14],mem[14],xmm1[15],mem[15]4812; AVX2-FP-NEXT: vpshufb %xmm3, %xmm1, %xmm14813; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]4814; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4815; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm0, %ymm1, %ymm24816; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4817; AVX2-FP-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload4818; AVX2-FP-NEXT: # ymm0 = ymm0[8],mem[8],ymm0[9],mem[9],ymm0[10],mem[10],ymm0[11],mem[11],ymm0[12],mem[12],ymm0[13],mem[13],ymm0[14],mem[14],ymm0[15],mem[15],ymm0[24],mem[24],ymm0[25],mem[25],ymm0[26],mem[26],ymm0[27],mem[27],ymm0[28],mem[28],ymm0[29],mem[29],ymm0[30],mem[30],ymm0[31],mem[31]4819; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]4820; AVX2-FP-NEXT: # ymm1 = mem[0,1,0,1]4821; AVX2-FP-NEXT: vpshufb %ymm1, %ymm0, %ymm04822; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm0[2,2,2,3]4823; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4824; AVX2-FP-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm6 # 32-byte Folded Reload4825; AVX2-FP-NEXT: # ymm6 = ymm0[8],mem[8],ymm0[9],mem[9],ymm0[10],mem[10],ymm0[11],mem[11],ymm0[12],mem[12],ymm0[13],mem[13],ymm0[14],mem[14],ymm0[15],mem[15],ymm0[24],mem[24],ymm0[25],mem[25],ymm0[26],mem[26],ymm0[27],mem[27],ymm0[28],mem[28],ymm0[29],mem[29],ymm0[30],mem[30],ymm0[31],mem[31]4826; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]4827; AVX2-FP-NEXT: # ymm0 = mem[0,1,0,1]4828; AVX2-FP-NEXT: vpshufb %ymm0, %ymm6, %ymm64829; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]4830; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm3, %ymm6, %ymm34831; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload4832; AVX2-FP-NEXT: vpunpckhbw {{.*#+}} ymm6 = ymm10[8],ymm9[8],ymm10[9],ymm9[9],ymm10[10],ymm9[10],ymm10[11],ymm9[11],ymm10[12],ymm9[12],ymm10[13],ymm9[13],ymm10[14],ymm9[14],ymm10[15],ymm9[15],ymm10[24],ymm9[24],ymm10[25],ymm9[25],ymm10[26],ymm9[26],ymm10[27],ymm9[27],ymm10[28],ymm9[28],ymm10[29],ymm9[29],ymm10[30],ymm9[30],ymm10[31],ymm9[31]4833; AVX2-FP-NEXT: vpshufb %ymm1, %ymm6, %ymm14834; AVX2-FP-NEXT: vmovdqa %ymm15, %ymm124835; AVX2-FP-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm6 # 32-byte Folded Reload4836; AVX2-FP-NEXT: # ymm6 = ymm15[8],mem[8],ymm15[9],mem[9],ymm15[10],mem[10],ymm15[11],mem[11],ymm15[12],mem[12],ymm15[13],mem[13],ymm15[14],mem[14],ymm15[15],mem[15],ymm15[24],mem[24],ymm15[25],mem[25],ymm15[26],mem[26],ymm15[27],mem[27],ymm15[28],mem[28],ymm15[29],mem[29],ymm15[30],mem[30],ymm15[31],mem[31]4837; AVX2-FP-NEXT: vpshufb %ymm0, %ymm6, %ymm04838; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]4839; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]4840; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm1, %ymm0, %ymm04841; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} xmm1 = [10,13,12,11,14,13,14,15]4842; AVX2-FP-NEXT: vmovdqa %xmm7, %xmm154843; AVX2-FP-NEXT: vpshufb %xmm1, %xmm7, %xmm44844; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]4845; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]4846; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm5, %ymm4, %ymm44847; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload4848; AVX2-FP-NEXT: vpshufb %xmm1, %xmm7, %xmm14849; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4850; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm2, %ymm1, %ymm14851; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0]4852; AVX2-FP-NEXT: # ymm2 = mem[0,1,0,1]4853; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload4854; AVX2-FP-NEXT: vpshufb %ymm2, %ymm10, %ymm54855; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]4856; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm3, %ymm5, %ymm54857; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload4858; AVX2-FP-NEXT: vpshufb %ymm2, %ymm11, %ymm24859; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]4860; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm0, %ymm2, %ymm04861; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm2 = [u,10,u,13,u,12,u,11,u,14,u,13,u,14,u,15]4862; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload4863; AVX2-FP-NEXT: vpshufb %xmm2, %xmm3, %xmm34864; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]4865; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm6 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]4866; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm4, %ymm3, %ymm34867; AVX2-FP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4868; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload4869; AVX2-FP-NEXT: vpshufb %xmm2, %xmm8, %xmm24870; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]4871; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm1, %ymm2, %ymm14872; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4873; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15]4874; AVX2-FP-NEXT: # ymm4 = mem[0,1,0,1]4875; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload4876; AVX2-FP-NEXT: vpshufb %ymm4, %ymm13, %ymm14877; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]4878; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm5, %ymm1, %ymm14879; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4880; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload4881; AVX2-FP-NEXT: vpshufb %ymm4, %ymm14, %ymm44882; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]4883; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm0, %ymm4, %ymm04884; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4885; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4886; AVX2-FP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm4 # 16-byte Folded Reload4887; AVX2-FP-NEXT: # xmm4 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]4888; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4889; AVX2-FP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm5 # 16-byte Folded Reload4890; AVX2-FP-NEXT: # xmm5 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]4891; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm6 = [0,1,6,7,4,5,2,3,8,9,10,11,12,13,10,11]4892; AVX2-FP-NEXT: vpshufb %xmm6, %xmm4, %xmm44893; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]4894; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm1 = [2,3,0,1,6,7,4,5,8,9,8,9,8,9,8,9]4895; AVX2-FP-NEXT: vpshufb %xmm1, %xmm5, %xmm54896; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]4897; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm0 = [65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535]4898; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm4, %ymm5, %ymm44899; AVX2-FP-NEXT: vmovdqa (%rsp), %xmm2 # 16-byte Reload4900; AVX2-FP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm5 # 16-byte Folded Reload4901; AVX2-FP-NEXT: # xmm5 = xmm2[0],mem[0],xmm2[1],mem[1],xmm2[2],mem[2],xmm2[3],mem[3],xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]4902; AVX2-FP-NEXT: vpshufb %xmm6, %xmm5, %xmm54903; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4904; AVX2-FP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm6 # 16-byte Folded Reload4905; AVX2-FP-NEXT: # xmm6 = xmm2[0],mem[0],xmm2[1],mem[1],xmm2[2],mem[2],xmm2[3],mem[3],xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]4906; AVX2-FP-NEXT: vpshufb %xmm1, %xmm6, %xmm14907; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]4908; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4909; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm5, %ymm1, %ymm34910; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload4911; AVX2-FP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm5 # 32-byte Folded Reload4912; AVX2-FP-NEXT: # ymm5 = ymm1[0],mem[0],ymm1[1],mem[1],ymm1[2],mem[2],ymm1[3],mem[3],ymm1[4],mem[4],ymm1[5],mem[5],ymm1[6],mem[6],ymm1[7],mem[7],ymm1[16],mem[16],ymm1[17],mem[17],ymm1[18],mem[18],ymm1[19],mem[19],ymm1[20],mem[20],ymm1[21],mem[21],ymm1[22],mem[22],ymm1[23],mem[23]4913; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload4914; AVX2-FP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm6 # 32-byte Folded Reload4915; AVX2-FP-NEXT: # ymm6 = ymm1[0],mem[0],ymm1[1],mem[1],ymm1[2],mem[2],ymm1[3],mem[3],ymm1[4],mem[4],ymm1[5],mem[5],ymm1[6],mem[6],ymm1[7],mem[7],ymm1[16],mem[16],ymm1[17],mem[17],ymm1[18],mem[18],ymm1[19],mem[19],ymm1[20],mem[20],ymm1[21],mem[21],ymm1[22],mem[22],ymm1[23],mem[23]4916; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [16,17,22,23,20,21,18,19,24,25,26,27,28,29,26,27,16,17,22,23,20,21,18,19,24,25,26,27,28,29,26,27]4917; AVX2-FP-NEXT: # ymm1 = mem[0,1,0,1]4918; AVX2-FP-NEXT: vpshufb %ymm1, %ymm5, %ymm54919; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]4920; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [18,19,16,17,22,23,20,21,24,25,24,25,24,25,24,25,18,19,16,17,22,23,20,21,24,25,24,25,24,25,24,25]4921; AVX2-FP-NEXT: # ymm2 = mem[0,1,0,1]4922; AVX2-FP-NEXT: vpshufb %ymm2, %ymm6, %ymm64923; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]4924; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm5, %ymm6, %ymm54925; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload4926; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm6[0],ymm9[0],ymm6[1],ymm9[1],ymm6[2],ymm9[2],ymm6[3],ymm9[3],ymm6[4],ymm9[4],ymm6[5],ymm9[5],ymm6[6],ymm9[6],ymm6[7],ymm9[7],ymm6[16],ymm9[16],ymm6[17],ymm9[17],ymm6[18],ymm9[18],ymm6[19],ymm9[19],ymm6[20],ymm9[20],ymm6[21],ymm9[21],ymm6[22],ymm9[22],ymm6[23],ymm9[23]4927; AVX2-FP-NEXT: vpshufb %ymm1, %ymm6, %ymm14928; AVX2-FP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm12, %ymm6 # 32-byte Folded Reload4929; AVX2-FP-NEXT: # ymm6 = ymm12[0],mem[0],ymm12[1],mem[1],ymm12[2],mem[2],ymm12[3],mem[3],ymm12[4],mem[4],ymm12[5],mem[5],ymm12[6],mem[6],ymm12[7],mem[7],ymm12[16],mem[16],ymm12[17],mem[17],ymm12[18],mem[18],ymm12[19],mem[19],ymm12[20],mem[20],ymm12[21],mem[21],ymm12[22],mem[22],ymm12[23],mem[23]4930; AVX2-FP-NEXT: vpshufb %ymm2, %ymm6, %ymm24931; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]4932; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]4933; AVX2-FP-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm04934; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} xmm1 = [2,1,0,3,4,4,4,4]4935; AVX2-FP-NEXT: vpshufb %xmm1, %xmm7, %xmm24936; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]4937; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]4938; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm4, %ymm2, %ymm24939; AVX2-FP-NEXT: vpshufb %xmm1, %xmm15, %xmm14940; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4941; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm3, %ymm1, %ymm14942; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0]4943; AVX2-FP-NEXT: # ymm3 = mem[0,1,0,1]4944; AVX2-FP-NEXT: vpshufb %ymm3, %ymm10, %ymm44945; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]4946; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm5, %ymm4, %ymm44947; AVX2-FP-NEXT: vpshufb %ymm3, %ymm11, %ymm34948; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]4949; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm0, %ymm3, %ymm04950; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm3 = [u,2,u,1,u,0,u,3,u,4,u,4,u,4,u,4]4951; AVX2-FP-NEXT: vpshufb %xmm3, %xmm8, %xmm54952; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]4953; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm6 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]4954; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm2, %ymm5, %ymm24955; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload4956; AVX2-FP-NEXT: vpshufb %xmm3, %xmm5, %xmm34957; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]4958; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm1, %ymm3, %ymm14959; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0]4960; AVX2-FP-NEXT: # ymm3 = mem[0,1,0,1]4961; AVX2-FP-NEXT: vpshufb %ymm3, %ymm13, %ymm54962; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]4963; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm44964; AVX2-FP-NEXT: vpshufb %ymm3, %ymm14, %ymm34965; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]4966; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm0, %ymm3, %ymm04967; AVX2-FP-NEXT: movq {{[0-9]+}}(%rsp), %rax4968; AVX2-FP-NEXT: vmovdqa %ymm0, 96(%rax)4969; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4970; AVX2-FP-NEXT: vmovaps %ymm0, 160(%rax)4971; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4972; AVX2-FP-NEXT: vmovaps %ymm0, 128(%rax)4973; AVX2-FP-NEXT: vmovdqa %ymm4, 288(%rax)4974; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4975; AVX2-FP-NEXT: vmovaps %ymm0, 352(%rax)4976; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4977; AVX2-FP-NEXT: vmovaps %ymm0, 320(%rax)4978; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4979; AVX2-FP-NEXT: vmovaps %ymm0, 64(%rax)4980; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4981; AVX2-FP-NEXT: vmovaps %ymm0, 224(%rax)4982; AVX2-FP-NEXT: vmovdqa %ymm1, 192(%rax)4983; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4984; AVX2-FP-NEXT: vmovaps %ymm0, 256(%rax)4985; AVX2-FP-NEXT: vmovdqa %ymm2, (%rax)4986; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4987; AVX2-FP-NEXT: vmovaps %ymm0, 32(%rax)4988; AVX2-FP-NEXT: addq $664, %rsp # imm = 0x2984989; AVX2-FP-NEXT: vzeroupper4990; AVX2-FP-NEXT: retq4991;4992; AVX2-FCP-LABEL: store_i8_stride6_vf64:4993; AVX2-FCP: # %bb.0:4994; AVX2-FCP-NEXT: subq $664, %rsp # imm = 0x2984995; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %ymm64996; AVX2-FCP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4997; AVX2-FCP-NEXT: vmovdqa 32(%rcx), %ymm74998; AVX2-FCP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4999; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm0 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]5000; AVX2-FCP-NEXT: vmovdqa (%rcx), %xmm15001; AVX2-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5002; AVX2-FCP-NEXT: vmovdqa 32(%rcx), %xmm145003; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm1, %xmm15004; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm25005; AVX2-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5006; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %xmm85007; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm25008; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]5009; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]5010; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm125011; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %xmm95012; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} xmm3 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]5013; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm12, %xmm25014; AVX2-FCP-NEXT: vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5015; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm135016; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %xmm115017; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm13, %xmm45018; AVX2-FCP-NEXT: vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5019; AVX2-FCP-NEXT: vpunpckhbw {{.*#+}} xmm2 = xmm4[8],xmm2[8],xmm4[9],xmm2[9],xmm4[10],xmm2[10],xmm4[11],xmm2[11],xmm4[12],xmm2[12],xmm4[13],xmm2[13],xmm4[14],xmm2[14],xmm4[15],xmm2[15]5020; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,0,0,1]5021; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535]5022; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm1, %ymm4, %ymm15023; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm14, %xmm45024; AVX2-FCP-NEXT: vmovdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5025; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm8, %xmm55026; AVX2-FCP-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5027; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3],xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]5028; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]5029; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm9, %xmm55030; AVX2-FCP-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5031; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm11, %xmm35032; AVX2-FCP-NEXT: vmovdqa %xmm11, (%rsp) # 16-byte Spill5033; AVX2-FCP-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm3[8],xmm5[8],xmm3[9],xmm5[9],xmm3[10],xmm5[10],xmm3[11],xmm5[11],xmm3[12],xmm5[12],xmm3[13],xmm5[13],xmm3[14],xmm5[14],xmm3[15],xmm5[15]5034; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]5035; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm4, %ymm3, %ymm35036; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm7, %ymm45037; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm6, %ymm55038; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm5[0],ymm4[0],ymm5[1],ymm4[1],ymm5[2],ymm4[2],ymm5[3],ymm4[3],ymm5[4],ymm4[4],ymm5[5],ymm4[5],ymm5[6],ymm4[6],ymm5[7],ymm4[7],ymm5[16],ymm4[16],ymm5[17],ymm4[17],ymm5[18],ymm4[18],ymm5[19],ymm4[19],ymm5[20],ymm4[20],ymm5[21],ymm4[21],ymm5[22],ymm4[22],ymm5[23],ymm4[23]5039; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %ymm75040; AVX2-FCP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5041; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %ymm65042; AVX2-FCP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5043; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm5 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]5044; AVX2-FCP-NEXT: vpshufb %ymm5, %ymm6, %ymm65045; AVX2-FCP-NEXT: vpshufb %ymm5, %ymm7, %ymm75046; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm7[0],ymm6[0],ymm7[1],ymm6[1],ymm7[2],ymm6[2],ymm7[3],ymm6[3],ymm7[4],ymm6[4],ymm7[5],ymm6[5],ymm7[6],ymm6[6],ymm7[7],ymm6[7],ymm7[16],ymm6[16],ymm7[17],ymm6[17],ymm7[18],ymm6[18],ymm7[19],ymm6[19],ymm7[20],ymm6[20],ymm7[21],ymm6[21],ymm7[22],ymm6[22],ymm7[23],ymm6[23]5047; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]5048; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]5049; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm4, %ymm6, %ymm45050; AVX2-FCP-NEXT: vmovdqa (%rdx), %ymm155051; AVX2-FCP-NEXT: vmovdqa (%rcx), %ymm65052; AVX2-FCP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5053; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm6, %ymm65054; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm15, %ymm05055; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm6[0],ymm0[1],ymm6[1],ymm0[2],ymm6[2],ymm0[3],ymm6[3],ymm0[4],ymm6[4],ymm0[5],ymm6[5],ymm0[6],ymm6[6],ymm0[7],ymm6[7],ymm0[16],ymm6[16],ymm0[17],ymm6[17],ymm0[18],ymm6[18],ymm0[19],ymm6[19],ymm0[20],ymm6[20],ymm0[21],ymm6[21],ymm0[22],ymm6[22],ymm0[23],ymm6[23]5056; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm105057; AVX2-FCP-NEXT: vmovdqa (%rsi), %ymm65058; AVX2-FCP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5059; AVX2-FCP-NEXT: vpshufb %ymm5, %ymm6, %ymm65060; AVX2-FCP-NEXT: vpshufb %ymm5, %ymm10, %ymm55061; AVX2-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5062; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} ymm5 = ymm5[0],ymm6[0],ymm5[1],ymm6[1],ymm5[2],ymm6[2],ymm5[3],ymm6[3],ymm5[4],ymm6[4],ymm5[5],ymm6[5],ymm5[6],ymm6[6],ymm5[7],ymm6[7],ymm5[16],ymm6[16],ymm5[17],ymm6[17],ymm5[18],ymm6[18],ymm5[19],ymm6[19],ymm5[20],ymm6[20],ymm5[21],ymm6[21],ymm5[22],ymm6[22],ymm5[23],ymm6[23]5063; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]5064; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]5065; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm0, %ymm5, %ymm05066; AVX2-FCP-NEXT: vmovdqa (%r8), %xmm55067; AVX2-FCP-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5068; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} xmm2 = [6,5,8,7,9,9,9,9]5069; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm5, %xmm55070; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]5071; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]5072; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm1, %ymm5, %ymm15073; AVX2-FCP-NEXT: vmovdqa 32(%r8), %xmm75074; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm7, %xmm25075; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]5076; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm3, %ymm2, %ymm25077; AVX2-FCP-NEXT: vmovdqa 32(%r8), %ymm55078; AVX2-FCP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5079; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0]5080; AVX2-FCP-NEXT: # ymm3 = mem[0,1,0,1]5081; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm5, %ymm55082; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]5083; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm45084; AVX2-FCP-NEXT: vmovdqa (%r8), %ymm55085; AVX2-FCP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5086; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm5, %ymm35087; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]5088; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm0, %ymm3, %ymm65089; AVX2-FCP-NEXT: vmovdqa (%r9), %xmm05090; AVX2-FCP-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5091; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [u,6,u,5,u,8,u,7,u,9,u,9,u,9,u,9]5092; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm0, %xmm55093; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]5094; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]5095; AVX2-FCP-NEXT: vpblendvb %ymm0, %ymm1, %ymm5, %ymm15096; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5097; AVX2-FCP-NEXT: vmovdqa 32(%r9), %xmm15098; AVX2-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5099; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm1, %xmm15100; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]5101; AVX2-FCP-NEXT: vpblendvb %ymm0, %ymm2, %ymm1, %ymm15102; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5103; AVX2-FCP-NEXT: vmovdqa 32(%r9), %ymm25104; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5105; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0]5106; AVX2-FCP-NEXT: # ymm1 = mem[0,1,0,1]5107; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm2, %ymm25108; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]5109; AVX2-FCP-NEXT: vpblendvb %ymm0, %ymm4, %ymm2, %ymm25110; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5111; AVX2-FCP-NEXT: vmovdqa (%r9), %ymm25112; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5113; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm2, %ymm15114; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]5115; AVX2-FCP-NEXT: vpblendvb %ymm0, %ymm6, %ymm1, %ymm05116; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5117; AVX2-FCP-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm11[8],xmm9[8],xmm11[9],xmm9[9],xmm11[10],xmm9[10],xmm11[11],xmm9[11],xmm11[12],xmm9[12],xmm11[13],xmm9[13],xmm11[14],xmm9[14],xmm11[15],xmm9[15]5118; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm2 = [8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]5119; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm0, %xmm05120; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]5121; AVX2-FCP-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm8[8],xmm14[8],xmm8[9],xmm14[9],xmm8[10],xmm14[10],xmm8[11],xmm14[11],xmm8[12],xmm14[12],xmm8[13],xmm14[13],xmm8[14],xmm14[14],xmm8[15],xmm14[15]5122; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]5123; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm1, %xmm15124; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]5125; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm4 = [0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0]5126; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm0, %ymm1, %ymm55127; AVX2-FCP-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm13[8],xmm12[8],xmm13[9],xmm12[9],xmm13[10],xmm12[10],xmm13[11],xmm12[11],xmm13[12],xmm12[12],xmm13[13],xmm12[13],xmm13[14],xmm12[14],xmm13[15],xmm12[15]5128; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm0, %xmm05129; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5130; AVX2-FCP-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload5131; AVX2-FCP-NEXT: # xmm1 = xmm1[8],mem[8],xmm1[9],mem[9],xmm1[10],mem[10],xmm1[11],mem[11],xmm1[12],mem[12],xmm1[13],mem[13],xmm1[14],mem[14],xmm1[15],mem[15]5132; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm1, %xmm15133; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]5134; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]5135; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm0, %ymm1, %ymm25136; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5137; AVX2-FCP-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload5138; AVX2-FCP-NEXT: # ymm0 = ymm0[8],mem[8],ymm0[9],mem[9],ymm0[10],mem[10],ymm0[11],mem[11],ymm0[12],mem[12],ymm0[13],mem[13],ymm0[14],mem[14],ymm0[15],mem[15],ymm0[24],mem[24],ymm0[25],mem[25],ymm0[26],mem[26],ymm0[27],mem[27],ymm0[28],mem[28],ymm0[29],mem[29],ymm0[30],mem[30],ymm0[31],mem[31]5139; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]5140; AVX2-FCP-NEXT: # ymm1 = mem[0,1,0,1]5141; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm0, %ymm05142; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm0[2,2,2,3]5143; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5144; AVX2-FCP-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm6 # 32-byte Folded Reload5145; AVX2-FCP-NEXT: # ymm6 = ymm0[8],mem[8],ymm0[9],mem[9],ymm0[10],mem[10],ymm0[11],mem[11],ymm0[12],mem[12],ymm0[13],mem[13],ymm0[14],mem[14],ymm0[15],mem[15],ymm0[24],mem[24],ymm0[25],mem[25],ymm0[26],mem[26],ymm0[27],mem[27],ymm0[28],mem[28],ymm0[29],mem[29],ymm0[30],mem[30],ymm0[31],mem[31]5146; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]5147; AVX2-FCP-NEXT: # ymm0 = mem[0,1,0,1]5148; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm6, %ymm65149; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]5150; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm3, %ymm6, %ymm35151; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload5152; AVX2-FCP-NEXT: vpunpckhbw {{.*#+}} ymm6 = ymm10[8],ymm9[8],ymm10[9],ymm9[9],ymm10[10],ymm9[10],ymm10[11],ymm9[11],ymm10[12],ymm9[12],ymm10[13],ymm9[13],ymm10[14],ymm9[14],ymm10[15],ymm9[15],ymm10[24],ymm9[24],ymm10[25],ymm9[25],ymm10[26],ymm9[26],ymm10[27],ymm9[27],ymm10[28],ymm9[28],ymm10[29],ymm9[29],ymm10[30],ymm9[30],ymm10[31],ymm9[31]5153; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm6, %ymm15154; AVX2-FCP-NEXT: vmovdqa %ymm15, %ymm125155; AVX2-FCP-NEXT: vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm6 # 32-byte Folded Reload5156; AVX2-FCP-NEXT: # ymm6 = ymm15[8],mem[8],ymm15[9],mem[9],ymm15[10],mem[10],ymm15[11],mem[11],ymm15[12],mem[12],ymm15[13],mem[13],ymm15[14],mem[14],ymm15[15],mem[15],ymm15[24],mem[24],ymm15[25],mem[25],ymm15[26],mem[26],ymm15[27],mem[27],ymm15[28],mem[28],ymm15[29],mem[29],ymm15[30],mem[30],ymm15[31],mem[31]5157; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm6, %ymm05158; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]5159; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]5160; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm1, %ymm0, %ymm05161; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} xmm1 = [10,13,12,11,14,13,14,15]5162; AVX2-FCP-NEXT: vmovdqa %xmm7, %xmm155163; AVX2-FCP-NEXT: vpshufb %xmm1, %xmm7, %xmm45164; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]5165; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]5166; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm5, %ymm4, %ymm45167; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload5168; AVX2-FCP-NEXT: vpshufb %xmm1, %xmm7, %xmm15169; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]5170; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm2, %ymm1, %ymm15171; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0]5172; AVX2-FCP-NEXT: # ymm2 = mem[0,1,0,1]5173; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload5174; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm10, %ymm55175; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]5176; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm3, %ymm5, %ymm55177; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload5178; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm11, %ymm25179; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]5180; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm0, %ymm2, %ymm05181; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm2 = [u,10,u,13,u,12,u,11,u,14,u,13,u,14,u,15]5182; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload5183; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm3, %xmm35184; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]5185; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]5186; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm4, %ymm3, %ymm35187; AVX2-FCP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5188; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload5189; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm8, %xmm25190; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]5191; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm1, %ymm2, %ymm15192; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5193; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15]5194; AVX2-FCP-NEXT: # ymm4 = mem[0,1,0,1]5195; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload5196; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm13, %ymm15197; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]5198; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm5, %ymm1, %ymm15199; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5200; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload5201; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm14, %ymm45202; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]5203; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm0, %ymm4, %ymm05204; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5205; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5206; AVX2-FCP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm4 # 16-byte Folded Reload5207; AVX2-FCP-NEXT: # xmm4 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]5208; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5209; AVX2-FCP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm5 # 16-byte Folded Reload5210; AVX2-FCP-NEXT: # xmm5 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]5211; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm6 = [0,1,6,7,4,5,2,3,8,9,10,11,12,13,10,11]5212; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm4, %xmm45213; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]5214; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm1 = [2,3,0,1,6,7,4,5,8,9,8,9,8,9,8,9]5215; AVX2-FCP-NEXT: vpshufb %xmm1, %xmm5, %xmm55216; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]5217; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm0 = [65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535,0,0,65535]5218; AVX2-FCP-NEXT: vpblendvb %ymm0, %ymm4, %ymm5, %ymm45219; AVX2-FCP-NEXT: vmovdqa (%rsp), %xmm2 # 16-byte Reload5220; AVX2-FCP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm5 # 16-byte Folded Reload5221; AVX2-FCP-NEXT: # xmm5 = xmm2[0],mem[0],xmm2[1],mem[1],xmm2[2],mem[2],xmm2[3],mem[3],xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]5222; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm5, %xmm55223; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload5224; AVX2-FCP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm6 # 16-byte Folded Reload5225; AVX2-FCP-NEXT: # xmm6 = xmm2[0],mem[0],xmm2[1],mem[1],xmm2[2],mem[2],xmm2[3],mem[3],xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]5226; AVX2-FCP-NEXT: vpshufb %xmm1, %xmm6, %xmm15227; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]5228; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]5229; AVX2-FCP-NEXT: vpblendvb %ymm0, %ymm5, %ymm1, %ymm35230; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload5231; AVX2-FCP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm5 # 32-byte Folded Reload5232; AVX2-FCP-NEXT: # ymm5 = ymm1[0],mem[0],ymm1[1],mem[1],ymm1[2],mem[2],ymm1[3],mem[3],ymm1[4],mem[4],ymm1[5],mem[5],ymm1[6],mem[6],ymm1[7],mem[7],ymm1[16],mem[16],ymm1[17],mem[17],ymm1[18],mem[18],ymm1[19],mem[19],ymm1[20],mem[20],ymm1[21],mem[21],ymm1[22],mem[22],ymm1[23],mem[23]5233; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload5234; AVX2-FCP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm6 # 32-byte Folded Reload5235; AVX2-FCP-NEXT: # ymm6 = ymm1[0],mem[0],ymm1[1],mem[1],ymm1[2],mem[2],ymm1[3],mem[3],ymm1[4],mem[4],ymm1[5],mem[5],ymm1[6],mem[6],ymm1[7],mem[7],ymm1[16],mem[16],ymm1[17],mem[17],ymm1[18],mem[18],ymm1[19],mem[19],ymm1[20],mem[20],ymm1[21],mem[21],ymm1[22],mem[22],ymm1[23],mem[23]5236; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [16,17,22,23,20,21,18,19,24,25,26,27,28,29,26,27,16,17,22,23,20,21,18,19,24,25,26,27,28,29,26,27]5237; AVX2-FCP-NEXT: # ymm1 = mem[0,1,0,1]5238; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm5, %ymm55239; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]5240; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [18,19,16,17,22,23,20,21,24,25,24,25,24,25,24,25,18,19,16,17,22,23,20,21,24,25,24,25,24,25,24,25]5241; AVX2-FCP-NEXT: # ymm2 = mem[0,1,0,1]5242; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm6, %ymm65243; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]5244; AVX2-FCP-NEXT: vpblendvb %ymm0, %ymm5, %ymm6, %ymm55245; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload5246; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm6[0],ymm9[0],ymm6[1],ymm9[1],ymm6[2],ymm9[2],ymm6[3],ymm9[3],ymm6[4],ymm9[4],ymm6[5],ymm9[5],ymm6[6],ymm9[6],ymm6[7],ymm9[7],ymm6[16],ymm9[16],ymm6[17],ymm9[17],ymm6[18],ymm9[18],ymm6[19],ymm9[19],ymm6[20],ymm9[20],ymm6[21],ymm9[21],ymm6[22],ymm9[22],ymm6[23],ymm9[23]5247; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm6, %ymm15248; AVX2-FCP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %ymm12, %ymm6 # 32-byte Folded Reload5249; AVX2-FCP-NEXT: # ymm6 = ymm12[0],mem[0],ymm12[1],mem[1],ymm12[2],mem[2],ymm12[3],mem[3],ymm12[4],mem[4],ymm12[5],mem[5],ymm12[6],mem[6],ymm12[7],mem[7],ymm12[16],mem[16],ymm12[17],mem[17],ymm12[18],mem[18],ymm12[19],mem[19],ymm12[20],mem[20],ymm12[21],mem[21],ymm12[22],mem[22],ymm12[23],mem[23]5250; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm6, %ymm25251; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]5252; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,2,3]5253; AVX2-FCP-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm05254; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} xmm1 = [2,1,0,3,4,4,4,4]5255; AVX2-FCP-NEXT: vpshufb %xmm1, %xmm7, %xmm25256; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]5257; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]5258; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm4, %ymm2, %ymm25259; AVX2-FCP-NEXT: vpshufb %xmm1, %xmm15, %xmm15260; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]5261; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm3, %ymm1, %ymm15262; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0]5263; AVX2-FCP-NEXT: # ymm3 = mem[0,1,0,1]5264; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm10, %ymm45265; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]5266; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm5, %ymm4, %ymm45267; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm11, %ymm35268; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]5269; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm0, %ymm3, %ymm05270; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [u,2,u,1,u,0,u,3,u,4,u,4,u,4,u,4]5271; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm8, %xmm55272; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,0,1]5273; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]5274; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm2, %ymm5, %ymm25275; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload5276; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm5, %xmm35277; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]5278; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm1, %ymm3, %ymm15279; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0]5280; AVX2-FCP-NEXT: # ymm3 = mem[0,1,0,1]5281; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm13, %ymm55282; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]5283; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm45284; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm14, %ymm35285; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]5286; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm0, %ymm3, %ymm05287; AVX2-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax5288; AVX2-FCP-NEXT: vmovdqa %ymm0, 96(%rax)5289; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5290; AVX2-FCP-NEXT: vmovaps %ymm0, 160(%rax)5291; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5292; AVX2-FCP-NEXT: vmovaps %ymm0, 128(%rax)5293; AVX2-FCP-NEXT: vmovdqa %ymm4, 288(%rax)5294; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5295; AVX2-FCP-NEXT: vmovaps %ymm0, 352(%rax)5296; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5297; AVX2-FCP-NEXT: vmovaps %ymm0, 320(%rax)5298; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5299; AVX2-FCP-NEXT: vmovaps %ymm0, 64(%rax)5300; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5301; AVX2-FCP-NEXT: vmovaps %ymm0, 224(%rax)5302; AVX2-FCP-NEXT: vmovdqa %ymm1, 192(%rax)5303; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5304; AVX2-FCP-NEXT: vmovaps %ymm0, 256(%rax)5305; AVX2-FCP-NEXT: vmovdqa %ymm2, (%rax)5306; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5307; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%rax)5308; AVX2-FCP-NEXT: addq $664, %rsp # imm = 0x2985309; AVX2-FCP-NEXT: vzeroupper5310; AVX2-FCP-NEXT: retq5311;5312; AVX512-LABEL: store_i8_stride6_vf64:5313; AVX512: # %bb.0:5314; AVX512-NEXT: subq $456, %rsp # imm = 0x1C85315; AVX512-NEXT: vmovdqa (%rsi), %xmm65316; AVX512-NEXT: vmovdqa 32(%rsi), %xmm35317; AVX512-NEXT: vmovdqa (%rdi), %xmm75318; AVX512-NEXT: vmovdqa 32(%rdi), %xmm25319; AVX512-NEXT: vmovdqa (%r8), %xmm105320; AVX512-NEXT: vmovdqa 32(%r8), %xmm45321; AVX512-NEXT: vmovdqa (%r9), %xmm125322; AVX512-NEXT: vmovdqa 32(%r9), %xmm85323; AVX512-NEXT: vmovdqa 32(%rcx), %ymm135324; AVX512-NEXT: vpbroadcastq {{.*#+}} xmm9 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]5325; AVX512-NEXT: vpshufb %xmm9, %xmm3, %xmm05326; AVX512-NEXT: vpshufb %xmm9, %xmm2, %xmm15327; AVX512-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15]5328; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm1 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]5329; AVX512-NEXT: vmovdqa64 %xmm3, %xmm305330; AVX512-NEXT: vmovdqa64 %xmm2, %xmm315331; AVX512-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]5332; AVX512-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,5]5333; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm05334; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5335; AVX512-NEXT: vmovdqa {{.*#+}} xmm0 = [6,u,5,u,8,u,7,u,9,u,9,u,9,u,9,u]5336; AVX512-NEXT: vpshufb %xmm0, %xmm4, %xmm25337; AVX512-NEXT: vmovdqa {{.*#+}} xmm1 = [2,u,1,u,0,u,3,u,4,u,4,u,4,u,4,u]5338; AVX512-NEXT: vpshufb %xmm1, %xmm4, %xmm35339; AVX512-NEXT: vmovdqa64 %xmm4, %xmm295340; AVX512-NEXT: vinserti32x4 $2, %xmm2, %zmm3, %zmm25341; AVX512-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5342; AVX512-NEXT: vmovdqa {{.*#+}} xmm2 = [u,6,u,5,u,8,u,7,u,9,u,9,u,9,u,9]5343; AVX512-NEXT: vpshufb %xmm2, %xmm8, %xmm45344; AVX512-NEXT: vmovdqa {{.*#+}} xmm3 = [u,2,u,1,u,0,u,3,u,4,u,4,u,4,u,4]5345; AVX512-NEXT: vpshufb %xmm3, %xmm8, %xmm55346; AVX512-NEXT: vmovdqa64 %xmm8, %xmm275347; AVX512-NEXT: vinserti32x4 $2, %xmm4, %zmm5, %zmm45348; AVX512-NEXT: vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5349; AVX512-NEXT: vmovdqa 32(%rdx), %ymm85350; AVX512-NEXT: vpshufb %xmm9, %xmm6, %xmm45351; AVX512-NEXT: vpshufb %xmm9, %xmm7, %xmm55352; AVX512-NEXT: vpunpckhbw {{.*#+}} xmm4 = xmm5[8],xmm4[8],xmm5[9],xmm4[9],xmm5[10],xmm4[10],xmm5[11],xmm4[11],xmm5[12],xmm4[12],xmm5[13],xmm4[13],xmm5[14],xmm4[14],xmm5[15],xmm4[15]5353; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3],xmm7[4],xmm6[4],xmm7[5],xmm6[5],xmm7[6],xmm6[6],xmm7[7],xmm6[7]5354; AVX512-NEXT: vmovdqa64 %xmm7, %xmm185355; AVX512-NEXT: vmovdqa64 %xmm6, %xmm205356; AVX512-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,3,2,1,4,5,6,7]5357; AVX512-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,6,5]5358; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm5, %zmm45359; AVX512-NEXT: vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5360; AVX512-NEXT: vmovdqa 32(%rsi), %ymm45361; AVX512-NEXT: vmovdqa 32(%rdi), %ymm115362; AVX512-NEXT: vpshufb %xmm0, %xmm10, %xmm05363; AVX512-NEXT: vpshufb %xmm1, %xmm10, %xmm15364; AVX512-NEXT: vmovdqa64 %xmm10, %xmm225365; AVX512-NEXT: vinserti32x4 $2, %xmm0, %zmm1, %zmm05366; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5367; AVX512-NEXT: vpshufb %xmm2, %xmm12, %xmm05368; AVX512-NEXT: vpshufb %xmm3, %xmm12, %xmm15369; AVX512-NEXT: vmovdqa64 %xmm12, %xmm215370; AVX512-NEXT: vinserti32x4 $2, %xmm0, %zmm1, %zmm05371; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5372; AVX512-NEXT: vpbroadcastq {{.*#+}} ymm15 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]5373; AVX512-NEXT: vpshufb %ymm15, %ymm4, %ymm05374; AVX512-NEXT: vpshufb %ymm15, %ymm11, %ymm15375; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[2],ymm0[2],ymm1[3],ymm0[3],ymm1[4],ymm0[4],ymm1[5],ymm0[5],ymm1[6],ymm0[6],ymm1[7],ymm0[7],ymm1[16],ymm0[16],ymm1[17],ymm0[17],ymm1[18],ymm0[18],ymm1[19],ymm0[19],ymm1[20],ymm0[20],ymm1[21],ymm0[21],ymm1[22],ymm0[22],ymm1[23],ymm0[23]5376; AVX512-NEXT: vpunpckhbw {{.*#+}} ymm1 = ymm11[8],ymm4[8],ymm11[9],ymm4[9],ymm11[10],ymm4[10],ymm11[11],ymm4[11],ymm11[12],ymm4[12],ymm11[13],ymm4[13],ymm11[14],ymm4[14],ymm11[15],ymm4[15],ymm11[24],ymm4[24],ymm11[25],ymm4[25],ymm11[26],ymm4[26],ymm11[27],ymm4[27],ymm11[28],ymm4[28],ymm11[29],ymm4[29],ymm11[30],ymm4[30],ymm11[31],ymm4[31]5377; AVX512-NEXT: vmovdqa64 %ymm4, %ymm195378; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm6 = [24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]5379; AVX512-NEXT: # ymm6 = mem[0,1,0,1]5380; AVX512-NEXT: vpshufb %ymm6, %ymm1, %ymm15381; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm05382; AVX512-NEXT: vmovdqu64 %zmm0, (%rsp) # 64-byte Spill5383; AVX512-NEXT: vpbroadcastq {{.*#+}} ymm12 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]5384; AVX512-NEXT: vpshufb %ymm12, %ymm13, %ymm05385; AVX512-NEXT: vpshufb %ymm12, %ymm8, %ymm15386; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[2],ymm0[2],ymm1[3],ymm0[3],ymm1[4],ymm0[4],ymm1[5],ymm0[5],ymm1[6],ymm0[6],ymm1[7],ymm0[7],ymm1[16],ymm0[16],ymm1[17],ymm0[17],ymm1[18],ymm0[18],ymm1[19],ymm0[19],ymm1[20],ymm0[20],ymm1[21],ymm0[21],ymm1[22],ymm0[22],ymm1[23],ymm0[23]5387; AVX512-NEXT: vpunpckhbw {{.*#+}} ymm1 = ymm8[8],ymm13[8],ymm8[9],ymm13[9],ymm8[10],ymm13[10],ymm8[11],ymm13[11],ymm8[12],ymm13[12],ymm8[13],ymm13[13],ymm8[14],ymm13[14],ymm8[15],ymm13[15],ymm8[24],ymm13[24],ymm8[25],ymm13[25],ymm8[26],ymm13[26],ymm8[27],ymm13[27],ymm8[28],ymm13[28],ymm8[29],ymm13[29],ymm8[30],ymm13[30],ymm8[31],ymm13[31]5388; AVX512-NEXT: vmovdqa64 %ymm13, %ymm175389; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]5390; AVX512-NEXT: # ymm7 = mem[0,1,0,1]5391; AVX512-NEXT: vpshufb %ymm7, %ymm1, %ymm15392; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm05393; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5394; AVX512-NEXT: vmovdqa 32(%r8), %ymm135395; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm5 = [10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0]5396; AVX512-NEXT: # ymm5 = mem[0,1,0,1]5397; AVX512-NEXT: vpshufb %ymm5, %ymm13, %ymm05398; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0]5399; AVX512-NEXT: # ymm4 = mem[0,1,0,1]5400; AVX512-NEXT: vpshufb %ymm4, %ymm13, %ymm15401; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm05402; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5403; AVX512-NEXT: vmovdqa 32(%r9), %ymm145404; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15]5405; AVX512-NEXT: # ymm3 = mem[0,1,0,1]5406; AVX512-NEXT: vpshufb %ymm3, %ymm14, %ymm05407; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0]5408; AVX512-NEXT: # ymm2 = mem[0,1,0,1]5409; AVX512-NEXT: vpshufb %ymm2, %ymm14, %ymm15410; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm285411; AVX512-NEXT: vmovdqa (%rsi), %ymm15412; AVX512-NEXT: vmovdqa (%rdi), %ymm05413; AVX512-NEXT: vpshufb %ymm15, %ymm1, %ymm105414; AVX512-NEXT: vpshufb %ymm15, %ymm0, %ymm155415; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm10 = ymm15[0],ymm10[0],ymm15[1],ymm10[1],ymm15[2],ymm10[2],ymm15[3],ymm10[3],ymm15[4],ymm10[4],ymm15[5],ymm10[5],ymm15[6],ymm10[6],ymm15[7],ymm10[7],ymm15[16],ymm10[16],ymm15[17],ymm10[17],ymm15[18],ymm10[18],ymm15[19],ymm10[19],ymm15[20],ymm10[20],ymm15[21],ymm10[21],ymm15[22],ymm10[22],ymm15[23],ymm10[23]5416; AVX512-NEXT: vpunpckhbw {{.*#+}} ymm15 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]5417; AVX512-NEXT: vpshufb %ymm6, %ymm15, %ymm65418; AVX512-NEXT: vinserti64x4 $1, %ymm6, %zmm10, %zmm265419; AVX512-NEXT: vmovdqa (%rcx), %ymm105420; AVX512-NEXT: vmovdqa (%rdx), %ymm155421; AVX512-NEXT: vpshufb %ymm12, %ymm10, %ymm65422; AVX512-NEXT: vpshufb %ymm12, %ymm15, %ymm95423; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm9[0],ymm6[0],ymm9[1],ymm6[1],ymm9[2],ymm6[2],ymm9[3],ymm6[3],ymm9[4],ymm6[4],ymm9[5],ymm6[5],ymm9[6],ymm6[6],ymm9[7],ymm6[7],ymm9[16],ymm6[16],ymm9[17],ymm6[17],ymm9[18],ymm6[18],ymm9[19],ymm6[19],ymm9[20],ymm6[20],ymm9[21],ymm6[21],ymm9[22],ymm6[22],ymm9[23],ymm6[23]5424; AVX512-NEXT: vpunpckhbw {{.*#+}} ymm9 = ymm15[8],ymm10[8],ymm15[9],ymm10[9],ymm15[10],ymm10[10],ymm15[11],ymm10[11],ymm15[12],ymm10[12],ymm15[13],ymm10[13],ymm15[14],ymm10[14],ymm15[15],ymm10[15],ymm15[24],ymm10[24],ymm15[25],ymm10[25],ymm15[26],ymm10[26],ymm15[27],ymm10[27],ymm15[28],ymm10[28],ymm15[29],ymm10[29],ymm15[30],ymm10[30],ymm15[31],ymm10[31]5425; AVX512-NEXT: vpshufb %ymm7, %ymm9, %ymm95426; AVX512-NEXT: vinserti64x4 $1, %ymm9, %zmm6, %zmm245427; AVX512-NEXT: vmovdqa (%r8), %ymm65428; AVX512-NEXT: vpshufb %ymm5, %ymm6, %ymm55429; AVX512-NEXT: vpshufb %ymm4, %ymm6, %ymm45430; AVX512-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm235431; AVX512-NEXT: vmovdqa (%r9), %ymm45432; AVX512-NEXT: vpshufb %ymm3, %ymm4, %ymm35433; AVX512-NEXT: vpshufb %ymm2, %ymm4, %ymm25434; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm2, %zmm255435; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm15[0],ymm10[0],ymm15[1],ymm10[1],ymm15[2],ymm10[2],ymm15[3],ymm10[3],ymm15[4],ymm10[4],ymm15[5],ymm10[5],ymm15[6],ymm10[6],ymm15[7],ymm10[7],ymm15[16],ymm10[16],ymm15[17],ymm10[17],ymm15[18],ymm10[18],ymm15[19],ymm10[19],ymm15[20],ymm10[20],ymm15[21],ymm10[21],ymm15[22],ymm10[22],ymm15[23],ymm10[23]5436; AVX512-NEXT: vmovdqa64 %ymm2, %ymm165437; AVX512-NEXT: vmovdqa64 %xmm18, %xmm25438; AVX512-NEXT: vmovdqa64 %xmm20, %xmm35439; AVX512-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm2[8],xmm3[8],xmm2[9],xmm3[9],xmm2[10],xmm3[10],xmm2[11],xmm3[11],xmm2[12],xmm3[12],xmm2[13],xmm3[13],xmm2[14],xmm3[14],xmm2[15],xmm3[15]5440; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]5441; AVX512-NEXT: vmovdqa64 %ymm0, %ymm185442; AVX512-NEXT: vmovdqa (%rcx), %xmm155443; AVX512-NEXT: vmovdqa (%rdx), %xmm25444; AVX512-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm2[8],xmm15[8],xmm2[9],xmm15[9],xmm2[10],xmm15[10],xmm2[11],xmm15[11],xmm2[12],xmm15[12],xmm2[13],xmm15[13],xmm2[14],xmm15[14],xmm2[15],xmm15[15]5445; AVX512-NEXT: vmovdqa {{.*#+}} xmm3 = [10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]5446; AVX512-NEXT: vpshufb %xmm3, %xmm1, %xmm105447; AVX512-NEXT: vmovdqa 32(%rcx), %xmm15448; AVX512-NEXT: vmovdqa 32(%rdx), %xmm05449; AVX512-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]5450; AVX512-NEXT: vpshufb %xmm3, %xmm9, %xmm35451; AVX512-NEXT: vmovdqa64 %ymm3, %ymm205452; AVX512-NEXT: vmovdqa64 %ymm17, %ymm35453; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm3 = ymm8[0],ymm3[0],ymm8[1],ymm3[1],ymm8[2],ymm3[2],ymm8[3],ymm3[3],ymm8[4],ymm3[4],ymm8[5],ymm3[5],ymm8[6],ymm3[6],ymm8[7],ymm3[7],ymm8[16],ymm3[16],ymm8[17],ymm3[17],ymm8[18],ymm3[18],ymm8[19],ymm3[19],ymm8[20],ymm3[20],ymm8[21],ymm3[21],ymm8[22],ymm3[22],ymm8[23],ymm3[23]5454; AVX512-NEXT: vmovdqa64 %ymm3, %ymm175455; AVX512-NEXT: vmovdqa64 %xmm30, %xmm35456; AVX512-NEXT: vmovdqa64 %xmm31, %xmm75457; AVX512-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm7[8],xmm3[8],xmm7[9],xmm3[9],xmm7[10],xmm3[10],xmm7[11],xmm3[11],xmm7[12],xmm3[12],xmm7[13],xmm3[13],xmm7[14],xmm3[14],xmm7[15],xmm3[15]5458; AVX512-NEXT: vmovdqa {{.*#+}} xmm8 = [8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]5459; AVX512-NEXT: vpshufb %xmm8, %xmm5, %xmm95460; AVX512-NEXT: vpshufb %xmm8, %xmm3, %xmm35461; AVX512-NEXT: vmovdqa64 %ymm3, %ymm315462; AVX512-NEXT: vmovdqa64 %ymm19, %ymm35463; AVX512-NEXT: vpunpcklbw {{.*#+}} ymm3 = ymm11[0],ymm3[0],ymm11[1],ymm3[1],ymm11[2],ymm3[2],ymm11[3],ymm3[3],ymm11[4],ymm3[4],ymm11[5],ymm3[5],ymm11[6],ymm3[6],ymm11[7],ymm3[7],ymm11[16],ymm3[16],ymm11[17],ymm3[17],ymm11[18],ymm3[18],ymm11[19],ymm3[19],ymm11[20],ymm3[20],ymm11[21],ymm3[21],ymm11[22],ymm3[22],ymm11[23],ymm3[23]5464; AVX512-NEXT: vmovdqa64 %ymm3, %ymm195465; AVX512-NEXT: vmovdqa {{.*#+}} xmm3 = [10,u,13,u,12,u,11,u,14,u,13,u,14,u,15,u]5466; AVX512-NEXT: vmovdqa64 %xmm22, %xmm55467; AVX512-NEXT: vpshufb %xmm3, %xmm5, %xmm75468; AVX512-NEXT: vmovdqa64 %xmm29, %xmm55469; AVX512-NEXT: vpshufb %xmm3, %xmm5, %xmm35470; AVX512-NEXT: vmovdqa64 %ymm3, %ymm225471; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0]5472; AVX512-NEXT: # ymm11 = mem[0,1,0,1]5473; AVX512-NEXT: vpshufb %ymm11, %ymm6, %ymm55474; AVX512-NEXT: vpshufb %ymm11, %ymm13, %ymm65475; AVX512-NEXT: vmovdqa {{.*#+}} xmm11 = [u,10,u,13,u,12,u,11,u,14,u,13,u,14,u,15]5476; AVX512-NEXT: vmovdqa64 %xmm21, %xmm35477; AVX512-NEXT: vpshufb %xmm11, %xmm3, %xmm135478; AVX512-NEXT: vmovdqa64 %xmm27, %xmm35479; AVX512-NEXT: vpshufb %xmm11, %xmm3, %xmm115480; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0]5481; AVX512-NEXT: # ymm3 = mem[0,1,0,1]5482; AVX512-NEXT: vpshufb %ymm3, %ymm4, %ymm45483; AVX512-NEXT: vpshufb %ymm3, %ymm14, %ymm35484; AVX512-NEXT: vpshufb %xmm12, %xmm1, %xmm145485; AVX512-NEXT: vpshufb %xmm12, %xmm0, %xmm85486; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm8 = xmm8[0],xmm14[0],xmm8[1],xmm14[1],xmm8[2],xmm14[2],xmm8[3],xmm14[3],xmm8[4],xmm14[4],xmm8[5],xmm14[5],xmm8[6],xmm14[6],xmm8[7],xmm14[7]5487; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]5488; AVX512-NEXT: vprold $16, %xmm0, %xmm05489; AVX512-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm05490; AVX512-NEXT: vpshufb %xmm12, %xmm15, %xmm15491; AVX512-NEXT: vpshufb %xmm12, %xmm2, %xmm85492; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm1 = xmm8[0],xmm1[0],xmm8[1],xmm1[1],xmm8[2],xmm1[2],xmm8[3],xmm1[3],xmm8[4],xmm1[4],xmm8[5],xmm1[5],xmm8[6],xmm1[6],xmm8[7],xmm1[7]5493; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm2 = xmm2[0],xmm15[0],xmm2[1],xmm15[1],xmm2[2],xmm15[2],xmm2[3],xmm15[3],xmm2[4],xmm15[4],xmm2[5],xmm15[5],xmm2[6],xmm15[6],xmm2[7],xmm15[7]5494; AVX512-NEXT: vprold $16, %xmm2, %xmm25495; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm305496; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm10[0,0,0,1]5497; AVX512-NEXT: vprold $16, %ymm16, %ymm85498; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,0,1]5499; AVX512-NEXT: vmovdqa64 %ymm18, %ymm15500; AVX512-NEXT: vpshuflw {{.*#+}} ymm10 = ymm1[0,3,2,1,4,5,6,7,8,11,10,9,12,13,14,15]5501; AVX512-NEXT: vpshufhw {{.*#+}} ymm10 = ymm10[0,1,2,3,4,5,6,5,8,9,10,11,12,13,14,13]5502; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]5503; AVX512-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,0,1]5504; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]5505; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm13[0,0,0,1]5506; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]5507; AVX512-NEXT: vpermq {{.*#+}} ymm13 = ymm20[0,0,0,1]5508; AVX512-NEXT: vprold $16, %ymm17, %ymm145509; AVX512-NEXT: vpermq {{.*#+}} ymm15 = ymm31[0,0,0,1]5510; AVX512-NEXT: vmovdqa64 %ymm19, %ymm15511; AVX512-NEXT: vpshuflw {{.*#+}} ymm1 = ymm1[0,3,2,1,4,5,6,7,8,11,10,9,12,13,14,15]5512; AVX512-NEXT: vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6,5,8,9,10,11,12,13,14,13]5513; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]5514; AVX512-NEXT: vpermq {{.*#+}} ymm31 = ymm22[0,0,0,1]5515; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]5516; AVX512-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,0,1]5517; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]5518; AVX512-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,2,3]5519; AVX512-NEXT: vinserti64x4 $1, %ymm8, %zmm2, %zmm25520; AVX512-NEXT: vinserti64x4 $1, %ymm10, %zmm9, %zmm85521; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm9 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]5522; AVX512-NEXT: vpternlogq {{.*#+}} zmm8 = zmm2 ^ (zmm9 & (zmm8 ^ zmm2))5523; AVX512-NEXT: vinserti64x4 $1, %ymm5, %zmm7, %zmm25524; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm5 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]5525; AVX512-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm5 & (zmm2 ^ zmm8))5526; AVX512-NEXT: vpermq {{.*#+}} ymm7 = ymm14[2,2,2,3]5527; AVX512-NEXT: vinserti64x4 $1, %ymm7, %zmm13, %zmm75528; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm15, %zmm15529; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm7 ^ (zmm9 & (zmm1 ^ zmm7))5530; AVX512-NEXT: vinserti64x4 $1, %ymm6, %zmm31, %zmm65531; AVX512-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (zmm5 & (zmm6 ^ zmm1))5532; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm12, %zmm15533; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm4 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]5534; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm4 & (zmm1 ^ zmm2))5535; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm11, %zmm25536; AVX512-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm4 & (zmm2 ^ zmm6))5537; AVX512-NEXT: vpermq {{.*#+}} zmm0 = zmm0[0,0,0,1,4,4,4,5]5538; AVX512-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Folded Reload5539; AVX512-NEXT: # zmm3 = mem[0,0,0,1,4,4,4,5]5540; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm4 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]5541; AVX512-NEXT: vpternlogq {{.*#+}} zmm3 = zmm0 ^ (zmm4 & (zmm3 ^ zmm0))5542; AVX512-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload5543; AVX512-NEXT: # zmm0 = mem[0,0,0,1,4,4,4,5]5544; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm9 & (zmm0 ^ zmm3))5545; AVX512-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Folded Reload5546; AVX512-NEXT: # zmm3 = mem[0,0,0,1,4,4,4,5]5547; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm5 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]5548; AVX512-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (zmm5 & (zmm3 ^ zmm0))5549; AVX512-NEXT: vpermq {{.*#+}} zmm0 = zmm30[0,0,0,1,4,4,4,5]5550; AVX512-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm6 # 64-byte Folded Reload5551; AVX512-NEXT: # zmm6 = mem[0,0,0,1,4,4,4,5]5552; AVX512-NEXT: vpternlogq {{.*#+}} zmm6 = zmm0 ^ (zmm4 & (zmm6 ^ zmm0))5553; AVX512-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload5554; AVX512-NEXT: # zmm0 = mem[0,0,0,1,4,4,4,5]5555; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm9 & (zmm0 ^ zmm6))5556; AVX512-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm6 # 64-byte Folded Reload5557; AVX512-NEXT: # zmm6 = mem[0,0,0,1,4,4,4,5]5558; AVX512-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (zmm5 & (zmm6 ^ zmm0))5559; AVX512-NEXT: vpermq $234, (%rsp), %zmm0 # 64-byte Folded Reload5560; AVX512-NEXT: # zmm0 = mem[2,2,2,3,6,6,6,7]5561; AVX512-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm5 # 64-byte Folded Reload5562; AVX512-NEXT: # zmm5 = mem[2,2,2,3,6,6,6,7]5563; AVX512-NEXT: vpternlogq {{.*#+}} zmm5 = zmm0 ^ (zmm9 & (zmm5 ^ zmm0))5564; AVX512-NEXT: vpermq {{.*#+}} zmm0 = zmm26[2,2,2,3,6,6,6,7]5565; AVX512-NEXT: vpermq {{.*#+}} zmm7 = zmm24[2,2,2,3,6,6,6,7]5566; AVX512-NEXT: vpternlogq {{.*#+}} zmm7 = zmm0 ^ (zmm9 & (zmm7 ^ zmm0))5567; AVX512-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload5568; AVX512-NEXT: # zmm0 = mem[2,2,2,3,6,6,6,7]5569; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm4 & (zmm0 ^ zmm5))5570; AVX512-NEXT: vpermq {{.*#+}} zmm5 = zmm23[2,2,2,3,6,6,6,7]5571; AVX512-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 ^ (zmm4 & (zmm5 ^ zmm7))5572; AVX512-NEXT: vpermq {{.*#+}} zmm4 = zmm28[2,2,2,3,6,6,6,7]5573; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm7 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]5574; AVX512-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (zmm7 & (zmm4 ^ zmm0))5575; AVX512-NEXT: vpermq {{.*#+}} zmm0 = zmm25[2,2,2,3,6,6,6,7]5576; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm7 & (zmm0 ^ zmm5))5577; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax5578; AVX512-NEXT: vmovdqa64 %zmm0, 128(%rax)5579; AVX512-NEXT: vmovdqa64 %zmm4, 320(%rax)5580; AVX512-NEXT: vmovdqa64 %zmm6, (%rax)5581; AVX512-NEXT: vmovdqa64 %zmm3, 192(%rax)5582; AVX512-NEXT: vmovdqa64 %zmm2, 256(%rax)5583; AVX512-NEXT: vmovdqa64 %zmm1, 64(%rax)5584; AVX512-NEXT: addq $456, %rsp # imm = 0x1C85585; AVX512-NEXT: vzeroupper5586; AVX512-NEXT: retq5587;5588; AVX512-FCP-LABEL: store_i8_stride6_vf64:5589; AVX512-FCP: # %bb.0:5590; AVX512-FCP-NEXT: subq $280, %rsp # imm = 0x1185591; AVX512-FCP-NEXT: vmovdqa (%rcx), %ymm15592; AVX512-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5593; AVX512-FCP-NEXT: vmovdqa (%rdx), %ymm05594; AVX512-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5595; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]5596; AVX512-FCP-NEXT: vprold $16, %ymm0, %ymm185597; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm23 = [0,0,0,1,10,10,10,11]5598; AVX512-FCP-NEXT: vmovdqa (%rsi), %ymm65599; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm75600; AVX512-FCP-NEXT: vmovdqa (%r8), %ymm115601; AVX512-FCP-NEXT: vmovdqa 32(%r8), %xmm85602; AVX512-FCP-NEXT: vmovdqa (%r9), %ymm105603; AVX512-FCP-NEXT: vmovdqa 32(%r9), %xmm95604; AVX512-FCP-NEXT: vmovdqa 32(%r8), %ymm45605; AVX512-FCP-NEXT: vmovdqa 32(%r9), %ymm125606; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0]5607; AVX512-FCP-NEXT: # ymm0 = mem[0,1,0,1]5608; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm4, %ymm25609; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0]5610; AVX512-FCP-NEXT: # ymm1 = mem[0,1,0,1]5611; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm35612; AVX512-FCP-NEXT: vmovdqa64 %ymm4, %ymm215613; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm3, %zmm25614; AVX512-FCP-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5615; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15]5616; AVX512-FCP-NEXT: # ymm3 = mem[0,1,0,1]5617; AVX512-FCP-NEXT: vpshufb %ymm3, %ymm12, %ymm25618; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0]5619; AVX512-FCP-NEXT: # ymm4 = mem[0,1,0,1]5620; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm12, %ymm55621; AVX512-FCP-NEXT: vmovdqa64 %ymm12, %ymm225622; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm5, %zmm25623; AVX512-FCP-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5624; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm11, %ymm05625; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm11, %ymm15626; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm305627; AVX512-FCP-NEXT: vpshufb %ymm3, %ymm10, %ymm05628; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm10, %ymm15629; AVX512-FCP-NEXT: vmovdqa64 %ymm10, %ymm195630; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm05631; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5632; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm8[6,u,5,u,8,u,7,u,9,u,9,u,9,u,9,u]5633; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm8[2,u,1,u,0,u,3,u,4,u,4,u,4,u,4,u]5634; AVX512-FCP-NEXT: vmovdqa64 %xmm8, %xmm165635; AVX512-FCP-NEXT: vinserti32x4 $2, %xmm0, %zmm1, %zmm05636; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5637; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm9[u,6,u,5,u,8,u,7,u,9,u,9,u,9,u,9]5638; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm9[u,2,u,1,u,0,u,3,u,4,u,4,u,4,u,4]5639; AVX512-FCP-NEXT: vmovdqa64 %xmm9, %xmm175640; AVX512-FCP-NEXT: vinserti32x4 $2, %xmm0, %zmm1, %zmm05641; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5642; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm7[0],ymm6[0],ymm7[1],ymm6[1],ymm7[2],ymm6[2],ymm7[3],ymm6[3],ymm7[4],ymm6[4],ymm7[5],ymm6[5],ymm7[6],ymm6[6],ymm7[7],ymm6[7],ymm7[16],ymm6[16],ymm7[17],ymm6[17],ymm7[18],ymm6[18],ymm7[19],ymm6[19],ymm7[20],ymm6[20],ymm7[21],ymm6[21],ymm7[22],ymm6[22],ymm7[23],ymm6[23]5643; AVX512-FCP-NEXT: vmovdqa64 %ymm7, %ymm295644; AVX512-FCP-NEXT: vmovdqa64 %ymm6, %ymm285645; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm15 = [16,17,22,23,20,21,18,19,24,25,26,27,28,29,26,27,16,17,22,23,20,21,18,19,24,25,26,27,28,29,26,27]5646; AVX512-FCP-NEXT: # ymm15 = mem[0,1,0,1]5647; AVX512-FCP-NEXT: vpshufb %ymm15, %ymm0, %ymm05648; AVX512-FCP-NEXT: vmovdqa (%rsi), %xmm25649; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm15650; AVX512-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5651; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]5652; AVX512-FCP-NEXT: vmovdqa64 %xmm2, %xmm315653; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm13 = [8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]5654; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm1, %xmm15655; AVX512-FCP-NEXT: vpermt2q %zmm0, %zmm23, %zmm15656; AVX512-FCP-NEXT: vmovdqa (%rcx), %xmm25657; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm35658; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm3[8],xmm2[8],xmm3[9],xmm2[9],xmm3[10],xmm2[10],xmm3[11],xmm2[11],xmm3[12],xmm2[12],xmm3[13],xmm2[13],xmm3[14],xmm2[14],xmm3[15],xmm2[15]5659; AVX512-FCP-NEXT: vmovdqa64 %xmm3, %xmm275660; AVX512-FCP-NEXT: vmovdqa64 %xmm2, %xmm265661; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm6 = [10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]5662; AVX512-FCP-NEXT: vpshufb %xmm6, %xmm0, %xmm05663; AVX512-FCP-NEXT: vpermt2q %zmm18, %zmm23, %zmm05664; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm18 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]5665; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm0 ^ (zmm18 & (zmm1 ^ zmm0))5666; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm12 = [2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0]5667; AVX512-FCP-NEXT: # ymm12 = mem[0,1,0,1]5668; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm11, %ymm25669; AVX512-FCP-NEXT: vmovdqa (%r8), %xmm105670; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm8 = [10,u,13,u,12,u,11,u,14,u,13,u,14,u,15,u]5671; AVX512-FCP-NEXT: vpshufb %xmm8, %xmm10, %xmm05672; AVX512-FCP-NEXT: vpermt2q %zmm2, %zmm23, %zmm05673; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm24 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]5674; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm24 & (zmm0 ^ zmm1))5675; AVX512-FCP-NEXT: vmovdqa 32(%rcx), %ymm75676; AVX512-FCP-NEXT: vmovdqa 32(%rdx), %ymm55677; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm5[0],ymm7[0],ymm5[1],ymm7[1],ymm5[2],ymm7[2],ymm5[3],ymm7[3],ymm5[4],ymm7[4],ymm5[5],ymm7[5],ymm5[6],ymm7[6],ymm5[7],ymm7[7],ymm5[16],ymm7[16],ymm5[17],ymm7[17],ymm5[18],ymm7[18],ymm5[19],ymm7[19],ymm5[20],ymm7[20],ymm5[21],ymm7[21],ymm5[22],ymm7[22],ymm5[23],ymm7[23]5678; AVX512-FCP-NEXT: vprold $16, %ymm4, %ymm255679; AVX512-FCP-NEXT: vmovdqa 32(%rcx), %xmm45680; AVX512-FCP-NEXT: vmovdqa 32(%rdx), %xmm115681; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm11[8],xmm4[8],xmm11[9],xmm4[9],xmm11[10],xmm4[10],xmm11[11],xmm4[11],xmm11[12],xmm4[12],xmm11[13],xmm4[13],xmm11[14],xmm4[14],xmm11[15],xmm4[15]5682; AVX512-FCP-NEXT: vpshufb %xmm6, %xmm9, %xmm95683; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %ymm25684; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %ymm15685; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[2],ymm2[2],ymm1[3],ymm2[3],ymm1[4],ymm2[4],ymm1[5],ymm2[5],ymm1[6],ymm2[6],ymm1[7],ymm2[7],ymm1[16],ymm2[16],ymm1[17],ymm2[17],ymm1[18],ymm2[18],ymm1[19],ymm2[19],ymm1[20],ymm2[20],ymm1[21],ymm2[21],ymm1[22],ymm2[22],ymm1[23],ymm2[23]5686; AVX512-FCP-NEXT: vpshufb %ymm15, %ymm6, %ymm35687; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %xmm65688; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %xmm155689; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} xmm14 = xmm15[8],xmm6[8],xmm15[9],xmm6[9],xmm15[10],xmm6[10],xmm15[11],xmm6[11],xmm15[12],xmm6[12],xmm15[13],xmm6[13],xmm15[14],xmm6[14],xmm15[15],xmm6[15]5690; AVX512-FCP-NEXT: vmovdqa64 %xmm6, %xmm205691; AVX512-FCP-NEXT: vpshufb %xmm13, %xmm14, %xmm135692; AVX512-FCP-NEXT: vpermt2q %zmm3, %zmm23, %zmm135693; AVX512-FCP-NEXT: vpermt2q %zmm25, %zmm23, %zmm95694; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm13 = zmm9 ^ (zmm18 & (zmm13 ^ zmm9))5695; AVX512-FCP-NEXT: vmovdqa64 %ymm21, %ymm35696; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm3, %ymm35697; AVX512-FCP-NEXT: vmovdqa64 %xmm16, %xmm65698; AVX512-FCP-NEXT: vpshufb %xmm8, %xmm6, %xmm95699; AVX512-FCP-NEXT: vpermt2q %zmm3, %zmm23, %zmm95700; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm9 = zmm9 ^ (zmm24 & (zmm9 ^ zmm13))5701; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0]5702; AVX512-FCP-NEXT: # ymm8 = mem[0,1,0,1]5703; AVX512-FCP-NEXT: vmovdqa64 %ymm19, %ymm35704; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm3, %ymm125705; AVX512-FCP-NEXT: vmovdqa (%r9), %xmm135706; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm14 = [u,10,u,13,u,12,u,11,u,14,u,13,u,14,u,15]5707; AVX512-FCP-NEXT: vpshufb %xmm14, %xmm13, %xmm35708; AVX512-FCP-NEXT: vpermt2q %zmm12, %zmm23, %zmm35709; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm12 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]5710; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (zmm12 & (zmm3 ^ zmm0))5711; AVX512-FCP-NEXT: vmovdqa64 %ymm22, %ymm05712; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm0, %ymm05713; AVX512-FCP-NEXT: vmovdqa64 %xmm17, %xmm65714; AVX512-FCP-NEXT: vpshufb %xmm14, %xmm6, %xmm85715; AVX512-FCP-NEXT: vpermt2q %zmm0, %zmm23, %zmm85716; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 ^ (zmm12 & (zmm8 ^ zmm9))5717; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} ymm0 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]5718; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm2, %ymm95719; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm1, %ymm125720; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm9 = ymm12[0],ymm9[0],ymm12[1],ymm9[1],ymm12[2],ymm9[2],ymm12[3],ymm9[3],ymm12[4],ymm9[4],ymm12[5],ymm9[5],ymm12[6],ymm9[6],ymm12[7],ymm9[7],ymm12[16],ymm9[16],ymm12[17],ymm9[17],ymm12[18],ymm9[18],ymm12[19],ymm9[19],ymm12[20],ymm9[20],ymm12[21],ymm9[21],ymm12[22],ymm9[22],ymm12[23],ymm9[23]5721; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} ymm1 = ymm1[8],ymm2[8],ymm1[9],ymm2[9],ymm1[10],ymm2[10],ymm1[11],ymm2[11],ymm1[12],ymm2[12],ymm1[13],ymm2[13],ymm1[14],ymm2[14],ymm1[15],ymm2[15],ymm1[24],ymm2[24],ymm1[25],ymm2[25],ymm1[26],ymm2[26],ymm1[27],ymm2[27],ymm1[28],ymm2[28],ymm1[29],ymm2[29],ymm1[30],ymm2[30],ymm1[31],ymm2[31]5722; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]5723; AVX512-FCP-NEXT: # ymm2 = mem[0,1,0,1]5724; AVX512-FCP-NEXT: vpshufb %ymm2, %ymm1, %ymm15725; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm14 = [2,2,2,3,10,10,10,11]5726; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm14, %zmm95727; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} ymm12 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]5728; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm7, %ymm15729; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm5, %ymm65730; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm6[0],ymm1[0],ymm6[1],ymm1[1],ymm6[2],ymm1[2],ymm6[3],ymm1[3],ymm6[4],ymm1[4],ymm6[5],ymm1[5],ymm6[6],ymm1[6],ymm6[7],ymm1[7],ymm6[16],ymm1[16],ymm6[17],ymm1[17],ymm6[18],ymm1[18],ymm6[19],ymm1[19],ymm6[20],ymm1[20],ymm6[21],ymm1[21],ymm6[22],ymm1[22],ymm6[23],ymm1[23]5731; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} ymm5 = ymm5[8],ymm7[8],ymm5[9],ymm7[9],ymm5[10],ymm7[10],ymm5[11],ymm7[11],ymm5[12],ymm7[12],ymm5[13],ymm7[13],ymm5[14],ymm7[14],ymm5[15],ymm7[15],ymm5[24],ymm7[24],ymm5[25],ymm7[25],ymm5[26],ymm7[26],ymm5[27],ymm7[27],ymm5[28],ymm7[28],ymm5[29],ymm7[29],ymm5[30],ymm7[30],ymm5[31],ymm7[31]5732; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm6 = [26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]5733; AVX512-FCP-NEXT: # ymm6 = mem[0,1,0,1]5734; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm5, %ymm55735; AVX512-FCP-NEXT: vpermt2q %zmm5, %zmm14, %zmm15736; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm9 ^ (zmm18 & (zmm1 ^ zmm9))5737; AVX512-FCP-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm9 # 64-byte Folded Reload5738; AVX512-FCP-NEXT: # zmm9 = mem[2,2,2,3,6,6,6,7]5739; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm22 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]5740; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm9 = zmm9 ^ (zmm22 & (zmm9 ^ zmm1))5741; AVX512-FCP-NEXT: vmovdqa64 %ymm28, %ymm55742; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm5, %ymm15743; AVX512-FCP-NEXT: vmovdqa64 %ymm29, %ymm75744; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm7, %ymm05745; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]5746; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} ymm1 = ymm7[8],ymm5[8],ymm7[9],ymm5[9],ymm7[10],ymm5[10],ymm7[11],ymm5[11],ymm7[12],ymm5[12],ymm7[13],ymm5[13],ymm7[14],ymm5[14],ymm7[15],ymm5[15],ymm7[24],ymm5[24],ymm7[25],ymm5[25],ymm7[26],ymm5[26],ymm7[27],ymm5[27],ymm7[28],ymm5[28],ymm7[29],ymm5[29],ymm7[30],ymm5[30],ymm7[31],ymm5[31]5747; AVX512-FCP-NEXT: vpshufb %ymm2, %ymm1, %ymm15748; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm14, %zmm05749; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload5750; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm7, %ymm15751; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload5752; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm5, %ymm25753; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm2[0],ymm1[0],ymm2[1],ymm1[1],ymm2[2],ymm1[2],ymm2[3],ymm1[3],ymm2[4],ymm1[4],ymm2[5],ymm1[5],ymm2[6],ymm1[6],ymm2[7],ymm1[7],ymm2[16],ymm1[16],ymm2[17],ymm1[17],ymm2[18],ymm1[18],ymm2[19],ymm1[19],ymm2[20],ymm1[20],ymm2[21],ymm1[21],ymm2[22],ymm1[22],ymm2[23],ymm1[23]5754; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm5[8],ymm7[8],ymm5[9],ymm7[9],ymm5[10],ymm7[10],ymm5[11],ymm7[11],ymm5[12],ymm7[12],ymm5[13],ymm7[13],ymm5[14],ymm7[14],ymm5[15],ymm7[15],ymm5[24],ymm7[24],ymm5[25],ymm7[25],ymm5[26],ymm7[26],ymm5[27],ymm7[27],ymm5[28],ymm7[28],ymm5[29],ymm7[29],ymm5[30],ymm7[30],ymm5[31],ymm7[31]5755; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm25756; AVX512-FCP-NEXT: vpermt2q %zmm2, %zmm14, %zmm15757; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm0 ^ (zmm18 & (zmm1 ^ zmm0))5758; AVX512-FCP-NEXT: vpermq {{.*#+}} zmm2 = zmm30[2,2,2,3,6,6,6,7]5759; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm22 & (zmm2 ^ zmm1))5760; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm10[6,u,5,u,8,u,7,u,9,u,9,u,9,u,9,u]5761; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm10[2,u,1,u,0,u,3,u,4,u,4,u,4,u,4,u]5762; AVX512-FCP-NEXT: vinserti32x4 $2, %xmm0, %zmm1, %zmm05763; AVX512-FCP-NEXT: vpshufb %xmm12, %xmm4, %xmm15764; AVX512-FCP-NEXT: vpshufb %xmm12, %xmm11, %xmm55765; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm1 = xmm5[0],xmm1[0],xmm5[1],xmm1[1],xmm5[2],xmm1[2],xmm5[3],xmm1[3],xmm5[4],xmm1[4],xmm5[5],xmm1[5],xmm5[6],xmm1[6],xmm5[7],xmm1[7]5766; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm11[0],xmm4[0],xmm11[1],xmm4[1],xmm11[2],xmm4[2],xmm11[3],xmm4[3],xmm11[4],xmm4[4],xmm11[5],xmm4[5],xmm11[6],xmm4[6],xmm11[7],xmm4[7]5767; AVX512-FCP-NEXT: vprold $16, %xmm4, %xmm45768; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm5 = [0,0,0,1,8,8,8,9]5769; AVX512-FCP-NEXT: vpermt2q %zmm1, %zmm5, %zmm45770; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm13[u,6,u,5,u,8,u,7,u,9,u,9,u,9,u,9]5771; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm6 = xmm13[u,2,u,1,u,0,u,3,u,4,u,4,u,4,u,4]5772; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} xmm7 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]5773; AVX512-FCP-NEXT: vinserti32x4 $2, %xmm1, %zmm6, %zmm15774; AVX512-FCP-NEXT: vmovdqa64 %xmm20, %xmm115775; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm11, %xmm65776; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm15, %xmm105777; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} xmm6 = xmm10[8],xmm6[8],xmm10[9],xmm6[9],xmm10[10],xmm6[10],xmm10[11],xmm6[11],xmm10[12],xmm6[12],xmm10[13],xmm6[13],xmm10[14],xmm6[14],xmm10[15],xmm6[15]5778; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm10 = xmm15[0],xmm11[0],xmm15[1],xmm11[1],xmm15[2],xmm11[2],xmm15[3],xmm11[3],xmm15[4],xmm11[4],xmm15[5],xmm11[5],xmm15[6],xmm11[6],xmm15[7],xmm11[7]5779; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm11 = [0,1,6,7,4,5,2,3,8,9,10,11,12,13,10,11]5780; AVX512-FCP-NEXT: vpshufb %xmm11, %xmm10, %xmm105781; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm5, %zmm105782; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm10 = zmm4 ^ (zmm22 & (zmm10 ^ zmm4))5783; AVX512-FCP-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Folded Reload5784; AVX512-FCP-NEXT: # zmm4 = mem[0,0,0,1,4,4,4,5]5785; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (zmm18 & (zmm4 ^ zmm10))5786; AVX512-FCP-NEXT: vmovdqa64 %xmm26, %xmm145787; AVX512-FCP-NEXT: vpshufb %xmm12, %xmm14, %xmm65788; AVX512-FCP-NEXT: vmovdqa64 %xmm27, %xmm135789; AVX512-FCP-NEXT: vpshufb %xmm12, %xmm13, %xmm105790; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm6 = xmm10[0],xmm6[0],xmm10[1],xmm6[1],xmm10[2],xmm6[2],xmm10[3],xmm6[3],xmm10[4],xmm6[4],xmm10[5],xmm6[5],xmm10[6],xmm6[6],xmm10[7],xmm6[7]5791; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm10 = xmm13[0],xmm14[0],xmm13[1],xmm14[1],xmm13[2],xmm14[2],xmm13[3],xmm14[3],xmm13[4],xmm14[4],xmm13[5],xmm14[5],xmm13[6],xmm14[6],xmm13[7],xmm14[7]5792; AVX512-FCP-NEXT: vprold $16, %xmm10, %xmm105793; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm5, %zmm105794; AVX512-FCP-NEXT: vmovdqa64 %xmm31, %xmm135795; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm13, %xmm65796; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload5797; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm12, %xmm75798; AVX512-FCP-NEXT: vpunpckhbw {{.*#+}} xmm6 = xmm7[8],xmm6[8],xmm7[9],xmm6[9],xmm7[10],xmm6[10],xmm7[11],xmm6[11],xmm7[12],xmm6[12],xmm7[13],xmm6[13],xmm7[14],xmm6[14],xmm7[15],xmm6[15]5799; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm12[0],xmm13[0],xmm12[1],xmm13[1],xmm12[2],xmm13[2],xmm12[3],xmm13[3],xmm12[4],xmm13[4],xmm12[5],xmm13[5],xmm12[6],xmm13[6],xmm12[7],xmm13[7]5800; AVX512-FCP-NEXT: vpshufb %xmm11, %xmm7, %xmm75801; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm5, %zmm75802; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm10 ^ (zmm22 & (zmm7 ^ zmm10))5803; AVX512-FCP-NEXT: vpermq {{.*#+}} zmm0 = zmm0[0,0,0,1,4,4,4,5]5804; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm18 & (zmm0 ^ zmm7))5805; AVX512-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax5806; AVX512-FCP-NEXT: vmovdqa64 %zmm8, 256(%rax)5807; AVX512-FCP-NEXT: vmovdqa64 %zmm3, 64(%rax)5808; AVX512-FCP-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Folded Reload5809; AVX512-FCP-NEXT: # zmm3 = mem[2,2,2,3,6,6,6,7]5810; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm5 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]5811; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (zmm5 & (zmm3 ^ zmm9))5812; AVX512-FCP-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm6 # 64-byte Folded Reload5813; AVX512-FCP-NEXT: # zmm6 = mem[2,2,2,3,6,6,6,7]5814; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (zmm5 & (zmm6 ^ zmm2))5815; AVX512-FCP-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Folded Reload5816; AVX512-FCP-NEXT: # zmm2 = mem[0,0,0,1,4,4,4,5]5817; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm5 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]5818; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm5 & (zmm2 ^ zmm4))5819; AVX512-FCP-NEXT: vpermq {{.*#+}} zmm1 = zmm1[0,0,0,1,4,4,4,5]5820; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm5 & (zmm1 ^ zmm0))5821; AVX512-FCP-NEXT: vmovdqa64 %zmm1, (%rax)5822; AVX512-FCP-NEXT: vmovdqa64 %zmm2, 192(%rax)5823; AVX512-FCP-NEXT: vmovdqa64 %zmm6, 128(%rax)5824; AVX512-FCP-NEXT: vmovdqa64 %zmm3, 320(%rax)5825; AVX512-FCP-NEXT: addq $280, %rsp # imm = 0x1185826; AVX512-FCP-NEXT: vzeroupper5827; AVX512-FCP-NEXT: retq5828;5829; AVX512DQ-LABEL: store_i8_stride6_vf64:5830; AVX512DQ: # %bb.0:5831; AVX512DQ-NEXT: subq $456, %rsp # imm = 0x1C85832; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm65833; AVX512DQ-NEXT: vmovdqa 32(%rsi), %xmm35834; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm75835; AVX512DQ-NEXT: vmovdqa 32(%rdi), %xmm25836; AVX512DQ-NEXT: vmovdqa (%r8), %xmm105837; AVX512DQ-NEXT: vmovdqa 32(%r8), %xmm45838; AVX512DQ-NEXT: vmovdqa (%r9), %xmm125839; AVX512DQ-NEXT: vmovdqa 32(%r9), %xmm85840; AVX512DQ-NEXT: vmovdqa 32(%rcx), %ymm135841; AVX512DQ-NEXT: vpbroadcastq {{.*#+}} xmm9 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]5842; AVX512DQ-NEXT: vpshufb %xmm9, %xmm3, %xmm05843; AVX512DQ-NEXT: vpshufb %xmm9, %xmm2, %xmm15844; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15]5845; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm1 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]5846; AVX512DQ-NEXT: vmovdqa64 %xmm3, %xmm305847; AVX512DQ-NEXT: vmovdqa64 %xmm2, %xmm315848; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]5849; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,5]5850; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm05851; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5852; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm0 = [6,u,5,u,8,u,7,u,9,u,9,u,9,u,9,u]5853; AVX512DQ-NEXT: vpshufb %xmm0, %xmm4, %xmm25854; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm1 = [2,u,1,u,0,u,3,u,4,u,4,u,4,u,4,u]5855; AVX512DQ-NEXT: vpshufb %xmm1, %xmm4, %xmm35856; AVX512DQ-NEXT: vmovdqa64 %xmm4, %xmm295857; AVX512DQ-NEXT: vinserti32x4 $2, %xmm2, %zmm3, %zmm25858; AVX512DQ-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5859; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm2 = [u,6,u,5,u,8,u,7,u,9,u,9,u,9,u,9]5860; AVX512DQ-NEXT: vpshufb %xmm2, %xmm8, %xmm45861; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm3 = [u,2,u,1,u,0,u,3,u,4,u,4,u,4,u,4]5862; AVX512DQ-NEXT: vpshufb %xmm3, %xmm8, %xmm55863; AVX512DQ-NEXT: vmovdqa64 %xmm8, %xmm275864; AVX512DQ-NEXT: vinserti32x4 $2, %xmm4, %zmm5, %zmm45865; AVX512DQ-NEXT: vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5866; AVX512DQ-NEXT: vmovdqa 32(%rdx), %ymm85867; AVX512DQ-NEXT: vpshufb %xmm9, %xmm6, %xmm45868; AVX512DQ-NEXT: vpshufb %xmm9, %xmm7, %xmm55869; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} xmm4 = xmm5[8],xmm4[8],xmm5[9],xmm4[9],xmm5[10],xmm4[10],xmm5[11],xmm4[11],xmm5[12],xmm4[12],xmm5[13],xmm4[13],xmm5[14],xmm4[14],xmm5[15],xmm4[15]5870; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3],xmm7[4],xmm6[4],xmm7[5],xmm6[5],xmm7[6],xmm6[6],xmm7[7],xmm6[7]5871; AVX512DQ-NEXT: vmovdqa64 %xmm7, %xmm185872; AVX512DQ-NEXT: vmovdqa64 %xmm6, %xmm205873; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,3,2,1,4,5,6,7]5874; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,6,5]5875; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm5, %zmm45876; AVX512DQ-NEXT: vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5877; AVX512DQ-NEXT: vmovdqa 32(%rsi), %ymm45878; AVX512DQ-NEXT: vmovdqa 32(%rdi), %ymm115879; AVX512DQ-NEXT: vpshufb %xmm0, %xmm10, %xmm05880; AVX512DQ-NEXT: vpshufb %xmm1, %xmm10, %xmm15881; AVX512DQ-NEXT: vmovdqa64 %xmm10, %xmm225882; AVX512DQ-NEXT: vinserti32x4 $2, %xmm0, %zmm1, %zmm05883; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5884; AVX512DQ-NEXT: vpshufb %xmm2, %xmm12, %xmm05885; AVX512DQ-NEXT: vpshufb %xmm3, %xmm12, %xmm15886; AVX512DQ-NEXT: vmovdqa64 %xmm12, %xmm215887; AVX512DQ-NEXT: vinserti32x4 $2, %xmm0, %zmm1, %zmm05888; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5889; AVX512DQ-NEXT: vpbroadcastq {{.*#+}} ymm15 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]5890; AVX512DQ-NEXT: vpshufb %ymm15, %ymm4, %ymm05891; AVX512DQ-NEXT: vpshufb %ymm15, %ymm11, %ymm15892; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[2],ymm0[2],ymm1[3],ymm0[3],ymm1[4],ymm0[4],ymm1[5],ymm0[5],ymm1[6],ymm0[6],ymm1[7],ymm0[7],ymm1[16],ymm0[16],ymm1[17],ymm0[17],ymm1[18],ymm0[18],ymm1[19],ymm0[19],ymm1[20],ymm0[20],ymm1[21],ymm0[21],ymm1[22],ymm0[22],ymm1[23],ymm0[23]5893; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm1 = ymm11[8],ymm4[8],ymm11[9],ymm4[9],ymm11[10],ymm4[10],ymm11[11],ymm4[11],ymm11[12],ymm4[12],ymm11[13],ymm4[13],ymm11[14],ymm4[14],ymm11[15],ymm4[15],ymm11[24],ymm4[24],ymm11[25],ymm4[25],ymm11[26],ymm4[26],ymm11[27],ymm4[27],ymm11[28],ymm4[28],ymm11[29],ymm4[29],ymm11[30],ymm4[30],ymm11[31],ymm4[31]5894; AVX512DQ-NEXT: vmovdqa64 %ymm4, %ymm195895; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm6 = [24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]5896; AVX512DQ-NEXT: # ymm6 = mem[0,1,0,1]5897; AVX512DQ-NEXT: vpshufb %ymm6, %ymm1, %ymm15898; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm05899; AVX512DQ-NEXT: vmovdqu64 %zmm0, (%rsp) # 64-byte Spill5900; AVX512DQ-NEXT: vpbroadcastq {{.*#+}} ymm12 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]5901; AVX512DQ-NEXT: vpshufb %ymm12, %ymm13, %ymm05902; AVX512DQ-NEXT: vpshufb %ymm12, %ymm8, %ymm15903; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[2],ymm0[2],ymm1[3],ymm0[3],ymm1[4],ymm0[4],ymm1[5],ymm0[5],ymm1[6],ymm0[6],ymm1[7],ymm0[7],ymm1[16],ymm0[16],ymm1[17],ymm0[17],ymm1[18],ymm0[18],ymm1[19],ymm0[19],ymm1[20],ymm0[20],ymm1[21],ymm0[21],ymm1[22],ymm0[22],ymm1[23],ymm0[23]5904; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm1 = ymm8[8],ymm13[8],ymm8[9],ymm13[9],ymm8[10],ymm13[10],ymm8[11],ymm13[11],ymm8[12],ymm13[12],ymm8[13],ymm13[13],ymm8[14],ymm13[14],ymm8[15],ymm13[15],ymm8[24],ymm13[24],ymm8[25],ymm13[25],ymm8[26],ymm13[26],ymm8[27],ymm13[27],ymm8[28],ymm13[28],ymm8[29],ymm13[29],ymm8[30],ymm13[30],ymm8[31],ymm13[31]5905; AVX512DQ-NEXT: vmovdqa64 %ymm13, %ymm175906; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]5907; AVX512DQ-NEXT: # ymm7 = mem[0,1,0,1]5908; AVX512DQ-NEXT: vpshufb %ymm7, %ymm1, %ymm15909; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm05910; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5911; AVX512DQ-NEXT: vmovdqa 32(%r8), %ymm135912; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm5 = [10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0]5913; AVX512DQ-NEXT: # ymm5 = mem[0,1,0,1]5914; AVX512DQ-NEXT: vpshufb %ymm5, %ymm13, %ymm05915; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0]5916; AVX512DQ-NEXT: # ymm4 = mem[0,1,0,1]5917; AVX512DQ-NEXT: vpshufb %ymm4, %ymm13, %ymm15918; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm05919; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5920; AVX512DQ-NEXT: vmovdqa 32(%r9), %ymm145921; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15]5922; AVX512DQ-NEXT: # ymm3 = mem[0,1,0,1]5923; AVX512DQ-NEXT: vpshufb %ymm3, %ymm14, %ymm05924; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0]5925; AVX512DQ-NEXT: # ymm2 = mem[0,1,0,1]5926; AVX512DQ-NEXT: vpshufb %ymm2, %ymm14, %ymm15927; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm285928; AVX512DQ-NEXT: vmovdqa (%rsi), %ymm15929; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm05930; AVX512DQ-NEXT: vpshufb %ymm15, %ymm1, %ymm105931; AVX512DQ-NEXT: vpshufb %ymm15, %ymm0, %ymm155932; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm10 = ymm15[0],ymm10[0],ymm15[1],ymm10[1],ymm15[2],ymm10[2],ymm15[3],ymm10[3],ymm15[4],ymm10[4],ymm15[5],ymm10[5],ymm15[6],ymm10[6],ymm15[7],ymm10[7],ymm15[16],ymm10[16],ymm15[17],ymm10[17],ymm15[18],ymm10[18],ymm15[19],ymm10[19],ymm15[20],ymm10[20],ymm15[21],ymm10[21],ymm15[22],ymm10[22],ymm15[23],ymm10[23]5933; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm15 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31]5934; AVX512DQ-NEXT: vpshufb %ymm6, %ymm15, %ymm65935; AVX512DQ-NEXT: vinserti64x4 $1, %ymm6, %zmm10, %zmm265936; AVX512DQ-NEXT: vmovdqa (%rcx), %ymm105937; AVX512DQ-NEXT: vmovdqa (%rdx), %ymm155938; AVX512DQ-NEXT: vpshufb %ymm12, %ymm10, %ymm65939; AVX512DQ-NEXT: vpshufb %ymm12, %ymm15, %ymm95940; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm9[0],ymm6[0],ymm9[1],ymm6[1],ymm9[2],ymm6[2],ymm9[3],ymm6[3],ymm9[4],ymm6[4],ymm9[5],ymm6[5],ymm9[6],ymm6[6],ymm9[7],ymm6[7],ymm9[16],ymm6[16],ymm9[17],ymm6[17],ymm9[18],ymm6[18],ymm9[19],ymm6[19],ymm9[20],ymm6[20],ymm9[21],ymm6[21],ymm9[22],ymm6[22],ymm9[23],ymm6[23]5941; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm9 = ymm15[8],ymm10[8],ymm15[9],ymm10[9],ymm15[10],ymm10[10],ymm15[11],ymm10[11],ymm15[12],ymm10[12],ymm15[13],ymm10[13],ymm15[14],ymm10[14],ymm15[15],ymm10[15],ymm15[24],ymm10[24],ymm15[25],ymm10[25],ymm15[26],ymm10[26],ymm15[27],ymm10[27],ymm15[28],ymm10[28],ymm15[29],ymm10[29],ymm15[30],ymm10[30],ymm15[31],ymm10[31]5942; AVX512DQ-NEXT: vpshufb %ymm7, %ymm9, %ymm95943; AVX512DQ-NEXT: vinserti64x4 $1, %ymm9, %zmm6, %zmm245944; AVX512DQ-NEXT: vmovdqa (%r8), %ymm65945; AVX512DQ-NEXT: vpshufb %ymm5, %ymm6, %ymm55946; AVX512DQ-NEXT: vpshufb %ymm4, %ymm6, %ymm45947; AVX512DQ-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm235948; AVX512DQ-NEXT: vmovdqa (%r9), %ymm45949; AVX512DQ-NEXT: vpshufb %ymm3, %ymm4, %ymm35950; AVX512DQ-NEXT: vpshufb %ymm2, %ymm4, %ymm25951; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm2, %zmm255952; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm15[0],ymm10[0],ymm15[1],ymm10[1],ymm15[2],ymm10[2],ymm15[3],ymm10[3],ymm15[4],ymm10[4],ymm15[5],ymm10[5],ymm15[6],ymm10[6],ymm15[7],ymm10[7],ymm15[16],ymm10[16],ymm15[17],ymm10[17],ymm15[18],ymm10[18],ymm15[19],ymm10[19],ymm15[20],ymm10[20],ymm15[21],ymm10[21],ymm15[22],ymm10[22],ymm15[23],ymm10[23]5953; AVX512DQ-NEXT: vmovdqa64 %ymm2, %ymm165954; AVX512DQ-NEXT: vmovdqa64 %xmm18, %xmm25955; AVX512DQ-NEXT: vmovdqa64 %xmm20, %xmm35956; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm2[8],xmm3[8],xmm2[9],xmm3[9],xmm2[10],xmm3[10],xmm2[11],xmm3[11],xmm2[12],xmm3[12],xmm2[13],xmm3[13],xmm2[14],xmm3[14],xmm2[15],xmm3[15]5957; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]5958; AVX512DQ-NEXT: vmovdqa64 %ymm0, %ymm185959; AVX512DQ-NEXT: vmovdqa (%rcx), %xmm155960; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm25961; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm2[8],xmm15[8],xmm2[9],xmm15[9],xmm2[10],xmm15[10],xmm2[11],xmm15[11],xmm2[12],xmm15[12],xmm2[13],xmm15[13],xmm2[14],xmm15[14],xmm2[15],xmm15[15]5962; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm3 = [10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]5963; AVX512DQ-NEXT: vpshufb %xmm3, %xmm1, %xmm105964; AVX512DQ-NEXT: vmovdqa 32(%rcx), %xmm15965; AVX512DQ-NEXT: vmovdqa 32(%rdx), %xmm05966; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]5967; AVX512DQ-NEXT: vpshufb %xmm3, %xmm9, %xmm35968; AVX512DQ-NEXT: vmovdqa64 %ymm3, %ymm205969; AVX512DQ-NEXT: vmovdqa64 %ymm17, %ymm35970; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm3 = ymm8[0],ymm3[0],ymm8[1],ymm3[1],ymm8[2],ymm3[2],ymm8[3],ymm3[3],ymm8[4],ymm3[4],ymm8[5],ymm3[5],ymm8[6],ymm3[6],ymm8[7],ymm3[7],ymm8[16],ymm3[16],ymm8[17],ymm3[17],ymm8[18],ymm3[18],ymm8[19],ymm3[19],ymm8[20],ymm3[20],ymm8[21],ymm3[21],ymm8[22],ymm3[22],ymm8[23],ymm3[23]5971; AVX512DQ-NEXT: vmovdqa64 %ymm3, %ymm175972; AVX512DQ-NEXT: vmovdqa64 %xmm30, %xmm35973; AVX512DQ-NEXT: vmovdqa64 %xmm31, %xmm75974; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm7[8],xmm3[8],xmm7[9],xmm3[9],xmm7[10],xmm3[10],xmm7[11],xmm3[11],xmm7[12],xmm3[12],xmm7[13],xmm3[13],xmm7[14],xmm3[14],xmm7[15],xmm3[15]5975; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm8 = [8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]5976; AVX512DQ-NEXT: vpshufb %xmm8, %xmm5, %xmm95977; AVX512DQ-NEXT: vpshufb %xmm8, %xmm3, %xmm35978; AVX512DQ-NEXT: vmovdqa64 %ymm3, %ymm315979; AVX512DQ-NEXT: vmovdqa64 %ymm19, %ymm35980; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm3 = ymm11[0],ymm3[0],ymm11[1],ymm3[1],ymm11[2],ymm3[2],ymm11[3],ymm3[3],ymm11[4],ymm3[4],ymm11[5],ymm3[5],ymm11[6],ymm3[6],ymm11[7],ymm3[7],ymm11[16],ymm3[16],ymm11[17],ymm3[17],ymm11[18],ymm3[18],ymm11[19],ymm3[19],ymm11[20],ymm3[20],ymm11[21],ymm3[21],ymm11[22],ymm3[22],ymm11[23],ymm3[23]5981; AVX512DQ-NEXT: vmovdqa64 %ymm3, %ymm195982; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm3 = [10,u,13,u,12,u,11,u,14,u,13,u,14,u,15,u]5983; AVX512DQ-NEXT: vmovdqa64 %xmm22, %xmm55984; AVX512DQ-NEXT: vpshufb %xmm3, %xmm5, %xmm75985; AVX512DQ-NEXT: vmovdqa64 %xmm29, %xmm55986; AVX512DQ-NEXT: vpshufb %xmm3, %xmm5, %xmm35987; AVX512DQ-NEXT: vmovdqa64 %ymm3, %ymm225988; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0]5989; AVX512DQ-NEXT: # ymm11 = mem[0,1,0,1]5990; AVX512DQ-NEXT: vpshufb %ymm11, %ymm6, %ymm55991; AVX512DQ-NEXT: vpshufb %ymm11, %ymm13, %ymm65992; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm11 = [u,10,u,13,u,12,u,11,u,14,u,13,u,14,u,15]5993; AVX512DQ-NEXT: vmovdqa64 %xmm21, %xmm35994; AVX512DQ-NEXT: vpshufb %xmm11, %xmm3, %xmm135995; AVX512DQ-NEXT: vmovdqa64 %xmm27, %xmm35996; AVX512DQ-NEXT: vpshufb %xmm11, %xmm3, %xmm115997; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0]5998; AVX512DQ-NEXT: # ymm3 = mem[0,1,0,1]5999; AVX512DQ-NEXT: vpshufb %ymm3, %ymm4, %ymm46000; AVX512DQ-NEXT: vpshufb %ymm3, %ymm14, %ymm36001; AVX512DQ-NEXT: vpshufb %xmm12, %xmm1, %xmm146002; AVX512DQ-NEXT: vpshufb %xmm12, %xmm0, %xmm86003; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm8 = xmm8[0],xmm14[0],xmm8[1],xmm14[1],xmm8[2],xmm14[2],xmm8[3],xmm14[3],xmm8[4],xmm14[4],xmm8[5],xmm14[5],xmm8[6],xmm14[6],xmm8[7],xmm14[7]6004; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]6005; AVX512DQ-NEXT: vprold $16, %xmm0, %xmm06006; AVX512DQ-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm06007; AVX512DQ-NEXT: vpshufb %xmm12, %xmm15, %xmm16008; AVX512DQ-NEXT: vpshufb %xmm12, %xmm2, %xmm86009; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm1 = xmm8[0],xmm1[0],xmm8[1],xmm1[1],xmm8[2],xmm1[2],xmm8[3],xmm1[3],xmm8[4],xmm1[4],xmm8[5],xmm1[5],xmm8[6],xmm1[6],xmm8[7],xmm1[7]6010; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm2 = xmm2[0],xmm15[0],xmm2[1],xmm15[1],xmm2[2],xmm15[2],xmm2[3],xmm15[3],xmm2[4],xmm15[4],xmm2[5],xmm15[5],xmm2[6],xmm15[6],xmm2[7],xmm15[7]6011; AVX512DQ-NEXT: vprold $16, %xmm2, %xmm26012; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm306013; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm10[0,0,0,1]6014; AVX512DQ-NEXT: vprold $16, %ymm16, %ymm86015; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,0,1]6016; AVX512DQ-NEXT: vmovdqa64 %ymm18, %ymm16017; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm10 = ymm1[0,3,2,1,4,5,6,7,8,11,10,9,12,13,14,15]6018; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm10 = ymm10[0,1,2,3,4,5,6,5,8,9,10,11,12,13,14,13]6019; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]6020; AVX512DQ-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,0,1]6021; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,2,3]6022; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm13[0,0,0,1]6023; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,2,3]6024; AVX512DQ-NEXT: vpermq {{.*#+}} ymm13 = ymm20[0,0,0,1]6025; AVX512DQ-NEXT: vprold $16, %ymm17, %ymm146026; AVX512DQ-NEXT: vpermq {{.*#+}} ymm15 = ymm31[0,0,0,1]6027; AVX512DQ-NEXT: vmovdqa64 %ymm19, %ymm16028; AVX512DQ-NEXT: vpshuflw {{.*#+}} ymm1 = ymm1[0,3,2,1,4,5,6,7,8,11,10,9,12,13,14,15]6029; AVX512DQ-NEXT: vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6,5,8,9,10,11,12,13,14,13]6030; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]6031; AVX512DQ-NEXT: vpermq {{.*#+}} ymm31 = ymm22[0,0,0,1]6032; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,2,3]6033; AVX512DQ-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,0,1]6034; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,2,3]6035; AVX512DQ-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,2,3]6036; AVX512DQ-NEXT: vinserti64x4 $1, %ymm8, %zmm2, %zmm26037; AVX512DQ-NEXT: vinserti64x4 $1, %ymm10, %zmm9, %zmm86038; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm9 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]6039; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm8 = zmm2 ^ (zmm9 & (zmm8 ^ zmm2))6040; AVX512DQ-NEXT: vinserti64x4 $1, %ymm5, %zmm7, %zmm26041; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm5 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]6042; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm5 & (zmm2 ^ zmm8))6043; AVX512DQ-NEXT: vpermq {{.*#+}} ymm7 = ymm14[2,2,2,3]6044; AVX512DQ-NEXT: vinserti64x4 $1, %ymm7, %zmm13, %zmm76045; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm15, %zmm16046; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm7 ^ (zmm9 & (zmm1 ^ zmm7))6047; AVX512DQ-NEXT: vinserti64x4 $1, %ymm6, %zmm31, %zmm66048; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (zmm5 & (zmm6 ^ zmm1))6049; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm12, %zmm16050; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm4 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]6051; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm4 & (zmm1 ^ zmm2))6052; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm11, %zmm26053; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm4 & (zmm2 ^ zmm6))6054; AVX512DQ-NEXT: vpermq {{.*#+}} zmm0 = zmm0[0,0,0,1,4,4,4,5]6055; AVX512DQ-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Folded Reload6056; AVX512DQ-NEXT: # zmm3 = mem[0,0,0,1,4,4,4,5]6057; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm4 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]6058; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm3 = zmm0 ^ (zmm4 & (zmm3 ^ zmm0))6059; AVX512DQ-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6060; AVX512DQ-NEXT: # zmm0 = mem[0,0,0,1,4,4,4,5]6061; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm9 & (zmm0 ^ zmm3))6062; AVX512DQ-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Folded Reload6063; AVX512DQ-NEXT: # zmm3 = mem[0,0,0,1,4,4,4,5]6064; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm5 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]6065; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (zmm5 & (zmm3 ^ zmm0))6066; AVX512DQ-NEXT: vpermq {{.*#+}} zmm0 = zmm30[0,0,0,1,4,4,4,5]6067; AVX512DQ-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm6 # 64-byte Folded Reload6068; AVX512DQ-NEXT: # zmm6 = mem[0,0,0,1,4,4,4,5]6069; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm6 = zmm0 ^ (zmm4 & (zmm6 ^ zmm0))6070; AVX512DQ-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6071; AVX512DQ-NEXT: # zmm0 = mem[0,0,0,1,4,4,4,5]6072; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm9 & (zmm0 ^ zmm6))6073; AVX512DQ-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm6 # 64-byte Folded Reload6074; AVX512DQ-NEXT: # zmm6 = mem[0,0,0,1,4,4,4,5]6075; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (zmm5 & (zmm6 ^ zmm0))6076; AVX512DQ-NEXT: vpermq $234, (%rsp), %zmm0 # 64-byte Folded Reload6077; AVX512DQ-NEXT: # zmm0 = mem[2,2,2,3,6,6,6,7]6078; AVX512DQ-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm5 # 64-byte Folded Reload6079; AVX512DQ-NEXT: # zmm5 = mem[2,2,2,3,6,6,6,7]6080; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm5 = zmm0 ^ (zmm9 & (zmm5 ^ zmm0))6081; AVX512DQ-NEXT: vpermq {{.*#+}} zmm0 = zmm26[2,2,2,3,6,6,6,7]6082; AVX512DQ-NEXT: vpermq {{.*#+}} zmm7 = zmm24[2,2,2,3,6,6,6,7]6083; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm7 = zmm0 ^ (zmm9 & (zmm7 ^ zmm0))6084; AVX512DQ-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6085; AVX512DQ-NEXT: # zmm0 = mem[2,2,2,3,6,6,6,7]6086; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm4 & (zmm0 ^ zmm5))6087; AVX512DQ-NEXT: vpermq {{.*#+}} zmm5 = zmm23[2,2,2,3,6,6,6,7]6088; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 ^ (zmm4 & (zmm5 ^ zmm7))6089; AVX512DQ-NEXT: vpermq {{.*#+}} zmm4 = zmm28[2,2,2,3,6,6,6,7]6090; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm7 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]6091; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (zmm7 & (zmm4 ^ zmm0))6092; AVX512DQ-NEXT: vpermq {{.*#+}} zmm0 = zmm25[2,2,2,3,6,6,6,7]6093; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm7 & (zmm0 ^ zmm5))6094; AVX512DQ-NEXT: movq {{[0-9]+}}(%rsp), %rax6095; AVX512DQ-NEXT: vmovdqa64 %zmm0, 128(%rax)6096; AVX512DQ-NEXT: vmovdqa64 %zmm4, 320(%rax)6097; AVX512DQ-NEXT: vmovdqa64 %zmm6, (%rax)6098; AVX512DQ-NEXT: vmovdqa64 %zmm3, 192(%rax)6099; AVX512DQ-NEXT: vmovdqa64 %zmm2, 256(%rax)6100; AVX512DQ-NEXT: vmovdqa64 %zmm1, 64(%rax)6101; AVX512DQ-NEXT: addq $456, %rsp # imm = 0x1C86102; AVX512DQ-NEXT: vzeroupper6103; AVX512DQ-NEXT: retq6104;6105; AVX512DQ-FCP-LABEL: store_i8_stride6_vf64:6106; AVX512DQ-FCP: # %bb.0:6107; AVX512DQ-FCP-NEXT: subq $280, %rsp # imm = 0x1186108; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %ymm16109; AVX512DQ-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6110; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %ymm06111; AVX512DQ-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6112; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]6113; AVX512DQ-FCP-NEXT: vprold $16, %ymm0, %ymm186114; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm23 = [0,0,0,1,10,10,10,11]6115; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %ymm66116; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm76117; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %ymm116118; AVX512DQ-FCP-NEXT: vmovdqa 32(%r8), %xmm86119; AVX512DQ-FCP-NEXT: vmovdqa (%r9), %ymm106120; AVX512DQ-FCP-NEXT: vmovdqa 32(%r9), %xmm96121; AVX512DQ-FCP-NEXT: vmovdqa 32(%r8), %ymm46122; AVX512DQ-FCP-NEXT: vmovdqa 32(%r9), %ymm126123; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0]6124; AVX512DQ-FCP-NEXT: # ymm0 = mem[0,1,0,1]6125; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm4, %ymm26126; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0]6127; AVX512DQ-FCP-NEXT: # ymm1 = mem[0,1,0,1]6128; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm36129; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm4, %ymm216130; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm3, %zmm26131; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6132; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15,0,10,0,13,0,12,0,11,0,14,0,0,0,0,0,15]6133; AVX512DQ-FCP-NEXT: # ymm3 = mem[0,1,0,1]6134; AVX512DQ-FCP-NEXT: vpshufb %ymm3, %ymm12, %ymm26135; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0,0,6,0,5,0,8,0,7,0,0,0,9,0,0,0,0]6136; AVX512DQ-FCP-NEXT: # ymm4 = mem[0,1,0,1]6137; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm12, %ymm56138; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm12, %ymm226139; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm5, %zmm26140; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6141; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm11, %ymm06142; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm11, %ymm16143; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm306144; AVX512DQ-FCP-NEXT: vpshufb %ymm3, %ymm10, %ymm06145; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm10, %ymm16146; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm10, %ymm196147; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm06148; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6149; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm8[6,u,5,u,8,u,7,u,9,u,9,u,9,u,9,u]6150; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm8[2,u,1,u,0,u,3,u,4,u,4,u,4,u,4,u]6151; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm8, %xmm166152; AVX512DQ-FCP-NEXT: vinserti32x4 $2, %xmm0, %zmm1, %zmm06153; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6154; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm9[u,6,u,5,u,8,u,7,u,9,u,9,u,9,u,9]6155; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm9[u,2,u,1,u,0,u,3,u,4,u,4,u,4,u,4]6156; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm9, %xmm176157; AVX512DQ-FCP-NEXT: vinserti32x4 $2, %xmm0, %zmm1, %zmm06158; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6159; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm7[0],ymm6[0],ymm7[1],ymm6[1],ymm7[2],ymm6[2],ymm7[3],ymm6[3],ymm7[4],ymm6[4],ymm7[5],ymm6[5],ymm7[6],ymm6[6],ymm7[7],ymm6[7],ymm7[16],ymm6[16],ymm7[17],ymm6[17],ymm7[18],ymm6[18],ymm7[19],ymm6[19],ymm7[20],ymm6[20],ymm7[21],ymm6[21],ymm7[22],ymm6[22],ymm7[23],ymm6[23]6160; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm7, %ymm296161; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm6, %ymm286162; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm15 = [16,17,22,23,20,21,18,19,24,25,26,27,28,29,26,27,16,17,22,23,20,21,18,19,24,25,26,27,28,29,26,27]6163; AVX512DQ-FCP-NEXT: # ymm15 = mem[0,1,0,1]6164; AVX512DQ-FCP-NEXT: vpshufb %ymm15, %ymm0, %ymm06165; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %xmm26166; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm16167; AVX512DQ-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6168; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]6169; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm2, %xmm316170; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm13 = [8,9,6,7,12,13,10,11,14,15,14,15,14,15,14,15]6171; AVX512DQ-FCP-NEXT: vpshufb %xmm13, %xmm1, %xmm16172; AVX512DQ-FCP-NEXT: vpermt2q %zmm0, %zmm23, %zmm16173; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %xmm26174; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm36175; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm3[8],xmm2[8],xmm3[9],xmm2[9],xmm3[10],xmm2[10],xmm3[11],xmm2[11],xmm3[12],xmm2[12],xmm3[13],xmm2[13],xmm3[14],xmm2[14],xmm3[15],xmm2[15]6176; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm3, %xmm276177; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm2, %xmm266178; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm6 = [10,11,8,9,6,7,12,13,14,15,14,15,14,15,14,15]6179; AVX512DQ-FCP-NEXT: vpshufb %xmm6, %xmm0, %xmm06180; AVX512DQ-FCP-NEXT: vpermt2q %zmm18, %zmm23, %zmm06181; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm18 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]6182; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm0 ^ (zmm18 & (zmm1 ^ zmm0))6183; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm12 = [2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0]6184; AVX512DQ-FCP-NEXT: # ymm12 = mem[0,1,0,1]6185; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm11, %ymm26186; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %xmm106187; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm8 = [10,u,13,u,12,u,11,u,14,u,13,u,14,u,15,u]6188; AVX512DQ-FCP-NEXT: vpshufb %xmm8, %xmm10, %xmm06189; AVX512DQ-FCP-NEXT: vpermt2q %zmm2, %zmm23, %zmm06190; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm24 = [0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]6191; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm24 & (zmm0 ^ zmm1))6192; AVX512DQ-FCP-NEXT: vmovdqa 32(%rcx), %ymm76193; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdx), %ymm56194; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm5[0],ymm7[0],ymm5[1],ymm7[1],ymm5[2],ymm7[2],ymm5[3],ymm7[3],ymm5[4],ymm7[4],ymm5[5],ymm7[5],ymm5[6],ymm7[6],ymm5[7],ymm7[7],ymm5[16],ymm7[16],ymm5[17],ymm7[17],ymm5[18],ymm7[18],ymm5[19],ymm7[19],ymm5[20],ymm7[20],ymm5[21],ymm7[21],ymm5[22],ymm7[22],ymm5[23],ymm7[23]6195; AVX512DQ-FCP-NEXT: vprold $16, %ymm4, %ymm256196; AVX512DQ-FCP-NEXT: vmovdqa 32(%rcx), %xmm46197; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdx), %xmm116198; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm11[8],xmm4[8],xmm11[9],xmm4[9],xmm11[10],xmm4[10],xmm11[11],xmm4[11],xmm11[12],xmm4[12],xmm11[13],xmm4[13],xmm11[14],xmm4[14],xmm11[15],xmm4[15]6199; AVX512DQ-FCP-NEXT: vpshufb %xmm6, %xmm9, %xmm96200; AVX512DQ-FCP-NEXT: vmovdqa 32(%rsi), %ymm26201; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %ymm16202; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm6 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[2],ymm2[2],ymm1[3],ymm2[3],ymm1[4],ymm2[4],ymm1[5],ymm2[5],ymm1[6],ymm2[6],ymm1[7],ymm2[7],ymm1[16],ymm2[16],ymm1[17],ymm2[17],ymm1[18],ymm2[18],ymm1[19],ymm2[19],ymm1[20],ymm2[20],ymm1[21],ymm2[21],ymm1[22],ymm2[22],ymm1[23],ymm2[23]6203; AVX512DQ-FCP-NEXT: vpshufb %ymm15, %ymm6, %ymm36204; AVX512DQ-FCP-NEXT: vmovdqa 32(%rsi), %xmm66205; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %xmm156206; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} xmm14 = xmm15[8],xmm6[8],xmm15[9],xmm6[9],xmm15[10],xmm6[10],xmm15[11],xmm6[11],xmm15[12],xmm6[12],xmm15[13],xmm6[13],xmm15[14],xmm6[14],xmm15[15],xmm6[15]6207; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm6, %xmm206208; AVX512DQ-FCP-NEXT: vpshufb %xmm13, %xmm14, %xmm136209; AVX512DQ-FCP-NEXT: vpermt2q %zmm3, %zmm23, %zmm136210; AVX512DQ-FCP-NEXT: vpermt2q %zmm25, %zmm23, %zmm96211; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm13 = zmm9 ^ (zmm18 & (zmm13 ^ zmm9))6212; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm21, %ymm36213; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm3, %ymm36214; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm16, %xmm66215; AVX512DQ-FCP-NEXT: vpshufb %xmm8, %xmm6, %xmm96216; AVX512DQ-FCP-NEXT: vpermt2q %zmm3, %zmm23, %zmm96217; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm9 = zmm9 ^ (zmm24 & (zmm9 ^ zmm13))6218; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0]6219; AVX512DQ-FCP-NEXT: # ymm8 = mem[0,1,0,1]6220; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm19, %ymm36221; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm3, %ymm126222; AVX512DQ-FCP-NEXT: vmovdqa (%r9), %xmm136223; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm14 = [u,10,u,13,u,12,u,11,u,14,u,13,u,14,u,15]6224; AVX512DQ-FCP-NEXT: vpshufb %xmm14, %xmm13, %xmm36225; AVX512DQ-FCP-NEXT: vpermt2q %zmm12, %zmm23, %zmm36226; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm12 = [255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255]6227; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (zmm12 & (zmm3 ^ zmm0))6228; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm22, %ymm06229; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm0, %ymm06230; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm17, %xmm66231; AVX512DQ-FCP-NEXT: vpshufb %xmm14, %xmm6, %xmm86232; AVX512DQ-FCP-NEXT: vpermt2q %zmm0, %zmm23, %zmm86233; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 ^ (zmm12 & (zmm8 ^ zmm9))6234; AVX512DQ-FCP-NEXT: vpbroadcastq {{.*#+}} ymm0 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]6235; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm2, %ymm96236; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm1, %ymm126237; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm9 = ymm12[0],ymm9[0],ymm12[1],ymm9[1],ymm12[2],ymm9[2],ymm12[3],ymm9[3],ymm12[4],ymm9[4],ymm12[5],ymm9[5],ymm12[6],ymm9[6],ymm12[7],ymm9[7],ymm12[16],ymm9[16],ymm12[17],ymm9[17],ymm12[18],ymm9[18],ymm12[19],ymm9[19],ymm12[20],ymm9[20],ymm12[21],ymm9[21],ymm12[22],ymm9[22],ymm12[23],ymm9[23]6238; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} ymm1 = ymm1[8],ymm2[8],ymm1[9],ymm2[9],ymm1[10],ymm2[10],ymm1[11],ymm2[11],ymm1[12],ymm2[12],ymm1[13],ymm2[13],ymm1[14],ymm2[14],ymm1[15],ymm2[15],ymm1[24],ymm2[24],ymm1[25],ymm2[25],ymm1[26],ymm2[26],ymm1[27],ymm2[27],ymm1[28],ymm2[28],ymm1[29],ymm2[29],ymm1[30],ymm2[30],ymm1[31],ymm2[31]6239; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31,24,25,22,23,28,29,26,27,30,31,30,31,30,31,30,31]6240; AVX512DQ-FCP-NEXT: # ymm2 = mem[0,1,0,1]6241; AVX512DQ-FCP-NEXT: vpshufb %ymm2, %ymm1, %ymm16242; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm14 = [2,2,2,3,10,10,10,11]6243; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm14, %zmm96244; AVX512DQ-FCP-NEXT: vpbroadcastq {{.*#+}} ymm12 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]6245; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm7, %ymm16246; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm5, %ymm66247; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm6[0],ymm1[0],ymm6[1],ymm1[1],ymm6[2],ymm1[2],ymm6[3],ymm1[3],ymm6[4],ymm1[4],ymm6[5],ymm1[5],ymm6[6],ymm1[6],ymm6[7],ymm1[7],ymm6[16],ymm1[16],ymm6[17],ymm1[17],ymm6[18],ymm1[18],ymm6[19],ymm1[19],ymm6[20],ymm1[20],ymm6[21],ymm1[21],ymm6[22],ymm1[22],ymm6[23],ymm1[23]6248; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} ymm5 = ymm5[8],ymm7[8],ymm5[9],ymm7[9],ymm5[10],ymm7[10],ymm5[11],ymm7[11],ymm5[12],ymm7[12],ymm5[13],ymm7[13],ymm5[14],ymm7[14],ymm5[15],ymm7[15],ymm5[24],ymm7[24],ymm5[25],ymm7[25],ymm5[26],ymm7[26],ymm5[27],ymm7[27],ymm5[28],ymm7[28],ymm5[29],ymm7[29],ymm5[30],ymm7[30],ymm5[31],ymm7[31]6249; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm6 = [26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31,26,27,24,25,22,23,28,29,30,31,30,31,30,31,30,31]6250; AVX512DQ-FCP-NEXT: # ymm6 = mem[0,1,0,1]6251; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm5, %ymm56252; AVX512DQ-FCP-NEXT: vpermt2q %zmm5, %zmm14, %zmm16253; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm9 ^ (zmm18 & (zmm1 ^ zmm9))6254; AVX512DQ-FCP-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm9 # 64-byte Folded Reload6255; AVX512DQ-FCP-NEXT: # zmm9 = mem[2,2,2,3,6,6,6,7]6256; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm22 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0]6257; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm9 = zmm9 ^ (zmm22 & (zmm9 ^ zmm1))6258; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm28, %ymm56259; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm5, %ymm16260; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm29, %ymm76261; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm7, %ymm06262; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23]6263; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} ymm1 = ymm7[8],ymm5[8],ymm7[9],ymm5[9],ymm7[10],ymm5[10],ymm7[11],ymm5[11],ymm7[12],ymm5[12],ymm7[13],ymm5[13],ymm7[14],ymm5[14],ymm7[15],ymm5[15],ymm7[24],ymm5[24],ymm7[25],ymm5[25],ymm7[26],ymm5[26],ymm7[27],ymm5[27],ymm7[28],ymm5[28],ymm7[29],ymm5[29],ymm7[30],ymm5[30],ymm7[31],ymm5[31]6264; AVX512DQ-FCP-NEXT: vpshufb %ymm2, %ymm1, %ymm16265; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm14, %zmm06266; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload6267; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm7, %ymm16268; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6269; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm5, %ymm26270; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm2[0],ymm1[0],ymm2[1],ymm1[1],ymm2[2],ymm1[2],ymm2[3],ymm1[3],ymm2[4],ymm1[4],ymm2[5],ymm1[5],ymm2[6],ymm1[6],ymm2[7],ymm1[7],ymm2[16],ymm1[16],ymm2[17],ymm1[17],ymm2[18],ymm1[18],ymm2[19],ymm1[19],ymm2[20],ymm1[20],ymm2[21],ymm1[21],ymm2[22],ymm1[22],ymm2[23],ymm1[23]6271; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm5[8],ymm7[8],ymm5[9],ymm7[9],ymm5[10],ymm7[10],ymm5[11],ymm7[11],ymm5[12],ymm7[12],ymm5[13],ymm7[13],ymm5[14],ymm7[14],ymm5[15],ymm7[15],ymm5[24],ymm7[24],ymm5[25],ymm7[25],ymm5[26],ymm7[26],ymm5[27],ymm7[27],ymm5[28],ymm7[28],ymm5[29],ymm7[29],ymm5[30],ymm7[30],ymm5[31],ymm7[31]6272; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm26273; AVX512DQ-FCP-NEXT: vpermt2q %zmm2, %zmm14, %zmm16274; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm0 ^ (zmm18 & (zmm1 ^ zmm0))6275; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} zmm2 = zmm30[2,2,2,3,6,6,6,7]6276; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm22 & (zmm2 ^ zmm1))6277; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm10[6,u,5,u,8,u,7,u,9,u,9,u,9,u,9,u]6278; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm10[2,u,1,u,0,u,3,u,4,u,4,u,4,u,4,u]6279; AVX512DQ-FCP-NEXT: vinserti32x4 $2, %xmm0, %zmm1, %zmm06280; AVX512DQ-FCP-NEXT: vpshufb %xmm12, %xmm4, %xmm16281; AVX512DQ-FCP-NEXT: vpshufb %xmm12, %xmm11, %xmm56282; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm1 = xmm5[0],xmm1[0],xmm5[1],xmm1[1],xmm5[2],xmm1[2],xmm5[3],xmm1[3],xmm5[4],xmm1[4],xmm5[5],xmm1[5],xmm5[6],xmm1[6],xmm5[7],xmm1[7]6283; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm11[0],xmm4[0],xmm11[1],xmm4[1],xmm11[2],xmm4[2],xmm11[3],xmm4[3],xmm11[4],xmm4[4],xmm11[5],xmm4[5],xmm11[6],xmm4[6],xmm11[7],xmm4[7]6284; AVX512DQ-FCP-NEXT: vprold $16, %xmm4, %xmm46285; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm5 = [0,0,0,1,8,8,8,9]6286; AVX512DQ-FCP-NEXT: vpermt2q %zmm1, %zmm5, %zmm46287; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm13[u,6,u,5,u,8,u,7,u,9,u,9,u,9,u,9]6288; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm6 = xmm13[u,2,u,1,u,0,u,3,u,4,u,4,u,4,u,4]6289; AVX512DQ-FCP-NEXT: vpbroadcastq {{.*#+}} xmm7 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]6290; AVX512DQ-FCP-NEXT: vinserti32x4 $2, %xmm1, %zmm6, %zmm16291; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm20, %xmm116292; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm11, %xmm66293; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm15, %xmm106294; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} xmm6 = xmm10[8],xmm6[8],xmm10[9],xmm6[9],xmm10[10],xmm6[10],xmm10[11],xmm6[11],xmm10[12],xmm6[12],xmm10[13],xmm6[13],xmm10[14],xmm6[14],xmm10[15],xmm6[15]6295; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm10 = xmm15[0],xmm11[0],xmm15[1],xmm11[1],xmm15[2],xmm11[2],xmm15[3],xmm11[3],xmm15[4],xmm11[4],xmm15[5],xmm11[5],xmm15[6],xmm11[6],xmm15[7],xmm11[7]6296; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm11 = [0,1,6,7,4,5,2,3,8,9,10,11,12,13,10,11]6297; AVX512DQ-FCP-NEXT: vpshufb %xmm11, %xmm10, %xmm106298; AVX512DQ-FCP-NEXT: vpermt2q %zmm6, %zmm5, %zmm106299; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm10 = zmm4 ^ (zmm22 & (zmm10 ^ zmm4))6300; AVX512DQ-FCP-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 # 64-byte Folded Reload6301; AVX512DQ-FCP-NEXT: # zmm4 = mem[0,0,0,1,4,4,4,5]6302; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (zmm18 & (zmm4 ^ zmm10))6303; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm26, %xmm146304; AVX512DQ-FCP-NEXT: vpshufb %xmm12, %xmm14, %xmm66305; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm27, %xmm136306; AVX512DQ-FCP-NEXT: vpshufb %xmm12, %xmm13, %xmm106307; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm6 = xmm10[0],xmm6[0],xmm10[1],xmm6[1],xmm10[2],xmm6[2],xmm10[3],xmm6[3],xmm10[4],xmm6[4],xmm10[5],xmm6[5],xmm10[6],xmm6[6],xmm10[7],xmm6[7]6308; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm10 = xmm13[0],xmm14[0],xmm13[1],xmm14[1],xmm13[2],xmm14[2],xmm13[3],xmm14[3],xmm13[4],xmm14[4],xmm13[5],xmm14[5],xmm13[6],xmm14[6],xmm13[7],xmm14[7]6309; AVX512DQ-FCP-NEXT: vprold $16, %xmm10, %xmm106310; AVX512DQ-FCP-NEXT: vpermt2q %zmm6, %zmm5, %zmm106311; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm31, %xmm136312; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm13, %xmm66313; AVX512DQ-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload6314; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm12, %xmm76315; AVX512DQ-FCP-NEXT: vpunpckhbw {{.*#+}} xmm6 = xmm7[8],xmm6[8],xmm7[9],xmm6[9],xmm7[10],xmm6[10],xmm7[11],xmm6[11],xmm7[12],xmm6[12],xmm7[13],xmm6[13],xmm7[14],xmm6[14],xmm7[15],xmm6[15]6316; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm12[0],xmm13[0],xmm12[1],xmm13[1],xmm12[2],xmm13[2],xmm12[3],xmm13[3],xmm12[4],xmm13[4],xmm12[5],xmm13[5],xmm12[6],xmm13[6],xmm12[7],xmm13[7]6317; AVX512DQ-FCP-NEXT: vpshufb %xmm11, %xmm7, %xmm76318; AVX512DQ-FCP-NEXT: vpermt2q %zmm6, %zmm5, %zmm76319; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm10 ^ (zmm22 & (zmm7 ^ zmm10))6320; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} zmm0 = zmm0[0,0,0,1,4,4,4,5]6321; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm18 & (zmm0 ^ zmm7))6322; AVX512DQ-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax6323; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm8, 256(%rax)6324; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, 64(%rax)6325; AVX512DQ-FCP-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Folded Reload6326; AVX512DQ-FCP-NEXT: # zmm3 = mem[2,2,2,3,6,6,6,7]6327; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm5 = [255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0]6328; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (zmm5 & (zmm3 ^ zmm9))6329; AVX512DQ-FCP-NEXT: vpermq $234, {{[-0-9]+}}(%r{{[sb]}}p), %zmm6 # 64-byte Folded Reload6330; AVX512DQ-FCP-NEXT: # zmm6 = mem[2,2,2,3,6,6,6,7]6331; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (zmm5 & (zmm6 ^ zmm2))6332; AVX512DQ-FCP-NEXT: vpermq $64, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Folded Reload6333; AVX512DQ-FCP-NEXT: # zmm2 = mem[0,0,0,1,4,4,4,5]6334; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm5 = [255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0,255,255,255,255]6335; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm5 & (zmm2 ^ zmm4))6336; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} zmm1 = zmm1[0,0,0,1,4,4,4,5]6337; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (zmm5 & (zmm1 ^ zmm0))6338; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, (%rax)6339; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, 192(%rax)6340; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm6, 128(%rax)6341; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, 320(%rax)6342; AVX512DQ-FCP-NEXT: addq $280, %rsp # imm = 0x1186343; AVX512DQ-FCP-NEXT: vzeroupper6344; AVX512DQ-FCP-NEXT: retq6345;6346; AVX512BW-LABEL: store_i8_stride6_vf64:6347; AVX512BW: # %bb.0:6348; AVX512BW-NEXT: movq {{[0-9]+}}(%rsp), %rax6349; AVX512BW-NEXT: vmovdqa64 (%r8), %zmm26350; AVX512BW-NEXT: vmovdqa64 (%r9), %zmm16351; AVX512BW-NEXT: vmovdqa (%rsi), %xmm156352; AVX512BW-NEXT: vmovdqa 32(%rsi), %xmm46353; AVX512BW-NEXT: vpbroadcastq {{.*#+}} xmm5 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]6354; AVX512BW-NEXT: vpshufb %xmm5, %xmm4, %xmm06355; AVX512BW-NEXT: vmovdqa64 (%rdi), %xmm186356; AVX512BW-NEXT: vmovdqa 32(%rdi), %xmm66357; AVX512BW-NEXT: vpshufb %xmm5, %xmm6, %xmm36358; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm3[8],xmm0[8],xmm3[9],xmm0[9],xmm3[10],xmm0[10],xmm3[11],xmm0[11],xmm3[12],xmm0[12],xmm3[13],xmm0[13],xmm3[14],xmm0[14],xmm3[15],xmm0[15]6359; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm3 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3],xmm6[4],xmm4[4],xmm6[5],xmm4[5],xmm6[6],xmm4[6],xmm6[7],xmm4[7]6360; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,3,2,1,0,3,2,1,0,3,2,1,4,5,6,5,32,33,34,35,32,33,34,35,32,33,34,35,36,37,38,39]6361; AVX512BW-NEXT: vpermt2w %zmm0, %zmm7, %zmm36362; AVX512BW-NEXT: vpbroadcastq {{.*#+}} ymm0 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]6363; AVX512BW-NEXT: vmovdqa64 (%rcx), %xmm166364; AVX512BW-NEXT: vmovdqa 32(%rcx), %xmm106365; AVX512BW-NEXT: vpshufb %xmm0, %xmm10, %xmm86366; AVX512BW-NEXT: vmovdqa64 (%rdx), %xmm176367; AVX512BW-NEXT: vmovdqa 32(%rdx), %xmm116368; AVX512BW-NEXT: vpshufb %xmm0, %xmm11, %xmm96369; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm8 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3],xmm9[4],xmm8[4],xmm9[5],xmm8[5],xmm9[6],xmm8[6],xmm9[7],xmm8[7]6370; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm11[0],xmm10[0],xmm11[1],xmm10[1],xmm11[2],xmm10[2],xmm11[3],xmm10[3],xmm11[4],xmm10[4],xmm11[5],xmm10[5],xmm11[6],xmm10[6],xmm11[7],xmm10[7]6371; AVX512BW-NEXT: vprold $16, %xmm9, %xmm96372; AVX512BW-NEXT: vinserti64x4 $1, %ymm8, %zmm9, %zmm86373; AVX512BW-NEXT: vpermq {{.*#+}} zmm8 = zmm8[0,0,0,1,4,4,4,5]6374; AVX512BW-NEXT: movl $-1840700270, %r10d # imm = 0x924924926375; AVX512BW-NEXT: kmovd %r10d, %k16376; AVX512BW-NEXT: vmovdqu16 %zmm8, %zmm3 {%k1}6377; AVX512BW-NEXT: vmovdqa 32(%r8), %xmm96378; AVX512BW-NEXT: vpmovzxbw {{.*#+}} xmm8 = xmm9[0],zero,xmm9[1],zero,xmm9[2],zero,xmm9[3],zero,xmm9[4],zero,xmm9[5],zero,xmm9[6],zero,xmm9[7],zero6379; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,1,16,3,4,17,6,7,18,9,10,19,12,13,20,15]6380; AVX512BW-NEXT: vmovdqa %ymm3, %ymm126381; AVX512BW-NEXT: vpermt2w %ymm8, %ymm13, %ymm126382; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm8 = [16,37,18,19,38,21,22,39,24,25,32,27,28,33,30,31]6383; AVX512BW-NEXT: vpshufd {{.*#+}} xmm14 = xmm9[2,1,2,3]6384; AVX512BW-NEXT: vpmovzxbw {{.*#+}} xmm14 = xmm14[0],zero,xmm14[1],zero,xmm14[2],zero,xmm14[3],zero,xmm14[4],zero,xmm14[5],zero,xmm14[6],zero,xmm14[7],zero6385; AVX512BW-NEXT: vpermt2w %zmm14, %zmm8, %zmm36386; AVX512BW-NEXT: vinserti64x4 $1, %ymm3, %zmm12, %zmm36387; AVX512BW-NEXT: vmovdqa 32(%r9), %xmm126388; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm14 = xmm12[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]6389; AVX512BW-NEXT: vpshufd {{.*#+}} xmm19 = xmm12[2,1,2,3]6390; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm19 = xmm19[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]6391; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm20 = [2,1,0,3,2,1,0,3,2,1,0,3,4,4,4,4,38,37,32,39,38,37,32,39,38,37,32,39,33,33,33,33]6392; AVX512BW-NEXT: vpermt2w %zmm19, %zmm20, %zmm146393; AVX512BW-NEXT: movabsq $585610922974906400, %r10 # imm = 0x8208208208208206394; AVX512BW-NEXT: kmovq %r10, %k26395; AVX512BW-NEXT: vmovdqu8 %zmm14, %zmm3 {%k2}6396; AVX512BW-NEXT: vpshufb %xmm5, %xmm15, %xmm146397; AVX512BW-NEXT: vpshufb %xmm5, %xmm18, %xmm56398; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm5[8],xmm14[8],xmm5[9],xmm14[9],xmm5[10],xmm14[10],xmm5[11],xmm14[11],xmm5[12],xmm14[12],xmm5[13],xmm14[13],xmm5[14],xmm14[14],xmm5[15],xmm14[15]6399; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm14 = xmm18[0],xmm15[0],xmm18[1],xmm15[1],xmm18[2],xmm15[2],xmm18[3],xmm15[3],xmm18[4],xmm15[4],xmm18[5],xmm15[5],xmm18[6],xmm15[6],xmm18[7],xmm15[7]6400; AVX512BW-NEXT: vpermt2w %zmm5, %zmm7, %zmm146401; AVX512BW-NEXT: vpshufb %xmm0, %xmm16, %xmm56402; AVX512BW-NEXT: vpshufb %xmm0, %xmm17, %xmm76403; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm7[0],xmm5[0],xmm7[1],xmm5[1],xmm7[2],xmm5[2],xmm7[3],xmm5[3],xmm7[4],xmm5[4],xmm7[5],xmm5[5],xmm7[6],xmm5[6],xmm7[7],xmm5[7]6404; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm17[0],xmm16[0],xmm17[1],xmm16[1],xmm17[2],xmm16[2],xmm17[3],xmm16[3],xmm17[4],xmm16[4],xmm17[5],xmm16[5],xmm17[6],xmm16[6],xmm17[7],xmm16[7]6405; AVX512BW-NEXT: vprold $16, %xmm7, %xmm76406; AVX512BW-NEXT: vinserti64x4 $1, %ymm5, %zmm7, %zmm56407; AVX512BW-NEXT: vpermq {{.*#+}} zmm5 = zmm5[0,0,0,1,4,4,4,5]6408; AVX512BW-NEXT: vmovdqu16 %zmm5, %zmm14 {%k1}6409; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = mem[0,1,2,3,0,1,2,3]6410; AVX512BW-NEXT: vpmovzxbw {{.*#+}} xmm7 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[4],zero,xmm5[5],zero,xmm5[6],zero,xmm5[7],zero6411; AVX512BW-NEXT: vpermi2w %ymm7, %ymm14, %ymm136412; AVX512BW-NEXT: vpshufd {{.*#+}} xmm7 = xmm5[2,1,2,3]6413; AVX512BW-NEXT: vpmovzxbw {{.*#+}} xmm7 = xmm7[0],zero,xmm7[1],zero,xmm7[2],zero,xmm7[3],zero,xmm7[4],zero,xmm7[5],zero,xmm7[6],zero,xmm7[7],zero6414; AVX512BW-NEXT: vpermt2w %zmm7, %zmm8, %zmm146415; AVX512BW-NEXT: vinserti64x4 $1, %ymm14, %zmm13, %zmm76416; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = mem[0,1,2,3,0,1,2,3]6417; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm13 = xmm8[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]6418; AVX512BW-NEXT: vpshufd {{.*#+}} xmm14 = xmm8[2,1,2,3]6419; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm14 = xmm14[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]6420; AVX512BW-NEXT: vpermt2w %zmm14, %zmm20, %zmm136421; AVX512BW-NEXT: vmovdqu8 %zmm13, %zmm7 {%k2}6422; AVX512BW-NEXT: vmovdqa (%rcx), %ymm136423; AVX512BW-NEXT: vmovdqa (%rdx), %ymm146424; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm19 = ymm14[0],ymm13[0],ymm14[1],ymm13[1],ymm14[2],ymm13[2],ymm14[3],ymm13[3],ymm14[4],ymm13[4],ymm14[5],ymm13[5],ymm14[6],ymm13[6],ymm14[7],ymm13[7],ymm14[16],ymm13[16],ymm14[17],ymm13[17],ymm14[18],ymm13[18],ymm14[19],ymm13[19],ymm14[20],ymm13[20],ymm14[21],ymm13[21],ymm14[22],ymm13[22],ymm14[23],ymm13[23]6425; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm20 = xmm17[8],xmm16[8],xmm17[9],xmm16[9],xmm17[10],xmm16[10],xmm17[11],xmm16[11],xmm17[12],xmm16[12],xmm17[13],xmm16[13],xmm17[14],xmm16[14],xmm17[15],xmm16[15]6426; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm21 = [5,4,3,6,5,4,3,6,5,4,3,6,7,7,7,7,41,40,43,42,41,40,43,42,41,40,43,42,45,44,47,46]6427; AVX512BW-NEXT: vpermt2w %zmm19, %zmm21, %zmm206428; AVX512BW-NEXT: vmovdqa64 (%rsi), %ymm166429; AVX512BW-NEXT: vmovdqa64 (%rdi), %ymm176430; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm19 = ymm17[0],ymm16[0],ymm17[1],ymm16[1],ymm17[2],ymm16[2],ymm17[3],ymm16[3],ymm17[4],ymm16[4],ymm17[5],ymm16[5],ymm17[6],ymm16[6],ymm17[7],ymm16[7],ymm17[16],ymm16[16],ymm17[17],ymm16[17],ymm17[18],ymm16[18],ymm17[19],ymm16[19],ymm17[20],ymm16[20],ymm17[21],ymm16[21],ymm17[22],ymm16[22],ymm17[23],ymm16[23]6431; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm15 = xmm18[8],xmm15[8],xmm18[9],xmm15[9],xmm18[10],xmm15[10],xmm18[11],xmm15[11],xmm18[12],xmm15[12],xmm18[13],xmm15[13],xmm18[14],xmm15[14],xmm18[15],xmm15[15]6432; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm18 = [4,3,6,5,4,3,6,5,4,3,6,5,7,7,7,7,40,43,42,41,40,43,42,41,40,43,42,41,44,45,46,45]6433; AVX512BW-NEXT: vpermt2w %zmm19, %zmm18, %zmm156434; AVX512BW-NEXT: movl $613566756, %r10d # imm = 0x249249246435; AVX512BW-NEXT: kmovd %r10d, %k26436; AVX512BW-NEXT: vmovdqu16 %zmm20, %zmm15 {%k2}6437; AVX512BW-NEXT: vextracti64x4 $1, %zmm15, %ymm196438; AVX512BW-NEXT: vbroadcasti32x4 {{.*#+}} ymm20 = [2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0]6439; AVX512BW-NEXT: # ymm20 = mem[0,1,2,3,0,1,2,3]6440; AVX512BW-NEXT: vpshufb %ymm20, %ymm5, %ymm226441; AVX512BW-NEXT: vpermq {{.*#+}} ymm22 = ymm22[2,2,2,3]6442; AVX512BW-NEXT: movw $18724, %r10w # imm = 0x49246443; AVX512BW-NEXT: kmovd %r10d, %k36444; AVX512BW-NEXT: vmovdqu16 %ymm22, %ymm19 {%k3}6445; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm22 = xmm5[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]6446; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm23 = [18,1,2,19,4,5,20,7,8,21,10,11,22,13,14,23]6447; AVX512BW-NEXT: vpermt2w %ymm22, %ymm23, %ymm156448; AVX512BW-NEXT: vinserti64x4 $1, %ymm19, %zmm15, %zmm156449; AVX512BW-NEXT: vbroadcasti32x4 {{.*#+}} ymm19 = [0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0]6450; AVX512BW-NEXT: # ymm19 = mem[0,1,2,3,0,1,2,3]6451; AVX512BW-NEXT: vpshufb %ymm19, %ymm8, %ymm226452; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm24 = xmm8[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]6453; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm25 = [2,5,4,3,2,5,4,3,2,5,4,3,6,5,6,7,40,41,42,43,40,41,42,43,40,41,42,43,44,45,46,47]6454; AVX512BW-NEXT: vpermt2w %zmm22, %zmm25, %zmm246455; AVX512BW-NEXT: movabsq $2342443691899625602, %r10 # imm = 0x20820820820820826456; AVX512BW-NEXT: kmovq %r10, %k46457; AVX512BW-NEXT: vmovdqu8 %zmm24, %zmm15 {%k4}6458; AVX512BW-NEXT: vmovdqa64 32(%rcx), %ymm226459; AVX512BW-NEXT: vmovdqa64 32(%rdx), %ymm246460; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm26 = ymm24[0],ymm22[0],ymm24[1],ymm22[1],ymm24[2],ymm22[2],ymm24[3],ymm22[3],ymm24[4],ymm22[4],ymm24[5],ymm22[5],ymm24[6],ymm22[6],ymm24[7],ymm22[7],ymm24[16],ymm22[16],ymm24[17],ymm22[17],ymm24[18],ymm22[18],ymm24[19],ymm22[19],ymm24[20],ymm22[20],ymm24[21],ymm22[21],ymm24[22],ymm22[22],ymm24[23],ymm22[23]6461; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm10 = xmm11[8],xmm10[8],xmm11[9],xmm10[9],xmm11[10],xmm10[10],xmm11[11],xmm10[11],xmm11[12],xmm10[12],xmm11[13],xmm10[13],xmm11[14],xmm10[14],xmm11[15],xmm10[15]6462; AVX512BW-NEXT: vpermt2w %zmm26, %zmm21, %zmm106463; AVX512BW-NEXT: vmovdqa 32(%rsi), %ymm116464; AVX512BW-NEXT: vmovdqa64 32(%rdi), %ymm216465; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm26 = ymm21[0],ymm11[0],ymm21[1],ymm11[1],ymm21[2],ymm11[2],ymm21[3],ymm11[3],ymm21[4],ymm11[4],ymm21[5],ymm11[5],ymm21[6],ymm11[6],ymm21[7],ymm11[7],ymm21[16],ymm11[16],ymm21[17],ymm11[17],ymm21[18],ymm11[18],ymm21[19],ymm11[19],ymm21[20],ymm11[20],ymm21[21],ymm11[21],ymm21[22],ymm11[22],ymm21[23],ymm11[23]6466; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm4 = xmm6[8],xmm4[8],xmm6[9],xmm4[9],xmm6[10],xmm4[10],xmm6[11],xmm4[11],xmm6[12],xmm4[12],xmm6[13],xmm4[13],xmm6[14],xmm4[14],xmm6[15],xmm4[15]6467; AVX512BW-NEXT: vpermt2w %zmm26, %zmm18, %zmm46468; AVX512BW-NEXT: vmovdqu16 %zmm10, %zmm4 {%k2}6469; AVX512BW-NEXT: vextracti64x4 $1, %zmm4, %ymm66470; AVX512BW-NEXT: vmovdqa 32(%r8), %ymm106471; AVX512BW-NEXT: vpshufb %ymm20, %ymm10, %ymm106472; AVX512BW-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]6473; AVX512BW-NEXT: vmovdqu16 %ymm10, %ymm6 {%k3}6474; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm9[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]6475; AVX512BW-NEXT: vpermt2w %ymm9, %ymm23, %ymm46476; AVX512BW-NEXT: vinserti64x4 $1, %ymm6, %zmm4, %zmm46477; AVX512BW-NEXT: vmovdqa 32(%r9), %ymm66478; AVX512BW-NEXT: vpshufb %ymm19, %ymm6, %ymm66479; AVX512BW-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm12[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]6480; AVX512BW-NEXT: vpermt2w %zmm6, %zmm25, %zmm96481; AVX512BW-NEXT: vmovdqu8 %zmm9, %zmm4 {%k4}6482; AVX512BW-NEXT: vpbroadcastq {{.*#+}} ymm6 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]6483; AVX512BW-NEXT: vpshufb %ymm6, %ymm11, %ymm96484; AVX512BW-NEXT: vpshufb %ymm6, %ymm21, %ymm106485; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm9 = ymm10[0],ymm9[0],ymm10[1],ymm9[1],ymm10[2],ymm9[2],ymm10[3],ymm9[3],ymm10[4],ymm9[4],ymm10[5],ymm9[5],ymm10[6],ymm9[6],ymm10[7],ymm9[7],ymm10[16],ymm9[16],ymm10[17],ymm9[17],ymm10[18],ymm9[18],ymm10[19],ymm9[19],ymm10[20],ymm9[20],ymm10[21],ymm9[21],ymm10[22],ymm9[22],ymm10[23],ymm9[23]6486; AVX512BW-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,2,3]6487; AVX512BW-NEXT: vpunpckhbw {{.*#+}} ymm10 = ymm21[8],ymm11[8],ymm21[9],ymm11[9],ymm21[10],ymm11[10],ymm21[11],ymm11[11],ymm21[12],ymm11[12],ymm21[13],ymm11[13],ymm21[14],ymm11[14],ymm21[15],ymm11[15],ymm21[24],ymm11[24],ymm21[25],ymm11[25],ymm21[26],ymm11[26],ymm21[27],ymm11[27],ymm21[28],ymm11[28],ymm21[29],ymm11[29],ymm21[30],ymm11[30],ymm21[31],ymm11[31]6488; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm11 = [12,11,14,13,12,11,14,13,12,11,14,13,15,15,15,15]6489; AVX512BW-NEXT: vpermw %ymm10, %ymm11, %ymm106490; AVX512BW-NEXT: vinserti64x4 $1, %ymm10, %zmm9, %zmm96491; AVX512BW-NEXT: vpshufb %ymm0, %ymm22, %ymm106492; AVX512BW-NEXT: vpshufb %ymm0, %ymm24, %ymm126493; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm10 = ymm12[0],ymm10[0],ymm12[1],ymm10[1],ymm12[2],ymm10[2],ymm12[3],ymm10[3],ymm12[4],ymm10[4],ymm12[5],ymm10[5],ymm12[6],ymm10[6],ymm12[7],ymm10[7],ymm12[16],ymm10[16],ymm12[17],ymm10[17],ymm12[18],ymm10[18],ymm12[19],ymm10[19],ymm12[20],ymm10[20],ymm12[21],ymm10[21],ymm12[22],ymm10[22],ymm12[23],ymm10[23]6494; AVX512BW-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]6495; AVX512BW-NEXT: vpunpckhbw {{.*#+}} ymm12 = ymm24[8],ymm22[8],ymm24[9],ymm22[9],ymm24[10],ymm22[10],ymm24[11],ymm22[11],ymm24[12],ymm22[12],ymm24[13],ymm22[13],ymm24[14],ymm22[14],ymm24[15],ymm22[15],ymm24[24],ymm22[24],ymm24[25],ymm22[25],ymm24[26],ymm22[26],ymm24[27],ymm22[27],ymm24[28],ymm22[28],ymm24[29],ymm22[29],ymm24[30],ymm22[30],ymm24[31],ymm22[31]6496; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm18 = [13,12,11,14,13,12,11,14,13,12,11,14,15,15,15,15]6497; AVX512BW-NEXT: vpermw %ymm12, %ymm18, %ymm126498; AVX512BW-NEXT: vinserti64x4 $1, %ymm12, %zmm10, %zmm106499; AVX512BW-NEXT: vmovdqu16 %zmm9, %zmm10 {%k2}6500; AVX512BW-NEXT: vshufi64x2 {{.*#+}} zmm2 = zmm2[4,5,6,7,4,5,6,7]6501; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm9 = [6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,10,13,12,11,14,0,0,15,10,13,12,11,14,0,0,15]6502; AVX512BW-NEXT: vpshufb %zmm9, %zmm2, %zmm26503; AVX512BW-NEXT: vpermq {{.*#+}} zmm2 = zmm2[2,2,2,3,6,6,6,7]6504; AVX512BW-NEXT: vmovdqu16 %zmm2, %zmm10 {%k1}6505; AVX512BW-NEXT: vshufi64x2 {{.*#+}} zmm1 = zmm1[4,5,6,7,4,5,6,7]6506; AVX512BW-NEXT: vpshufb {{.*#+}} zmm1 = zmm1[u,6,u,5,u,8,u,7,u,u,u,9,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u,u,42,u,45,u,44,u,43,u,46,u,u,u,u,u,47,u,58,u,61,u,60,u,59,u,62,u,u,u,u,u,63]6507; AVX512BW-NEXT: vpermq {{.*#+}} zmm1 = zmm1[2,2,2,3,6,6,6,7]6508; AVX512BW-NEXT: movabsq $-9076969306111049208, %rcx # imm = 0x82082082082082086509; AVX512BW-NEXT: kmovq %rcx, %k36510; AVX512BW-NEXT: vmovdqu8 %zmm1, %zmm10 {%k3}6511; AVX512BW-NEXT: vpshufb %ymm6, %ymm16, %ymm16512; AVX512BW-NEXT: vpshufb %ymm6, %ymm17, %ymm26513; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm2[0],ymm1[0],ymm2[1],ymm1[1],ymm2[2],ymm1[2],ymm2[3],ymm1[3],ymm2[4],ymm1[4],ymm2[5],ymm1[5],ymm2[6],ymm1[6],ymm2[7],ymm1[7],ymm2[16],ymm1[16],ymm2[17],ymm1[17],ymm2[18],ymm1[18],ymm2[19],ymm1[19],ymm2[20],ymm1[20],ymm2[21],ymm1[21],ymm2[22],ymm1[22],ymm2[23],ymm1[23]6514; AVX512BW-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]6515; AVX512BW-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm17[8],ymm16[8],ymm17[9],ymm16[9],ymm17[10],ymm16[10],ymm17[11],ymm16[11],ymm17[12],ymm16[12],ymm17[13],ymm16[13],ymm17[14],ymm16[14],ymm17[15],ymm16[15],ymm17[24],ymm16[24],ymm17[25],ymm16[25],ymm17[26],ymm16[26],ymm17[27],ymm16[27],ymm17[28],ymm16[28],ymm17[29],ymm16[29],ymm17[30],ymm16[30],ymm17[31],ymm16[31]6516; AVX512BW-NEXT: vpermw %ymm2, %ymm11, %ymm26517; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm16518; AVX512BW-NEXT: vpshufb %ymm0, %ymm13, %ymm26519; AVX512BW-NEXT: vpshufb %ymm0, %ymm14, %ymm06520; AVX512BW-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[4],ymm2[4],ymm0[5],ymm2[5],ymm0[6],ymm2[6],ymm0[7],ymm2[7],ymm0[16],ymm2[16],ymm0[17],ymm2[17],ymm0[18],ymm2[18],ymm0[19],ymm2[19],ymm0[20],ymm2[20],ymm0[21],ymm2[21],ymm0[22],ymm2[22],ymm0[23],ymm2[23]6521; AVX512BW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]6522; AVX512BW-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm14[8],ymm13[8],ymm14[9],ymm13[9],ymm14[10],ymm13[10],ymm14[11],ymm13[11],ymm14[12],ymm13[12],ymm14[13],ymm13[13],ymm14[14],ymm13[14],ymm14[15],ymm13[15],ymm14[24],ymm13[24],ymm14[25],ymm13[25],ymm14[26],ymm13[26],ymm14[27],ymm13[27],ymm14[28],ymm13[28],ymm14[29],ymm13[29],ymm14[30],ymm13[30],ymm14[31],ymm13[31]6523; AVX512BW-NEXT: vpermw %ymm2, %ymm18, %ymm26524; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm06525; AVX512BW-NEXT: vmovdqu16 %zmm1, %zmm0 {%k2}6526; AVX512BW-NEXT: vpshufb %zmm9, %zmm5, %zmm16527; AVX512BW-NEXT: vpermq {{.*#+}} zmm1 = zmm1[2,2,2,3,6,6,6,7]6528; AVX512BW-NEXT: vmovdqu16 %zmm1, %zmm0 {%k1}6529; AVX512BW-NEXT: vpshufb {{.*#+}} zmm1 = zmm8[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,58,u,61,u,60,u,59,u,62,u,u,u,u,u,63]6530; AVX512BW-NEXT: vpermq {{.*#+}} zmm1 = zmm1[2,2,2,3,6,6,6,7]6531; AVX512BW-NEXT: vmovdqu8 %zmm1, %zmm0 {%k3}6532; AVX512BW-NEXT: vmovdqa64 %zmm0, 128(%rax)6533; AVX512BW-NEXT: vmovdqa64 %zmm10, 320(%rax)6534; AVX512BW-NEXT: vmovdqa64 %zmm4, 256(%rax)6535; AVX512BW-NEXT: vmovdqa64 %zmm15, 64(%rax)6536; AVX512BW-NEXT: vmovdqa64 %zmm7, (%rax)6537; AVX512BW-NEXT: vmovdqa64 %zmm3, 192(%rax)6538; AVX512BW-NEXT: vzeroupper6539; AVX512BW-NEXT: retq6540;6541; AVX512BW-FCP-LABEL: store_i8_stride6_vf64:6542; AVX512BW-FCP: # %bb.0:6543; AVX512BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax6544; AVX512BW-FCP-NEXT: vmovdqa64 (%r8), %zmm26545; AVX512BW-FCP-NEXT: vmovdqa64 (%r9), %zmm16546; AVX512BW-FCP-NEXT: vpbroadcastq {{.*#+}} ymm0 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]6547; AVX512BW-FCP-NEXT: vmovdqa (%rcx), %xmm156548; AVX512BW-FCP-NEXT: vmovdqa 32(%rcx), %xmm66549; AVX512BW-FCP-NEXT: vpshufb %xmm0, %xmm6, %xmm36550; AVX512BW-FCP-NEXT: vmovdqa64 (%rdx), %xmm166551; AVX512BW-FCP-NEXT: vmovdqa 32(%rdx), %xmm86552; AVX512BW-FCP-NEXT: vpshufb %xmm0, %xmm8, %xmm46553; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7]6554; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm8[0],xmm6[0],xmm8[1],xmm6[1],xmm8[2],xmm6[2],xmm8[3],xmm6[3],xmm8[4],xmm6[4],xmm8[5],xmm6[5],xmm8[6],xmm6[6],xmm8[7],xmm6[7]6555; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm5 = [1,0,3,2,1,0,3,2,1,0,3,2,5,4,7,6,32,33,34,35,32,33,34,35,32,33,34,35,36,37,38,39]6556; AVX512BW-FCP-NEXT: vpermt2w %zmm3, %zmm5, %zmm46557; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %xmm176558; AVX512BW-FCP-NEXT: vmovdqa 32(%rsi), %xmm96559; AVX512BW-FCP-NEXT: vpbroadcastq {{.*#+}} xmm7 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]6560; AVX512BW-FCP-NEXT: vpshufb %xmm7, %xmm9, %xmm36561; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %xmm186562; AVX512BW-FCP-NEXT: vmovdqa 32(%rdi), %xmm106563; AVX512BW-FCP-NEXT: vpshufb %xmm7, %xmm10, %xmm116564; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm11[8],xmm3[8],xmm11[9],xmm3[9],xmm11[10],xmm3[10],xmm11[11],xmm3[11],xmm11[12],xmm3[12],xmm11[13],xmm3[13],xmm11[14],xmm3[14],xmm11[15],xmm3[15]6565; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm12 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3],xmm10[4],xmm9[4],xmm10[5],xmm9[5],xmm10[6],xmm9[6],xmm10[7],xmm9[7]6566; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm13 = [0,3,2,1,0,3,2,1,0,3,2,1,4,5,6,5,32,33,34,35,32,33,34,35,32,33,34,35,36,37,38,39]6567; AVX512BW-FCP-NEXT: vpermt2w %zmm3, %zmm13, %zmm126568; AVX512BW-FCP-NEXT: movl $-1840700270, %r10d # imm = 0x924924926569; AVX512BW-FCP-NEXT: kmovd %r10d, %k16570; AVX512BW-FCP-NEXT: vmovdqu16 %zmm4, %zmm12 {%k1}6571; AVX512BW-FCP-NEXT: vmovdqa 32(%r8), %xmm116572; AVX512BW-FCP-NEXT: vpmovzxbw {{.*#+}} xmm3 = xmm11[0],zero,xmm11[1],zero,xmm11[2],zero,xmm11[3],zero,xmm11[4],zero,xmm11[5],zero,xmm11[6],zero,xmm11[7],zero6573; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [0,1,16,3,4,17,6,7,18,9,10,19,12,13,20,15]6574; AVX512BW-FCP-NEXT: vmovdqa %ymm12, %ymm46575; AVX512BW-FCP-NEXT: vpermt2w %ymm3, %ymm14, %ymm46576; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm19 = [16,37,18,19,38,21,22,39,24,25,32,27,28,33,30,31]6577; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm20 = [8,9,0,0,0,5,6,7]6578; AVX512BW-FCP-NEXT: vpshufb %xmm20, %xmm11, %xmm36579; AVX512BW-FCP-NEXT: vpermt2w %zmm3, %zmm19, %zmm126580; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm12, %zmm4, %zmm36581; AVX512BW-FCP-NEXT: vmovdqa 32(%r9), %xmm126582; AVX512BW-FCP-NEXT: vmovdqa64 {{.*#+}} xmm21 = [u,8,u,9,u,10,u,11,u,4,u,5,u,6,u,7]6583; AVX512BW-FCP-NEXT: vpshufb %xmm21, %xmm12, %xmm46584; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm22 = xmm12[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]6585; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm23 = [2,1,0,3,2,1,0,3,2,1,0,3,4,4,4,4,38,37,32,39,38,37,32,39,38,37,32,39,33,33,33,33]6586; AVX512BW-FCP-NEXT: vpermt2w %zmm4, %zmm23, %zmm226587; AVX512BW-FCP-NEXT: movabsq $585610922974906400, %r10 # imm = 0x8208208208208206588; AVX512BW-FCP-NEXT: kmovq %r10, %k26589; AVX512BW-FCP-NEXT: vmovdqu8 %zmm22, %zmm3 {%k2}6590; AVX512BW-FCP-NEXT: vpshufb %xmm0, %xmm15, %xmm46591; AVX512BW-FCP-NEXT: vpshufb %xmm0, %xmm16, %xmm226592; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm22[0],xmm4[0],xmm22[1],xmm4[1],xmm22[2],xmm4[2],xmm22[3],xmm4[3],xmm22[4],xmm4[4],xmm22[5],xmm4[5],xmm22[6],xmm4[6],xmm22[7],xmm4[7]6593; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm22 = xmm16[0],xmm15[0],xmm16[1],xmm15[1],xmm16[2],xmm15[2],xmm16[3],xmm15[3],xmm16[4],xmm15[4],xmm16[5],xmm15[5],xmm16[6],xmm15[6],xmm16[7],xmm15[7]6594; AVX512BW-FCP-NEXT: vpermt2w %zmm4, %zmm5, %zmm226595; AVX512BW-FCP-NEXT: vpshufb %xmm7, %xmm17, %xmm46596; AVX512BW-FCP-NEXT: vpshufb %xmm7, %xmm18, %xmm56597; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm4 = xmm5[8],xmm4[8],xmm5[9],xmm4[9],xmm5[10],xmm4[10],xmm5[11],xmm4[11],xmm5[12],xmm4[12],xmm5[13],xmm4[13],xmm5[14],xmm4[14],xmm5[15],xmm4[15]6598; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm18[0],xmm17[0],xmm18[1],xmm17[1],xmm18[2],xmm17[2],xmm18[3],xmm17[3],xmm18[4],xmm17[4],xmm18[5],xmm17[5],xmm18[6],xmm17[6],xmm18[7],xmm17[7]6599; AVX512BW-FCP-NEXT: vpermt2w %zmm4, %zmm13, %zmm56600; AVX512BW-FCP-NEXT: vmovdqu16 %zmm22, %zmm5 {%k1}6601; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm4 = mem[0,1,2,3,0,1,2,3]6602; AVX512BW-FCP-NEXT: vpmovzxbw {{.*#+}} xmm7 = xmm4[0],zero,xmm4[1],zero,xmm4[2],zero,xmm4[3],zero,xmm4[4],zero,xmm4[5],zero,xmm4[6],zero,xmm4[7],zero6603; AVX512BW-FCP-NEXT: vpermi2w %ymm7, %ymm5, %ymm146604; AVX512BW-FCP-NEXT: vpshufb %xmm20, %xmm4, %xmm76605; AVX512BW-FCP-NEXT: vpermt2w %zmm7, %zmm19, %zmm56606; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm14, %zmm56607; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm7 = mem[0,1,2,3,0,1,2,3]6608; AVX512BW-FCP-NEXT: vpshufb %xmm21, %xmm7, %xmm136609; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm14 = xmm7[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]6610; AVX512BW-FCP-NEXT: vpermt2w %zmm13, %zmm23, %zmm146611; AVX512BW-FCP-NEXT: vmovdqu8 %zmm14, %zmm5 {%k2}6612; AVX512BW-FCP-NEXT: vmovdqa (%rcx), %ymm136613; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %ymm146614; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm19 = ymm14[0],ymm13[0],ymm14[1],ymm13[1],ymm14[2],ymm13[2],ymm14[3],ymm13[3],ymm14[4],ymm13[4],ymm14[5],ymm13[5],ymm14[6],ymm13[6],ymm14[7],ymm13[7],ymm14[16],ymm13[16],ymm14[17],ymm13[17],ymm14[18],ymm13[18],ymm14[19],ymm13[19],ymm14[20],ymm13[20],ymm14[21],ymm13[21],ymm14[22],ymm13[22],ymm14[23],ymm13[23]6615; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm20 = xmm16[8],xmm15[8],xmm16[9],xmm15[9],xmm16[10],xmm15[10],xmm16[11],xmm15[11],xmm16[12],xmm15[12],xmm16[13],xmm15[13],xmm16[14],xmm15[14],xmm16[15],xmm15[15]6616; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm21 = [5,4,3,6,5,4,3,6,5,4,3,6,7,7,7,7,41,40,43,42,41,40,43,42,41,40,43,42,45,44,47,46]6617; AVX512BW-FCP-NEXT: vpermt2w %zmm19, %zmm21, %zmm206618; AVX512BW-FCP-NEXT: vmovdqa (%rsi), %ymm156619; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %ymm166620; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm19 = ymm16[0],ymm15[0],ymm16[1],ymm15[1],ymm16[2],ymm15[2],ymm16[3],ymm15[3],ymm16[4],ymm15[4],ymm16[5],ymm15[5],ymm16[6],ymm15[6],ymm16[7],ymm15[7],ymm16[16],ymm15[16],ymm16[17],ymm15[17],ymm16[18],ymm15[18],ymm16[19],ymm15[19],ymm16[20],ymm15[20],ymm16[21],ymm15[21],ymm16[22],ymm15[22],ymm16[23],ymm15[23]6621; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm17 = xmm18[8],xmm17[8],xmm18[9],xmm17[9],xmm18[10],xmm17[10],xmm18[11],xmm17[11],xmm18[12],xmm17[12],xmm18[13],xmm17[13],xmm18[14],xmm17[14],xmm18[15],xmm17[15]6622; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm18 = [4,3,6,5,4,3,6,5,4,3,6,5,7,7,7,7,40,43,42,41,40,43,42,41,40,43,42,41,44,45,46,45]6623; AVX512BW-FCP-NEXT: vpermt2w %zmm19, %zmm18, %zmm176624; AVX512BW-FCP-NEXT: movl $613566756, %r10d # imm = 0x249249246625; AVX512BW-FCP-NEXT: kmovd %r10d, %k26626; AVX512BW-FCP-NEXT: vmovdqu16 %zmm20, %zmm17 {%k2}6627; AVX512BW-FCP-NEXT: vextracti64x4 $1, %zmm17, %ymm196628; AVX512BW-FCP-NEXT: vbroadcasti32x4 {{.*#+}} ymm20 = [2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0]6629; AVX512BW-FCP-NEXT: # ymm20 = mem[0,1,2,3,0,1,2,3]6630; AVX512BW-FCP-NEXT: vpshufb %ymm20, %ymm4, %ymm226631; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm22 = ymm22[2,2,2,3]6632; AVX512BW-FCP-NEXT: movw $18724, %r10w # imm = 0x49246633; AVX512BW-FCP-NEXT: kmovd %r10d, %k36634; AVX512BW-FCP-NEXT: vmovdqu16 %ymm22, %ymm19 {%k3}6635; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm22 = xmm4[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]6636; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm23 = [18,1,2,19,4,5,20,7,8,21,10,11,22,13,14,23]6637; AVX512BW-FCP-NEXT: vpermt2w %ymm22, %ymm23, %ymm176638; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm19, %zmm17, %zmm176639; AVX512BW-FCP-NEXT: vbroadcasti32x4 {{.*#+}} ymm19 = [0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0]6640; AVX512BW-FCP-NEXT: # ymm19 = mem[0,1,2,3,0,1,2,3]6641; AVX512BW-FCP-NEXT: vpshufb %ymm19, %ymm7, %ymm226642; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm24 = xmm7[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]6643; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm25 = [2,5,4,3,2,5,4,3,2,5,4,3,6,5,6,7,40,41,42,43,40,41,42,43,40,41,42,43,44,45,46,47]6644; AVX512BW-FCP-NEXT: vpermt2w %zmm22, %zmm25, %zmm246645; AVX512BW-FCP-NEXT: movabsq $2342443691899625602, %r10 # imm = 0x20820820820820826646; AVX512BW-FCP-NEXT: kmovq %r10, %k46647; AVX512BW-FCP-NEXT: vmovdqu8 %zmm24, %zmm17 {%k4}6648; AVX512BW-FCP-NEXT: vmovdqa64 32(%rcx), %ymm226649; AVX512BW-FCP-NEXT: vmovdqa64 32(%rdx), %ymm246650; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm26 = ymm24[0],ymm22[0],ymm24[1],ymm22[1],ymm24[2],ymm22[2],ymm24[3],ymm22[3],ymm24[4],ymm22[4],ymm24[5],ymm22[5],ymm24[6],ymm22[6],ymm24[7],ymm22[7],ymm24[16],ymm22[16],ymm24[17],ymm22[17],ymm24[18],ymm22[18],ymm24[19],ymm22[19],ymm24[20],ymm22[20],ymm24[21],ymm22[21],ymm24[22],ymm22[22],ymm24[23],ymm22[23]6651; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm6 = xmm8[8],xmm6[8],xmm8[9],xmm6[9],xmm8[10],xmm6[10],xmm8[11],xmm6[11],xmm8[12],xmm6[12],xmm8[13],xmm6[13],xmm8[14],xmm6[14],xmm8[15],xmm6[15]6652; AVX512BW-FCP-NEXT: vpermt2w %zmm26, %zmm21, %zmm66653; AVX512BW-FCP-NEXT: vmovdqa 32(%rsi), %ymm86654; AVX512BW-FCP-NEXT: vmovdqa64 32(%rdi), %ymm216655; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm26 = ymm21[0],ymm8[0],ymm21[1],ymm8[1],ymm21[2],ymm8[2],ymm21[3],ymm8[3],ymm21[4],ymm8[4],ymm21[5],ymm8[5],ymm21[6],ymm8[6],ymm21[7],ymm8[7],ymm21[16],ymm8[16],ymm21[17],ymm8[17],ymm21[18],ymm8[18],ymm21[19],ymm8[19],ymm21[20],ymm8[20],ymm21[21],ymm8[21],ymm21[22],ymm8[22],ymm21[23],ymm8[23]6656; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm10[8],xmm9[8],xmm10[9],xmm9[9],xmm10[10],xmm9[10],xmm10[11],xmm9[11],xmm10[12],xmm9[12],xmm10[13],xmm9[13],xmm10[14],xmm9[14],xmm10[15],xmm9[15]6657; AVX512BW-FCP-NEXT: vpermt2w %zmm26, %zmm18, %zmm96658; AVX512BW-FCP-NEXT: vmovdqu16 %zmm6, %zmm9 {%k2}6659; AVX512BW-FCP-NEXT: vextracti64x4 $1, %zmm9, %ymm66660; AVX512BW-FCP-NEXT: vmovdqa 32(%r8), %ymm106661; AVX512BW-FCP-NEXT: vpshufb %ymm20, %ymm10, %ymm106662; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]6663; AVX512BW-FCP-NEXT: vmovdqu16 %ymm10, %ymm6 {%k3}6664; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm10 = xmm11[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]6665; AVX512BW-FCP-NEXT: vpermt2w %ymm10, %ymm23, %ymm96666; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm9, %zmm66667; AVX512BW-FCP-NEXT: vmovdqa 32(%r9), %ymm96668; AVX512BW-FCP-NEXT: vpshufb %ymm19, %ymm9, %ymm96669; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm10 = xmm12[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]6670; AVX512BW-FCP-NEXT: vpermt2w %zmm9, %zmm25, %zmm106671; AVX512BW-FCP-NEXT: vmovdqu8 %zmm10, %zmm6 {%k4}6672; AVX512BW-FCP-NEXT: vpbroadcastq {{.*#+}} ymm9 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]6673; AVX512BW-FCP-NEXT: vpshufb %ymm9, %ymm8, %ymm106674; AVX512BW-FCP-NEXT: vpshufb %ymm9, %ymm21, %ymm116675; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm10 = ymm11[0],ymm10[0],ymm11[1],ymm10[1],ymm11[2],ymm10[2],ymm11[3],ymm10[3],ymm11[4],ymm10[4],ymm11[5],ymm10[5],ymm11[6],ymm10[6],ymm11[7],ymm10[7],ymm11[16],ymm10[16],ymm11[17],ymm10[17],ymm11[18],ymm10[18],ymm11[19],ymm10[19],ymm11[20],ymm10[20],ymm11[21],ymm10[21],ymm11[22],ymm10[22],ymm11[23],ymm10[23]6676; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]6677; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm8 = ymm21[8],ymm8[8],ymm21[9],ymm8[9],ymm21[10],ymm8[10],ymm21[11],ymm8[11],ymm21[12],ymm8[12],ymm21[13],ymm8[13],ymm21[14],ymm8[14],ymm21[15],ymm8[15],ymm21[24],ymm8[24],ymm21[25],ymm8[25],ymm21[26],ymm8[26],ymm21[27],ymm8[27],ymm21[28],ymm8[28],ymm21[29],ymm8[29],ymm21[30],ymm8[30],ymm21[31],ymm8[31]6678; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [12,11,14,13,12,11,14,13,12,11,14,13,15,15,15,15]6679; AVX512BW-FCP-NEXT: vpermw %ymm8, %ymm11, %ymm86680; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm10, %zmm86681; AVX512BW-FCP-NEXT: vpshufb %ymm0, %ymm22, %ymm106682; AVX512BW-FCP-NEXT: vpshufb %ymm0, %ymm24, %ymm126683; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm10 = ymm12[0],ymm10[0],ymm12[1],ymm10[1],ymm12[2],ymm10[2],ymm12[3],ymm10[3],ymm12[4],ymm10[4],ymm12[5],ymm10[5],ymm12[6],ymm10[6],ymm12[7],ymm10[7],ymm12[16],ymm10[16],ymm12[17],ymm10[17],ymm12[18],ymm10[18],ymm12[19],ymm10[19],ymm12[20],ymm10[20],ymm12[21],ymm10[21],ymm12[22],ymm10[22],ymm12[23],ymm10[23]6684; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]6685; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm12 = ymm24[8],ymm22[8],ymm24[9],ymm22[9],ymm24[10],ymm22[10],ymm24[11],ymm22[11],ymm24[12],ymm22[12],ymm24[13],ymm22[13],ymm24[14],ymm22[14],ymm24[15],ymm22[15],ymm24[24],ymm22[24],ymm24[25],ymm22[25],ymm24[26],ymm22[26],ymm24[27],ymm22[27],ymm24[28],ymm22[28],ymm24[29],ymm22[29],ymm24[30],ymm22[30],ymm24[31],ymm22[31]6686; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm18 = [13,12,11,14,13,12,11,14,13,12,11,14,15,15,15,15]6687; AVX512BW-FCP-NEXT: vpermw %ymm12, %ymm18, %ymm126688; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm12, %zmm10, %zmm106689; AVX512BW-FCP-NEXT: vmovdqu16 %zmm8, %zmm10 {%k2}6690; AVX512BW-FCP-NEXT: vshufi64x2 {{.*#+}} zmm2 = zmm2[4,5,6,7,4,5,6,7]6691; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,10,13,12,11,14,0,0,15,10,13,12,11,14,0,0,15]6692; AVX512BW-FCP-NEXT: vpshufb %zmm8, %zmm2, %zmm26693; AVX512BW-FCP-NEXT: vpermq {{.*#+}} zmm2 = zmm2[2,2,2,3,6,6,6,7]6694; AVX512BW-FCP-NEXT: vmovdqu16 %zmm2, %zmm10 {%k1}6695; AVX512BW-FCP-NEXT: vshufi64x2 {{.*#+}} zmm1 = zmm1[4,5,6,7,4,5,6,7]6696; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} zmm1 = zmm1[u,6,u,5,u,8,u,7,u,u,u,9,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u,u,42,u,45,u,44,u,43,u,46,u,u,u,u,u,47,u,58,u,61,u,60,u,59,u,62,u,u,u,u,u,63]6697; AVX512BW-FCP-NEXT: vpermq {{.*#+}} zmm1 = zmm1[2,2,2,3,6,6,6,7]6698; AVX512BW-FCP-NEXT: movabsq $-9076969306111049208, %rcx # imm = 0x82082082082082086699; AVX512BW-FCP-NEXT: kmovq %rcx, %k36700; AVX512BW-FCP-NEXT: vmovdqu8 %zmm1, %zmm10 {%k3}6701; AVX512BW-FCP-NEXT: vpshufb %ymm9, %ymm15, %ymm16702; AVX512BW-FCP-NEXT: vpshufb %ymm9, %ymm16, %ymm26703; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm2[0],ymm1[0],ymm2[1],ymm1[1],ymm2[2],ymm1[2],ymm2[3],ymm1[3],ymm2[4],ymm1[4],ymm2[5],ymm1[5],ymm2[6],ymm1[6],ymm2[7],ymm1[7],ymm2[16],ymm1[16],ymm2[17],ymm1[17],ymm2[18],ymm1[18],ymm2[19],ymm1[19],ymm2[20],ymm1[20],ymm2[21],ymm1[21],ymm2[22],ymm1[22],ymm2[23],ymm1[23]6704; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]6705; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm16[8],ymm15[8],ymm16[9],ymm15[9],ymm16[10],ymm15[10],ymm16[11],ymm15[11],ymm16[12],ymm15[12],ymm16[13],ymm15[13],ymm16[14],ymm15[14],ymm16[15],ymm15[15],ymm16[24],ymm15[24],ymm16[25],ymm15[25],ymm16[26],ymm15[26],ymm16[27],ymm15[27],ymm16[28],ymm15[28],ymm16[29],ymm15[29],ymm16[30],ymm15[30],ymm16[31],ymm15[31]6706; AVX512BW-FCP-NEXT: vpermw %ymm2, %ymm11, %ymm26707; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm16708; AVX512BW-FCP-NEXT: vpshufb %ymm0, %ymm13, %ymm26709; AVX512BW-FCP-NEXT: vpshufb %ymm0, %ymm14, %ymm06710; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[4],ymm2[4],ymm0[5],ymm2[5],ymm0[6],ymm2[6],ymm0[7],ymm2[7],ymm0[16],ymm2[16],ymm0[17],ymm2[17],ymm0[18],ymm2[18],ymm0[19],ymm2[19],ymm0[20],ymm2[20],ymm0[21],ymm2[21],ymm0[22],ymm2[22],ymm0[23],ymm2[23]6711; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]6712; AVX512BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm14[8],ymm13[8],ymm14[9],ymm13[9],ymm14[10],ymm13[10],ymm14[11],ymm13[11],ymm14[12],ymm13[12],ymm14[13],ymm13[13],ymm14[14],ymm13[14],ymm14[15],ymm13[15],ymm14[24],ymm13[24],ymm14[25],ymm13[25],ymm14[26],ymm13[26],ymm14[27],ymm13[27],ymm14[28],ymm13[28],ymm14[29],ymm13[29],ymm14[30],ymm13[30],ymm14[31],ymm13[31]6713; AVX512BW-FCP-NEXT: vpermw %ymm2, %ymm18, %ymm26714; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm06715; AVX512BW-FCP-NEXT: vmovdqu16 %zmm1, %zmm0 {%k2}6716; AVX512BW-FCP-NEXT: vpshufb %zmm8, %zmm4, %zmm16717; AVX512BW-FCP-NEXT: vpermq {{.*#+}} zmm1 = zmm1[2,2,2,3,6,6,6,7]6718; AVX512BW-FCP-NEXT: vmovdqu16 %zmm1, %zmm0 {%k1}6719; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} zmm1 = zmm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,58,u,61,u,60,u,59,u,62,u,u,u,u,u,63]6720; AVX512BW-FCP-NEXT: vpermq {{.*#+}} zmm1 = zmm1[2,2,2,3,6,6,6,7]6721; AVX512BW-FCP-NEXT: vmovdqu8 %zmm1, %zmm0 {%k3}6722; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, 128(%rax)6723; AVX512BW-FCP-NEXT: vmovdqa64 %zmm10, 320(%rax)6724; AVX512BW-FCP-NEXT: vmovdqa64 %zmm6, 256(%rax)6725; AVX512BW-FCP-NEXT: vmovdqa64 %zmm17, 64(%rax)6726; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, (%rax)6727; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, 192(%rax)6728; AVX512BW-FCP-NEXT: vzeroupper6729; AVX512BW-FCP-NEXT: retq6730;6731; AVX512DQ-BW-LABEL: store_i8_stride6_vf64:6732; AVX512DQ-BW: # %bb.0:6733; AVX512DQ-BW-NEXT: movq {{[0-9]+}}(%rsp), %rax6734; AVX512DQ-BW-NEXT: vmovdqa64 (%r8), %zmm26735; AVX512DQ-BW-NEXT: vmovdqa64 (%r9), %zmm16736; AVX512DQ-BW-NEXT: vmovdqa (%rsi), %xmm156737; AVX512DQ-BW-NEXT: vmovdqa 32(%rsi), %xmm46738; AVX512DQ-BW-NEXT: vpbroadcastq {{.*#+}} xmm5 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]6739; AVX512DQ-BW-NEXT: vpshufb %xmm5, %xmm4, %xmm06740; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %xmm186741; AVX512DQ-BW-NEXT: vmovdqa 32(%rdi), %xmm66742; AVX512DQ-BW-NEXT: vpshufb %xmm5, %xmm6, %xmm36743; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm3[8],xmm0[8],xmm3[9],xmm0[9],xmm3[10],xmm0[10],xmm3[11],xmm0[11],xmm3[12],xmm0[12],xmm3[13],xmm0[13],xmm3[14],xmm0[14],xmm3[15],xmm0[15]6744; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm3 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3],xmm6[4],xmm4[4],xmm6[5],xmm4[5],xmm6[6],xmm4[6],xmm6[7],xmm4[7]6745; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,3,2,1,0,3,2,1,0,3,2,1,4,5,6,5,32,33,34,35,32,33,34,35,32,33,34,35,36,37,38,39]6746; AVX512DQ-BW-NEXT: vpermt2w %zmm0, %zmm7, %zmm36747; AVX512DQ-BW-NEXT: vpbroadcastq {{.*#+}} ymm0 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]6748; AVX512DQ-BW-NEXT: vmovdqa64 (%rcx), %xmm166749; AVX512DQ-BW-NEXT: vmovdqa 32(%rcx), %xmm106750; AVX512DQ-BW-NEXT: vpshufb %xmm0, %xmm10, %xmm86751; AVX512DQ-BW-NEXT: vmovdqa64 (%rdx), %xmm176752; AVX512DQ-BW-NEXT: vmovdqa 32(%rdx), %xmm116753; AVX512DQ-BW-NEXT: vpshufb %xmm0, %xmm11, %xmm96754; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm8 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3],xmm9[4],xmm8[4],xmm9[5],xmm8[5],xmm9[6],xmm8[6],xmm9[7],xmm8[7]6755; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm11[0],xmm10[0],xmm11[1],xmm10[1],xmm11[2],xmm10[2],xmm11[3],xmm10[3],xmm11[4],xmm10[4],xmm11[5],xmm10[5],xmm11[6],xmm10[6],xmm11[7],xmm10[7]6756; AVX512DQ-BW-NEXT: vprold $16, %xmm9, %xmm96757; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm8, %zmm9, %zmm86758; AVX512DQ-BW-NEXT: vpermq {{.*#+}} zmm8 = zmm8[0,0,0,1,4,4,4,5]6759; AVX512DQ-BW-NEXT: movl $-1840700270, %r10d # imm = 0x924924926760; AVX512DQ-BW-NEXT: kmovd %r10d, %k16761; AVX512DQ-BW-NEXT: vmovdqu16 %zmm8, %zmm3 {%k1}6762; AVX512DQ-BW-NEXT: vmovdqa 32(%r8), %xmm96763; AVX512DQ-BW-NEXT: vpmovzxbw {{.*#+}} xmm8 = xmm9[0],zero,xmm9[1],zero,xmm9[2],zero,xmm9[3],zero,xmm9[4],zero,xmm9[5],zero,xmm9[6],zero,xmm9[7],zero6764; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm13 = [0,1,16,3,4,17,6,7,18,9,10,19,12,13,20,15]6765; AVX512DQ-BW-NEXT: vmovdqa %ymm3, %ymm126766; AVX512DQ-BW-NEXT: vpermt2w %ymm8, %ymm13, %ymm126767; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm8 = [16,37,18,19,38,21,22,39,24,25,32,27,28,33,30,31]6768; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} xmm14 = xmm9[2,1,2,3]6769; AVX512DQ-BW-NEXT: vpmovzxbw {{.*#+}} xmm14 = xmm14[0],zero,xmm14[1],zero,xmm14[2],zero,xmm14[3],zero,xmm14[4],zero,xmm14[5],zero,xmm14[6],zero,xmm14[7],zero6770; AVX512DQ-BW-NEXT: vpermt2w %zmm14, %zmm8, %zmm36771; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm3, %zmm12, %zmm36772; AVX512DQ-BW-NEXT: vmovdqa 32(%r9), %xmm126773; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm14 = xmm12[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]6774; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} xmm19 = xmm12[2,1,2,3]6775; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm19 = xmm19[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]6776; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm20 = [2,1,0,3,2,1,0,3,2,1,0,3,4,4,4,4,38,37,32,39,38,37,32,39,38,37,32,39,33,33,33,33]6777; AVX512DQ-BW-NEXT: vpermt2w %zmm19, %zmm20, %zmm146778; AVX512DQ-BW-NEXT: movabsq $585610922974906400, %r10 # imm = 0x8208208208208206779; AVX512DQ-BW-NEXT: kmovq %r10, %k26780; AVX512DQ-BW-NEXT: vmovdqu8 %zmm14, %zmm3 {%k2}6781; AVX512DQ-BW-NEXT: vpshufb %xmm5, %xmm15, %xmm146782; AVX512DQ-BW-NEXT: vpshufb %xmm5, %xmm18, %xmm56783; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm5[8],xmm14[8],xmm5[9],xmm14[9],xmm5[10],xmm14[10],xmm5[11],xmm14[11],xmm5[12],xmm14[12],xmm5[13],xmm14[13],xmm5[14],xmm14[14],xmm5[15],xmm14[15]6784; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm14 = xmm18[0],xmm15[0],xmm18[1],xmm15[1],xmm18[2],xmm15[2],xmm18[3],xmm15[3],xmm18[4],xmm15[4],xmm18[5],xmm15[5],xmm18[6],xmm15[6],xmm18[7],xmm15[7]6785; AVX512DQ-BW-NEXT: vpermt2w %zmm5, %zmm7, %zmm146786; AVX512DQ-BW-NEXT: vpshufb %xmm0, %xmm16, %xmm56787; AVX512DQ-BW-NEXT: vpshufb %xmm0, %xmm17, %xmm76788; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm7[0],xmm5[0],xmm7[1],xmm5[1],xmm7[2],xmm5[2],xmm7[3],xmm5[3],xmm7[4],xmm5[4],xmm7[5],xmm5[5],xmm7[6],xmm5[6],xmm7[7],xmm5[7]6789; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm17[0],xmm16[0],xmm17[1],xmm16[1],xmm17[2],xmm16[2],xmm17[3],xmm16[3],xmm17[4],xmm16[4],xmm17[5],xmm16[5],xmm17[6],xmm16[6],xmm17[7],xmm16[7]6790; AVX512DQ-BW-NEXT: vprold $16, %xmm7, %xmm76791; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm5, %zmm7, %zmm56792; AVX512DQ-BW-NEXT: vpermq {{.*#+}} zmm5 = zmm5[0,0,0,1,4,4,4,5]6793; AVX512DQ-BW-NEXT: vmovdqu16 %zmm5, %zmm14 {%k1}6794; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = mem[0,1,2,3,0,1,2,3]6795; AVX512DQ-BW-NEXT: vpmovzxbw {{.*#+}} xmm7 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[4],zero,xmm5[5],zero,xmm5[6],zero,xmm5[7],zero6796; AVX512DQ-BW-NEXT: vpermi2w %ymm7, %ymm14, %ymm136797; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} xmm7 = xmm5[2,1,2,3]6798; AVX512DQ-BW-NEXT: vpmovzxbw {{.*#+}} xmm7 = xmm7[0],zero,xmm7[1],zero,xmm7[2],zero,xmm7[3],zero,xmm7[4],zero,xmm7[5],zero,xmm7[6],zero,xmm7[7],zero6799; AVX512DQ-BW-NEXT: vpermt2w %zmm7, %zmm8, %zmm146800; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm14, %zmm13, %zmm76801; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = mem[0,1,2,3,0,1,2,3]6802; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm13 = xmm8[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]6803; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} xmm14 = xmm8[2,1,2,3]6804; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm14 = xmm14[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]6805; AVX512DQ-BW-NEXT: vpermt2w %zmm14, %zmm20, %zmm136806; AVX512DQ-BW-NEXT: vmovdqu8 %zmm13, %zmm7 {%k2}6807; AVX512DQ-BW-NEXT: vmovdqa (%rcx), %ymm136808; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %ymm146809; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm19 = ymm14[0],ymm13[0],ymm14[1],ymm13[1],ymm14[2],ymm13[2],ymm14[3],ymm13[3],ymm14[4],ymm13[4],ymm14[5],ymm13[5],ymm14[6],ymm13[6],ymm14[7],ymm13[7],ymm14[16],ymm13[16],ymm14[17],ymm13[17],ymm14[18],ymm13[18],ymm14[19],ymm13[19],ymm14[20],ymm13[20],ymm14[21],ymm13[21],ymm14[22],ymm13[22],ymm14[23],ymm13[23]6810; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm20 = xmm17[8],xmm16[8],xmm17[9],xmm16[9],xmm17[10],xmm16[10],xmm17[11],xmm16[11],xmm17[12],xmm16[12],xmm17[13],xmm16[13],xmm17[14],xmm16[14],xmm17[15],xmm16[15]6811; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm21 = [5,4,3,6,5,4,3,6,5,4,3,6,7,7,7,7,41,40,43,42,41,40,43,42,41,40,43,42,45,44,47,46]6812; AVX512DQ-BW-NEXT: vpermt2w %zmm19, %zmm21, %zmm206813; AVX512DQ-BW-NEXT: vmovdqa64 (%rsi), %ymm166814; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %ymm176815; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm19 = ymm17[0],ymm16[0],ymm17[1],ymm16[1],ymm17[2],ymm16[2],ymm17[3],ymm16[3],ymm17[4],ymm16[4],ymm17[5],ymm16[5],ymm17[6],ymm16[6],ymm17[7],ymm16[7],ymm17[16],ymm16[16],ymm17[17],ymm16[17],ymm17[18],ymm16[18],ymm17[19],ymm16[19],ymm17[20],ymm16[20],ymm17[21],ymm16[21],ymm17[22],ymm16[22],ymm17[23],ymm16[23]6816; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm15 = xmm18[8],xmm15[8],xmm18[9],xmm15[9],xmm18[10],xmm15[10],xmm18[11],xmm15[11],xmm18[12],xmm15[12],xmm18[13],xmm15[13],xmm18[14],xmm15[14],xmm18[15],xmm15[15]6817; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm18 = [4,3,6,5,4,3,6,5,4,3,6,5,7,7,7,7,40,43,42,41,40,43,42,41,40,43,42,41,44,45,46,45]6818; AVX512DQ-BW-NEXT: vpermt2w %zmm19, %zmm18, %zmm156819; AVX512DQ-BW-NEXT: movl $613566756, %r10d # imm = 0x249249246820; AVX512DQ-BW-NEXT: kmovd %r10d, %k26821; AVX512DQ-BW-NEXT: vmovdqu16 %zmm20, %zmm15 {%k2}6822; AVX512DQ-BW-NEXT: vextracti64x4 $1, %zmm15, %ymm196823; AVX512DQ-BW-NEXT: vbroadcasti32x4 {{.*#+}} ymm20 = [2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0]6824; AVX512DQ-BW-NEXT: # ymm20 = mem[0,1,2,3,0,1,2,3]6825; AVX512DQ-BW-NEXT: vpshufb %ymm20, %ymm5, %ymm226826; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm22 = ymm22[2,2,2,3]6827; AVX512DQ-BW-NEXT: movw $18724, %r10w # imm = 0x49246828; AVX512DQ-BW-NEXT: kmovd %r10d, %k36829; AVX512DQ-BW-NEXT: vmovdqu16 %ymm22, %ymm19 {%k3}6830; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm22 = xmm5[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]6831; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm23 = [18,1,2,19,4,5,20,7,8,21,10,11,22,13,14,23]6832; AVX512DQ-BW-NEXT: vpermt2w %ymm22, %ymm23, %ymm156833; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm19, %zmm15, %zmm156834; AVX512DQ-BW-NEXT: vbroadcasti32x4 {{.*#+}} ymm19 = [0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0]6835; AVX512DQ-BW-NEXT: # ymm19 = mem[0,1,2,3,0,1,2,3]6836; AVX512DQ-BW-NEXT: vpshufb %ymm19, %ymm8, %ymm226837; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm24 = xmm8[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]6838; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm25 = [2,5,4,3,2,5,4,3,2,5,4,3,6,5,6,7,40,41,42,43,40,41,42,43,40,41,42,43,44,45,46,47]6839; AVX512DQ-BW-NEXT: vpermt2w %zmm22, %zmm25, %zmm246840; AVX512DQ-BW-NEXT: movabsq $2342443691899625602, %r10 # imm = 0x20820820820820826841; AVX512DQ-BW-NEXT: kmovq %r10, %k46842; AVX512DQ-BW-NEXT: vmovdqu8 %zmm24, %zmm15 {%k4}6843; AVX512DQ-BW-NEXT: vmovdqa64 32(%rcx), %ymm226844; AVX512DQ-BW-NEXT: vmovdqa64 32(%rdx), %ymm246845; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm26 = ymm24[0],ymm22[0],ymm24[1],ymm22[1],ymm24[2],ymm22[2],ymm24[3],ymm22[3],ymm24[4],ymm22[4],ymm24[5],ymm22[5],ymm24[6],ymm22[6],ymm24[7],ymm22[7],ymm24[16],ymm22[16],ymm24[17],ymm22[17],ymm24[18],ymm22[18],ymm24[19],ymm22[19],ymm24[20],ymm22[20],ymm24[21],ymm22[21],ymm24[22],ymm22[22],ymm24[23],ymm22[23]6846; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm10 = xmm11[8],xmm10[8],xmm11[9],xmm10[9],xmm11[10],xmm10[10],xmm11[11],xmm10[11],xmm11[12],xmm10[12],xmm11[13],xmm10[13],xmm11[14],xmm10[14],xmm11[15],xmm10[15]6847; AVX512DQ-BW-NEXT: vpermt2w %zmm26, %zmm21, %zmm106848; AVX512DQ-BW-NEXT: vmovdqa 32(%rsi), %ymm116849; AVX512DQ-BW-NEXT: vmovdqa64 32(%rdi), %ymm216850; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm26 = ymm21[0],ymm11[0],ymm21[1],ymm11[1],ymm21[2],ymm11[2],ymm21[3],ymm11[3],ymm21[4],ymm11[4],ymm21[5],ymm11[5],ymm21[6],ymm11[6],ymm21[7],ymm11[7],ymm21[16],ymm11[16],ymm21[17],ymm11[17],ymm21[18],ymm11[18],ymm21[19],ymm11[19],ymm21[20],ymm11[20],ymm21[21],ymm11[21],ymm21[22],ymm11[22],ymm21[23],ymm11[23]6851; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm4 = xmm6[8],xmm4[8],xmm6[9],xmm4[9],xmm6[10],xmm4[10],xmm6[11],xmm4[11],xmm6[12],xmm4[12],xmm6[13],xmm4[13],xmm6[14],xmm4[14],xmm6[15],xmm4[15]6852; AVX512DQ-BW-NEXT: vpermt2w %zmm26, %zmm18, %zmm46853; AVX512DQ-BW-NEXT: vmovdqu16 %zmm10, %zmm4 {%k2}6854; AVX512DQ-BW-NEXT: vextracti64x4 $1, %zmm4, %ymm66855; AVX512DQ-BW-NEXT: vmovdqa 32(%r8), %ymm106856; AVX512DQ-BW-NEXT: vpshufb %ymm20, %ymm10, %ymm106857; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]6858; AVX512DQ-BW-NEXT: vmovdqu16 %ymm10, %ymm6 {%k3}6859; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm9[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]6860; AVX512DQ-BW-NEXT: vpermt2w %ymm9, %ymm23, %ymm46861; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm6, %zmm4, %zmm46862; AVX512DQ-BW-NEXT: vmovdqa 32(%r9), %ymm66863; AVX512DQ-BW-NEXT: vpshufb %ymm19, %ymm6, %ymm66864; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm12[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]6865; AVX512DQ-BW-NEXT: vpermt2w %zmm6, %zmm25, %zmm96866; AVX512DQ-BW-NEXT: vmovdqu8 %zmm9, %zmm4 {%k4}6867; AVX512DQ-BW-NEXT: vpbroadcastq {{.*#+}} ymm6 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]6868; AVX512DQ-BW-NEXT: vpshufb %ymm6, %ymm11, %ymm96869; AVX512DQ-BW-NEXT: vpshufb %ymm6, %ymm21, %ymm106870; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm9 = ymm10[0],ymm9[0],ymm10[1],ymm9[1],ymm10[2],ymm9[2],ymm10[3],ymm9[3],ymm10[4],ymm9[4],ymm10[5],ymm9[5],ymm10[6],ymm9[6],ymm10[7],ymm9[7],ymm10[16],ymm9[16],ymm10[17],ymm9[17],ymm10[18],ymm9[18],ymm10[19],ymm9[19],ymm10[20],ymm9[20],ymm10[21],ymm9[21],ymm10[22],ymm9[22],ymm10[23],ymm9[23]6871; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,2,3]6872; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} ymm10 = ymm21[8],ymm11[8],ymm21[9],ymm11[9],ymm21[10],ymm11[10],ymm21[11],ymm11[11],ymm21[12],ymm11[12],ymm21[13],ymm11[13],ymm21[14],ymm11[14],ymm21[15],ymm11[15],ymm21[24],ymm11[24],ymm21[25],ymm11[25],ymm21[26],ymm11[26],ymm21[27],ymm11[27],ymm21[28],ymm11[28],ymm21[29],ymm11[29],ymm21[30],ymm11[30],ymm21[31],ymm11[31]6873; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm11 = [12,11,14,13,12,11,14,13,12,11,14,13,15,15,15,15]6874; AVX512DQ-BW-NEXT: vpermw %ymm10, %ymm11, %ymm106875; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm10, %zmm9, %zmm96876; AVX512DQ-BW-NEXT: vpshufb %ymm0, %ymm22, %ymm106877; AVX512DQ-BW-NEXT: vpshufb %ymm0, %ymm24, %ymm126878; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm10 = ymm12[0],ymm10[0],ymm12[1],ymm10[1],ymm12[2],ymm10[2],ymm12[3],ymm10[3],ymm12[4],ymm10[4],ymm12[5],ymm10[5],ymm12[6],ymm10[6],ymm12[7],ymm10[7],ymm12[16],ymm10[16],ymm12[17],ymm10[17],ymm12[18],ymm10[18],ymm12[19],ymm10[19],ymm12[20],ymm10[20],ymm12[21],ymm10[21],ymm12[22],ymm10[22],ymm12[23],ymm10[23]6879; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]6880; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} ymm12 = ymm24[8],ymm22[8],ymm24[9],ymm22[9],ymm24[10],ymm22[10],ymm24[11],ymm22[11],ymm24[12],ymm22[12],ymm24[13],ymm22[13],ymm24[14],ymm22[14],ymm24[15],ymm22[15],ymm24[24],ymm22[24],ymm24[25],ymm22[25],ymm24[26],ymm22[26],ymm24[27],ymm22[27],ymm24[28],ymm22[28],ymm24[29],ymm22[29],ymm24[30],ymm22[30],ymm24[31],ymm22[31]6881; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm18 = [13,12,11,14,13,12,11,14,13,12,11,14,15,15,15,15]6882; AVX512DQ-BW-NEXT: vpermw %ymm12, %ymm18, %ymm126883; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm12, %zmm10, %zmm106884; AVX512DQ-BW-NEXT: vmovdqu16 %zmm9, %zmm10 {%k2}6885; AVX512DQ-BW-NEXT: vshufi64x2 {{.*#+}} zmm2 = zmm2[4,5,6,7,4,5,6,7]6886; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm9 = [6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,10,13,12,11,14,0,0,15,10,13,12,11,14,0,0,15]6887; AVX512DQ-BW-NEXT: vpshufb %zmm9, %zmm2, %zmm26888; AVX512DQ-BW-NEXT: vpermq {{.*#+}} zmm2 = zmm2[2,2,2,3,6,6,6,7]6889; AVX512DQ-BW-NEXT: vmovdqu16 %zmm2, %zmm10 {%k1}6890; AVX512DQ-BW-NEXT: vshufi64x2 {{.*#+}} zmm1 = zmm1[4,5,6,7,4,5,6,7]6891; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} zmm1 = zmm1[u,6,u,5,u,8,u,7,u,u,u,9,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u,u,42,u,45,u,44,u,43,u,46,u,u,u,u,u,47,u,58,u,61,u,60,u,59,u,62,u,u,u,u,u,63]6892; AVX512DQ-BW-NEXT: vpermq {{.*#+}} zmm1 = zmm1[2,2,2,3,6,6,6,7]6893; AVX512DQ-BW-NEXT: movabsq $-9076969306111049208, %rcx # imm = 0x82082082082082086894; AVX512DQ-BW-NEXT: kmovq %rcx, %k36895; AVX512DQ-BW-NEXT: vmovdqu8 %zmm1, %zmm10 {%k3}6896; AVX512DQ-BW-NEXT: vpshufb %ymm6, %ymm16, %ymm16897; AVX512DQ-BW-NEXT: vpshufb %ymm6, %ymm17, %ymm26898; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm2[0],ymm1[0],ymm2[1],ymm1[1],ymm2[2],ymm1[2],ymm2[3],ymm1[3],ymm2[4],ymm1[4],ymm2[5],ymm1[5],ymm2[6],ymm1[6],ymm2[7],ymm1[7],ymm2[16],ymm1[16],ymm2[17],ymm1[17],ymm2[18],ymm1[18],ymm2[19],ymm1[19],ymm2[20],ymm1[20],ymm2[21],ymm1[21],ymm2[22],ymm1[22],ymm2[23],ymm1[23]6899; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]6900; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm17[8],ymm16[8],ymm17[9],ymm16[9],ymm17[10],ymm16[10],ymm17[11],ymm16[11],ymm17[12],ymm16[12],ymm17[13],ymm16[13],ymm17[14],ymm16[14],ymm17[15],ymm16[15],ymm17[24],ymm16[24],ymm17[25],ymm16[25],ymm17[26],ymm16[26],ymm17[27],ymm16[27],ymm17[28],ymm16[28],ymm17[29],ymm16[29],ymm17[30],ymm16[30],ymm17[31],ymm16[31]6901; AVX512DQ-BW-NEXT: vpermw %ymm2, %ymm11, %ymm26902; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm16903; AVX512DQ-BW-NEXT: vpshufb %ymm0, %ymm13, %ymm26904; AVX512DQ-BW-NEXT: vpshufb %ymm0, %ymm14, %ymm06905; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[4],ymm2[4],ymm0[5],ymm2[5],ymm0[6],ymm2[6],ymm0[7],ymm2[7],ymm0[16],ymm2[16],ymm0[17],ymm2[17],ymm0[18],ymm2[18],ymm0[19],ymm2[19],ymm0[20],ymm2[20],ymm0[21],ymm2[21],ymm0[22],ymm2[22],ymm0[23],ymm2[23]6906; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]6907; AVX512DQ-BW-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm14[8],ymm13[8],ymm14[9],ymm13[9],ymm14[10],ymm13[10],ymm14[11],ymm13[11],ymm14[12],ymm13[12],ymm14[13],ymm13[13],ymm14[14],ymm13[14],ymm14[15],ymm13[15],ymm14[24],ymm13[24],ymm14[25],ymm13[25],ymm14[26],ymm13[26],ymm14[27],ymm13[27],ymm14[28],ymm13[28],ymm14[29],ymm13[29],ymm14[30],ymm13[30],ymm14[31],ymm13[31]6908; AVX512DQ-BW-NEXT: vpermw %ymm2, %ymm18, %ymm26909; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm06910; AVX512DQ-BW-NEXT: vmovdqu16 %zmm1, %zmm0 {%k2}6911; AVX512DQ-BW-NEXT: vpshufb %zmm9, %zmm5, %zmm16912; AVX512DQ-BW-NEXT: vpermq {{.*#+}} zmm1 = zmm1[2,2,2,3,6,6,6,7]6913; AVX512DQ-BW-NEXT: vmovdqu16 %zmm1, %zmm0 {%k1}6914; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} zmm1 = zmm8[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,58,u,61,u,60,u,59,u,62,u,u,u,u,u,63]6915; AVX512DQ-BW-NEXT: vpermq {{.*#+}} zmm1 = zmm1[2,2,2,3,6,6,6,7]6916; AVX512DQ-BW-NEXT: vmovdqu8 %zmm1, %zmm0 {%k3}6917; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, 128(%rax)6918; AVX512DQ-BW-NEXT: vmovdqa64 %zmm10, 320(%rax)6919; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, 256(%rax)6920; AVX512DQ-BW-NEXT: vmovdqa64 %zmm15, 64(%rax)6921; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, (%rax)6922; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, 192(%rax)6923; AVX512DQ-BW-NEXT: vzeroupper6924; AVX512DQ-BW-NEXT: retq6925;6926; AVX512DQ-BW-FCP-LABEL: store_i8_stride6_vf64:6927; AVX512DQ-BW-FCP: # %bb.0:6928; AVX512DQ-BW-FCP-NEXT: movq {{[0-9]+}}(%rsp), %rax6929; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%r8), %zmm26930; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%r9), %zmm16931; AVX512DQ-BW-FCP-NEXT: vpbroadcastq {{.*#+}} ymm0 = [5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10,5,8,7,6,9,0,0,10]6932; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rcx), %xmm156933; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%rcx), %xmm66934; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm0, %xmm6, %xmm36935; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdx), %xmm166936; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%rdx), %xmm86937; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm0, %xmm8, %xmm46938; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7]6939; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm8[0],xmm6[0],xmm8[1],xmm6[1],xmm8[2],xmm6[2],xmm8[3],xmm6[3],xmm8[4],xmm6[4],xmm8[5],xmm6[5],xmm8[6],xmm6[6],xmm8[7],xmm6[7]6940; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm5 = [1,0,3,2,1,0,3,2,1,0,3,2,5,4,7,6,32,33,34,35,32,33,34,35,32,33,34,35,36,37,38,39]6941; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm3, %zmm5, %zmm46942; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %xmm176943; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%rsi), %xmm96944; AVX512DQ-BW-FCP-NEXT: vpbroadcastq {{.*#+}} xmm7 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]6945; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm7, %xmm9, %xmm36946; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %xmm186947; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%rdi), %xmm106948; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm7, %xmm10, %xmm116949; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm11[8],xmm3[8],xmm11[9],xmm3[9],xmm11[10],xmm3[10],xmm11[11],xmm3[11],xmm11[12],xmm3[12],xmm11[13],xmm3[13],xmm11[14],xmm3[14],xmm11[15],xmm3[15]6950; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm12 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3],xmm10[4],xmm9[4],xmm10[5],xmm9[5],xmm10[6],xmm9[6],xmm10[7],xmm9[7]6951; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm13 = [0,3,2,1,0,3,2,1,0,3,2,1,4,5,6,5,32,33,34,35,32,33,34,35,32,33,34,35,36,37,38,39]6952; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm3, %zmm13, %zmm126953; AVX512DQ-BW-FCP-NEXT: movl $-1840700270, %r10d # imm = 0x924924926954; AVX512DQ-BW-FCP-NEXT: kmovd %r10d, %k16955; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm4, %zmm12 {%k1}6956; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%r8), %xmm116957; AVX512DQ-BW-FCP-NEXT: vpmovzxbw {{.*#+}} xmm3 = xmm11[0],zero,xmm11[1],zero,xmm11[2],zero,xmm11[3],zero,xmm11[4],zero,xmm11[5],zero,xmm11[6],zero,xmm11[7],zero6958; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [0,1,16,3,4,17,6,7,18,9,10,19,12,13,20,15]6959; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm12, %ymm46960; AVX512DQ-BW-FCP-NEXT: vpermt2w %ymm3, %ymm14, %ymm46961; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm19 = [16,37,18,19,38,21,22,39,24,25,32,27,28,33,30,31]6962; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm20 = [8,9,0,0,0,5,6,7]6963; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm20, %xmm11, %xmm36964; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm3, %zmm19, %zmm126965; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm12, %zmm4, %zmm36966; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%r9), %xmm126967; AVX512DQ-BW-FCP-NEXT: vmovdqa64 {{.*#+}} xmm21 = [u,8,u,9,u,10,u,11,u,4,u,5,u,6,u,7]6968; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm21, %xmm12, %xmm46969; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm22 = xmm12[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]6970; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm23 = [2,1,0,3,2,1,0,3,2,1,0,3,4,4,4,4,38,37,32,39,38,37,32,39,38,37,32,39,33,33,33,33]6971; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm4, %zmm23, %zmm226972; AVX512DQ-BW-FCP-NEXT: movabsq $585610922974906400, %r10 # imm = 0x8208208208208206973; AVX512DQ-BW-FCP-NEXT: kmovq %r10, %k26974; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm22, %zmm3 {%k2}6975; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm0, %xmm15, %xmm46976; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm0, %xmm16, %xmm226977; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm22[0],xmm4[0],xmm22[1],xmm4[1],xmm22[2],xmm4[2],xmm22[3],xmm4[3],xmm22[4],xmm4[4],xmm22[5],xmm4[5],xmm22[6],xmm4[6],xmm22[7],xmm4[7]6978; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm22 = xmm16[0],xmm15[0],xmm16[1],xmm15[1],xmm16[2],xmm15[2],xmm16[3],xmm15[3],xmm16[4],xmm15[4],xmm16[5],xmm15[5],xmm16[6],xmm15[6],xmm16[7],xmm15[7]6979; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm4, %zmm5, %zmm226980; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm7, %xmm17, %xmm46981; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm7, %xmm18, %xmm56982; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm4 = xmm5[8],xmm4[8],xmm5[9],xmm4[9],xmm5[10],xmm4[10],xmm5[11],xmm4[11],xmm5[12],xmm4[12],xmm5[13],xmm4[13],xmm5[14],xmm4[14],xmm5[15],xmm4[15]6983; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm18[0],xmm17[0],xmm18[1],xmm17[1],xmm18[2],xmm17[2],xmm18[3],xmm17[3],xmm18[4],xmm17[4],xmm18[5],xmm17[5],xmm18[6],xmm17[6],xmm18[7],xmm17[7]6984; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm4, %zmm13, %zmm56985; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm22, %zmm5 {%k1}6986; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm4 = mem[0,1,2,3,0,1,2,3]6987; AVX512DQ-BW-FCP-NEXT: vpmovzxbw {{.*#+}} xmm7 = xmm4[0],zero,xmm4[1],zero,xmm4[2],zero,xmm4[3],zero,xmm4[4],zero,xmm4[5],zero,xmm4[6],zero,xmm4[7],zero6988; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm7, %ymm5, %ymm146989; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm20, %xmm4, %xmm76990; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm7, %zmm19, %zmm56991; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm14, %zmm56992; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm7 = mem[0,1,2,3,0,1,2,3]6993; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm21, %xmm7, %xmm136994; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm14 = xmm7[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]6995; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm13, %zmm23, %zmm146996; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm14, %zmm5 {%k2}6997; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rcx), %ymm136998; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %ymm146999; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm19 = ymm14[0],ymm13[0],ymm14[1],ymm13[1],ymm14[2],ymm13[2],ymm14[3],ymm13[3],ymm14[4],ymm13[4],ymm14[5],ymm13[5],ymm14[6],ymm13[6],ymm14[7],ymm13[7],ymm14[16],ymm13[16],ymm14[17],ymm13[17],ymm14[18],ymm13[18],ymm14[19],ymm13[19],ymm14[20],ymm13[20],ymm14[21],ymm13[21],ymm14[22],ymm13[22],ymm14[23],ymm13[23]7000; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm20 = xmm16[8],xmm15[8],xmm16[9],xmm15[9],xmm16[10],xmm15[10],xmm16[11],xmm15[11],xmm16[12],xmm15[12],xmm16[13],xmm15[13],xmm16[14],xmm15[14],xmm16[15],xmm15[15]7001; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm21 = [5,4,3,6,5,4,3,6,5,4,3,6,7,7,7,7,41,40,43,42,41,40,43,42,41,40,43,42,45,44,47,46]7002; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm19, %zmm21, %zmm207003; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rsi), %ymm157004; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %ymm167005; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm19 = ymm16[0],ymm15[0],ymm16[1],ymm15[1],ymm16[2],ymm15[2],ymm16[3],ymm15[3],ymm16[4],ymm15[4],ymm16[5],ymm15[5],ymm16[6],ymm15[6],ymm16[7],ymm15[7],ymm16[16],ymm15[16],ymm16[17],ymm15[17],ymm16[18],ymm15[18],ymm16[19],ymm15[19],ymm16[20],ymm15[20],ymm16[21],ymm15[21],ymm16[22],ymm15[22],ymm16[23],ymm15[23]7006; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm17 = xmm18[8],xmm17[8],xmm18[9],xmm17[9],xmm18[10],xmm17[10],xmm18[11],xmm17[11],xmm18[12],xmm17[12],xmm18[13],xmm17[13],xmm18[14],xmm17[14],xmm18[15],xmm17[15]7007; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm18 = [4,3,6,5,4,3,6,5,4,3,6,5,7,7,7,7,40,43,42,41,40,43,42,41,40,43,42,41,44,45,46,45]7008; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm19, %zmm18, %zmm177009; AVX512DQ-BW-FCP-NEXT: movl $613566756, %r10d # imm = 0x249249247010; AVX512DQ-BW-FCP-NEXT: kmovd %r10d, %k27011; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm20, %zmm17 {%k2}7012; AVX512DQ-BW-FCP-NEXT: vextracti64x4 $1, %zmm17, %ymm197013; AVX512DQ-BW-FCP-NEXT: vbroadcasti32x4 {{.*#+}} ymm20 = [2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0]7014; AVX512DQ-BW-FCP-NEXT: # ymm20 = mem[0,1,2,3,0,1,2,3]7015; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm20, %ymm4, %ymm227016; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm22 = ymm22[2,2,2,3]7017; AVX512DQ-BW-FCP-NEXT: movw $18724, %r10w # imm = 0x49247018; AVX512DQ-BW-FCP-NEXT: kmovd %r10d, %k37019; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %ymm22, %ymm19 {%k3}7020; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm22 = xmm4[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]7021; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm23 = [18,1,2,19,4,5,20,7,8,21,10,11,22,13,14,23]7022; AVX512DQ-BW-FCP-NEXT: vpermt2w %ymm22, %ymm23, %ymm177023; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm19, %zmm17, %zmm177024; AVX512DQ-BW-FCP-NEXT: vbroadcasti32x4 {{.*#+}} ymm19 = [0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0,0,2,0,1,0,0,0,3,0,0,0,0,0,4,0,0]7025; AVX512DQ-BW-FCP-NEXT: # ymm19 = mem[0,1,2,3,0,1,2,3]7026; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm19, %ymm7, %ymm227027; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm24 = xmm7[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]7028; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm25 = [2,5,4,3,2,5,4,3,2,5,4,3,6,5,6,7,40,41,42,43,40,41,42,43,40,41,42,43,44,45,46,47]7029; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm22, %zmm25, %zmm247030; AVX512DQ-BW-FCP-NEXT: movabsq $2342443691899625602, %r10 # imm = 0x20820820820820827031; AVX512DQ-BW-FCP-NEXT: kmovq %r10, %k47032; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm24, %zmm17 {%k4}7033; AVX512DQ-BW-FCP-NEXT: vmovdqa64 32(%rcx), %ymm227034; AVX512DQ-BW-FCP-NEXT: vmovdqa64 32(%rdx), %ymm247035; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm26 = ymm24[0],ymm22[0],ymm24[1],ymm22[1],ymm24[2],ymm22[2],ymm24[3],ymm22[3],ymm24[4],ymm22[4],ymm24[5],ymm22[5],ymm24[6],ymm22[6],ymm24[7],ymm22[7],ymm24[16],ymm22[16],ymm24[17],ymm22[17],ymm24[18],ymm22[18],ymm24[19],ymm22[19],ymm24[20],ymm22[20],ymm24[21],ymm22[21],ymm24[22],ymm22[22],ymm24[23],ymm22[23]7036; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm6 = xmm8[8],xmm6[8],xmm8[9],xmm6[9],xmm8[10],xmm6[10],xmm8[11],xmm6[11],xmm8[12],xmm6[12],xmm8[13],xmm6[13],xmm8[14],xmm6[14],xmm8[15],xmm6[15]7037; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm26, %zmm21, %zmm67038; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%rsi), %ymm87039; AVX512DQ-BW-FCP-NEXT: vmovdqa64 32(%rdi), %ymm217040; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm26 = ymm21[0],ymm8[0],ymm21[1],ymm8[1],ymm21[2],ymm8[2],ymm21[3],ymm8[3],ymm21[4],ymm8[4],ymm21[5],ymm8[5],ymm21[6],ymm8[6],ymm21[7],ymm8[7],ymm21[16],ymm8[16],ymm21[17],ymm8[17],ymm21[18],ymm8[18],ymm21[19],ymm8[19],ymm21[20],ymm8[20],ymm21[21],ymm8[21],ymm21[22],ymm8[22],ymm21[23],ymm8[23]7041; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm10[8],xmm9[8],xmm10[9],xmm9[9],xmm10[10],xmm9[10],xmm10[11],xmm9[11],xmm10[12],xmm9[12],xmm10[13],xmm9[13],xmm10[14],xmm9[14],xmm10[15],xmm9[15]7042; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm26, %zmm18, %zmm97043; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm6, %zmm9 {%k2}7044; AVX512DQ-BW-FCP-NEXT: vextracti64x4 $1, %zmm9, %ymm67045; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%r8), %ymm107046; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm20, %ymm10, %ymm107047; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]7048; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %ymm10, %ymm6 {%k3}7049; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm10 = xmm11[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]7050; AVX512DQ-BW-FCP-NEXT: vpermt2w %ymm10, %ymm23, %ymm97051; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm9, %zmm67052; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%r9), %ymm97053; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm19, %ymm9, %ymm97054; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} xmm10 = xmm12[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]7055; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm9, %zmm25, %zmm107056; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm10, %zmm6 {%k4}7057; AVX512DQ-BW-FCP-NEXT: vpbroadcastq {{.*#+}} ymm9 = [8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0,8,7,6,9,0,0,10,0]7058; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm9, %ymm8, %ymm107059; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm9, %ymm21, %ymm117060; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm10 = ymm11[0],ymm10[0],ymm11[1],ymm10[1],ymm11[2],ymm10[2],ymm11[3],ymm10[3],ymm11[4],ymm10[4],ymm11[5],ymm10[5],ymm11[6],ymm10[6],ymm11[7],ymm10[7],ymm11[16],ymm10[16],ymm11[17],ymm10[17],ymm11[18],ymm10[18],ymm11[19],ymm10[19],ymm11[20],ymm10[20],ymm11[21],ymm10[21],ymm11[22],ymm10[22],ymm11[23],ymm10[23]7061; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]7062; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm8 = ymm21[8],ymm8[8],ymm21[9],ymm8[9],ymm21[10],ymm8[10],ymm21[11],ymm8[11],ymm21[12],ymm8[12],ymm21[13],ymm8[13],ymm21[14],ymm8[14],ymm21[15],ymm8[15],ymm21[24],ymm8[24],ymm21[25],ymm8[25],ymm21[26],ymm8[26],ymm21[27],ymm8[27],ymm21[28],ymm8[28],ymm21[29],ymm8[29],ymm21[30],ymm8[30],ymm21[31],ymm8[31]7063; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm11 = [12,11,14,13,12,11,14,13,12,11,14,13,15,15,15,15]7064; AVX512DQ-BW-FCP-NEXT: vpermw %ymm8, %ymm11, %ymm87065; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm10, %zmm87066; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm0, %ymm22, %ymm107067; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm0, %ymm24, %ymm127068; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm10 = ymm12[0],ymm10[0],ymm12[1],ymm10[1],ymm12[2],ymm10[2],ymm12[3],ymm10[3],ymm12[4],ymm10[4],ymm12[5],ymm10[5],ymm12[6],ymm10[6],ymm12[7],ymm10[7],ymm12[16],ymm10[16],ymm12[17],ymm10[17],ymm12[18],ymm10[18],ymm12[19],ymm10[19],ymm12[20],ymm10[20],ymm12[21],ymm10[21],ymm12[22],ymm10[22],ymm12[23],ymm10[23]7069; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,2,3]7070; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm12 = ymm24[8],ymm22[8],ymm24[9],ymm22[9],ymm24[10],ymm22[10],ymm24[11],ymm22[11],ymm24[12],ymm22[12],ymm24[13],ymm22[13],ymm24[14],ymm22[14],ymm24[15],ymm22[15],ymm24[24],ymm22[24],ymm24[25],ymm22[25],ymm24[26],ymm22[26],ymm24[27],ymm22[27],ymm24[28],ymm22[28],ymm24[29],ymm22[29],ymm24[30],ymm22[30],ymm24[31],ymm22[31]7071; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm18 = [13,12,11,14,13,12,11,14,13,12,11,14,15,15,15,15]7072; AVX512DQ-BW-FCP-NEXT: vpermw %ymm12, %ymm18, %ymm127073; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm12, %zmm10, %zmm107074; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm8, %zmm10 {%k2}7075; AVX512DQ-BW-FCP-NEXT: vshufi64x2 {{.*#+}} zmm2 = zmm2[4,5,6,7,4,5,6,7]7076; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [6,5,8,7,0,9,0,0,6,5,8,7,0,9,0,0,10,13,12,11,14,0,0,15,10,13,12,11,14,0,0,15]7077; AVX512DQ-BW-FCP-NEXT: vpshufb %zmm8, %zmm2, %zmm27078; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} zmm2 = zmm2[2,2,2,3,6,6,6,7]7079; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm2, %zmm10 {%k1}7080; AVX512DQ-BW-FCP-NEXT: vshufi64x2 {{.*#+}} zmm1 = zmm1[4,5,6,7,4,5,6,7]7081; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} zmm1 = zmm1[u,6,u,5,u,8,u,7,u,u,u,9,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u,u,42,u,45,u,44,u,43,u,46,u,u,u,u,u,47,u,58,u,61,u,60,u,59,u,62,u,u,u,u,u,63]7082; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} zmm1 = zmm1[2,2,2,3,6,6,6,7]7083; AVX512DQ-BW-FCP-NEXT: movabsq $-9076969306111049208, %rcx # imm = 0x82082082082082087084; AVX512DQ-BW-FCP-NEXT: kmovq %rcx, %k37085; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm1, %zmm10 {%k3}7086; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm9, %ymm15, %ymm17087; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm9, %ymm16, %ymm27088; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm2[0],ymm1[0],ymm2[1],ymm1[1],ymm2[2],ymm1[2],ymm2[3],ymm1[3],ymm2[4],ymm1[4],ymm2[5],ymm1[5],ymm2[6],ymm1[6],ymm2[7],ymm1[7],ymm2[16],ymm1[16],ymm2[17],ymm1[17],ymm2[18],ymm1[18],ymm2[19],ymm1[19],ymm2[20],ymm1[20],ymm2[21],ymm1[21],ymm2[22],ymm1[22],ymm2[23],ymm1[23]7089; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,2,3]7090; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm16[8],ymm15[8],ymm16[9],ymm15[9],ymm16[10],ymm15[10],ymm16[11],ymm15[11],ymm16[12],ymm15[12],ymm16[13],ymm15[13],ymm16[14],ymm15[14],ymm16[15],ymm15[15],ymm16[24],ymm15[24],ymm16[25],ymm15[25],ymm16[26],ymm15[26],ymm16[27],ymm15[27],ymm16[28],ymm15[28],ymm16[29],ymm15[29],ymm16[30],ymm15[30],ymm16[31],ymm15[31]7091; AVX512DQ-BW-FCP-NEXT: vpermw %ymm2, %ymm11, %ymm27092; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm17093; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm0, %ymm13, %ymm27094; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm0, %ymm14, %ymm07095; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[4],ymm2[4],ymm0[5],ymm2[5],ymm0[6],ymm2[6],ymm0[7],ymm2[7],ymm0[16],ymm2[16],ymm0[17],ymm2[17],ymm0[18],ymm2[18],ymm0[19],ymm2[19],ymm0[20],ymm2[20],ymm0[21],ymm2[21],ymm0[22],ymm2[22],ymm0[23],ymm2[23]7096; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]7097; AVX512DQ-BW-FCP-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm14[8],ymm13[8],ymm14[9],ymm13[9],ymm14[10],ymm13[10],ymm14[11],ymm13[11],ymm14[12],ymm13[12],ymm14[13],ymm13[13],ymm14[14],ymm13[14],ymm14[15],ymm13[15],ymm14[24],ymm13[24],ymm14[25],ymm13[25],ymm14[26],ymm13[26],ymm14[27],ymm13[27],ymm14[28],ymm13[28],ymm14[29],ymm13[29],ymm14[30],ymm13[30],ymm14[31],ymm13[31]7098; AVX512DQ-BW-FCP-NEXT: vpermw %ymm2, %ymm18, %ymm27099; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm07100; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm1, %zmm0 {%k2}7101; AVX512DQ-BW-FCP-NEXT: vpshufb %zmm8, %zmm4, %zmm17102; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} zmm1 = zmm1[2,2,2,3,6,6,6,7]7103; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm1, %zmm0 {%k1}7104; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} zmm1 = zmm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,u,21,u,24,u,23,u,u,u,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,58,u,61,u,60,u,59,u,62,u,u,u,u,u,63]7105; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} zmm1 = zmm1[2,2,2,3,6,6,6,7]7106; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm1, %zmm0 {%k3}7107; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, 128(%rax)7108; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm10, 320(%rax)7109; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm6, 256(%rax)7110; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm17, 64(%rax)7111; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, (%rax)7112; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, 192(%rax)7113; AVX512DQ-BW-FCP-NEXT: vzeroupper7114; AVX512DQ-BW-FCP-NEXT: retq7115 %in.vec0 = load <64 x i8>, ptr %in.vecptr0, align 647116 %in.vec1 = load <64 x i8>, ptr %in.vecptr1, align 647117 %in.vec2 = load <64 x i8>, ptr %in.vecptr2, align 647118 %in.vec3 = load <64 x i8>, ptr %in.vecptr3, align 647119 %in.vec4 = load <64 x i8>, ptr %in.vecptr4, align 647120 %in.vec5 = load <64 x i8>, ptr %in.vecptr5, align 647121 %1 = shufflevector <64 x i8> %in.vec0, <64 x i8> %in.vec1, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>7122 %2 = shufflevector <64 x i8> %in.vec2, <64 x i8> %in.vec3, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>7123 %3 = shufflevector <64 x i8> %in.vec4, <64 x i8> %in.vec5, <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>7124 %4 = shufflevector <128 x i8> %1, <128 x i8> %2, <256 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159, i32 160, i32 161, i32 162, i32 163, i32 164, i32 165, i32 166, i32 167, i32 168, i32 169, i32 170, i32 171, i32 172, i32 173, i32 174, i32 175, i32 176, i32 177, i32 178, i32 179, i32 180, i32 181, i32 182, i32 183, i32 184, i32 185, i32 186, i32 187, i32 188, i32 189, i32 190, i32 191, i32 192, i32 193, i32 194, i32 195, i32 196, i32 197, i32 198, i32 199, i32 200, i32 201, i32 202, i32 203, i32 204, i32 205, i32 206, i32 207, i32 208, i32 209, i32 210, i32 211, i32 212, i32 213, i32 214, i32 215, i32 216, i32 217, i32 218, i32 219, i32 220, i32 221, i32 222, i32 223, i32 224, i32 225, i32 226, i32 227, i32 228, i32 229, i32 230, i32 231, i32 232, i32 233, i32 234, i32 235, i32 236, i32 237, i32 238, i32 239, i32 240, i32 241, i32 242, i32 243, i32 244, i32 245, i32 246, i32 247, i32 248, i32 249, i32 250, i32 251, i32 252, i32 253, i32 254, i32 255>7125 %5 = shufflevector <128 x i8> %3, <128 x i8> poison, <256 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 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 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>7126 %6 = shufflevector <256 x i8> %4, <256 x i8> %5, <384 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159, i32 160, i32 161, i32 162, i32 163, i32 164, i32 165, i32 166, i32 167, i32 168, i32 169, i32 170, i32 171, i32 172, i32 173, i32 174, i32 175, i32 176, i32 177, i32 178, i32 179, i32 180, i32 181, i32 182, i32 183, i32 184, i32 185, i32 186, i32 187, i32 188, i32 189, i32 190, i32 191, i32 192, i32 193, i32 194, i32 195, i32 196, i32 197, i32 198, i32 199, i32 200, i32 201, i32 202, i32 203, i32 204, i32 205, i32 206, i32 207, i32 208, i32 209, i32 210, i32 211, i32 212, i32 213, i32 214, i32 215, i32 216, i32 217, i32 218, i32 219, i32 220, i32 221, i32 222, i32 223, i32 224, i32 225, i32 226, i32 227, i32 228, i32 229, i32 230, i32 231, i32 232, i32 233, i32 234, i32 235, i32 236, i32 237, i32 238, i32 239, i32 240, i32 241, i32 242, i32 243, i32 244, i32 245, i32 246, i32 247, i32 248, i32 249, i32 250, i32 251, i32 252, i32 253, i32 254, i32 255, i32 256, i32 257, i32 258, i32 259, i32 260, i32 261, i32 262, i32 263, i32 264, i32 265, i32 266, i32 267, i32 268, i32 269, i32 270, i32 271, i32 272, i32 273, i32 274, i32 275, i32 276, i32 277, i32 278, i32 279, i32 280, i32 281, i32 282, i32 283, i32 284, i32 285, i32 286, i32 287, i32 288, i32 289, i32 290, i32 291, i32 292, i32 293, i32 294, i32 295, i32 296, i32 297, i32 298, i32 299, i32 300, i32 301, i32 302, i32 303, i32 304, i32 305, i32 306, i32 307, i32 308, i32 309, i32 310, i32 311, i32 312, i32 313, i32 314, i32 315, i32 316, i32 317, i32 318, i32 319, i32 320, i32 321, i32 322, i32 323, i32 324, i32 325, i32 326, i32 327, i32 328, i32 329, i32 330, i32 331, i32 332, i32 333, i32 334, i32 335, i32 336, i32 337, i32 338, i32 339, i32 340, i32 341, i32 342, i32 343, i32 344, i32 345, i32 346, i32 347, i32 348, i32 349, i32 350, i32 351, i32 352, i32 353, i32 354, i32 355, i32 356, i32 357, i32 358, i32 359, i32 360, i32 361, i32 362, i32 363, i32 364, i32 365, i32 366, i32 367, i32 368, i32 369, i32 370, i32 371, i32 372, i32 373, i32 374, i32 375, i32 376, i32 377, i32 378, i32 379, i32 380, i32 381, i32 382, i32 383>7127 %interleaved.vec = shufflevector <384 x i8> %6, <384 x i8> poison, <384 x i32> <i32 0, i32 64, i32 128, i32 192, i32 256, i32 320, i32 1, i32 65, i32 129, i32 193, i32 257, i32 321, i32 2, i32 66, i32 130, i32 194, i32 258, i32 322, i32 3, i32 67, i32 131, i32 195, i32 259, i32 323, i32 4, i32 68, i32 132, i32 196, i32 260, i32 324, i32 5, i32 69, i32 133, i32 197, i32 261, i32 325, i32 6, i32 70, i32 134, i32 198, i32 262, i32 326, i32 7, i32 71, i32 135, i32 199, i32 263, i32 327, i32 8, i32 72, i32 136, i32 200, i32 264, i32 328, i32 9, i32 73, i32 137, i32 201, i32 265, i32 329, i32 10, i32 74, i32 138, i32 202, i32 266, i32 330, i32 11, i32 75, i32 139, i32 203, i32 267, i32 331, i32 12, i32 76, i32 140, i32 204, i32 268, i32 332, i32 13, i32 77, i32 141, i32 205, i32 269, i32 333, i32 14, i32 78, i32 142, i32 206, i32 270, i32 334, i32 15, i32 79, i32 143, i32 207, i32 271, i32 335, i32 16, i32 80, i32 144, i32 208, i32 272, i32 336, i32 17, i32 81, i32 145, i32 209, i32 273, i32 337, i32 18, i32 82, i32 146, i32 210, i32 274, i32 338, i32 19, i32 83, i32 147, i32 211, i32 275, i32 339, i32 20, i32 84, i32 148, i32 212, i32 276, i32 340, i32 21, i32 85, i32 149, i32 213, i32 277, i32 341, i32 22, i32 86, i32 150, i32 214, i32 278, i32 342, i32 23, i32 87, i32 151, i32 215, i32 279, i32 343, i32 24, i32 88, i32 152, i32 216, i32 280, i32 344, i32 25, i32 89, i32 153, i32 217, i32 281, i32 345, i32 26, i32 90, i32 154, i32 218, i32 282, i32 346, i32 27, i32 91, i32 155, i32 219, i32 283, i32 347, i32 28, i32 92, i32 156, i32 220, i32 284, i32 348, i32 29, i32 93, i32 157, i32 221, i32 285, i32 349, i32 30, i32 94, i32 158, i32 222, i32 286, i32 350, i32 31, i32 95, i32 159, i32 223, i32 287, i32 351, i32 32, i32 96, i32 160, i32 224, i32 288, i32 352, i32 33, i32 97, i32 161, i32 225, i32 289, i32 353, i32 34, i32 98, i32 162, i32 226, i32 290, i32 354, i32 35, i32 99, i32 163, i32 227, i32 291, i32 355, i32 36, i32 100, i32 164, i32 228, i32 292, i32 356, i32 37, i32 101, i32 165, i32 229, i32 293, i32 357, i32 38, i32 102, i32 166, i32 230, i32 294, i32 358, i32 39, i32 103, i32 167, i32 231, i32 295, i32 359, i32 40, i32 104, i32 168, i32 232, i32 296, i32 360, i32 41, i32 105, i32 169, i32 233, i32 297, i32 361, i32 42, i32 106, i32 170, i32 234, i32 298, i32 362, i32 43, i32 107, i32 171, i32 235, i32 299, i32 363, i32 44, i32 108, i32 172, i32 236, i32 300, i32 364, i32 45, i32 109, i32 173, i32 237, i32 301, i32 365, i32 46, i32 110, i32 174, i32 238, i32 302, i32 366, i32 47, i32 111, i32 175, i32 239, i32 303, i32 367, i32 48, i32 112, i32 176, i32 240, i32 304, i32 368, i32 49, i32 113, i32 177, i32 241, i32 305, i32 369, i32 50, i32 114, i32 178, i32 242, i32 306, i32 370, i32 51, i32 115, i32 179, i32 243, i32 307, i32 371, i32 52, i32 116, i32 180, i32 244, i32 308, i32 372, i32 53, i32 117, i32 181, i32 245, i32 309, i32 373, i32 54, i32 118, i32 182, i32 246, i32 310, i32 374, i32 55, i32 119, i32 183, i32 247, i32 311, i32 375, i32 56, i32 120, i32 184, i32 248, i32 312, i32 376, i32 57, i32 121, i32 185, i32 249, i32 313, i32 377, i32 58, i32 122, i32 186, i32 250, i32 314, i32 378, i32 59, i32 123, i32 187, i32 251, i32 315, i32 379, i32 60, i32 124, i32 188, i32 252, i32 316, i32 380, i32 61, i32 125, i32 189, i32 253, i32 317, i32 381, i32 62, i32 126, i32 190, i32 254, i32 318, i32 382, i32 63, i32 127, i32 191, i32 255, i32 319, i32 383>7128 store <384 x i8> %interleaved.vec, ptr %out.vec, align 647129 ret void7130}7131