5992 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_stride5_vf2(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {19; SSE-LABEL: store_i8_stride5_vf2:20; SSE: # %bb.0:21; SSE-NEXT: movdqa (%rdi), %xmm022; SSE-NEXT: movdqa (%rdx), %xmm123; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]24; SSE-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]25; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]26; SSE-NEXT: pxor %xmm1, %xmm127; 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]28; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm0[0,2,1,3,4,5,6,7]29; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero30; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,4]31; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,3,2,1]32; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,3,2,4,5,6,7]33; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,7,5]34; SSE-NEXT: packuswb %xmm0, %xmm135; SSE-NEXT: movdqa {{.*#+}} xmm0 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,255,255]36; SSE-NEXT: pand %xmm0, %xmm137; SSE-NEXT: pshufd {{.*#+}} xmm2 = mem[0,0,0,0]38; SSE-NEXT: pandn %xmm2, %xmm039; SSE-NEXT: por %xmm1, %xmm040; SSE-NEXT: movq %xmm0, (%r9)41; SSE-NEXT: pextrw $4, %xmm0, %eax42; SSE-NEXT: movw %ax, 8(%r9)43; SSE-NEXT: retq44;45; AVX-LABEL: store_i8_stride5_vf2:46; AVX: # %bb.0:47; AVX-NEXT: vmovdqa (%rdi), %xmm048; AVX-NEXT: vmovdqa (%rdx), %xmm149; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]50; AVX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]51; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]52; 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]53; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]54; AVX-NEXT: vpextrw $4, %xmm0, 8(%r9)55; AVX-NEXT: vmovq %xmm0, (%r9)56; AVX-NEXT: retq57;58; AVX2-LABEL: store_i8_stride5_vf2:59; AVX2: # %bb.0:60; AVX2-NEXT: vmovdqa (%rdi), %xmm061; AVX2-NEXT: vmovdqa (%rdx), %xmm162; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]63; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]64; AVX2-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]65; 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]66; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]67; AVX2-NEXT: vpextrw $4, %xmm0, 8(%r9)68; AVX2-NEXT: vmovq %xmm0, (%r9)69; AVX2-NEXT: retq70;71; AVX2-FP-LABEL: store_i8_stride5_vf2:72; AVX2-FP: # %bb.0:73; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm074; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm175; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]76; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]77; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]78; 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]79; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]80; AVX2-FP-NEXT: vpextrw $4, %xmm0, 8(%r9)81; AVX2-FP-NEXT: vmovq %xmm0, (%r9)82; AVX2-FP-NEXT: retq83;84; AVX2-FCP-LABEL: store_i8_stride5_vf2:85; AVX2-FCP: # %bb.0:86; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm087; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm188; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]89; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]90; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]91; 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]92; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]93; AVX2-FCP-NEXT: vpextrw $4, %xmm0, 8(%r9)94; AVX2-FCP-NEXT: vmovq %xmm0, (%r9)95; AVX2-FCP-NEXT: retq96;97; AVX512-LABEL: store_i8_stride5_vf2:98; AVX512: # %bb.0:99; AVX512-NEXT: vmovdqa (%rdi), %xmm0100; AVX512-NEXT: vmovdqa (%rdx), %xmm1101; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]102; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]103; AVX512-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]104; 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]105; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]106; AVX512-NEXT: vpextrw $4, %xmm0, 8(%r9)107; AVX512-NEXT: vmovq %xmm0, (%r9)108; AVX512-NEXT: retq109;110; AVX512-FCP-LABEL: store_i8_stride5_vf2:111; AVX512-FCP: # %bb.0:112; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm0113; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm1114; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]115; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]116; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]117; 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]118; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]119; AVX512-FCP-NEXT: vpextrw $4, %xmm0, 8(%r9)120; AVX512-FCP-NEXT: vmovq %xmm0, (%r9)121; AVX512-FCP-NEXT: retq122;123; AVX512DQ-LABEL: store_i8_stride5_vf2:124; AVX512DQ: # %bb.0:125; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm0126; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm1127; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]128; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]129; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]130; 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]131; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]132; AVX512DQ-NEXT: vpextrw $4, %xmm0, 8(%r9)133; AVX512DQ-NEXT: vmovq %xmm0, (%r9)134; AVX512DQ-NEXT: retq135;136; AVX512DQ-FCP-LABEL: store_i8_stride5_vf2:137; AVX512DQ-FCP: # %bb.0:138; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm0139; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm1140; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]141; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]142; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]143; 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]144; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]145; AVX512DQ-FCP-NEXT: vpextrw $4, %xmm0, 8(%r9)146; AVX512DQ-FCP-NEXT: vmovq %xmm0, (%r9)147; AVX512DQ-FCP-NEXT: retq148;149; AVX512BW-LABEL: store_i8_stride5_vf2:150; AVX512BW: # %bb.0:151; AVX512BW-NEXT: vmovdqa (%rdi), %xmm0152; AVX512BW-NEXT: vmovdqa (%rdx), %xmm1153; AVX512BW-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]154; AVX512BW-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]155; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]156; 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]157; AVX512BW-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]158; AVX512BW-NEXT: vpextrw $4, %xmm0, 8(%r9)159; AVX512BW-NEXT: vmovq %xmm0, (%r9)160; AVX512BW-NEXT: retq161;162; AVX512BW-FCP-LABEL: store_i8_stride5_vf2:163; AVX512BW-FCP: # %bb.0:164; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm0165; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm1166; AVX512BW-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]167; AVX512BW-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]168; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]169; 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]170; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]171; AVX512BW-FCP-NEXT: vpextrw $4, %xmm0, 8(%r9)172; AVX512BW-FCP-NEXT: vmovq %xmm0, (%r9)173; AVX512BW-FCP-NEXT: retq174;175; AVX512DQ-BW-LABEL: store_i8_stride5_vf2:176; AVX512DQ-BW: # %bb.0:177; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm0178; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm1179; AVX512DQ-BW-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]180; AVX512DQ-BW-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]181; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]182; 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]183; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]184; AVX512DQ-BW-NEXT: vpextrw $4, %xmm0, 8(%r9)185; AVX512DQ-BW-NEXT: vmovq %xmm0, (%r9)186; AVX512DQ-BW-NEXT: retq187;188; AVX512DQ-BW-FCP-LABEL: store_i8_stride5_vf2:189; AVX512DQ-BW-FCP: # %bb.0:190; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm0191; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm1192; AVX512DQ-BW-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]193; AVX512DQ-BW-FCP-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]194; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]195; 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]196; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]197; AVX512DQ-BW-FCP-NEXT: vpextrw $4, %xmm0, 8(%r9)198; AVX512DQ-BW-FCP-NEXT: vmovq %xmm0, (%r9)199; AVX512DQ-BW-FCP-NEXT: retq200 %in.vec0 = load <2 x i8>, ptr %in.vecptr0, align 64201 %in.vec1 = load <2 x i8>, ptr %in.vecptr1, align 64202 %in.vec2 = load <2 x i8>, ptr %in.vecptr2, align 64203 %in.vec3 = load <2 x i8>, ptr %in.vecptr3, align 64204 %in.vec4 = load <2 x i8>, ptr %in.vecptr4, align 64205 %1 = shufflevector <2 x i8> %in.vec0, <2 x i8> %in.vec1, <4 x i32> <i32 0, i32 1, i32 2, i32 3>206 %2 = shufflevector <2 x i8> %in.vec2, <2 x i8> %in.vec3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>207 %3 = 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>208 %4 = shufflevector <2 x i8> %in.vec4, <2 x i8> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>209 %5 = shufflevector <8 x i8> %3, <8 x i8> %4, <10 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>210 %interleaved.vec = shufflevector <10 x i8> %5, <10 x i8> poison, <10 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 1, i32 3, i32 5, i32 7, i32 9>211 store <10 x i8> %interleaved.vec, ptr %out.vec, align 64212 ret void213}214 215define void @store_i8_stride5_vf4(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {216; SSE-LABEL: store_i8_stride5_vf4:217; SSE: # %bb.0:218; SSE-NEXT: movdqa (%rdi), %xmm1219; SSE-NEXT: movdqa (%rdx), %xmm2220; SSE-NEXT: movdqa (%r8), %xmm0221; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]222; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]223; SSE-NEXT: pxor %xmm3, %xmm3224; 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]225; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm1[3,1,2,1]226; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,1,2,0,4,5,6,7]227; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,3,2,3]228; 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]229; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm2[2,1,1,3]230; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,1,1,1,4,5,6,7]231; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7]232; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]233; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]234; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,2,0,0]235; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,1,0,2,4,5,6,7]236; SSE-NEXT: movdqa {{.*#+}} xmm5 = [65535,65535,0,0,65535,65535,65535,0]237; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm1[0,2,2,0]238; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm6[0,2,2,3,4,5,6,7]239; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,7,5,7]240; SSE-NEXT: pand %xmm5, %xmm6241; SSE-NEXT: pandn %xmm4, %xmm5242; SSE-NEXT: por %xmm6, %xmm5243; SSE-NEXT: packuswb %xmm3, %xmm5244; SSE-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]245; SSE-NEXT: pand %xmm3, %xmm5246; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm0[0,0,0,0]247; SSE-NEXT: pandn %xmm4, %xmm3248; SSE-NEXT: por %xmm5, %xmm3249; SSE-NEXT: psrldq {{.*#+}} xmm1 = xmm1[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero250; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[3,1,2,3]251; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,3,1,3,4,5,6,7]252; SSE-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2253; SSE-NEXT: por %xmm1, %xmm2254; SSE-NEXT: packuswb %xmm2, %xmm2255; SSE-NEXT: movdqa {{.*#+}} xmm1 = [255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255]256; SSE-NEXT: pand %xmm1, %xmm2257; SSE-NEXT: pandn %xmm0, %xmm1258; SSE-NEXT: por %xmm2, %xmm1259; SSE-NEXT: movd %xmm1, 16(%r9)260; SSE-NEXT: movdqa %xmm3, (%r9)261; SSE-NEXT: retq262;263; AVX-LABEL: store_i8_stride5_vf4:264; AVX: # %bb.0:265; AVX-NEXT: vmovdqa (%rdi), %xmm0266; AVX-NEXT: vmovdqa (%rdx), %xmm1267; AVX-NEXT: vmovdqa (%r8), %xmm2268; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]269; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]270; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]271; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[0,4,8,12],zero,xmm0[1,5,9,13],zero,xmm0[2,6,10,14],zero,xmm0[3]272; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,xmm2[1],zero,zero,zero,zero,xmm2[2],zero273; AVX-NEXT: vpor %xmm3, %xmm1, %xmm1274; AVX-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4,5,6]275; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]276; AVX-NEXT: vmovd %xmm0, 16(%r9)277; AVX-NEXT: vmovdqa %xmm1, (%r9)278; AVX-NEXT: retq279;280; AVX2-LABEL: store_i8_stride5_vf4:281; AVX2: # %bb.0:282; AVX2-NEXT: vmovdqa (%rdi), %xmm0283; AVX2-NEXT: vmovdqa (%rdx), %xmm1284; AVX2-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]285; AVX2-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]286; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]287; AVX2-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0288; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero289; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]290; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero291; AVX2-NEXT: vpor %ymm0, %ymm1, %ymm0292; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1293; AVX2-NEXT: vmovd %xmm1, 16(%r9)294; AVX2-NEXT: vmovdqa %xmm0, (%r9)295; AVX2-NEXT: vzeroupper296; AVX2-NEXT: retq297;298; AVX2-FP-LABEL: store_i8_stride5_vf4:299; AVX2-FP: # %bb.0:300; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm0301; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm1302; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]303; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]304; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]305; AVX2-FP-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0306; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero307; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]308; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero309; AVX2-FP-NEXT: vpor %ymm0, %ymm1, %ymm0310; AVX2-FP-NEXT: vextracti128 $1, %ymm0, %xmm1311; AVX2-FP-NEXT: vmovd %xmm1, 16(%r9)312; AVX2-FP-NEXT: vmovdqa %xmm0, (%r9)313; AVX2-FP-NEXT: vzeroupper314; AVX2-FP-NEXT: retq315;316; AVX2-FCP-LABEL: store_i8_stride5_vf4:317; AVX2-FCP: # %bb.0:318; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm0319; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm1320; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]321; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]322; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]323; AVX2-FCP-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0324; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero325; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]326; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero327; AVX2-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0328; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1329; AVX2-FCP-NEXT: vmovd %xmm1, 16(%r9)330; AVX2-FCP-NEXT: vmovdqa %xmm0, (%r9)331; AVX2-FCP-NEXT: vzeroupper332; AVX2-FCP-NEXT: retq333;334; AVX512-LABEL: store_i8_stride5_vf4:335; AVX512: # %bb.0:336; AVX512-NEXT: vmovdqa (%rdi), %xmm0337; AVX512-NEXT: vmovdqa (%rdx), %xmm1338; AVX512-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]339; AVX512-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]340; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]341; AVX512-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0342; AVX512-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19,u,u,u,u,u,u,u,u,u,u,u,u]343; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]344; AVX512-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero345; AVX512-NEXT: vpor %ymm0, %ymm1, %ymm0346; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm1347; AVX512-NEXT: vmovd %xmm1, 16(%r9)348; AVX512-NEXT: vmovdqa %xmm0, (%r9)349; AVX512-NEXT: vzeroupper350; AVX512-NEXT: retq351;352; AVX512-FCP-LABEL: store_i8_stride5_vf4:353; AVX512-FCP: # %bb.0:354; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm0355; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm1356; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]357; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]358; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]359; AVX512-FCP-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0360; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19,u,u,u,u,u,u,u,u,u,u,u,u]361; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]362; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero363; AVX512-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0364; AVX512-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1365; AVX512-FCP-NEXT: vmovd %xmm1, 16(%r9)366; AVX512-FCP-NEXT: vmovdqa %xmm0, (%r9)367; AVX512-FCP-NEXT: vzeroupper368; AVX512-FCP-NEXT: retq369;370; AVX512DQ-LABEL: store_i8_stride5_vf4:371; AVX512DQ: # %bb.0:372; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm0373; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm1374; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]375; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]376; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]377; AVX512DQ-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0378; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19,u,u,u,u,u,u,u,u,u,u,u,u]379; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]380; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero381; AVX512DQ-NEXT: vpor %ymm0, %ymm1, %ymm0382; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm1383; AVX512DQ-NEXT: vmovd %xmm1, 16(%r9)384; AVX512DQ-NEXT: vmovdqa %xmm0, (%r9)385; AVX512DQ-NEXT: vzeroupper386; AVX512DQ-NEXT: retq387;388; AVX512DQ-FCP-LABEL: store_i8_stride5_vf4:389; AVX512DQ-FCP: # %bb.0:390; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm0391; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm1392; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]393; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]394; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]395; AVX512DQ-FCP-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0396; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19,u,u,u,u,u,u,u,u,u,u,u,u]397; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]398; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero399; AVX512DQ-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0400; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1401; AVX512DQ-FCP-NEXT: vmovd %xmm1, 16(%r9)402; AVX512DQ-FCP-NEXT: vmovdqa %xmm0, (%r9)403; AVX512DQ-FCP-NEXT: vzeroupper404; AVX512DQ-FCP-NEXT: retq405;406; AVX512BW-LABEL: store_i8_stride5_vf4:407; AVX512BW: # %bb.0:408; AVX512BW-NEXT: vmovdqa (%rdi), %xmm0409; AVX512BW-NEXT: vmovdqa (%rdx), %xmm1410; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]411; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]412; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]413; AVX512BW-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0414; AVX512BW-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero415; AVX512BW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]416; AVX512BW-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero417; AVX512BW-NEXT: vpor %ymm1, %ymm0, %ymm0418; AVX512BW-NEXT: vextracti128 $1, %ymm0, %xmm1419; AVX512BW-NEXT: vmovd %xmm1, 16(%r9)420; AVX512BW-NEXT: vmovdqa %xmm0, (%r9)421; AVX512BW-NEXT: vzeroupper422; AVX512BW-NEXT: retq423;424; AVX512BW-FCP-LABEL: store_i8_stride5_vf4:425; AVX512BW-FCP: # %bb.0:426; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm0427; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm1428; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]429; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]430; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]431; AVX512BW-FCP-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0432; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero433; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]434; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero435; AVX512BW-FCP-NEXT: vpor %ymm1, %ymm0, %ymm0436; AVX512BW-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1437; AVX512BW-FCP-NEXT: vmovd %xmm1, 16(%r9)438; AVX512BW-FCP-NEXT: vmovdqa %xmm0, (%r9)439; AVX512BW-FCP-NEXT: vzeroupper440; AVX512BW-FCP-NEXT: retq441;442; AVX512DQ-BW-LABEL: store_i8_stride5_vf4:443; AVX512DQ-BW: # %bb.0:444; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm0445; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm1446; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]447; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]448; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]449; AVX512DQ-BW-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0450; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero451; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]452; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero453; AVX512DQ-BW-NEXT: vpor %ymm1, %ymm0, %ymm0454; AVX512DQ-BW-NEXT: vextracti128 $1, %ymm0, %xmm1455; AVX512DQ-BW-NEXT: vmovd %xmm1, 16(%r9)456; AVX512DQ-BW-NEXT: vmovdqa %xmm0, (%r9)457; AVX512DQ-BW-NEXT: vzeroupper458; AVX512DQ-BW-NEXT: retq459;460; AVX512DQ-BW-FCP-LABEL: store_i8_stride5_vf4:461; AVX512DQ-BW-FCP: # %bb.0:462; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm0463; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm1464; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]465; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]466; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]467; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%r8), %ymm0, %ymm0468; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero469; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]470; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero471; AVX512DQ-BW-FCP-NEXT: vpor %ymm1, %ymm0, %ymm0472; AVX512DQ-BW-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1473; AVX512DQ-BW-FCP-NEXT: vmovd %xmm1, 16(%r9)474; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm0, (%r9)475; AVX512DQ-BW-FCP-NEXT: vzeroupper476; AVX512DQ-BW-FCP-NEXT: retq477 %in.vec0 = load <4 x i8>, ptr %in.vecptr0, align 64478 %in.vec1 = load <4 x i8>, ptr %in.vecptr1, align 64479 %in.vec2 = load <4 x i8>, ptr %in.vecptr2, align 64480 %in.vec3 = load <4 x i8>, ptr %in.vecptr3, align 64481 %in.vec4 = load <4 x i8>, ptr %in.vecptr4, align 64482 %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>483 %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>484 %3 = 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>485 %4 = shufflevector <4 x i8> %in.vec4, <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>486 %5 = shufflevector <16 x i8> %3, <16 x i8> %4, <20 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19>487 %interleaved.vec = shufflevector <20 x i8> %5, <20 x i8> poison, <20 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 1, i32 5, i32 9, i32 13, i32 17, i32 2, i32 6, i32 10, i32 14, i32 18, i32 3, i32 7, i32 11, i32 15, i32 19>488 store <20 x i8> %interleaved.vec, ptr %out.vec, align 64489 ret void490}491 492define void @store_i8_stride5_vf8(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {493; SSE-LABEL: store_i8_stride5_vf8:494; SSE: # %bb.0:495; SSE-NEXT: movq {{.*#+}} xmm1 = mem[0],zero496; SSE-NEXT: movq {{.*#+}} xmm2 = mem[0],zero497; SSE-NEXT: movq {{.*#+}} xmm4 = mem[0],zero498; SSE-NEXT: movq {{.*#+}} xmm3 = mem[0],zero499; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero500; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,1,1]501; SSE-NEXT: movdqa {{.*#+}} xmm8 = [65535,65535,0,65535,0,65535,65535,0]502; SSE-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]503; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm3[2,1,2,3]504; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm6[0,3,2,0,4,5,6,7]505; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,5,5,5]506; SSE-NEXT: pand %xmm8, %xmm6507; SSE-NEXT: pandn %xmm5, %xmm8508; SSE-NEXT: por %xmm6, %xmm8509; SSE-NEXT: movdqa {{.*#+}} xmm9 = [255,255,0,255,0,255,255,0,255,0,255,255,0,255,0,255]510; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm4[1,2,2,3,4,5,6,7]511; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]512; SSE-NEXT: movdqa {{.*#+}} xmm6 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]513; SSE-NEXT: movdqa %xmm6, %xmm10514; SSE-NEXT: pandn %xmm5, %xmm10515; SSE-NEXT: movdqa %xmm2, %xmm7516; 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]517; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm7[2,1,2,3]518; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[3,1,0,3,4,5,6,7]519; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,6,6]520; SSE-NEXT: pand %xmm6, %xmm5521; SSE-NEXT: por %xmm10, %xmm5522; SSE-NEXT: pand %xmm9, %xmm5523; SSE-NEXT: pandn %xmm8, %xmm9524; SSE-NEXT: por %xmm5, %xmm9525; SSE-NEXT: movdqa {{.*#+}} xmm8 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]526; SSE-NEXT: pand %xmm8, %xmm9527; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm0[0,0,1,1]528; SSE-NEXT: movdqa %xmm8, %xmm5529; SSE-NEXT: pandn %xmm10, %xmm5530; SSE-NEXT: por %xmm9, %xmm5531; SSE-NEXT: pshuflw {{.*#+}} xmm9 = xmm4[1,0,2,3,4,5,6,7]532; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm9[0,0,0,0]533; SSE-NEXT: pand %xmm8, %xmm9534; SSE-NEXT: pshuflw {{.*#+}} xmm10 = xmm3[1,0,2,3,4,5,6,7]535; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm10[0,1,0,1]536; SSE-NEXT: pandn %xmm10, %xmm8537; SSE-NEXT: por %xmm9, %xmm8538; SSE-NEXT: movdqa {{.*#+}} xmm9 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]539; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm1[0,0,0,0]540; SSE-NEXT: pand %xmm6, %xmm10541; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[0,1,2,2,4,5,6,7]542; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[0,0,1,3]543; SSE-NEXT: pandn %xmm7, %xmm6544; SSE-NEXT: por %xmm10, %xmm6545; SSE-NEXT: pand %xmm9, %xmm6546; SSE-NEXT: pandn %xmm8, %xmm9547; SSE-NEXT: por %xmm6, %xmm9548; SSE-NEXT: movdqa {{.*#+}} xmm6 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]549; SSE-NEXT: pand %xmm6, %xmm9550; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm0[0,0,0,0]551; SSE-NEXT: pandn %xmm7, %xmm6552; SSE-NEXT: por %xmm9, %xmm6553; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[3,3,3,3,4,5,6,7]554; SSE-NEXT: movdqa {{.*#+}} xmm7 = [255,0,255,255,255,255,0,255,255,255,255,255,255,255,255,255]555; SSE-NEXT: pand %xmm7, %xmm4556; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[3,3,3,3]557; SSE-NEXT: pandn %xmm3, %xmm7558; SSE-NEXT: por %xmm4, %xmm7559; SSE-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,0,0,255,255,255,255,255,255,255,255,255,255,255]560; SSE-NEXT: pand %xmm3, %xmm7561; 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]562; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm2[0,1,2,3,7,7,7,7]563; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]564; SSE-NEXT: pandn %xmm1, %xmm3565; SSE-NEXT: por %xmm7, %xmm3566; SSE-NEXT: movdqa {{.*#+}} xmm1 = [255,255,0,255,255,255,255,0,255,255,255,255,255,255,255,255]567; SSE-NEXT: pand %xmm1, %xmm3568; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]569; SSE-NEXT: pandn %xmm0, %xmm1570; SSE-NEXT: por %xmm3, %xmm1571; SSE-NEXT: movq %xmm1, 32(%r9)572; SSE-NEXT: movdqa %xmm6, (%r9)573; SSE-NEXT: movdqa %xmm5, 16(%r9)574; SSE-NEXT: retq575;576; AVX-LABEL: store_i8_stride5_vf8:577; AVX: # %bb.0:578; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero579; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero580; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]581; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero582; AVX-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero583; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]584; AVX-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero585; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]586; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]587; AVX-NEXT: vpor %xmm3, %xmm4, %xmm3588; AVX-NEXT: vpunpcklbw {{.*#+}} xmm3 = 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]589; AVX-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[0,2,13,6,8,10,12,15,u,u,u,u,u,u,u,u]590; AVX-NEXT: vpshufb {{.*#+}} xmm4 = zero,zero,xmm1[0,8,u],zero,zero,xmm1[1,9,u],zero,zero,xmm1[2,10,u],zero591; AVX-NEXT: vpshufb {{.*#+}} xmm5 = xmm0[0,8],zero,zero,xmm0[u,1,9],zero,zero,xmm0[u,2,10],zero,zero,xmm0[u,3]592; AVX-NEXT: vpor %xmm4, %xmm5, %xmm4593; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[0,1,2,3],zero,xmm4[5,6,7,8],zero,xmm4[10,11,12,13],zero,xmm4[15]594; AVX-NEXT: vpshufb {{.*#+}} xmm5 = zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,xmm2[1],zero,zero,zero,zero,xmm2[2],zero595; AVX-NEXT: vpor %xmm5, %xmm4, %xmm4596; AVX-NEXT: vpshufb {{.*#+}} xmm1 = zero,xmm1[3,11,u],zero,zero,xmm1[4,12,u],zero,zero,xmm1[5,13,u],zero,zero597; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[11],zero,zero,xmm0[u,4,12],zero,zero,xmm0[u,5,13],zero,zero,xmm0[u,6,14]598; AVX-NEXT: vpor %xmm1, %xmm0, %xmm0599; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,2],zero,xmm0[4,5,6,7],zero,xmm0[9,10,11,12],zero,xmm0[14,15]600; AVX-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm2[3],zero,zero,zero,zero,xmm2[4],zero,zero,zero,zero,xmm2[5],zero,zero601; AVX-NEXT: vpor %xmm1, %xmm0, %xmm0602; AVX-NEXT: vmovdqa %xmm0, 16(%r9)603; AVX-NEXT: vmovdqa %xmm4, (%r9)604; AVX-NEXT: vmovq %xmm3, 32(%r9)605; AVX-NEXT: retq606;607; AVX2-LABEL: store_i8_stride5_vf8:608; AVX2: # %bb.0:609; AVX2-NEXT: movq (%r8), %rax610; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero611; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero612; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]613; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero614; AVX2-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero615; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]616; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2617; AVX2-NEXT: vmovq %rax, %xmm3618; AVX2-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[3],zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero619; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]620; AVX2-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,ymm2[27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero,ymm2[22,30]621; AVX2-NEXT: vpor %ymm2, %ymm4, %ymm2622; AVX2-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]623; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]624; AVX2-NEXT: vmovdqa {{.*#+}} ymm4 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]625; AVX2-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm2626; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]627; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]628; AVX2-NEXT: vpor %xmm0, %xmm1, %xmm0629; AVX2-NEXT: shrq $48, %rax630; AVX2-NEXT: vmovd %eax, %xmm1631; AVX2-NEXT: vpbroadcastw %xmm1, %xmm1632; AVX2-NEXT: vmovq {{.*#+}} xmm3 = [255,255,0,255,255,255,255,0,0,0,0,0,0,0,0,0]633; AVX2-NEXT: vpblendvb %xmm3, %xmm0, %xmm1, %xmm0634; AVX2-NEXT: vmovq %xmm0, 32(%r9)635; AVX2-NEXT: vmovdqa %ymm2, (%r9)636; AVX2-NEXT: vzeroupper637; AVX2-NEXT: retq638;639; AVX2-FP-LABEL: store_i8_stride5_vf8:640; AVX2-FP: # %bb.0:641; AVX2-FP-NEXT: movq (%r8), %rax642; AVX2-FP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero643; AVX2-FP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero644; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]645; AVX2-FP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero646; AVX2-FP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero647; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]648; AVX2-FP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2649; AVX2-FP-NEXT: vmovq %rax, %xmm3650; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[3],zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero651; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]652; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,ymm2[27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero,ymm2[22,30]653; AVX2-FP-NEXT: vpor %ymm2, %ymm4, %ymm2654; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]655; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]656; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm4 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]657; AVX2-FP-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm2658; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]659; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]660; AVX2-FP-NEXT: vpor %xmm0, %xmm1, %xmm0661; AVX2-FP-NEXT: shrq $48, %rax662; AVX2-FP-NEXT: vmovd %eax, %xmm1663; AVX2-FP-NEXT: vpbroadcastw %xmm1, %xmm1664; AVX2-FP-NEXT: vmovq {{.*#+}} xmm3 = [255,255,0,255,255,255,255,0,0,0,0,0,0,0,0,0]665; AVX2-FP-NEXT: vpblendvb %xmm3, %xmm0, %xmm1, %xmm0666; AVX2-FP-NEXT: vmovq %xmm0, 32(%r9)667; AVX2-FP-NEXT: vmovdqa %ymm2, (%r9)668; AVX2-FP-NEXT: vzeroupper669; AVX2-FP-NEXT: retq670;671; AVX2-FCP-LABEL: store_i8_stride5_vf8:672; AVX2-FCP: # %bb.0:673; AVX2-FCP-NEXT: movq (%r8), %rax674; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero675; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero676; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]677; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero678; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero679; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]680; AVX2-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2681; AVX2-FCP-NEXT: vmovq %rax, %xmm3682; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[3],zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero683; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]684; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,ymm2[27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero,ymm2[22,30]685; AVX2-FCP-NEXT: vpor %ymm2, %ymm4, %ymm2686; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]687; AVX2-FCP-NEXT: vpermd %ymm3, %ymm4, %ymm3688; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]689; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm2, %ymm3, %ymm2690; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]691; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]692; AVX2-FCP-NEXT: vpor %xmm0, %xmm1, %xmm0693; AVX2-FCP-NEXT: shrq $48, %rax694; AVX2-FCP-NEXT: vmovd %eax, %xmm1695; AVX2-FCP-NEXT: vpbroadcastw %xmm1, %xmm1696; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm3 = [255,255,0,255,255,255,255,0,0,0,0,0,0,0,0,0]697; AVX2-FCP-NEXT: vpblendvb %xmm3, %xmm0, %xmm1, %xmm0698; AVX2-FCP-NEXT: vmovq %xmm0, 32(%r9)699; AVX2-FCP-NEXT: vmovdqa %ymm2, (%r9)700; AVX2-FCP-NEXT: vzeroupper701; AVX2-FCP-NEXT: retq702;703; AVX512-LABEL: store_i8_stride5_vf8:704; AVX512: # %bb.0:705; AVX512-NEXT: movq (%r8), %rax706; AVX512-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero707; AVX512-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero708; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]709; AVX512-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero710; AVX512-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero711; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]712; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2713; AVX512-NEXT: vmovq %rax, %xmm3714; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,ymm2[u,1,9],zero,zero,ymm2[u,2,10],zero,zero,ymm2[u,3],zero,ymm2[19,27,u],zero,zero,ymm2[20,28,u],zero,zero,ymm2[21,29,u],zero,zero715; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]716; AVX512-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8,u],zero,zero,ymm2[1,9,u],zero,zero,ymm2[2,10,u],zero,ymm2[27],zero,zero,ymm2[u,20,28],zero,zero,ymm2[u,21,29],zero,zero,ymm2[u,22,30]717; AVX512-NEXT: vpor %ymm2, %ymm4, %ymm2718; AVX512-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]719; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]720; AVX512-NEXT: vpternlogq {{.*#+}} ymm3 = ymm3 ^ (mem & (ymm3 ^ ymm2))721; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]722; AVX512-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]723; AVX512-NEXT: vpor %xmm0, %xmm1, %xmm0724; AVX512-NEXT: shrq $48, %rax725; AVX512-NEXT: vmovd %eax, %xmm1726; AVX512-NEXT: vpbroadcastw %xmm1, %xmm1727; AVX512-NEXT: vpternlogq {{.*#+}} xmm1 = xmm1 ^ (mem & (xmm1 ^ xmm0))728; AVX512-NEXT: vmovq %xmm1, 32(%r9)729; AVX512-NEXT: vmovdqa %ymm3, (%r9)730; AVX512-NEXT: vzeroupper731; AVX512-NEXT: retq732;733; AVX512-FCP-LABEL: store_i8_stride5_vf8:734; AVX512-FCP: # %bb.0:735; AVX512-FCP-NEXT: movq (%r8), %rax736; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero737; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero738; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]739; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero740; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero741; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]742; AVX512-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2743; AVX512-FCP-NEXT: vmovq %rax, %xmm3744; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,ymm2[u,1,9],zero,zero,ymm2[u,2,10],zero,zero,ymm2[u,3],zero,ymm2[19,27,u],zero,zero,ymm2[20,28,u],zero,zero,ymm2[21,29,u],zero,zero745; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]746; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8,u],zero,zero,ymm2[1,9,u],zero,zero,ymm2[2,10,u],zero,ymm2[27],zero,zero,ymm2[u,20,28],zero,zero,ymm2[u,21,29],zero,zero,ymm2[u,22,30]747; AVX512-FCP-NEXT: vpor %ymm2, %ymm4, %ymm2748; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]749; AVX512-FCP-NEXT: vpermd %ymm3, %ymm4, %ymm3750; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm3 = ymm3 ^ (mem & (ymm3 ^ ymm2))751; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]752; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]753; AVX512-FCP-NEXT: vpor %xmm0, %xmm1, %xmm0754; AVX512-FCP-NEXT: shrq $48, %rax755; AVX512-FCP-NEXT: vmovd %eax, %xmm1756; AVX512-FCP-NEXT: vpbroadcastw %xmm1, %xmm1757; AVX512-FCP-NEXT: vpternlogq {{.*#+}} xmm1 = xmm1 ^ (mem & (xmm1 ^ xmm0))758; AVX512-FCP-NEXT: vmovq %xmm1, 32(%r9)759; AVX512-FCP-NEXT: vmovdqa %ymm3, (%r9)760; AVX512-FCP-NEXT: vzeroupper761; AVX512-FCP-NEXT: retq762;763; AVX512DQ-LABEL: store_i8_stride5_vf8:764; AVX512DQ: # %bb.0:765; AVX512DQ-NEXT: movq (%r8), %rax766; AVX512DQ-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero767; AVX512DQ-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero768; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]769; AVX512DQ-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero770; AVX512DQ-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero771; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]772; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2773; AVX512DQ-NEXT: vmovq %rax, %xmm3774; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,ymm2[u,1,9],zero,zero,ymm2[u,2,10],zero,zero,ymm2[u,3],zero,ymm2[19,27,u],zero,zero,ymm2[20,28,u],zero,zero,ymm2[21,29,u],zero,zero775; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]776; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8,u],zero,zero,ymm2[1,9,u],zero,zero,ymm2[2,10,u],zero,ymm2[27],zero,zero,ymm2[u,20,28],zero,zero,ymm2[u,21,29],zero,zero,ymm2[u,22,30]777; AVX512DQ-NEXT: vpor %ymm2, %ymm4, %ymm2778; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]779; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]780; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm3 = ymm3 ^ (mem & (ymm3 ^ ymm2))781; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]782; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]783; AVX512DQ-NEXT: vpor %xmm0, %xmm1, %xmm0784; AVX512DQ-NEXT: shrq $48, %rax785; AVX512DQ-NEXT: vmovd %eax, %xmm1786; AVX512DQ-NEXT: vpbroadcastw %xmm1, %xmm1787; AVX512DQ-NEXT: vpternlogq {{.*#+}} xmm1 = xmm1 ^ (mem & (xmm1 ^ xmm0))788; AVX512DQ-NEXT: vmovq %xmm1, 32(%r9)789; AVX512DQ-NEXT: vmovdqa %ymm3, (%r9)790; AVX512DQ-NEXT: vzeroupper791; AVX512DQ-NEXT: retq792;793; AVX512DQ-FCP-LABEL: store_i8_stride5_vf8:794; AVX512DQ-FCP: # %bb.0:795; AVX512DQ-FCP-NEXT: movq (%r8), %rax796; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero797; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero798; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]799; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero800; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero801; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]802; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2803; AVX512DQ-FCP-NEXT: vmovq %rax, %xmm3804; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,ymm2[u,1,9],zero,zero,ymm2[u,2,10],zero,zero,ymm2[u,3],zero,ymm2[19,27,u],zero,zero,ymm2[20,28,u],zero,zero,ymm2[21,29,u],zero,zero805; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]806; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8,u],zero,zero,ymm2[1,9,u],zero,zero,ymm2[2,10,u],zero,ymm2[27],zero,zero,ymm2[u,20,28],zero,zero,ymm2[u,21,29],zero,zero,ymm2[u,22,30]807; AVX512DQ-FCP-NEXT: vpor %ymm2, %ymm4, %ymm2808; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]809; AVX512DQ-FCP-NEXT: vpermd %ymm3, %ymm4, %ymm3810; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm3 = ymm3 ^ (mem & (ymm3 ^ ymm2))811; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]812; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]813; AVX512DQ-FCP-NEXT: vpor %xmm0, %xmm1, %xmm0814; AVX512DQ-FCP-NEXT: shrq $48, %rax815; AVX512DQ-FCP-NEXT: vmovd %eax, %xmm1816; AVX512DQ-FCP-NEXT: vpbroadcastw %xmm1, %xmm1817; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} xmm1 = xmm1 ^ (mem & (xmm1 ^ xmm0))818; AVX512DQ-FCP-NEXT: vmovq %xmm1, 32(%r9)819; AVX512DQ-FCP-NEXT: vmovdqa %ymm3, (%r9)820; AVX512DQ-FCP-NEXT: vzeroupper821; AVX512DQ-FCP-NEXT: retq822;823; AVX512BW-LABEL: store_i8_stride5_vf8:824; AVX512BW: # %bb.0:825; AVX512BW-NEXT: movq (%r8), %rax826; AVX512BW-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero827; AVX512BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero828; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]829; AVX512BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero830; AVX512BW-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero831; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]832; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2833; AVX512BW-NEXT: vmovq %rax, %xmm3834; AVX512BW-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[3],zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero835; AVX512BW-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]836; AVX512BW-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,ymm2[27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero,ymm2[22,30]837; AVX512BW-NEXT: vpor %ymm4, %ymm2, %ymm2838; AVX512BW-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]839; AVX512BW-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]840; AVX512BW-NEXT: movl $554189328, %ecx # imm = 0x21084210841; AVX512BW-NEXT: kmovd %ecx, %k1842; AVX512BW-NEXT: vmovdqu8 %ymm3, %ymm2 {%k1}843; AVX512BW-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]844; AVX512BW-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]845; AVX512BW-NEXT: vpor %xmm0, %xmm1, %xmm0846; AVX512BW-NEXT: shrq $48, %rax847; AVX512BW-NEXT: vpbroadcastw %eax, %xmm1848; AVX512BW-NEXT: movw $132, %ax849; AVX512BW-NEXT: kmovd %eax, %k1850; AVX512BW-NEXT: vmovdqu8 %xmm1, %xmm0 {%k1}851; AVX512BW-NEXT: vmovq %xmm0, 32(%r9)852; AVX512BW-NEXT: vmovdqa %ymm2, (%r9)853; AVX512BW-NEXT: vzeroupper854; AVX512BW-NEXT: retq855;856; AVX512BW-FCP-LABEL: store_i8_stride5_vf8:857; AVX512BW-FCP: # %bb.0:858; AVX512BW-FCP-NEXT: movq (%r8), %rax859; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero860; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero861; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]862; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero863; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero864; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]865; AVX512BW-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2866; AVX512BW-FCP-NEXT: vmovq %rax, %xmm3867; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[3],zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero868; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]869; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,ymm2[27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero,ymm2[22,30]870; AVX512BW-FCP-NEXT: vpor %ymm4, %ymm2, %ymm2871; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]872; AVX512BW-FCP-NEXT: vpermd %ymm3, %ymm4, %ymm3873; AVX512BW-FCP-NEXT: movl $554189328, %ecx # imm = 0x21084210874; AVX512BW-FCP-NEXT: kmovd %ecx, %k1875; AVX512BW-FCP-NEXT: vmovdqu8 %ymm3, %ymm2 {%k1}876; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]877; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]878; AVX512BW-FCP-NEXT: vpor %xmm0, %xmm1, %xmm0879; AVX512BW-FCP-NEXT: shrq $48, %rax880; AVX512BW-FCP-NEXT: vpbroadcastw %eax, %xmm1881; AVX512BW-FCP-NEXT: movw $132, %ax882; AVX512BW-FCP-NEXT: kmovd %eax, %k1883; AVX512BW-FCP-NEXT: vmovdqu8 %xmm1, %xmm0 {%k1}884; AVX512BW-FCP-NEXT: vmovq %xmm0, 32(%r9)885; AVX512BW-FCP-NEXT: vmovdqa %ymm2, (%r9)886; AVX512BW-FCP-NEXT: vzeroupper887; AVX512BW-FCP-NEXT: retq888;889; AVX512DQ-BW-LABEL: store_i8_stride5_vf8:890; AVX512DQ-BW: # %bb.0:891; AVX512DQ-BW-NEXT: movq (%r8), %rax892; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero893; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero894; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]895; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero896; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero897; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]898; AVX512DQ-BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2899; AVX512DQ-BW-NEXT: vmovq %rax, %xmm3900; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[3],zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero901; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]902; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,ymm2[27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero,ymm2[22,30]903; AVX512DQ-BW-NEXT: vpor %ymm4, %ymm2, %ymm2904; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]905; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]906; AVX512DQ-BW-NEXT: movl $554189328, %ecx # imm = 0x21084210907; AVX512DQ-BW-NEXT: kmovd %ecx, %k1908; AVX512DQ-BW-NEXT: vmovdqu8 %ymm3, %ymm2 {%k1}909; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]910; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]911; AVX512DQ-BW-NEXT: vpor %xmm0, %xmm1, %xmm0912; AVX512DQ-BW-NEXT: shrq $48, %rax913; AVX512DQ-BW-NEXT: vpbroadcastw %eax, %xmm1914; AVX512DQ-BW-NEXT: movw $132, %ax915; AVX512DQ-BW-NEXT: kmovd %eax, %k1916; AVX512DQ-BW-NEXT: vmovdqu8 %xmm1, %xmm0 {%k1}917; AVX512DQ-BW-NEXT: vmovq %xmm0, 32(%r9)918; AVX512DQ-BW-NEXT: vmovdqa %ymm2, (%r9)919; AVX512DQ-BW-NEXT: vzeroupper920; AVX512DQ-BW-NEXT: retq921;922; AVX512DQ-BW-FCP-LABEL: store_i8_stride5_vf8:923; AVX512DQ-BW-FCP: # %bb.0:924; AVX512DQ-BW-FCP-NEXT: movq (%r8), %rax925; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero926; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero927; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]928; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero929; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero930; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]931; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm2932; AVX512DQ-BW-FCP-NEXT: vmovq %rax, %xmm3933; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[3],zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero934; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]935; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,ymm2[27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero,ymm2[22,30]936; AVX512DQ-BW-FCP-NEXT: vpor %ymm4, %ymm2, %ymm2937; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]938; AVX512DQ-BW-FCP-NEXT: vpermd %ymm3, %ymm4, %ymm3939; AVX512DQ-BW-FCP-NEXT: movl $554189328, %ecx # imm = 0x21084210940; AVX512DQ-BW-FCP-NEXT: kmovd %ecx, %k1941; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %ymm3, %ymm2 {%k1}942; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]943; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]944; AVX512DQ-BW-FCP-NEXT: vpor %xmm0, %xmm1, %xmm0945; AVX512DQ-BW-FCP-NEXT: shrq $48, %rax946; AVX512DQ-BW-FCP-NEXT: vpbroadcastw %eax, %xmm1947; AVX512DQ-BW-FCP-NEXT: movw $132, %ax948; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k1949; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %xmm1, %xmm0 {%k1}950; AVX512DQ-BW-FCP-NEXT: vmovq %xmm0, 32(%r9)951; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm2, (%r9)952; AVX512DQ-BW-FCP-NEXT: vzeroupper953; AVX512DQ-BW-FCP-NEXT: retq954 %in.vec0 = load <8 x i8>, ptr %in.vecptr0, align 64955 %in.vec1 = load <8 x i8>, ptr %in.vecptr1, align 64956 %in.vec2 = load <8 x i8>, ptr %in.vecptr2, align 64957 %in.vec3 = load <8 x i8>, ptr %in.vecptr3, align 64958 %in.vec4 = load <8 x i8>, ptr %in.vecptr4, align 64959 %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>960 %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>961 %3 = 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>962 %4 = shufflevector <8 x i8> %in.vec4, <8 x i8> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>963 %5 = shufflevector <32 x i8> %3, <32 x i8> %4, <40 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39>964 %interleaved.vec = shufflevector <40 x i8> %5, <40 x i8> poison, <40 x i32> <i32 0, i32 8, i32 16, i32 24, i32 32, i32 1, i32 9, i32 17, i32 25, i32 33, i32 2, i32 10, i32 18, i32 26, i32 34, i32 3, i32 11, i32 19, i32 27, i32 35, i32 4, i32 12, i32 20, i32 28, i32 36, i32 5, i32 13, i32 21, i32 29, i32 37, i32 6, i32 14, i32 22, i32 30, i32 38, i32 7, i32 15, i32 23, i32 31, i32 39>965 store <40 x i8> %interleaved.vec, ptr %out.vec, align 64966 ret void967}968 969define void @store_i8_stride5_vf16(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {970; SSE-LABEL: store_i8_stride5_vf16:971; SSE: # %bb.0:972; SSE-NEXT: movdqa (%rdi), %xmm12973; SSE-NEXT: movdqa (%rsi), %xmm8974; SSE-NEXT: movdqa (%rdx), %xmm9975; SSE-NEXT: movdqa (%rcx), %xmm4976; SSE-NEXT: movdqa (%r8), %xmm0977; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm9[3,3,3,3,4,5,6,7]978; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]979; SSE-NEXT: movdqa {{.*#+}} xmm6 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]980; SSE-NEXT: pand %xmm6, %xmm1981; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm4[2,1,2,3]982; SSE-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]983; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[3,3,0,3]984; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]985; SSE-NEXT: movdqa %xmm6, %xmm5986; SSE-NEXT: pandn %xmm3, %xmm5987; SSE-NEXT: por %xmm1, %xmm5988; SSE-NEXT: movdqa {{.*#+}} xmm2 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]989; SSE-NEXT: pand %xmm2, %xmm5990; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm12[1,1,2,2]991; SSE-NEXT: movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill992; SSE-NEXT: movdqa {{.*#+}} xmm1 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]993; SSE-NEXT: pand %xmm1, %xmm7994; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm8[0,1,2,1]995; SSE-NEXT: pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,7,6,7]996; SSE-NEXT: punpckhbw {{.*#+}} xmm10 = xmm10[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]997; SSE-NEXT: pshuflw {{.*#+}} xmm10 = xmm10[3,1,0,3,4,5,6,7]998; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm10[0,0,1,0]999; SSE-NEXT: movdqa %xmm1, %xmm111000; SSE-NEXT: pandn %xmm10, %xmm111001; SSE-NEXT: por %xmm7, %xmm111002; SSE-NEXT: movdqa %xmm2, %xmm101003; SSE-NEXT: pandn %xmm11, %xmm101004; SSE-NEXT: por %xmm5, %xmm101005; SSE-NEXT: movdqa {{.*#+}} xmm7 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]1006; SSE-NEXT: pand %xmm7, %xmm101007; SSE-NEXT: movdqa %xmm0, %xmm51008; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm0[1,1,2,2]1009; SSE-NEXT: movdqa %xmm7, %xmm01010; SSE-NEXT: pandn %xmm11, %xmm01011; SSE-NEXT: por %xmm10, %xmm01012; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1013; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm12[2,2,3,3]1014; SSE-NEXT: movdqa {{.*#+}} xmm12 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]1015; SSE-NEXT: pand %xmm12, %xmm111016; SSE-NEXT: movdqa %xmm8, %xmm01017; SSE-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]1018; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1019; SSE-NEXT: pshufd {{.*#+}} xmm13 = xmm0[0,1,2,1]1020; SSE-NEXT: pshuflw {{.*#+}} xmm13 = xmm13[2,2,2,2,4,5,6,7]1021; SSE-NEXT: pshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,7,5,4,7]1022; SSE-NEXT: movdqa %xmm12, %xmm141023; SSE-NEXT: pandn %xmm13, %xmm141024; SSE-NEXT: por %xmm11, %xmm141025; SSE-NEXT: movdqa {{.*#+}} xmm13 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]1026; SSE-NEXT: movdqa %xmm13, %xmm111027; SSE-NEXT: pandn %xmm14, %xmm111028; SSE-NEXT: pshufhw {{.*#+}} xmm14 = xmm9[0,1,2,3,5,6,6,7]1029; SSE-NEXT: movdqa %xmm9, %xmm101030; SSE-NEXT: pshufd {{.*#+}} xmm14 = xmm14[2,2,2,2]1031; SSE-NEXT: movdqa %xmm1, %xmm151032; SSE-NEXT: pandn %xmm14, %xmm151033; SSE-NEXT: movdqa %xmm4, %xmm141034; SSE-NEXT: punpckhbw {{.*#+}} xmm14 = xmm14[8],xmm4[8],xmm14[9],xmm4[9],xmm14[10],xmm4[10],xmm14[11],xmm4[11],xmm14[12],xmm4[12],xmm14[13],xmm4[13],xmm14[14],xmm4[14],xmm14[15],xmm4[15]1035; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm14[0,1,2,1]1036; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[1,1,2,3,4,5,6,7]1037; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,4]1038; SSE-NEXT: pand %xmm1, %xmm01039; SSE-NEXT: por %xmm15, %xmm01040; SSE-NEXT: pand %xmm13, %xmm01041; SSE-NEXT: por %xmm11, %xmm01042; SSE-NEXT: pshufd {{.*#+}} xmm15 = xmm5[2,2,2,2]1043; SSE-NEXT: movdqa %xmm6, %xmm111044; SSE-NEXT: pandn %xmm15, %xmm111045; SSE-NEXT: pand %xmm6, %xmm01046; SSE-NEXT: por %xmm0, %xmm111047; SSE-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1048; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm4[2,1,2,3]1049; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,0,4,5,6,7]1050; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]1051; SSE-NEXT: movdqa %xmm7, %xmm151052; SSE-NEXT: pandn %xmm0, %xmm151053; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm9[1,2,2,3,4,5,6,7]1054; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]1055; SSE-NEXT: pand %xmm7, %xmm01056; SSE-NEXT: por %xmm0, %xmm151057; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload1058; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm9[1,1,1,1]1059; SSE-NEXT: movdqa %xmm1, %xmm31060; SSE-NEXT: pandn %xmm0, %xmm31061; SSE-NEXT: punpcklbw {{.*#+}} xmm8 = xmm8[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1062; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm8[2,1,2,3]1063; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]1064; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]1065; SSE-NEXT: pand %xmm1, %xmm01066; SSE-NEXT: por %xmm3, %xmm01067; SSE-NEXT: movdqa {{.*#+}} xmm3 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]1068; SSE-NEXT: pand %xmm3, %xmm01069; SSE-NEXT: pandn %xmm15, %xmm31070; SSE-NEXT: por %xmm0, %xmm31071; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,1,1]1072; SSE-NEXT: movdqa %xmm12, %xmm151073; SSE-NEXT: pandn %xmm0, %xmm151074; SSE-NEXT: pand %xmm12, %xmm31075; SSE-NEXT: por %xmm3, %xmm151076; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm10[1,0,2,3,4,5,6,7]1077; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]1078; SSE-NEXT: pand %xmm12, %xmm01079; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm4[1,0,2,3,4,5,6,7]1080; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,1,0,1]1081; SSE-NEXT: pandn %xmm3, %xmm121082; SSE-NEXT: por %xmm0, %xmm121083; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm9[0,0,0,0]1084; SSE-NEXT: pand %xmm6, %xmm01085; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm8[0,1,2,2,4,5,6,7]1086; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,0,1,3]1087; SSE-NEXT: pandn %xmm3, %xmm61088; SSE-NEXT: por %xmm0, %xmm61089; SSE-NEXT: pand %xmm13, %xmm61090; SSE-NEXT: pandn %xmm12, %xmm131091; SSE-NEXT: por %xmm6, %xmm131092; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,0,0]1093; SSE-NEXT: movdqa %xmm1, %xmm61094; SSE-NEXT: pandn %xmm0, %xmm61095; SSE-NEXT: pand %xmm1, %xmm131096; SSE-NEXT: por %xmm13, %xmm61097; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm10[0,1,2,3,7,6,6,7]1098; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,2,2,2]1099; SSE-NEXT: pand %xmm1, %xmm01100; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm14[0,1,2,3,5,7,6,7]1101; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,3,2]1102; SSE-NEXT: pandn %xmm3, %xmm11103; SSE-NEXT: por %xmm0, %xmm11104; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm9[3,3,3,3]1105; SSE-NEXT: pand %xmm7, %xmm01106; SSE-NEXT: pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload1107; SSE-NEXT: # xmm3 = mem[0,1,2,3,7,5,6,6]1108; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,3,2,2]1109; SSE-NEXT: pandn %xmm3, %xmm71110; SSE-NEXT: por %xmm0, %xmm71111; SSE-NEXT: pand %xmm2, %xmm71112; SSE-NEXT: pandn %xmm1, %xmm21113; SSE-NEXT: por %xmm7, %xmm21114; SSE-NEXT: movdqa {{.*#+}} xmm0 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]1115; SSE-NEXT: pand %xmm0, %xmm21116; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[3,3,3,3]1117; SSE-NEXT: pandn %xmm1, %xmm01118; SSE-NEXT: por %xmm2, %xmm01119; SSE-NEXT: movdqa %xmm0, 64(%r9)1120; SSE-NEXT: movdqa %xmm6, (%r9)1121; SSE-NEXT: movdqa %xmm15, 16(%r9)1122; SSE-NEXT: movdqa %xmm11, 48(%r9)1123; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1124; SSE-NEXT: movaps %xmm0, 32(%r9)1125; SSE-NEXT: retq1126;1127; AVX-LABEL: store_i8_stride5_vf16:1128; AVX: # %bb.0:1129; AVX-NEXT: vmovdqa (%rdi), %xmm21130; AVX-NEXT: vmovdqa (%rsi), %xmm31131; AVX-NEXT: vmovdqa (%rdx), %xmm11132; AVX-NEXT: vmovdqa (%rcx), %xmm41133; AVX-NEXT: vmovdqa (%r8), %xmm01134; AVX-NEXT: vpshufb {{.*#+}} xmm5 = zero,xmm4[6,u,u,u],zero,xmm4[7,u,u,u],zero,xmm4[8,u,u,u],zero1135; AVX-NEXT: vpshufb {{.*#+}} xmm6 = xmm1[6],zero,xmm1[u,u,u,7],zero,xmm1[u,u,u,8],zero,xmm1[u,u,u,9]1136; AVX-NEXT: vpor %xmm5, %xmm6, %xmm51137; AVX-NEXT: vpshufb {{.*#+}} xmm6 = xmm3[u,u,u],zero,xmm3[7,u,u,u],zero,xmm3[8,u,u,u],zero,xmm3[9,u]1138; AVX-NEXT: vpshufb {{.*#+}} xmm7 = xmm2[u,u,u,7],zero,xmm2[u,u,u,8],zero,xmm2[u,u,u,9],zero,xmm2[u]1139; AVX-NEXT: vpor %xmm6, %xmm7, %xmm61140; AVX-NEXT: vmovdqa {{.*#+}} xmm7 = [255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255]1141; AVX-NEXT: vpblendvb %xmm7, %xmm5, %xmm6, %xmm51142; AVX-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[0,1],zero,xmm5[3,4,5,6],zero,xmm5[8,9,10,11],zero,xmm5[13,14,15]1143; AVX-NEXT: vpshufb {{.*#+}} xmm6 = zero,zero,xmm0[6],zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,xmm0[8],zero,zero,zero1144; AVX-NEXT: vpor %xmm6, %xmm5, %xmm51145; AVX-NEXT: vpunpckhbw {{.*#+}} xmm6 = 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]1146; AVX-NEXT: vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm6[10,11],zero,zero,zero,xmm6[12,13],zero,zero,zero,xmm6[14,15],zero1147; AVX-NEXT: vpunpckhbw {{.*#+}} xmm7 = 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]1148; AVX-NEXT: vpshufb {{.*#+}} xmm8 = zero,xmm7[10,11],zero,zero,zero,xmm7[12,13],zero,zero,zero,xmm7[14,15],zero,zero,zero1149; AVX-NEXT: vpor %xmm6, %xmm8, %xmm61150; AVX-NEXT: vpunpcklbw {{.*#+}} xmm8 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3],xmm1[4],xmm4[4],xmm1[5],xmm4[5],xmm1[6],xmm4[6],xmm1[7],xmm4[7]1151; AVX-NEXT: vpshufb {{.*#+}} xmm9 = zero,zero,xmm8[0,1],zero,zero,zero,xmm8[2,3],zero,zero,zero,xmm8[4,5],zero,zero1152; AVX-NEXT: vpunpcklbw {{.*#+}} xmm10 = 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]1153; AVX-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[0,1],zero,zero,zero,xmm10[2,3],zero,zero,zero,xmm10[4,5],zero,zero,zero,xmm10[6]1154; AVX-NEXT: vpor %xmm9, %xmm10, %xmm91155; AVX-NEXT: vpshufb {{.*#+}} xmm10 = zero,zero,zero,zero,xmm0[0],zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,xmm0[2],zero1156; AVX-NEXT: vpor %xmm10, %xmm9, %xmm91157; AVX-NEXT: vpshufb {{.*#+}} xmm8 = zero,xmm8[6,7],zero,zero,zero,xmm8[8,9],zero,zero,zero,xmm8[10,11],zero,zero,zero1158; AVX-NEXT: vpunpcklbw {{.*#+}} xmm2 = 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]1159; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[6],zero,zero,zero,xmm2[9,8],zero,zero,zero,xmm2[11,10],zero,zero,zero,xmm2[13,12]1160; AVX-NEXT: vpor %xmm2, %xmm8, %xmm21161; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm0[3],zero,zero,zero,zero,xmm0[4],zero,zero,zero,zero,xmm0[5],zero,zero1162; AVX-NEXT: vpor %xmm3, %xmm2, %xmm21163; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,zero,xmm7[4,5],zero,zero,zero,xmm7[6,7],zero,zero,zero,xmm7[8,9],zero,zero1164; AVX-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm4[8],xmm1[8],xmm4[9],xmm1[9],xmm4[10],xmm1[10],xmm4[11],xmm1[11],xmm4[12],xmm1[12],xmm4[13],xmm1[13],xmm4[14],xmm1[14],xmm4[15],xmm1[15]1165; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[2],zero,zero,zero,xmm1[5,4],zero,zero,zero,xmm1[7,6],zero,zero,zero,xmm1[9,8]1166; AVX-NEXT: vpor %xmm3, %xmm1, %xmm11167; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,xmm0[9],zero,zero,zero,zero,xmm0[10],zero,zero,zero,zero,xmm0[11],zero,zero,zero,zero1168; AVX-NEXT: vpor %xmm3, %xmm1, %xmm11169; AVX-NEXT: vmovdqa %xmm1, 48(%r9)1170; AVX-NEXT: vmovdqa %xmm2, 16(%r9)1171; AVX-NEXT: vmovdqa %xmm9, (%r9)1172; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]1173; AVX-NEXT: vpor %xmm0, %xmm6, %xmm01174; AVX-NEXT: vmovdqa %xmm0, 64(%r9)1175; AVX-NEXT: vmovdqa %xmm5, 32(%r9)1176; AVX-NEXT: retq1177;1178; AVX2-LABEL: store_i8_stride5_vf16:1179; AVX2: # %bb.0:1180; AVX2-NEXT: vmovdqa (%rdi), %xmm11181; AVX2-NEXT: vmovdqa (%rdx), %xmm21182; AVX2-NEXT: vmovdqa (%r8), %xmm01183; AVX2-NEXT: vinserti128 $1, (%rsi), %ymm1, %ymm11184; AVX2-NEXT: vinserti128 $1, (%rcx), %ymm2, %ymm21185; AVX2-NEXT: vpshufb {{.*#+}} ymm3 = ymm2[6],zero,zero,zero,zero,ymm2[7],zero,zero,zero,zero,ymm2[8],zero,zero,zero,zero,ymm2[9,25],zero,zero,zero,zero,ymm2[26],zero,zero,zero,zero,ymm2[27],zero,zero,zero,zero,ymm2[28]1186; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm2[2,3,0,1]1187; AVX2-NEXT: vpshufb {{.*#+}} ymm4 = zero,ymm4[6],zero,zero,zero,zero,ymm4[7],zero,zero,zero,zero,ymm4[8],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[26],zero,zero,zero,zero,ymm4[27],zero,zero,zero,zero,ymm4[28],zero1188; AVX2-NEXT: vpor %ymm4, %ymm3, %ymm31189; AVX2-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,ymm1[7],zero,zero,zero,zero,ymm1[8],zero,zero,zero,zero,ymm1[9],zero,zero,zero,zero,zero,ymm1[26],zero,zero,zero,zero,ymm1[27],zero,zero,zero,zero,ymm1[28],zero,zero1190; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm1[2,3,0,1]1191; AVX2-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,zero,zero,ymm5[7],zero,zero,zero,zero,ymm5[8],zero,zero,zero,zero,ymm5[9],zero,zero,zero,ymm5[26],zero,zero,zero,zero,ymm5[27],zero,zero,zero,zero,ymm5[28],zero,zero,zero1192; AVX2-NEXT: vpor %ymm4, %ymm5, %ymm41193; AVX2-NEXT: vpor %ymm3, %ymm4, %ymm31194; AVX2-NEXT: vpshufd {{.*#+}} xmm4 = xmm0[1,1,2,2]1195; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]1196; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]1197; AVX2-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm31198; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm2[1,3,2,3]1199; AVX2-NEXT: vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm4[5,13],zero,zero,zero,xmm4[6,14],zero,zero,zero,xmm4[7,15],zero1200; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm1[1,3,2,3]1201; AVX2-NEXT: vpshufb {{.*#+}} xmm5 = zero,xmm5[5,13],zero,zero,zero,xmm5[6,14],zero,zero,zero,xmm5[7,15],zero,zero,zero1202; AVX2-NEXT: vpor %xmm4, %xmm5, %xmm41203; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,0,2]1204; AVX2-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero1205; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,0]1206; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[0,8],zero,zero,zero,ymm1[1,9],zero,zero,zero,ymm1[2,10],zero,zero,zero,ymm1[3,19],zero,zero,zero,ymm1[28,20],zero,zero,zero,ymm1[29,21],zero,zero,zero,ymm1[30,22]1207; AVX2-NEXT: vpor %ymm2, %ymm1, %ymm11208; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,0,1,1]1209; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]1210; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]1211; AVX2-NEXT: vpblendvb %ymm5, %ymm1, %ymm2, %ymm11212; AVX2-NEXT: vmovdqa %ymm1, (%r9)1213; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]1214; AVX2-NEXT: vpor %xmm0, %xmm4, %xmm01215; AVX2-NEXT: vmovdqa %xmm0, 64(%r9)1216; AVX2-NEXT: vmovdqa %ymm3, 32(%r9)1217; AVX2-NEXT: vzeroupper1218; AVX2-NEXT: retq1219;1220; AVX2-FP-LABEL: store_i8_stride5_vf16:1221; AVX2-FP: # %bb.0:1222; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm11223; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm21224; AVX2-FP-NEXT: vmovdqa (%r8), %xmm01225; AVX2-FP-NEXT: vinserti128 $1, (%rsi), %ymm1, %ymm11226; AVX2-FP-NEXT: vinserti128 $1, (%rcx), %ymm2, %ymm21227; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm3 = ymm2[6],zero,zero,zero,zero,ymm2[7],zero,zero,zero,zero,ymm2[8],zero,zero,zero,zero,ymm2[9,25],zero,zero,zero,zero,ymm2[26],zero,zero,zero,zero,ymm2[27],zero,zero,zero,zero,ymm2[28]1228; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm2[2,3,0,1]1229; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm4 = zero,ymm4[6],zero,zero,zero,zero,ymm4[7],zero,zero,zero,zero,ymm4[8],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[26],zero,zero,zero,zero,ymm4[27],zero,zero,zero,zero,ymm4[28],zero1230; AVX2-FP-NEXT: vpor %ymm4, %ymm3, %ymm31231; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,ymm1[7],zero,zero,zero,zero,ymm1[8],zero,zero,zero,zero,ymm1[9],zero,zero,zero,zero,zero,ymm1[26],zero,zero,zero,zero,ymm1[27],zero,zero,zero,zero,ymm1[28],zero,zero1232; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm1[2,3,0,1]1233; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,zero,zero,ymm5[7],zero,zero,zero,zero,ymm5[8],zero,zero,zero,zero,ymm5[9],zero,zero,zero,ymm5[26],zero,zero,zero,zero,ymm5[27],zero,zero,zero,zero,ymm5[28],zero,zero,zero1234; AVX2-FP-NEXT: vpor %ymm4, %ymm5, %ymm41235; AVX2-FP-NEXT: vpor %ymm3, %ymm4, %ymm31236; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm4 = xmm0[1,1,2,2]1237; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]1238; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm5 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]1239; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm31240; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm2[1,3,2,3]1241; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm4[5,13],zero,zero,zero,xmm4[6,14],zero,zero,zero,xmm4[7,15],zero1242; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm1[1,3,2,3]1243; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm5 = zero,xmm5[5,13],zero,zero,zero,xmm5[6,14],zero,zero,zero,xmm5[7,15],zero,zero,zero1244; AVX2-FP-NEXT: vpor %xmm4, %xmm5, %xmm41245; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,0,2]1246; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero1247; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,0]1248; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[0,8],zero,zero,zero,ymm1[1,9],zero,zero,zero,ymm1[2,10],zero,zero,zero,ymm1[3,19],zero,zero,zero,ymm1[28,20],zero,zero,zero,ymm1[29,21],zero,zero,zero,ymm1[30,22]1249; AVX2-FP-NEXT: vpor %ymm2, %ymm1, %ymm11250; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,0,1,1]1251; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,0,1]1252; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm5 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]1253; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm1, %ymm2, %ymm11254; AVX2-FP-NEXT: vmovdqa %ymm1, (%r9)1255; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]1256; AVX2-FP-NEXT: vpor %xmm0, %xmm4, %xmm01257; AVX2-FP-NEXT: vmovdqa %xmm0, 64(%r9)1258; AVX2-FP-NEXT: vmovdqa %ymm3, 32(%r9)1259; AVX2-FP-NEXT: vzeroupper1260; AVX2-FP-NEXT: retq1261;1262; AVX2-FCP-LABEL: store_i8_stride5_vf16:1263; AVX2-FCP: # %bb.0:1264; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm11265; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm21266; AVX2-FCP-NEXT: vmovdqa (%r8), %xmm01267; AVX2-FCP-NEXT: vinserti128 $1, (%rsi), %ymm1, %ymm11268; AVX2-FCP-NEXT: vinserti128 $1, (%rcx), %ymm2, %ymm21269; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm2[1,3,2,3]1270; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm3[5,13],zero,zero,zero,xmm3[6,14],zero,zero,zero,xmm3[7,15],zero1271; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm1[1,3,2,3]1272; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm4 = zero,xmm4[5,13],zero,zero,zero,xmm4[6,14],zero,zero,zero,xmm4[7,15],zero,zero,zero1273; AVX2-FCP-NEXT: vpor %xmm3, %xmm4, %xmm31274; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm2[0,2,0,2]1275; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,ymm4[0,8],zero,zero,zero,ymm4[1,9],zero,zero,zero,ymm4[2,10],zero,zero,zero,ymm4[19,27],zero,zero,zero,ymm4[20,28],zero,zero,zero,ymm4[21,29],zero,zero,zero1276; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm1[0,2,2,0]1277; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[0,8],zero,zero,zero,ymm5[1,9],zero,zero,zero,ymm5[2,10],zero,zero,zero,ymm5[3,19],zero,zero,zero,ymm5[28,20],zero,zero,zero,ymm5[29,21],zero,zero,zero,ymm5[30,22]1278; AVX2-FCP-NEXT: vpor %ymm4, %ymm5, %ymm41279; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [0,0,0,0,0,0,1,1]1280; AVX2-FCP-NEXT: vpermd %ymm0, %ymm5, %ymm51281; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]1282; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm4, %ymm5, %ymm41283; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [1,5,2,6,2,6,3,7]1284; AVX2-FCP-NEXT: vpermd %ymm1, %ymm5, %ymm11285; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,ymm1[3,7],zero,zero,zero,ymm1[8,12],zero,zero,zero,ymm1[9,13],zero,zero,zero,ymm1[18,22],zero,zero,zero,ymm1[19,23],zero,zero,zero,ymm1[24,28],zero,zero1286; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [1,5,2,6,6,2,3,7]1287; AVX2-FCP-NEXT: vpermd %ymm2, %ymm5, %ymm21288; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[2,6],zero,zero,zero,ymm2[3,7],zero,zero,zero,ymm2[8,12],zero,zero,zero,ymm2[9,17],zero,zero,zero,ymm2[22,18],zero,zero,zero,ymm2[23,19],zero,zero,zero,ymm2[24,28]1289; AVX2-FCP-NEXT: vpor %ymm1, %ymm2, %ymm11290; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [1,1,2,2,2,2,2,2]1291; AVX2-FCP-NEXT: vpermd %ymm0, %ymm2, %ymm21292; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm5 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]1293; AVX2-FCP-NEXT: vpblendvb %ymm5, %ymm1, %ymm2, %ymm11294; AVX2-FCP-NEXT: vmovdqa %ymm1, 32(%r9)1295; AVX2-FCP-NEXT: vmovdqa %ymm4, (%r9)1296; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]1297; AVX2-FCP-NEXT: vpor %xmm0, %xmm3, %xmm01298; AVX2-FCP-NEXT: vmovdqa %xmm0, 64(%r9)1299; AVX2-FCP-NEXT: vzeroupper1300; AVX2-FCP-NEXT: retq1301;1302; AVX512-LABEL: store_i8_stride5_vf16:1303; AVX512: # %bb.0:1304; AVX512-NEXT: vmovdqa (%rdi), %xmm11305; AVX512-NEXT: vmovdqa (%rdx), %xmm21306; AVX512-NEXT: vmovdqa (%r8), %xmm01307; AVX512-NEXT: vinserti128 $1, (%rsi), %ymm1, %ymm11308; AVX512-NEXT: vpshufb {{.*#+}} ymm3 = ymm1[u,u,u,7],zero,ymm1[u,u,u,8],zero,ymm1[u,u,u,9],zero,ymm1[u,u,u],zero,ymm1[26,u,u,u],zero,ymm1[27,u,u,u],zero,ymm1[28,u,u]1309; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm1[2,3,0,1]1310; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,u],zero,ymm4[7,u,u,u],zero,ymm4[8,u,u,u],zero,ymm4[9,u,u,u,26],zero,ymm4[u,u,u,27],zero,ymm4[u,u,u,28],zero,ymm4[u,u]1311; AVX512-NEXT: vmovdqa {{.*#+}} ymm5 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]1312; AVX512-NEXT: vpternlogq {{.*#+}} ymm4 = ~ymm5 & (ymm4 | ymm3)1313; AVX512-NEXT: vinserti128 $1, (%rcx), %ymm2, %ymm21314; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm2[0,2,0,2]1315; AVX512-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,ymm3[0,8,u],zero,zero,ymm3[1,9,u],zero,zero,ymm3[2,10,u],zero,zero,ymm3[19,27,u],zero,zero,ymm3[20,28,u],zero,zero,ymm3[21,29,u],zero,zero1316; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm31317; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[6],zero,ymm2[u,u,u,7],zero,ymm2[u,u,u,8],zero,ymm2[u,u,u,9,25,u,u,u],zero,ymm2[26,u,u,u],zero,ymm2[27,u,u,u],zero,ymm2[28]1318; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm2[2,3,0,1]1319; AVX512-NEXT: vpshufb {{.*#+}} ymm6 = zero,ymm6[6,u,u,u],zero,ymm6[7,u,u,u],zero,ymm6[8,u,u,u],zero,zero,ymm6[u,u,u,26],zero,ymm6[u,u,u,27],zero,ymm6[u,u,u,28],zero1320; AVX512-NEXT: vpternlogq {{.*#+}} ymm6 = ymm5 & (ymm6 | ymm4)1321; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm1[0,2,2,0]1322; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,ymm4[u,1,9],zero,zero,ymm4[u,2,10],zero,zero,ymm4[u,3,19],zero,zero,ymm4[u,28,20],zero,zero,ymm4[u,29,21],zero,zero,ymm4[u,30,22]1323; AVX512-NEXT: vinserti64x4 $1, %ymm6, %zmm4, %zmm41324; AVX512-NEXT: vporq %zmm3, %zmm4, %zmm31325; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]1326; AVX512-NEXT: vpermd %zmm0, %zmm4, %zmm41327; AVX512-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm3))1328; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm2[1,3,2,3]1329; AVX512-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[u],zero,zero,xmm2[5,13,u],zero,zero,xmm2[6,14,u],zero,zero,xmm2[7,15,u]1330; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,2,3]1331; AVX512-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,5,13],zero,zero,xmm1[u,6,14],zero,zero,xmm1[u,7,15],zero,zero,xmm1[u]1332; AVX512-NEXT: vpor %xmm2, %xmm1, %xmm11333; AVX512-NEXT: vpshufb {{.*#+}} xmm1 = zero,xmm1[1,2,3,4],zero,xmm1[6,7,8,9],zero,xmm1[11,12,13,14],zero1334; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]1335; AVX512-NEXT: vpor %xmm0, %xmm1, %xmm01336; AVX512-NEXT: vmovdqa %xmm0, 64(%r9)1337; AVX512-NEXT: vmovdqa64 %zmm4, (%r9)1338; AVX512-NEXT: vzeroupper1339; AVX512-NEXT: retq1340;1341; AVX512-FCP-LABEL: store_i8_stride5_vf16:1342; AVX512-FCP: # %bb.0:1343; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm11344; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm21345; AVX512-FCP-NEXT: vmovdqa (%r8), %xmm01346; AVX512-FCP-NEXT: vinserti128 $1, (%rcx), %ymm2, %ymm21347; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm2[0,2,0,2]1348; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,ymm3[0,8,u],zero,zero,ymm3[1,9,u],zero,zero,ymm3[2,10,u],zero,zero,ymm3[19,27,u],zero,zero,ymm3[20,28,u],zero,zero,ymm3[21,29,u],zero,zero1349; AVX512-FCP-NEXT: vinserti128 $1, (%rsi), %ymm1, %ymm11350; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [1,5,2,6,2,6,3,7]1351; AVX512-FCP-NEXT: vpermd %ymm1, %ymm4, %ymm41352; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,ymm4[u,3,7],zero,zero,ymm4[u,8,12],zero,zero,ymm4[u,9,13],zero,zero,ymm4[u,18,22],zero,zero,ymm4[u,19,23],zero,zero,ymm4[u,24,28],zero,zero1353; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm31354; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm1[0,2,2,0]1355; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,ymm4[u,1,9],zero,zero,ymm4[u,2,10],zero,zero,ymm4[u,3,19],zero,zero,ymm4[u,28,20],zero,zero,ymm4[u,29,21],zero,zero,ymm4[u,30,22]1356; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [1,5,2,6,6,2,3,7]1357; AVX512-FCP-NEXT: vpermd %ymm2, %ymm5, %ymm51358; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[2,6,u],zero,zero,ymm5[3,7,u],zero,zero,ymm5[8,12,u],zero,zero,ymm5[9,17,u],zero,zero,ymm5[22,18,u],zero,zero,ymm5[23,19,u],zero,zero,ymm5[24,28]1359; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41360; AVX512-FCP-NEXT: vporq %zmm3, %zmm4, %zmm31361; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]1362; AVX512-FCP-NEXT: vpermd %zmm0, %zmm4, %zmm41363; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm3))1364; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[1,3,2,3]1365; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[u],zero,zero,xmm2[5,13,u],zero,zero,xmm2[6,14,u],zero,zero,xmm2[7,15,u]1366; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,2,3]1367; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,5,13],zero,zero,xmm1[u,6,14],zero,zero,xmm1[u,7,15],zero,zero,xmm1[u]1368; AVX512-FCP-NEXT: vpor %xmm2, %xmm1, %xmm11369; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = zero,xmm1[1,2,3,4],zero,xmm1[6,7,8,9],zero,xmm1[11,12,13,14],zero1370; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]1371; AVX512-FCP-NEXT: vpor %xmm0, %xmm1, %xmm01372; AVX512-FCP-NEXT: vmovdqa %xmm0, 64(%r9)1373; AVX512-FCP-NEXT: vmovdqa64 %zmm4, (%r9)1374; AVX512-FCP-NEXT: vzeroupper1375; AVX512-FCP-NEXT: retq1376;1377; AVX512DQ-LABEL: store_i8_stride5_vf16:1378; AVX512DQ: # %bb.0:1379; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm11380; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm21381; AVX512DQ-NEXT: vmovdqa (%r8), %xmm01382; AVX512DQ-NEXT: vinserti128 $1, (%rsi), %ymm1, %ymm11383; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm3 = ymm1[u,u,u,7],zero,ymm1[u,u,u,8],zero,ymm1[u,u,u,9],zero,ymm1[u,u,u],zero,ymm1[26,u,u,u],zero,ymm1[27,u,u,u],zero,ymm1[28,u,u]1384; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm1[2,3,0,1]1385; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,u],zero,ymm4[7,u,u,u],zero,ymm4[8,u,u,u],zero,ymm4[9,u,u,u,26],zero,ymm4[u,u,u,27],zero,ymm4[u,u,u,28],zero,ymm4[u,u]1386; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm5 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]1387; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm4 = ~ymm5 & (ymm4 | ymm3)1388; AVX512DQ-NEXT: vinserti128 $1, (%rcx), %ymm2, %ymm21389; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm2[0,2,0,2]1390; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,ymm3[0,8,u],zero,zero,ymm3[1,9,u],zero,zero,ymm3[2,10,u],zero,zero,ymm3[19,27,u],zero,zero,ymm3[20,28,u],zero,zero,ymm3[21,29,u],zero,zero1391; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm31392; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = ymm2[6],zero,ymm2[u,u,u,7],zero,ymm2[u,u,u,8],zero,ymm2[u,u,u,9,25,u,u,u],zero,ymm2[26,u,u,u],zero,ymm2[27,u,u,u],zero,ymm2[28]1393; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm2[2,3,0,1]1394; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm6 = zero,ymm6[6,u,u,u],zero,ymm6[7,u,u,u],zero,ymm6[8,u,u,u],zero,zero,ymm6[u,u,u,26],zero,ymm6[u,u,u,27],zero,ymm6[u,u,u,28],zero1395; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm6 = ymm5 & (ymm6 | ymm4)1396; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm1[0,2,2,0]1397; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,ymm4[u,1,9],zero,zero,ymm4[u,2,10],zero,zero,ymm4[u,3,19],zero,zero,ymm4[u,28,20],zero,zero,ymm4[u,29,21],zero,zero,ymm4[u,30,22]1398; AVX512DQ-NEXT: vinserti64x4 $1, %ymm6, %zmm4, %zmm41399; AVX512DQ-NEXT: vporq %zmm3, %zmm4, %zmm31400; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]1401; AVX512DQ-NEXT: vpermd %zmm0, %zmm4, %zmm41402; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm3))1403; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm2[1,3,2,3]1404; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[u],zero,zero,xmm2[5,13,u],zero,zero,xmm2[6,14,u],zero,zero,xmm2[7,15,u]1405; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,2,3]1406; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,5,13],zero,zero,xmm1[u,6,14],zero,zero,xmm1[u,7,15],zero,zero,xmm1[u]1407; AVX512DQ-NEXT: vpor %xmm2, %xmm1, %xmm11408; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm1 = zero,xmm1[1,2,3,4],zero,xmm1[6,7,8,9],zero,xmm1[11,12,13,14],zero1409; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]1410; AVX512DQ-NEXT: vpor %xmm0, %xmm1, %xmm01411; AVX512DQ-NEXT: vmovdqa %xmm0, 64(%r9)1412; AVX512DQ-NEXT: vmovdqa64 %zmm4, (%r9)1413; AVX512DQ-NEXT: vzeroupper1414; AVX512DQ-NEXT: retq1415;1416; AVX512DQ-FCP-LABEL: store_i8_stride5_vf16:1417; AVX512DQ-FCP: # %bb.0:1418; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm11419; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm21420; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %xmm01421; AVX512DQ-FCP-NEXT: vinserti128 $1, (%rcx), %ymm2, %ymm21422; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm2[0,2,0,2]1423; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,ymm3[0,8,u],zero,zero,ymm3[1,9,u],zero,zero,ymm3[2,10,u],zero,zero,ymm3[19,27,u],zero,zero,ymm3[20,28,u],zero,zero,ymm3[21,29,u],zero,zero1424; AVX512DQ-FCP-NEXT: vinserti128 $1, (%rsi), %ymm1, %ymm11425; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [1,5,2,6,2,6,3,7]1426; AVX512DQ-FCP-NEXT: vpermd %ymm1, %ymm4, %ymm41427; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,ymm4[u,3,7],zero,zero,ymm4[u,8,12],zero,zero,ymm4[u,9,13],zero,zero,ymm4[u,18,22],zero,zero,ymm4[u,19,23],zero,zero,ymm4[u,24,28],zero,zero1428; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm31429; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm1[0,2,2,0]1430; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,ymm4[u,1,9],zero,zero,ymm4[u,2,10],zero,zero,ymm4[u,3,19],zero,zero,ymm4[u,28,20],zero,zero,ymm4[u,29,21],zero,zero,ymm4[u,30,22]1431; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [1,5,2,6,6,2,3,7]1432; AVX512DQ-FCP-NEXT: vpermd %ymm2, %ymm5, %ymm51433; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[2,6,u],zero,zero,ymm5[3,7,u],zero,zero,ymm5[8,12,u],zero,zero,ymm5[9,17,u],zero,zero,ymm5[22,18,u],zero,zero,ymm5[23,19,u],zero,zero,ymm5[24,28]1434; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm4, %zmm41435; AVX512DQ-FCP-NEXT: vporq %zmm3, %zmm4, %zmm31436; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]1437; AVX512DQ-FCP-NEXT: vpermd %zmm0, %zmm4, %zmm41438; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (mem & (zmm4 ^ zmm3))1439; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[1,3,2,3]1440; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[u],zero,zero,xmm2[5,13,u],zero,zero,xmm2[6,14,u],zero,zero,xmm2[7,15,u]1441; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,2,3]1442; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,5,13],zero,zero,xmm1[u,6,14],zero,zero,xmm1[u,7,15],zero,zero,xmm1[u]1443; AVX512DQ-FCP-NEXT: vpor %xmm2, %xmm1, %xmm11444; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = zero,xmm1[1,2,3,4],zero,xmm1[6,7,8,9],zero,xmm1[11,12,13,14],zero1445; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]1446; AVX512DQ-FCP-NEXT: vpor %xmm0, %xmm1, %xmm01447; AVX512DQ-FCP-NEXT: vmovdqa %xmm0, 64(%r9)1448; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm4, (%r9)1449; AVX512DQ-FCP-NEXT: vzeroupper1450; AVX512DQ-FCP-NEXT: retq1451;1452; AVX512BW-LABEL: store_i8_stride5_vf16:1453; AVX512BW: # %bb.0:1454; AVX512BW-NEXT: vmovdqa (%rdi), %xmm01455; AVX512BW-NEXT: vmovdqa (%rdx), %xmm11456; AVX512BW-NEXT: vmovdqa (%r8), %xmm21457; AVX512BW-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01458; AVX512BW-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,zero,ymm0[7],zero,zero,zero,zero,ymm0[8],zero,zero,zero,zero,ymm0[9],zero,zero,zero,zero,zero,ymm0[26],zero,zero,zero,zero,ymm0[27],zero,zero,zero,zero,ymm0[28],zero,zero1459; AVX512BW-NEXT: vpermq {{.*#+}} ymm4 = ymm0[2,3,0,1]1460; AVX512BW-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[7],zero,zero,zero,zero,ymm4[8],zero,zero,zero,zero,ymm4[9],zero,zero,zero,ymm4[26],zero,zero,zero,zero,ymm4[27],zero,zero,zero,zero,ymm4[28],zero,zero,zero1461; AVX512BW-NEXT: vpor %ymm4, %ymm3, %ymm31462; AVX512BW-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,2,0]1463; AVX512BW-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,zero,ymm4[1,9],zero,zero,zero,ymm4[2,10],zero,zero,zero,ymm4[3,19],zero,zero,zero,ymm4[28,20],zero,zero,zero,ymm4[29,21],zero,zero,zero,ymm4[30,22]1464; AVX512BW-NEXT: vinserti64x4 $1, %ymm3, %zmm4, %zmm31465; AVX512BW-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11466; AVX512BW-NEXT: vpshufb {{.*#+}} ymm4 = ymm1[6],zero,zero,zero,zero,ymm1[7],zero,zero,zero,zero,ymm1[8],zero,zero,zero,zero,ymm1[9,25],zero,zero,zero,zero,ymm1[26],zero,zero,zero,zero,ymm1[27],zero,zero,zero,zero,ymm1[28]1467; AVX512BW-NEXT: vpermq {{.*#+}} ymm5 = ymm1[2,3,0,1]1468; AVX512BW-NEXT: vpshufb {{.*#+}} ymm5 = zero,ymm5[6],zero,zero,zero,zero,ymm5[7],zero,zero,zero,zero,ymm5[8],zero,zero,zero,zero,zero,zero,zero,zero,ymm5[26],zero,zero,zero,zero,ymm5[27],zero,zero,zero,zero,ymm5[28],zero1469; AVX512BW-NEXT: vpor %ymm4, %ymm5, %ymm41470; AVX512BW-NEXT: vpermq {{.*#+}} ymm5 = ymm1[0,2,0,2]1471; AVX512BW-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,ymm5[0,8],zero,zero,zero,ymm5[1,9],zero,zero,zero,ymm5[2,10],zero,zero,zero,ymm5[19,27],zero,zero,zero,ymm5[20,28],zero,zero,zero,ymm5[21,29],zero,zero,zero1472; AVX512BW-NEXT: vinserti64x4 $1, %ymm4, %zmm5, %zmm41473; AVX512BW-NEXT: vporq %zmm3, %zmm4, %zmm31474; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]1475; AVX512BW-NEXT: vpermd %zmm2, %zmm4, %zmm41476; AVX512BW-NEXT: movabsq $595056260442243600, %rax # imm = 0x8421084210842101477; AVX512BW-NEXT: kmovq %rax, %k11478; AVX512BW-NEXT: vmovdqu8 %zmm4, %zmm3 {%k1}1479; AVX512BW-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,2,3]1480; AVX512BW-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm1[5,13],zero,zero,zero,xmm1[6,14],zero,zero,zero,xmm1[7,15],zero1481; AVX512BW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,2,3]1482; AVX512BW-NEXT: vpshufb {{.*#+}} xmm0 = zero,xmm0[5,13],zero,zero,zero,xmm0[6,14],zero,zero,zero,xmm0[7,15],zero,zero,zero1483; AVX512BW-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[12],zero,zero,zero,zero,xmm2[13],zero,zero,zero,zero,xmm2[14],zero,zero,zero,zero,xmm2[15]1484; AVX512BW-NEXT: vpternlogq {{.*#+}} xmm2 = xmm2 | xmm0 | xmm11485; AVX512BW-NEXT: vmovdqa %xmm2, 64(%r9)1486; AVX512BW-NEXT: vmovdqa64 %zmm3, (%r9)1487; AVX512BW-NEXT: vzeroupper1488; AVX512BW-NEXT: retq1489;1490; AVX512BW-FCP-LABEL: store_i8_stride5_vf16:1491; AVX512BW-FCP: # %bb.0:1492; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm01493; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm11494; AVX512BW-FCP-NEXT: vmovdqa (%r8), %xmm21495; AVX512BW-FCP-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11496; AVX512BW-FCP-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01497; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm3 = [0,0,4,0,4,5,0,1,17,21,18,22,22,18,19,23]1498; AVX512BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm31499; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} zmm3 = zmm3[0,8],zero,zero,zero,zmm3[1,9],zero,zero,zero,zmm3[2,10],zero,zero,zero,zmm3[3,19],zero,zero,zero,zmm3[28,20],zero,zero,zero,zmm3[29,21],zero,zero,zero,zmm3[30,22,34,38],zero,zero,zero,zmm3[35,39],zero,zero,zero,zmm3[40,44],zero,zero,zero,zmm3[41,49],zero,zero,zero,zmm3[54,50],zero,zero,zero,zmm3[55,51],zero,zero,zero,zmm3[56,60]1500; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,4,0,0,1,4,5,17,21,18,22,18,22,19,23]1501; AVX512BW-FCP-NEXT: vpermi2d %zmm0, %zmm1, %zmm41502; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} zmm4 = zero,zero,zmm4[0,8],zero,zero,zero,zmm4[1,9],zero,zero,zero,zmm4[2,10],zero,zero,zero,zmm4[19,27],zero,zero,zero,zmm4[20,28],zero,zero,zero,zmm4[21,29],zero,zero,zero,zero,zero,zero,zmm4[35,39],zero,zero,zero,zmm4[40,44],zero,zero,zero,zmm4[41,45],zero,zero,zero,zmm4[50,54],zero,zero,zero,zmm4[51,55],zero,zero,zero,zmm4[56,60],zero,zero1503; AVX512BW-FCP-NEXT: vporq %zmm3, %zmm4, %zmm31504; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]1505; AVX512BW-FCP-NEXT: vpermd %zmm2, %zmm4, %zmm41506; AVX512BW-FCP-NEXT: movabsq $595056260442243600, %rax # imm = 0x8421084210842101507; AVX512BW-FCP-NEXT: kmovq %rax, %k11508; AVX512BW-FCP-NEXT: vmovdqu8 %zmm4, %zmm3 {%k1}1509; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,2,3]1510; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm1[5,13],zero,zero,zero,xmm1[6,14],zero,zero,zero,xmm1[7,15],zero1511; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,2,3]1512; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = zero,xmm0[5,13],zero,zero,zero,xmm0[6,14],zero,zero,zero,xmm0[7,15],zero,zero,zero1513; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[12],zero,zero,zero,zero,xmm2[13],zero,zero,zero,zero,xmm2[14],zero,zero,zero,zero,xmm2[15]1514; AVX512BW-FCP-NEXT: vpternlogq {{.*#+}} xmm2 = xmm2 | xmm0 | xmm11515; AVX512BW-FCP-NEXT: vmovdqa %xmm2, 64(%r9)1516; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, (%r9)1517; AVX512BW-FCP-NEXT: vzeroupper1518; AVX512BW-FCP-NEXT: retq1519;1520; AVX512DQ-BW-LABEL: store_i8_stride5_vf16:1521; AVX512DQ-BW: # %bb.0:1522; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm01523; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm11524; AVX512DQ-BW-NEXT: vmovdqa (%r8), %xmm21525; AVX512DQ-BW-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01526; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm3 = zero,zero,zero,ymm0[7],zero,zero,zero,zero,ymm0[8],zero,zero,zero,zero,ymm0[9],zero,zero,zero,zero,zero,ymm0[26],zero,zero,zero,zero,ymm0[27],zero,zero,zero,zero,ymm0[28],zero,zero1527; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm4 = ymm0[2,3,0,1]1528; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[7],zero,zero,zero,zero,ymm4[8],zero,zero,zero,zero,ymm4[9],zero,zero,zero,ymm4[26],zero,zero,zero,zero,ymm4[27],zero,zero,zero,zero,ymm4[28],zero,zero,zero1529; AVX512DQ-BW-NEXT: vpor %ymm4, %ymm3, %ymm31530; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm4 = ymm0[0,2,2,0]1531; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[0,8],zero,zero,zero,ymm4[1,9],zero,zero,zero,ymm4[2,10],zero,zero,zero,ymm4[3,19],zero,zero,zero,ymm4[28,20],zero,zero,zero,ymm4[29,21],zero,zero,zero,ymm4[30,22]1532; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm3, %zmm4, %zmm31533; AVX512DQ-BW-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11534; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm4 = ymm1[6],zero,zero,zero,zero,ymm1[7],zero,zero,zero,zero,ymm1[8],zero,zero,zero,zero,ymm1[9,25],zero,zero,zero,zero,ymm1[26],zero,zero,zero,zero,ymm1[27],zero,zero,zero,zero,ymm1[28]1535; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm5 = ymm1[2,3,0,1]1536; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm5 = zero,ymm5[6],zero,zero,zero,zero,ymm5[7],zero,zero,zero,zero,ymm5[8],zero,zero,zero,zero,zero,zero,zero,zero,ymm5[26],zero,zero,zero,zero,ymm5[27],zero,zero,zero,zero,ymm5[28],zero1537; AVX512DQ-BW-NEXT: vpor %ymm4, %ymm5, %ymm41538; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm5 = ymm1[0,2,0,2]1539; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm5 = zero,zero,ymm5[0,8],zero,zero,zero,ymm5[1,9],zero,zero,zero,ymm5[2,10],zero,zero,zero,ymm5[19,27],zero,zero,zero,ymm5[20,28],zero,zero,zero,ymm5[21,29],zero,zero,zero1540; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm4, %zmm5, %zmm41541; AVX512DQ-BW-NEXT: vporq %zmm3, %zmm4, %zmm31542; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]1543; AVX512DQ-BW-NEXT: vpermd %zmm2, %zmm4, %zmm41544; AVX512DQ-BW-NEXT: movabsq $595056260442243600, %rax # imm = 0x8421084210842101545; AVX512DQ-BW-NEXT: kmovq %rax, %k11546; AVX512DQ-BW-NEXT: vmovdqu8 %zmm4, %zmm3 {%k1}1547; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,2,3]1548; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm1[5,13],zero,zero,zero,xmm1[6,14],zero,zero,zero,xmm1[7,15],zero1549; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,2,3]1550; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm0 = zero,xmm0[5,13],zero,zero,zero,xmm0[6,14],zero,zero,zero,xmm0[7,15],zero,zero,zero1551; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[12],zero,zero,zero,zero,xmm2[13],zero,zero,zero,zero,xmm2[14],zero,zero,zero,zero,xmm2[15]1552; AVX512DQ-BW-NEXT: vpternlogq {{.*#+}} xmm2 = xmm2 | xmm0 | xmm11553; AVX512DQ-BW-NEXT: vmovdqa %xmm2, 64(%r9)1554; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, (%r9)1555; AVX512DQ-BW-NEXT: vzeroupper1556; AVX512DQ-BW-NEXT: retq1557;1558; AVX512DQ-BW-FCP-LABEL: store_i8_stride5_vf16:1559; AVX512DQ-BW-FCP: # %bb.0:1560; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm01561; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm11562; AVX512DQ-BW-FCP-NEXT: vmovdqa (%r8), %xmm21563; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%rcx), %ymm1, %ymm11564; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, (%rsi), %ymm0, %ymm01565; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm3 = [0,0,4,0,4,5,0,1,17,21,18,22,22,18,19,23]1566; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm1, %zmm0, %zmm31567; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} zmm3 = zmm3[0,8],zero,zero,zero,zmm3[1,9],zero,zero,zero,zmm3[2,10],zero,zero,zero,zmm3[3,19],zero,zero,zero,zmm3[28,20],zero,zero,zero,zmm3[29,21],zero,zero,zero,zmm3[30,22,34,38],zero,zero,zero,zmm3[35,39],zero,zero,zero,zmm3[40,44],zero,zero,zero,zmm3[41,49],zero,zero,zero,zmm3[54,50],zero,zero,zero,zmm3[55,51],zero,zero,zero,zmm3[56,60]1568; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,4,0,0,1,4,5,17,21,18,22,18,22,19,23]1569; AVX512DQ-BW-FCP-NEXT: vpermi2d %zmm0, %zmm1, %zmm41570; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} zmm4 = zero,zero,zmm4[0,8],zero,zero,zero,zmm4[1,9],zero,zero,zero,zmm4[2,10],zero,zero,zero,zmm4[19,27],zero,zero,zero,zmm4[20,28],zero,zero,zero,zmm4[21,29],zero,zero,zero,zero,zero,zero,zmm4[35,39],zero,zero,zero,zmm4[40,44],zero,zero,zero,zmm4[41,45],zero,zero,zero,zmm4[50,54],zero,zero,zero,zmm4[51,55],zero,zero,zero,zmm4[56,60],zero,zero1571; AVX512DQ-BW-FCP-NEXT: vporq %zmm3, %zmm4, %zmm31572; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm4 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]1573; AVX512DQ-BW-FCP-NEXT: vpermd %zmm2, %zmm4, %zmm41574; AVX512DQ-BW-FCP-NEXT: movabsq $595056260442243600, %rax # imm = 0x8421084210842101575; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k11576; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm4, %zmm3 {%k1}1577; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[1,3,2,3]1578; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm1[5,13],zero,zero,zero,xmm1[6,14],zero,zero,zero,xmm1[7,15],zero1579; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,3,2,3]1580; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = zero,xmm0[5,13],zero,zero,zero,xmm0[6,14],zero,zero,zero,xmm0[7,15],zero,zero,zero1581; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[12],zero,zero,zero,zero,xmm2[13],zero,zero,zero,zero,xmm2[14],zero,zero,zero,zero,xmm2[15]1582; AVX512DQ-BW-FCP-NEXT: vpternlogq {{.*#+}} xmm2 = xmm2 | xmm0 | xmm11583; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm2, 64(%r9)1584; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, (%r9)1585; AVX512DQ-BW-FCP-NEXT: vzeroupper1586; AVX512DQ-BW-FCP-NEXT: retq1587 %in.vec0 = load <16 x i8>, ptr %in.vecptr0, align 641588 %in.vec1 = load <16 x i8>, ptr %in.vecptr1, align 641589 %in.vec2 = load <16 x i8>, ptr %in.vecptr2, align 641590 %in.vec3 = load <16 x i8>, ptr %in.vecptr3, align 641591 %in.vec4 = load <16 x i8>, ptr %in.vecptr4, align 641592 %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>1593 %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>1594 %3 = 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>1595 %4 = shufflevector <16 x i8> %in.vec4, <16 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 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1596 %5 = shufflevector <64 x i8> %3, <64 x i8> %4, <80 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79>1597 %interleaved.vec = shufflevector <80 x i8> %5, <80 x i8> poison, <80 x i32> <i32 0, i32 16, i32 32, i32 48, i32 64, i32 1, i32 17, i32 33, i32 49, i32 65, i32 2, i32 18, i32 34, i32 50, i32 66, i32 3, i32 19, i32 35, i32 51, i32 67, i32 4, i32 20, i32 36, i32 52, i32 68, i32 5, i32 21, i32 37, i32 53, i32 69, i32 6, i32 22, i32 38, i32 54, i32 70, i32 7, i32 23, i32 39, i32 55, i32 71, i32 8, i32 24, i32 40, i32 56, i32 72, i32 9, i32 25, i32 41, i32 57, i32 73, i32 10, i32 26, i32 42, i32 58, i32 74, i32 11, i32 27, i32 43, i32 59, i32 75, i32 12, i32 28, i32 44, i32 60, i32 76, i32 13, i32 29, i32 45, i32 61, i32 77, i32 14, i32 30, i32 46, i32 62, i32 78, i32 15, i32 31, i32 47, i32 63, i32 79>1598 store <80 x i8> %interleaved.vec, ptr %out.vec, align 641599 ret void1600}1601 1602define void @store_i8_stride5_vf32(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {1603; SSE-LABEL: store_i8_stride5_vf32:1604; SSE: # %bb.0:1605; SSE-NEXT: subq $152, %rsp1606; SSE-NEXT: movdqa 16(%rdi), %xmm151607; SSE-NEXT: movdqa (%rsi), %xmm91608; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1609; SSE-NEXT: movdqa 16(%rsi), %xmm71610; SSE-NEXT: movdqa (%rdx), %xmm21611; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1612; SSE-NEXT: movdqa 16(%rdx), %xmm01613; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1614; SSE-NEXT: movdqa (%rcx), %xmm111615; SSE-NEXT: movdqa 16(%rcx), %xmm121616; SSE-NEXT: movdqa 16(%r8), %xmm141617; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]1618; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]1619; SSE-NEXT: movdqa {{.*#+}} xmm13 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]1620; SSE-NEXT: pand %xmm13, %xmm01621; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm12[2,1,2,3]1622; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1623; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,3,0,3]1624; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]1625; SSE-NEXT: movdqa %xmm13, %xmm41626; SSE-NEXT: pandn %xmm1, %xmm41627; SSE-NEXT: por %xmm0, %xmm41628; SSE-NEXT: movdqa {{.*#+}} xmm8 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]1629; SSE-NEXT: pand %xmm8, %xmm41630; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm15[1,1,2,2]1631; SSE-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]1632; SSE-NEXT: pand %xmm3, %xmm01633; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm7[0,1,2,1]1634; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]1635; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]1636; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[3,1,0,3,4,5,6,7]1637; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,0,1,0]1638; SSE-NEXT: movdqa %xmm3, %xmm51639; SSE-NEXT: pandn %xmm1, %xmm51640; SSE-NEXT: por %xmm0, %xmm51641; SSE-NEXT: movdqa %xmm8, %xmm01642; SSE-NEXT: pandn %xmm5, %xmm01643; SSE-NEXT: por %xmm4, %xmm01644; SSE-NEXT: movdqa {{.*#+}} xmm10 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]1645; SSE-NEXT: pand %xmm10, %xmm01646; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm14[1,1,2,2]1647; SSE-NEXT: movdqa %xmm10, %xmm41648; SSE-NEXT: pandn %xmm1, %xmm41649; SSE-NEXT: por %xmm0, %xmm41650; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1651; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm2[3,3,3,3,4,5,6,7]1652; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]1653; SSE-NEXT: pand %xmm13, %xmm01654; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm11[2,1,2,3]1655; SSE-NEXT: movdqa %xmm11, %xmm21656; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1657; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,3,0,3]1658; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]1659; SSE-NEXT: movdqa %xmm13, %xmm41660; SSE-NEXT: pandn %xmm1, %xmm41661; SSE-NEXT: por %xmm0, %xmm41662; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm9[0,1,2,1]1663; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]1664; SSE-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]1665; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]1666; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,0]1667; SSE-NEXT: movdqa %xmm3, %xmm11668; SSE-NEXT: pandn %xmm0, %xmm11669; SSE-NEXT: movdqa (%rdi), %xmm01670; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1671; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]1672; SSE-NEXT: pand %xmm3, %xmm01673; SSE-NEXT: por %xmm0, %xmm11674; SSE-NEXT: movdqa %xmm8, %xmm01675; SSE-NEXT: pandn %xmm1, %xmm01676; SSE-NEXT: pand %xmm8, %xmm41677; SSE-NEXT: por %xmm4, %xmm01678; SSE-NEXT: movdqa (%r8), %xmm11679; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1680; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]1681; SSE-NEXT: movdqa %xmm10, %xmm41682; SSE-NEXT: pandn %xmm1, %xmm41683; SSE-NEXT: pand %xmm10, %xmm01684; SSE-NEXT: por %xmm0, %xmm41685; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1686; SSE-NEXT: movdqa %xmm7, %xmm111687; SSE-NEXT: movdqa %xmm7, %xmm01688; SSE-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm7[8],xmm0[9],xmm7[9],xmm0[10],xmm7[10],xmm0[11],xmm7[11],xmm0[12],xmm7[12],xmm0[13],xmm7[13],xmm0[14],xmm7[14],xmm0[15],xmm7[15]1689; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1690; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]1691; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[2,2,2,2,4,5,6,7]1692; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,4,7]1693; SSE-NEXT: movdqa {{.*#+}} xmm9 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]1694; SSE-NEXT: movdqa %xmm9, %xmm41695; SSE-NEXT: pandn %xmm0, %xmm41696; SSE-NEXT: movdqa %xmm15, %xmm61697; SSE-NEXT: movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1698; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm15[2,2,3,3]1699; SSE-NEXT: pand %xmm9, %xmm01700; SSE-NEXT: por %xmm0, %xmm41701; SSE-NEXT: movdqa {{.*#+}} xmm8 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]1702; SSE-NEXT: movdqa %xmm8, %xmm01703; SSE-NEXT: pandn %xmm4, %xmm01704; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload1705; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm7[0,1,2,3,5,6,6,7]1706; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[2,2,2,2]1707; SSE-NEXT: movdqa %xmm3, %xmm51708; SSE-NEXT: pandn %xmm4, %xmm51709; SSE-NEXT: movdqa %xmm12, %xmm151710; SSE-NEXT: punpckhbw {{.*#+}} xmm15 = xmm15[8],xmm12[8],xmm15[9],xmm12[9],xmm15[10],xmm12[10],xmm15[11],xmm12[11],xmm15[12],xmm12[12],xmm15[13],xmm12[13],xmm15[14],xmm12[14],xmm15[15],xmm12[15]1711; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm15[0,1,2,1]1712; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[1,1,2,3,4,5,6,7]1713; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,7,6,4]1714; SSE-NEXT: pand %xmm3, %xmm41715; SSE-NEXT: por %xmm5, %xmm41716; SSE-NEXT: pand %xmm8, %xmm41717; SSE-NEXT: por %xmm0, %xmm41718; SSE-NEXT: movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1719; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm14[2,2,2,2]1720; SSE-NEXT: movdqa %xmm13, %xmm11721; SSE-NEXT: pandn %xmm0, %xmm11722; SSE-NEXT: pand %xmm13, %xmm41723; SSE-NEXT: por %xmm4, %xmm11724; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1725; SSE-NEXT: punpcklbw {{.*#+}} xmm12 = xmm12[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1726; SSE-NEXT: movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1727; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm12[2,1,2,3]1728; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,0,4,5,6,7]1729; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]1730; SSE-NEXT: movdqa %xmm10, %xmm41731; SSE-NEXT: pandn %xmm0, %xmm41732; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm7[1,2,2,3,4,5,6,7]1733; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]1734; SSE-NEXT: pand %xmm10, %xmm01735; SSE-NEXT: por %xmm0, %xmm41736; SSE-NEXT: movdqa {{.*#+}} xmm1 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]1737; SSE-NEXT: movdqa %xmm1, %xmm51738; SSE-NEXT: pandn %xmm4, %xmm51739; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm6[1,1,1,1]1740; SSE-NEXT: movdqa %xmm3, %xmm71741; SSE-NEXT: pandn %xmm4, %xmm71742; SSE-NEXT: movdqa %xmm11, %xmm01743; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm11[0],xmm0[1],xmm11[1],xmm0[2],xmm11[2],xmm0[3],xmm11[3],xmm0[4],xmm11[4],xmm0[5],xmm11[5],xmm0[6],xmm11[6],xmm0[7],xmm11[7]1744; SSE-NEXT: movdqa %xmm0, (%rsp) # 16-byte Spill1745; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm0[2,1,2,3]1746; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[3,1,0,3,4,5,6,7]1747; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,6]1748; SSE-NEXT: pand %xmm3, %xmm41749; SSE-NEXT: por %xmm7, %xmm41750; SSE-NEXT: pand %xmm1, %xmm41751; SSE-NEXT: por %xmm5, %xmm41752; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm14[0,0,1,1]1753; SSE-NEXT: movdqa %xmm9, %xmm01754; SSE-NEXT: pandn %xmm5, %xmm01755; SSE-NEXT: pand %xmm9, %xmm41756; SSE-NEXT: por %xmm4, %xmm01757; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1758; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload1759; SSE-NEXT: movdqa %xmm11, %xmm01760; SSE-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm11[8],xmm0[9],xmm11[9],xmm0[10],xmm11[10],xmm0[11],xmm11[11],xmm0[12],xmm11[12],xmm0[13],xmm11[13],xmm0[14],xmm11[14],xmm0[15],xmm11[15]1761; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1762; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm0[0,1,2,1]1763; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]1764; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,7,5,4,7]1765; SSE-NEXT: movdqa %xmm9, %xmm51766; SSE-NEXT: pandn %xmm4, %xmm51767; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload1768; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm6[2,2,3,3]1769; SSE-NEXT: pand %xmm9, %xmm41770; SSE-NEXT: por %xmm4, %xmm51771; SSE-NEXT: movdqa %xmm8, %xmm41772; SSE-NEXT: pandn %xmm5, %xmm41773; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1774; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm0[0,1,2,3,5,6,6,7]1775; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[2,2,2,2]1776; SSE-NEXT: movdqa %xmm3, %xmm71777; SSE-NEXT: pandn %xmm5, %xmm71778; SSE-NEXT: movdqa %xmm2, %xmm121779; SSE-NEXT: punpckhbw {{.*#+}} xmm12 = xmm12[8],xmm2[8],xmm12[9],xmm2[9],xmm12[10],xmm2[10],xmm12[11],xmm2[11],xmm12[12],xmm2[12],xmm12[13],xmm2[13],xmm12[14],xmm2[14],xmm12[15],xmm2[15]1780; SSE-NEXT: pshufd {{.*#+}} xmm14 = xmm12[0,1,2,1]1781; SSE-NEXT: pshuflw {{.*#+}} xmm14 = xmm14[1,1,2,3,4,5,6,7]1782; SSE-NEXT: pshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,7,6,4]1783; SSE-NEXT: pand %xmm3, %xmm141784; SSE-NEXT: por %xmm7, %xmm141785; SSE-NEXT: pand %xmm8, %xmm141786; SSE-NEXT: por %xmm4, %xmm141787; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload1788; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm5[2,2,2,2]1789; SSE-NEXT: movdqa %xmm13, %xmm71790; SSE-NEXT: pandn %xmm4, %xmm71791; SSE-NEXT: pand %xmm13, %xmm141792; SSE-NEXT: por %xmm14, %xmm71793; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1794; SSE-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1795; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1796; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm2[2,1,2,3]1797; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,0,4,5,6,7]1798; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,5,5,5]1799; SSE-NEXT: movdqa %xmm10, %xmm141800; SSE-NEXT: pandn %xmm4, %xmm141801; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm0[1,2,2,3,4,5,6,7]1802; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,0,0,0]1803; SSE-NEXT: pand %xmm10, %xmm41804; SSE-NEXT: por %xmm4, %xmm141805; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm6[1,1,1,1]1806; SSE-NEXT: movdqa %xmm3, %xmm21807; SSE-NEXT: pandn %xmm4, %xmm21808; SSE-NEXT: punpcklbw {{.*#+}} xmm11 = xmm11[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1809; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1810; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm11[2,1,2,3]1811; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[3,1,0,3,4,5,6,7]1812; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,6]1813; SSE-NEXT: pand %xmm3, %xmm41814; SSE-NEXT: por %xmm2, %xmm41815; SSE-NEXT: pand %xmm1, %xmm41816; SSE-NEXT: pandn %xmm14, %xmm11817; SSE-NEXT: por %xmm4, %xmm11818; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm5[0,0,1,1]1819; SSE-NEXT: movdqa %xmm9, %xmm71820; SSE-NEXT: pandn %xmm2, %xmm71821; SSE-NEXT: pand %xmm9, %xmm11822; SSE-NEXT: por %xmm1, %xmm71823; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm15[0,1,2,3,5,7,6,7]1824; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,3,2]1825; SSE-NEXT: movdqa %xmm3, %xmm21826; SSE-NEXT: pandn %xmm0, %xmm21827; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload1828; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm5[0,1,2,3,7,6,6,7]1829; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,2,2,2]1830; SSE-NEXT: pand %xmm3, %xmm01831; SSE-NEXT: por %xmm0, %xmm21832; SSE-NEXT: movdqa {{.*#+}} xmm6 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]1833; SSE-NEXT: movdqa %xmm6, %xmm01834; SSE-NEXT: pandn %xmm2, %xmm01835; SSE-NEXT: pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload1836; SSE-NEXT: # xmm2 = mem[0,1,2,3,7,5,6,6]1837; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,3,2,2]1838; SSE-NEXT: movdqa %xmm10, %xmm141839; SSE-NEXT: pandn %xmm2, %xmm141840; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload1841; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[3,3,3,3]1842; SSE-NEXT: pand %xmm10, %xmm21843; SSE-NEXT: por %xmm2, %xmm141844; SSE-NEXT: pand %xmm6, %xmm141845; SSE-NEXT: por %xmm0, %xmm141846; SSE-NEXT: movdqa {{.*#+}} xmm11 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]1847; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload1848; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]1849; SSE-NEXT: movdqa %xmm11, %xmm151850; SSE-NEXT: pandn %xmm0, %xmm151851; SSE-NEXT: pand %xmm11, %xmm141852; SSE-NEXT: por %xmm14, %xmm151853; SSE-NEXT: pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload1854; SSE-NEXT: # xmm0 = mem[1,0,2,3,4,5,6,7]1855; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]1856; SSE-NEXT: movdqa %xmm9, %xmm21857; SSE-NEXT: pandn %xmm0, %xmm21858; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm5[1,0,2,3,4,5,6,7]1859; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]1860; SSE-NEXT: pand %xmm9, %xmm01861; SSE-NEXT: por %xmm0, %xmm21862; SSE-NEXT: movdqa %xmm8, %xmm01863; SSE-NEXT: pandn %xmm2, %xmm01864; SSE-NEXT: pshuflw $164, (%rsp), %xmm2 # 16-byte Folded Reload1865; SSE-NEXT: # xmm2 = mem[0,1,2,2,4,5,6,7]1866; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,1,3]1867; SSE-NEXT: movdqa %xmm13, %xmm141868; SSE-NEXT: pandn %xmm2, %xmm141869; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[0,0,0,0]1870; SSE-NEXT: pand %xmm13, %xmm21871; SSE-NEXT: por %xmm2, %xmm141872; SSE-NEXT: pand %xmm8, %xmm141873; SSE-NEXT: por %xmm0, %xmm141874; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm1[0,0,0,0]1875; SSE-NEXT: movdqa %xmm3, %xmm01876; SSE-NEXT: pandn %xmm2, %xmm01877; SSE-NEXT: pand %xmm3, %xmm141878; SSE-NEXT: por %xmm14, %xmm01879; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm12[0,1,2,3,5,7,6,7]1880; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,3,2]1881; SSE-NEXT: movdqa %xmm3, %xmm51882; SSE-NEXT: pandn %xmm2, %xmm51883; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload1884; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm4[0,1,2,3,7,6,6,7]1885; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,2,2,2]1886; SSE-NEXT: pand %xmm3, %xmm21887; SSE-NEXT: por %xmm2, %xmm51888; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload1889; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm14[3,3,3,3]1890; SSE-NEXT: pand %xmm10, %xmm21891; SSE-NEXT: pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload1892; SSE-NEXT: # xmm12 = mem[0,1,2,3,7,5,6,6]1893; SSE-NEXT: pshufd {{.*#+}} xmm12 = xmm12[2,3,2,2]1894; SSE-NEXT: pandn %xmm12, %xmm101895; SSE-NEXT: por %xmm2, %xmm101896; SSE-NEXT: movdqa %xmm6, %xmm11897; SSE-NEXT: pand %xmm6, %xmm101898; SSE-NEXT: pandn %xmm5, %xmm11899; SSE-NEXT: por %xmm10, %xmm11900; SSE-NEXT: pand %xmm11, %xmm11901; SSE-NEXT: movdqa %xmm1, %xmm51902; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload1903; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm1[3,3,3,3]1904; SSE-NEXT: pandn %xmm2, %xmm111905; SSE-NEXT: por %xmm5, %xmm111906; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm4[1,0,2,3,4,5,6,7]1907; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]1908; SSE-NEXT: pand %xmm9, %xmm21909; SSE-NEXT: pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload1910; SSE-NEXT: # xmm5 = mem[1,0,2,3,4,5,6,7]1911; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]1912; SSE-NEXT: pandn %xmm5, %xmm91913; SSE-NEXT: por %xmm2, %xmm91914; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm14[0,0,0,0]1915; SSE-NEXT: pand %xmm13, %xmm21916; SSE-NEXT: pshuflw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload1917; SSE-NEXT: # xmm5 = mem[0,1,2,2,4,5,6,7]1918; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,0,1,3]1919; SSE-NEXT: pandn %xmm5, %xmm131920; SSE-NEXT: por %xmm2, %xmm131921; SSE-NEXT: pand %xmm8, %xmm131922; SSE-NEXT: pandn %xmm9, %xmm81923; SSE-NEXT: por %xmm13, %xmm81924; SSE-NEXT: pand %xmm3, %xmm81925; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm1[0,0,0,0]1926; SSE-NEXT: pandn %xmm2, %xmm31927; SSE-NEXT: por %xmm8, %xmm31928; SSE-NEXT: movdqa %xmm3, (%r9)1929; SSE-NEXT: movdqa %xmm11, 64(%r9)1930; SSE-NEXT: movdqa %xmm0, 80(%r9)1931; SSE-NEXT: movdqa %xmm15, 144(%r9)1932; SSE-NEXT: movdqa %xmm7, 16(%r9)1933; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1934; SSE-NEXT: movaps %xmm0, 48(%r9)1935; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1936; SSE-NEXT: movaps %xmm0, 96(%r9)1937; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1938; SSE-NEXT: movaps %xmm0, 128(%r9)1939; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1940; SSE-NEXT: movaps %xmm0, 32(%r9)1941; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1942; SSE-NEXT: movaps %xmm0, 112(%r9)1943; SSE-NEXT: addq $152, %rsp1944; SSE-NEXT: retq1945;1946; AVX-LABEL: store_i8_stride5_vf32:1947; AVX: # %bb.0:1948; AVX-NEXT: vmovdqa 16(%rsi), %xmm101949; AVX-NEXT: vmovdqa 16(%rdi), %xmm111950; AVX-NEXT: vpunpckhbw {{.*#+}} xmm0 = 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]1951; AVX-NEXT: vmovddup {{.*#+}} xmm5 = [0,10,11,14,15,0,12,13,0,10,11,14,15,0,12,13]1952; AVX-NEXT: # xmm5 = mem[0,0]1953; AVX-NEXT: vpshufb %xmm5, %xmm0, %xmm11954; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[u,u,4,5,u,u,u,6,7,u,u,u,8,9,u,u]1955; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm01956; AVX-NEXT: vmovaps {{.*#+}} ymm7 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]1957; AVX-NEXT: vandnps %ymm0, %ymm7, %ymm21958; AVX-NEXT: vmovdqa 16(%rcx), %xmm01959; AVX-NEXT: vmovdqa 16(%rdx), %xmm11960; AVX-NEXT: vpunpckhbw {{.*#+}} xmm3 = 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]1961; AVX-NEXT: vmovddup {{.*#+}} xmm4 = [12,13,0,10,11,14,15,0,12,13,0,10,11,14,15,0]1962; AVX-NEXT: # xmm4 = mem[0,0]1963; AVX-NEXT: vpshufb %xmm4, %xmm3, %xmm31964; AVX-NEXT: vpunpckhbw {{.*#+}} xmm6 = 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]1965; AVX-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[2,u,u,u,5,4,u,u,u,7,6,u,u,u,9,8]1966; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm6, %ymm31967; AVX-NEXT: vandps %ymm7, %ymm3, %ymm31968; AVX-NEXT: vorps %ymm2, %ymm3, %ymm21969; AVX-NEXT: vextractf128 $1, %ymm2, %xmm31970; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,xmm3[1,2,3,4],zero,xmm3[6,7,8,9],zero,xmm3[11,12,13,14],zero1971; AVX-NEXT: vmovdqa 16(%r8), %xmm151972; AVX-NEXT: vmovdqa {{.*#+}} xmm12 = [12,128,128,128,128,13,128,128,128,128,14,128,128,128,128,15]1973; AVX-NEXT: vpshufb %xmm12, %xmm15, %xmm61974; AVX-NEXT: vpor %xmm6, %xmm3, %xmm31975; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1976; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[0],zero,xmm2[2,3,4,5],zero,xmm2[7,8,9,10],zero,xmm2[12,13,14,15]1977; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,xmm15[9],zero,zero,zero,zero,xmm15[10],zero,zero,zero,zero,xmm15[11],zero,zero,zero,zero1978; AVX-NEXT: vpor %xmm3, %xmm2, %xmm21979; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1980; AVX-NEXT: vmovdqa (%rcx), %xmm71981; AVX-NEXT: vmovdqa (%rdx), %xmm81982; AVX-NEXT: vpunpckhbw {{.*#+}} xmm2 = 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]1983; AVX-NEXT: vpshufb %xmm4, %xmm2, %xmm21984; AVX-NEXT: vpunpcklbw {{.*#+}} xmm6 = 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]1985; AVX-NEXT: vpshufb {{.*#+}} xmm3 = xmm6[u,u,0,1,u,u,u,2,3,u,u,u,4,5,u,u]1986; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm141987; AVX-NEXT: vpunpcklbw {{.*#+}} xmm2 = 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]1988; AVX-NEXT: vpshufb {{.*#+}} xmm13 = xmm2[0,1,u,u,u,2,3,u,u,u,4,5,u,u,u,6]1989; AVX-NEXT: vmovdqa (%rsi), %xmm21990; AVX-NEXT: vmovdqa (%rdi), %xmm31991; 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]1992; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1993; AVX-NEXT: vpshufb %xmm5, %xmm4, %xmm51994; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm5, %ymm51995; AVX-NEXT: vmovaps {{.*#+}} ymm13 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]1996; AVX-NEXT: vandnps %ymm14, %ymm13, %ymm141997; AVX-NEXT: vandps %ymm5, %ymm13, %ymm51998; AVX-NEXT: vorps %ymm5, %ymm14, %ymm51999; AVX-NEXT: vextractf128 $1, %ymm5, %xmm142000; AVX-NEXT: vpshufb {{.*#+}} xmm14 = xmm14[0,1,2,3],zero,xmm14[5,6,7,8],zero,xmm14[10,11,12,13],zero,xmm14[15]2001; AVX-NEXT: vpshufb {{.*#+}} xmm9 = zero,zero,zero,zero,xmm15[0],zero,zero,zero,zero,xmm15[1],zero,zero,zero,zero,xmm15[2],zero2002; AVX-NEXT: vpor %xmm9, %xmm14, %xmm42003; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2004; AVX-NEXT: vpshufb {{.*#+}} xmm5 = zero,xmm5[1,2,3,4],zero,xmm5[6,7,8,9],zero,xmm5[11,12,13,14],zero2005; AVX-NEXT: vmovdqa (%r8), %xmm142006; AVX-NEXT: vpshufb %xmm12, %xmm14, %xmm92007; AVX-NEXT: vpor %xmm5, %xmm9, %xmm42008; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2009; AVX-NEXT: vpshufb {{.*#+}} xmm0 = zero,xmm0[6,u,u,u],zero,xmm0[7,u,u,u],zero,xmm0[8,u,u,u],zero2010; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6],zero,xmm1[u,u,u,7],zero,xmm1[u,u,u,8],zero,xmm1[u,u,u,9]2011; AVX-NEXT: vpor %xmm0, %xmm1, %xmm12012; AVX-NEXT: vmovddup {{.*#+}} xmm9 = [0,6,7,10,11,0,8,9,0,6,7,10,11,0,8,9]2013; AVX-NEXT: # xmm9 = mem[0,0]2014; AVX-NEXT: vpshufb %xmm9, %xmm6, %xmm52015; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm5, %ymm12016; AVX-NEXT: vpshufb {{.*#+}} xmm5 = xmm10[u,u,u],zero,xmm10[7,u,u,u],zero,xmm10[8,u,u,u],zero,xmm10[9,u]2017; AVX-NEXT: vmovddup {{.*#+}} xmm6 = [8,128,0,7,128,9,128,0,8,128,0,7,128,9,128,0]2018; AVX-NEXT: # xmm6 = mem[0,0]2019; AVX-NEXT: vpshufb %xmm6, %xmm11, %xmm122020; AVX-NEXT: vpor %xmm5, %xmm12, %xmm52021; AVX-NEXT: vpunpcklbw {{.*#+}} xmm10 = xmm10[0],xmm11[0],xmm10[1],xmm11[1],xmm10[2],xmm11[2],xmm10[3],xmm11[3],xmm10[4],xmm11[4],xmm10[5],xmm11[5],xmm10[6],xmm11[6],xmm10[7],xmm11[7]2022; AVX-NEXT: vmovddup {{.*#+}} xmm12 = [6,11,10,0,9,8,13,12,6,11,10,0,9,8,13,12]2023; AVX-NEXT: # xmm12 = mem[0,0]2024; AVX-NEXT: vpshufb %xmm12, %xmm10, %xmm102025; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm10, %ymm52026; AVX-NEXT: vmovaps {{.*#+}} ymm10 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0]2027; AVX-NEXT: vandnps %ymm1, %ymm10, %ymm12028; AVX-NEXT: vandps %ymm5, %ymm10, %ymm52029; AVX-NEXT: vorps %ymm1, %ymm5, %ymm52030; AVX-NEXT: vmovdqa {{.*#+}} xmm10 = [0,1,2,128,4,5,6,7,128,9,10,11,12,128,14,15]2031; AVX-NEXT: vpshufb %xmm10, %xmm5, %xmm12032; AVX-NEXT: vmovdqa {{.*#+}} xmm4 = [128,128,128,3,128,128,128,128,4,128,128,128,128,5,128,128]2033; AVX-NEXT: vpshufb %xmm4, %xmm15, %xmm112034; AVX-NEXT: vpor %xmm1, %xmm11, %xmm12035; AVX-NEXT: vextractf128 $1, %ymm5, %xmm52036; AVX-NEXT: vmovdqa {{.*#+}} xmm11 = [0,1,128,3,4,5,6,128,8,9,10,11,128,13,14,15]2037; AVX-NEXT: vpshufb %xmm11, %xmm5, %xmm02038; AVX-NEXT: vmovdqa {{.*#+}} xmm5 = [128,128,6,128,128,128,128,7,128,128,128,128,8,128,128,128]2039; AVX-NEXT: vpshufb %xmm5, %xmm15, %xmm152040; AVX-NEXT: vpor %xmm0, %xmm15, %xmm152041; AVX-NEXT: vpunpcklbw {{.*#+}} xmm0 = 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]2042; AVX-NEXT: vpshufb %xmm9, %xmm0, %xmm92043; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[u,u,0,1,u,u,u,2,3,u,u,u,4,5,u,u]2044; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm0, %ymm02045; AVX-NEXT: vpunpcklbw {{.*#+}} xmm9 = 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]2046; AVX-NEXT: vpshufb %xmm12, %xmm9, %xmm92047; AVX-NEXT: vpunpcklbw {{.*#+}} xmm12 = 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]2048; AVX-NEXT: vpshufb {{.*#+}} xmm12 = xmm12[0,1,u,u,u,2,3,u,u,u,4,5,u,u,u,6]2049; AVX-NEXT: vinsertf128 $1, %xmm9, %ymm12, %ymm92050; AVX-NEXT: vmovaps {{.*#+}} ymm12 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]2051; AVX-NEXT: vandnps %ymm0, %ymm12, %ymm02052; AVX-NEXT: vandps %ymm12, %ymm9, %ymm92053; AVX-NEXT: vorps %ymm0, %ymm9, %ymm92054; AVX-NEXT: vextractf128 $1, %ymm9, %xmm02055; AVX-NEXT: vpshufb %xmm10, %xmm0, %xmm02056; AVX-NEXT: vpshufb %xmm4, %xmm14, %xmm42057; AVX-NEXT: vpor %xmm4, %xmm0, %xmm02058; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm9[0,1,2,3],zero,xmm9[5,6,7,8],zero,xmm9[10,11,12,13],zero,xmm9[15]2059; AVX-NEXT: vpshufb {{.*#+}} xmm9 = zero,zero,zero,zero,xmm14[0],zero,zero,zero,zero,xmm14[1],zero,zero,zero,zero,xmm14[2],zero2060; AVX-NEXT: vpor %xmm4, %xmm9, %xmm42061; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[u,u,u],zero,xmm2[7,u,u,u],zero,xmm2[8,u,u,u],zero,xmm2[9,u]2062; AVX-NEXT: vpshufb %xmm6, %xmm3, %xmm32063; AVX-NEXT: vpor %xmm2, %xmm3, %xmm22064; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload2065; AVX-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[u,u,4,5,u,u,u,6,7,u,u,u,8,9,u,u]2066; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm22067; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,xmm7[6,u,u,u],zero,xmm7[7,u,u,u],zero,xmm7[8,u,u,u],zero2068; AVX-NEXT: vpshufb {{.*#+}} xmm6 = xmm8[6],zero,xmm8[u,u,u,7],zero,xmm8[u,u,u,8],zero,xmm8[u,u,u,9]2069; AVX-NEXT: vpor %xmm3, %xmm6, %xmm32070; AVX-NEXT: vpunpckhbw {{.*#+}} xmm6 = 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]2071; AVX-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[2,u,u,u,5,4,u,u,u,7,6,u,u,u,9,8]2072; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm3, %ymm32073; AVX-NEXT: vandnps %ymm2, %ymm13, %ymm22074; AVX-NEXT: vandps %ymm3, %ymm13, %ymm32075; AVX-NEXT: vorps %ymm2, %ymm3, %ymm22076; AVX-NEXT: vpshufb %xmm11, %xmm2, %xmm32077; AVX-NEXT: vpshufb %xmm5, %xmm14, %xmm52078; AVX-NEXT: vpor %xmm5, %xmm3, %xmm32079; AVX-NEXT: vextractf128 $1, %ymm2, %xmm22080; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[0],zero,xmm2[2,3,4,5],zero,xmm2[7,8,9,10],zero,xmm2[12,13,14,15]2081; AVX-NEXT: vpshufb {{.*#+}} xmm5 = zero,xmm14[9],zero,zero,zero,zero,xmm14[10],zero,zero,zero,zero,xmm14[11],zero,zero,zero,zero2082; AVX-NEXT: vpor %xmm5, %xmm2, %xmm22083; AVX-NEXT: vmovdqa %xmm2, 48(%r9)2084; AVX-NEXT: vmovdqa %xmm3, 32(%r9)2085; AVX-NEXT: vmovdqa %xmm4, (%r9)2086; AVX-NEXT: vmovdqa %xmm0, 16(%r9)2087; AVX-NEXT: vmovdqa %xmm15, 112(%r9)2088; AVX-NEXT: vmovdqa %xmm1, 96(%r9)2089; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2090; AVX-NEXT: vmovaps %xmm0, 64(%r9)2091; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2092; AVX-NEXT: vmovaps %xmm0, 80(%r9)2093; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2094; AVX-NEXT: vmovaps %xmm0, 128(%r9)2095; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2096; AVX-NEXT: vmovaps %xmm0, 144(%r9)2097; AVX-NEXT: vzeroupper2098; AVX-NEXT: retq2099;2100; AVX2-LABEL: store_i8_stride5_vf32:2101; AVX2: # %bb.0:2102; AVX2-NEXT: vmovdqa (%rdi), %ymm32103; AVX2-NEXT: vmovdqa (%rsi), %ymm42104; AVX2-NEXT: vmovdqa (%rdx), %ymm12105; AVX2-NEXT: vmovdqa (%rcx), %ymm22106; AVX2-NEXT: vmovdqa (%r8), %ymm02107; AVX2-NEXT: vpshufb {{.*#+}} ymm5 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25,u,27,u,u,26,u,28,u,30,u,u,29,u,31,u]2108; AVX2-NEXT: vpshufhw {{.*#+}} ymm6 = ymm1[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]2109; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm6[2,2,3,3,6,6,7,7]2110; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [255,0,255,0,0,255,0,255,0,255,0,0,255,0,255,0,255,0,255,0,0,255,0,255,0,255,0,0,255,0,255,0]2111; AVX2-NEXT: # ymm7 = mem[0,1,0,1]2112; AVX2-NEXT: vpblendvb %ymm7, %ymm5, %ymm6, %ymm52113; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]2114; AVX2-NEXT: vpshufb {{.*#+}} ymm6 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u,u,26,u,28,u,u,u,u,29,u,31,u,u,30]2115; AVX2-NEXT: vpshufhw {{.*#+}} ymm7 = ymm3[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]2116; AVX2-NEXT: vpshufd {{.*#+}} ymm7 = ymm7[2,2,3,3,6,6,7,7]2117; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [255,0,0,255,0,255,0,0,0,0,255,0,255,0,0,255,255,0,0,255,0,255,0,0,0,0,255,0,255,0,0,255]2118; AVX2-NEXT: # ymm8 = mem[0,1,0,1]2119; AVX2-NEXT: vpblendvb %ymm8, %ymm6, %ymm7, %ymm62120; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]2121; AVX2-NEXT: vmovdqa {{.*#+}} ymm7 = [255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u]2122; AVX2-NEXT: vpblendvb %ymm7, %ymm5, %ymm6, %ymm52123; AVX2-NEXT: vpshufd {{.*#+}} ymm6 = ymm0[2,2,3,3,6,6,7,7]2124; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]2125; AVX2-NEXT: vmovdqa {{.*#+}} ymm7 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]2126; AVX2-NEXT: vpblendvb %ymm7, %ymm5, %ymm6, %ymm52127; AVX2-NEXT: vmovdqa (%rsi), %xmm72128; AVX2-NEXT: vmovdqa (%rdi), %xmm82129; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm6 = 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]2130; AVX2-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]2131; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]2132; AVX2-NEXT: vmovdqa (%rdx), %xmm92133; AVX2-NEXT: vmovdqa (%rcx), %xmm102134; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm11 = 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]2135; AVX2-NEXT: vpshufb {{.*#+}} xmm11 = xmm11[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]2136; AVX2-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,1,1]2137; AVX2-NEXT: vmovdqa {{.*#+}} ymm12 = [255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255]2138; AVX2-NEXT: vpblendvb %ymm12, %ymm6, %ymm11, %ymm62139; AVX2-NEXT: vmovdqa (%r8), %xmm112140; AVX2-NEXT: vpshufd {{.*#+}} xmm12 = xmm11[0,0,1,1]2141; AVX2-NEXT: vpermq {{.*#+}} ymm12 = ymm12[0,0,0,1]2142; AVX2-NEXT: vmovdqa {{.*#+}} ymm13 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]2143; AVX2-NEXT: vpblendvb %ymm13, %ymm6, %ymm12, %ymm62144; AVX2-NEXT: vpshufb {{.*#+}} xmm10 = zero,xmm10[6],zero,xmm10[8,u],zero,xmm10[7],zero,xmm10[9],zero,xmm10[11,u],zero,xmm10[10],zero,xmm10[12]2145; AVX2-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[6],zero,xmm9[8],zero,xmm9[u,7],zero,xmm9[9],zero,xmm9[11],zero,xmm9[u,10],zero,xmm9[12],zero2146; AVX2-NEXT: vpor %xmm10, %xmm9, %xmm92147; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]2148; AVX2-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[8],zero,xmm8[u,7],zero,xmm8[9],zero,xmm8[u],zero,xmm8[u,10],zero,xmm8[12],zero,xmm8[u,11]2149; AVX2-NEXT: vpshufb {{.*#+}} xmm7 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero2150; AVX2-NEXT: vpor %xmm7, %xmm8, %xmm72151; AVX2-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,0,1,1]2152; AVX2-NEXT: vmovdqa {{.*#+}} ymm8 = [255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255]2153; AVX2-NEXT: vpblendvb %ymm8, %ymm9, %ymm7, %ymm72154; AVX2-NEXT: vpshufd {{.*#+}} xmm8 = xmm11[1,1,2,2]2155; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,1,1,1]2156; AVX2-NEXT: vmovdqa {{.*#+}} ymm9 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]2157; AVX2-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm72158; AVX2-NEXT: vpshufb {{.*#+}} ymm8 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[21],zero,ymm3[19,20],zero,ymm3[22],zero,ymm3[24],zero,ymm3[22,23],zero,ymm3[25],zero,ymm3[23]2159; AVX2-NEXT: vpshufb {{.*#+}} ymm9 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero,ymm4[25],zero2160; AVX2-NEXT: vpor %ymm8, %ymm9, %ymm82161; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]2162; AVX2-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero2163; AVX2-NEXT: vpshufb {{.*#+}} ymm10 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[19],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero,ymm1[25]2164; AVX2-NEXT: vpor %ymm9, %ymm10, %ymm92165; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]2166; AVX2-NEXT: vmovdqa {{.*#+}} ymm10 = [255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0]2167; AVX2-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82168; AVX2-NEXT: vpshufd {{.*#+}} ymm9 = ymm0[0,2,1,1,4,6,5,5]2169; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,3,3,2]2170; AVX2-NEXT: vmovdqa {{.*#+}} ymm10 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]2171; AVX2-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82172; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm9 = [3,3,3,0,4,4,4,4]2173; AVX2-NEXT: vpermd %ymm3, %ymm9, %ymm32174; AVX2-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,13,u,u,u,u,14,u,u,u,u,15,u,u,u,u,16,u,u,u,u,17,u,u,u,u,18,u,u,u,u]2175; AVX2-NEXT: vmovdqa {{.*#+}} ymm9 = [u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255]2176; AVX2-NEXT: vpblendvb %ymm9, %ymm3, %ymm4, %ymm32177; AVX2-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,zero,zero,ymm2[13],zero,zero,zero,zero,ymm2[14],zero,zero,zero,zero,ymm2[15],zero,zero,zero,zero,ymm2[16],zero,zero,zero,zero,ymm2[17],zero,zero,zero,zero,ymm2[18],zero,zero2178; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,ymm1[13],zero,zero,zero,zero,ymm1[14],zero,zero,zero,zero,ymm1[15],zero,zero,zero,zero,ymm1[16],zero,zero,zero,zero,ymm1[17],zero,zero,zero,zero,ymm1[18],zero,zero,zero2179; AVX2-NEXT: vpor %ymm2, %ymm1, %ymm12180; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255]2181; AVX2-NEXT: vpblendvb %ymm2, %ymm3, %ymm1, %ymm12182; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm2 = [3,3,3,3,0,4,4,4]2183; AVX2-NEXT: vpermd %ymm0, %ymm2, %ymm02184; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]2185; AVX2-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm02186; AVX2-NEXT: vmovdqa %ymm0, 64(%r9)2187; AVX2-NEXT: vmovdqa %ymm8, 96(%r9)2188; AVX2-NEXT: vmovdqa %ymm5, 128(%r9)2189; AVX2-NEXT: vmovdqa %ymm7, 32(%r9)2190; AVX2-NEXT: vmovdqa %ymm6, (%r9)2191; AVX2-NEXT: vzeroupper2192; AVX2-NEXT: retq2193;2194; AVX2-FP-LABEL: store_i8_stride5_vf32:2195; AVX2-FP: # %bb.0:2196; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm32197; AVX2-FP-NEXT: vmovdqa (%rsi), %ymm42198; AVX2-FP-NEXT: vmovdqa (%rdx), %ymm12199; AVX2-FP-NEXT: vmovdqa (%rcx), %ymm22200; AVX2-FP-NEXT: vmovdqa (%r8), %ymm02201; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm62202; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm72203; AVX2-FP-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]2204; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]2205; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]2206; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm82207; AVX2-FP-NEXT: vmovdqa (%rcx), %xmm92208; AVX2-FP-NEXT: vpunpcklbw {{.*#+}} xmm10 = 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]2209; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]2210; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,0,1,1]2211; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm11 = [255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255]2212; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm5, %ymm10, %ymm52213; AVX2-FP-NEXT: vmovdqa (%r8), %xmm102214; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm11 = xmm10[0,0,1,1]2215; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm11[0,0,0,1]2216; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm12 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]2217; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm5, %ymm11, %ymm52218; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm9 = zero,xmm9[6],zero,xmm9[8,u],zero,xmm9[7],zero,xmm9[9],zero,xmm9[11,u],zero,xmm9[10],zero,xmm9[12]2219; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[6],zero,xmm8[8],zero,xmm8[u,7],zero,xmm8[9],zero,xmm8[11],zero,xmm8[u,10],zero,xmm8[12],zero2220; AVX2-FP-NEXT: vpor %xmm9, %xmm8, %xmm82221; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]2222; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm7 = xmm7[8],zero,xmm7[u,7],zero,xmm7[9],zero,xmm7[u],zero,xmm7[u,10],zero,xmm7[12],zero,xmm7[u,11]2223; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm6 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero2224; AVX2-FP-NEXT: vpor %xmm7, %xmm6, %xmm62225; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]2226; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm7 = [255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255]2227; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm8, %ymm6, %ymm62228; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm7 = xmm10[1,1,2,2]2229; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[0,1,1,1]2230; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm8 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]2231; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm6, %ymm7, %ymm62232; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm7 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[21],zero,ymm3[19,20],zero,ymm3[22],zero,ymm3[24],zero,ymm3[22,23],zero,ymm3[25],zero,ymm3[23]2233; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm8 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero,ymm4[25],zero2234; AVX2-FP-NEXT: vpor %ymm7, %ymm8, %ymm72235; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]2236; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm8 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero2237; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm9 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[19],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero,ymm1[25]2238; AVX2-FP-NEXT: vpor %ymm8, %ymm9, %ymm82239; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]2240; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm9 = [255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0]2241; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm72242; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm8 = ymm0[0,2,1,1,4,6,5,5]2243; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,3,3,2]2244; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm9 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]2245; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm72246; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm8 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[27],zero,ymm1[29,26],zero,ymm1[28],zero,ymm1[30],zero,ymm1[28,29],zero,ymm1[31],zero,ymm1[29]2247; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm2[27],zero,zero,ymm2[26],zero,ymm2[28],zero,ymm2[30],zero,zero,ymm2[29],zero,ymm2[31],zero2248; AVX2-FP-NEXT: vpor %ymm8, %ymm9, %ymm82249; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]2250; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm9 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[29,26],zero,ymm3[28],zero,ymm3[26,27,28,29],zero,ymm3[31],zero,ymm3[29,30],zero2251; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm10 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm4[26],zero,ymm4[28],zero,zero,zero,zero,ymm4[29],zero,ymm4[31],zero,zero,ymm4[30]2252; AVX2-FP-NEXT: vpor %ymm9, %ymm10, %ymm92253; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]2254; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm10 = [255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u]2255; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82256; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm9 = ymm0[2,2,3,3,6,6,7,7]2257; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]2258; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm10 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]2259; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82260; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [3,3,3,0,4,4,4,4]2261; AVX2-FP-NEXT: vpermd %ymm3, %ymm9, %ymm32262; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,13,u,u,u,u,14,u,u,u,u,15,u,u,u,u,16,u,u,u,u,17,u,u,u,u,18,u,u,u,u]2263; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm9 = [u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255]2264; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm3, %ymm4, %ymm32265; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,zero,zero,ymm2[13],zero,zero,zero,zero,ymm2[14],zero,zero,zero,zero,ymm2[15],zero,zero,zero,zero,ymm2[16],zero,zero,zero,zero,ymm2[17],zero,zero,zero,zero,ymm2[18],zero,zero2266; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,ymm1[13],zero,zero,zero,zero,ymm1[14],zero,zero,zero,zero,ymm1[15],zero,zero,zero,zero,ymm1[16],zero,zero,zero,zero,ymm1[17],zero,zero,zero,zero,ymm1[18],zero,zero,zero2267; AVX2-FP-NEXT: vpor %ymm2, %ymm1, %ymm12268; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm2 = [u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255]2269; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm3, %ymm1, %ymm12270; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [3,3,3,3,0,4,4,4]2271; AVX2-FP-NEXT: vpermd %ymm0, %ymm2, %ymm02272; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm2 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]2273; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm02274; AVX2-FP-NEXT: vmovdqa %ymm0, 64(%r9)2275; AVX2-FP-NEXT: vmovdqa %ymm8, 128(%r9)2276; AVX2-FP-NEXT: vmovdqa %ymm7, 96(%r9)2277; AVX2-FP-NEXT: vmovdqa %ymm6, 32(%r9)2278; AVX2-FP-NEXT: vmovdqa %ymm5, (%r9)2279; AVX2-FP-NEXT: vzeroupper2280; AVX2-FP-NEXT: retq2281;2282; AVX2-FCP-LABEL: store_i8_stride5_vf32:2283; AVX2-FCP: # %bb.0:2284; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm32285; AVX2-FCP-NEXT: vmovdqa (%rsi), %ymm42286; AVX2-FCP-NEXT: vmovdqa (%rdx), %ymm12287; AVX2-FCP-NEXT: vmovdqa (%rcx), %ymm22288; AVX2-FCP-NEXT: vmovdqa (%r8), %ymm02289; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm62290; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm72291; AVX2-FCP-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]2292; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]2293; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]2294; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm82295; AVX2-FCP-NEXT: vmovdqa (%rcx), %xmm92296; AVX2-FCP-NEXT: vpunpcklbw {{.*#+}} xmm10 = 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]2297; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]2298; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[0,0,1,1]2299; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm11 = [255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255]2300; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm5, %ymm10, %ymm52301; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm10 = [0,0,0,0,0,0,1,1]2302; AVX2-FCP-NEXT: vpermd %ymm0, %ymm10, %ymm102303; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm11 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]2304; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm5, %ymm10, %ymm52305; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm9 = zero,xmm9[6],zero,xmm9[8,u],zero,xmm9[7],zero,xmm9[9],zero,xmm9[11,u],zero,xmm9[10],zero,xmm9[12]2306; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[6],zero,xmm8[8],zero,xmm8[u,7],zero,xmm8[9],zero,xmm8[11],zero,xmm8[u,10],zero,xmm8[12],zero2307; AVX2-FCP-NEXT: vpor %xmm9, %xmm8, %xmm82308; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]2309; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm7[8],zero,xmm7[u,7],zero,xmm7[9],zero,xmm7[u],zero,xmm7[u,10],zero,xmm7[12],zero,xmm7[u,11]2310; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm6 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero2311; AVX2-FCP-NEXT: vpor %xmm7, %xmm6, %xmm62312; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]2313; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm7 = [255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255]2314; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm8, %ymm6, %ymm62315; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm7 = [1,1,2,2,2,2,2,2]2316; AVX2-FCP-NEXT: vpermd %ymm0, %ymm7, %ymm72317; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm8 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]2318; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm6, %ymm7, %ymm62319; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[21],zero,ymm3[19,20],zero,ymm3[22],zero,ymm3[24],zero,ymm3[22,23],zero,ymm3[25],zero,ymm3[23]2320; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero,ymm4[25],zero2321; AVX2-FCP-NEXT: vpor %ymm7, %ymm8, %ymm72322; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]2323; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero2324; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[19],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero,ymm1[25]2325; AVX2-FCP-NEXT: vpor %ymm8, %ymm9, %ymm82326; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]2327; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm9 = [255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0]2328; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm72329; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [4,6,5,5,5,5,4,6]2330; AVX2-FCP-NEXT: vpermd %ymm0, %ymm8, %ymm82331; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm9 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]2332; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm7, %ymm8, %ymm72333; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[27],zero,ymm1[29,26],zero,ymm1[28],zero,ymm1[30],zero,ymm1[28,29],zero,ymm1[31],zero,ymm1[29]2334; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm2[27],zero,zero,ymm2[26],zero,ymm2[28],zero,ymm2[30],zero,zero,ymm2[29],zero,ymm2[31],zero2335; AVX2-FCP-NEXT: vpor %ymm8, %ymm9, %ymm82336; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]2337; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[29,26],zero,ymm3[28],zero,ymm3[26,27,28,29],zero,ymm3[31],zero,ymm3[29,30],zero2338; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm4[26],zero,ymm4[28],zero,zero,zero,zero,ymm4[29],zero,ymm4[31],zero,zero,ymm4[30]2339; AVX2-FCP-NEXT: vpor %ymm9, %ymm10, %ymm92340; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]2341; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm10 = [255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u]2342; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82343; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [6,6,6,6,7,7,7,7]2344; AVX2-FCP-NEXT: vpermd %ymm0, %ymm9, %ymm92345; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm10 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]2346; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm82347; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [3,3,3,0,4,4,4,4]2348; AVX2-FCP-NEXT: vpermd %ymm3, %ymm9, %ymm32349; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,13,u,u,u,u,14,u,u,u,u,15,u,u,u,u,16,u,u,u,u,17,u,u,u,u,18,u,u,u,u]2350; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm9 = [u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255]2351; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm3, %ymm4, %ymm32352; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm2 = zero,zero,zero,zero,ymm2[13],zero,zero,zero,zero,ymm2[14],zero,zero,zero,zero,ymm2[15],zero,zero,zero,zero,ymm2[16],zero,zero,zero,zero,ymm2[17],zero,zero,zero,zero,ymm2[18],zero,zero2353; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = zero,zero,zero,ymm1[13],zero,zero,zero,zero,ymm1[14],zero,zero,zero,zero,ymm1[15],zero,zero,zero,zero,ymm1[16],zero,zero,zero,zero,ymm1[17],zero,zero,zero,zero,ymm1[18],zero,zero,zero2354; AVX2-FCP-NEXT: vpor %ymm2, %ymm1, %ymm12355; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm2 = [u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255]2356; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm3, %ymm1, %ymm12357; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [3,3,3,3,0,4,4,4]2358; AVX2-FCP-NEXT: vpermd %ymm0, %ymm2, %ymm02359; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm2 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]2360; AVX2-FCP-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm02361; AVX2-FCP-NEXT: vmovdqa %ymm0, 64(%r9)2362; AVX2-FCP-NEXT: vmovdqa %ymm8, 128(%r9)2363; AVX2-FCP-NEXT: vmovdqa %ymm7, 96(%r9)2364; AVX2-FCP-NEXT: vmovdqa %ymm6, 32(%r9)2365; AVX2-FCP-NEXT: vmovdqa %ymm5, (%r9)2366; AVX2-FCP-NEXT: vzeroupper2367; AVX2-FCP-NEXT: retq2368;2369; AVX512-LABEL: store_i8_stride5_vf32:2370; AVX512: # %bb.0:2371; AVX512-NEXT: vmovdqa (%rdi), %ymm32372; AVX512-NEXT: vmovdqa (%rsi), %ymm42373; AVX512-NEXT: vmovdqa (%rdx), %ymm12374; AVX512-NEXT: vmovdqa (%rcx), %ymm22375; AVX512-NEXT: vmovdqa (%r8), %ymm02376; AVX512-NEXT: vmovdqa (%rdi), %xmm52377; AVX512-NEXT: vpshufb {{.*#+}} xmm6 = xmm5[8],zero,xmm5[u,7],zero,xmm5[9],zero,xmm5[u],zero,xmm5[u,10],zero,xmm5[12],zero,xmm5[u,11]2378; AVX512-NEXT: vmovdqa (%rsi), %xmm72379; AVX512-NEXT: vpshufb {{.*#+}} xmm8 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero2380; AVX512-NEXT: vpor %xmm6, %xmm8, %xmm62381; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]2382; AVX512-NEXT: vmovdqa (%rcx), %xmm82383; AVX512-NEXT: vpshufb {{.*#+}} xmm9 = zero,xmm8[6],zero,xmm8[8,u],zero,xmm8[7],zero,xmm8[9],zero,xmm8[11,u],zero,xmm8[10],zero,xmm8[12]2384; AVX512-NEXT: vmovdqa (%rdx), %xmm102385; AVX512-NEXT: vpshufb {{.*#+}} xmm11 = xmm10[6],zero,xmm10[8],zero,xmm10[u,7],zero,xmm10[9],zero,xmm10[11],zero,xmm10[u,10],zero,xmm10[12],zero2386; AVX512-NEXT: vpor %xmm9, %xmm11, %xmm92387; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]2388; AVX512-NEXT: vmovdqa {{.*#+}} ymm11 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]2389; AVX512-NEXT: vpternlogq {{.*#+}} ymm9 = ymm6 ^ (ymm11 & (ymm9 ^ ymm6))2390; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm6 = xmm8[0],xmm10[0],xmm8[1],xmm10[1],xmm8[2],xmm10[2],xmm8[3],xmm10[3],xmm8[4],xmm10[4],xmm8[5],xmm10[5],xmm8[6],xmm10[6],xmm8[7],xmm10[7]2391; AVX512-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]2392; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]2393; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm5[0],xmm7[0],xmm5[1],xmm7[1],xmm5[2],xmm7[2],xmm5[3],xmm7[3],xmm5[4],xmm7[4],xmm5[5],xmm7[5],xmm5[6],xmm7[6],xmm5[7],xmm7[7]2394; AVX512-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]2395; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]2396; AVX512-NEXT: vmovdqa {{.*#+}} ymm7 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]2397; AVX512-NEXT: vpternlogq {{.*#+}} ymm5 = ymm6 ^ (ymm7 & (ymm5 ^ ymm6))2398; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm5[0,1,2,3],zmm9[0,1,2,3]2399; AVX512-NEXT: vmovdqa (%r8), %xmm62400; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm8 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]2401; AVX512-NEXT: vpermd %zmm6, %zmm8, %zmm62402; AVX512-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm5))2403; AVX512-NEXT: vpshufb {{.*#+}} ymm5 = ymm2[u,u,u],zero,ymm2[13,u,u,u],zero,ymm2[14,u,u,u],zero,ymm2[15,u,u,u],zero,ymm2[16,u,u,u],zero,ymm2[17,u,u,u],zero,ymm2[18,u,u]2404; AVX512-NEXT: vpshufb {{.*#+}} ymm8 = ymm1[u,u,u,13],zero,ymm1[u,u,u,14],zero,ymm1[u,u,u,15],zero,ymm1[u,u,u,16],zero,ymm1[u,u,u,17],zero,ymm1[u,u,u,18],zero,ymm1[u,u]2405; AVX512-NEXT: vpor %ymm5, %ymm8, %ymm52406; AVX512-NEXT: vpshufb {{.*#+}} ymm8 = ymm4[u],zero,ymm4[13,u,u,u],zero,ymm4[14,u,u,u],zero,ymm4[15,u,u,u],zero,ymm4[16,u,u,u],zero,ymm4[17,u,u,u],zero,ymm4[18,u,u,u],zero2407; AVX512-NEXT: vpshufb {{.*#+}} ymm9 = ymm3[u,13],zero,ymm3[u,u,u,14],zero,ymm3[u,u,u,15],zero,ymm3[u,u,u,16],zero,ymm3[u,u,u,17],zero,ymm3[u,u,u,18],zero,ymm3[u,u,u,19]2408; AVX512-NEXT: vpor %ymm8, %ymm9, %ymm82409; AVX512-NEXT: vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm11 & (ymm8 ^ ymm5))2410; AVX512-NEXT: vpshufb {{.*#+}} ymm5 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[21],zero,zero,ymm3[20],zero,ymm3[22],zero,ymm3[24],zero,zero,ymm3[23],zero,ymm3[25],zero,zero2411; AVX512-NEXT: vpshufb {{.*#+}} ymm9 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm4[21,u],zero,ymm4[20],zero,ymm4[22],zero,ymm4[24,u],zero,ymm4[23],zero,ymm4[25,u]2412; AVX512-NEXT: vpor %ymm5, %ymm9, %ymm52413; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]2414; AVX512-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero2415; AVX512-NEXT: vpshufb {{.*#+}} ymm10 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm1[21],zero,ymm1[21,20],zero,ymm1[22],zero,ymm1[24],zero,ymm1[22,23],zero,ymm1[25]2416; AVX512-NEXT: vpor %ymm9, %ymm10, %ymm92417; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]2418; AVX512-NEXT: vpternlogq {{.*#+}} ymm9 = ymm9 ^ (mem & (ymm9 ^ ymm5))2419; AVX512-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm9[0,1,2,3]2420; AVX512-NEXT: vpshufb {{.*#+}} ymm8 = ymm0[12],zero,zero,zero,zero,ymm0[13],zero,zero,zero,zero,ymm0[14],zero,zero,zero,zero,ymm0[15],zero,zero,zero,zero,ymm0[16],zero,zero,zero,zero,ymm0[17],zero,zero,zero,zero,ymm0[18],zero2421; AVX512-NEXT: vpshufd {{.*#+}} ymm9 = ymm0[0,2,1,1,4,6,5,5]2422; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,3,3,2]2423; AVX512-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm9, %ymm92424; AVX512-NEXT: vinserti64x4 $1, %ymm9, %zmm8, %zmm82425; AVX512-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm5 & mem)2426; AVX512-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm3[26],zero,ymm3[28],zero,zero,ymm3[27],zero,ymm3[29],zero,ymm3[31],zero,zero,ymm3[30],zero2427; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u],zero,ymm4[26],zero,ymm4[28,u],zero,ymm4[u],zero,ymm4[29],zero,ymm4[31,u],zero,ymm4[30]2428; AVX512-NEXT: vpor %ymm3, %ymm4, %ymm32429; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]2430; AVX512-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[27],zero,zero,ymm1[26],zero,ymm1[28],zero,ymm1[30],zero,zero,ymm1[29],zero,ymm1[31],zero,zero2431; AVX512-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm2[27,u],zero,ymm2[26],zero,ymm2[28],zero,ymm2[30,u],zero,ymm2[29],zero,ymm2[31,u]2432; AVX512-NEXT: vpor %ymm1, %ymm2, %ymm12433; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]2434; AVX512-NEXT: vpternlogq {{.*#+}} ymm1 = ymm3 ^ (ymm7 & (ymm1 ^ ymm3))2435; AVX512-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,2,3,3,6,6,7,7]2436; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]2437; AVX512-NEXT: vpternlogq {{.*#+}} ymm0 = ymm0 ^ (mem & (ymm0 ^ ymm1))2438; AVX512-NEXT: vmovdqa %ymm0, 128(%r9)2439; AVX512-NEXT: vmovdqa64 %zmm8, 64(%r9)2440; AVX512-NEXT: vmovdqa64 %zmm6, (%r9)2441; AVX512-NEXT: vzeroupper2442; AVX512-NEXT: retq2443;2444; AVX512-FCP-LABEL: store_i8_stride5_vf32:2445; AVX512-FCP: # %bb.0:2446; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm22447; AVX512-FCP-NEXT: vmovdqa (%rsi), %ymm32448; AVX512-FCP-NEXT: vmovdqa (%rdx), %ymm02449; AVX512-FCP-NEXT: vmovdqa (%rcx), %ymm12450; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm42451; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm4[8],zero,xmm4[u,7],zero,xmm4[9],zero,xmm4[u],zero,xmm4[u,10],zero,xmm4[12],zero,xmm4[u,11]2452; AVX512-FCP-NEXT: vmovdqa (%rsi), %xmm62453; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm7 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero2454; AVX512-FCP-NEXT: vpor %xmm5, %xmm7, %xmm52455; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]2456; AVX512-FCP-NEXT: vmovdqa (%rcx), %xmm72457; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm8 = zero,xmm7[6],zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9],zero,xmm7[11,u],zero,xmm7[10],zero,xmm7[12]2458; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm92459; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm10 = xmm9[6],zero,xmm9[8],zero,xmm9[u,7],zero,xmm9[9],zero,xmm9[11],zero,xmm9[u,10],zero,xmm9[12],zero2460; AVX512-FCP-NEXT: vpor %xmm8, %xmm10, %xmm82461; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]2462; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm10 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]2463; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm10 & (ymm8 ^ ymm5))2464; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm7[0],xmm9[0],xmm7[1],xmm9[1],xmm7[2],xmm9[2],xmm7[3],xmm9[3],xmm7[4],xmm9[4],xmm7[5],xmm9[5],xmm7[6],xmm9[6],xmm7[7],xmm9[7]2465; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]2466; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]2467; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3],xmm4[4],xmm6[4],xmm4[5],xmm6[5],xmm4[6],xmm6[6],xmm4[7],xmm6[7]2468; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]2469; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]2470; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]2471; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm4 = ymm5 ^ (ymm6 & (ymm4 ^ ymm5))2472; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm4[0,1,2,3],zmm8[0,1,2,3]2473; AVX512-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm4 = mem[0,1,2,3,0,1,2,3]2474; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,9,9,0,10,10,10,10,0]2475; AVX512-FCP-NEXT: vpermd %zmm4, %zmm7, %zmm72476; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 ^ (mem & (zmm7 ^ zmm5))2477; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm1[u,u,u],zero,ymm1[13,u,u,u],zero,ymm1[14,u,u,u],zero,ymm1[15,u,u,u],zero,ymm1[16,u,u,u],zero,ymm1[17,u,u,u],zero,ymm1[18,u,u]2478; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm0[u,u,u,13],zero,ymm0[u,u,u,14],zero,ymm0[u,u,u,15],zero,ymm0[u,u,u,16],zero,ymm0[u,u,u,17],zero,ymm0[u,u,u,18],zero,ymm0[u,u]2479; AVX512-FCP-NEXT: vpor %ymm5, %ymm8, %ymm52480; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm3[u],zero,ymm3[13,u,u,u],zero,ymm3[14,u,u,u],zero,ymm3[15,u,u,u],zero,ymm3[16,u,u,u],zero,ymm3[17,u,u,u],zero,ymm3[18,u,u,u],zero2481; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[u,13],zero,ymm2[u,u,u,14],zero,ymm2[u,u,u,15],zero,ymm2[u,u,u,16],zero,ymm2[u,u,u,17],zero,ymm2[u,u,u,18],zero,ymm2[u,u,u,19]2482; AVX512-FCP-NEXT: vpor %ymm8, %ymm9, %ymm82483; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm10 & (ymm8 ^ ymm5))2484; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero,ymm2[25],zero,zero2485; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm3[21,u],zero,ymm3[20],zero,ymm3[22],zero,ymm3[24,u],zero,ymm3[23],zero,ymm3[25,u]2486; AVX512-FCP-NEXT: vpor %ymm5, %ymm9, %ymm52487; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]2488; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm1[19],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero2489; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm0[21],zero,ymm0[21,20],zero,ymm0[22],zero,ymm0[24],zero,ymm0[22,23],zero,ymm0[25]2490; AVX512-FCP-NEXT: vpor %ymm9, %ymm10, %ymm92491; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]2492; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm9 = ymm9 ^ (mem & (ymm9 ^ ymm5))2493; AVX512-FCP-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm9[0,1,2,3]2494; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm4[12],zero,zero,zero,zero,ymm4[13],zero,zero,zero,zero,ymm4[14],zero,zero,zero,zero,ymm4[15],zero,zero,zero,zero,ymm4[16],zero,zero,zero,zero,ymm4[17],zero,zero,zero,zero,ymm4[18],zero2495; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [4,0,5,5,5,5,0,6]2496; AVX512-FCP-NEXT: vpermd %ymm4, %ymm9, %ymm92497; AVX512-FCP-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm9, %ymm92498; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm9, %zmm8, %zmm82499; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm5 & mem)2500; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[26],zero,ymm2[28],zero,zero,ymm2[27],zero,ymm2[29],zero,ymm2[31],zero,zero,ymm2[30],zero2501; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u],zero,ymm3[26],zero,ymm3[28,u],zero,ymm3[u],zero,ymm3[29],zero,ymm3[31,u],zero,ymm3[30]2502; AVX512-FCP-NEXT: vpor %ymm2, %ymm3, %ymm22503; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]2504; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm0[27],zero,zero,ymm0[26],zero,ymm0[28],zero,ymm0[30],zero,zero,ymm0[29],zero,ymm0[31],zero,zero2505; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm1[27,u],zero,ymm1[26],zero,ymm1[28],zero,ymm1[30,u],zero,ymm1[29],zero,ymm1[31,u]2506; AVX512-FCP-NEXT: vpor %ymm0, %ymm1, %ymm02507; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]2508; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm6 & (ymm0 ^ ymm2))2509; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [6,6,6,0,7,7,7,7]2510; AVX512-FCP-NEXT: vpermd %ymm4, %ymm1, %ymm12511; AVX512-FCP-NEXT: vpternlogq {{.*#+}} ymm1 = ymm1 ^ (mem & (ymm1 ^ ymm0))2512; AVX512-FCP-NEXT: vmovdqa %ymm1, 128(%r9)2513; AVX512-FCP-NEXT: vmovdqa64 %zmm8, 64(%r9)2514; AVX512-FCP-NEXT: vmovdqa64 %zmm7, (%r9)2515; AVX512-FCP-NEXT: vzeroupper2516; AVX512-FCP-NEXT: retq2517;2518; AVX512DQ-LABEL: store_i8_stride5_vf32:2519; AVX512DQ: # %bb.0:2520; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm32521; AVX512DQ-NEXT: vmovdqa (%rsi), %ymm42522; AVX512DQ-NEXT: vmovdqa (%rdx), %ymm12523; AVX512DQ-NEXT: vmovdqa (%rcx), %ymm22524; AVX512DQ-NEXT: vmovdqa (%r8), %ymm02525; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm52526; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm6 = xmm5[8],zero,xmm5[u,7],zero,xmm5[9],zero,xmm5[u],zero,xmm5[u,10],zero,xmm5[12],zero,xmm5[u,11]2527; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm72528; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm8 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero2529; AVX512DQ-NEXT: vpor %xmm6, %xmm8, %xmm62530; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]2531; AVX512DQ-NEXT: vmovdqa (%rcx), %xmm82532; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm9 = zero,xmm8[6],zero,xmm8[8,u],zero,xmm8[7],zero,xmm8[9],zero,xmm8[11,u],zero,xmm8[10],zero,xmm8[12]2533; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm102534; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm11 = xmm10[6],zero,xmm10[8],zero,xmm10[u,7],zero,xmm10[9],zero,xmm10[11],zero,xmm10[u,10],zero,xmm10[12],zero2535; AVX512DQ-NEXT: vpor %xmm9, %xmm11, %xmm92536; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]2537; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm11 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]2538; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm9 = ymm6 ^ (ymm11 & (ymm9 ^ ymm6))2539; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm6 = xmm8[0],xmm10[0],xmm8[1],xmm10[1],xmm8[2],xmm10[2],xmm8[3],xmm10[3],xmm8[4],xmm10[4],xmm8[5],xmm10[5],xmm8[6],xmm10[6],xmm8[7],xmm10[7]2540; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]2541; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]2542; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm5[0],xmm7[0],xmm5[1],xmm7[1],xmm5[2],xmm7[2],xmm5[3],xmm7[3],xmm5[4],xmm7[4],xmm5[5],xmm7[5],xmm5[6],xmm7[6],xmm5[7],xmm7[7]2543; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]2544; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]2545; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm7 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]2546; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm5 = ymm6 ^ (ymm7 & (ymm5 ^ ymm6))2547; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm5[0,1,2,3],zmm9[0,1,2,3]2548; AVX512DQ-NEXT: vmovdqa (%r8), %xmm62549; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm8 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]2550; AVX512DQ-NEXT: vpermd %zmm6, %zmm8, %zmm62551; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm5))2552; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm5 = ymm2[u,u,u],zero,ymm2[13,u,u,u],zero,ymm2[14,u,u,u],zero,ymm2[15,u,u,u],zero,ymm2[16,u,u,u],zero,ymm2[17,u,u,u],zero,ymm2[18,u,u]2553; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm8 = ymm1[u,u,u,13],zero,ymm1[u,u,u,14],zero,ymm1[u,u,u,15],zero,ymm1[u,u,u,16],zero,ymm1[u,u,u,17],zero,ymm1[u,u,u,18],zero,ymm1[u,u]2554; AVX512DQ-NEXT: vpor %ymm5, %ymm8, %ymm52555; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm8 = ymm4[u],zero,ymm4[13,u,u,u],zero,ymm4[14,u,u,u],zero,ymm4[15,u,u,u],zero,ymm4[16,u,u,u],zero,ymm4[17,u,u,u],zero,ymm4[18,u,u,u],zero2556; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm9 = ymm3[u,13],zero,ymm3[u,u,u,14],zero,ymm3[u,u,u,15],zero,ymm3[u,u,u,16],zero,ymm3[u,u,u,17],zero,ymm3[u,u,u,18],zero,ymm3[u,u,u,19]2557; AVX512DQ-NEXT: vpor %ymm8, %ymm9, %ymm82558; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm11 & (ymm8 ^ ymm5))2559; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm5 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[21],zero,zero,ymm3[20],zero,ymm3[22],zero,ymm3[24],zero,zero,ymm3[23],zero,ymm3[25],zero,zero2560; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm9 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm4[21,u],zero,ymm4[20],zero,ymm4[22],zero,ymm4[24,u],zero,ymm4[23],zero,ymm4[25,u]2561; AVX512DQ-NEXT: vpor %ymm5, %ymm9, %ymm52562; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]2563; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero2564; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm10 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm1[21],zero,ymm1[21,20],zero,ymm1[22],zero,ymm1[24],zero,ymm1[22,23],zero,ymm1[25]2565; AVX512DQ-NEXT: vpor %ymm9, %ymm10, %ymm92566; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]2567; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm9 = ymm9 ^ (mem & (ymm9 ^ ymm5))2568; AVX512DQ-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm9[0,1,2,3]2569; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm8 = ymm0[12],zero,zero,zero,zero,ymm0[13],zero,zero,zero,zero,ymm0[14],zero,zero,zero,zero,ymm0[15],zero,zero,zero,zero,ymm0[16],zero,zero,zero,zero,ymm0[17],zero,zero,zero,zero,ymm0[18],zero2570; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm9 = ymm0[0,2,1,1,4,6,5,5]2571; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,3,3,2]2572; AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm9, %ymm92573; AVX512DQ-NEXT: vinserti64x4 $1, %ymm9, %zmm8, %zmm82574; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm5 & mem)2575; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm3[26],zero,ymm3[28],zero,zero,ymm3[27],zero,ymm3[29],zero,ymm3[31],zero,zero,ymm3[30],zero2576; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u],zero,ymm4[26],zero,ymm4[28,u],zero,ymm4[u],zero,ymm4[29],zero,ymm4[31,u],zero,ymm4[30]2577; AVX512DQ-NEXT: vpor %ymm3, %ymm4, %ymm32578; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]2579; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[27],zero,zero,ymm1[26],zero,ymm1[28],zero,ymm1[30],zero,zero,ymm1[29],zero,ymm1[31],zero,zero2580; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm2[27,u],zero,ymm2[26],zero,ymm2[28],zero,ymm2[30,u],zero,ymm2[29],zero,ymm2[31,u]2581; AVX512DQ-NEXT: vpor %ymm1, %ymm2, %ymm12582; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]2583; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm1 = ymm3 ^ (ymm7 & (ymm1 ^ ymm3))2584; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,2,3,3,6,6,7,7]2585; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]2586; AVX512DQ-NEXT: vpternlogq {{.*#+}} ymm0 = ymm0 ^ (mem & (ymm0 ^ ymm1))2587; AVX512DQ-NEXT: vmovdqa %ymm0, 128(%r9)2588; AVX512DQ-NEXT: vmovdqa64 %zmm8, 64(%r9)2589; AVX512DQ-NEXT: vmovdqa64 %zmm6, (%r9)2590; AVX512DQ-NEXT: vzeroupper2591; AVX512DQ-NEXT: retq2592;2593; AVX512DQ-FCP-LABEL: store_i8_stride5_vf32:2594; AVX512DQ-FCP: # %bb.0:2595; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm22596; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %ymm32597; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %ymm02598; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %ymm12599; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm42600; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm4[8],zero,xmm4[u,7],zero,xmm4[9],zero,xmm4[u],zero,xmm4[u,10],zero,xmm4[12],zero,xmm4[u,11]2601; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %xmm62602; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm7 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero2603; AVX512DQ-FCP-NEXT: vpor %xmm5, %xmm7, %xmm52604; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]2605; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %xmm72606; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm8 = zero,xmm7[6],zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9],zero,xmm7[11,u],zero,xmm7[10],zero,xmm7[12]2607; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm92608; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm10 = xmm9[6],zero,xmm9[8],zero,xmm9[u,7],zero,xmm9[9],zero,xmm9[11],zero,xmm9[u,10],zero,xmm9[12],zero2609; AVX512DQ-FCP-NEXT: vpor %xmm8, %xmm10, %xmm82610; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]2611; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm10 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]2612; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm10 & (ymm8 ^ ymm5))2613; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm7[0],xmm9[0],xmm7[1],xmm9[1],xmm7[2],xmm9[2],xmm7[3],xmm9[3],xmm7[4],xmm9[4],xmm7[5],xmm9[5],xmm7[6],xmm9[6],xmm7[7],xmm9[7]2614; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]2615; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]2616; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3],xmm4[4],xmm6[4],xmm4[5],xmm6[5],xmm4[6],xmm6[6],xmm4[7],xmm6[7]2617; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]2618; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]2619; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]2620; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm4 = ymm5 ^ (ymm6 & (ymm4 ^ ymm5))2621; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm4[0,1,2,3],zmm8[0,1,2,3]2622; AVX512DQ-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm4 = mem[0,1,2,3,0,1,2,3]2623; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,9,9,0,10,10,10,10,0]2624; AVX512DQ-FCP-NEXT: vpermd %zmm4, %zmm7, %zmm72625; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 ^ (mem & (zmm7 ^ zmm5))2626; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm1[u,u,u],zero,ymm1[13,u,u,u],zero,ymm1[14,u,u,u],zero,ymm1[15,u,u,u],zero,ymm1[16,u,u,u],zero,ymm1[17,u,u,u],zero,ymm1[18,u,u]2627; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm0[u,u,u,13],zero,ymm0[u,u,u,14],zero,ymm0[u,u,u,15],zero,ymm0[u,u,u,16],zero,ymm0[u,u,u,17],zero,ymm0[u,u,u,18],zero,ymm0[u,u]2628; AVX512DQ-FCP-NEXT: vpor %ymm5, %ymm8, %ymm52629; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm3[u],zero,ymm3[13,u,u,u],zero,ymm3[14,u,u,u],zero,ymm3[15,u,u,u],zero,ymm3[16,u,u,u],zero,ymm3[17,u,u,u],zero,ymm3[18,u,u,u],zero2630; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm2[u,13],zero,ymm2[u,u,u,14],zero,ymm2[u,u,u,15],zero,ymm2[u,u,u,16],zero,ymm2[u,u,u,17],zero,ymm2[u,u,u,18],zero,ymm2[u,u,u,19]2631; AVX512DQ-FCP-NEXT: vpor %ymm8, %ymm9, %ymm82632; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm10 & (ymm8 ^ ymm5))2633; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero,ymm2[25],zero,zero2634; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm3[21,u],zero,ymm3[20],zero,ymm3[22],zero,ymm3[24,u],zero,ymm3[23],zero,ymm3[25,u]2635; AVX512DQ-FCP-NEXT: vpor %ymm5, %ymm9, %ymm52636; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]2637; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm1[19],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero2638; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm0[21],zero,ymm0[21,20],zero,ymm0[22],zero,ymm0[24],zero,ymm0[22,23],zero,ymm0[25]2639; AVX512DQ-FCP-NEXT: vpor %ymm9, %ymm10, %ymm92640; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]2641; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm9 = ymm9 ^ (mem & (ymm9 ^ ymm5))2642; AVX512DQ-FCP-NEXT: vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm9[0,1,2,3]2643; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm4[12],zero,zero,zero,zero,ymm4[13],zero,zero,zero,zero,ymm4[14],zero,zero,zero,zero,ymm4[15],zero,zero,zero,zero,ymm4[16],zero,zero,zero,zero,ymm4[17],zero,zero,zero,zero,ymm4[18],zero2644; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [4,0,5,5,5,5,0,6]2645; AVX512DQ-FCP-NEXT: vpermd %ymm4, %ymm9, %ymm92646; AVX512DQ-FCP-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm9, %ymm92647; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm9, %zmm8, %zmm82648; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm5 & mem)2649; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[26],zero,ymm2[28],zero,zero,ymm2[27],zero,ymm2[29],zero,ymm2[31],zero,zero,ymm2[30],zero2650; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u],zero,ymm3[26],zero,ymm3[28,u],zero,ymm3[u],zero,ymm3[29],zero,ymm3[31,u],zero,ymm3[30]2651; AVX512DQ-FCP-NEXT: vpor %ymm2, %ymm3, %ymm22652; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]2653; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm0[27],zero,zero,ymm0[26],zero,ymm0[28],zero,ymm0[30],zero,zero,ymm0[29],zero,ymm0[31],zero,zero2654; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm1[27,u],zero,ymm1[26],zero,ymm1[28],zero,ymm1[30,u],zero,ymm1[29],zero,ymm1[31,u]2655; AVX512DQ-FCP-NEXT: vpor %ymm0, %ymm1, %ymm02656; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]2657; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm6 & (ymm0 ^ ymm2))2658; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [6,6,6,0,7,7,7,7]2659; AVX512DQ-FCP-NEXT: vpermd %ymm4, %ymm1, %ymm12660; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} ymm1 = ymm1 ^ (mem & (ymm1 ^ ymm0))2661; AVX512DQ-FCP-NEXT: vmovdqa %ymm1, 128(%r9)2662; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm8, 64(%r9)2663; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm7, (%r9)2664; AVX512DQ-FCP-NEXT: vzeroupper2665; AVX512DQ-FCP-NEXT: retq2666;2667; AVX512BW-LABEL: store_i8_stride5_vf32:2668; AVX512BW: # %bb.0:2669; AVX512BW-NEXT: vmovdqa (%rdi), %ymm42670; AVX512BW-NEXT: vmovdqa (%rsi), %ymm52671; AVX512BW-NEXT: vmovdqa (%rdx), %ymm12672; AVX512BW-NEXT: vmovdqa (%rcx), %ymm22673; AVX512BW-NEXT: vmovdqa (%r8), %ymm02674; AVX512BW-NEXT: vmovdqa (%rdi), %xmm32675; AVX512BW-NEXT: vpshufb {{.*#+}} xmm6 = xmm3[8],zero,xmm3[u,7],zero,xmm3[9],zero,xmm3[u],zero,xmm3[u,10],zero,xmm3[12],zero,xmm3[u,11]2676; AVX512BW-NEXT: vmovdqa (%rsi), %xmm72677; AVX512BW-NEXT: vpshufb {{.*#+}} xmm8 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero2678; AVX512BW-NEXT: vpor %xmm6, %xmm8, %xmm62679; AVX512BW-NEXT: vmovdqa (%rdx), %xmm82680; AVX512BW-NEXT: vmovdqa (%rcx), %xmm92681; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm10 = 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]2682; AVX512BW-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]2683; AVX512BW-NEXT: vinserti32x4 $2, %xmm6, %zmm10, %zmm62684; AVX512BW-NEXT: vpermq {{.*#+}} zmm6 = zmm6[0,0,1,1,4,4,5,5]2685; AVX512BW-NEXT: vpshufb {{.*#+}} xmm9 = zero,xmm9[6],zero,xmm9[8,u],zero,xmm9[7],zero,xmm9[9],zero,xmm9[11,u],zero,xmm9[10],zero,xmm9[12]2686; AVX512BW-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[6],zero,xmm8[8],zero,xmm8[u,7],zero,xmm8[9],zero,xmm8[11],zero,xmm8[u,10],zero,xmm8[12],zero2687; AVX512BW-NEXT: vpor %xmm9, %xmm8, %xmm82688; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm3 = xmm3[0],xmm7[0],xmm3[1],xmm7[1],xmm3[2],xmm7[2],xmm3[3],xmm7[3],xmm3[4],xmm7[4],xmm3[5],xmm7[5],xmm3[6],xmm7[6],xmm3[7],xmm7[7]2689; AVX512BW-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]2690; AVX512BW-NEXT: vinserti32x4 $2, %xmm8, %zmm3, %zmm32691; AVX512BW-NEXT: vpermq {{.*#+}} zmm3 = zmm3[0,0,1,1,4,4,5,5]2692; AVX512BW-NEXT: movabsq $3570337559743967628, %rax # imm = 0x318C631818C6318C2693; AVX512BW-NEXT: kmovq %rax, %k12694; AVX512BW-NEXT: vmovdqu8 %zmm6, %zmm3 {%k1}2695; AVX512BW-NEXT: vmovdqa (%r8), %xmm62696; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]2697; AVX512BW-NEXT: vpermd %zmm6, %zmm7, %zmm62698; AVX512BW-NEXT: movabsq $595056260442243600, %rax # imm = 0x8421084210842102699; AVX512BW-NEXT: kmovq %rax, %k12700; AVX512BW-NEXT: vmovdqu8 %zmm6, %zmm3 {%k1}2701; AVX512BW-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,ymm1[12,13],zero,zero,zero,zero,ymm1[14],zero,zero,zero,ymm1[14,15],zero,zero,zero,zero,ymm1[16],zero,zero,zero,ymm1[16,17],zero,zero,zero,zero,ymm1[18],zero,zero,zero2702; AVX512BW-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,ymm2[13],zero,zero,zero,zero,ymm2[14],zero,zero,zero,zero,ymm2[15],zero,zero,zero,zero,ymm2[16],zero,zero,zero,zero,ymm2[17],zero,zero,zero,zero,ymm2[18],zero,zero2703; AVX512BW-NEXT: vpor %ymm6, %ymm7, %ymm62704; AVX512BW-NEXT: vpshufb {{.*#+}} ymm7 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm1[21],zero,ymm1[21,20],zero,ymm1[22],zero,ymm1[24],zero,ymm1[22,23],zero,ymm1[25]2705; AVX512BW-NEXT: vpshufb {{.*#+}} ymm8 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero2706; AVX512BW-NEXT: vpor %ymm7, %ymm8, %ymm72707; AVX512BW-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]2708; AVX512BW-NEXT: vinserti64x4 $1, %ymm7, %zmm6, %zmm62709; AVX512BW-NEXT: vpmovsxbd {{.*#+}} ymm7 = [3,3,3,0,4,4,4,4]2710; AVX512BW-NEXT: vpermd %ymm4, %ymm7, %ymm72711; AVX512BW-NEXT: movl $138547332, %eax # imm = 0x84210842712; AVX512BW-NEXT: kmovd %eax, %k12713; AVX512BW-NEXT: vpshufb {{.*#+}} ymm7 {%k1} = ymm5[u,u,13,u,u,u,u,14,u,u,u,u,15,u,u,u,u,16,u,u,u,u,17,u,u,u,u,18,u,u,u,u]2714; AVX512BW-NEXT: vpshufb {{.*#+}} ymm8 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm5[21],zero,zero,ymm5[20],zero,ymm5[22],zero,ymm5[24],zero,zero,ymm5[23],zero,ymm5[25],zero2715; AVX512BW-NEXT: vpshufb {{.*#+}} ymm9 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero,ymm4[25],zero,zero2716; AVX512BW-NEXT: vpor %ymm8, %ymm9, %ymm82717; AVX512BW-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]2718; AVX512BW-NEXT: vinserti64x4 $1, %ymm8, %zmm7, %zmm72719; AVX512BW-NEXT: movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C63182720; AVX512BW-NEXT: kmovq %rax, %k12721; AVX512BW-NEXT: vmovdqu8 %zmm6, %zmm7 {%k1}2722; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm6 = [3,3,3,3,0,4,4,4,4,6,5,5,5,5,4,6]2723; AVX512BW-NEXT: vpermd %zmm0, %zmm6, %zmm62724; AVX512BW-NEXT: movabsq $1190112520884487201, %rax # imm = 0x10842108421084212725; AVX512BW-NEXT: kmovq %rax, %k12726; AVX512BW-NEXT: vmovdqu8 %zmm6, %zmm7 {%k1}2727; AVX512BW-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u,u,26,u,28,u,u,u,u,29,u,31,u,u,30]2728; AVX512BW-NEXT: vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]2729; AVX512BW-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]2730; AVX512BW-NEXT: movl $1251232404, %eax # imm = 0x4A944A942731; AVX512BW-NEXT: kmovd %eax, %k12732; AVX512BW-NEXT: vmovdqu8 %ymm4, %ymm5 {%k1}2733; AVX512BW-NEXT: vpermq {{.*#+}} ymm4 = ymm5[2,2,3,3]2734; AVX512BW-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25,u,27,u,u,26,u,28,u,30,u,u,29,u,31,u]2735; AVX512BW-NEXT: vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]2736; AVX512BW-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,3,3,6,6,7,7]2737; AVX512BW-NEXT: movl $693250386, %eax # imm = 0x295229522738; AVX512BW-NEXT: kmovd %eax, %k12739; AVX512BW-NEXT: vmovdqu8 %ymm1, %ymm2 {%k1}2740; AVX512BW-NEXT: vpermq {{.*#+}} ymm1 = ymm2[2,2,3,3]2741; AVX512BW-NEXT: movl $415641996, %eax # imm = 0x18C6318C2742; AVX512BW-NEXT: kmovd %eax, %k12743; AVX512BW-NEXT: vmovdqu8 %ymm4, %ymm1 {%k1}2744; AVX512BW-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,2,3,3,6,6,7,7]2745; AVX512BW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]2746; AVX512BW-NEXT: movl $-2078209982, %eax # imm = 0x842108422747; AVX512BW-NEXT: kmovd %eax, %k12748; AVX512BW-NEXT: vmovdqu8 %ymm0, %ymm1 {%k1}2749; AVX512BW-NEXT: vmovdqa %ymm1, 128(%r9)2750; AVX512BW-NEXT: vmovdqa64 %zmm7, 64(%r9)2751; AVX512BW-NEXT: vmovdqa64 %zmm3, (%r9)2752; AVX512BW-NEXT: vzeroupper2753; AVX512BW-NEXT: retq2754;2755; AVX512BW-FCP-LABEL: store_i8_stride5_vf32:2756; AVX512BW-FCP: # %bb.0:2757; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %ymm12758; AVX512BW-FCP-NEXT: vmovdqa (%rsi), %ymm32759; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %ymm02760; AVX512BW-FCP-NEXT: vmovdqa (%rcx), %ymm22761; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm42762; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm4[8],zero,xmm4[u,7],zero,xmm4[9],zero,xmm4[u],zero,xmm4[u,10],zero,xmm4[12],zero,xmm4[u,11]2763; AVX512BW-FCP-NEXT: vmovdqa (%rsi), %xmm62764; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm7 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero2765; AVX512BW-FCP-NEXT: vpor %xmm5, %xmm7, %xmm52766; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm72767; AVX512BW-FCP-NEXT: vmovdqa (%rcx), %xmm82768; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm9 = 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]2769; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]2770; AVX512BW-FCP-NEXT: vinserti32x4 $2, %xmm5, %zmm9, %zmm52771; AVX512BW-FCP-NEXT: vpermq {{.*#+}} zmm5 = zmm5[0,0,1,1,4,4,5,5]2772; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm8 = zero,xmm8[6],zero,xmm8[8,u],zero,xmm8[7],zero,xmm8[9],zero,xmm8[11,u],zero,xmm8[10],zero,xmm8[12]2773; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm7[6],zero,xmm7[8],zero,xmm7[u,7],zero,xmm7[9],zero,xmm7[11],zero,xmm7[u,10],zero,xmm7[12],zero2774; AVX512BW-FCP-NEXT: vpor %xmm7, %xmm8, %xmm72775; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3],xmm4[4],xmm6[4],xmm4[5],xmm6[5],xmm4[6],xmm6[6],xmm4[7],xmm6[7]2776; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]2777; AVX512BW-FCP-NEXT: vinserti32x4 $2, %xmm7, %zmm4, %zmm42778; AVX512BW-FCP-NEXT: vpermq {{.*#+}} zmm4 = zmm4[0,0,1,1,4,4,5,5]2779; AVX512BW-FCP-NEXT: movabsq $3570337559743967628, %rax # imm = 0x318C631818C6318C2780; AVX512BW-FCP-NEXT: kmovq %rax, %k12781; AVX512BW-FCP-NEXT: vmovdqu8 %zmm5, %zmm4 {%k1}2782; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = mem[0,1,2,3,0,1,2,3]2783; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [0,0,0,0,0,0,1,1,9,9,10,10,10,10,10,10]2784; AVX512BW-FCP-NEXT: vpermd %zmm5, %zmm6, %zmm62785; AVX512BW-FCP-NEXT: movabsq $595056260442243600, %rax # imm = 0x8421084210842102786; AVX512BW-FCP-NEXT: kmovq %rax, %k12787; AVX512BW-FCP-NEXT: vmovdqu8 %zmm6, %zmm4 {%k1}2788; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,ymm0[12,13],zero,zero,zero,zero,ymm0[14],zero,zero,zero,ymm0[14,15],zero,zero,zero,zero,ymm0[16],zero,zero,zero,ymm0[16,17],zero,zero,zero,zero,ymm0[18],zero,zero,zero2789; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,ymm2[13],zero,zero,zero,zero,ymm2[14],zero,zero,zero,zero,ymm2[15],zero,zero,zero,zero,ymm2[16],zero,zero,zero,zero,ymm2[17],zero,zero,zero,zero,ymm2[18],zero,zero2790; AVX512BW-FCP-NEXT: vpor %ymm6, %ymm7, %ymm62791; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm0[21],zero,ymm0[21,20],zero,ymm0[22],zero,ymm0[24],zero,ymm0[22,23],zero,ymm0[25]2792; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero2793; AVX512BW-FCP-NEXT: vpor %ymm7, %ymm8, %ymm72794; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]2795; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm7, %zmm6, %zmm62796; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} ymm7 = [3,3,3,0,4,4,4,4]2797; AVX512BW-FCP-NEXT: vpermd %ymm1, %ymm7, %ymm72798; AVX512BW-FCP-NEXT: movl $138547332, %eax # imm = 0x84210842799; AVX512BW-FCP-NEXT: kmovd %eax, %k12800; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm7 {%k1} = ymm3[u,u,13,u,u,u,u,14,u,u,u,u,15,u,u,u,u,16,u,u,u,u,17,u,u,u,u,18,u,u,u,u]2801; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm3[21],zero,zero,ymm3[20],zero,ymm3[22],zero,ymm3[24],zero,zero,ymm3[23],zero,ymm3[25],zero2802; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero,ymm1[25],zero,zero2803; AVX512BW-FCP-NEXT: vpor %ymm8, %ymm9, %ymm82804; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]2805; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm7, %zmm72806; AVX512BW-FCP-NEXT: movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C63182807; AVX512BW-FCP-NEXT: kmovq %rax, %k12808; AVX512BW-FCP-NEXT: vmovdqu8 %zmm6, %zmm7 {%k1}2809; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [3,3,3,3,0,4,4,4,12,14,13,13,13,13,12,14]2810; AVX512BW-FCP-NEXT: vpermd %zmm5, %zmm6, %zmm62811; AVX512BW-FCP-NEXT: movabsq $1190112520884487201, %rax # imm = 0x10842108421084212812; AVX512BW-FCP-NEXT: kmovq %rax, %k12813; AVX512BW-FCP-NEXT: vmovdqu8 %zmm6, %zmm7 {%k1}2814; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm3[26],zero,ymm3[28],zero,zero,zero,zero,ymm3[29],zero,ymm3[31],zero,zero,ymm3[30]2815; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm1[26],zero,ymm1[28],zero,zero,ymm1[27],zero,ymm1[29],zero,ymm1[31],zero,zero,ymm1[30],zero2816; AVX512BW-FCP-NEXT: vpor %ymm3, %ymm1, %ymm12817; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]2818; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm2[27],zero,zero,ymm2[26],zero,ymm2[28],zero,ymm2[30],zero,zero,ymm2[29],zero,ymm2[31],zero2819; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm0[27],zero,zero,ymm0[26],zero,ymm0[28],zero,ymm0[30],zero,zero,ymm0[29],zero,ymm0[31],zero,zero2820; AVX512BW-FCP-NEXT: vpor %ymm2, %ymm0, %ymm02821; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]2822; AVX512BW-FCP-NEXT: movl $415641996, %eax # imm = 0x18C6318C2823; AVX512BW-FCP-NEXT: kmovd %eax, %k12824; AVX512BW-FCP-NEXT: vmovdqu8 %ymm1, %ymm0 {%k1}2825; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [6,6,6,6,7,7,7,7]2826; AVX512BW-FCP-NEXT: vpermd %ymm5, %ymm1, %ymm12827; AVX512BW-FCP-NEXT: movl $-2078209982, %eax # imm = 0x842108422828; AVX512BW-FCP-NEXT: kmovd %eax, %k12829; AVX512BW-FCP-NEXT: vmovdqu8 %ymm1, %ymm0 {%k1}2830; AVX512BW-FCP-NEXT: vmovdqa %ymm0, 128(%r9)2831; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, 64(%r9)2832; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, (%r9)2833; AVX512BW-FCP-NEXT: vzeroupper2834; AVX512BW-FCP-NEXT: retq2835;2836; AVX512DQ-BW-LABEL: store_i8_stride5_vf32:2837; AVX512DQ-BW: # %bb.0:2838; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %ymm42839; AVX512DQ-BW-NEXT: vmovdqa (%rsi), %ymm52840; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %ymm12841; AVX512DQ-BW-NEXT: vmovdqa (%rcx), %ymm22842; AVX512DQ-BW-NEXT: vmovdqa (%r8), %ymm02843; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm32844; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm6 = xmm3[8],zero,xmm3[u,7],zero,xmm3[9],zero,xmm3[u],zero,xmm3[u,10],zero,xmm3[12],zero,xmm3[u,11]2845; AVX512DQ-BW-NEXT: vmovdqa (%rsi), %xmm72846; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm8 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero2847; AVX512DQ-BW-NEXT: vpor %xmm6, %xmm8, %xmm62848; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm82849; AVX512DQ-BW-NEXT: vmovdqa (%rcx), %xmm92850; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm10 = 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]2851; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]2852; AVX512DQ-BW-NEXT: vinserti32x4 $2, %xmm6, %zmm10, %zmm62853; AVX512DQ-BW-NEXT: vpermq {{.*#+}} zmm6 = zmm6[0,0,1,1,4,4,5,5]2854; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm9 = zero,xmm9[6],zero,xmm9[8,u],zero,xmm9[7],zero,xmm9[9],zero,xmm9[11,u],zero,xmm9[10],zero,xmm9[12]2855; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[6],zero,xmm8[8],zero,xmm8[u,7],zero,xmm8[9],zero,xmm8[11],zero,xmm8[u,10],zero,xmm8[12],zero2856; AVX512DQ-BW-NEXT: vpor %xmm9, %xmm8, %xmm82857; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm3 = xmm3[0],xmm7[0],xmm3[1],xmm7[1],xmm3[2],xmm7[2],xmm3[3],xmm7[3],xmm3[4],xmm7[4],xmm3[5],xmm7[5],xmm3[6],xmm7[6],xmm3[7],xmm7[7]2858; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]2859; AVX512DQ-BW-NEXT: vinserti32x4 $2, %xmm8, %zmm3, %zmm32860; AVX512DQ-BW-NEXT: vpermq {{.*#+}} zmm3 = zmm3[0,0,1,1,4,4,5,5]2861; AVX512DQ-BW-NEXT: movabsq $3570337559743967628, %rax # imm = 0x318C631818C6318C2862; AVX512DQ-BW-NEXT: kmovq %rax, %k12863; AVX512DQ-BW-NEXT: vmovdqu8 %zmm6, %zmm3 {%k1}2864; AVX512DQ-BW-NEXT: vmovdqa (%r8), %xmm62865; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]2866; AVX512DQ-BW-NEXT: vpermd %zmm6, %zmm7, %zmm62867; AVX512DQ-BW-NEXT: movabsq $595056260442243600, %rax # imm = 0x8421084210842102868; AVX512DQ-BW-NEXT: kmovq %rax, %k12869; AVX512DQ-BW-NEXT: vmovdqu8 %zmm6, %zmm3 {%k1}2870; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,ymm1[12,13],zero,zero,zero,zero,ymm1[14],zero,zero,zero,ymm1[14,15],zero,zero,zero,zero,ymm1[16],zero,zero,zero,ymm1[16,17],zero,zero,zero,zero,ymm1[18],zero,zero,zero2871; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,ymm2[13],zero,zero,zero,zero,ymm2[14],zero,zero,zero,zero,ymm2[15],zero,zero,zero,zero,ymm2[16],zero,zero,zero,zero,ymm2[17],zero,zero,zero,zero,ymm2[18],zero,zero2872; AVX512DQ-BW-NEXT: vpor %ymm6, %ymm7, %ymm62873; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm7 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm1[21],zero,ymm1[21,20],zero,ymm1[22],zero,ymm1[24],zero,ymm1[22,23],zero,ymm1[25]2874; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm8 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero2875; AVX512DQ-BW-NEXT: vpor %ymm7, %ymm8, %ymm72876; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]2877; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm7, %zmm6, %zmm62878; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} ymm7 = [3,3,3,0,4,4,4,4]2879; AVX512DQ-BW-NEXT: vpermd %ymm4, %ymm7, %ymm72880; AVX512DQ-BW-NEXT: movl $138547332, %eax # imm = 0x84210842881; AVX512DQ-BW-NEXT: kmovd %eax, %k12882; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm7 {%k1} = ymm5[u,u,13,u,u,u,u,14,u,u,u,u,15,u,u,u,u,16,u,u,u,u,17,u,u,u,u,18,u,u,u,u]2883; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm8 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm5[21],zero,zero,ymm5[20],zero,ymm5[22],zero,ymm5[24],zero,zero,ymm5[23],zero,ymm5[25],zero2884; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm9 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero,ymm4[25],zero,zero2885; AVX512DQ-BW-NEXT: vpor %ymm8, %ymm9, %ymm82886; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]2887; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm8, %zmm7, %zmm72888; AVX512DQ-BW-NEXT: movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C63182889; AVX512DQ-BW-NEXT: kmovq %rax, %k12890; AVX512DQ-BW-NEXT: vmovdqu8 %zmm6, %zmm7 {%k1}2891; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm6 = [3,3,3,3,0,4,4,4,4,6,5,5,5,5,4,6]2892; AVX512DQ-BW-NEXT: vpermd %zmm0, %zmm6, %zmm62893; AVX512DQ-BW-NEXT: movabsq $1190112520884487201, %rax # imm = 0x10842108421084212894; AVX512DQ-BW-NEXT: kmovq %rax, %k12895; AVX512DQ-BW-NEXT: vmovdqu8 %zmm6, %zmm7 {%k1}2896; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u,u,26,u,28,u,u,u,u,29,u,31,u,u,30]2897; AVX512DQ-BW-NEXT: vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]2898; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]2899; AVX512DQ-BW-NEXT: movl $1251232404, %eax # imm = 0x4A944A942900; AVX512DQ-BW-NEXT: kmovd %eax, %k12901; AVX512DQ-BW-NEXT: vmovdqu8 %ymm4, %ymm5 {%k1}2902; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm4 = ymm5[2,2,3,3]2903; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25,u,27,u,u,26,u,28,u,30,u,u,29,u,31,u]2904; AVX512DQ-BW-NEXT: vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]2905; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[2,2,3,3,6,6,7,7]2906; AVX512DQ-BW-NEXT: movl $693250386, %eax # imm = 0x295229522907; AVX512DQ-BW-NEXT: kmovd %eax, %k12908; AVX512DQ-BW-NEXT: vmovdqu8 %ymm1, %ymm2 {%k1}2909; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm1 = ymm2[2,2,3,3]2910; AVX512DQ-BW-NEXT: movl $415641996, %eax # imm = 0x18C6318C2911; AVX512DQ-BW-NEXT: kmovd %eax, %k12912; AVX512DQ-BW-NEXT: vmovdqu8 %ymm4, %ymm1 {%k1}2913; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,2,3,3,6,6,7,7]2914; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]2915; AVX512DQ-BW-NEXT: movl $-2078209982, %eax # imm = 0x842108422916; AVX512DQ-BW-NEXT: kmovd %eax, %k12917; AVX512DQ-BW-NEXT: vmovdqu8 %ymm0, %ymm1 {%k1}2918; AVX512DQ-BW-NEXT: vmovdqa %ymm1, 128(%r9)2919; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, 64(%r9)2920; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, (%r9)2921; AVX512DQ-BW-NEXT: vzeroupper2922; AVX512DQ-BW-NEXT: retq2923;2924; AVX512DQ-BW-FCP-LABEL: store_i8_stride5_vf32:2925; AVX512DQ-BW-FCP: # %bb.0:2926; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %ymm12927; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rsi), %ymm32928; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %ymm02929; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rcx), %ymm22930; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm42931; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm4[8],zero,xmm4[u,7],zero,xmm4[9],zero,xmm4[u],zero,xmm4[u,10],zero,xmm4[12],zero,xmm4[u,11]2932; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rsi), %xmm62933; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm7 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero2934; AVX512DQ-BW-FCP-NEXT: vpor %xmm5, %xmm7, %xmm52935; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm72936; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rcx), %xmm82937; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm9 = 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]2938; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]2939; AVX512DQ-BW-FCP-NEXT: vinserti32x4 $2, %xmm5, %zmm9, %zmm52940; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} zmm5 = zmm5[0,0,1,1,4,4,5,5]2941; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm8 = zero,xmm8[6],zero,xmm8[8,u],zero,xmm8[7],zero,xmm8[9],zero,xmm8[11,u],zero,xmm8[10],zero,xmm8[12]2942; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm7[6],zero,xmm7[8],zero,xmm7[u,7],zero,xmm7[9],zero,xmm7[11],zero,xmm7[u,10],zero,xmm7[12],zero2943; AVX512DQ-BW-FCP-NEXT: vpor %xmm7, %xmm8, %xmm72944; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3],xmm4[4],xmm6[4],xmm4[5],xmm6[5],xmm4[6],xmm6[6],xmm4[7],xmm6[7]2945; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]2946; AVX512DQ-BW-FCP-NEXT: vinserti32x4 $2, %xmm7, %zmm4, %zmm42947; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} zmm4 = zmm4[0,0,1,1,4,4,5,5]2948; AVX512DQ-BW-FCP-NEXT: movabsq $3570337559743967628, %rax # imm = 0x318C631818C6318C2949; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k12950; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm5, %zmm4 {%k1}2951; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = mem[0,1,2,3,0,1,2,3]2952; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [0,0,0,0,0,0,1,1,9,9,10,10,10,10,10,10]2953; AVX512DQ-BW-FCP-NEXT: vpermd %zmm5, %zmm6, %zmm62954; AVX512DQ-BW-FCP-NEXT: movabsq $595056260442243600, %rax # imm = 0x8421084210842102955; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k12956; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm6, %zmm4 {%k1}2957; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,ymm0[12,13],zero,zero,zero,zero,ymm0[14],zero,zero,zero,ymm0[14,15],zero,zero,zero,zero,ymm0[16],zero,zero,zero,ymm0[16,17],zero,zero,zero,zero,ymm0[18],zero,zero,zero2958; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,ymm2[13],zero,zero,zero,zero,ymm2[14],zero,zero,zero,zero,ymm2[15],zero,zero,zero,zero,ymm2[16],zero,zero,zero,zero,ymm2[17],zero,zero,zero,zero,ymm2[18],zero,zero2959; AVX512DQ-BW-FCP-NEXT: vpor %ymm6, %ymm7, %ymm62960; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm0[21],zero,ymm0[21,20],zero,ymm0[22],zero,ymm0[24],zero,ymm0[22,23],zero,ymm0[25]2961; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero2962; AVX512DQ-BW-FCP-NEXT: vpor %ymm7, %ymm8, %ymm72963; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]2964; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm7, %zmm6, %zmm62965; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} ymm7 = [3,3,3,0,4,4,4,4]2966; AVX512DQ-BW-FCP-NEXT: vpermd %ymm1, %ymm7, %ymm72967; AVX512DQ-BW-FCP-NEXT: movl $138547332, %eax # imm = 0x84210842968; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k12969; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm7 {%k1} = ymm3[u,u,13,u,u,u,u,14,u,u,u,u,15,u,u,u,u,16,u,u,u,u,17,u,u,u,u,18,u,u,u,u]2970; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm3[21],zero,zero,ymm3[20],zero,ymm3[22],zero,ymm3[24],zero,zero,ymm3[23],zero,ymm3[25],zero2971; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero,ymm1[25],zero,zero2972; AVX512DQ-BW-FCP-NEXT: vpor %ymm8, %ymm9, %ymm82973; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]2974; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm7, %zmm72975; AVX512DQ-BW-FCP-NEXT: movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C63182976; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k12977; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm6, %zmm7 {%k1}2978; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm6 = [3,3,3,3,0,4,4,4,12,14,13,13,13,13,12,14]2979; AVX512DQ-BW-FCP-NEXT: vpermd %zmm5, %zmm6, %zmm62980; AVX512DQ-BW-FCP-NEXT: movabsq $1190112520884487201, %rax # imm = 0x10842108421084212981; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k12982; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm6, %zmm7 {%k1}2983; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm3[26],zero,ymm3[28],zero,zero,zero,zero,ymm3[29],zero,ymm3[31],zero,zero,ymm3[30]2984; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm1[26],zero,ymm1[28],zero,zero,ymm1[27],zero,ymm1[29],zero,ymm1[31],zero,zero,ymm1[30],zero2985; AVX512DQ-BW-FCP-NEXT: vpor %ymm3, %ymm1, %ymm12986; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]2987; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm2[27],zero,zero,ymm2[26],zero,ymm2[28],zero,ymm2[30],zero,zero,ymm2[29],zero,ymm2[31],zero2988; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm0[27],zero,zero,ymm0[26],zero,ymm0[28],zero,ymm0[30],zero,zero,ymm0[29],zero,ymm0[31],zero,zero2989; AVX512DQ-BW-FCP-NEXT: vpor %ymm2, %ymm0, %ymm02990; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]2991; AVX512DQ-BW-FCP-NEXT: movl $415641996, %eax # imm = 0x18C6318C2992; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k12993; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %ymm1, %ymm0 {%k1}2994; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [6,6,6,6,7,7,7,7]2995; AVX512DQ-BW-FCP-NEXT: vpermd %ymm5, %ymm1, %ymm12996; AVX512DQ-BW-FCP-NEXT: movl $-2078209982, %eax # imm = 0x842108422997; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k12998; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %ymm1, %ymm0 {%k1}2999; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm0, 128(%r9)3000; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, 64(%r9)3001; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, (%r9)3002; AVX512DQ-BW-FCP-NEXT: vzeroupper3003; AVX512DQ-BW-FCP-NEXT: retq3004 %in.vec0 = load <32 x i8>, ptr %in.vecptr0, align 643005 %in.vec1 = load <32 x i8>, ptr %in.vecptr1, align 643006 %in.vec2 = load <32 x i8>, ptr %in.vecptr2, align 643007 %in.vec3 = load <32 x i8>, ptr %in.vecptr3, align 643008 %in.vec4 = load <32 x i8>, ptr %in.vecptr4, align 643009 %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>3010 %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>3011 %3 = 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>3012 %4 = shufflevector <32 x i8> %in.vec4, <32 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 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>3013 %5 = shufflevector <128 x i8> %3, <128 x i8> %4, <160 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159>3014 %interleaved.vec = shufflevector <160 x i8> %5, <160 x i8> poison, <160 x i32> <i32 0, i32 32, i32 64, i32 96, i32 128, i32 1, i32 33, i32 65, i32 97, i32 129, i32 2, i32 34, i32 66, i32 98, i32 130, i32 3, i32 35, i32 67, i32 99, i32 131, i32 4, i32 36, i32 68, i32 100, i32 132, i32 5, i32 37, i32 69, i32 101, i32 133, i32 6, i32 38, i32 70, i32 102, i32 134, i32 7, i32 39, i32 71, i32 103, i32 135, i32 8, i32 40, i32 72, i32 104, i32 136, i32 9, i32 41, i32 73, i32 105, i32 137, i32 10, i32 42, i32 74, i32 106, i32 138, i32 11, i32 43, i32 75, i32 107, i32 139, i32 12, i32 44, i32 76, i32 108, i32 140, i32 13, i32 45, i32 77, i32 109, i32 141, i32 14, i32 46, i32 78, i32 110, i32 142, i32 15, i32 47, i32 79, i32 111, i32 143, i32 16, i32 48, i32 80, i32 112, i32 144, i32 17, i32 49, i32 81, i32 113, i32 145, i32 18, i32 50, i32 82, i32 114, i32 146, i32 19, i32 51, i32 83, i32 115, i32 147, i32 20, i32 52, i32 84, i32 116, i32 148, i32 21, i32 53, i32 85, i32 117, i32 149, i32 22, i32 54, i32 86, i32 118, i32 150, i32 23, i32 55, i32 87, i32 119, i32 151, i32 24, i32 56, i32 88, i32 120, i32 152, i32 25, i32 57, i32 89, i32 121, i32 153, i32 26, i32 58, i32 90, i32 122, i32 154, i32 27, i32 59, i32 91, i32 123, i32 155, i32 28, i32 60, i32 92, i32 124, i32 156, i32 29, i32 61, i32 93, i32 125, i32 157, i32 30, i32 62, i32 94, i32 126, i32 158, i32 31, i32 63, i32 95, i32 127, i32 159>3015 store <160 x i8> %interleaved.vec, ptr %out.vec, align 643016 ret void3017}3018 3019define void @store_i8_stride5_vf64(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {3020; SSE-LABEL: store_i8_stride5_vf64:3021; SSE: # %bb.0:3022; SSE-NEXT: subq $504, %rsp # imm = 0x1F83023; SSE-NEXT: movdqa (%rdi), %xmm73024; SSE-NEXT: movdqa (%rsi), %xmm93025; SSE-NEXT: movdqa 16(%rsi), %xmm143026; SSE-NEXT: movdqa (%rdx), %xmm03027; SSE-NEXT: movdqa %xmm0, (%rsp) # 16-byte Spill3028; SSE-NEXT: movdqa 16(%rdx), %xmm113029; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3030; SSE-NEXT: movdqa (%rcx), %xmm103031; SSE-NEXT: movdqa 16(%rcx), %xmm63032; SSE-NEXT: movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3033; SSE-NEXT: movdqa (%r8), %xmm133034; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]3035; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]3036; SSE-NEXT: movdqa {{.*#+}} xmm12 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]3037; SSE-NEXT: pand %xmm12, %xmm03038; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm10[2,1,2,3]3039; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]3040; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,3,0,3]3041; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]3042; SSE-NEXT: movdqa %xmm12, %xmm43043; SSE-NEXT: pandn %xmm1, %xmm43044; SSE-NEXT: por %xmm0, %xmm43045; SSE-NEXT: movdqa {{.*#+}} xmm8 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]3046; SSE-NEXT: pand %xmm8, %xmm43047; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,2,2]3048; SSE-NEXT: movdqa {{.*#+}} xmm2 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]3049; SSE-NEXT: pand %xmm2, %xmm03050; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm9[0,1,2,1]3051; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]3052; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3053; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[3,1,0,3,4,5,6,7]3054; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,0,1,0]3055; SSE-NEXT: movdqa %xmm2, %xmm53056; SSE-NEXT: pandn %xmm1, %xmm53057; SSE-NEXT: por %xmm0, %xmm53058; SSE-NEXT: movdqa %xmm8, %xmm03059; SSE-NEXT: pandn %xmm5, %xmm03060; SSE-NEXT: por %xmm4, %xmm03061; SSE-NEXT: movdqa {{.*#+}} xmm15 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]3062; SSE-NEXT: pand %xmm15, %xmm03063; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm13[1,1,2,2]3064; SSE-NEXT: movdqa %xmm15, %xmm33065; SSE-NEXT: pandn %xmm1, %xmm33066; SSE-NEXT: por %xmm0, %xmm33067; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3068; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm11[3,3,3,3,4,5,6,7]3069; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]3070; SSE-NEXT: pand %xmm12, %xmm03071; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm6[2,1,2,3]3072; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]3073; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,3,0,3]3074; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]3075; SSE-NEXT: movdqa %xmm12, %xmm53076; SSE-NEXT: pandn %xmm1, %xmm53077; SSE-NEXT: por %xmm0, %xmm53078; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm14[0,1,2,1]3079; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]3080; SSE-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3081; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]3082; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,0]3083; SSE-NEXT: movdqa %xmm2, %xmm13084; SSE-NEXT: pandn %xmm0, %xmm13085; SSE-NEXT: movdqa 16(%rdi), %xmm03086; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3087; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]3088; SSE-NEXT: pand %xmm2, %xmm03089; SSE-NEXT: por %xmm0, %xmm13090; SSE-NEXT: movdqa %xmm8, %xmm03091; SSE-NEXT: pandn %xmm1, %xmm03092; SSE-NEXT: pand %xmm8, %xmm53093; SSE-NEXT: por %xmm5, %xmm03094; SSE-NEXT: movdqa 16(%r8), %xmm13095; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3096; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]3097; SSE-NEXT: movdqa %xmm15, %xmm33098; SSE-NEXT: pandn %xmm1, %xmm33099; SSE-NEXT: pand %xmm15, %xmm03100; SSE-NEXT: por %xmm0, %xmm33101; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3102; SSE-NEXT: movdqa 32(%rcx), %xmm03103; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3104; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]3105; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]3106; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,0,3]3107; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]3108; SSE-NEXT: movdqa %xmm12, %xmm13109; SSE-NEXT: pandn %xmm0, %xmm13110; SSE-NEXT: movdqa 32(%rdx), %xmm03111; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3112; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]3113; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]3114; SSE-NEXT: pand %xmm12, %xmm03115; SSE-NEXT: por %xmm0, %xmm13116; SSE-NEXT: movdqa 32(%rsi), %xmm113117; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm11[0,1,2,1]3118; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]3119; SSE-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3120; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]3121; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,0]3122; SSE-NEXT: movdqa %xmm2, %xmm53123; SSE-NEXT: pandn %xmm0, %xmm53124; SSE-NEXT: movdqa 32(%rdi), %xmm03125; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3126; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]3127; SSE-NEXT: pand %xmm2, %xmm03128; SSE-NEXT: por %xmm0, %xmm53129; SSE-NEXT: movdqa %xmm8, %xmm03130; SSE-NEXT: pandn %xmm5, %xmm03131; SSE-NEXT: pand %xmm8, %xmm13132; SSE-NEXT: por %xmm1, %xmm03133; SSE-NEXT: movdqa 32(%r8), %xmm13134; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3135; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]3136; SSE-NEXT: movdqa %xmm15, %xmm33137; SSE-NEXT: pandn %xmm1, %xmm33138; SSE-NEXT: pand %xmm15, %xmm03139; SSE-NEXT: por %xmm0, %xmm33140; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3141; SSE-NEXT: movdqa 48(%rcx), %xmm03142; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3143; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]3144; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]3145; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,0,3]3146; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]3147; SSE-NEXT: movdqa %xmm12, %xmm13148; SSE-NEXT: pandn %xmm0, %xmm13149; SSE-NEXT: movdqa 48(%rdx), %xmm03150; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3151; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]3152; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]3153; SSE-NEXT: pand %xmm12, %xmm03154; SSE-NEXT: por %xmm0, %xmm13155; SSE-NEXT: movdqa 48(%rsi), %xmm03156; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3157; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]3158; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]3159; SSE-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3160; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]3161; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,0]3162; SSE-NEXT: movdqa %xmm2, %xmm53163; SSE-NEXT: pandn %xmm0, %xmm53164; SSE-NEXT: movdqa 48(%rdi), %xmm03165; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3166; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]3167; SSE-NEXT: pand %xmm2, %xmm03168; SSE-NEXT: por %xmm0, %xmm53169; SSE-NEXT: movdqa %xmm8, %xmm03170; SSE-NEXT: pandn %xmm5, %xmm03171; SSE-NEXT: pand %xmm8, %xmm13172; SSE-NEXT: por %xmm1, %xmm03173; SSE-NEXT: movdqa 48(%r8), %xmm13174; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3175; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]3176; SSE-NEXT: movdqa %xmm15, %xmm53177; SSE-NEXT: pandn %xmm1, %xmm53178; SSE-NEXT: pand %xmm15, %xmm03179; SSE-NEXT: por %xmm0, %xmm53180; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3181; SSE-NEXT: movdqa %xmm10, %xmm03182; 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]3183; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3184; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]3185; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,0,4,5,6,7]3186; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]3187; SSE-NEXT: movdqa %xmm15, %xmm13188; SSE-NEXT: pandn %xmm0, %xmm13189; SSE-NEXT: movdqa (%rsp), %xmm3 # 16-byte Reload3190; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm3[1,2,2,3,4,5,6,7]3191; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]3192; SSE-NEXT: pand %xmm15, %xmm03193; SSE-NEXT: por %xmm0, %xmm13194; SSE-NEXT: movdqa {{.*#+}} xmm6 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]3195; SSE-NEXT: movdqa %xmm6, %xmm03196; SSE-NEXT: pandn %xmm1, %xmm03197; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3198; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm7[1,1,1,1]3199; SSE-NEXT: movdqa %xmm2, %xmm53200; SSE-NEXT: pandn %xmm1, %xmm53201; SSE-NEXT: movdqa %xmm9, %xmm13202; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm9[0],xmm1[1],xmm9[1],xmm1[2],xmm9[2],xmm1[3],xmm9[3],xmm1[4],xmm9[4],xmm1[5],xmm9[5],xmm1[6],xmm9[6],xmm1[7],xmm9[7]3203; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3204; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,1,2,3]3205; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[3,1,0,3,4,5,6,7]3206; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,6]3207; SSE-NEXT: pand %xmm2, %xmm13208; SSE-NEXT: por %xmm5, %xmm13209; SSE-NEXT: pand %xmm6, %xmm13210; SSE-NEXT: por %xmm0, %xmm13211; SSE-NEXT: movdqa {{.*#+}} xmm4 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]3212; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3213; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm13[0,0,1,1]3214; SSE-NEXT: movdqa %xmm4, %xmm03215; SSE-NEXT: pandn %xmm5, %xmm03216; SSE-NEXT: pand %xmm4, %xmm13217; SSE-NEXT: por %xmm1, %xmm03218; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3219; SSE-NEXT: punpckhbw {{.*#+}} xmm9 = xmm9[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3220; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3221; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm9[0,1,2,1]3222; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,2,2,2,4,5,6,7]3223; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,5,4,7]3224; SSE-NEXT: movdqa %xmm4, %xmm53225; SSE-NEXT: pandn %xmm1, %xmm53226; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm7[2,2,3,3]3227; SSE-NEXT: pand %xmm4, %xmm13228; SSE-NEXT: por %xmm1, %xmm53229; SSE-NEXT: movdqa {{.*#+}} xmm8 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]3230; SSE-NEXT: movdqa %xmm8, %xmm73231; SSE-NEXT: pandn %xmm5, %xmm73232; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm3[0,1,2,3,5,6,6,7]3233; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[2,2,2,2]3234; SSE-NEXT: movdqa %xmm2, %xmm93235; SSE-NEXT: pandn %xmm5, %xmm93236; SSE-NEXT: punpckhbw {{.*#+}} xmm10 = xmm10[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3237; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3238; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm10[0,1,2,1]3239; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[1,1,2,3,4,5,6,7]3240; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,7,6,4]3241; SSE-NEXT: pand %xmm2, %xmm53242; SSE-NEXT: por %xmm9, %xmm53243; SSE-NEXT: pand %xmm8, %xmm53244; SSE-NEXT: por %xmm7, %xmm53245; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm13[2,2,2,2]3246; SSE-NEXT: movdqa %xmm12, %xmm03247; SSE-NEXT: pandn %xmm7, %xmm03248; SSE-NEXT: pand %xmm12, %xmm53249; SSE-NEXT: por %xmm5, %xmm03250; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3251; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload3252; SSE-NEXT: movdqa %xmm13, %xmm03253; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm13[0],xmm0[1],xmm13[1],xmm0[2],xmm13[2],xmm0[3],xmm13[3],xmm0[4],xmm13[4],xmm0[5],xmm13[5],xmm0[6],xmm13[6],xmm0[7],xmm13[7]3254; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3255; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm0[2,1,2,3]3256; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[0,3,2,0,4,5,6,7]3257; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,5,5]3258; SSE-NEXT: movdqa %xmm15, %xmm73259; SSE-NEXT: pandn %xmm5, %xmm73260; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload3261; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm10[1,2,2,3,4,5,6,7]3262; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]3263; SSE-NEXT: pand %xmm15, %xmm53264; SSE-NEXT: por %xmm5, %xmm73265; SSE-NEXT: movdqa %xmm6, %xmm53266; SSE-NEXT: pandn %xmm7, %xmm53267; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3268; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm0[1,1,1,1]3269; SSE-NEXT: movdqa %xmm2, %xmm93270; SSE-NEXT: pandn %xmm7, %xmm93271; SSE-NEXT: movdqa %xmm14, %xmm13272; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm14[0],xmm1[1],xmm14[1],xmm1[2],xmm14[2],xmm1[3],xmm14[3],xmm1[4],xmm14[4],xmm1[5],xmm14[5],xmm1[6],xmm14[6],xmm1[7],xmm14[7]3273; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3274; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm1[2,1,2,3]3275; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[3,1,0,3,4,5,6,7]3276; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,6,6]3277; SSE-NEXT: pand %xmm2, %xmm73278; SSE-NEXT: por %xmm9, %xmm73279; SSE-NEXT: pand %xmm6, %xmm73280; SSE-NEXT: por %xmm5, %xmm73281; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload3282; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,1,1]3283; SSE-NEXT: movdqa %xmm4, %xmm33284; SSE-NEXT: pandn %xmm5, %xmm33285; SSE-NEXT: pand %xmm4, %xmm73286; SSE-NEXT: por %xmm7, %xmm33287; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3288; SSE-NEXT: punpckhbw {{.*#+}} xmm14 = xmm14[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3289; SSE-NEXT: movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3290; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm14[0,1,2,1]3291; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]3292; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,7,5,4,7]3293; SSE-NEXT: movdqa %xmm4, %xmm73294; SSE-NEXT: pandn %xmm5, %xmm73295; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm0[2,2,3,3]3296; SSE-NEXT: pand %xmm4, %xmm53297; SSE-NEXT: por %xmm5, %xmm73298; SSE-NEXT: movdqa %xmm8, %xmm53299; SSE-NEXT: pandn %xmm7, %xmm53300; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm10[0,1,2,3,5,6,6,7]3301; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[2,2,2,2]3302; SSE-NEXT: movdqa %xmm2, %xmm93303; SSE-NEXT: pandn %xmm7, %xmm93304; SSE-NEXT: movdqa %xmm13, %xmm03305; SSE-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm13[8],xmm0[9],xmm13[9],xmm0[10],xmm13[10],xmm0[11],xmm13[11],xmm0[12],xmm13[12],xmm0[13],xmm13[13],xmm0[14],xmm13[14],xmm0[15],xmm13[15]3306; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3307; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm0[0,1,2,1]3308; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[1,1,2,3,4,5,6,7]3309; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,7,6,4]3310; SSE-NEXT: pand %xmm2, %xmm73311; SSE-NEXT: por %xmm9, %xmm73312; SSE-NEXT: pand %xmm8, %xmm73313; SSE-NEXT: por %xmm5, %xmm73314; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm1[2,2,2,2]3315; SSE-NEXT: movdqa %xmm12, %xmm03316; SSE-NEXT: pandn %xmm5, %xmm03317; SSE-NEXT: pand %xmm12, %xmm73318; SSE-NEXT: por %xmm7, %xmm03319; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3320; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload3321; SSE-NEXT: movdqa %xmm3, %xmm03322; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]3323; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3324; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm0[2,1,2,3]3325; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[0,3,2,0,4,5,6,7]3326; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,5,5]3327; SSE-NEXT: movdqa %xmm15, %xmm73328; SSE-NEXT: pandn %xmm5, %xmm73329; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload3330; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm10[1,2,2,3,4,5,6,7]3331; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]3332; SSE-NEXT: pand %xmm15, %xmm53333; SSE-NEXT: por %xmm5, %xmm73334; SSE-NEXT: movdqa %xmm6, %xmm53335; SSE-NEXT: pandn %xmm7, %xmm53336; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload3337; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm13[1,1,1,1]3338; SSE-NEXT: movdqa %xmm2, %xmm93339; SSE-NEXT: pandn %xmm7, %xmm93340; SSE-NEXT: movdqa %xmm11, %xmm143341; SSE-NEXT: punpcklbw {{.*#+}} xmm14 = 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]3342; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm14[2,1,2,3]3343; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[3,1,0,3,4,5,6,7]3344; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,6,6]3345; SSE-NEXT: pand %xmm2, %xmm73346; SSE-NEXT: por %xmm9, %xmm73347; SSE-NEXT: pand %xmm6, %xmm73348; SSE-NEXT: por %xmm5, %xmm73349; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3350; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm0[0,0,1,1]3351; SSE-NEXT: movdqa %xmm4, %xmm13352; SSE-NEXT: pandn %xmm5, %xmm13353; SSE-NEXT: pand %xmm4, %xmm73354; SSE-NEXT: por %xmm7, %xmm13355; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3356; SSE-NEXT: punpckhbw {{.*#+}} xmm11 = xmm11[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3357; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3358; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm11[0,1,2,1]3359; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]3360; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,7,5,4,7]3361; SSE-NEXT: movdqa %xmm4, %xmm73362; SSE-NEXT: pandn %xmm5, %xmm73363; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm13[2,2,3,3]3364; SSE-NEXT: pand %xmm4, %xmm53365; SSE-NEXT: por %xmm5, %xmm73366; SSE-NEXT: movdqa %xmm8, %xmm53367; SSE-NEXT: pandn %xmm7, %xmm53368; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm10[0,1,2,3,5,6,6,7]3369; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[2,2,2,2]3370; SSE-NEXT: movdqa %xmm2, %xmm93371; SSE-NEXT: pandn %xmm7, %xmm93372; SSE-NEXT: movdqa %xmm3, %xmm13373; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm3[8],xmm1[9],xmm3[9],xmm1[10],xmm3[10],xmm1[11],xmm3[11],xmm1[12],xmm3[12],xmm1[13],xmm3[13],xmm1[14],xmm3[14],xmm1[15],xmm3[15]3374; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3375; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm1[0,1,2,1]3376; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[1,1,2,3,4,5,6,7]3377; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,7,6,4]3378; SSE-NEXT: pand %xmm2, %xmm73379; SSE-NEXT: por %xmm9, %xmm73380; SSE-NEXT: pand %xmm8, %xmm73381; SSE-NEXT: por %xmm5, %xmm73382; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm0[2,2,2,2]3383; SSE-NEXT: movdqa %xmm12, %xmm03384; SSE-NEXT: pandn %xmm5, %xmm03385; SSE-NEXT: pand %xmm12, %xmm73386; SSE-NEXT: por %xmm7, %xmm03387; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3388; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3389; SSE-NEXT: movdqa %xmm0, %xmm13390; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = 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]3391; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3392; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm1[2,1,2,3]3393; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[0,3,2,0,4,5,6,7]3394; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,5,5]3395; SSE-NEXT: movdqa %xmm15, %xmm73396; SSE-NEXT: pandn %xmm5, %xmm73397; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload3398; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm10[1,2,2,3,4,5,6,7]3399; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]3400; SSE-NEXT: pand %xmm15, %xmm53401; SSE-NEXT: por %xmm5, %xmm73402; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload3403; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm11[1,1,1,1]3404; SSE-NEXT: movdqa %xmm2, %xmm93405; SSE-NEXT: pandn %xmm5, %xmm93406; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload3407; SSE-NEXT: movdqa %xmm3, %xmm13408; 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]3409; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3410; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm1[2,1,2,3]3411; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[3,1,0,3,4,5,6,7]3412; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,6,6]3413; SSE-NEXT: pand %xmm2, %xmm53414; SSE-NEXT: por %xmm9, %xmm53415; SSE-NEXT: pand %xmm6, %xmm53416; SSE-NEXT: pandn %xmm7, %xmm63417; SSE-NEXT: por %xmm5, %xmm63418; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload3419; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm9[0,0,1,1]3420; SSE-NEXT: movdqa %xmm4, %xmm13421; SSE-NEXT: pandn %xmm5, %xmm13422; SSE-NEXT: pand %xmm4, %xmm63423; SSE-NEXT: por %xmm6, %xmm13424; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3425; SSE-NEXT: movdqa %xmm3, %xmm13426; SSE-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm3[8],xmm1[9],xmm3[9],xmm1[10],xmm3[10],xmm1[11],xmm3[11],xmm1[12],xmm3[12],xmm1[13],xmm3[13],xmm1[14],xmm3[14],xmm1[15],xmm3[15]3427; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3428; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,1,2,1]3429; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]3430; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,7,5,4,7]3431; SSE-NEXT: movdqa %xmm4, %xmm63432; SSE-NEXT: pandn %xmm5, %xmm63433; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm11[2,2,3,3]3434; SSE-NEXT: pand %xmm4, %xmm53435; SSE-NEXT: por %xmm5, %xmm63436; SSE-NEXT: movdqa %xmm8, %xmm53437; SSE-NEXT: pandn %xmm6, %xmm53438; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm10[0,1,2,3,5,6,6,7]3439; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[2,2,2,2]3440; SSE-NEXT: movdqa %xmm2, %xmm73441; SSE-NEXT: pandn %xmm6, %xmm73442; SSE-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]3443; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3444; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm0[0,1,2,1]3445; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm6[1,1,2,3,4,5,6,7]3446; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,7,6,4]3447; SSE-NEXT: pand %xmm2, %xmm63448; SSE-NEXT: por %xmm7, %xmm63449; SSE-NEXT: pand %xmm8, %xmm63450; SSE-NEXT: por %xmm5, %xmm63451; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm9[2,2,2,2]3452; SSE-NEXT: movdqa %xmm12, %xmm03453; SSE-NEXT: pandn %xmm5, %xmm03454; SSE-NEXT: pand %xmm12, %xmm63455; SSE-NEXT: por %xmm6, %xmm03456; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3457; SSE-NEXT: pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload3458; SSE-NEXT: # xmm5 = mem[1,0,2,3,4,5,6,7]3459; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]3460; SSE-NEXT: movdqa %xmm4, %xmm63461; SSE-NEXT: pandn %xmm5, %xmm63462; SSE-NEXT: movdqa (%rsp), %xmm3 # 16-byte Reload3463; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm3[1,0,2,3,4,5,6,7]3464; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]3465; SSE-NEXT: pand %xmm4, %xmm53466; SSE-NEXT: por %xmm5, %xmm63467; SSE-NEXT: movdqa %xmm8, %xmm53468; SSE-NEXT: pandn %xmm6, %xmm53469; SSE-NEXT: pshuflw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload3470; SSE-NEXT: # xmm6 = mem[0,1,2,2,4,5,6,7]3471; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[0,0,1,3]3472; SSE-NEXT: movdqa %xmm12, %xmm73473; SSE-NEXT: pandn %xmm6, %xmm73474; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload3475; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm9[0,0,0,0]3476; SSE-NEXT: pand %xmm12, %xmm63477; SSE-NEXT: por %xmm6, %xmm73478; SSE-NEXT: pand %xmm8, %xmm73479; SSE-NEXT: por %xmm5, %xmm73480; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3481; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm0[0,0,0,0]3482; SSE-NEXT: movdqa %xmm2, %xmm13483; SSE-NEXT: pandn %xmm5, %xmm13484; SSE-NEXT: pand %xmm2, %xmm73485; SSE-NEXT: por %xmm7, %xmm13486; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3487; SSE-NEXT: pshufhw $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload3488; SSE-NEXT: # xmm5 = mem[0,1,2,3,5,7,6,7]3489; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,2,3,2]3490; SSE-NEXT: movdqa %xmm2, %xmm63491; SSE-NEXT: pandn %xmm5, %xmm63492; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm3[0,1,2,3,7,6,6,7]3493; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[2,2,2,2]3494; SSE-NEXT: pand %xmm2, %xmm53495; SSE-NEXT: por %xmm5, %xmm63496; SSE-NEXT: movdqa {{.*#+}} xmm1 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]3497; SSE-NEXT: movdqa %xmm1, %xmm53498; SSE-NEXT: pandn %xmm6, %xmm53499; SSE-NEXT: pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload3500; SSE-NEXT: # xmm6 = mem[0,1,2,3,7,5,6,6]3501; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[2,3,2,2]3502; SSE-NEXT: movdqa %xmm15, %xmm73503; SSE-NEXT: pandn %xmm6, %xmm73504; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm9[3,3,3,3]3505; SSE-NEXT: pand %xmm15, %xmm63506; SSE-NEXT: por %xmm6, %xmm73507; SSE-NEXT: pand %xmm1, %xmm73508; SSE-NEXT: por %xmm5, %xmm73509; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm0[3,3,3,3]3510; SSE-NEXT: movdqa {{.*#+}} xmm9 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]3511; SSE-NEXT: movdqa %xmm9, %xmm133512; SSE-NEXT: pandn %xmm5, %xmm133513; SSE-NEXT: pand %xmm9, %xmm73514; SSE-NEXT: por %xmm7, %xmm133515; SSE-NEXT: pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload3516; SSE-NEXT: # xmm5 = mem[1,0,2,3,4,5,6,7]3517; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]3518; SSE-NEXT: movdqa %xmm4, %xmm63519; SSE-NEXT: pandn %xmm5, %xmm63520; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload3521; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm11[1,0,2,3,4,5,6,7]3522; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]3523; SSE-NEXT: pand %xmm4, %xmm53524; SSE-NEXT: por %xmm5, %xmm63525; SSE-NEXT: movdqa %xmm8, %xmm53526; SSE-NEXT: pandn %xmm6, %xmm53527; SSE-NEXT: pshuflw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload3528; SSE-NEXT: # xmm6 = mem[0,1,2,2,4,5,6,7]3529; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[0,0,1,3]3530; SSE-NEXT: movdqa %xmm12, %xmm33531; SSE-NEXT: pandn %xmm6, %xmm33532; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload3533; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm1[0,0,0,0]3534; SSE-NEXT: pand %xmm12, %xmm63535; SSE-NEXT: por %xmm6, %xmm33536; SSE-NEXT: pand %xmm8, %xmm33537; SSE-NEXT: por %xmm5, %xmm33538; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3539; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm0[0,0,0,0]3540; SSE-NEXT: movdqa %xmm2, %xmm103541; SSE-NEXT: pandn %xmm5, %xmm103542; SSE-NEXT: pand %xmm2, %xmm33543; SSE-NEXT: por %xmm3, %xmm103544; SSE-NEXT: pshufhw $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload3545; SSE-NEXT: # xmm3 = mem[0,1,2,3,5,7,6,7]3546; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,3,2]3547; SSE-NEXT: movdqa %xmm2, %xmm53548; SSE-NEXT: pandn %xmm3, %xmm53549; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm11[0,1,2,3,7,6,6,7]3550; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,2,2,2]3551; SSE-NEXT: pand %xmm2, %xmm33552; SSE-NEXT: por %xmm3, %xmm53553; SSE-NEXT: movdqa {{.*#+}} xmm7 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]3554; SSE-NEXT: movdqa %xmm7, %xmm33555; SSE-NEXT: pandn %xmm5, %xmm33556; SSE-NEXT: pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload3557; SSE-NEXT: # xmm5 = mem[0,1,2,3,7,5,6,6]3558; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm5[2,3,2,2]3559; SSE-NEXT: movdqa %xmm15, %xmm63560; SSE-NEXT: pandn %xmm5, %xmm63561; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm1[3,3,3,3]3562; SSE-NEXT: pand %xmm15, %xmm53563; SSE-NEXT: por %xmm5, %xmm63564; SSE-NEXT: pand %xmm7, %xmm63565; SSE-NEXT: por %xmm3, %xmm63566; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm0[3,3,3,3]3567; SSE-NEXT: movdqa %xmm9, %xmm73568; SSE-NEXT: pandn %xmm3, %xmm73569; SSE-NEXT: pand %xmm9, %xmm63570; SSE-NEXT: por %xmm6, %xmm73571; SSE-NEXT: pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload3572; SSE-NEXT: # xmm3 = mem[1,0,2,3,4,5,6,7]3573; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,1,0,1]3574; SSE-NEXT: movdqa %xmm4, %xmm63575; SSE-NEXT: pandn %xmm3, %xmm63576; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload3577; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm5[1,0,2,3,4,5,6,7]3578; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]3579; SSE-NEXT: pand %xmm4, %xmm33580; SSE-NEXT: por %xmm3, %xmm63581; SSE-NEXT: movdqa %xmm8, %xmm33582; SSE-NEXT: pandn %xmm6, %xmm33583; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm14[0,1,2,2,4,5,6,7]3584; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[0,0,1,3]3585; SSE-NEXT: movdqa %xmm12, %xmm113586; SSE-NEXT: pandn %xmm6, %xmm113587; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3588; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm0[0,0,0,0]3589; SSE-NEXT: pand %xmm12, %xmm63590; SSE-NEXT: por %xmm6, %xmm113591; SSE-NEXT: pand %xmm8, %xmm113592; SSE-NEXT: por %xmm3, %xmm113593; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload3594; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm1[0,0,0,0]3595; SSE-NEXT: movdqa %xmm2, %xmm143596; SSE-NEXT: pandn %xmm3, %xmm143597; SSE-NEXT: pand %xmm2, %xmm113598; SSE-NEXT: por %xmm11, %xmm143599; SSE-NEXT: pshufhw $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload3600; SSE-NEXT: # xmm3 = mem[0,1,2,3,5,7,6,7]3601; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,3,2]3602; SSE-NEXT: movdqa %xmm2, %xmm63603; SSE-NEXT: pandn %xmm3, %xmm63604; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm5[0,1,2,3,7,6,6,7]3605; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,2,2,2]3606; SSE-NEXT: pand %xmm2, %xmm33607; SSE-NEXT: por %xmm3, %xmm63608; SSE-NEXT: movdqa {{.*#+}} xmm5 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]3609; SSE-NEXT: movdqa %xmm5, %xmm33610; SSE-NEXT: pandn %xmm6, %xmm33611; SSE-NEXT: pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload3612; SSE-NEXT: # xmm6 = mem[0,1,2,3,7,5,6,6]3613; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[2,3,2,2]3614; SSE-NEXT: movdqa %xmm15, %xmm113615; SSE-NEXT: pandn %xmm6, %xmm113616; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm0[3,3,3,3]3617; SSE-NEXT: pand %xmm15, %xmm63618; SSE-NEXT: por %xmm6, %xmm113619; SSE-NEXT: pand %xmm5, %xmm113620; SSE-NEXT: por %xmm3, %xmm113621; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm1[3,3,3,3]3622; SSE-NEXT: movdqa %xmm9, %xmm63623; SSE-NEXT: pandn %xmm3, %xmm63624; SSE-NEXT: pand %xmm9, %xmm113625; SSE-NEXT: por %xmm11, %xmm63626; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload3627; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm1[1,0,2,3,4,5,6,7]3628; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]3629; SSE-NEXT: pand %xmm4, %xmm33630; SSE-NEXT: pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload3631; SSE-NEXT: # xmm11 = mem[1,0,2,3,4,5,6,7]3632; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm11[0,1,0,1]3633; SSE-NEXT: pandn %xmm11, %xmm43634; SSE-NEXT: por %xmm3, %xmm43635; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload3636; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm5[0,0,0,0]3637; SSE-NEXT: pand %xmm12, %xmm33638; SSE-NEXT: pshuflw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload3639; SSE-NEXT: # xmm11 = mem[0,1,2,2,4,5,6,7]3640; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm11[0,0,1,3]3641; SSE-NEXT: pandn %xmm11, %xmm123642; SSE-NEXT: por %xmm3, %xmm123643; SSE-NEXT: pand %xmm8, %xmm123644; SSE-NEXT: pandn %xmm4, %xmm83645; SSE-NEXT: por %xmm12, %xmm83646; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload3647; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm4[0,0,0,0]3648; SSE-NEXT: movdqa %xmm2, %xmm03649; SSE-NEXT: pandn %xmm3, %xmm03650; SSE-NEXT: pand %xmm2, %xmm83651; SSE-NEXT: por %xmm8, %xmm03652; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,6,6,7]3653; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,2,2]3654; SSE-NEXT: pand %xmm2, %xmm13655; SSE-NEXT: pshufhw $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload3656; SSE-NEXT: # xmm3 = mem[0,1,2,3,5,7,6,7]3657; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,3,2]3658; SSE-NEXT: pandn %xmm3, %xmm23659; SSE-NEXT: por %xmm1, %xmm23660; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[3,3,3,3]3661; SSE-NEXT: pand %xmm15, %xmm13662; SSE-NEXT: pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload3663; SSE-NEXT: # xmm3 = mem[0,1,2,3,7,5,6,6]3664; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,3,2,2]3665; SSE-NEXT: pandn %xmm3, %xmm153666; SSE-NEXT: por %xmm1, %xmm153667; SSE-NEXT: movdqa {{.*#+}} xmm1 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]3668; SSE-NEXT: pand %xmm1, %xmm153669; SSE-NEXT: pandn %xmm2, %xmm13670; SSE-NEXT: por %xmm15, %xmm13671; SSE-NEXT: pand %xmm9, %xmm13672; SSE-NEXT: movdqa %xmm1, %xmm23673; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm4[3,3,3,3]3674; SSE-NEXT: pandn %xmm1, %xmm93675; SSE-NEXT: por %xmm2, %xmm93676; SSE-NEXT: movdqa %xmm9, 304(%r9)3677; SSE-NEXT: movdqa %xmm0, 240(%r9)3678; SSE-NEXT: movdqa %xmm6, 224(%r9)3679; SSE-NEXT: movdqa %xmm14, 160(%r9)3680; SSE-NEXT: movdqa %xmm7, 144(%r9)3681; SSE-NEXT: movdqa %xmm10, 80(%r9)3682; SSE-NEXT: movdqa %xmm13, 64(%r9)3683; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3684; SSE-NEXT: movaps %xmm0, (%r9)3685; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3686; SSE-NEXT: movaps %xmm0, 288(%r9)3687; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3688; SSE-NEXT: movaps %xmm0, 256(%r9)3689; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3690; SSE-NEXT: movaps %xmm0, 208(%r9)3691; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3692; SSE-NEXT: movaps %xmm0, 176(%r9)3693; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3694; SSE-NEXT: movaps %xmm0, 128(%r9)3695; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3696; SSE-NEXT: movaps %xmm0, 96(%r9)3697; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3698; SSE-NEXT: movaps %xmm0, 48(%r9)3699; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3700; SSE-NEXT: movaps %xmm0, 16(%r9)3701; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3702; SSE-NEXT: movaps %xmm0, 272(%r9)3703; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3704; SSE-NEXT: movaps %xmm0, 192(%r9)3705; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3706; SSE-NEXT: movaps %xmm0, 112(%r9)3707; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3708; SSE-NEXT: movaps %xmm0, 32(%r9)3709; SSE-NEXT: addq $504, %rsp # imm = 0x1F83710; SSE-NEXT: retq3711;3712; AVX-LABEL: store_i8_stride5_vf64:3713; AVX: # %bb.0:3714; AVX-NEXT: subq $104, %rsp3715; AVX-NEXT: vmovdqa 48(%rcx), %xmm03716; AVX-NEXT: vmovddup {{.*#+}} xmm14 = [128,6,128,8,0,128,7,128,128,6,128,8,0,128,7,128]3717; AVX-NEXT: # xmm14 = mem[0,0]3718; AVX-NEXT: vpshufb %xmm14, %xmm0, %xmm23719; AVX-NEXT: vmovdqa 48(%rdx), %xmm13720; AVX-NEXT: vpshufb {{.*#+}} xmm3 = xmm1[6],zero,xmm1[u,u,u,7],zero,xmm1[u,u,u,8],zero,xmm1[u,u,u,9]3721; AVX-NEXT: vpor %xmm2, %xmm3, %xmm33722; AVX-NEXT: vpunpcklbw {{.*#+}} xmm9 = 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]3723; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm9[u,6,7,u,u,u,8,9,u,u,u,10,11,u,u,u]3724; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm33725; AVX-NEXT: vmovaps {{.*#+}} ymm2 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0]3726; AVX-NEXT: vandnps %ymm3, %ymm2, %ymm43727; AVX-NEXT: vmovdqa 48(%rsi), %xmm33728; AVX-NEXT: vmovddup {{.*#+}} xmm10 = [128,8,0,128,7,128,9,0,128,8,0,128,7,128,9,0]3729; AVX-NEXT: # xmm10 = mem[0,0]3730; AVX-NEXT: vpshufb %xmm10, %xmm3, %xmm63731; AVX-NEXT: vmovdqa 48(%rdi), %xmm53732; AVX-NEXT: vmovddup {{.*#+}} xmm12 = [8,128,0,7,128,9,128,0,8,128,0,7,128,9,128,0]3733; AVX-NEXT: # xmm12 = mem[0,0]3734; AVX-NEXT: vpshufb %xmm12, %xmm5, %xmm73735; AVX-NEXT: vpor %xmm6, %xmm7, %xmm63736; AVX-NEXT: vpunpcklbw {{.*#+}} xmm7 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3],xmm3[4],xmm5[4],xmm3[5],xmm5[5],xmm3[6],xmm5[6],xmm3[7],xmm5[7]3737; AVX-NEXT: vpshufb {{.*#+}} xmm7 = xmm7[6,u,u,u,9,8,u,u,u,11,10,u,u,u,13,12]3738; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm7, %ymm63739; AVX-NEXT: vandps %ymm2, %ymm6, %ymm63740; AVX-NEXT: vorps %ymm4, %ymm6, %ymm43741; AVX-NEXT: vextractf128 $1, %ymm4, %xmm63742; AVX-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[0,1],zero,xmm6[3,4,5,6],zero,xmm6[8,9,10,11],zero,xmm6[13,14,15]3743; AVX-NEXT: vmovdqa 48(%r8), %xmm73744; AVX-NEXT: vpshufb {{.*#+}} xmm8 = zero,zero,xmm7[6],zero,zero,zero,zero,xmm7[7],zero,zero,zero,zero,xmm7[8],zero,zero,zero3745; AVX-NEXT: vpor %xmm6, %xmm8, %xmm63746; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3747; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[0,1,2],zero,xmm4[4,5,6,7],zero,xmm4[9,10,11,12],zero,xmm4[14,15]3748; AVX-NEXT: vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm7[3],zero,zero,zero,zero,xmm7[4],zero,zero,zero,zero,xmm7[5],zero,zero3749; AVX-NEXT: vpor %xmm6, %xmm4, %xmm43750; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3751; AVX-NEXT: vpunpckhbw {{.*#+}} xmm4 = xmm5[8],xmm3[8],xmm5[9],xmm3[9],xmm5[10],xmm3[10],xmm5[11],xmm3[11],xmm5[12],xmm3[12],xmm5[13],xmm3[13],xmm5[14],xmm3[14],xmm5[15],xmm3[15]3752; AVX-NEXT: vpshufb {{.*#+}} xmm6 = xmm4[u,10,11,u,u,u,12,13,u,u,u,14,15,u,u,u]3753; AVX-NEXT: vmovddup {{.*#+}} xmm8 = [7,0,4,5,8,9,0,6,7,0,4,5,8,9,0,6]3754; AVX-NEXT: # xmm8 = mem[0,0]3755; AVX-NEXT: vpshufb %xmm8, %xmm4, %xmm43756; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm4, %ymm43757; AVX-NEXT: vpunpckhbw {{.*#+}} xmm6 = 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]3758; AVX-NEXT: vpunpckhbw {{.*#+}} xmm0 = 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]3759; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm6[u,u,u,10,11,u,u,u,12,13,u,u,u,14,15,u]3760; AVX-NEXT: vmovddup {{.*#+}} xmm15 = [2,7,6,0,5,4,9,8,2,7,6,0,5,4,9,8]3761; AVX-NEXT: # xmm15 = mem[0,0]3762; AVX-NEXT: vpshufb %xmm15, %xmm0, %xmm03763; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03764; AVX-NEXT: vmovaps {{.*#+}} ymm11 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]3765; AVX-NEXT: vandnps %ymm4, %ymm11, %ymm13766; AVX-NEXT: vandps %ymm0, %ymm11, %ymm03767; AVX-NEXT: vorps %ymm1, %ymm0, %ymm03768; AVX-NEXT: vextractf128 $1, %ymm0, %xmm13769; AVX-NEXT: vpshufb {{.*#+}} xmm1 = zero,xmm1[1,2,3,4],zero,xmm1[6,7,8,9],zero,xmm1[11,12,13,14],zero3770; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm7[12],zero,zero,zero,zero,xmm7[13],zero,zero,zero,zero,xmm7[14],zero,zero,zero,zero,xmm7[15]3771; AVX-NEXT: vpor %xmm4, %xmm1, %xmm13772; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3773; AVX-NEXT: vmovdqa {{.*#+}} xmm13 = [0,128,2,3,4,5,128,7,8,9,10,128,12,13,14,15]3774; AVX-NEXT: vpshufb %xmm13, %xmm0, %xmm03775; AVX-NEXT: vmovdqa {{.*#+}} xmm2 = [128,9,128,128,128,128,10,128,128,128,128,11,128,128,128,128]3776; AVX-NEXT: vpshufb %xmm2, %xmm7, %xmm13777; AVX-NEXT: vpor %xmm1, %xmm0, %xmm03778; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3779; AVX-NEXT: vmovdqa 32(%rsi), %xmm03780; AVX-NEXT: vmovdqa 32(%rdi), %xmm43781; AVX-NEXT: vpshufb %xmm10, %xmm0, %xmm13782; AVX-NEXT: vpshufb %xmm12, %xmm4, %xmm63783; AVX-NEXT: vpor %xmm1, %xmm6, %xmm13784; AVX-NEXT: vpunpckhbw {{.*#+}} xmm12 = xmm4[8],xmm0[8],xmm4[9],xmm0[9],xmm4[10],xmm0[10],xmm4[11],xmm0[11],xmm4[12],xmm0[12],xmm4[13],xmm0[13],xmm4[14],xmm0[14],xmm4[15],xmm0[15]3785; AVX-NEXT: vpshufb %xmm8, %xmm12, %xmm63786; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm1, %ymm63787; AVX-NEXT: vmovdqa 32(%rcx), %xmm13788; AVX-NEXT: vmovdqa 32(%rdx), %xmm83789; AVX-NEXT: vpshufb %xmm14, %xmm1, %xmm103790; AVX-NEXT: vpshufb {{.*#+}} xmm14 = xmm8[6],zero,xmm8[u,u,u,7],zero,xmm8[u,u,u,8],zero,xmm8[u,u,u,9]3791; AVX-NEXT: vpor %xmm10, %xmm14, %xmm103792; AVX-NEXT: vpunpckhbw {{.*#+}} xmm14 = xmm1[8],xmm8[8],xmm1[9],xmm8[9],xmm1[10],xmm8[10],xmm1[11],xmm8[11],xmm1[12],xmm8[12],xmm1[13],xmm8[13],xmm1[14],xmm8[14],xmm1[15],xmm8[15]3793; AVX-NEXT: vpshufb %xmm15, %xmm14, %xmm143794; AVX-NEXT: vinsertf128 $1, %xmm14, %ymm10, %ymm143795; AVX-NEXT: vmovaps {{.*#+}} ymm10 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]3796; AVX-NEXT: vandnps %ymm6, %ymm10, %ymm63797; AVX-NEXT: vandps %ymm10, %ymm14, %ymm143798; AVX-NEXT: vorps %ymm6, %ymm14, %ymm143799; AVX-NEXT: vextractf128 $1, %ymm14, %xmm63800; AVX-NEXT: vpshufb %xmm13, %xmm6, %xmm153801; AVX-NEXT: vmovdqa 32(%r8), %xmm63802; AVX-NEXT: vpshufb %xmm2, %xmm6, %xmm133803; AVX-NEXT: vpor %xmm13, %xmm15, %xmm23804; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3805; AVX-NEXT: vpshufb {{.*#+}} xmm13 = xmm14[0,1],zero,xmm14[3,4,5,6],zero,xmm14[8,9,10,11],zero,xmm14[13,14,15]3806; AVX-NEXT: vpshufb {{.*#+}} xmm14 = zero,zero,xmm6[6],zero,zero,zero,zero,xmm6[7],zero,zero,zero,zero,xmm6[8],zero,zero,zero3807; AVX-NEXT: vpor %xmm14, %xmm13, %xmm23808; AVX-NEXT: vmovdqa %xmm2, (%rsp) # 16-byte Spill3809; AVX-NEXT: vmovddup {{.*#+}} xmm14 = [3,0,0,1,4,5,0,2,3,0,0,1,4,5,0,2]3810; AVX-NEXT: # xmm14 = mem[0,0]3811; AVX-NEXT: vpshufb %xmm14, %xmm9, %xmm23812; AVX-NEXT: vpunpckhbw {{.*#+}} xmm13 = xmm8[8],xmm1[8],xmm8[9],xmm1[9],xmm8[10],xmm1[10],xmm8[11],xmm1[11],xmm8[12],xmm1[12],xmm8[13],xmm1[13],xmm8[14],xmm1[14],xmm8[15],xmm1[15]3813; AVX-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[u,u,u,10,11,u,u,u,12,13,u,u,u,14,15,u]3814; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm13, %ymm23815; AVX-NEXT: vpunpcklbw {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3],xmm5[4],xmm3[4],xmm5[5],xmm3[5],xmm5[6],xmm3[6],xmm5[7],xmm3[7]3816; AVX-NEXT: vmovddup {{.*#+}} xmm13 = [0,1,4,5,0,2,3,6,0,1,4,5,0,2,3,6]3817; AVX-NEXT: # xmm13 = mem[0,0]3818; AVX-NEXT: vpshufb %xmm13, %xmm3, %xmm33819; AVX-NEXT: vmovddup {{.*#+}} xmm15 = [0,10,11,14,15,0,12,13,0,10,11,14,15,0,12,13]3820; AVX-NEXT: # xmm15 = mem[0,0]3821; AVX-NEXT: vpshufb %xmm15, %xmm12, %xmm53822; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm5, %ymm33823; AVX-NEXT: vandnps %ymm2, %ymm10, %ymm23824; AVX-NEXT: vandps %ymm3, %ymm10, %ymm33825; AVX-NEXT: vorps %ymm2, %ymm3, %ymm23826; AVX-NEXT: vextractf128 $1, %ymm2, %xmm33827; AVX-NEXT: vmovdqa {{.*#+}} xmm12 = [0,1,2,3,128,5,6,7,8,128,10,11,12,13,128,15]3828; AVX-NEXT: vpshufb %xmm12, %xmm3, %xmm33829; AVX-NEXT: vmovdqa {{.*#+}} xmm10 = [128,128,128,128,0,128,128,128,128,1,128,128,128,128,2,128]3830; AVX-NEXT: vpshufb %xmm10, %xmm7, %xmm53831; AVX-NEXT: vmovdqa %xmm10, %xmm73832; AVX-NEXT: vpor %xmm5, %xmm3, %xmm33833; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3834; AVX-NEXT: vmovdqa {{.*#+}} xmm5 = [128,1,2,3,4,128,6,7,8,9,128,11,12,13,14,128]3835; AVX-NEXT: vpshufb %xmm5, %xmm2, %xmm23836; AVX-NEXT: vmovdqa {{.*#+}} xmm10 = [12,128,128,128,128,13,128,128,128,128,14,128,128,128,128,15]3837; AVX-NEXT: vpshufb %xmm10, %xmm6, %xmm33838; AVX-NEXT: vpor %xmm3, %xmm2, %xmm23839; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3840; AVX-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]3841; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm1[u,6,7,u,u,u,8,9,u,u,u,10,11,u,u,u]3842; AVX-NEXT: vpshufb %xmm14, %xmm1, %xmm13843; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm13844; AVX-NEXT: vpunpcklbw {{.*#+}} xmm2 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]3845; AVX-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3],xmm4[4],xmm0[4],xmm4[5],xmm0[5],xmm4[6],xmm0[6],xmm4[7],xmm0[7]3846; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[6,u,u,u,9,8,u,u,u,11,10,u,u,u,13,12]3847; AVX-NEXT: vpshufb %xmm13, %xmm0, %xmm03848; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm03849; AVX-NEXT: vandnps %ymm1, %ymm11, %ymm13850; AVX-NEXT: vandps %ymm0, %ymm11, %ymm03851; AVX-NEXT: vorps %ymm1, %ymm0, %ymm03852; AVX-NEXT: vextractf128 $1, %ymm0, %xmm13853; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,2],zero,xmm1[4,5,6,7],zero,xmm1[9,10,11,12],zero,xmm1[14,15]3854; AVX-NEXT: vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm6[3],zero,zero,zero,zero,xmm6[4],zero,zero,zero,zero,xmm6[5],zero,zero3855; AVX-NEXT: vpor %xmm2, %xmm1, %xmm13856; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3857; AVX-NEXT: vpshufb %xmm12, %xmm0, %xmm03858; AVX-NEXT: vpshufb %xmm7, %xmm6, %xmm13859; AVX-NEXT: vpor %xmm1, %xmm0, %xmm03860; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3861; AVX-NEXT: vmovdqa 16(%rsi), %xmm83862; AVX-NEXT: vmovdqa 16(%rdi), %xmm63863; AVX-NEXT: vpunpckhbw {{.*#+}} xmm0 = 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]3864; AVX-NEXT: vpshufb %xmm15, %xmm0, %xmm13865; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[u,u,4,5,u,u,u,6,7,u,u,u,8,9,u,u]3866; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm03867; AVX-NEXT: vmovdqa 16(%rcx), %xmm13868; AVX-NEXT: vmovdqa 16(%rdx), %xmm23869; AVX-NEXT: vpunpckhbw {{.*#+}} xmm3 = 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]3870; AVX-NEXT: vmovddup {{.*#+}} xmm12 = [12,13,0,10,11,14,15,0,12,13,0,10,11,14,15,0]3871; AVX-NEXT: # xmm12 = mem[0,0]3872; AVX-NEXT: vpshufb %xmm12, %xmm3, %xmm33873; AVX-NEXT: vpunpckhbw {{.*#+}} xmm4 = 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]3874; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[2,u,u,u,5,4,u,u,u,7,6,u,u,u,9,8]3875; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm33876; AVX-NEXT: vandnps %ymm0, %ymm11, %ymm03877; AVX-NEXT: vandps %ymm3, %ymm11, %ymm33878; AVX-NEXT: vorps %ymm0, %ymm3, %ymm33879; AVX-NEXT: vextractf128 $1, %ymm3, %xmm03880; AVX-NEXT: vpshufb %xmm5, %xmm0, %xmm43881; AVX-NEXT: vmovdqa %xmm5, %xmm113882; AVX-NEXT: vmovdqa 16(%r8), %xmm03883; AVX-NEXT: vpshufb %xmm10, %xmm0, %xmm73884; AVX-NEXT: vpor %xmm7, %xmm4, %xmm43885; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3886; AVX-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[0],zero,xmm3[2,3,4,5],zero,xmm3[7,8,9,10],zero,xmm3[12,13,14,15]3887; AVX-NEXT: vpshufb {{.*#+}} xmm4 = zero,xmm0[9],zero,zero,zero,zero,xmm0[10],zero,zero,zero,zero,xmm0[11],zero,zero,zero,zero3888; AVX-NEXT: vpor %xmm4, %xmm3, %xmm33889; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3890; AVX-NEXT: vmovdqa (%rcx), %xmm93891; AVX-NEXT: vmovdqa (%rdx), %xmm73892; AVX-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm7[8],xmm9[8],xmm7[9],xmm9[9],xmm7[10],xmm9[10],xmm7[11],xmm9[11],xmm7[12],xmm9[12],xmm7[13],xmm9[13],xmm7[14],xmm9[14],xmm7[15],xmm9[15]3893; AVX-NEXT: vpshufb %xmm12, %xmm3, %xmm33894; AVX-NEXT: vpunpcklbw {{.*#+}} xmm4 = 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]3895; AVX-NEXT: vpshufb %xmm14, %xmm4, %xmm53896; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm3, %ymm123897; AVX-NEXT: vpunpcklbw {{.*#+}} xmm3 = 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]3898; AVX-NEXT: vpshufb %xmm13, %xmm3, %xmm133899; AVX-NEXT: vmovdqa (%rsi), %xmm53900; AVX-NEXT: vmovdqa (%rdi), %xmm33901; AVX-NEXT: vpunpckhbw {{.*#+}} xmm10 = 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]3902; AVX-NEXT: vpshufb %xmm15, %xmm10, %xmm143903; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm14, %ymm133904; AVX-NEXT: vmovaps {{.*#+}} ymm14 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]3905; AVX-NEXT: vandnps %ymm12, %ymm14, %ymm123906; AVX-NEXT: vandps %ymm14, %ymm13, %ymm133907; AVX-NEXT: vorps %ymm12, %ymm13, %ymm123908; AVX-NEXT: vextractf128 $1, %ymm12, %xmm133909; AVX-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[0,1,2,3],zero,xmm13[5,6,7,8],zero,xmm13[10,11,12,13],zero,xmm13[15]3910; AVX-NEXT: vpshufb {{.*#+}} xmm14 = zero,zero,zero,zero,xmm0[0],zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,xmm0[2],zero3911; AVX-NEXT: vpor %xmm14, %xmm13, %xmm133912; AVX-NEXT: vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3913; AVX-NEXT: vpshufb %xmm11, %xmm12, %xmm123914; AVX-NEXT: vmovdqa (%r8), %xmm133915; AVX-NEXT: vpshufb {{.*#+}} xmm15 = xmm13[12],zero,zero,zero,zero,xmm13[13],zero,zero,zero,zero,xmm13[14],zero,zero,zero,zero,xmm13[15]3916; AVX-NEXT: vpor %xmm15, %xmm12, %xmm113917; AVX-NEXT: vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3918; AVX-NEXT: vmovddup {{.*#+}} xmm11 = [128,6,128,8,0,128,7,128,128,6,128,8,0,128,7,128]3919; AVX-NEXT: # xmm11 = mem[0,0]3920; AVX-NEXT: vpshufb %xmm11, %xmm1, %xmm13921; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[6],zero,xmm2[u,u,u,7],zero,xmm2[u,u,u,8],zero,xmm2[u,u,u,9]3922; AVX-NEXT: vpor %xmm1, %xmm2, %xmm13923; AVX-NEXT: vmovddup {{.*#+}} xmm11 = [0,6,7,10,11,0,8,9,0,6,7,10,11,0,8,9]3924; AVX-NEXT: # xmm11 = mem[0,0]3925; AVX-NEXT: vpshufb %xmm11, %xmm4, %xmm23926; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm13927; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm8[u,u,u],zero,xmm8[7,u,u,u],zero,xmm8[8,u,u,u],zero,xmm8[9,u]3928; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm6[u,u,u,7],zero,xmm6[u,u,u,8],zero,xmm6[u,u,u,9],zero,xmm6[u]3929; AVX-NEXT: vpor %xmm2, %xmm4, %xmm23930; AVX-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]3931; AVX-NEXT: vmovddup {{.*#+}} xmm6 = [6,11,10,0,9,8,13,12,6,11,10,0,9,8,13,12]3932; AVX-NEXT: # xmm6 = mem[0,0]3933; AVX-NEXT: vpshufb %xmm6, %xmm4, %xmm43934; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm4, %ymm23935; AVX-NEXT: vmovaps {{.*#+}} ymm4 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0]3936; AVX-NEXT: vandnps %ymm1, %ymm4, %ymm13937; AVX-NEXT: vandps %ymm4, %ymm2, %ymm23938; AVX-NEXT: vorps %ymm1, %ymm2, %ymm23939; AVX-NEXT: vextractf128 $1, %ymm2, %xmm13940; AVX-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,128,3,4,5,6,128,8,9,10,11,128,13,14,15]3941; AVX-NEXT: vpshufb %xmm14, %xmm1, %xmm13942; AVX-NEXT: vmovdqa {{.*#+}} xmm15 = [128,128,6,128,128,128,128,7,128,128,128,128,8,128,128,128]3943; AVX-NEXT: vpshufb %xmm15, %xmm0, %xmm43944; AVX-NEXT: vpor %xmm4, %xmm1, %xmm123945; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [0,1,2,128,4,5,6,7,128,9,10,11,12,128,14,15]3946; AVX-NEXT: vpshufb %xmm1, %xmm2, %xmm23947; AVX-NEXT: vmovdqa {{.*#+}} xmm8 = [128,128,128,3,128,128,128,128,4,128,128,128,128,5,128,128]3948; AVX-NEXT: vpshufb %xmm8, %xmm0, %xmm03949; AVX-NEXT: vpor %xmm0, %xmm2, %xmm03950; AVX-NEXT: vpunpcklbw {{.*#+}} xmm2 = xmm7[0],xmm9[0],xmm7[1],xmm9[1],xmm7[2],xmm9[2],xmm7[3],xmm9[3],xmm7[4],xmm9[4],xmm7[5],xmm9[5],xmm7[6],xmm9[6],xmm7[7],xmm9[7]3951; AVX-NEXT: vpshufb %xmm11, %xmm2, %xmm43952; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[u,u,0,1,u,u,u,2,3,u,u,u,4,5,u,u]3953; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm2, %ymm23954; AVX-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3],xmm5[4],xmm3[4],xmm5[5],xmm3[5],xmm5[6],xmm3[6],xmm5[7],xmm3[7]3955; AVX-NEXT: vpshufb %xmm6, %xmm4, %xmm43956; AVX-NEXT: vpunpcklbw {{.*#+}} xmm6 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3],xmm3[4],xmm5[4],xmm3[5],xmm5[5],xmm3[6],xmm5[6],xmm3[7],xmm5[7]3957; AVX-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[0,1,u,u,u,2,3,u,u,u,4,5,u,u,u,6]3958; AVX-NEXT: vinsertf128 $1, %xmm4, %ymm6, %ymm43959; AVX-NEXT: vmovaps {{.*#+}} ymm6 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]3960; AVX-NEXT: vandnps %ymm2, %ymm6, %ymm23961; AVX-NEXT: vandps %ymm6, %ymm4, %ymm43962; AVX-NEXT: vorps %ymm2, %ymm4, %ymm43963; AVX-NEXT: vextractf128 $1, %ymm4, %xmm23964; AVX-NEXT: vpshufb %xmm1, %xmm2, %xmm23965; AVX-NEXT: vpshufb %xmm8, %xmm13, %xmm63966; AVX-NEXT: vpor %xmm6, %xmm2, %xmm23967; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[0,1,2,3],zero,xmm4[5,6,7,8],zero,xmm4[10,11,12,13],zero,xmm4[15]3968; AVX-NEXT: vpshufb {{.*#+}} xmm6 = zero,zero,zero,zero,xmm13[0],zero,zero,zero,zero,xmm13[1],zero,zero,zero,zero,xmm13[2],zero3969; AVX-NEXT: vpor %xmm6, %xmm4, %xmm43970; AVX-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[u,u,u],zero,xmm5[7,u,u,u],zero,xmm5[8,u,u,u],zero,xmm5[9,u]3971; AVX-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,7],zero,xmm3[u,u,u,8],zero,xmm3[u,u,u,9],zero,xmm3[u]3972; AVX-NEXT: vpor %xmm5, %xmm3, %xmm33973; AVX-NEXT: vpshufb {{.*#+}} xmm5 = xmm10[u,u,4,5,u,u,u,6,7,u,u,u,8,9,u,u]3974; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm3, %ymm33975; AVX-NEXT: vpshufb {{.*#+}} xmm5 = zero,xmm9[6,u,u,u],zero,xmm9[7,u,u,u],zero,xmm9[8,u,u,u],zero3976; AVX-NEXT: vpshufb {{.*#+}} xmm6 = xmm7[6],zero,xmm7[u,u,u,7],zero,xmm7[u,u,u,8],zero,xmm7[u,u,u,9]3977; AVX-NEXT: vpor %xmm5, %xmm6, %xmm53978; AVX-NEXT: vpunpckhbw {{.*#+}} xmm6 = xmm9[8],xmm7[8],xmm9[9],xmm7[9],xmm9[10],xmm7[10],xmm9[11],xmm7[11],xmm9[12],xmm7[12],xmm9[13],xmm7[13],xmm9[14],xmm7[14],xmm9[15],xmm7[15]3979; AVX-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[2,u,u,u,5,4,u,u,u,7,6,u,u,u,9,8]3980; AVX-NEXT: vinsertf128 $1, %xmm6, %ymm5, %ymm53981; AVX-NEXT: vmovaps {{.*#+}} ymm1 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]3982; AVX-NEXT: vandnps %ymm3, %ymm1, %ymm33983; AVX-NEXT: vandps %ymm1, %ymm5, %ymm53984; AVX-NEXT: vorps %ymm3, %ymm5, %ymm33985; AVX-NEXT: vextractf128 $1, %ymm3, %xmm53986; AVX-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[0],zero,xmm5[2,3,4,5],zero,xmm5[7,8,9,10],zero,xmm5[12,13,14,15]3987; AVX-NEXT: vpshufb {{.*#+}} xmm6 = zero,xmm13[9],zero,zero,zero,zero,xmm13[10],zero,zero,zero,zero,xmm13[11],zero,zero,zero,zero3988; AVX-NEXT: vpor %xmm6, %xmm5, %xmm53989; AVX-NEXT: vpshufb %xmm14, %xmm3, %xmm33990; AVX-NEXT: vpshufb %xmm15, %xmm13, %xmm63991; AVX-NEXT: vpor %xmm6, %xmm3, %xmm33992; AVX-NEXT: vmovdqa %xmm3, 32(%r9)3993; AVX-NEXT: vmovdqa %xmm5, 48(%r9)3994; AVX-NEXT: vmovdqa %xmm4, (%r9)3995; AVX-NEXT: vmovdqa %xmm2, 16(%r9)3996; AVX-NEXT: vmovdqa %xmm0, 96(%r9)3997; AVX-NEXT: vmovdqa %xmm12, 112(%r9)3998; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3999; AVX-NEXT: vmovaps %xmm0, 64(%r9)4000; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4001; AVX-NEXT: vmovaps %xmm0, 80(%r9)4002; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4003; AVX-NEXT: vmovaps %xmm0, 128(%r9)4004; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4005; AVX-NEXT: vmovaps %xmm0, 144(%r9)4006; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4007; AVX-NEXT: vmovaps %xmm0, 160(%r9)4008; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4009; AVX-NEXT: vmovaps %xmm0, 176(%r9)4010; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4011; AVX-NEXT: vmovaps %xmm0, 224(%r9)4012; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4013; AVX-NEXT: vmovaps %xmm0, 240(%r9)4014; AVX-NEXT: vmovaps (%rsp), %xmm0 # 16-byte Reload4015; AVX-NEXT: vmovaps %xmm0, 192(%r9)4016; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4017; AVX-NEXT: vmovaps %xmm0, 208(%r9)4018; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4019; AVX-NEXT: vmovaps %xmm0, 288(%r9)4020; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4021; AVX-NEXT: vmovaps %xmm0, 304(%r9)4022; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4023; AVX-NEXT: vmovaps %xmm0, 256(%r9)4024; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4025; AVX-NEXT: vmovaps %xmm0, 272(%r9)4026; AVX-NEXT: addq $104, %rsp4027; AVX-NEXT: vzeroupper4028; AVX-NEXT: retq4029;4030; AVX2-LABEL: store_i8_stride5_vf64:4031; AVX2: # %bb.0:4032; AVX2-NEXT: subq $248, %rsp4033; AVX2-NEXT: vmovdqa 32(%rdi), %ymm134034; AVX2-NEXT: vmovdqa (%rcx), %xmm14035; AVX2-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4036; AVX2-NEXT: vmovdqa 32(%rcx), %xmm74037; AVX2-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4038; AVX2-NEXT: vmovdqa {{.*#+}} xmm0 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]4039; AVX2-NEXT: vpshufb %xmm0, %xmm1, %xmm14040; AVX2-NEXT: vmovdqa (%rdx), %xmm34041; AVX2-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4042; AVX2-NEXT: vmovdqa 32(%rdx), %xmm104043; AVX2-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4044; AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]4045; AVX2-NEXT: vpshufb %xmm2, %xmm3, %xmm34046; AVX2-NEXT: vpor %xmm1, %xmm3, %xmm14047; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]4048; AVX2-NEXT: vmovdqa (%rdi), %xmm54049; AVX2-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4050; AVX2-NEXT: vmovdqa {{.*#+}} xmm3 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]4051; AVX2-NEXT: vpshufb %xmm3, %xmm5, %xmm54052; AVX2-NEXT: vmovdqa (%rsi), %xmm64053; AVX2-NEXT: vmovdqa {{.*#+}} xmm8 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]4054; AVX2-NEXT: vpshufb %xmm8, %xmm6, %xmm94055; AVX2-NEXT: vpor %xmm5, %xmm9, %xmm54056; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]4057; AVX2-NEXT: vmovdqa {{.*#+}} ymm9 = [255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255]4058; AVX2-NEXT: vpblendvb %ymm9, %ymm1, %ymm5, %ymm14059; AVX2-NEXT: vmovdqa (%r8), %xmm54060; AVX2-NEXT: vmovdqa %xmm5, (%rsp) # 16-byte Spill4061; AVX2-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[1,1,2,2]4062; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm5[0,1,1,1]4063; AVX2-NEXT: vmovdqa {{.*#+}} ymm12 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]4064; AVX2-NEXT: vpblendvb %ymm12, %ymm1, %ymm5, %ymm14065; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4066; AVX2-NEXT: vmovdqa 32(%rdi), %xmm54067; AVX2-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4068; AVX2-NEXT: vpshufb %xmm0, %xmm7, %xmm04069; AVX2-NEXT: vpshufb %xmm2, %xmm10, %xmm14070; AVX2-NEXT: vpor %xmm0, %xmm1, %xmm04071; AVX2-NEXT: vmovdqa 32(%rsi), %xmm24072; AVX2-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4073; AVX2-NEXT: vpshufb %xmm3, %xmm5, %xmm14074; AVX2-NEXT: vpshufb %xmm8, %xmm2, %xmm24075; AVX2-NEXT: vpor %xmm1, %xmm2, %xmm14076; AVX2-NEXT: vmovdqa 32(%rsi), %ymm114077; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]4078; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]4079; AVX2-NEXT: vpblendvb %ymm9, %ymm0, %ymm1, %ymm04080; AVX2-NEXT: vmovdqa 32(%r8), %xmm14081; AVX2-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4082; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]4083; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,1,1]4084; AVX2-NEXT: vpblendvb %ymm12, %ymm0, %ymm1, %ymm04085; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4086; AVX2-NEXT: vmovdqa {{.*#+}} ymm15 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,21,128,19,20,128,22,128,24,128,22,23,128,25,128,23]4087; AVX2-NEXT: vpshufb %ymm15, %ymm13, %ymm14088; AVX2-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4089; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128]4090; AVX2-NEXT: # ymm4 = mem[0,1,0,1]4091; AVX2-NEXT: vpshufb %ymm4, %ymm11, %ymm34092; AVX2-NEXT: vpor %ymm1, %ymm3, %ymm14093; AVX2-NEXT: vmovdqa 32(%rdx), %ymm124094; AVX2-NEXT: vmovdqa 32(%rcx), %ymm144095; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]4096; AVX2-NEXT: # ymm3 = mem[0,1,0,1]4097; AVX2-NEXT: vpshufb %ymm3, %ymm14, %ymm84098; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25]4099; AVX2-NEXT: vpshufb %ymm5, %ymm12, %ymm104100; AVX2-NEXT: vpor %ymm8, %ymm10, %ymm84101; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]4102; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]4103; AVX2-NEXT: vmovdqa {{.*#+}} ymm10 = [255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0]4104; AVX2-NEXT: vpblendvb %ymm10, %ymm1, %ymm8, %ymm24105; AVX2-NEXT: vmovdqa (%rdi), %ymm94106; AVX2-NEXT: vpshufb %ymm15, %ymm9, %ymm14107; AVX2-NEXT: vmovdqa (%rsi), %ymm154108; AVX2-NEXT: vpshufb %ymm4, %ymm15, %ymm44109; AVX2-NEXT: vpor %ymm1, %ymm4, %ymm44110; AVX2-NEXT: vmovdqa (%rcx), %ymm74111; AVX2-NEXT: vpshufb %ymm3, %ymm7, %ymm04112; AVX2-NEXT: vmovdqa (%rdx), %ymm34113; AVX2-NEXT: vpshufb %ymm5, %ymm3, %ymm54114; AVX2-NEXT: vpor %ymm0, %ymm5, %ymm04115; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]4116; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]4117; AVX2-NEXT: vpblendvb %ymm10, %ymm4, %ymm0, %ymm04118; AVX2-NEXT: vmovdqa 32(%r8), %ymm104119; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm10[0,2,1,1,4,6,5,5]4120; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,3,3,2]4121; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]4122; AVX2-NEXT: vpblendvb %ymm5, %ymm2, %ymm4, %ymm14123; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4124; AVX2-NEXT: vmovdqa (%r8), %ymm84125; AVX2-NEXT: vpshufd {{.*#+}} ymm4 = ymm8[0,2,1,1,4,6,5,5]4126; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,3,3,2]4127; AVX2-NEXT: vpblendvb %ymm5, %ymm0, %ymm4, %ymm04128; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4129; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm2 = [3,3,3,0,4,4,4,4]4130; AVX2-NEXT: vpermd %ymm13, %ymm2, %ymm44131; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm5 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]4132; AVX2-NEXT: vpshufb %ymm5, %ymm11, %ymm04133; AVX2-NEXT: vmovdqa {{.*#+}} ymm1 = [u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255]4134; AVX2-NEXT: vpblendvb %ymm1, %ymm4, %ymm0, %ymm04135; AVX2-NEXT: vpermd %ymm9, %ymm2, %ymm24136; AVX2-NEXT: vpshufb %ymm5, %ymm15, %ymm44137; AVX2-NEXT: vpblendvb %ymm1, %ymm2, %ymm4, %ymm14138; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]4139; AVX2-NEXT: vpshufb %ymm2, %ymm14, %ymm44140; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128,128]4141; AVX2-NEXT: vpshufb %ymm5, %ymm12, %ymm134142; AVX2-NEXT: vpor %ymm4, %ymm13, %ymm44143; AVX2-NEXT: vmovdqa {{.*#+}} ymm13 = [u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255]4144; AVX2-NEXT: vpblendvb %ymm13, %ymm0, %ymm4, %ymm04145; AVX2-NEXT: vpshufb %ymm2, %ymm7, %ymm24146; AVX2-NEXT: vpshufb %ymm5, %ymm3, %ymm44147; AVX2-NEXT: vpor %ymm2, %ymm4, %ymm24148; AVX2-NEXT: vpblendvb %ymm13, %ymm1, %ymm2, %ymm14149; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm2 = [3,3,3,3,0,4,4,4]4150; AVX2-NEXT: vpermd %ymm10, %ymm2, %ymm44151; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]4152; AVX2-NEXT: vpblendvb %ymm5, %ymm0, %ymm4, %ymm04153; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4154; AVX2-NEXT: vpermd %ymm8, %ymm2, %ymm04155; AVX2-NEXT: vpblendvb %ymm5, %ymm1, %ymm0, %ymm04156; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4157; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4158; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3],xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]4159; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4160; AVX2-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload4161; AVX2-NEXT: # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3],xmm1[4],mem[4],xmm1[5],mem[5],xmm1[6],mem[6],xmm1[7],mem[7]4162; AVX2-NEXT: vmovdqa {{.*#+}} xmm13 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]4163; AVX2-NEXT: vpshufb %xmm13, %xmm0, %xmm04164; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm0[0,0,1,1]4165; AVX2-NEXT: vmovdqa {{.*#+}} xmm6 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]4166; AVX2-NEXT: vpshufb %xmm6, %xmm1, %xmm04167; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm0[0,0,1,1]4168; AVX2-NEXT: vmovdqa {{.*#+}} ymm0 = [255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255]4169; AVX2-NEXT: vpblendvb %ymm0, %ymm2, %ymm1, %ymm44170; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4171; AVX2-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload4172; AVX2-NEXT: # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3],xmm1[4],mem[4],xmm1[5],mem[5],xmm1[6],mem[6],xmm1[7],mem[7]4173; AVX2-NEXT: vpshufb %xmm13, %xmm1, %xmm14174; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4175; AVX2-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload4176; 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]4177; AVX2-NEXT: vpshufb %xmm6, %xmm2, %xmm24178; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]4179; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]4180; AVX2-NEXT: vpblendvb %ymm0, %ymm1, %ymm2, %ymm04181; AVX2-NEXT: vpshufd $80, (%rsp), %xmm1 # 16-byte Folded Reload4182; AVX2-NEXT: # xmm1 = mem[0,0,1,1]4183; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4184; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]4185; AVX2-NEXT: vpblendvb %ymm2, %ymm4, %ymm1, %ymm44186; AVX2-NEXT: vpshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload4187; AVX2-NEXT: # xmm1 = mem[0,0,1,1]4188; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]4189; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm64190; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm0 = [9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12]4191; AVX2-NEXT: vpshufb %ymm0, %ymm14, %ymm14192; AVX2-NEXT: vpshufhw {{.*#+}} ymm2 = ymm12[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]4193; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[2,2,3,3,6,6,7,7]4194; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm5 = [255,0,255,0,0,255,0,255,0,255,0,0,255,0,255,0,255,0,255,0,0,255,0,255,0,255,0,0,255,0,255,0]4195; AVX2-NEXT: # ymm5 = mem[0,1,0,1]4196; AVX2-NEXT: vpblendvb %ymm5, %ymm1, %ymm2, %ymm14197; AVX2-NEXT: vpshufb %ymm0, %ymm7, %ymm04198; AVX2-NEXT: vpshufhw {{.*#+}} ymm2 = ymm3[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]4199; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[2,2,3,3,6,6,7,7]4200; AVX2-NEXT: vpblendvb %ymm5, %ymm0, %ymm2, %ymm04201; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm2 = [11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14]4202; AVX2-NEXT: vpshufb %ymm2, %ymm11, %ymm34203; AVX2-NEXT: vpshufhw $230, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Folded Reload4204; AVX2-NEXT: # ymm5 = mem[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]4205; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[2,2,3,3,6,6,7,7]4206; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [255,0,0,255,0,255,0,0,0,0,255,0,255,0,0,255,255,0,0,255,0,255,0,0,0,0,255,0,255,0,0,255]4207; AVX2-NEXT: # ymm7 = mem[0,1,0,1]4208; AVX2-NEXT: vpblendvb %ymm7, %ymm3, %ymm5, %ymm34209; AVX2-NEXT: vpshufb %ymm2, %ymm15, %ymm24210; AVX2-NEXT: vpshufhw {{.*#+}} ymm5 = ymm9[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]4211; AVX2-NEXT: vpshufd {{.*#+}} ymm5 = ymm5[2,2,3,3,6,6,7,7]4212; AVX2-NEXT: vpblendvb %ymm7, %ymm2, %ymm5, %ymm24213; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]4214; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]4215; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u]4216; AVX2-NEXT: vpblendvb %ymm5, %ymm1, %ymm3, %ymm14217; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]4218; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]4219; AVX2-NEXT: vpblendvb %ymm5, %ymm0, %ymm2, %ymm04220; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm10[2,2,3,3,6,6,7,7]4221; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]4222; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]4223; AVX2-NEXT: vpblendvb %ymm3, %ymm1, %ymm2, %ymm14224; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm8[2,2,3,3,6,6,7,7]4225; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]4226; AVX2-NEXT: vpblendvb %ymm3, %ymm0, %ymm2, %ymm04227; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload4228; AVX2-NEXT: vmovaps %ymm2, 64(%r9)4229; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload4230; AVX2-NEXT: vmovaps %ymm2, 224(%r9)4231; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload4232; AVX2-NEXT: vmovaps %ymm2, 96(%r9)4233; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload4234; AVX2-NEXT: vmovaps %ymm2, 256(%r9)4235; AVX2-NEXT: vmovdqa %ymm0, 128(%r9)4236; AVX2-NEXT: vmovdqa %ymm6, 160(%r9)4237; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4238; AVX2-NEXT: vmovaps %ymm0, 192(%r9)4239; AVX2-NEXT: vmovdqa %ymm1, 288(%r9)4240; AVX2-NEXT: vmovdqa %ymm4, (%r9)4241; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4242; AVX2-NEXT: vmovaps %ymm0, 32(%r9)4243; AVX2-NEXT: addq $248, %rsp4244; AVX2-NEXT: vzeroupper4245; AVX2-NEXT: retq4246;4247; AVX2-FP-LABEL: store_i8_stride5_vf64:4248; AVX2-FP: # %bb.0:4249; AVX2-FP-NEXT: subq $200, %rsp4250; AVX2-FP-NEXT: vmovdqa 32(%rdx), %ymm124251; AVX2-FP-NEXT: vmovdqa (%rcx), %xmm14252; AVX2-FP-NEXT: vmovdqa %xmm1, (%rsp) # 16-byte Spill4253; AVX2-FP-NEXT: vmovdqa 32(%rcx), %xmm84254; AVX2-FP-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4255; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm0 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]4256; AVX2-FP-NEXT: vpshufb %xmm0, %xmm1, %xmm14257; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm34258; AVX2-FP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4259; AVX2-FP-NEXT: vmovdqa 32(%rdx), %xmm94260; AVX2-FP-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4261; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm2 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]4262; AVX2-FP-NEXT: vpshufb %xmm2, %xmm3, %xmm34263; AVX2-FP-NEXT: vpor %xmm1, %xmm3, %xmm14264; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]4265; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm44266; AVX2-FP-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4267; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm3 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]4268; AVX2-FP-NEXT: vpshufb %xmm3, %xmm4, %xmm44269; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm64270; AVX2-FP-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4271; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm5 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]4272; AVX2-FP-NEXT: vpshufb %xmm5, %xmm6, %xmm64273; AVX2-FP-NEXT: vpor %xmm4, %xmm6, %xmm44274; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]4275; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm6 = [255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255]4276; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm1, %ymm4, %ymm14277; AVX2-FP-NEXT: vmovdqa (%r8), %xmm44278; AVX2-FP-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4279; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[1,1,2,2]4280; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]4281; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm7 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]4282; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm1, %ymm4, %ymm14283; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4284; AVX2-FP-NEXT: vmovdqa 32(%rdi), %xmm44285; AVX2-FP-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4286; AVX2-FP-NEXT: vpshufb %xmm0, %xmm8, %xmm04287; AVX2-FP-NEXT: vpshufb %xmm2, %xmm9, %xmm14288; AVX2-FP-NEXT: vpor %xmm0, %xmm1, %xmm04289; AVX2-FP-NEXT: vmovdqa 32(%rsi), %xmm24290; AVX2-FP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4291; AVX2-FP-NEXT: vpshufb %xmm3, %xmm4, %xmm14292; AVX2-FP-NEXT: vpshufb %xmm5, %xmm2, %xmm24293; AVX2-FP-NEXT: vpor %xmm1, %xmm2, %xmm14294; AVX2-FP-NEXT: vmovdqa 32(%rcx), %ymm144295; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]4296; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]4297; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm0, %ymm1, %ymm04298; AVX2-FP-NEXT: vmovdqa 32(%r8), %xmm14299; AVX2-FP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4300; AVX2-FP-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]4301; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,1,1]4302; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm0, %ymm1, %ymm04303; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4304; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,27,128,29,26,128,28,128,30,128,28,29,128,31,128,29]4305; AVX2-FP-NEXT: vpshufb %ymm0, %ymm12, %ymm14306; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [25,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,25,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128]4307; AVX2-FP-NEXT: # ymm8 = mem[0,1,0,1]4308; AVX2-FP-NEXT: vpshufb %ymm8, %ymm14, %ymm34309; AVX2-FP-NEXT: vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4310; AVX2-FP-NEXT: vpor %ymm1, %ymm3, %ymm14311; AVX2-FP-NEXT: vmovdqa 32(%rdi), %ymm44312; AVX2-FP-NEXT: vmovdqa 32(%rsi), %ymm114313; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm5 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,29,26,128,28,128,26,27,28,29,128,31,128,29,30,128]4314; AVX2-FP-NEXT: vpshufb %ymm5, %ymm4, %ymm64315; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm9 = [27,128,128,26,128,28,128,128,128,128,29,128,31,128,128,30,27,128,128,26,128,28,128,128,128,128,29,128,31,128,128,30]4316; AVX2-FP-NEXT: # ymm9 = mem[0,1,0,1]4317; AVX2-FP-NEXT: vpshufb %ymm9, %ymm11, %ymm74318; AVX2-FP-NEXT: vpor %ymm6, %ymm7, %ymm64319; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]4320; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]4321; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm10 = [255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u]4322; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm1, %ymm6, %ymm34323; AVX2-FP-NEXT: vmovdqa (%rdx), %ymm134324; AVX2-FP-NEXT: vpshufb %ymm0, %ymm13, %ymm04325; AVX2-FP-NEXT: vmovdqa (%rcx), %ymm74326; AVX2-FP-NEXT: vpshufb %ymm8, %ymm7, %ymm14327; AVX2-FP-NEXT: vpor %ymm0, %ymm1, %ymm84328; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm24329; AVX2-FP-NEXT: vpshufb %ymm5, %ymm2, %ymm54330; AVX2-FP-NEXT: vmovdqa (%rsi), %ymm14331; AVX2-FP-NEXT: vpshufb %ymm9, %ymm1, %ymm94332; AVX2-FP-NEXT: vpor %ymm5, %ymm9, %ymm54333; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]4334; AVX2-FP-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]4335; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm8, %ymm5, %ymm84336; AVX2-FP-NEXT: vmovdqa 32(%r8), %ymm54337; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm9 = ymm5[2,2,3,3,6,6,7,7]4338; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]4339; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm10 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]4340; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm3, %ymm9, %ymm04341; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4342; AVX2-FP-NEXT: vmovdqa (%r8), %ymm34343; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm9 = ymm3[2,2,3,3,6,6,7,7]4344; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]4345; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm8, %ymm9, %ymm04346; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4347; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm8 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,21,128,19,20,128,22,128,24,128,22,23,128,25,128,23]4348; AVX2-FP-NEXT: vpshufb %ymm8, %ymm4, %ymm94349; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128]4350; AVX2-FP-NEXT: # ymm10 = mem[0,1,0,1]4351; AVX2-FP-NEXT: vpshufb %ymm10, %ymm11, %ymm154352; AVX2-FP-NEXT: vpor %ymm9, %ymm15, %ymm94353; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm15 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]4354; AVX2-FP-NEXT: # ymm15 = mem[0,1,0,1]4355; AVX2-FP-NEXT: vpshufb %ymm15, %ymm14, %ymm04356; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm6 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25]4357; AVX2-FP-NEXT: vpshufb %ymm6, %ymm12, %ymm144358; AVX2-FP-NEXT: vpor %ymm0, %ymm14, %ymm04359; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]4360; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]4361; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm14 = [255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0]4362; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm9, %ymm0, %ymm04363; AVX2-FP-NEXT: vpshufb %ymm8, %ymm2, %ymm84364; AVX2-FP-NEXT: vpshufb %ymm10, %ymm1, %ymm94365; AVX2-FP-NEXT: vpor %ymm8, %ymm9, %ymm84366; AVX2-FP-NEXT: vpshufb %ymm15, %ymm7, %ymm94367; AVX2-FP-NEXT: vpshufb %ymm6, %ymm13, %ymm64368; AVX2-FP-NEXT: vpor %ymm6, %ymm9, %ymm64369; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]4370; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]4371; AVX2-FP-NEXT: vpblendvb %ymm14, %ymm8, %ymm6, %ymm64372; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm8 = ymm5[0,2,1,1,4,6,5,5]4373; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,3,3,2]4374; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm9 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]4375; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm0, %ymm8, %ymm104376; AVX2-FP-NEXT: vpshufd {{.*#+}} ymm0 = ymm3[0,2,1,1,4,6,5,5]4377; AVX2-FP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,3,2]4378; AVX2-FP-NEXT: vpblendvb %ymm9, %ymm6, %ymm0, %ymm94379; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm0 = [3,3,3,0,4,4,4,4]4380; AVX2-FP-NEXT: vpermd %ymm4, %ymm0, %ymm44381; AVX2-FP-NEXT: vpbroadcastq {{.*#+}} ymm6 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]4382; AVX2-FP-NEXT: vpshufb %ymm6, %ymm11, %ymm84383; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm11 = [u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255]4384; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm4, %ymm8, %ymm44385; AVX2-FP-NEXT: vpermd %ymm2, %ymm0, %ymm04386; AVX2-FP-NEXT: vpshufb %ymm6, %ymm1, %ymm14387; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm0, %ymm1, %ymm04388; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm1 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]4389; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload4390; AVX2-FP-NEXT: vpshufb %ymm1, %ymm2, %ymm24391; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm6 = [128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128,128]4392; AVX2-FP-NEXT: vpshufb %ymm6, %ymm12, %ymm84393; AVX2-FP-NEXT: vpor %ymm2, %ymm8, %ymm24394; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm8 = [u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255]4395; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm4, %ymm2, %ymm24396; AVX2-FP-NEXT: vpshufb %ymm1, %ymm7, %ymm14397; AVX2-FP-NEXT: vpshufb %ymm6, %ymm13, %ymm44398; AVX2-FP-NEXT: vpor %ymm1, %ymm4, %ymm14399; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm0, %ymm1, %ymm14400; AVX2-FP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [3,3,3,3,0,4,4,4]4401; AVX2-FP-NEXT: vpermd %ymm5, %ymm4, %ymm04402; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm5 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]4403; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm2, %ymm0, %ymm04404; AVX2-FP-NEXT: vpermd %ymm3, %ymm4, %ymm24405; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm1, %ymm2, %ymm14406; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4407; AVX2-FP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload4408; AVX2-FP-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]4409; AVX2-FP-NEXT: vmovdqa (%rsp), %xmm3 # 16-byte Reload4410; AVX2-FP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload4411; AVX2-FP-NEXT: # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1],xmm3[2],mem[2],xmm3[3],mem[3],xmm3[4],mem[4],xmm3[5],mem[5],xmm3[6],mem[6],xmm3[7],mem[7]4412; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm4 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]4413; AVX2-FP-NEXT: vpshufb %xmm4, %xmm2, %xmm24414; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]4415; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm5 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]4416; AVX2-FP-NEXT: vpshufb %xmm5, %xmm3, %xmm34417; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]4418; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm6 = [255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255]4419; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm2, %ymm3, %ymm24420; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload4421; AVX2-FP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload4422; AVX2-FP-NEXT: # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1],xmm3[2],mem[2],xmm3[3],mem[3],xmm3[4],mem[4],xmm3[5],mem[5],xmm3[6],mem[6],xmm3[7],mem[7]4423; AVX2-FP-NEXT: vpshufb %xmm4, %xmm3, %xmm34424; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload4425; AVX2-FP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload4426; AVX2-FP-NEXT: # xmm4 = xmm4[0],mem[0],xmm4[1],mem[1],xmm4[2],mem[2],xmm4[3],mem[3],xmm4[4],mem[4],xmm4[5],mem[5],xmm4[6],mem[6],xmm4[7],mem[7]4427; AVX2-FP-NEXT: vpshufb %xmm5, %xmm4, %xmm44428; AVX2-FP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]4429; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]4430; AVX2-FP-NEXT: vpblendvb %ymm6, %ymm3, %ymm4, %ymm34431; AVX2-FP-NEXT: vpshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload4432; AVX2-FP-NEXT: # xmm4 = mem[0,0,1,1]4433; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]4434; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm5 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]4435; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm2, %ymm4, %ymm24436; AVX2-FP-NEXT: vpshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload4437; AVX2-FP-NEXT: # xmm4 = mem[0,0,1,1]4438; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]4439; AVX2-FP-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm34440; AVX2-FP-NEXT: vmovdqa %ymm1, 64(%r9)4441; AVX2-FP-NEXT: vmovdqa %ymm0, 224(%r9)4442; AVX2-FP-NEXT: vmovdqa %ymm9, 96(%r9)4443; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4444; AVX2-FP-NEXT: vmovaps %ymm0, 128(%r9)4445; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4446; AVX2-FP-NEXT: vmovaps %ymm0, 288(%r9)4447; AVX2-FP-NEXT: vmovdqa %ymm10, 256(%r9)4448; AVX2-FP-NEXT: vmovdqa %ymm3, 160(%r9)4449; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4450; AVX2-FP-NEXT: vmovaps %ymm0, 192(%r9)4451; AVX2-FP-NEXT: vmovdqa %ymm2, (%r9)4452; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4453; AVX2-FP-NEXT: vmovaps %ymm0, 32(%r9)4454; AVX2-FP-NEXT: addq $200, %rsp4455; AVX2-FP-NEXT: vzeroupper4456; AVX2-FP-NEXT: retq4457;4458; AVX2-FCP-LABEL: store_i8_stride5_vf64:4459; AVX2-FCP: # %bb.0:4460; AVX2-FCP-NEXT: subq $168, %rsp4461; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %ymm144462; AVX2-FCP-NEXT: vmovdqa 32(%rcx), %ymm154463; AVX2-FCP-NEXT: vmovdqa (%r8), %ymm114464; AVX2-FCP-NEXT: vmovdqa (%rcx), %xmm14465; AVX2-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4466; AVX2-FCP-NEXT: vmovdqa 32(%rcx), %xmm64467; AVX2-FCP-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4468; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]4469; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm1, %xmm14470; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm34471; AVX2-FCP-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4472; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %xmm84473; AVX2-FCP-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4474; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm2 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]4475; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm3, %xmm34476; AVX2-FCP-NEXT: vpor %xmm1, %xmm3, %xmm14477; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]4478; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm44479; AVX2-FCP-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4480; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]4481; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm4, %xmm44482; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm74483; AVX2-FCP-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4484; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm5 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]4485; AVX2-FCP-NEXT: vpshufb %xmm5, %xmm7, %xmm74486; AVX2-FCP-NEXT: vpor %xmm4, %xmm7, %xmm44487; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]4488; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm7 = [255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255]4489; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm1, %ymm4, %ymm14490; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %xmm44491; AVX2-FCP-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4492; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm6, %xmm04493; AVX2-FCP-NEXT: vpshufb %xmm2, %xmm8, %xmm24494; AVX2-FCP-NEXT: vpor %xmm0, %xmm2, %xmm04495; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %xmm64496; AVX2-FCP-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4497; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm4, %xmm24498; AVX2-FCP-NEXT: vpshufb %xmm5, %xmm6, %xmm34499; AVX2-FCP-NEXT: vpor %xmm2, %xmm3, %xmm24500; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm3 = [1,1,2,2,2,2,2,2]4501; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]4502; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]4503; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm0, %ymm2, %ymm04504; AVX2-FCP-NEXT: vpermd %ymm11, %ymm3, %ymm24505; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]4506; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm1, %ymm2, %ymm14507; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4508; AVX2-FCP-NEXT: vmovdqa 32(%r8), %ymm134509; AVX2-FCP-NEXT: vpermd %ymm13, %ymm3, %ymm14510; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm0, %ymm1, %ymm04511; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4512; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,27,128,29,26,128,28,128,30,128,28,29,128,31,128,29]4513; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm14, %ymm14514; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [25,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,25,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128]4515; AVX2-FCP-NEXT: # ymm10 = mem[0,1,0,1]4516; AVX2-FCP-NEXT: vpshufb %ymm10, %ymm15, %ymm24517; AVX2-FCP-NEXT: vmovdqu %ymm15, (%rsp) # 32-byte Spill4518; AVX2-FCP-NEXT: vpor %ymm1, %ymm2, %ymm14519; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %ymm24520; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %ymm34521; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm9 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,29,26,128,28,128,26,27,28,29,128,31,128,29,30,128]4522; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm2, %ymm44523; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [27,128,128,26,128,28,128,128,128,128,29,128,31,128,128,30,27,128,128,26,128,28,128,128,128,128,29,128,31,128,128,30]4524; AVX2-FCP-NEXT: # ymm8 = mem[0,1,0,1]4525; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm3, %ymm54526; AVX2-FCP-NEXT: vpor %ymm4, %ymm5, %ymm44527; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]4528; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]4529; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm7 = [255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u]4530; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm1, %ymm4, %ymm44531; AVX2-FCP-NEXT: vmovdqa (%rdx), %ymm124532; AVX2-FCP-NEXT: vpshufb %ymm0, %ymm12, %ymm04533; AVX2-FCP-NEXT: vmovdqa (%rcx), %ymm54534; AVX2-FCP-NEXT: vpshufb %ymm10, %ymm5, %ymm14535; AVX2-FCP-NEXT: vpor %ymm0, %ymm1, %ymm104536; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm14537; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm1, %ymm94538; AVX2-FCP-NEXT: vmovdqa (%rsi), %ymm04539; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm0, %ymm84540; AVX2-FCP-NEXT: vpor %ymm9, %ymm8, %ymm84541; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm9 = ymm10[2,2,3,3]4542; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]4543; AVX2-FCP-NEXT: vpblendvb %ymm7, %ymm9, %ymm8, %ymm74544; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [6,6,6,6,7,7,7,7]4545; AVX2-FCP-NEXT: vpermd %ymm13, %ymm8, %ymm94546; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm10 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]4547; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm4, %ymm9, %ymm44548; AVX2-FCP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4549; AVX2-FCP-NEXT: vpermd %ymm11, %ymm8, %ymm44550; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm7, %ymm4, %ymm44551; AVX2-FCP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4552; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,21,128,19,20,128,22,128,24,128,22,23,128,25,128,23]4553; AVX2-FCP-NEXT: vpshufb %ymm6, %ymm2, %ymm74554; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128]4555; AVX2-FCP-NEXT: # ymm8 = mem[0,1,0,1]4556; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm3, %ymm94557; AVX2-FCP-NEXT: vpor %ymm7, %ymm9, %ymm74558; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm9 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]4559; AVX2-FCP-NEXT: # ymm9 = mem[0,1,0,1]4560; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm15, %ymm104561; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25]4562; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm14, %ymm154563; AVX2-FCP-NEXT: vpor %ymm10, %ymm15, %ymm104564; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]4565; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm10 = ymm10[2,2,3,3]4566; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm15 = [255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0]4567; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm7, %ymm10, %ymm74568; AVX2-FCP-NEXT: vpshufb %ymm6, %ymm1, %ymm64569; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm0, %ymm84570; AVX2-FCP-NEXT: vpor %ymm6, %ymm8, %ymm64571; AVX2-FCP-NEXT: vpshufb %ymm9, %ymm5, %ymm84572; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm12, %ymm44573; AVX2-FCP-NEXT: vpor %ymm4, %ymm8, %ymm44574; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]4575; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]4576; AVX2-FCP-NEXT: vpblendvb %ymm15, %ymm6, %ymm4, %ymm44577; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm6 = [4,6,5,5,5,5,4,6]4578; AVX2-FCP-NEXT: vpermd %ymm13, %ymm6, %ymm84579; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm10 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]4580; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm7, %ymm8, %ymm94581; AVX2-FCP-NEXT: vpermd %ymm11, %ymm6, %ymm64582; AVX2-FCP-NEXT: vpblendvb %ymm10, %ymm4, %ymm6, %ymm74583; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [3,3,3,0,4,4,4,4]4584; AVX2-FCP-NEXT: vpermd %ymm2, %ymm4, %ymm24585; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm6 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]4586; AVX2-FCP-NEXT: vpshufb %ymm6, %ymm3, %ymm34587; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm8 = [u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255]4588; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm2, %ymm3, %ymm24589; AVX2-FCP-NEXT: vpermd %ymm1, %ymm4, %ymm14590; AVX2-FCP-NEXT: vpshufb %ymm6, %ymm0, %ymm04591; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm1, %ymm0, %ymm04592; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]4593; AVX2-FCP-NEXT: vmovdqu (%rsp), %ymm3 # 32-byte Reload4594; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm3, %ymm34595; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128,128]4596; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm14, %ymm64597; AVX2-FCP-NEXT: vpor %ymm3, %ymm6, %ymm34598; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255]4599; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm2, %ymm3, %ymm24600; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm5, %ymm14601; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm12, %ymm34602; AVX2-FCP-NEXT: vpor %ymm1, %ymm3, %ymm14603; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm0, %ymm1, %ymm14604; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm3 = [3,3,3,3,0,4,4,4]4605; AVX2-FCP-NEXT: vpermd %ymm13, %ymm3, %ymm04606; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]4607; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm2, %ymm0, %ymm04608; AVX2-FCP-NEXT: vpermd %ymm11, %ymm3, %ymm24609; AVX2-FCP-NEXT: vpblendvb %ymm4, %ymm1, %ymm2, %ymm14610; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload4611; AVX2-FCP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload4612; AVX2-FCP-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]4613; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload4614; AVX2-FCP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload4615; AVX2-FCP-NEXT: # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1],xmm3[2],mem[2],xmm3[3],mem[3],xmm3[4],mem[4],xmm3[5],mem[5],xmm3[6],mem[6],xmm3[7],mem[7]4616; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm4 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]4617; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm2, %xmm24618; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]4619; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm5 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]4620; AVX2-FCP-NEXT: vpshufb %xmm5, %xmm3, %xmm34621; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]4622; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255]4623; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm2, %ymm3, %ymm24624; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload4625; AVX2-FCP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload4626; AVX2-FCP-NEXT: # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1],xmm3[2],mem[2],xmm3[3],mem[3],xmm3[4],mem[4],xmm3[5],mem[5],xmm3[6],mem[6],xmm3[7],mem[7]4627; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm3, %xmm34628; AVX2-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload4629; AVX2-FCP-NEXT: vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload4630; AVX2-FCP-NEXT: # xmm4 = xmm4[0],mem[0],xmm4[1],mem[1],xmm4[2],mem[2],xmm4[3],mem[3],xmm4[4],mem[4],xmm4[5],mem[5],xmm4[6],mem[6],xmm4[7],mem[7]4631; AVX2-FCP-NEXT: vpshufb %xmm5, %xmm4, %xmm44632; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]4633; AVX2-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]4634; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm3, %ymm4, %ymm34635; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]4636; AVX2-FCP-NEXT: vpermd %ymm11, %ymm4, %ymm54637; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]4638; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm2, %ymm5, %ymm24639; AVX2-FCP-NEXT: vpermd %ymm13, %ymm4, %ymm44640; AVX2-FCP-NEXT: vpblendvb %ymm6, %ymm3, %ymm4, %ymm34641; AVX2-FCP-NEXT: vmovdqa %ymm1, 64(%r9)4642; AVX2-FCP-NEXT: vmovdqa %ymm0, 224(%r9)4643; AVX2-FCP-NEXT: vmovdqa %ymm7, 96(%r9)4644; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4645; AVX2-FCP-NEXT: vmovaps %ymm0, 128(%r9)4646; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4647; AVX2-FCP-NEXT: vmovaps %ymm0, 288(%r9)4648; AVX2-FCP-NEXT: vmovdqa %ymm9, 256(%r9)4649; AVX2-FCP-NEXT: vmovdqa %ymm3, 160(%r9)4650; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4651; AVX2-FCP-NEXT: vmovaps %ymm0, 192(%r9)4652; AVX2-FCP-NEXT: vmovdqa %ymm2, (%r9)4653; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4654; AVX2-FCP-NEXT: vmovaps %ymm0, 32(%r9)4655; AVX2-FCP-NEXT: addq $168, %rsp4656; AVX2-FCP-NEXT: vzeroupper4657; AVX2-FCP-NEXT: retq4658;4659; AVX512-LABEL: store_i8_stride5_vf64:4660; AVX512: # %bb.0:4661; AVX512-NEXT: vmovdqa 32(%rsi), %ymm114662; AVX512-NEXT: vmovdqa {{.*#+}} ymm1 = [128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128,128,128]4663; AVX512-NEXT: vpshufb %ymm1, %ymm11, %ymm04664; AVX512-NEXT: vmovdqa64 %ymm1, %ymm184665; AVX512-NEXT: vmovdqa 32(%rdi), %ymm54666; AVX512-NEXT: vmovdqa {{.*#+}} ymm2 = [12,13,128,15,12,13,14,128,12,13,14,15,128,u,u,u,16,128,18,19,16,17,128,19,16,17,18,128,16,17,18,19]4667; AVX512-NEXT: vpshufb %ymm2, %ymm5, %ymm14668; AVX512-NEXT: vmovdqa64 %ymm2, %ymm194669; AVX512-NEXT: vporq %ymm0, %ymm1, %ymm204670; AVX512-NEXT: vmovdqa 32(%rdi), %xmm124671; AVX512-NEXT: vmovdqa {{.*#+}} xmm1 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]4672; AVX512-NEXT: vpshufb %xmm1, %xmm12, %xmm04673; AVX512-NEXT: vmovdqa64 %xmm1, %xmm284674; AVX512-NEXT: vmovdqa 32(%rsi), %xmm94675; AVX512-NEXT: vmovdqa {{.*#+}} xmm2 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]4676; AVX512-NEXT: vpshufb %xmm2, %xmm9, %xmm14677; AVX512-NEXT: vmovdqa64 %xmm2, %xmm294678; AVX512-NEXT: vporq %xmm0, %xmm1, %xmm214679; AVX512-NEXT: vmovdqa 32(%rcx), %ymm154680; AVX512-NEXT: vmovdqa {{.*#+}} ymm3 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]4681; AVX512-NEXT: vpshufb %ymm3, %ymm15, %ymm04682; AVX512-NEXT: vmovdqa 32(%rdx), %ymm144683; AVX512-NEXT: vmovdqa {{.*#+}} ymm10 = [u,u,12,13,128,u,u,u,14,128,u,u,14,15,128,u,u,u,16,128,u,u,16,17,128,u,u,u,18,128,u,u]4684; AVX512-NEXT: vpshufb %ymm10, %ymm14, %ymm14685; AVX512-NEXT: vporq %ymm0, %ymm1, %ymm224686; AVX512-NEXT: vmovdqa 32(%rcx), %xmm64687; AVX512-NEXT: vmovdqa {{.*#+}} xmm1 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]4688; AVX512-NEXT: vpshufb %xmm1, %xmm6, %xmm04689; AVX512-NEXT: vmovdqa64 %xmm1, %xmm304690; AVX512-NEXT: vmovdqa 32(%rdx), %xmm74691; AVX512-NEXT: vmovdqa {{.*#+}} xmm2 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]4692; AVX512-NEXT: vpshufb %xmm2, %xmm7, %xmm14693; AVX512-NEXT: vmovdqa64 %xmm2, %xmm314694; AVX512-NEXT: vporq %xmm0, %xmm1, %xmm234695; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128,128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128]4696; AVX512-NEXT: # ymm8 = mem[0,1,0,1]4697; AVX512-NEXT: vpshufb %ymm8, %ymm5, %ymm04698; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128]4699; AVX512-NEXT: # ymm4 = mem[0,1,0,1]4700; AVX512-NEXT: vpshufb %ymm4, %ymm5, %ymm14701; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm244702; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm5 = [27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30,27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30]4703; AVX512-NEXT: # ymm5 = mem[0,1,0,1]4704; AVX512-NEXT: vpshufb %ymm5, %ymm11, %ymm14705; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0,19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0]4706; AVX512-NEXT: # ymm2 = mem[0,1,0,1]4707; AVX512-NEXT: vpshufb %ymm2, %ymm11, %ymm114708; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm11, %zmm264709; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128]4710; AVX512-NEXT: # ymm11 = mem[0,1,0,1]4711; AVX512-NEXT: vpshufb %ymm11, %ymm14, %ymm14712; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]4713; AVX512-NEXT: # ymm0 = mem[0,1,0,1]4714; AVX512-NEXT: vpshufb %ymm0, %ymm15, %ymm134715; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm13, %zmm254716; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0,25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0]4717; AVX512-NEXT: # ymm1 = mem[0,1,0,1]4718; AVX512-NEXT: vpshufb %ymm1, %ymm15, %ymm134719; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm15 = [18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25,18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25]4720; AVX512-NEXT: # ymm15 = mem[0,1,0,1]4721; AVX512-NEXT: vpshufb %ymm15, %ymm14, %ymm144722; AVX512-NEXT: vinserti64x4 $1, %ymm13, %zmm14, %zmm274723; AVX512-NEXT: vmovdqa (%rcx), %ymm144724; AVX512-NEXT: vpshufb %ymm3, %ymm14, %ymm34725; AVX512-NEXT: vmovdqa (%rdx), %ymm134726; AVX512-NEXT: vpshufb %ymm10, %ymm13, %ymm104727; AVX512-NEXT: vporq %ymm3, %ymm10, %ymm164728; AVX512-NEXT: vpshufb %ymm0, %ymm14, %ymm04729; AVX512-NEXT: vpshufb %ymm15, %ymm13, %ymm34730; AVX512-NEXT: vporq %ymm0, %ymm3, %ymm174731; AVX512-NEXT: vmovdqa (%rsi), %ymm34732; AVX512-NEXT: vmovdqa64 %ymm18, %ymm04733; AVX512-NEXT: vpshufb %ymm0, %ymm3, %ymm04734; AVX512-NEXT: vmovdqa (%rdi), %ymm104735; AVX512-NEXT: vmovdqa64 %ymm19, %ymm154736; AVX512-NEXT: vpshufb %ymm15, %ymm10, %ymm154737; AVX512-NEXT: vporq %ymm0, %ymm15, %ymm184738; AVX512-NEXT: vpshufb %ymm4, %ymm10, %ymm04739; AVX512-NEXT: vpshufb %ymm2, %ymm3, %ymm24740; AVX512-NEXT: vporq %ymm0, %ymm2, %ymm194741; AVX512-NEXT: vpshufb %ymm11, %ymm13, %ymm04742; AVX512-NEXT: vpshufb %ymm1, %ymm14, %ymm14743; AVX512-NEXT: vpor %ymm0, %ymm1, %ymm04744; AVX512-NEXT: vpshufb %ymm8, %ymm10, %ymm14745; AVX512-NEXT: vpshufb %ymm5, %ymm3, %ymm24746; AVX512-NEXT: vpor %ymm1, %ymm2, %ymm14747; AVX512-NEXT: vmovdqa (%rdi), %xmm54748; AVX512-NEXT: vmovdqa (%rsi), %xmm84749; AVX512-NEXT: vmovdqa64 %xmm28, %xmm24750; AVX512-NEXT: vpshufb %xmm2, %xmm5, %xmm24751; AVX512-NEXT: vmovdqa64 %xmm29, %xmm34752; AVX512-NEXT: vpshufb %xmm3, %xmm8, %xmm34753; AVX512-NEXT: vpor %xmm2, %xmm3, %xmm104754; AVX512-NEXT: vmovdqa (%rcx), %xmm24755; AVX512-NEXT: vmovdqa (%rdx), %xmm34756; AVX512-NEXT: vmovdqa64 %xmm30, %xmm44757; AVX512-NEXT: vpshufb %xmm4, %xmm2, %xmm44758; AVX512-NEXT: vmovdqa64 %xmm31, %xmm114759; AVX512-NEXT: vpshufb %xmm11, %xmm3, %xmm114760; AVX512-NEXT: vpor %xmm4, %xmm11, %xmm114761; AVX512-NEXT: vmovdqa 32(%r8), %ymm44762; AVX512-NEXT: vmovdqa {{.*#+}} ymm13 = [12,128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128]4763; AVX512-NEXT: vpshufb %ymm13, %ymm4, %ymm44764; AVX512-NEXT: vpshufd {{.*#+}} xmm14 = mem[1,1,2,2]4765; AVX512-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,1,1,1]4766; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm15 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]4767; AVX512-NEXT: vpandn %ymm14, %ymm15, %ymm144768; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm14, %zmm44769; AVX512-NEXT: vmovdqa (%r8), %ymm144770; AVX512-NEXT: vpshufb %ymm13, %ymm14, %ymm134771; AVX512-NEXT: vpshufd {{.*#+}} ymm14 = ymm14[0,2,1,1,4,6,5,5]4772; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm28 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]4773; AVX512-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,3,3,2]4774; AVX512-NEXT: vpandnq %ymm14, %ymm28, %ymm144775; AVX512-NEXT: vinserti64x4 $1, %ymm14, %zmm13, %zmm134776; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1],xmm6[2],xmm7[2],xmm6[3],xmm7[3],xmm6[4],xmm7[4],xmm6[5],xmm7[5],xmm6[6],xmm7[6],xmm6[7],xmm7[7]4777; AVX512-NEXT: vmovdqa {{.*#+}} xmm7 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]4778; AVX512-NEXT: vpshufb %xmm7, %xmm6, %xmm64779; AVX512-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]4780; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm12[0],xmm9[0],xmm12[1],xmm9[1],xmm12[2],xmm9[2],xmm12[3],xmm9[3],xmm12[4],xmm9[4],xmm12[5],xmm9[5],xmm12[6],xmm9[6],xmm12[7],xmm9[7]4781; AVX512-NEXT: vmovdqa {{.*#+}} xmm12 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]4782; AVX512-NEXT: vpshufb %xmm12, %xmm9, %xmm94783; AVX512-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]4784; AVX512-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm5[0],xmm8[0],xmm5[1],xmm8[1],xmm5[2],xmm8[2],xmm5[3],xmm8[3],xmm5[4],xmm8[4],xmm5[5],xmm8[5],xmm5[6],xmm8[6],xmm5[7],xmm8[7]4785; AVX512-NEXT: vpshufb %xmm12, %xmm5, %xmm54786; AVX512-NEXT: vinserti32x4 $2, %xmm10, %zmm5, %zmm54787; AVX512-NEXT: vpunpcklbw {{.*#+}} 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]4788; AVX512-NEXT: vpshufb %xmm7, %xmm2, %xmm24789; AVX512-NEXT: vinserti32x4 $2, %xmm11, %zmm2, %zmm24790; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm21[0,0,1,1]4791; AVX512-NEXT: vinserti64x4 $1, %ymm20, %zmm3, %zmm34792; AVX512-NEXT: vpermq {{.*#+}} ymm7 = ymm23[0,0,1,1]4793; AVX512-NEXT: vinserti64x4 $1, %ymm22, %zmm7, %zmm74794; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm8 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0]4795; AVX512-NEXT: vpternlogq {{.*#+}} zmm7 = zmm3 ^ (zmm8 & (zmm7 ^ zmm3))4796; AVX512-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 | (zmm7 & zmm15)4797; AVX512-NEXT: vpermq {{.*#+}} zmm3 = zmm24[2,2,3,3,6,6,7,7]4798; AVX512-NEXT: vpermq {{.*#+}} zmm7 = zmm26[2,2,3,3,6,6,7,7]4799; AVX512-NEXT: vporq %zmm3, %zmm7, %zmm34800; AVX512-NEXT: vmovdqa64 (%r8), %zmm74801; AVX512-NEXT: vpermq {{.*#+}} zmm10 = zmm25[2,2,3,3,6,6,7,7]4802; AVX512-NEXT: vpermq {{.*#+}} zmm11 = zmm27[2,2,3,3,6,6,7,7]4803; AVX512-NEXT: vporq %zmm10, %zmm11, %zmm104804; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm11 = [0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]4805; AVX512-NEXT: vpternlogq {{.*#+}} zmm10 = zmm3 ^ (zmm11 & (zmm10 ^ zmm3))4806; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm3 = [12,0,13,13,13,13,0,14,14,14,14,0,15,15,15,15]4807; AVX512-NEXT: vpermd %zmm7, %zmm3, %zmm34808; AVX512-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (zmm28 & (zmm3 ^ zmm10))4809; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm17[2,2,3,3]4810; AVX512-NEXT: vinserti64x4 $1, %ymm10, %zmm16, %zmm104811; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm19[2,2,3,3]4812; AVX512-NEXT: vinserti64x4 $1, %ymm12, %zmm18, %zmm124813; AVX512-NEXT: vpternlogq {{.*#+}} zmm12 = zmm10 ^ (zmm8 & (zmm12 ^ zmm10))4814; AVX512-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]4815; AVX512-NEXT: vinserti64x4 $1, %ymm6, %zmm0, %zmm04816; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]4817; AVX512-NEXT: vinserti64x4 $1, %ymm9, %zmm1, %zmm14818; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm0 ^ (zmm11 & (zmm1 ^ zmm0))4819; AVX512-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 | (zmm12 & mem)4820; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm0 = [6,6,6,0,7,7,7,7,0,8,8,8,8,0,9,9]4821; AVX512-NEXT: vpermd %zmm7, %zmm0, %zmm04822; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm1))4823; AVX512-NEXT: vpermq {{.*#+}} zmm1 = zmm5[0,0,1,1,4,4,5,5]4824; AVX512-NEXT: vpermq {{.*#+}} zmm2 = zmm2[0,0,1,1,4,4,5,5]4825; AVX512-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm1))4826; AVX512-NEXT: vpmovsxbd {{.*#+}} zmm1 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]4827; AVX512-NEXT: vpermd %zmm7, %zmm1, %zmm14828; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm2))4829; AVX512-NEXT: vmovdqa64 %zmm13, 64(%r9)4830; AVX512-NEXT: vmovdqa64 %zmm1, (%r9)4831; AVX512-NEXT: vmovdqa64 %zmm0, 128(%r9)4832; AVX512-NEXT: vmovdqa64 %zmm3, 256(%r9)4833; AVX512-NEXT: vmovdqa64 %zmm4, 192(%r9)4834; AVX512-NEXT: vzeroupper4835; AVX512-NEXT: retq4836;4837; AVX512-FCP-LABEL: store_i8_stride5_vf64:4838; AVX512-FCP: # %bb.0:4839; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %ymm84840; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm10 = [128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128,128,128]4841; AVX512-FCP-NEXT: vpshufb %ymm10, %ymm8, %ymm04842; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %ymm34843; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm13 = [12,13,128,15,12,13,14,128,12,13,14,15,128,u,u,u,16,128,18,19,16,17,128,19,16,17,18,128,16,17,18,19]4844; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm3, %ymm24845; AVX512-FCP-NEXT: vpor %ymm0, %ymm2, %ymm04846; AVX512-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4847; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %xmm14848; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm1[8],zero,xmm1[u,7],zero,xmm1[9],zero,xmm1[u],zero,xmm1[u,10],zero,xmm1[12],zero,xmm1[u,11]4849; AVX512-FCP-NEXT: vmovdqa64 %xmm1, %xmm294850; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %xmm14851; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm2 = zero,xmm1[8,u],zero,xmm1[7],zero,xmm1[9,u,11,u],zero,xmm1[10],zero,xmm1[12,u],zero4852; AVX512-FCP-NEXT: vmovdqa64 %xmm1, %xmm304853; AVX512-FCP-NEXT: vporq %xmm0, %xmm2, %xmm224854; AVX512-FCP-NEXT: vmovdqa 32(%rcx), %ymm24855; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]4856; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm2, %ymm64857; AVX512-FCP-NEXT: vmovdqa 32(%rdx), %ymm54858; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [u,u,12,13,128,u,u,u,14,128,u,u,14,15,128,u,u,u,16,128,u,u,16,17,128,u,u,u,18,128,u,u]4859; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm5, %ymm74860; AVX512-FCP-NEXT: vporq %ymm6, %ymm7, %ymm234861; AVX512-FCP-NEXT: vmovdqa 32(%rcx), %xmm14862; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm6 = zero,xmm1[6],zero,xmm1[8,u],zero,xmm1[7],zero,xmm1[9],zero,xmm1[11,u],zero,xmm1[10],zero,xmm1[12]4863; AVX512-FCP-NEXT: vmovdqa64 %xmm1, %xmm314864; AVX512-FCP-NEXT: vmovdqa 32(%rdx), %xmm14865; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm1[6],zero,xmm1[8],zero,xmm1[u,7],zero,xmm1[9],zero,xmm1[11],zero,xmm1[u,10],zero,xmm1[12],zero4866; AVX512-FCP-NEXT: vmovdqa64 %xmm1, %xmm214867; AVX512-FCP-NEXT: vporq %xmm6, %xmm7, %xmm244868; AVX512-FCP-NEXT: vmovdqa (%rcx), %ymm64869; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm6, %ymm74870; AVX512-FCP-NEXT: vmovdqa (%rdx), %ymm14871; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm1, %ymm44872; AVX512-FCP-NEXT: vporq %ymm7, %ymm4, %ymm254873; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm14 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]4874; AVX512-FCP-NEXT: # ymm14 = mem[0,1,0,1]4875; AVX512-FCP-NEXT: vpshufb %ymm14, %ymm6, %ymm44876; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm12 = [18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25,18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25]4877; AVX512-FCP-NEXT: # ymm12 = mem[0,1,0,1]4878; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm1, %ymm94879; AVX512-FCP-NEXT: vporq %ymm4, %ymm9, %ymm264880; AVX512-FCP-NEXT: vmovdqa (%rsi), %ymm94881; AVX512-FCP-NEXT: vpshufb %ymm10, %ymm9, %ymm44882; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm104883; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm10, %ymm134884; AVX512-FCP-NEXT: vporq %ymm4, %ymm13, %ymm274885; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128]4886; AVX512-FCP-NEXT: # ymm11 = mem[0,1,0,1]4887; AVX512-FCP-NEXT: vpshufb %ymm11, %ymm10, %ymm74888; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0,19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0]4889; AVX512-FCP-NEXT: # ymm4 = mem[0,1,0,1]4890; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm9, %ymm134891; AVX512-FCP-NEXT: vporq %ymm7, %ymm13, %ymm284892; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm13 = [128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128,128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128]4893; AVX512-FCP-NEXT: # ymm13 = mem[0,1,0,1]4894; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm3, %ymm04895; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30,27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30]4896; AVX512-FCP-NEXT: # ymm7 = mem[0,1,0,1]4897; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm8, %ymm154898; AVX512-FCP-NEXT: vporq %ymm0, %ymm15, %ymm164899; AVX512-FCP-NEXT: vpshufb %ymm11, %ymm3, %ymm04900; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm8, %ymm34901; AVX512-FCP-NEXT: vporq %ymm0, %ymm3, %ymm174902; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128]4903; AVX512-FCP-NEXT: # ymm0 = mem[0,1,0,1]4904; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm5, %ymm34905; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0,25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0]4906; AVX512-FCP-NEXT: # ymm4 = mem[0,1,0,1]4907; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm84908; AVX512-FCP-NEXT: vporq %ymm3, %ymm8, %ymm194909; AVX512-FCP-NEXT: vpshufb %ymm14, %ymm2, %ymm24910; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm5, %ymm34911; AVX512-FCP-NEXT: vporq %ymm2, %ymm3, %ymm184912; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm1, %ymm04913; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm6, %ymm14914; AVX512-FCP-NEXT: vporq %ymm0, %ymm1, %ymm204915; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm10, %ymm04916; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm9, %ymm14917; AVX512-FCP-NEXT: vpor %ymm0, %ymm1, %ymm04918; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm14919; AVX512-FCP-NEXT: vmovdqa (%rsi), %xmm24920; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm1[8],zero,xmm1[u,7],zero,xmm1[9],zero,xmm1[u],zero,xmm1[u,10],zero,xmm1[12],zero,xmm1[u,11]4921; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm4 = zero,xmm2[8,u],zero,xmm2[7],zero,xmm2[9,u,11,u],zero,xmm2[10],zero,xmm2[12,u],zero4922; AVX512-FCP-NEXT: vpor %xmm3, %xmm4, %xmm54923; AVX512-FCP-NEXT: vmovdqa (%rcx), %xmm34924; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm44925; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm6 = zero,xmm3[6],zero,xmm3[8,u],zero,xmm3[7],zero,xmm3[9],zero,xmm3[11,u],zero,xmm3[10],zero,xmm3[12]4926; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm4[6],zero,xmm4[8],zero,xmm4[u,7],zero,xmm4[9],zero,xmm4[11],zero,xmm4[u,10],zero,xmm4[12],zero4927; AVX512-FCP-NEXT: vpor %xmm6, %xmm7, %xmm64928; AVX512-FCP-NEXT: vmovdqa 32(%r8), %ymm74929; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm8 = [12,128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128]4930; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [1,1,2,2,2,2,2,2]4931; AVX512-FCP-NEXT: vpermd %ymm7, %ymm9, %ymm94932; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm7, %ymm74933; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm10 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]4934; AVX512-FCP-NEXT: vpandn %ymm9, %ymm10, %ymm94935; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm7, %zmm9, %zmm74936; AVX512-FCP-NEXT: vmovdqa (%r8), %ymm94937; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm11 = [4,0,5,5,5,5,0,6]4938; AVX512-FCP-NEXT: vpermd %ymm9, %ymm11, %ymm114939; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm9, %ymm84940; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm9 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]4941; AVX512-FCP-NEXT: vpandn %ymm11, %ymm9, %ymm114942; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm11, %zmm8, %zmm84943; AVX512-FCP-NEXT: vmovdqa64 %xmm31, %xmm114944; AVX512-FCP-NEXT: vmovdqa64 %xmm21, %xmm124945; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} 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]4946; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm12 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]4947; AVX512-FCP-NEXT: vpshufb %xmm12, %xmm11, %xmm114948; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm13 = [2,2,3,3,8,8,9,9]4949; AVX512-FCP-NEXT: vpermt2q %zmm11, %zmm13, %zmm204950; AVX512-FCP-NEXT: vmovdqa64 %xmm29, %xmm114951; AVX512-FCP-NEXT: vmovdqa64 %xmm30, %xmm144952; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm11 = xmm11[0],xmm14[0],xmm11[1],xmm14[1],xmm11[2],xmm14[2],xmm11[3],xmm14[3],xmm11[4],xmm14[4],xmm11[5],xmm14[5],xmm11[6],xmm14[6],xmm11[7],xmm14[7]4953; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]4954; AVX512-FCP-NEXT: vpshufb %xmm14, %xmm11, %xmm114955; AVX512-FCP-NEXT: vpermt2q %zmm11, %zmm13, %zmm04956; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm1 = 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]4957; AVX512-FCP-NEXT: vpshufb %xmm14, %xmm1, %xmm14958; AVX512-FCP-NEXT: vpunpcklbw {{.*#+}} xmm2 = 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]4959; AVX512-FCP-NEXT: vpshufb %xmm12, %xmm2, %xmm24960; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm3 = [0,0,1,1,8,8,9,9]4961; AVX512-FCP-NEXT: vpermt2q %zmm5, %zmm3, %zmm14962; AVX512-FCP-NEXT: vpermt2q %zmm6, %zmm3, %zmm24963; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm1))4964; AVX512-FCP-NEXT: vmovdqa64 (%r8), %zmm14965; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm3 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]4966; AVX512-FCP-NEXT: vpermd %zmm1, %zmm3, %zmm34967; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm2))4968; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm22[0,0,1,1]4969; AVX512-FCP-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm2 # 32-byte Folded Reload4970; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm24[0,0,1,1]4971; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm23, %zmm4, %zmm44972; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm5 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0]4973; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm2 ^ (zmm5 & (zmm4 ^ zmm2))4974; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 | (zmm4 & zmm10)4975; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm26[2,2,3,3]4976; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm25, %zmm24977; AVX512-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm28[2,2,3,3]4978; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm27, %zmm44979; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm2 ^ (zmm5 & (zmm4 ^ zmm2))4980; AVX512-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [2,2,3,3,10,10,11,11]4981; AVX512-FCP-NEXT: vpermt2q %zmm16, %zmm2, %zmm174982; AVX512-FCP-NEXT: vpermt2q %zmm19, %zmm2, %zmm184983; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]4984; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm18 = zmm17 ^ (zmm2 & (zmm18 ^ zmm17))4985; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm5 = [12,0,13,13,13,13,0,14,14,14,14,0,15,15,15,15]4986; AVX512-FCP-NEXT: vpermd %zmm1, %zmm5, %zmm54987; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 ^ (zmm9 & (zmm5 ^ zmm18))4988; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm20 ^ (zmm2 & (zmm0 ^ zmm20))4989; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm4 & mem)4990; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [6,6,6,0,7,7,7,7,0,8,8,8,8,0,9,9]4991; AVX512-FCP-NEXT: vpermd %zmm1, %zmm2, %zmm14992; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm0))4993; AVX512-FCP-NEXT: vmovdqa64 %zmm3, (%r9)4994; AVX512-FCP-NEXT: vmovdqa64 %zmm1, 128(%r9)4995; AVX512-FCP-NEXT: vmovdqa64 %zmm5, 256(%r9)4996; AVX512-FCP-NEXT: vmovdqa64 %zmm8, 64(%r9)4997; AVX512-FCP-NEXT: vmovdqa64 %zmm7, 192(%r9)4998; AVX512-FCP-NEXT: vzeroupper4999; AVX512-FCP-NEXT: retq5000;5001; AVX512DQ-LABEL: store_i8_stride5_vf64:5002; AVX512DQ: # %bb.0:5003; AVX512DQ-NEXT: vmovdqa 32(%rsi), %ymm115004; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm1 = [128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128,128,128]5005; AVX512DQ-NEXT: vpshufb %ymm1, %ymm11, %ymm05006; AVX512DQ-NEXT: vmovdqa64 %ymm1, %ymm185007; AVX512DQ-NEXT: vmovdqa 32(%rdi), %ymm55008; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm2 = [12,13,128,15,12,13,14,128,12,13,14,15,128,u,u,u,16,128,18,19,16,17,128,19,16,17,18,128,16,17,18,19]5009; AVX512DQ-NEXT: vpshufb %ymm2, %ymm5, %ymm15010; AVX512DQ-NEXT: vmovdqa64 %ymm2, %ymm195011; AVX512DQ-NEXT: vporq %ymm0, %ymm1, %ymm205012; AVX512DQ-NEXT: vmovdqa 32(%rdi), %xmm125013; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm1 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]5014; AVX512DQ-NEXT: vpshufb %xmm1, %xmm12, %xmm05015; AVX512DQ-NEXT: vmovdqa64 %xmm1, %xmm285016; AVX512DQ-NEXT: vmovdqa 32(%rsi), %xmm95017; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm2 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]5018; AVX512DQ-NEXT: vpshufb %xmm2, %xmm9, %xmm15019; AVX512DQ-NEXT: vmovdqa64 %xmm2, %xmm295020; AVX512DQ-NEXT: vporq %xmm0, %xmm1, %xmm215021; AVX512DQ-NEXT: vmovdqa 32(%rcx), %ymm155022; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm3 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]5023; AVX512DQ-NEXT: vpshufb %ymm3, %ymm15, %ymm05024; AVX512DQ-NEXT: vmovdqa 32(%rdx), %ymm145025; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm10 = [u,u,12,13,128,u,u,u,14,128,u,u,14,15,128,u,u,u,16,128,u,u,16,17,128,u,u,u,18,128,u,u]5026; AVX512DQ-NEXT: vpshufb %ymm10, %ymm14, %ymm15027; AVX512DQ-NEXT: vporq %ymm0, %ymm1, %ymm225028; AVX512DQ-NEXT: vmovdqa 32(%rcx), %xmm65029; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm1 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]5030; AVX512DQ-NEXT: vpshufb %xmm1, %xmm6, %xmm05031; AVX512DQ-NEXT: vmovdqa64 %xmm1, %xmm305032; AVX512DQ-NEXT: vmovdqa 32(%rdx), %xmm75033; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm2 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]5034; AVX512DQ-NEXT: vpshufb %xmm2, %xmm7, %xmm15035; AVX512DQ-NEXT: vmovdqa64 %xmm2, %xmm315036; AVX512DQ-NEXT: vporq %xmm0, %xmm1, %xmm235037; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128,128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128]5038; AVX512DQ-NEXT: # ymm8 = mem[0,1,0,1]5039; AVX512DQ-NEXT: vpshufb %ymm8, %ymm5, %ymm05040; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128]5041; AVX512DQ-NEXT: # ymm4 = mem[0,1,0,1]5042; AVX512DQ-NEXT: vpshufb %ymm4, %ymm5, %ymm15043; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm245044; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm5 = [27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30,27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30]5045; AVX512DQ-NEXT: # ymm5 = mem[0,1,0,1]5046; AVX512DQ-NEXT: vpshufb %ymm5, %ymm11, %ymm15047; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0,19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0]5048; AVX512DQ-NEXT: # ymm2 = mem[0,1,0,1]5049; AVX512DQ-NEXT: vpshufb %ymm2, %ymm11, %ymm115050; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm11, %zmm265051; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128]5052; AVX512DQ-NEXT: # ymm11 = mem[0,1,0,1]5053; AVX512DQ-NEXT: vpshufb %ymm11, %ymm14, %ymm15054; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]5055; AVX512DQ-NEXT: # ymm0 = mem[0,1,0,1]5056; AVX512DQ-NEXT: vpshufb %ymm0, %ymm15, %ymm135057; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm13, %zmm255058; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm1 = [25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0,25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0]5059; AVX512DQ-NEXT: # ymm1 = mem[0,1,0,1]5060; AVX512DQ-NEXT: vpshufb %ymm1, %ymm15, %ymm135061; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm15 = [18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25,18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25]5062; AVX512DQ-NEXT: # ymm15 = mem[0,1,0,1]5063; AVX512DQ-NEXT: vpshufb %ymm15, %ymm14, %ymm145064; AVX512DQ-NEXT: vinserti64x4 $1, %ymm13, %zmm14, %zmm275065; AVX512DQ-NEXT: vmovdqa (%rcx), %ymm145066; AVX512DQ-NEXT: vpshufb %ymm3, %ymm14, %ymm35067; AVX512DQ-NEXT: vmovdqa (%rdx), %ymm135068; AVX512DQ-NEXT: vpshufb %ymm10, %ymm13, %ymm105069; AVX512DQ-NEXT: vporq %ymm3, %ymm10, %ymm165070; AVX512DQ-NEXT: vpshufb %ymm0, %ymm14, %ymm05071; AVX512DQ-NEXT: vpshufb %ymm15, %ymm13, %ymm35072; AVX512DQ-NEXT: vporq %ymm0, %ymm3, %ymm175073; AVX512DQ-NEXT: vmovdqa (%rsi), %ymm35074; AVX512DQ-NEXT: vmovdqa64 %ymm18, %ymm05075; AVX512DQ-NEXT: vpshufb %ymm0, %ymm3, %ymm05076; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm105077; AVX512DQ-NEXT: vmovdqa64 %ymm19, %ymm155078; AVX512DQ-NEXT: vpshufb %ymm15, %ymm10, %ymm155079; AVX512DQ-NEXT: vporq %ymm0, %ymm15, %ymm185080; AVX512DQ-NEXT: vpshufb %ymm4, %ymm10, %ymm05081; AVX512DQ-NEXT: vpshufb %ymm2, %ymm3, %ymm25082; AVX512DQ-NEXT: vporq %ymm0, %ymm2, %ymm195083; AVX512DQ-NEXT: vpshufb %ymm11, %ymm13, %ymm05084; AVX512DQ-NEXT: vpshufb %ymm1, %ymm14, %ymm15085; AVX512DQ-NEXT: vpor %ymm0, %ymm1, %ymm05086; AVX512DQ-NEXT: vpshufb %ymm8, %ymm10, %ymm15087; AVX512DQ-NEXT: vpshufb %ymm5, %ymm3, %ymm25088; AVX512DQ-NEXT: vpor %ymm1, %ymm2, %ymm15089; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm55090; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm85091; AVX512DQ-NEXT: vmovdqa64 %xmm28, %xmm25092; AVX512DQ-NEXT: vpshufb %xmm2, %xmm5, %xmm25093; AVX512DQ-NEXT: vmovdqa64 %xmm29, %xmm35094; AVX512DQ-NEXT: vpshufb %xmm3, %xmm8, %xmm35095; AVX512DQ-NEXT: vpor %xmm2, %xmm3, %xmm105096; AVX512DQ-NEXT: vmovdqa (%rcx), %xmm25097; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm35098; AVX512DQ-NEXT: vmovdqa64 %xmm30, %xmm45099; AVX512DQ-NEXT: vpshufb %xmm4, %xmm2, %xmm45100; AVX512DQ-NEXT: vmovdqa64 %xmm31, %xmm115101; AVX512DQ-NEXT: vpshufb %xmm11, %xmm3, %xmm115102; AVX512DQ-NEXT: vpor %xmm4, %xmm11, %xmm115103; AVX512DQ-NEXT: vmovdqa 32(%r8), %ymm45104; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm13 = [12,128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128]5105; AVX512DQ-NEXT: vpshufb %ymm13, %ymm4, %ymm45106; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm14 = mem[1,1,2,2]5107; AVX512DQ-NEXT: vpermq {{.*#+}} ymm14 = ymm14[0,1,1,1]5108; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm15 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]5109; AVX512DQ-NEXT: vpandn %ymm14, %ymm15, %ymm145110; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm14, %zmm45111; AVX512DQ-NEXT: vmovdqa (%r8), %ymm145112; AVX512DQ-NEXT: vpshufb %ymm13, %ymm14, %ymm135113; AVX512DQ-NEXT: vpshufd {{.*#+}} ymm14 = ymm14[0,2,1,1,4,6,5,5]5114; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm28 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]5115; AVX512DQ-NEXT: vpermq {{.*#+}} ymm14 = ymm14[2,3,3,2]5116; AVX512DQ-NEXT: vpandnq %ymm14, %ymm28, %ymm145117; AVX512DQ-NEXT: vinserti64x4 $1, %ymm14, %zmm13, %zmm135118; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1],xmm6[2],xmm7[2],xmm6[3],xmm7[3],xmm6[4],xmm7[4],xmm6[5],xmm7[5],xmm6[6],xmm7[6],xmm6[7],xmm7[7]5119; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm7 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]5120; AVX512DQ-NEXT: vpshufb %xmm7, %xmm6, %xmm65121; AVX512DQ-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]5122; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm9 = xmm12[0],xmm9[0],xmm12[1],xmm9[1],xmm12[2],xmm9[2],xmm12[3],xmm9[3],xmm12[4],xmm9[4],xmm12[5],xmm9[5],xmm12[6],xmm9[6],xmm12[7],xmm9[7]5123; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm12 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]5124; AVX512DQ-NEXT: vpshufb %xmm12, %xmm9, %xmm95125; AVX512DQ-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]5126; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} xmm5 = xmm5[0],xmm8[0],xmm5[1],xmm8[1],xmm5[2],xmm8[2],xmm5[3],xmm8[3],xmm5[4],xmm8[4],xmm5[5],xmm8[5],xmm5[6],xmm8[6],xmm5[7],xmm8[7]5127; AVX512DQ-NEXT: vpshufb %xmm12, %xmm5, %xmm55128; AVX512DQ-NEXT: vinserti32x4 $2, %xmm10, %zmm5, %zmm55129; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} 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]5130; AVX512DQ-NEXT: vpshufb %xmm7, %xmm2, %xmm25131; AVX512DQ-NEXT: vinserti32x4 $2, %xmm11, %zmm2, %zmm25132; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm21[0,0,1,1]5133; AVX512DQ-NEXT: vinserti64x4 $1, %ymm20, %zmm3, %zmm35134; AVX512DQ-NEXT: vpermq {{.*#+}} ymm7 = ymm23[0,0,1,1]5135; AVX512DQ-NEXT: vinserti64x4 $1, %ymm22, %zmm7, %zmm75136; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm8 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0]5137; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm7 = zmm3 ^ (zmm8 & (zmm7 ^ zmm3))5138; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 | (zmm7 & zmm15)5139; AVX512DQ-NEXT: vpermq {{.*#+}} zmm3 = zmm24[2,2,3,3,6,6,7,7]5140; AVX512DQ-NEXT: vpermq {{.*#+}} zmm7 = zmm26[2,2,3,3,6,6,7,7]5141; AVX512DQ-NEXT: vporq %zmm3, %zmm7, %zmm35142; AVX512DQ-NEXT: vmovdqa64 (%r8), %zmm75143; AVX512DQ-NEXT: vpermq {{.*#+}} zmm10 = zmm25[2,2,3,3,6,6,7,7]5144; AVX512DQ-NEXT: vpermq {{.*#+}} zmm11 = zmm27[2,2,3,3,6,6,7,7]5145; AVX512DQ-NEXT: vporq %zmm10, %zmm11, %zmm105146; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm11 = [0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]5147; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm10 = zmm3 ^ (zmm11 & (zmm10 ^ zmm3))5148; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm3 = [12,0,13,13,13,13,0,14,14,14,14,0,15,15,15,15]5149; AVX512DQ-NEXT: vpermd %zmm7, %zmm3, %zmm35150; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (zmm28 & (zmm3 ^ zmm10))5151; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm17[2,2,3,3]5152; AVX512DQ-NEXT: vinserti64x4 $1, %ymm10, %zmm16, %zmm105153; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm19[2,2,3,3]5154; AVX512DQ-NEXT: vinserti64x4 $1, %ymm12, %zmm18, %zmm125155; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm12 = zmm10 ^ (zmm8 & (zmm12 ^ zmm10))5156; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]5157; AVX512DQ-NEXT: vinserti64x4 $1, %ymm6, %zmm0, %zmm05158; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]5159; AVX512DQ-NEXT: vinserti64x4 $1, %ymm9, %zmm1, %zmm15160; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm0 ^ (zmm11 & (zmm1 ^ zmm0))5161; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 | (zmm12 & mem)5162; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm0 = [6,6,6,0,7,7,7,7,0,8,8,8,8,0,9,9]5163; AVX512DQ-NEXT: vpermd %zmm7, %zmm0, %zmm05164; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm1))5165; AVX512DQ-NEXT: vpermq {{.*#+}} zmm1 = zmm5[0,0,1,1,4,4,5,5]5166; AVX512DQ-NEXT: vpermq {{.*#+}} zmm2 = zmm2[0,0,1,1,4,4,5,5]5167; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm1))5168; AVX512DQ-NEXT: vpmovsxbd {{.*#+}} zmm1 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]5169; AVX512DQ-NEXT: vpermd %zmm7, %zmm1, %zmm15170; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm2))5171; AVX512DQ-NEXT: vmovdqa64 %zmm13, 64(%r9)5172; AVX512DQ-NEXT: vmovdqa64 %zmm1, (%r9)5173; AVX512DQ-NEXT: vmovdqa64 %zmm0, 128(%r9)5174; AVX512DQ-NEXT: vmovdqa64 %zmm3, 256(%r9)5175; AVX512DQ-NEXT: vmovdqa64 %zmm4, 192(%r9)5176; AVX512DQ-NEXT: vzeroupper5177; AVX512DQ-NEXT: retq5178;5179; AVX512DQ-FCP-LABEL: store_i8_stride5_vf64:5180; AVX512DQ-FCP: # %bb.0:5181; AVX512DQ-FCP-NEXT: vmovdqa 32(%rsi), %ymm85182; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm10 = [128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128,128,128]5183; AVX512DQ-FCP-NEXT: vpshufb %ymm10, %ymm8, %ymm05184; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %ymm35185; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm13 = [12,13,128,15,12,13,14,128,12,13,14,15,128,u,u,u,16,128,18,19,16,17,128,19,16,17,18,128,16,17,18,19]5186; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm3, %ymm25187; AVX512DQ-FCP-NEXT: vpor %ymm0, %ymm2, %ymm05188; AVX512DQ-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5189; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %xmm15190; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm1[8],zero,xmm1[u,7],zero,xmm1[9],zero,xmm1[u],zero,xmm1[u,10],zero,xmm1[12],zero,xmm1[u,11]5191; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm1, %xmm295192; AVX512DQ-FCP-NEXT: vmovdqa 32(%rsi), %xmm15193; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm2 = zero,xmm1[8,u],zero,xmm1[7],zero,xmm1[9,u,11,u],zero,xmm1[10],zero,xmm1[12,u],zero5194; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm1, %xmm305195; AVX512DQ-FCP-NEXT: vporq %xmm0, %xmm2, %xmm225196; AVX512DQ-FCP-NEXT: vmovdqa 32(%rcx), %ymm25197; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]5198; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm2, %ymm65199; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdx), %ymm55200; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [u,u,12,13,128,u,u,u,14,128,u,u,14,15,128,u,u,u,16,128,u,u,16,17,128,u,u,u,18,128,u,u]5201; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm5, %ymm75202; AVX512DQ-FCP-NEXT: vporq %ymm6, %ymm7, %ymm235203; AVX512DQ-FCP-NEXT: vmovdqa 32(%rcx), %xmm15204; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm6 = zero,xmm1[6],zero,xmm1[8,u],zero,xmm1[7],zero,xmm1[9],zero,xmm1[11,u],zero,xmm1[10],zero,xmm1[12]5205; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm1, %xmm315206; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdx), %xmm15207; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm1[6],zero,xmm1[8],zero,xmm1[u,7],zero,xmm1[9],zero,xmm1[11],zero,xmm1[u,10],zero,xmm1[12],zero5208; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm1, %xmm215209; AVX512DQ-FCP-NEXT: vporq %xmm6, %xmm7, %xmm245210; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %ymm65211; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm6, %ymm75212; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %ymm15213; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm1, %ymm45214; AVX512DQ-FCP-NEXT: vporq %ymm7, %ymm4, %ymm255215; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm14 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]5216; AVX512DQ-FCP-NEXT: # ymm14 = mem[0,1,0,1]5217; AVX512DQ-FCP-NEXT: vpshufb %ymm14, %ymm6, %ymm45218; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm12 = [18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25,18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25]5219; AVX512DQ-FCP-NEXT: # ymm12 = mem[0,1,0,1]5220; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm1, %ymm95221; AVX512DQ-FCP-NEXT: vporq %ymm4, %ymm9, %ymm265222; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %ymm95223; AVX512DQ-FCP-NEXT: vpshufb %ymm10, %ymm9, %ymm45224; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm105225; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm10, %ymm135226; AVX512DQ-FCP-NEXT: vporq %ymm4, %ymm13, %ymm275227; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128]5228; AVX512DQ-FCP-NEXT: # ymm11 = mem[0,1,0,1]5229; AVX512DQ-FCP-NEXT: vpshufb %ymm11, %ymm10, %ymm75230; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0,19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0]5231; AVX512DQ-FCP-NEXT: # ymm4 = mem[0,1,0,1]5232; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm9, %ymm135233; AVX512DQ-FCP-NEXT: vporq %ymm7, %ymm13, %ymm285234; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm13 = [128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128,128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128]5235; AVX512DQ-FCP-NEXT: # ymm13 = mem[0,1,0,1]5236; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm3, %ymm05237; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30,27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30]5238; AVX512DQ-FCP-NEXT: # ymm7 = mem[0,1,0,1]5239; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm8, %ymm155240; AVX512DQ-FCP-NEXT: vporq %ymm0, %ymm15, %ymm165241; AVX512DQ-FCP-NEXT: vpshufb %ymm11, %ymm3, %ymm05242; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm8, %ymm35243; AVX512DQ-FCP-NEXT: vporq %ymm0, %ymm3, %ymm175244; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128]5245; AVX512DQ-FCP-NEXT: # ymm0 = mem[0,1,0,1]5246; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm5, %ymm35247; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0,25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0]5248; AVX512DQ-FCP-NEXT: # ymm4 = mem[0,1,0,1]5249; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm85250; AVX512DQ-FCP-NEXT: vporq %ymm3, %ymm8, %ymm195251; AVX512DQ-FCP-NEXT: vpshufb %ymm14, %ymm2, %ymm25252; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm5, %ymm35253; AVX512DQ-FCP-NEXT: vporq %ymm2, %ymm3, %ymm185254; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm1, %ymm05255; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm6, %ymm15256; AVX512DQ-FCP-NEXT: vporq %ymm0, %ymm1, %ymm205257; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm10, %ymm05258; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm9, %ymm15259; AVX512DQ-FCP-NEXT: vpor %ymm0, %ymm1, %ymm05260; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm15261; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %xmm25262; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm1[8],zero,xmm1[u,7],zero,xmm1[9],zero,xmm1[u],zero,xmm1[u,10],zero,xmm1[12],zero,xmm1[u,11]5263; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm4 = zero,xmm2[8,u],zero,xmm2[7],zero,xmm2[9,u,11,u],zero,xmm2[10],zero,xmm2[12,u],zero5264; AVX512DQ-FCP-NEXT: vpor %xmm3, %xmm4, %xmm55265; AVX512DQ-FCP-NEXT: vmovdqa (%rcx), %xmm35266; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm45267; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm6 = zero,xmm3[6],zero,xmm3[8,u],zero,xmm3[7],zero,xmm3[9],zero,xmm3[11,u],zero,xmm3[10],zero,xmm3[12]5268; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm4[6],zero,xmm4[8],zero,xmm4[u,7],zero,xmm4[9],zero,xmm4[11],zero,xmm4[u,10],zero,xmm4[12],zero5269; AVX512DQ-FCP-NEXT: vpor %xmm6, %xmm7, %xmm65270; AVX512DQ-FCP-NEXT: vmovdqa 32(%r8), %ymm75271; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm8 = [12,128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128]5272; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [1,1,2,2,2,2,2,2]5273; AVX512DQ-FCP-NEXT: vpermd %ymm7, %ymm9, %ymm95274; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm7, %ymm75275; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm10 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]5276; AVX512DQ-FCP-NEXT: vpandn %ymm9, %ymm10, %ymm95277; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm7, %zmm9, %zmm75278; AVX512DQ-FCP-NEXT: vmovdqa (%r8), %ymm95279; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm11 = [4,0,5,5,5,5,0,6]5280; AVX512DQ-FCP-NEXT: vpermd %ymm9, %ymm11, %ymm115281; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm9, %ymm85282; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm9 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]5283; AVX512DQ-FCP-NEXT: vpandn %ymm11, %ymm9, %ymm115284; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm11, %zmm8, %zmm85285; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm31, %xmm115286; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm21, %xmm125287; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} 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]5288; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm12 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]5289; AVX512DQ-FCP-NEXT: vpshufb %xmm12, %xmm11, %xmm115290; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm13 = [2,2,3,3,8,8,9,9]5291; AVX512DQ-FCP-NEXT: vpermt2q %zmm11, %zmm13, %zmm205292; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm29, %xmm115293; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm30, %xmm145294; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm11 = xmm11[0],xmm14[0],xmm11[1],xmm14[1],xmm11[2],xmm14[2],xmm11[3],xmm14[3],xmm11[4],xmm14[4],xmm11[5],xmm14[5],xmm11[6],xmm14[6],xmm11[7],xmm14[7]5295; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]5296; AVX512DQ-FCP-NEXT: vpshufb %xmm14, %xmm11, %xmm115297; AVX512DQ-FCP-NEXT: vpermt2q %zmm11, %zmm13, %zmm05298; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm1 = 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]5299; AVX512DQ-FCP-NEXT: vpshufb %xmm14, %xmm1, %xmm15300; AVX512DQ-FCP-NEXT: vpunpcklbw {{.*#+}} xmm2 = 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]5301; AVX512DQ-FCP-NEXT: vpshufb %xmm12, %xmm2, %xmm25302; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm3 = [0,0,1,1,8,8,9,9]5303; AVX512DQ-FCP-NEXT: vpermt2q %zmm5, %zmm3, %zmm15304; AVX512DQ-FCP-NEXT: vpermt2q %zmm6, %zmm3, %zmm25305; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (mem & (zmm2 ^ zmm1))5306; AVX512DQ-FCP-NEXT: vmovdqa64 (%r8), %zmm15307; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm3 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]5308; AVX512DQ-FCP-NEXT: vpermd %zmm1, %zmm3, %zmm35309; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm2))5310; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm22[0,0,1,1]5311; AVX512DQ-FCP-NEXT: vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm2 # 32-byte Folded Reload5312; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm24[0,0,1,1]5313; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm23, %zmm4, %zmm45314; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm5 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0]5315; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm2 ^ (zmm5 & (zmm4 ^ zmm2))5316; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 | (zmm4 & zmm10)5317; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm2 = ymm26[2,2,3,3]5318; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm25, %zmm25319; AVX512DQ-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm28[2,2,3,3]5320; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm27, %zmm45321; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm2 ^ (zmm5 & (zmm4 ^ zmm2))5322; AVX512DQ-FCP-NEXT: vpmovsxbq {{.*#+}} zmm2 = [2,2,3,3,10,10,11,11]5323; AVX512DQ-FCP-NEXT: vpermt2q %zmm16, %zmm2, %zmm175324; AVX512DQ-FCP-NEXT: vpermt2q %zmm19, %zmm2, %zmm185325; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]5326; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm18 = zmm17 ^ (zmm2 & (zmm18 ^ zmm17))5327; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm5 = [12,0,13,13,13,13,0,14,14,14,14,0,15,15,15,15]5328; AVX512DQ-FCP-NEXT: vpermd %zmm1, %zmm5, %zmm55329; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm5 = zmm5 ^ (zmm9 & (zmm5 ^ zmm18))5330; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm0 = zmm20 ^ (zmm2 & (zmm0 ^ zmm20))5331; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm4 & mem)5332; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [6,6,6,0,7,7,7,7,0,8,8,8,8,0,9,9]5333; AVX512DQ-FCP-NEXT: vpermd %zmm1, %zmm2, %zmm15334; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm0))5335; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm3, (%r9)5336; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, 128(%r9)5337; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm5, 256(%r9)5338; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm8, 64(%r9)5339; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm7, 192(%r9)5340; AVX512DQ-FCP-NEXT: vzeroupper5341; AVX512DQ-FCP-NEXT: retq5342;5343; AVX512BW-LABEL: store_i8_stride5_vf64:5344; AVX512BW: # %bb.0:5345; AVX512BW-NEXT: vmovdqa64 (%r8), %zmm05346; AVX512BW-NEXT: vmovdqa (%rcx), %ymm15347; AVX512BW-NEXT: vpbroadcastq {{.*#+}} ymm10 = [9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12]5348; AVX512BW-NEXT: vpshufb %ymm10, %ymm1, %ymm35349; AVX512BW-NEXT: vmovdqa (%rdx), %ymm25350; AVX512BW-NEXT: vpshufhw {{.*#+}} ymm4 = ymm2[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]5351; AVX512BW-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]5352; AVX512BW-NEXT: movl $693250386, %eax # imm = 0x295229525353; AVX512BW-NEXT: kmovd %eax, %k15354; AVX512BW-NEXT: vmovdqu8 %ymm4, %ymm3 {%k1}5355; AVX512BW-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]5356; AVX512BW-NEXT: vmovdqa (%rdx), %xmm65357; AVX512BW-NEXT: vmovdqa 32(%rdx), %xmm95358; AVX512BW-NEXT: vmovdqa (%rcx), %xmm75359; AVX512BW-NEXT: vmovdqa64 32(%rcx), %xmm165360; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm16[0],xmm9[0],xmm16[1],xmm9[1],xmm16[2],xmm9[2],xmm16[3],xmm9[3],xmm16[4],xmm9[4],xmm16[5],xmm9[5],xmm16[6],xmm9[6],xmm16[7],xmm9[7]5361; AVX512BW-NEXT: vmovdqa {{.*#+}} xmm8 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]5362; AVX512BW-NEXT: vpshufb %xmm8, %xmm4, %xmm45363; AVX512BW-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]5364; AVX512BW-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm145365; AVX512BW-NEXT: vmovdqa (%rsi), %ymm35366; AVX512BW-NEXT: vpbroadcastq {{.*#+}} ymm18 = [11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14]5367; AVX512BW-NEXT: vpshufb %ymm18, %ymm3, %ymm55368; AVX512BW-NEXT: vmovdqa (%rdi), %ymm45369; AVX512BW-NEXT: vpshufhw {{.*#+}} ymm11 = ymm4[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]5370; AVX512BW-NEXT: vpshufd {{.*#+}} ymm11 = ymm11[2,2,3,3,6,6,7,7]5371; AVX512BW-NEXT: movl $1251232404, %eax # imm = 0x4A944A945372; AVX512BW-NEXT: kmovd %eax, %k55373; AVX512BW-NEXT: vmovdqu8 %ymm11, %ymm5 {%k5}5374; AVX512BW-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]5375; AVX512BW-NEXT: vmovdqa (%rsi), %xmm115376; AVX512BW-NEXT: vmovdqa64 32(%rsi), %xmm175377; AVX512BW-NEXT: vmovdqa (%rdi), %xmm125378; AVX512BW-NEXT: vmovdqa64 32(%rdi), %xmm225379; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm15 = xmm22[0],xmm17[0],xmm22[1],xmm17[1],xmm22[2],xmm17[2],xmm22[3],xmm17[3],xmm22[4],xmm17[4],xmm22[5],xmm17[5],xmm22[6],xmm17[6],xmm22[7],xmm17[7]5380; AVX512BW-NEXT: vmovdqa {{.*#+}} xmm13 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]5381; AVX512BW-NEXT: vpshufb %xmm13, %xmm15, %xmm155382; AVX512BW-NEXT: vpermq {{.*#+}} ymm15 = ymm15[0,0,1,1]5383; AVX512BW-NEXT: vinserti64x4 $1, %ymm15, %zmm5, %zmm55384; AVX512BW-NEXT: movabsq $1785168781326730801, %rax # imm = 0x18C6318C6318C6315385; AVX512BW-NEXT: kmovq %rax, %k45386; AVX512BW-NEXT: vmovdqu8 %zmm14, %zmm5 {%k4}5387; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm14 = [6,6,6,6,7,7,7,7,8,8,8,8,8,8,9,9]5388; AVX512BW-NEXT: vpermd %zmm0, %zmm14, %zmm145389; AVX512BW-NEXT: movabsq $2380225041768974402, %rax # imm = 0x21084210842108425390; AVX512BW-NEXT: kmovq %rax, %k25391; AVX512BW-NEXT: vmovdqu8 %zmm14, %zmm5 {%k2}5392; AVX512BW-NEXT: vmovdqa64 32(%rdx), %ymm255393; AVX512BW-NEXT: vmovdqa {{.*#+}} ymm14 = [128,128,12,13,128,128,128,128,14,128,128,128,14,15,128,128,128,128,16,128,128,128,16,17,128,128,128,128,18,128,128,128]5394; AVX512BW-NEXT: vpshufb %ymm14, %ymm25, %ymm195395; AVX512BW-NEXT: vmovdqa64 32(%rcx), %ymm265396; AVX512BW-NEXT: vmovdqa {{.*#+}} ymm15 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]5397; AVX512BW-NEXT: vpshufb %ymm15, %ymm26, %ymm205398; AVX512BW-NEXT: vporq %ymm19, %ymm20, %ymm215399; AVX512BW-NEXT: vmovdqa64 {{.*#+}} xmm19 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]5400; AVX512BW-NEXT: vpshufb %xmm19, %xmm16, %xmm165401; AVX512BW-NEXT: vmovdqa64 {{.*#+}} xmm20 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]5402; AVX512BW-NEXT: vpshufb %xmm20, %xmm9, %xmm95403; AVX512BW-NEXT: vporq %xmm16, %xmm9, %xmm95404; AVX512BW-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]5405; AVX512BW-NEXT: vinserti64x4 $1, %ymm21, %zmm9, %zmm95406; AVX512BW-NEXT: vmovdqa64 {{.*#+}} xmm21 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]5407; AVX512BW-NEXT: vpshufb %xmm21, %xmm22, %xmm165408; AVX512BW-NEXT: vmovdqa64 {{.*#+}} xmm22 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]5409; AVX512BW-NEXT: vpshufb %xmm22, %xmm17, %xmm175410; AVX512BW-NEXT: vporq %xmm16, %xmm17, %xmm165411; AVX512BW-NEXT: vpermq {{.*#+}} ymm23 = ymm16[0,0,1,1]5412; AVX512BW-NEXT: vmovdqa64 32(%rdi), %ymm275413; AVX512BW-NEXT: vpmovsxbd {{.*#+}} ymm16 = [3,3,3,0,4,4,4,4]5414; AVX512BW-NEXT: vpermd %ymm27, %ymm16, %ymm245415; AVX512BW-NEXT: vmovdqa64 32(%rsi), %ymm285416; AVX512BW-NEXT: vpbroadcastq {{.*#+}} ymm17 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]5417; AVX512BW-NEXT: movl $138547332, %eax # imm = 0x84210845418; AVX512BW-NEXT: kmovd %eax, %k25419; AVX512BW-NEXT: vpshufb %ymm17, %ymm28, %ymm24 {%k2}5420; AVX512BW-NEXT: vinserti64x4 $1, %ymm24, %zmm23, %zmm235421; AVX512BW-NEXT: movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C63185422; AVX512BW-NEXT: kmovq %rax, %k35423; AVX512BW-NEXT: vmovdqu8 %zmm23, %zmm9 {%k3}5424; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm23 = [9,9,10,10,10,10,10,10,11,11,11,11,0,12,12,12]5425; AVX512BW-NEXT: vpermd %zmm0, %zmm23, %zmm235426; AVX512BW-NEXT: movabsq $4760450083537948804, %rax # imm = 0x42108421084210845427; AVX512BW-NEXT: kmovq %rax, %k65428; AVX512BW-NEXT: vmovdqu8 %zmm23, %zmm9 {%k6}5429; AVX512BW-NEXT: vbroadcasti32x4 {{.*#+}} ymm23 = [19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128]5430; AVX512BW-NEXT: # ymm23 = mem[0,1,2,3,0,1,2,3]5431; AVX512BW-NEXT: vpshufb %ymm23, %ymm28, %ymm295432; AVX512BW-NEXT: vmovdqa64 {{.*#+}} ymm24 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128]5433; AVX512BW-NEXT: vpshufb %ymm24, %ymm27, %ymm305434; AVX512BW-NEXT: vporq %ymm29, %ymm30, %ymm295435; AVX512BW-NEXT: vpshufb %ymm18, %ymm28, %ymm185436; AVX512BW-NEXT: vpshufhw {{.*#+}} ymm27 = ymm27[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]5437; AVX512BW-NEXT: vpshufd {{.*#+}} ymm27 = ymm27[2,2,3,3,6,6,7,7]5438; AVX512BW-NEXT: vmovdqu8 %ymm27, %ymm18 {%k5}5439; AVX512BW-NEXT: vinserti64x4 $1, %ymm18, %zmm29, %zmm185440; AVX512BW-NEXT: vpermq {{.*#+}} zmm18 = zmm18[2,2,3,3,6,6,7,7]5441; AVX512BW-NEXT: vmovdqa64 {{.*#+}} ymm27 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25]5442; AVX512BW-NEXT: vpshufb %ymm27, %ymm25, %ymm285443; AVX512BW-NEXT: vbroadcasti32x4 {{.*#+}} ymm29 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]5444; AVX512BW-NEXT: # ymm29 = mem[0,1,2,3,0,1,2,3]5445; AVX512BW-NEXT: vpshufb %ymm29, %ymm26, %ymm305446; AVX512BW-NEXT: vporq %ymm28, %ymm30, %ymm285447; AVX512BW-NEXT: vpshufb %ymm10, %ymm26, %ymm105448; AVX512BW-NEXT: vpshufhw {{.*#+}} ymm25 = ymm25[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]5449; AVX512BW-NEXT: vpshufd {{.*#+}} ymm25 = ymm25[2,2,3,3,6,6,7,7]5450; AVX512BW-NEXT: vmovdqu8 %ymm25, %ymm10 {%k1}5451; AVX512BW-NEXT: vinserti64x4 $1, %ymm10, %zmm28, %zmm105452; AVX512BW-NEXT: vpermq {{.*#+}} zmm10 = zmm10[2,2,3,3,6,6,7,7]5453; AVX512BW-NEXT: vmovdqu8 %zmm18, %zmm10 {%k4}5454; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm18 = [12,14,13,13,13,13,12,14,14,14,14,14,15,15,15,15]5455; AVX512BW-NEXT: vpermd %zmm0, %zmm18, %zmm185456; AVX512BW-NEXT: movabsq $-8925843906633654008, %rax # imm = 0x84210842108421085457; AVX512BW-NEXT: kmovq %rax, %k15458; AVX512BW-NEXT: vmovdqu8 %zmm18, %zmm10 {%k1}5459; AVX512BW-NEXT: vpshufb %xmm19, %xmm7, %xmm185460; AVX512BW-NEXT: vpshufb %xmm20, %xmm6, %xmm195461; AVX512BW-NEXT: vporq %xmm18, %xmm19, %xmm185462; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm6 = 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]5463; AVX512BW-NEXT: vpshufb %xmm8, %xmm6, %xmm65464; AVX512BW-NEXT: vinserti32x4 $2, %xmm18, %zmm6, %zmm65465; AVX512BW-NEXT: vpermq {{.*#+}} zmm6 = zmm6[0,0,1,1,4,4,5,5]5466; AVX512BW-NEXT: vpshufb %xmm21, %xmm12, %xmm75467; AVX512BW-NEXT: vpshufb %xmm22, %xmm11, %xmm85468; AVX512BW-NEXT: vpor %xmm7, %xmm8, %xmm75469; AVX512BW-NEXT: vpunpcklbw {{.*#+}} xmm8 = 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]5470; AVX512BW-NEXT: vpshufb %xmm13, %xmm8, %xmm85471; AVX512BW-NEXT: vinserti32x4 $2, %xmm7, %zmm8, %zmm75472; AVX512BW-NEXT: vpermq {{.*#+}} zmm7 = zmm7[0,0,1,1,4,4,5,5]5473; AVX512BW-NEXT: movabsq $-4165393823095705204, %rax # imm = 0xC6318C6318C6318C5474; AVX512BW-NEXT: kmovq %rax, %k15475; AVX512BW-NEXT: vmovdqu8 %zmm6, %zmm7 {%k1}5476; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm6 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]5477; AVX512BW-NEXT: vpermd %zmm0, %zmm6, %zmm65478; AVX512BW-NEXT: movabsq $595056260442243600, %rax # imm = 0x8421084210842105479; AVX512BW-NEXT: kmovq %rax, %k15480; AVX512BW-NEXT: vmovdqu8 %zmm6, %zmm7 {%k1}5481; AVX512BW-NEXT: vpshufb %ymm14, %ymm2, %ymm65482; AVX512BW-NEXT: vpshufb %ymm15, %ymm1, %ymm85483; AVX512BW-NEXT: vpor %ymm6, %ymm8, %ymm65484; AVX512BW-NEXT: vpshufb %ymm27, %ymm2, %ymm25485; AVX512BW-NEXT: vpshufb %ymm29, %ymm1, %ymm15486; AVX512BW-NEXT: vpor %ymm2, %ymm1, %ymm15487; AVX512BW-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]5488; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm6, %zmm15489; AVX512BW-NEXT: vpshufb %ymm23, %ymm3, %ymm25490; AVX512BW-NEXT: vpshufb %ymm24, %ymm4, %ymm65491; AVX512BW-NEXT: vpor %ymm2, %ymm6, %ymm25492; AVX512BW-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]5493; AVX512BW-NEXT: vpermd %ymm4, %ymm16, %ymm45494; AVX512BW-NEXT: vpshufb %ymm17, %ymm3, %ymm4 {%k2}5495; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm4, %zmm25496; AVX512BW-NEXT: vmovdqu8 %zmm1, %zmm2 {%k3}5497; AVX512BW-NEXT: vpmovsxbd {{.*#+}} zmm1 = [3,3,3,3,0,4,4,4,4,6,5,5,5,5,4,6]5498; AVX512BW-NEXT: vpermd %zmm0, %zmm1, %zmm05499; AVX512BW-NEXT: movabsq $1190112520884487201, %rax # imm = 0x10842108421084215500; AVX512BW-NEXT: kmovq %rax, %k15501; AVX512BW-NEXT: vmovdqu8 %zmm0, %zmm2 {%k1}5502; AVX512BW-NEXT: vmovdqa64 %zmm2, 64(%r9)5503; AVX512BW-NEXT: vmovdqa64 %zmm7, (%r9)5504; AVX512BW-NEXT: vmovdqa64 %zmm10, 256(%r9)5505; AVX512BW-NEXT: vmovdqa64 %zmm9, 192(%r9)5506; AVX512BW-NEXT: vmovdqa64 %zmm5, 128(%r9)5507; AVX512BW-NEXT: vzeroupper5508; AVX512BW-NEXT: retq5509;5510; AVX512BW-FCP-LABEL: store_i8_stride5_vf64:5511; AVX512BW-FCP: # %bb.0:5512; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm75513; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm95514; AVX512BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm35515; AVX512BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm55516; AVX512BW-FCP-NEXT: vmovdqa64 (%r8), %zmm05517; AVX512BW-FCP-NEXT: vmovdqa 32(%rdx), %ymm15518; AVX512BW-FCP-NEXT: vmovdqa {{.*#+}} ymm13 = [128,128,12,13,128,128,128,128,14,128,128,128,14,15,128,128,128,128,16,128,128,128,16,17,128,128,128,128,18,128,128,128]5519; AVX512BW-FCP-NEXT: vpshufb %ymm13, %ymm1, %ymm15520; AVX512BW-FCP-NEXT: vmovdqa 32(%rcx), %ymm25521; AVX512BW-FCP-NEXT: vmovdqa {{.*#+}} ymm14 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]5522; AVX512BW-FCP-NEXT: vpshufb %ymm14, %ymm2, %ymm25523; AVX512BW-FCP-NEXT: vpor %ymm1, %ymm2, %ymm15524; AVX512BW-FCP-NEXT: vmovdqa (%rcx), %xmm105525; AVX512BW-FCP-NEXT: vmovdqa 32(%rcx), %xmm25526; AVX512BW-FCP-NEXT: vmovdqa {{.*#+}} xmm11 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]5527; AVX512BW-FCP-NEXT: vpshufb %xmm11, %xmm2, %xmm45528; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm125529; AVX512BW-FCP-NEXT: vmovdqa 32(%rdx), %xmm65530; AVX512BW-FCP-NEXT: vmovdqa64 {{.*#+}} xmm17 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]5531; AVX512BW-FCP-NEXT: vpshufb %xmm17, %xmm6, %xmm85532; AVX512BW-FCP-NEXT: vpor %xmm4, %xmm8, %xmm45533; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]5534; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm4, %zmm15535; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %xmm185536; AVX512BW-FCP-NEXT: vmovdqa 32(%rdi), %xmm45537; AVX512BW-FCP-NEXT: vmovdqa64 {{.*#+}} xmm19 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]5538; AVX512BW-FCP-NEXT: vpshufb %xmm19, %xmm4, %xmm155539; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %xmm205540; AVX512BW-FCP-NEXT: vmovdqa 32(%rsi), %xmm85541; AVX512BW-FCP-NEXT: vmovdqa64 {{.*#+}} xmm21 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]5542; AVX512BW-FCP-NEXT: vpshufb %xmm21, %xmm8, %xmm165543; AVX512BW-FCP-NEXT: vporq %xmm15, %xmm16, %xmm155544; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm22 = ymm15[0,0,1,1]5545; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} ymm15 = [3,3,3,0,4,4,4,4]5546; AVX512BW-FCP-NEXT: vpermd 32(%rdi), %ymm15, %ymm235547; AVX512BW-FCP-NEXT: vmovdqa64 32(%rsi), %ymm245548; AVX512BW-FCP-NEXT: vpbroadcastq {{.*#+}} ymm16 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]5549; AVX512BW-FCP-NEXT: movl $138547332, %eax # imm = 0x84210845550; AVX512BW-FCP-NEXT: kmovd %eax, %k15551; AVX512BW-FCP-NEXT: vpshufb %ymm16, %ymm24, %ymm23 {%k1}5552; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm23, %zmm22, %zmm225553; AVX512BW-FCP-NEXT: movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C63185554; AVX512BW-FCP-NEXT: kmovq %rax, %k25555; AVX512BW-FCP-NEXT: vmovdqu8 %zmm22, %zmm1 {%k2}5556; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm22 = [9,9,10,10,10,10,10,10,11,11,11,11,0,12,12,12]5557; AVX512BW-FCP-NEXT: vpermd %zmm0, %zmm22, %zmm225558; AVX512BW-FCP-NEXT: movabsq $4760450083537948804, %rax # imm = 0x42108421084210845559; AVX512BW-FCP-NEXT: kmovq %rax, %k35560; AVX512BW-FCP-NEXT: vmovdqu8 %zmm22, %zmm1 {%k3}5561; AVX512BW-FCP-NEXT: vpshufb %xmm11, %xmm10, %xmm115562; AVX512BW-FCP-NEXT: vpshufb %xmm17, %xmm12, %xmm175563; AVX512BW-FCP-NEXT: vporq %xmm11, %xmm17, %xmm115564; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm10 = xmm10[0],xmm12[0],xmm10[1],xmm12[1],xmm10[2],xmm12[2],xmm10[3],xmm12[3],xmm10[4],xmm12[4],xmm10[5],xmm12[5],xmm10[6],xmm12[6],xmm10[7],xmm12[7]5565; AVX512BW-FCP-NEXT: vmovdqa {{.*#+}} xmm12 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]5566; AVX512BW-FCP-NEXT: vpshufb %xmm12, %xmm10, %xmm105567; AVX512BW-FCP-NEXT: vinserti32x4 $2, %xmm11, %zmm10, %zmm105568; AVX512BW-FCP-NEXT: vpermq {{.*#+}} zmm17 = zmm10[0,0,1,1,4,4,5,5]5569; AVX512BW-FCP-NEXT: vpshufb %xmm19, %xmm18, %xmm105570; AVX512BW-FCP-NEXT: vpshufb %xmm21, %xmm20, %xmm115571; AVX512BW-FCP-NEXT: vpor %xmm10, %xmm11, %xmm105572; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm18 = xmm18[0],xmm20[0],xmm18[1],xmm20[1],xmm18[2],xmm20[2],xmm18[3],xmm20[3],xmm18[4],xmm20[4],xmm18[5],xmm20[5],xmm18[6],xmm20[6],xmm18[7],xmm20[7]5573; AVX512BW-FCP-NEXT: vmovdqa {{.*#+}} xmm11 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]5574; AVX512BW-FCP-NEXT: vpshufb %xmm11, %xmm18, %xmm185575; AVX512BW-FCP-NEXT: vinserti32x4 $2, %xmm10, %zmm18, %zmm105576; AVX512BW-FCP-NEXT: vpermq {{.*#+}} zmm10 = zmm10[0,0,1,1,4,4,5,5]5577; AVX512BW-FCP-NEXT: movabsq $-4165393823095705204, %rax # imm = 0xC6318C6318C6318C5578; AVX512BW-FCP-NEXT: kmovq %rax, %k35579; AVX512BW-FCP-NEXT: vmovdqu8 %zmm17, %zmm10 {%k3}5580; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm17 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]5581; AVX512BW-FCP-NEXT: vpermd %zmm0, %zmm17, %zmm175582; AVX512BW-FCP-NEXT: movabsq $595056260442243600, %rax # imm = 0x8421084210842105583; AVX512BW-FCP-NEXT: kmovq %rax, %k35584; AVX512BW-FCP-NEXT: vmovdqu8 %zmm17, %zmm10 {%k3}5585; AVX512BW-FCP-NEXT: vmovdqa64 (%rdx), %ymm175586; AVX512BW-FCP-NEXT: vpshufb %ymm13, %ymm17, %ymm135587; AVX512BW-FCP-NEXT: vmovdqa64 (%rcx), %ymm185588; AVX512BW-FCP-NEXT: vpshufb %ymm14, %ymm18, %ymm145589; AVX512BW-FCP-NEXT: vpor %ymm13, %ymm14, %ymm135590; AVX512BW-FCP-NEXT: vmovdqa64 {{.*#+}} zmm14 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128]5591; AVX512BW-FCP-NEXT: vpshufb %ymm14, %ymm17, %ymm195592; AVX512BW-FCP-NEXT: vmovdqa64 {{.*#+}} zmm20 = [u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128]5593; AVX512BW-FCP-NEXT: vpshufb %ymm20, %ymm18, %ymm215594; AVX512BW-FCP-NEXT: vporq %ymm19, %ymm21, %ymm195595; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm19 = ymm19[2,2,3,3]5596; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm19, %zmm13, %zmm135597; AVX512BW-FCP-NEXT: vmovdqa64 {{.*#+}} zmm19 = [u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,128,128,26,128,28,128,128,128,128,29,128,31,128,128,30]5598; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %ymm215599; AVX512BW-FCP-NEXT: vpshufb %ymm19, %ymm21, %ymm225600; AVX512BW-FCP-NEXT: vmovdqa64 {{.*#+}} zmm23 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128]5601; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %ymm245602; AVX512BW-FCP-NEXT: vpshufb %ymm23, %ymm24, %ymm255603; AVX512BW-FCP-NEXT: vporq %ymm22, %ymm25, %ymm225604; AVX512BW-FCP-NEXT: vpermq {{.*#+}} ymm22 = ymm22[2,2,3,3]5605; AVX512BW-FCP-NEXT: vpermd %ymm24, %ymm15, %ymm155606; AVX512BW-FCP-NEXT: vpshufb %ymm16, %ymm21, %ymm15 {%k1}5607; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm22, %zmm15, %zmm155608; AVX512BW-FCP-NEXT: vmovdqu8 %zmm13, %zmm15 {%k2}5609; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm13 = [3,3,3,3,0,4,4,4,4,6,5,5,5,5,4,6]5610; AVX512BW-FCP-NEXT: vpermd %zmm0, %zmm13, %zmm135611; AVX512BW-FCP-NEXT: movabsq $1190112520884487201, %rax # imm = 0x10842108421084215612; AVX512BW-FCP-NEXT: kmovq %rax, %k15613; AVX512BW-FCP-NEXT: vmovdqu8 %zmm13, %zmm15 {%k1}5614; AVX512BW-FCP-NEXT: vshufi64x2 {{.*#+}} zmm9 = zmm9[4,5,6,7,4,5,6,7]5615; AVX512BW-FCP-NEXT: vpshufb %zmm19, %zmm9, %zmm95616; AVX512BW-FCP-NEXT: vshufi64x2 {{.*#+}} zmm7 = zmm7[4,5,6,7,4,5,6,7]5617; AVX512BW-FCP-NEXT: vpshufb %zmm23, %zmm7, %zmm75618; AVX512BW-FCP-NEXT: vporq %zmm9, %zmm7, %zmm75619; AVX512BW-FCP-NEXT: vpermq {{.*#+}} zmm7 = zmm7[2,2,3,3,6,6,7,7]5620; AVX512BW-FCP-NEXT: vshufi64x2 {{.*#+}} zmm9 = zmm3[4,5,6,7],zmm5[4,5,6,7]5621; AVX512BW-FCP-NEXT: vpshufb %zmm14, %zmm9, %zmm95622; AVX512BW-FCP-NEXT: vshufi64x2 {{.*#+}} zmm3 = zmm5[4,5,6,7],zmm3[4,5,6,7]5623; AVX512BW-FCP-NEXT: vpshufb %zmm20, %zmm3, %zmm35624; AVX512BW-FCP-NEXT: vporq %zmm9, %zmm3, %zmm35625; AVX512BW-FCP-NEXT: vpermq {{.*#+}} zmm3 = zmm3[2,2,3,3,6,6,7,7]5626; AVX512BW-FCP-NEXT: movabsq $1785168781326730801, %rax # imm = 0x18C6318C6318C6315627; AVX512BW-FCP-NEXT: kmovq %rax, %k15628; AVX512BW-FCP-NEXT: vmovdqu8 %zmm7, %zmm3 {%k1}5629; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm5 = [12,14,13,13,13,13,12,14,14,14,14,14,15,15,15,15]5630; AVX512BW-FCP-NEXT: vpermd %zmm0, %zmm5, %zmm55631; AVX512BW-FCP-NEXT: movabsq $-8925843906633654008, %rax # imm = 0x84210842108421085632; AVX512BW-FCP-NEXT: kmovq %rax, %k25633; AVX512BW-FCP-NEXT: vmovdqu8 %zmm5, %zmm3 {%k2}5634; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} 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]5635; AVX512BW-FCP-NEXT: vpshufb %xmm12, %xmm2, %xmm25636; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm18[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm18[27],zero,zero,ymm18[26],zero,ymm18[28],zero,ymm18[30],zero,zero,ymm18[29],zero,ymm18[31],zero5637; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm6 = ymm17[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm17[27],zero,zero,ymm17[26],zero,ymm17[28],zero,ymm17[30],zero,zero,ymm17[29],zero,ymm17[31],zero,zero5638; AVX512BW-FCP-NEXT: vpor %ymm5, %ymm6, %ymm55639; AVX512BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm6 = [2,2,3,3,8,8,9,9]5640; AVX512BW-FCP-NEXT: vpermt2q %zmm2, %zmm6, %zmm55641; AVX512BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm2 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],xmm8[3],xmm4[4],xmm8[4],xmm4[5],xmm8[5],xmm4[6],xmm8[6],xmm4[7],xmm8[7]5642; AVX512BW-FCP-NEXT: vpshufb %xmm11, %xmm2, %xmm25643; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm21[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm21[26],zero,ymm21[28],zero,zero,zero,zero,ymm21[29],zero,ymm21[31],zero,zero,ymm21[30]5644; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm24[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm24[26],zero,ymm24[28],zero,zero,ymm24[27],zero,ymm24[29],zero,ymm24[31],zero,zero,ymm24[30],zero5645; AVX512BW-FCP-NEXT: vpor %ymm4, %ymm7, %ymm45646; AVX512BW-FCP-NEXT: vpermt2q %zmm2, %zmm6, %zmm45647; AVX512BW-FCP-NEXT: vmovdqu8 %zmm5, %zmm4 {%k1}5648; AVX512BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [6,6,6,6,7,7,7,7,8,8,8,8,8,8,9,9]5649; AVX512BW-FCP-NEXT: vpermd %zmm0, %zmm2, %zmm05650; AVX512BW-FCP-NEXT: movabsq $2380225041768974402, %rax # imm = 0x21084210842108425651; AVX512BW-FCP-NEXT: kmovq %rax, %k15652; AVX512BW-FCP-NEXT: vmovdqu8 %zmm0, %zmm4 {%k1}5653; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, 128(%r9)5654; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, 256(%r9)5655; AVX512BW-FCP-NEXT: vmovdqa64 %zmm15, 64(%r9)5656; AVX512BW-FCP-NEXT: vmovdqa64 %zmm10, (%r9)5657; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, 192(%r9)5658; AVX512BW-FCP-NEXT: vzeroupper5659; AVX512BW-FCP-NEXT: retq5660;5661; AVX512DQ-BW-LABEL: store_i8_stride5_vf64:5662; AVX512DQ-BW: # %bb.0:5663; AVX512DQ-BW-NEXT: vmovdqa64 (%r8), %zmm05664; AVX512DQ-BW-NEXT: vmovdqa (%rcx), %ymm15665; AVX512DQ-BW-NEXT: vpbroadcastq {{.*#+}} ymm10 = [9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12]5666; AVX512DQ-BW-NEXT: vpshufb %ymm10, %ymm1, %ymm35667; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %ymm25668; AVX512DQ-BW-NEXT: vpshufhw {{.*#+}} ymm4 = ymm2[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]5669; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]5670; AVX512DQ-BW-NEXT: movl $693250386, %eax # imm = 0x295229525671; AVX512DQ-BW-NEXT: kmovd %eax, %k15672; AVX512DQ-BW-NEXT: vmovdqu8 %ymm4, %ymm3 {%k1}5673; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]5674; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm65675; AVX512DQ-BW-NEXT: vmovdqa 32(%rdx), %xmm95676; AVX512DQ-BW-NEXT: vmovdqa (%rcx), %xmm75677; AVX512DQ-BW-NEXT: vmovdqa64 32(%rcx), %xmm165678; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm4 = xmm16[0],xmm9[0],xmm16[1],xmm9[1],xmm16[2],xmm9[2],xmm16[3],xmm9[3],xmm16[4],xmm9[4],xmm16[5],xmm9[5],xmm16[6],xmm9[6],xmm16[7],xmm9[7]5679; AVX512DQ-BW-NEXT: vmovdqa {{.*#+}} xmm8 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]5680; AVX512DQ-BW-NEXT: vpshufb %xmm8, %xmm4, %xmm45681; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]5682; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm145683; AVX512DQ-BW-NEXT: vmovdqa (%rsi), %ymm35684; AVX512DQ-BW-NEXT: vpbroadcastq {{.*#+}} ymm18 = [11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14]5685; AVX512DQ-BW-NEXT: vpshufb %ymm18, %ymm3, %ymm55686; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %ymm45687; AVX512DQ-BW-NEXT: vpshufhw {{.*#+}} ymm11 = ymm4[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]5688; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} ymm11 = ymm11[2,2,3,3,6,6,7,7]5689; AVX512DQ-BW-NEXT: movl $1251232404, %eax # imm = 0x4A944A945690; AVX512DQ-BW-NEXT: kmovd %eax, %k55691; AVX512DQ-BW-NEXT: vmovdqu8 %ymm11, %ymm5 {%k5}5692; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]5693; AVX512DQ-BW-NEXT: vmovdqa (%rsi), %xmm115694; AVX512DQ-BW-NEXT: vmovdqa64 32(%rsi), %xmm175695; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm125696; AVX512DQ-BW-NEXT: vmovdqa64 32(%rdi), %xmm225697; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm15 = xmm22[0],xmm17[0],xmm22[1],xmm17[1],xmm22[2],xmm17[2],xmm22[3],xmm17[3],xmm22[4],xmm17[4],xmm22[5],xmm17[5],xmm22[6],xmm17[6],xmm22[7],xmm17[7]5698; AVX512DQ-BW-NEXT: vmovdqa {{.*#+}} xmm13 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]5699; AVX512DQ-BW-NEXT: vpshufb %xmm13, %xmm15, %xmm155700; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm15 = ymm15[0,0,1,1]5701; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm15, %zmm5, %zmm55702; AVX512DQ-BW-NEXT: movabsq $1785168781326730801, %rax # imm = 0x18C6318C6318C6315703; AVX512DQ-BW-NEXT: kmovq %rax, %k45704; AVX512DQ-BW-NEXT: vmovdqu8 %zmm14, %zmm5 {%k4}5705; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm14 = [6,6,6,6,7,7,7,7,8,8,8,8,8,8,9,9]5706; AVX512DQ-BW-NEXT: vpermd %zmm0, %zmm14, %zmm145707; AVX512DQ-BW-NEXT: movabsq $2380225041768974402, %rax # imm = 0x21084210842108425708; AVX512DQ-BW-NEXT: kmovq %rax, %k25709; AVX512DQ-BW-NEXT: vmovdqu8 %zmm14, %zmm5 {%k2}5710; AVX512DQ-BW-NEXT: vmovdqa64 32(%rdx), %ymm255711; AVX512DQ-BW-NEXT: vmovdqa {{.*#+}} ymm14 = [128,128,12,13,128,128,128,128,14,128,128,128,14,15,128,128,128,128,16,128,128,128,16,17,128,128,128,128,18,128,128,128]5712; AVX512DQ-BW-NEXT: vpshufb %ymm14, %ymm25, %ymm195713; AVX512DQ-BW-NEXT: vmovdqa64 32(%rcx), %ymm265714; AVX512DQ-BW-NEXT: vmovdqa {{.*#+}} ymm15 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]5715; AVX512DQ-BW-NEXT: vpshufb %ymm15, %ymm26, %ymm205716; AVX512DQ-BW-NEXT: vporq %ymm19, %ymm20, %ymm215717; AVX512DQ-BW-NEXT: vmovdqa64 {{.*#+}} xmm19 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]5718; AVX512DQ-BW-NEXT: vpshufb %xmm19, %xmm16, %xmm165719; AVX512DQ-BW-NEXT: vmovdqa64 {{.*#+}} xmm20 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]5720; AVX512DQ-BW-NEXT: vpshufb %xmm20, %xmm9, %xmm95721; AVX512DQ-BW-NEXT: vporq %xmm16, %xmm9, %xmm95722; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]5723; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm21, %zmm9, %zmm95724; AVX512DQ-BW-NEXT: vmovdqa64 {{.*#+}} xmm21 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]5725; AVX512DQ-BW-NEXT: vpshufb %xmm21, %xmm22, %xmm165726; AVX512DQ-BW-NEXT: vmovdqa64 {{.*#+}} xmm22 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]5727; AVX512DQ-BW-NEXT: vpshufb %xmm22, %xmm17, %xmm175728; AVX512DQ-BW-NEXT: vporq %xmm16, %xmm17, %xmm165729; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm23 = ymm16[0,0,1,1]5730; AVX512DQ-BW-NEXT: vmovdqa64 32(%rdi), %ymm275731; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} ymm16 = [3,3,3,0,4,4,4,4]5732; AVX512DQ-BW-NEXT: vpermd %ymm27, %ymm16, %ymm245733; AVX512DQ-BW-NEXT: vmovdqa64 32(%rsi), %ymm285734; AVX512DQ-BW-NEXT: vpbroadcastq {{.*#+}} ymm17 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]5735; AVX512DQ-BW-NEXT: movl $138547332, %eax # imm = 0x84210845736; AVX512DQ-BW-NEXT: kmovd %eax, %k25737; AVX512DQ-BW-NEXT: vpshufb %ymm17, %ymm28, %ymm24 {%k2}5738; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm24, %zmm23, %zmm235739; AVX512DQ-BW-NEXT: movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C63185740; AVX512DQ-BW-NEXT: kmovq %rax, %k35741; AVX512DQ-BW-NEXT: vmovdqu8 %zmm23, %zmm9 {%k3}5742; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm23 = [9,9,10,10,10,10,10,10,11,11,11,11,0,12,12,12]5743; AVX512DQ-BW-NEXT: vpermd %zmm0, %zmm23, %zmm235744; AVX512DQ-BW-NEXT: movabsq $4760450083537948804, %rax # imm = 0x42108421084210845745; AVX512DQ-BW-NEXT: kmovq %rax, %k65746; AVX512DQ-BW-NEXT: vmovdqu8 %zmm23, %zmm9 {%k6}5747; AVX512DQ-BW-NEXT: vbroadcasti32x4 {{.*#+}} ymm23 = [19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128]5748; AVX512DQ-BW-NEXT: # ymm23 = mem[0,1,2,3,0,1,2,3]5749; AVX512DQ-BW-NEXT: vpshufb %ymm23, %ymm28, %ymm295750; AVX512DQ-BW-NEXT: vmovdqa64 {{.*#+}} ymm24 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128]5751; AVX512DQ-BW-NEXT: vpshufb %ymm24, %ymm27, %ymm305752; AVX512DQ-BW-NEXT: vporq %ymm29, %ymm30, %ymm295753; AVX512DQ-BW-NEXT: vpshufb %ymm18, %ymm28, %ymm185754; AVX512DQ-BW-NEXT: vpshufhw {{.*#+}} ymm27 = ymm27[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]5755; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} ymm27 = ymm27[2,2,3,3,6,6,7,7]5756; AVX512DQ-BW-NEXT: vmovdqu8 %ymm27, %ymm18 {%k5}5757; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm18, %zmm29, %zmm185758; AVX512DQ-BW-NEXT: vpermq {{.*#+}} zmm18 = zmm18[2,2,3,3,6,6,7,7]5759; AVX512DQ-BW-NEXT: vmovdqa64 {{.*#+}} ymm27 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25]5760; AVX512DQ-BW-NEXT: vpshufb %ymm27, %ymm25, %ymm285761; AVX512DQ-BW-NEXT: vbroadcasti32x4 {{.*#+}} ymm29 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]5762; AVX512DQ-BW-NEXT: # ymm29 = mem[0,1,2,3,0,1,2,3]5763; AVX512DQ-BW-NEXT: vpshufb %ymm29, %ymm26, %ymm305764; AVX512DQ-BW-NEXT: vporq %ymm28, %ymm30, %ymm285765; AVX512DQ-BW-NEXT: vpshufb %ymm10, %ymm26, %ymm105766; AVX512DQ-BW-NEXT: vpshufhw {{.*#+}} ymm25 = ymm25[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]5767; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} ymm25 = ymm25[2,2,3,3,6,6,7,7]5768; AVX512DQ-BW-NEXT: vmovdqu8 %ymm25, %ymm10 {%k1}5769; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm10, %zmm28, %zmm105770; AVX512DQ-BW-NEXT: vpermq {{.*#+}} zmm10 = zmm10[2,2,3,3,6,6,7,7]5771; AVX512DQ-BW-NEXT: vmovdqu8 %zmm18, %zmm10 {%k4}5772; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm18 = [12,14,13,13,13,13,12,14,14,14,14,14,15,15,15,15]5773; AVX512DQ-BW-NEXT: vpermd %zmm0, %zmm18, %zmm185774; AVX512DQ-BW-NEXT: movabsq $-8925843906633654008, %rax # imm = 0x84210842108421085775; AVX512DQ-BW-NEXT: kmovq %rax, %k15776; AVX512DQ-BW-NEXT: vmovdqu8 %zmm18, %zmm10 {%k1}5777; AVX512DQ-BW-NEXT: vpshufb %xmm19, %xmm7, %xmm185778; AVX512DQ-BW-NEXT: vpshufb %xmm20, %xmm6, %xmm195779; AVX512DQ-BW-NEXT: vporq %xmm18, %xmm19, %xmm185780; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm6 = 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]5781; AVX512DQ-BW-NEXT: vpshufb %xmm8, %xmm6, %xmm65782; AVX512DQ-BW-NEXT: vinserti32x4 $2, %xmm18, %zmm6, %zmm65783; AVX512DQ-BW-NEXT: vpermq {{.*#+}} zmm6 = zmm6[0,0,1,1,4,4,5,5]5784; AVX512DQ-BW-NEXT: vpshufb %xmm21, %xmm12, %xmm75785; AVX512DQ-BW-NEXT: vpshufb %xmm22, %xmm11, %xmm85786; AVX512DQ-BW-NEXT: vpor %xmm7, %xmm8, %xmm75787; AVX512DQ-BW-NEXT: vpunpcklbw {{.*#+}} xmm8 = 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]5788; AVX512DQ-BW-NEXT: vpshufb %xmm13, %xmm8, %xmm85789; AVX512DQ-BW-NEXT: vinserti32x4 $2, %xmm7, %zmm8, %zmm75790; AVX512DQ-BW-NEXT: vpermq {{.*#+}} zmm7 = zmm7[0,0,1,1,4,4,5,5]5791; AVX512DQ-BW-NEXT: movabsq $-4165393823095705204, %rax # imm = 0xC6318C6318C6318C5792; AVX512DQ-BW-NEXT: kmovq %rax, %k15793; AVX512DQ-BW-NEXT: vmovdqu8 %zmm6, %zmm7 {%k1}5794; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm6 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]5795; AVX512DQ-BW-NEXT: vpermd %zmm0, %zmm6, %zmm65796; AVX512DQ-BW-NEXT: movabsq $595056260442243600, %rax # imm = 0x8421084210842105797; AVX512DQ-BW-NEXT: kmovq %rax, %k15798; AVX512DQ-BW-NEXT: vmovdqu8 %zmm6, %zmm7 {%k1}5799; AVX512DQ-BW-NEXT: vpshufb %ymm14, %ymm2, %ymm65800; AVX512DQ-BW-NEXT: vpshufb %ymm15, %ymm1, %ymm85801; AVX512DQ-BW-NEXT: vpor %ymm6, %ymm8, %ymm65802; AVX512DQ-BW-NEXT: vpshufb %ymm27, %ymm2, %ymm25803; AVX512DQ-BW-NEXT: vpshufb %ymm29, %ymm1, %ymm15804; AVX512DQ-BW-NEXT: vpor %ymm2, %ymm1, %ymm15805; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]5806; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm1, %zmm6, %zmm15807; AVX512DQ-BW-NEXT: vpshufb %ymm23, %ymm3, %ymm25808; AVX512DQ-BW-NEXT: vpshufb %ymm24, %ymm4, %ymm65809; AVX512DQ-BW-NEXT: vpor %ymm2, %ymm6, %ymm25810; AVX512DQ-BW-NEXT: vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]5811; AVX512DQ-BW-NEXT: vpermd %ymm4, %ymm16, %ymm45812; AVX512DQ-BW-NEXT: vpshufb %ymm17, %ymm3, %ymm4 {%k2}5813; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm2, %zmm4, %zmm25814; AVX512DQ-BW-NEXT: vmovdqu8 %zmm1, %zmm2 {%k3}5815; AVX512DQ-BW-NEXT: vpmovsxbd {{.*#+}} zmm1 = [3,3,3,3,0,4,4,4,4,6,5,5,5,5,4,6]5816; AVX512DQ-BW-NEXT: vpermd %zmm0, %zmm1, %zmm05817; AVX512DQ-BW-NEXT: movabsq $1190112520884487201, %rax # imm = 0x10842108421084215818; AVX512DQ-BW-NEXT: kmovq %rax, %k15819; AVX512DQ-BW-NEXT: vmovdqu8 %zmm0, %zmm2 {%k1}5820; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, 64(%r9)5821; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, (%r9)5822; AVX512DQ-BW-NEXT: vmovdqa64 %zmm10, 256(%r9)5823; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, 192(%r9)5824; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, 128(%r9)5825; AVX512DQ-BW-NEXT: vzeroupper5826; AVX512DQ-BW-NEXT: retq5827;5828; AVX512DQ-BW-FCP-LABEL: store_i8_stride5_vf64:5829; AVX512DQ-BW-FCP: # %bb.0:5830; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm75831; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm95832; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm35833; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rcx), %zmm55834; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%r8), %zmm05835; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%rdx), %ymm15836; AVX512DQ-BW-FCP-NEXT: vmovdqa {{.*#+}} ymm13 = [128,128,12,13,128,128,128,128,14,128,128,128,14,15,128,128,128,128,16,128,128,128,16,17,128,128,128,128,18,128,128,128]5837; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm13, %ymm1, %ymm15838; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%rcx), %ymm25839; AVX512DQ-BW-FCP-NEXT: vmovdqa {{.*#+}} ymm14 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]5840; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm14, %ymm2, %ymm25841; AVX512DQ-BW-FCP-NEXT: vpor %ymm1, %ymm2, %ymm15842; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rcx), %xmm105843; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%rcx), %xmm25844; AVX512DQ-BW-FCP-NEXT: vmovdqa {{.*#+}} xmm11 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]5845; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm11, %xmm2, %xmm45846; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm125847; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%rdx), %xmm65848; AVX512DQ-BW-FCP-NEXT: vmovdqa64 {{.*#+}} xmm17 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]5849; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm17, %xmm6, %xmm85850; AVX512DQ-BW-FCP-NEXT: vpor %xmm4, %xmm8, %xmm45851; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]5852; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm4, %zmm15853; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %xmm185854; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%rdi), %xmm45855; AVX512DQ-BW-FCP-NEXT: vmovdqa64 {{.*#+}} xmm19 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]5856; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm19, %xmm4, %xmm155857; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %xmm205858; AVX512DQ-BW-FCP-NEXT: vmovdqa 32(%rsi), %xmm85859; AVX512DQ-BW-FCP-NEXT: vmovdqa64 {{.*#+}} xmm21 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]5860; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm21, %xmm8, %xmm165861; AVX512DQ-BW-FCP-NEXT: vporq %xmm15, %xmm16, %xmm155862; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm22 = ymm15[0,0,1,1]5863; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} ymm15 = [3,3,3,0,4,4,4,4]5864; AVX512DQ-BW-FCP-NEXT: vpermd 32(%rdi), %ymm15, %ymm235865; AVX512DQ-BW-FCP-NEXT: vmovdqa64 32(%rsi), %ymm245866; AVX512DQ-BW-FCP-NEXT: vpbroadcastq {{.*#+}} ymm16 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]5867; AVX512DQ-BW-FCP-NEXT: movl $138547332, %eax # imm = 0x84210845868; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k15869; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm16, %ymm24, %ymm23 {%k1}5870; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm23, %zmm22, %zmm225871; AVX512DQ-BW-FCP-NEXT: movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C63185872; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k25873; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm22, %zmm1 {%k2}5874; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm22 = [9,9,10,10,10,10,10,10,11,11,11,11,0,12,12,12]5875; AVX512DQ-BW-FCP-NEXT: vpermd %zmm0, %zmm22, %zmm225876; AVX512DQ-BW-FCP-NEXT: movabsq $4760450083537948804, %rax # imm = 0x42108421084210845877; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k35878; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm22, %zmm1 {%k3}5879; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm11, %xmm10, %xmm115880; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm17, %xmm12, %xmm175881; AVX512DQ-BW-FCP-NEXT: vporq %xmm11, %xmm17, %xmm115882; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm10 = xmm10[0],xmm12[0],xmm10[1],xmm12[1],xmm10[2],xmm12[2],xmm10[3],xmm12[3],xmm10[4],xmm12[4],xmm10[5],xmm12[5],xmm10[6],xmm12[6],xmm10[7],xmm12[7]5883; AVX512DQ-BW-FCP-NEXT: vmovdqa {{.*#+}} xmm12 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]5884; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm12, %xmm10, %xmm105885; AVX512DQ-BW-FCP-NEXT: vinserti32x4 $2, %xmm11, %zmm10, %zmm105886; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} zmm17 = zmm10[0,0,1,1,4,4,5,5]5887; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm19, %xmm18, %xmm105888; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm21, %xmm20, %xmm115889; AVX512DQ-BW-FCP-NEXT: vpor %xmm10, %xmm11, %xmm105890; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm18 = xmm18[0],xmm20[0],xmm18[1],xmm20[1],xmm18[2],xmm20[2],xmm18[3],xmm20[3],xmm18[4],xmm20[4],xmm18[5],xmm20[5],xmm18[6],xmm20[6],xmm18[7],xmm20[7]5891; AVX512DQ-BW-FCP-NEXT: vmovdqa {{.*#+}} xmm11 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]5892; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm11, %xmm18, %xmm185893; AVX512DQ-BW-FCP-NEXT: vinserti32x4 $2, %xmm10, %zmm18, %zmm105894; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} zmm10 = zmm10[0,0,1,1,4,4,5,5]5895; AVX512DQ-BW-FCP-NEXT: movabsq $-4165393823095705204, %rax # imm = 0xC6318C6318C6318C5896; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k35897; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm17, %zmm10 {%k3}5898; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm17 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]5899; AVX512DQ-BW-FCP-NEXT: vpermd %zmm0, %zmm17, %zmm175900; AVX512DQ-BW-FCP-NEXT: movabsq $595056260442243600, %rax # imm = 0x8421084210842105901; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k35902; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm17, %zmm10 {%k3}5903; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdx), %ymm175904; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm13, %ymm17, %ymm135905; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rcx), %ymm185906; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm14, %ymm18, %ymm145907; AVX512DQ-BW-FCP-NEXT: vpor %ymm13, %ymm14, %ymm135908; AVX512DQ-BW-FCP-NEXT: vmovdqa64 {{.*#+}} zmm14 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128]5909; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm14, %ymm17, %ymm195910; AVX512DQ-BW-FCP-NEXT: vmovdqa64 {{.*#+}} zmm20 = [u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128]5911; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm20, %ymm18, %ymm215912; AVX512DQ-BW-FCP-NEXT: vporq %ymm19, %ymm21, %ymm195913; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm19 = ymm19[2,2,3,3]5914; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm19, %zmm13, %zmm135915; AVX512DQ-BW-FCP-NEXT: vmovdqa64 {{.*#+}} zmm19 = [u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,128,128,26,128,28,128,128,128,128,29,128,31,128,128,30]5916; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %ymm215917; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm19, %ymm21, %ymm225918; AVX512DQ-BW-FCP-NEXT: vmovdqa64 {{.*#+}} zmm23 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128]5919; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %ymm245920; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm23, %ymm24, %ymm255921; AVX512DQ-BW-FCP-NEXT: vporq %ymm22, %ymm25, %ymm225922; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} ymm22 = ymm22[2,2,3,3]5923; AVX512DQ-BW-FCP-NEXT: vpermd %ymm24, %ymm15, %ymm155924; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm16, %ymm21, %ymm15 {%k1}5925; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm22, %zmm15, %zmm155926; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm13, %zmm15 {%k2}5927; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm13 = [3,3,3,3,0,4,4,4,4,6,5,5,5,5,4,6]5928; AVX512DQ-BW-FCP-NEXT: vpermd %zmm0, %zmm13, %zmm135929; AVX512DQ-BW-FCP-NEXT: movabsq $1190112520884487201, %rax # imm = 0x10842108421084215930; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k15931; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm13, %zmm15 {%k1}5932; AVX512DQ-BW-FCP-NEXT: vshufi64x2 {{.*#+}} zmm9 = zmm9[4,5,6,7,4,5,6,7]5933; AVX512DQ-BW-FCP-NEXT: vpshufb %zmm19, %zmm9, %zmm95934; AVX512DQ-BW-FCP-NEXT: vshufi64x2 {{.*#+}} zmm7 = zmm7[4,5,6,7,4,5,6,7]5935; AVX512DQ-BW-FCP-NEXT: vpshufb %zmm23, %zmm7, %zmm75936; AVX512DQ-BW-FCP-NEXT: vporq %zmm9, %zmm7, %zmm75937; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} zmm7 = zmm7[2,2,3,3,6,6,7,7]5938; AVX512DQ-BW-FCP-NEXT: vshufi64x2 {{.*#+}} zmm9 = zmm3[4,5,6,7],zmm5[4,5,6,7]5939; AVX512DQ-BW-FCP-NEXT: vpshufb %zmm14, %zmm9, %zmm95940; AVX512DQ-BW-FCP-NEXT: vshufi64x2 {{.*#+}} zmm3 = zmm5[4,5,6,7],zmm3[4,5,6,7]5941; AVX512DQ-BW-FCP-NEXT: vpshufb %zmm20, %zmm3, %zmm35942; AVX512DQ-BW-FCP-NEXT: vporq %zmm9, %zmm3, %zmm35943; AVX512DQ-BW-FCP-NEXT: vpermq {{.*#+}} zmm3 = zmm3[2,2,3,3,6,6,7,7]5944; AVX512DQ-BW-FCP-NEXT: movabsq $1785168781326730801, %rax # imm = 0x18C6318C6318C6315945; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k15946; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm7, %zmm3 {%k1}5947; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm5 = [12,14,13,13,13,13,12,14,14,14,14,14,15,15,15,15]5948; AVX512DQ-BW-FCP-NEXT: vpermd %zmm0, %zmm5, %zmm55949; AVX512DQ-BW-FCP-NEXT: movabsq $-8925843906633654008, %rax # imm = 0x84210842108421085950; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k25951; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm5, %zmm3 {%k2}5952; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} 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]5953; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm12, %xmm2, %xmm25954; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm18[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm18[27],zero,zero,ymm18[26],zero,ymm18[28],zero,ymm18[30],zero,zero,ymm18[29],zero,ymm18[31],zero5955; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm6 = ymm17[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm17[27],zero,zero,ymm17[26],zero,ymm17[28],zero,ymm17[30],zero,zero,ymm17[29],zero,ymm17[31],zero,zero5956; AVX512DQ-BW-FCP-NEXT: vpor %ymm5, %ymm6, %ymm55957; AVX512DQ-BW-FCP-NEXT: vpmovsxbq {{.*#+}} zmm6 = [2,2,3,3,8,8,9,9]5958; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm2, %zmm6, %zmm55959; AVX512DQ-BW-FCP-NEXT: vpunpcklbw {{.*#+}} xmm2 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],xmm8[3],xmm4[4],xmm8[4],xmm4[5],xmm8[5],xmm4[6],xmm8[6],xmm4[7],xmm8[7]5960; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm11, %xmm2, %xmm25961; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm4 = ymm21[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm21[26],zero,ymm21[28],zero,zero,zero,zero,ymm21[29],zero,ymm21[31],zero,zero,ymm21[30]5962; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm7 = ymm24[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm24[26],zero,ymm24[28],zero,zero,ymm24[27],zero,ymm24[29],zero,ymm24[31],zero,zero,ymm24[30],zero5963; AVX512DQ-BW-FCP-NEXT: vpor %ymm4, %ymm7, %ymm45964; AVX512DQ-BW-FCP-NEXT: vpermt2q %zmm2, %zmm6, %zmm45965; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm5, %zmm4 {%k1}5966; AVX512DQ-BW-FCP-NEXT: vpmovsxbd {{.*#+}} zmm2 = [6,6,6,6,7,7,7,7,8,8,8,8,8,8,9,9]5967; AVX512DQ-BW-FCP-NEXT: vpermd %zmm0, %zmm2, %zmm05968; AVX512DQ-BW-FCP-NEXT: movabsq $2380225041768974402, %rax # imm = 0x21084210842108425969; AVX512DQ-BW-FCP-NEXT: kmovq %rax, %k15970; AVX512DQ-BW-FCP-NEXT: vmovdqu8 %zmm0, %zmm4 {%k1}5971; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, 128(%r9)5972; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, 256(%r9)5973; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm15, 64(%r9)5974; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm10, (%r9)5975; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, 192(%r9)5976; AVX512DQ-BW-FCP-NEXT: vzeroupper5977; AVX512DQ-BW-FCP-NEXT: retq5978 %in.vec0 = load <64 x i8>, ptr %in.vecptr0, align 645979 %in.vec1 = load <64 x i8>, ptr %in.vecptr1, align 645980 %in.vec2 = load <64 x i8>, ptr %in.vecptr2, align 645981 %in.vec3 = load <64 x i8>, ptr %in.vecptr3, align 645982 %in.vec4 = load <64 x i8>, ptr %in.vecptr4, align 645983 %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>5984 %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>5985 %3 = 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>5986 %4 = shufflevector <64 x i8> %in.vec4, <64 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 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>5987 %5 = shufflevector <256 x i8> %3, <256 x i8> %4, <320 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159, i32 160, i32 161, i32 162, i32 163, i32 164, i32 165, i32 166, i32 167, i32 168, i32 169, i32 170, i32 171, i32 172, i32 173, i32 174, i32 175, i32 176, i32 177, i32 178, i32 179, i32 180, i32 181, i32 182, i32 183, i32 184, i32 185, i32 186, i32 187, i32 188, i32 189, i32 190, i32 191, i32 192, i32 193, i32 194, i32 195, i32 196, i32 197, i32 198, i32 199, i32 200, i32 201, i32 202, i32 203, i32 204, i32 205, i32 206, i32 207, i32 208, i32 209, i32 210, i32 211, i32 212, i32 213, i32 214, i32 215, i32 216, i32 217, i32 218, i32 219, i32 220, i32 221, i32 222, i32 223, i32 224, i32 225, i32 226, i32 227, i32 228, i32 229, i32 230, i32 231, i32 232, i32 233, i32 234, i32 235, i32 236, i32 237, i32 238, i32 239, i32 240, i32 241, i32 242, i32 243, i32 244, i32 245, i32 246, i32 247, i32 248, i32 249, i32 250, i32 251, i32 252, i32 253, i32 254, i32 255, i32 256, i32 257, i32 258, i32 259, i32 260, i32 261, i32 262, i32 263, i32 264, i32 265, i32 266, i32 267, i32 268, i32 269, i32 270, i32 271, i32 272, i32 273, i32 274, i32 275, i32 276, i32 277, i32 278, i32 279, i32 280, i32 281, i32 282, i32 283, i32 284, i32 285, i32 286, i32 287, i32 288, i32 289, i32 290, i32 291, i32 292, i32 293, i32 294, i32 295, i32 296, i32 297, i32 298, i32 299, i32 300, i32 301, i32 302, i32 303, i32 304, i32 305, i32 306, i32 307, i32 308, i32 309, i32 310, i32 311, i32 312, i32 313, i32 314, i32 315, i32 316, i32 317, i32 318, i32 319>5988 %interleaved.vec = shufflevector <320 x i8> %5, <320 x i8> poison, <320 x i32> <i32 0, i32 64, i32 128, i32 192, i32 256, i32 1, i32 65, i32 129, i32 193, i32 257, i32 2, i32 66, i32 130, i32 194, i32 258, i32 3, i32 67, i32 131, i32 195, i32 259, i32 4, i32 68, i32 132, i32 196, i32 260, i32 5, i32 69, i32 133, i32 197, i32 261, i32 6, i32 70, i32 134, i32 198, i32 262, i32 7, i32 71, i32 135, i32 199, i32 263, i32 8, i32 72, i32 136, i32 200, i32 264, i32 9, i32 73, i32 137, i32 201, i32 265, i32 10, i32 74, i32 138, i32 202, i32 266, i32 11, i32 75, i32 139, i32 203, i32 267, i32 12, i32 76, i32 140, i32 204, i32 268, i32 13, i32 77, i32 141, i32 205, i32 269, i32 14, i32 78, i32 142, i32 206, i32 270, i32 15, i32 79, i32 143, i32 207, i32 271, i32 16, i32 80, i32 144, i32 208, i32 272, i32 17, i32 81, i32 145, i32 209, i32 273, i32 18, i32 82, i32 146, i32 210, i32 274, i32 19, i32 83, i32 147, i32 211, i32 275, i32 20, i32 84, i32 148, i32 212, i32 276, i32 21, i32 85, i32 149, i32 213, i32 277, i32 22, i32 86, i32 150, i32 214, i32 278, i32 23, i32 87, i32 151, i32 215, i32 279, i32 24, i32 88, i32 152, i32 216, i32 280, i32 25, i32 89, i32 153, i32 217, i32 281, i32 26, i32 90, i32 154, i32 218, i32 282, i32 27, i32 91, i32 155, i32 219, i32 283, i32 28, i32 92, i32 156, i32 220, i32 284, i32 29, i32 93, i32 157, i32 221, i32 285, i32 30, i32 94, i32 158, i32 222, i32 286, i32 31, i32 95, i32 159, i32 223, i32 287, i32 32, i32 96, i32 160, i32 224, i32 288, i32 33, i32 97, i32 161, i32 225, i32 289, i32 34, i32 98, i32 162, i32 226, i32 290, i32 35, i32 99, i32 163, i32 227, i32 291, i32 36, i32 100, i32 164, i32 228, i32 292, i32 37, i32 101, i32 165, i32 229, i32 293, i32 38, i32 102, i32 166, i32 230, i32 294, i32 39, i32 103, i32 167, i32 231, i32 295, i32 40, i32 104, i32 168, i32 232, i32 296, i32 41, i32 105, i32 169, i32 233, i32 297, i32 42, i32 106, i32 170, i32 234, i32 298, i32 43, i32 107, i32 171, i32 235, i32 299, i32 44, i32 108, i32 172, i32 236, i32 300, i32 45, i32 109, i32 173, i32 237, i32 301, i32 46, i32 110, i32 174, i32 238, i32 302, i32 47, i32 111, i32 175, i32 239, i32 303, i32 48, i32 112, i32 176, i32 240, i32 304, i32 49, i32 113, i32 177, i32 241, i32 305, i32 50, i32 114, i32 178, i32 242, i32 306, i32 51, i32 115, i32 179, i32 243, i32 307, i32 52, i32 116, i32 180, i32 244, i32 308, i32 53, i32 117, i32 181, i32 245, i32 309, i32 54, i32 118, i32 182, i32 246, i32 310, i32 55, i32 119, i32 183, i32 247, i32 311, i32 56, i32 120, i32 184, i32 248, i32 312, i32 57, i32 121, i32 185, i32 249, i32 313, i32 58, i32 122, i32 186, i32 250, i32 314, i32 59, i32 123, i32 187, i32 251, i32 315, i32 60, i32 124, i32 188, i32 252, i32 316, i32 61, i32 125, i32 189, i32 253, i32 317, i32 62, i32 126, i32 190, i32 254, i32 318, i32 63, i32 127, i32 191, i32 255, i32 319>5989 store <320 x i8> %interleaved.vec, ptr %out.vec, align 645990 ret void5991}5992