2276 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_stride3_vf2(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %out.vec) nounwind {19; SSE-LABEL: store_i8_stride3_vf2:20; SSE: # %bb.0:21; SSE-NEXT: movdqa (%rdi), %xmm022; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]23; SSE-NEXT: pshuflw {{.*#+}} xmm1 = mem[0,0,0,0,4,5,6,7]24; SSE-NEXT: movdqa {{.*#+}} xmm2 = [255,255,0,255,255,0,255,255,255,255,255,255,255,255,255,255]25; SSE-NEXT: pxor %xmm3, %xmm326; 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]27; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,3,1,4,5,6,7]28; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,1,3]29; SSE-NEXT: packuswb %xmm0, %xmm030; SSE-NEXT: pand %xmm2, %xmm031; SSE-NEXT: pandn %xmm1, %xmm232; SSE-NEXT: por %xmm0, %xmm233; SSE-NEXT: movd %xmm2, (%rcx)34; SSE-NEXT: pextrw $2, %xmm2, %eax35; SSE-NEXT: movw %ax, 4(%rcx)36; SSE-NEXT: retq37;38; AVX-LABEL: store_i8_stride3_vf2:39; AVX: # %bb.0:40; AVX-NEXT: vmovdqa (%rdi), %xmm041; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]42; 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]43; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,1,2,6,3,u,u,u,u,u,u,u,u,u,u]44; AVX-NEXT: vpextrw $2, %xmm0, 4(%rcx)45; AVX-NEXT: vmovd %xmm0, (%rcx)46; AVX-NEXT: retq47;48; AVX2-LABEL: store_i8_stride3_vf2:49; AVX2: # %bb.0:50; AVX2-NEXT: vmovdqa (%rdi), %xmm051; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]52; 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]53; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,1,2,6,3,u,u,u,u,u,u,u,u,u,u]54; AVX2-NEXT: vpextrw $2, %xmm0, 4(%rcx)55; AVX2-NEXT: vmovd %xmm0, (%rcx)56; AVX2-NEXT: retq57;58; AVX2-FP-LABEL: store_i8_stride3_vf2:59; AVX2-FP: # %bb.0:60; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm061; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]62; 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]63; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,1,2,6,3,u,u,u,u,u,u,u,u,u,u]64; AVX2-FP-NEXT: vpextrw $2, %xmm0, 4(%rcx)65; AVX2-FP-NEXT: vmovd %xmm0, (%rcx)66; AVX2-FP-NEXT: retq67;68; AVX2-FCP-LABEL: store_i8_stride3_vf2:69; AVX2-FCP: # %bb.0:70; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm071; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]72; 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]73; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,1,2,6,3,u,u,u,u,u,u,u,u,u,u]74; AVX2-FCP-NEXT: vpextrw $2, %xmm0, 4(%rcx)75; AVX2-FCP-NEXT: vmovd %xmm0, (%rcx)76; AVX2-FCP-NEXT: retq77;78; AVX512-LABEL: store_i8_stride3_vf2:79; AVX512: # %bb.0:80; AVX512-NEXT: vmovdqa (%rdi), %xmm081; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]82; 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]83; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,1,2,6,3,u,u,u,u,u,u,u,u,u,u]84; AVX512-NEXT: vpextrw $2, %xmm0, 4(%rcx)85; AVX512-NEXT: vmovd %xmm0, (%rcx)86; AVX512-NEXT: retq87;88; AVX512-FCP-LABEL: store_i8_stride3_vf2:89; AVX512-FCP: # %bb.0:90; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm091; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]92; 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]93; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,1,2,6,3,u,u,u,u,u,u,u,u,u,u]94; AVX512-FCP-NEXT: vpextrw $2, %xmm0, 4(%rcx)95; AVX512-FCP-NEXT: vmovd %xmm0, (%rcx)96; AVX512-FCP-NEXT: retq97;98; AVX512DQ-LABEL: store_i8_stride3_vf2:99; AVX512DQ: # %bb.0:100; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm0101; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]102; 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]103; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,1,2,6,3,u,u,u,u,u,u,u,u,u,u]104; AVX512DQ-NEXT: vpextrw $2, %xmm0, 4(%rcx)105; AVX512DQ-NEXT: vmovd %xmm0, (%rcx)106; AVX512DQ-NEXT: retq107;108; AVX512DQ-FCP-LABEL: store_i8_stride3_vf2:109; AVX512DQ-FCP: # %bb.0:110; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm0111; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]112; 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]113; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,1,2,6,3,u,u,u,u,u,u,u,u,u,u]114; AVX512DQ-FCP-NEXT: vpextrw $2, %xmm0, 4(%rcx)115; AVX512DQ-FCP-NEXT: vmovd %xmm0, (%rcx)116; AVX512DQ-FCP-NEXT: retq117;118; AVX512BW-LABEL: store_i8_stride3_vf2:119; AVX512BW: # %bb.0:120; AVX512BW-NEXT: vmovdqa (%rdi), %xmm0121; AVX512BW-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]122; 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]123; AVX512BW-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,1,2,6,3,u,u,u,u,u,u,u,u,u,u]124; AVX512BW-NEXT: vpextrw $2, %xmm0, 4(%rcx)125; AVX512BW-NEXT: vmovd %xmm0, (%rcx)126; AVX512BW-NEXT: retq127;128; AVX512BW-FCP-LABEL: store_i8_stride3_vf2:129; AVX512BW-FCP: # %bb.0:130; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm0131; AVX512BW-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]132; 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]133; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,1,2,6,3,u,u,u,u,u,u,u,u,u,u]134; AVX512BW-FCP-NEXT: vpextrw $2, %xmm0, 4(%rcx)135; AVX512BW-FCP-NEXT: vmovd %xmm0, (%rcx)136; AVX512BW-FCP-NEXT: retq137;138; AVX512DQ-BW-LABEL: store_i8_stride3_vf2:139; AVX512DQ-BW: # %bb.0:140; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm0141; AVX512DQ-BW-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]142; 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]143; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,1,2,6,3,u,u,u,u,u,u,u,u,u,u]144; AVX512DQ-BW-NEXT: vpextrw $2, %xmm0, 4(%rcx)145; AVX512DQ-BW-NEXT: vmovd %xmm0, (%rcx)146; AVX512DQ-BW-NEXT: retq147;148; AVX512DQ-BW-FCP-LABEL: store_i8_stride3_vf2:149; AVX512DQ-BW-FCP: # %bb.0:150; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm0151; AVX512DQ-BW-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]152; 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]153; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,4,1,2,6,3,u,u,u,u,u,u,u,u,u,u]154; AVX512DQ-BW-FCP-NEXT: vpextrw $2, %xmm0, 4(%rcx)155; AVX512DQ-BW-FCP-NEXT: vmovd %xmm0, (%rcx)156; AVX512DQ-BW-FCP-NEXT: retq157 %in.vec0 = load <2 x i8>, ptr %in.vecptr0, align 64158 %in.vec1 = load <2 x i8>, ptr %in.vecptr1, align 64159 %in.vec2 = load <2 x i8>, ptr %in.vecptr2, align 64160 %1 = shufflevector <2 x i8> %in.vec0, <2 x i8> %in.vec1, <4 x i32> <i32 0, i32 1, i32 2, i32 3>161 %2 = shufflevector <2 x i8> %in.vec2, <2 x i8> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>162 %3 = shufflevector <4 x i8> %1, <4 x i8> %2, <6 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5>163 %interleaved.vec = shufflevector <6 x i8> %3, <6 x i8> poison, <6 x i32> <i32 0, i32 2, i32 4, i32 1, i32 3, i32 5>164 store <6 x i8> %interleaved.vec, ptr %out.vec, align 64165 ret void166}167 168define void @store_i8_stride3_vf4(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %out.vec) nounwind {169; SSE-LABEL: store_i8_stride3_vf4:170; SSE: # %bb.0:171; SSE-NEXT: movdqa (%rdi), %xmm0172; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]173; SSE-NEXT: pxor %xmm1, %xmm1174; 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]175; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]176; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,3,1,3,4,5,6,7]177; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,4,7]178; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,3,2,1]179; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,1,4,5,6,7]180; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,6,4]181; SSE-NEXT: packuswb %xmm1, %xmm0182; SSE-NEXT: movdqa {{.*#+}} xmm1 = [255,255,0,255,255,0,255,255,0,255,255,0,255,255,255,255]183; SSE-NEXT: pand %xmm1, %xmm0184; SSE-NEXT: pshuflw {{.*#+}} xmm2 = mem[0,0,1,1,4,5,6,7]185; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,1,3]186; SSE-NEXT: pandn %xmm2, %xmm1187; SSE-NEXT: por %xmm0, %xmm1188; SSE-NEXT: movq %xmm1, (%rcx)189; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]190; SSE-NEXT: movd %xmm0, 8(%rcx)191; SSE-NEXT: retq192;193; AVX-LABEL: store_i8_stride3_vf4:194; AVX: # %bb.0:195; AVX-NEXT: vmovdqa (%rdi), %xmm0196; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]197; 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]198; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]199; AVX-NEXT: vpextrd $2, %xmm0, 8(%rcx)200; AVX-NEXT: vmovq %xmm0, (%rcx)201; AVX-NEXT: retq202;203; AVX2-LABEL: store_i8_stride3_vf4:204; AVX2: # %bb.0:205; AVX2-NEXT: vmovdqa (%rdi), %xmm0206; AVX2-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]207; 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]208; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]209; AVX2-NEXT: vpextrd $2, %xmm0, 8(%rcx)210; AVX2-NEXT: vmovq %xmm0, (%rcx)211; AVX2-NEXT: retq212;213; AVX2-FP-LABEL: store_i8_stride3_vf4:214; AVX2-FP: # %bb.0:215; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm0216; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]217; 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]218; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]219; AVX2-FP-NEXT: vpextrd $2, %xmm0, 8(%rcx)220; AVX2-FP-NEXT: vmovq %xmm0, (%rcx)221; AVX2-FP-NEXT: retq222;223; AVX2-FCP-LABEL: store_i8_stride3_vf4:224; AVX2-FCP: # %bb.0:225; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm0226; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]227; 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]228; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]229; AVX2-FCP-NEXT: vpextrd $2, %xmm0, 8(%rcx)230; AVX2-FCP-NEXT: vmovq %xmm0, (%rcx)231; AVX2-FCP-NEXT: retq232;233; AVX512-LABEL: store_i8_stride3_vf4:234; AVX512: # %bb.0:235; AVX512-NEXT: vmovdqa (%rdi), %xmm0236; AVX512-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]237; 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]238; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]239; AVX512-NEXT: vpextrd $2, %xmm0, 8(%rcx)240; AVX512-NEXT: vmovq %xmm0, (%rcx)241; AVX512-NEXT: retq242;243; AVX512-FCP-LABEL: store_i8_stride3_vf4:244; AVX512-FCP: # %bb.0:245; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm0246; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]247; 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]248; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]249; AVX512-FCP-NEXT: vpextrd $2, %xmm0, 8(%rcx)250; AVX512-FCP-NEXT: vmovq %xmm0, (%rcx)251; AVX512-FCP-NEXT: retq252;253; AVX512DQ-LABEL: store_i8_stride3_vf4:254; AVX512DQ: # %bb.0:255; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm0256; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]257; 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]258; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]259; AVX512DQ-NEXT: vpextrd $2, %xmm0, 8(%rcx)260; AVX512DQ-NEXT: vmovq %xmm0, (%rcx)261; AVX512DQ-NEXT: retq262;263; AVX512DQ-FCP-LABEL: store_i8_stride3_vf4:264; AVX512DQ-FCP: # %bb.0:265; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm0266; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]267; 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]268; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]269; AVX512DQ-FCP-NEXT: vpextrd $2, %xmm0, 8(%rcx)270; AVX512DQ-FCP-NEXT: vmovq %xmm0, (%rcx)271; AVX512DQ-FCP-NEXT: retq272;273; AVX512BW-LABEL: store_i8_stride3_vf4:274; AVX512BW: # %bb.0:275; AVX512BW-NEXT: vmovdqa (%rdi), %xmm0276; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]277; 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]278; AVX512BW-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]279; AVX512BW-NEXT: vpextrd $2, %xmm0, 8(%rcx)280; AVX512BW-NEXT: vmovq %xmm0, (%rcx)281; AVX512BW-NEXT: retq282;283; AVX512BW-FCP-LABEL: store_i8_stride3_vf4:284; AVX512BW-FCP: # %bb.0:285; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm0286; AVX512BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]287; 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]288; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]289; AVX512BW-FCP-NEXT: vpextrd $2, %xmm0, 8(%rcx)290; AVX512BW-FCP-NEXT: vmovq %xmm0, (%rcx)291; AVX512BW-FCP-NEXT: retq292;293; AVX512DQ-BW-LABEL: store_i8_stride3_vf4:294; AVX512DQ-BW: # %bb.0:295; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm0296; AVX512DQ-BW-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]297; 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]298; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]299; AVX512DQ-BW-NEXT: vpextrd $2, %xmm0, 8(%rcx)300; AVX512DQ-BW-NEXT: vmovq %xmm0, (%rcx)301; AVX512DQ-BW-NEXT: retq302;303; AVX512DQ-BW-FCP-LABEL: store_i8_stride3_vf4:304; AVX512DQ-BW-FCP: # %bb.0:305; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm0306; AVX512DQ-BW-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]307; 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]308; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]309; AVX512DQ-BW-FCP-NEXT: vpextrd $2, %xmm0, 8(%rcx)310; AVX512DQ-BW-FCP-NEXT: vmovq %xmm0, (%rcx)311; AVX512DQ-BW-FCP-NEXT: retq312 %in.vec0 = load <4 x i8>, ptr %in.vecptr0, align 64313 %in.vec1 = load <4 x i8>, ptr %in.vecptr1, align 64314 %in.vec2 = load <4 x i8>, ptr %in.vecptr2, align 64315 %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>316 %2 = shufflevector <4 x i8> %in.vec2, <4 x i8> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>317 %3 = shufflevector <8 x i8> %1, <8 x i8> %2, <12 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11>318 %interleaved.vec = shufflevector <12 x i8> %3, <12 x i8> poison, <12 x i32> <i32 0, i32 4, i32 8, i32 1, i32 5, i32 9, i32 2, i32 6, i32 10, i32 3, i32 7, i32 11>319 store <12 x i8> %interleaved.vec, ptr %out.vec, align 64320 ret void321}322 323define void @store_i8_stride3_vf8(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %out.vec) nounwind {324; SSE-LABEL: store_i8_stride3_vf8:325; SSE: # %bb.0:326; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero327; SSE-NEXT: movq {{.*#+}} xmm1 = mem[0],zero328; SSE-NEXT: movq {{.*#+}} xmm2 = mem[0],zero329; SSE-NEXT: pxor %xmm3, %xmm3330; 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]331; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,1,2,2]332; SSE-NEXT: movdqa {{.*#+}} xmm5 = [65535,65535,0,65535,65535,0,65535,65535]333; SSE-NEXT: pand %xmm5, %xmm4334; 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]335; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm1[3,3,3,3,4,5,6,7]336; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]337; SSE-NEXT: pandn %xmm3, %xmm5338; SSE-NEXT: por %xmm4, %xmm5339; SSE-NEXT: movdqa %xmm2, %xmm3340; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]341; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]342; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,1,2,2,4,5,6,7]343; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,5,4,5]344; SSE-NEXT: packuswb %xmm5, %xmm3345; SSE-NEXT: movdqa {{.*#+}} xmm4 = [255,255,0,255,255,0,255,255,0,255,255,0,255,255,0,255]346; SSE-NEXT: pand %xmm4, %xmm3347; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm0[0,1,0,1]348; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[0,0,0,0,4,5,6,7]349; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,6,6]350; SSE-NEXT: pandn %xmm5, %xmm4351; SSE-NEXT: por %xmm3, %xmm4352; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]353; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,1,3,3]354; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,1,0,4,5,6,7]355; SSE-NEXT: packuswb %xmm1, %xmm1356; SSE-NEXT: movdqa {{.*#+}} xmm2 = [255,0,255,255,0,255,255,0,255,255,255,255,255,255,255,255]357; SSE-NEXT: pand %xmm2, %xmm1358; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[2,1,3,3,4,5,6,7]359; SSE-NEXT: pandn %xmm0, %xmm2360; SSE-NEXT: por %xmm1, %xmm2361; SSE-NEXT: movq %xmm2, 16(%rcx)362; SSE-NEXT: movdqa %xmm4, (%rcx)363; SSE-NEXT: retq364;365; AVX-LABEL: store_i8_stride3_vf8:366; AVX: # %bb.0:367; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero368; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero369; AVX-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero370; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]371; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm1[0,8],zero,xmm1[1,9],zero,xmm1[2,10],zero,xmm1[3,11],zero,xmm1[4,12],zero,xmm1[5]372; AVX-NEXT: vpshufb {{.*#+}} xmm3 = zero,zero,xmm0[0],zero,zero,xmm0[1],zero,zero,xmm0[2],zero,zero,xmm0[3],zero,zero,xmm0[4],zero373; AVX-NEXT: vpor %xmm3, %xmm2, %xmm2374; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[13],zero,xmm1[6,14],zero,xmm1[7,15],zero,xmm1[u,u,u,u,u,u,u,u]375; AVX-NEXT: vpshufb {{.*#+}} xmm0 = zero,xmm0[5],zero,zero,xmm0[6],zero,zero,xmm0[7,u,u,u,u,u,u,u,u]376; AVX-NEXT: vpor %xmm0, %xmm1, %xmm0377; AVX-NEXT: vmovq %xmm0, 16(%rcx)378; AVX-NEXT: vmovdqa %xmm2, (%rcx)379; AVX-NEXT: retq380;381; AVX2-LABEL: store_i8_stride3_vf8:382; AVX2: # %bb.0:383; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero384; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero385; AVX2-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero386; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]387; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm2388; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0389; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[0],zero,zero,ymm0[1],zero,zero,ymm0[2],zero,zero,ymm0[3],zero,zero,ymm0[4],zero,ymm0[29],zero,ymm0[22,30],zero,ymm0[23,31],zero,zero,zero,zero,zero,zero,zero,zero,zero390; AVX2-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[0,8],zero,ymm2[1,9],zero,ymm2[2,10],zero,ymm2[3,11],zero,ymm2[4,12],zero,ymm2[5],zero,ymm2[21],zero,zero,ymm2[22],zero,zero,ymm2[23],zero,zero,zero,zero,zero,zero,zero,zero391; AVX2-NEXT: vpor %ymm0, %ymm1, %ymm0392; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1393; AVX2-NEXT: vmovq %xmm1, 16(%rcx)394; AVX2-NEXT: vmovdqa %xmm0, (%rcx)395; AVX2-NEXT: vzeroupper396; AVX2-NEXT: retq397;398; AVX2-FP-LABEL: store_i8_stride3_vf8:399; AVX2-FP: # %bb.0:400; AVX2-FP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero401; AVX2-FP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero402; AVX2-FP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero403; AVX2-FP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]404; AVX2-FP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm2405; AVX2-FP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0406; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[0],zero,zero,ymm0[1],zero,zero,ymm0[2],zero,zero,ymm0[3],zero,zero,ymm0[4],zero,ymm0[29],zero,ymm0[22,30],zero,ymm0[23,31],zero,zero,zero,zero,zero,zero,zero,zero,zero407; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[0,8],zero,ymm2[1,9],zero,ymm2[2,10],zero,ymm2[3,11],zero,ymm2[4,12],zero,ymm2[5],zero,ymm2[21],zero,zero,ymm2[22],zero,zero,ymm2[23],zero,zero,zero,zero,zero,zero,zero,zero408; AVX2-FP-NEXT: vpor %ymm0, %ymm1, %ymm0409; AVX2-FP-NEXT: vextracti128 $1, %ymm0, %xmm1410; AVX2-FP-NEXT: vmovq %xmm1, 16(%rcx)411; AVX2-FP-NEXT: vmovdqa %xmm0, (%rcx)412; AVX2-FP-NEXT: vzeroupper413; AVX2-FP-NEXT: retq414;415; AVX2-FCP-LABEL: store_i8_stride3_vf8:416; AVX2-FCP: # %bb.0:417; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero418; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero419; AVX2-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero420; AVX2-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]421; AVX2-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm2422; AVX2-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0423; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[0],zero,zero,ymm0[1],zero,zero,ymm0[2],zero,zero,ymm0[3],zero,zero,ymm0[4],zero,ymm0[29],zero,ymm0[22,30],zero,ymm0[23,31],zero,zero,zero,zero,zero,zero,zero,zero,zero424; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[0,8],zero,ymm2[1,9],zero,ymm2[2,10],zero,ymm2[3,11],zero,ymm2[4,12],zero,ymm2[5],zero,ymm2[21],zero,zero,ymm2[22],zero,zero,ymm2[23],zero,zero,zero,zero,zero,zero,zero,zero425; AVX2-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0426; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1427; AVX2-FCP-NEXT: vmovq %xmm1, 16(%rcx)428; AVX2-FCP-NEXT: vmovdqa %xmm0, (%rcx)429; AVX2-FCP-NEXT: vzeroupper430; AVX2-FCP-NEXT: retq431;432; AVX512-LABEL: store_i8_stride3_vf8:433; AVX512: # %bb.0:434; AVX512-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero435; AVX512-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero436; AVX512-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero437; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]438; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm2439; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0440; AVX512-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[0],zero,zero,ymm0[1],zero,zero,ymm0[2],zero,zero,ymm0[3],zero,zero,ymm0[4],zero,ymm0[29],zero,ymm0[22,30],zero,ymm0[23,31],zero,zero,zero,zero,zero,zero,zero,zero,zero441; AVX512-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[0,8],zero,ymm2[1,9],zero,ymm2[2,10],zero,ymm2[3,11],zero,ymm2[4,12],zero,ymm2[5],zero,ymm2[21],zero,zero,ymm2[22],zero,zero,ymm2[23,u,u,u,u,u,u,u,u]442; AVX512-NEXT: vpor %ymm0, %ymm1, %ymm0443; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm1444; AVX512-NEXT: vmovq %xmm1, 16(%rcx)445; AVX512-NEXT: vmovdqa %xmm0, (%rcx)446; AVX512-NEXT: vzeroupper447; AVX512-NEXT: retq448;449; AVX512-FCP-LABEL: store_i8_stride3_vf8:450; AVX512-FCP: # %bb.0:451; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero452; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero453; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero454; AVX512-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]455; AVX512-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm2456; AVX512-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0457; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[0],zero,zero,ymm0[1],zero,zero,ymm0[2],zero,zero,ymm0[3],zero,zero,ymm0[4],zero,ymm0[29],zero,ymm0[22,30],zero,ymm0[23,31],zero,zero,zero,zero,zero,zero,zero,zero,zero458; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[0,8],zero,ymm2[1,9],zero,ymm2[2,10],zero,ymm2[3,11],zero,ymm2[4,12],zero,ymm2[5],zero,ymm2[21],zero,zero,ymm2[22],zero,zero,ymm2[23,u,u,u,u,u,u,u,u]459; AVX512-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0460; AVX512-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1461; AVX512-FCP-NEXT: vmovq %xmm1, 16(%rcx)462; AVX512-FCP-NEXT: vmovdqa %xmm0, (%rcx)463; AVX512-FCP-NEXT: vzeroupper464; AVX512-FCP-NEXT: retq465;466; AVX512DQ-LABEL: store_i8_stride3_vf8:467; AVX512DQ: # %bb.0:468; AVX512DQ-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero469; AVX512DQ-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero470; AVX512DQ-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero471; AVX512DQ-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]472; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm2473; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0474; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[0],zero,zero,ymm0[1],zero,zero,ymm0[2],zero,zero,ymm0[3],zero,zero,ymm0[4],zero,ymm0[29],zero,ymm0[22,30],zero,ymm0[23,31],zero,zero,zero,zero,zero,zero,zero,zero,zero475; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[0,8],zero,ymm2[1,9],zero,ymm2[2,10],zero,ymm2[3,11],zero,ymm2[4,12],zero,ymm2[5],zero,ymm2[21],zero,zero,ymm2[22],zero,zero,ymm2[23,u,u,u,u,u,u,u,u]476; AVX512DQ-NEXT: vpor %ymm0, %ymm1, %ymm0477; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm1478; AVX512DQ-NEXT: vmovq %xmm1, 16(%rcx)479; AVX512DQ-NEXT: vmovdqa %xmm0, (%rcx)480; AVX512DQ-NEXT: vzeroupper481; AVX512DQ-NEXT: retq482;483; AVX512DQ-FCP-LABEL: store_i8_stride3_vf8:484; AVX512DQ-FCP: # %bb.0:485; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero486; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero487; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero488; AVX512DQ-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]489; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm2490; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0491; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[0],zero,zero,ymm0[1],zero,zero,ymm0[2],zero,zero,ymm0[3],zero,zero,ymm0[4],zero,ymm0[29],zero,ymm0[22,30],zero,ymm0[23,31],zero,zero,zero,zero,zero,zero,zero,zero,zero492; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[0,8],zero,ymm2[1,9],zero,ymm2[2,10],zero,ymm2[3,11],zero,ymm2[4,12],zero,ymm2[5],zero,ymm2[21],zero,zero,ymm2[22],zero,zero,ymm2[23,u,u,u,u,u,u,u,u]493; AVX512DQ-FCP-NEXT: vpor %ymm0, %ymm1, %ymm0494; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1495; AVX512DQ-FCP-NEXT: vmovq %xmm1, 16(%rcx)496; AVX512DQ-FCP-NEXT: vmovdqa %xmm0, (%rcx)497; AVX512DQ-FCP-NEXT: vzeroupper498; AVX512DQ-FCP-NEXT: retq499;500; AVX512BW-LABEL: store_i8_stride3_vf8:501; AVX512BW: # %bb.0:502; AVX512BW-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero503; AVX512BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero504; AVX512BW-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero505; AVX512BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]506; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm2507; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0508; AVX512BW-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[0],zero,zero,ymm0[1],zero,zero,ymm0[2],zero,zero,ymm0[3],zero,zero,ymm0[4],zero,ymm0[29],zero,ymm0[22,30],zero,ymm0[23,31],zero,zero,zero,zero,zero,zero,zero,zero,zero509; AVX512BW-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[0,8],zero,ymm2[1,9],zero,ymm2[2,10],zero,ymm2[3,11],zero,ymm2[4,12],zero,ymm2[5],zero,ymm2[21],zero,zero,ymm2[22],zero,zero,ymm2[23],zero,zero,zero,zero,zero,zero,zero,zero510; AVX512BW-NEXT: vpor %ymm1, %ymm0, %ymm0511; AVX512BW-NEXT: vextracti128 $1, %ymm0, %xmm1512; AVX512BW-NEXT: vmovq %xmm1, 16(%rcx)513; AVX512BW-NEXT: vmovdqa %xmm0, (%rcx)514; AVX512BW-NEXT: vzeroupper515; AVX512BW-NEXT: retq516;517; AVX512BW-FCP-LABEL: store_i8_stride3_vf8:518; AVX512BW-FCP: # %bb.0:519; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero520; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero521; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero522; AVX512BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]523; AVX512BW-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm2524; AVX512BW-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0525; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[0],zero,zero,ymm0[1],zero,zero,ymm0[2],zero,zero,ymm0[3],zero,zero,ymm0[4],zero,ymm0[29],zero,ymm0[22,30],zero,ymm0[23,31],zero,zero,zero,zero,zero,zero,zero,zero,zero526; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[0,8],zero,ymm2[1,9],zero,ymm2[2,10],zero,ymm2[3,11],zero,ymm2[4,12],zero,ymm2[5],zero,ymm2[21],zero,zero,ymm2[22],zero,zero,ymm2[23],zero,zero,zero,zero,zero,zero,zero,zero527; AVX512BW-FCP-NEXT: vpor %ymm1, %ymm0, %ymm0528; AVX512BW-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1529; AVX512BW-FCP-NEXT: vmovq %xmm1, 16(%rcx)530; AVX512BW-FCP-NEXT: vmovdqa %xmm0, (%rcx)531; AVX512BW-FCP-NEXT: vzeroupper532; AVX512BW-FCP-NEXT: retq533;534; AVX512DQ-BW-LABEL: store_i8_stride3_vf8:535; AVX512DQ-BW: # %bb.0:536; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero537; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero538; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero539; AVX512DQ-BW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]540; AVX512DQ-BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm2541; AVX512DQ-BW-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0542; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[0],zero,zero,ymm0[1],zero,zero,ymm0[2],zero,zero,ymm0[3],zero,zero,ymm0[4],zero,ymm0[29],zero,ymm0[22,30],zero,ymm0[23,31],zero,zero,zero,zero,zero,zero,zero,zero,zero543; AVX512DQ-BW-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[0,8],zero,ymm2[1,9],zero,ymm2[2,10],zero,ymm2[3,11],zero,ymm2[4,12],zero,ymm2[5],zero,ymm2[21],zero,zero,ymm2[22],zero,zero,ymm2[23],zero,zero,zero,zero,zero,zero,zero,zero544; AVX512DQ-BW-NEXT: vpor %ymm1, %ymm0, %ymm0545; AVX512DQ-BW-NEXT: vextracti128 $1, %ymm0, %xmm1546; AVX512DQ-BW-NEXT: vmovq %xmm1, 16(%rcx)547; AVX512DQ-BW-NEXT: vmovdqa %xmm0, (%rcx)548; AVX512DQ-BW-NEXT: vzeroupper549; AVX512DQ-BW-NEXT: retq550;551; AVX512DQ-BW-FCP-LABEL: store_i8_stride3_vf8:552; AVX512DQ-BW-FCP: # %bb.0:553; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero554; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero555; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero556; AVX512DQ-BW-FCP-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]557; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm2558; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0559; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm0 = zero,zero,ymm0[0],zero,zero,ymm0[1],zero,zero,ymm0[2],zero,zero,ymm0[3],zero,zero,ymm0[4],zero,ymm0[29],zero,ymm0[22,30],zero,ymm0[23,31],zero,zero,zero,zero,zero,zero,zero,zero,zero560; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm2[0,8],zero,ymm2[1,9],zero,ymm2[2,10],zero,ymm2[3,11],zero,ymm2[4,12],zero,ymm2[5],zero,ymm2[21],zero,zero,ymm2[22],zero,zero,ymm2[23],zero,zero,zero,zero,zero,zero,zero,zero561; AVX512DQ-BW-FCP-NEXT: vpor %ymm1, %ymm0, %ymm0562; AVX512DQ-BW-FCP-NEXT: vextracti128 $1, %ymm0, %xmm1563; AVX512DQ-BW-FCP-NEXT: vmovq %xmm1, 16(%rcx)564; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm0, (%rcx)565; AVX512DQ-BW-FCP-NEXT: vzeroupper566; AVX512DQ-BW-FCP-NEXT: retq567 %in.vec0 = load <8 x i8>, ptr %in.vecptr0, align 64568 %in.vec1 = load <8 x i8>, ptr %in.vecptr1, align 64569 %in.vec2 = load <8 x i8>, ptr %in.vecptr2, align 64570 %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>571 %2 = shufflevector <8 x i8> %in.vec2, <8 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>572 %3 = shufflevector <16 x i8> %1, <16 x i8> %2, <24 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>573 %interleaved.vec = shufflevector <24 x i8> %3, <24 x i8> poison, <24 x i32> <i32 0, i32 8, i32 16, i32 1, i32 9, i32 17, i32 2, i32 10, i32 18, i32 3, i32 11, i32 19, i32 4, i32 12, i32 20, i32 5, i32 13, i32 21, i32 6, i32 14, i32 22, i32 7, i32 15, i32 23>574 store <24 x i8> %interleaved.vec, ptr %out.vec, align 64575 ret void576}577 578define void @store_i8_stride3_vf16(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %out.vec) nounwind {579; SSE-LABEL: store_i8_stride3_vf16:580; SSE: # %bb.0:581; SSE-NEXT: movdqa (%rdi), %xmm2582; SSE-NEXT: movdqa (%rsi), %xmm4583; SSE-NEXT: movdqa (%rdx), %xmm1584; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm2[3,3,3,3,4,5,6,7]585; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm0[0,1,2,3,4,4,6,5]586; SSE-NEXT: movdqa {{.*#+}} xmm0 = [255,255,0,255,255,0,255,255,0,255,255,0,255,255,0,255]587; SSE-NEXT: movdqa %xmm0, %xmm5588; SSE-NEXT: pandn %xmm3, %xmm5589; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm4[2,1,2,3]590; SSE-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]591; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,3,0,1]592; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]593; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm3[0,1,2,3,4,5,5,6]594; SSE-NEXT: pand %xmm0, %xmm6595; SSE-NEXT: por %xmm5, %xmm6596; SSE-NEXT: movdqa {{.*#+}} xmm5 = [255,0,255,255,0,255,255,0,255,255,0,255,255,0,255,255]597; SSE-NEXT: pand %xmm5, %xmm6598; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm1[2,1,3,3,4,5,6,7]599; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm3[0,1,2,3,4,4,4,4]600; SSE-NEXT: movdqa %xmm5, %xmm3601; SSE-NEXT: pandn %xmm7, %xmm3602; SSE-NEXT: por %xmm6, %xmm3603; SSE-NEXT: movdqa %xmm4, %xmm6604; SSE-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3],xmm6[4],xmm4[4],xmm6[5],xmm4[5],xmm6[6],xmm4[6],xmm6[7],xmm4[7]605; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[0,1,1,2]606; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm6[0,1,1,2,4,5,6,7]607; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm2[0,1,0,1]608; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[0,0,2,1,4,5,6,7]609; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,5,5,6,6]610; SSE-NEXT: pand %xmm5, %xmm7611; SSE-NEXT: pandn %xmm6, %xmm5612; SSE-NEXT: por %xmm7, %xmm5613; SSE-NEXT: pand %xmm0, %xmm5614; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm1[0,1,0,1]615; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm6[0,0,0,0,4,5,6,7]616; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,5,6,6]617; SSE-NEXT: movdqa %xmm0, %xmm7618; SSE-NEXT: pandn %xmm6, %xmm7619; SSE-NEXT: por %xmm5, %xmm7620; SSE-NEXT: punpckhbw {{.*#+}} xmm4 = xmm4[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]621; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,2,2,3]622; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,6,6,7]623; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,3,2,3]624; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[1,1,2,2,4,5,6,7]625; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,7,7,7]626; SSE-NEXT: pand %xmm0, %xmm2627; SSE-NEXT: pandn %xmm4, %xmm0628; SSE-NEXT: por %xmm2, %xmm0629; SSE-NEXT: movdqa {{.*#+}} xmm2 = [0,255,255,0,255,255,0,255,255,0,255,255,0,255,255,0]630; SSE-NEXT: pand %xmm2, %xmm0631; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]632; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[1,1,2,2,4,5,6,7]633; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,7,7]634; SSE-NEXT: pandn %xmm1, %xmm2635; SSE-NEXT: por %xmm0, %xmm2636; SSE-NEXT: movdqa %xmm2, 32(%rcx)637; SSE-NEXT: movdqa %xmm7, (%rcx)638; SSE-NEXT: movdqa %xmm3, 16(%rcx)639; SSE-NEXT: retq640;641; AVX-LABEL: store_i8_stride3_vf16:642; AVX: # %bb.0:643; AVX-NEXT: vmovdqa (%rdi), %xmm0644; AVX-NEXT: vmovdqa (%rsi), %xmm1645; AVX-NEXT: vmovdqa (%rdx), %xmm2646; AVX-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]647; AVX-NEXT: vpalignr {{.*#+}} xmm3 = xmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]648; AVX-NEXT: vpalignr {{.*#+}} xmm4 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]649; AVX-NEXT: vpalignr {{.*#+}} xmm0 = xmm3[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]650; AVX-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]651; AVX-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]652; AVX-NEXT: vmovdqa {{.*#+}} xmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]653; AVX-NEXT: vpshufb %xmm3, %xmm1, %xmm1654; AVX-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]655; AVX-NEXT: vpshufb %xmm3, %xmm0, %xmm0656; AVX-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]657; AVX-NEXT: vpshufb %xmm3, %xmm2, %xmm2658; AVX-NEXT: vmovdqa %xmm0, 16(%rcx)659; AVX-NEXT: vmovdqa %xmm1, (%rcx)660; AVX-NEXT: vmovdqa %xmm2, 32(%rcx)661; AVX-NEXT: retq662;663; AVX2-LABEL: store_i8_stride3_vf16:664; AVX2: # %bb.0:665; AVX2-NEXT: vmovdqa (%rdi), %xmm0666; AVX2-NEXT: vmovdqa (%rsi), %xmm1667; AVX2-NEXT: vmovdqa (%rdx), %xmm2668; AVX2-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]669; AVX2-NEXT: vpalignr {{.*#+}} xmm3 = xmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]670; AVX2-NEXT: vpalignr {{.*#+}} xmm4 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]671; AVX2-NEXT: vpalignr {{.*#+}} xmm0 = xmm3[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]672; AVX2-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]673; AVX2-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]674; AVX2-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]675; AVX2-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]676; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]677; AVX2-NEXT: # ymm3 = mem[0,1,0,1]678; AVX2-NEXT: vpshufb %xmm3, %xmm2, %xmm2679; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0680; AVX2-NEXT: vpshufb %ymm3, %ymm0, %ymm0681; AVX2-NEXT: vmovdqa %xmm2, 32(%rcx)682; AVX2-NEXT: vmovdqa %ymm0, (%rcx)683; AVX2-NEXT: vzeroupper684; AVX2-NEXT: retq685;686; AVX2-FP-LABEL: store_i8_stride3_vf16:687; AVX2-FP: # %bb.0:688; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm0689; AVX2-FP-NEXT: vmovdqa (%rsi), %xmm1690; AVX2-FP-NEXT: vmovdqa (%rdx), %xmm2691; AVX2-FP-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]692; AVX2-FP-NEXT: vpalignr {{.*#+}} xmm3 = xmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]693; AVX2-FP-NEXT: vpalignr {{.*#+}} xmm4 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]694; AVX2-FP-NEXT: vpalignr {{.*#+}} xmm0 = xmm3[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]695; AVX2-FP-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]696; AVX2-FP-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]697; AVX2-FP-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]698; AVX2-FP-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]699; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]700; AVX2-FP-NEXT: # ymm3 = mem[0,1,0,1]701; AVX2-FP-NEXT: vpshufb %xmm3, %xmm2, %xmm2702; AVX2-FP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0703; AVX2-FP-NEXT: vpshufb %ymm3, %ymm0, %ymm0704; AVX2-FP-NEXT: vmovdqa %xmm2, 32(%rcx)705; AVX2-FP-NEXT: vmovdqa %ymm0, (%rcx)706; AVX2-FP-NEXT: vzeroupper707; AVX2-FP-NEXT: retq708;709; AVX2-FCP-LABEL: store_i8_stride3_vf16:710; AVX2-FCP: # %bb.0:711; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm0712; AVX2-FCP-NEXT: vmovdqa (%rsi), %xmm1713; AVX2-FCP-NEXT: vmovdqa (%rdx), %xmm2714; AVX2-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]715; AVX2-FCP-NEXT: vpalignr {{.*#+}} xmm3 = xmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]716; AVX2-FCP-NEXT: vpalignr {{.*#+}} xmm4 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]717; AVX2-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm3[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]718; AVX2-FCP-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]719; AVX2-FCP-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]720; AVX2-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]721; AVX2-FCP-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]722; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]723; AVX2-FCP-NEXT: # ymm3 = mem[0,1,0,1]724; AVX2-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm2725; AVX2-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0726; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm0, %ymm0727; AVX2-FCP-NEXT: vmovdqa %xmm2, 32(%rcx)728; AVX2-FCP-NEXT: vmovdqa %ymm0, (%rcx)729; AVX2-FCP-NEXT: vzeroupper730; AVX2-FCP-NEXT: retq731;732; AVX512-LABEL: store_i8_stride3_vf16:733; AVX512: # %bb.0:734; AVX512-NEXT: vmovdqa (%rdi), %xmm0735; AVX512-NEXT: vmovdqa (%rsi), %xmm1736; AVX512-NEXT: vmovdqa (%rdx), %xmm2737; AVX512-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]738; AVX512-NEXT: vpalignr {{.*#+}} xmm3 = xmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]739; AVX512-NEXT: vpalignr {{.*#+}} xmm4 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]740; AVX512-NEXT: vpalignr {{.*#+}} xmm0 = xmm3[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]741; AVX512-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]742; AVX512-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]743; AVX512-NEXT: vmovdqa {{.*#+}} xmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]744; AVX512-NEXT: vpshufb %xmm3, %xmm1, %xmm1745; AVX512-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]746; AVX512-NEXT: vpshufb %xmm3, %xmm0, %xmm0747; AVX512-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]748; AVX512-NEXT: vpshufb %xmm3, %xmm2, %xmm2749; AVX512-NEXT: vmovdqa %xmm0, 16(%rcx)750; AVX512-NEXT: vmovdqa %xmm1, (%rcx)751; AVX512-NEXT: vmovdqa %xmm2, 32(%rcx)752; AVX512-NEXT: retq753;754; AVX512-FCP-LABEL: store_i8_stride3_vf16:755; AVX512-FCP: # %bb.0:756; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm0757; AVX512-FCP-NEXT: vmovdqa (%rsi), %xmm1758; AVX512-FCP-NEXT: vmovdqa (%rdx), %xmm2759; AVX512-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]760; AVX512-FCP-NEXT: vpalignr {{.*#+}} xmm3 = xmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]761; AVX512-FCP-NEXT: vpalignr {{.*#+}} xmm4 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]762; AVX512-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm3[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]763; AVX512-FCP-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]764; AVX512-FCP-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]765; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]766; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm1, %xmm1767; AVX512-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]768; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm0, %xmm0769; AVX512-FCP-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]770; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm2771; AVX512-FCP-NEXT: vmovdqa %xmm0, 16(%rcx)772; AVX512-FCP-NEXT: vmovdqa %xmm1, (%rcx)773; AVX512-FCP-NEXT: vmovdqa %xmm2, 32(%rcx)774; AVX512-FCP-NEXT: retq775;776; AVX512DQ-LABEL: store_i8_stride3_vf16:777; AVX512DQ: # %bb.0:778; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm0779; AVX512DQ-NEXT: vmovdqa (%rsi), %xmm1780; AVX512DQ-NEXT: vmovdqa (%rdx), %xmm2781; AVX512DQ-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]782; AVX512DQ-NEXT: vpalignr {{.*#+}} xmm3 = xmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]783; AVX512DQ-NEXT: vpalignr {{.*#+}} xmm4 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]784; AVX512DQ-NEXT: vpalignr {{.*#+}} xmm0 = xmm3[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]785; AVX512DQ-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]786; AVX512DQ-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]787; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]788; AVX512DQ-NEXT: vpshufb %xmm3, %xmm1, %xmm1789; AVX512DQ-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]790; AVX512DQ-NEXT: vpshufb %xmm3, %xmm0, %xmm0791; AVX512DQ-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]792; AVX512DQ-NEXT: vpshufb %xmm3, %xmm2, %xmm2793; AVX512DQ-NEXT: vmovdqa %xmm0, 16(%rcx)794; AVX512DQ-NEXT: vmovdqa %xmm1, (%rcx)795; AVX512DQ-NEXT: vmovdqa %xmm2, 32(%rcx)796; AVX512DQ-NEXT: retq797;798; AVX512DQ-FCP-LABEL: store_i8_stride3_vf16:799; AVX512DQ-FCP: # %bb.0:800; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm0801; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %xmm1802; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %xmm2803; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]804; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} xmm3 = xmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]805; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} xmm4 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]806; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm3[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]807; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]808; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]809; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]810; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm1, %xmm1811; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]812; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm0, %xmm0813; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]814; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm2815; AVX512DQ-FCP-NEXT: vmovdqa %xmm0, 16(%rcx)816; AVX512DQ-FCP-NEXT: vmovdqa %xmm1, (%rcx)817; AVX512DQ-FCP-NEXT: vmovdqa %xmm2, 32(%rcx)818; AVX512DQ-FCP-NEXT: retq819;820; AVX512BW-LABEL: store_i8_stride3_vf16:821; AVX512BW: # %bb.0:822; AVX512BW-NEXT: vmovdqa (%rdi), %xmm0823; AVX512BW-NEXT: vmovdqa (%rsi), %xmm1824; AVX512BW-NEXT: vmovdqa (%rdx), %xmm2825; AVX512BW-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]826; AVX512BW-NEXT: vpalignr {{.*#+}} xmm3 = xmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]827; AVX512BW-NEXT: vpalignr {{.*#+}} xmm4 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]828; AVX512BW-NEXT: vpalignr {{.*#+}} xmm0 = xmm3[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]829; AVX512BW-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]830; AVX512BW-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]831; AVX512BW-NEXT: vmovdqa {{.*#+}} xmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]832; AVX512BW-NEXT: vpshufb %xmm3, %xmm1, %xmm1833; AVX512BW-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]834; AVX512BW-NEXT: vpshufb %xmm3, %xmm0, %xmm0835; AVX512BW-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]836; AVX512BW-NEXT: vpshufb %xmm3, %xmm2, %xmm2837; AVX512BW-NEXT: vmovdqa %xmm0, 16(%rcx)838; AVX512BW-NEXT: vmovdqa %xmm1, (%rcx)839; AVX512BW-NEXT: vmovdqa %xmm2, 32(%rcx)840; AVX512BW-NEXT: retq841;842; AVX512BW-FCP-LABEL: store_i8_stride3_vf16:843; AVX512BW-FCP: # %bb.0:844; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm0845; AVX512BW-FCP-NEXT: vmovdqa (%rsi), %xmm1846; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %xmm2847; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]848; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} xmm3 = xmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]849; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} xmm4 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]850; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm3[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]851; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]852; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]853; AVX512BW-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]854; AVX512BW-FCP-NEXT: vpshufb %xmm3, %xmm1, %xmm1855; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]856; AVX512BW-FCP-NEXT: vpshufb %xmm3, %xmm0, %xmm0857; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]858; AVX512BW-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm2859; AVX512BW-FCP-NEXT: vmovdqa %xmm0, 16(%rcx)860; AVX512BW-FCP-NEXT: vmovdqa %xmm1, (%rcx)861; AVX512BW-FCP-NEXT: vmovdqa %xmm2, 32(%rcx)862; AVX512BW-FCP-NEXT: retq863;864; AVX512DQ-BW-LABEL: store_i8_stride3_vf16:865; AVX512DQ-BW: # %bb.0:866; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm0867; AVX512DQ-BW-NEXT: vmovdqa (%rsi), %xmm1868; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %xmm2869; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]870; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} xmm3 = xmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]871; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} xmm4 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]872; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} xmm0 = xmm3[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]873; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]874; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]875; AVX512DQ-BW-NEXT: vmovdqa {{.*#+}} xmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]876; AVX512DQ-BW-NEXT: vpshufb %xmm3, %xmm1, %xmm1877; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]878; AVX512DQ-BW-NEXT: vpshufb %xmm3, %xmm0, %xmm0879; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]880; AVX512DQ-BW-NEXT: vpshufb %xmm3, %xmm2, %xmm2881; AVX512DQ-BW-NEXT: vmovdqa %xmm0, 16(%rcx)882; AVX512DQ-BW-NEXT: vmovdqa %xmm1, (%rcx)883; AVX512DQ-BW-NEXT: vmovdqa %xmm2, 32(%rcx)884; AVX512DQ-BW-NEXT: retq885;886; AVX512DQ-BW-FCP-LABEL: store_i8_stride3_vf16:887; AVX512DQ-BW-FCP: # %bb.0:888; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm0889; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rsi), %xmm1890; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %xmm2891; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]892; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} xmm3 = xmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]893; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} xmm4 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]894; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm3[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]895; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]896; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]897; AVX512DQ-BW-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]898; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm3, %xmm1, %xmm1899; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]900; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm3, %xmm0, %xmm0901; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} xmm2 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]902; AVX512DQ-BW-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm2903; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm0, 16(%rcx)904; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm1, (%rcx)905; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm2, 32(%rcx)906; AVX512DQ-BW-FCP-NEXT: retq907 %in.vec0 = load <16 x i8>, ptr %in.vecptr0, align 64908 %in.vec1 = load <16 x i8>, ptr %in.vecptr1, align 64909 %in.vec2 = load <16 x i8>, ptr %in.vecptr2, align 64910 %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>911 %2 = shufflevector <16 x i8> %in.vec2, <16 x i8> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>912 %3 = shufflevector <32 x i8> %1, <32 x i8> %2, <48 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47>913 %interleaved.vec = shufflevector <48 x i8> %3, <48 x i8> poison, <48 x i32> <i32 0, i32 16, i32 32, i32 1, i32 17, i32 33, i32 2, i32 18, i32 34, i32 3, i32 19, i32 35, i32 4, i32 20, i32 36, i32 5, i32 21, i32 37, i32 6, i32 22, i32 38, i32 7, i32 23, i32 39, i32 8, i32 24, i32 40, i32 9, i32 25, i32 41, i32 10, i32 26, i32 42, i32 11, i32 27, i32 43, i32 12, i32 28, i32 44, i32 13, i32 29, i32 45, i32 14, i32 30, i32 46, i32 15, i32 31, i32 47>914 store <48 x i8> %interleaved.vec, ptr %out.vec, align 64915 ret void916}917 918define void @store_i8_stride3_vf32(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %out.vec) nounwind {919; SSE-LABEL: store_i8_stride3_vf32:920; SSE: # %bb.0:921; SSE-NEXT: movdqa (%rdi), %xmm2922; SSE-NEXT: movdqa 16(%rdi), %xmm8923; SSE-NEXT: movdqa (%rsi), %xmm4924; SSE-NEXT: movdqa 16(%rsi), %xmm10925; SSE-NEXT: movdqa (%rdx), %xmm1926; SSE-NEXT: movdqa 16(%rdx), %xmm7927; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm8[3,3,3,3,4,5,6,7]928; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm0[0,1,2,3,4,4,6,5]929; SSE-NEXT: movdqa {{.*#+}} xmm0 = [255,255,0,255,255,0,255,255,0,255,255,0,255,255,0,255]930; SSE-NEXT: movdqa %xmm0, %xmm5931; SSE-NEXT: pandn %xmm3, %xmm5932; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm10[2,1,2,3]933; SSE-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]934; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,3,0,1]935; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]936; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm3[0,1,2,3,4,5,5,6]937; SSE-NEXT: pand %xmm0, %xmm6938; SSE-NEXT: por %xmm5, %xmm6939; SSE-NEXT: movdqa {{.*#+}} xmm5 = [255,0,255,255,0,255,255,0,255,255,0,255,255,0,255,255]940; SSE-NEXT: pand %xmm5, %xmm6941; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm7[2,1,3,3,4,5,6,7]942; SSE-NEXT: pshufhw {{.*#+}} xmm9 = xmm3[0,1,2,3,4,4,4,4]943; SSE-NEXT: movdqa %xmm5, %xmm3944; SSE-NEXT: pandn %xmm9, %xmm3945; SSE-NEXT: por %xmm6, %xmm3946; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm2[3,3,3,3,4,5,6,7]947; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,6,5]948; SSE-NEXT: movdqa %xmm0, %xmm9949; SSE-NEXT: pandn %xmm6, %xmm9950; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm4[2,1,2,3]951; SSE-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]952; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm6[2,3,0,1]953; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm6[1,2,2,3,4,5,6,7]954; SSE-NEXT: pshufhw {{.*#+}} xmm11 = xmm6[0,1,2,3,4,5,5,6]955; SSE-NEXT: pand %xmm0, %xmm11956; SSE-NEXT: por %xmm9, %xmm11957; SSE-NEXT: pand %xmm5, %xmm11958; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm1[2,1,3,3,4,5,6,7]959; SSE-NEXT: pshufhw {{.*#+}} xmm9 = xmm6[0,1,2,3,4,4,4,4]960; SSE-NEXT: movdqa %xmm5, %xmm6961; SSE-NEXT: pandn %xmm9, %xmm6962; SSE-NEXT: por %xmm11, %xmm6963; SSE-NEXT: movdqa %xmm10, %xmm9964; SSE-NEXT: punpckhbw {{.*#+}} xmm9 = xmm9[8],xmm10[8],xmm9[9],xmm10[9],xmm9[10],xmm10[10],xmm9[11],xmm10[11],xmm9[12],xmm10[12],xmm9[13],xmm10[13],xmm9[14],xmm10[14],xmm9[15],xmm10[15]965; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm9[1,2,2,3]966; SSE-NEXT: pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,5,6,6,7]967; SSE-NEXT: movdqa %xmm0, %xmm11968; SSE-NEXT: pandn %xmm9, %xmm11969; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm8[2,3,2,3]970; SSE-NEXT: pshuflw {{.*#+}} xmm9 = xmm9[1,1,2,2,4,5,6,7]971; SSE-NEXT: pshufhw {{.*#+}} xmm12 = xmm9[0,1,2,3,7,7,7,7]972; SSE-NEXT: pand %xmm0, %xmm12973; SSE-NEXT: por %xmm11, %xmm12974; SSE-NEXT: movdqa {{.*#+}} xmm9 = [0,255,255,0,255,255,0,255,255,0,255,255,0,255,255,0]975; SSE-NEXT: pand %xmm9, %xmm12976; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm7[2,3,2,3]977; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm11[1,1,2,2,4,5,6,7]978; SSE-NEXT: pshufhw {{.*#+}} xmm13 = xmm11[0,1,2,3,6,5,7,7]979; SSE-NEXT: movdqa %xmm9, %xmm11980; SSE-NEXT: pandn %xmm13, %xmm11981; SSE-NEXT: por %xmm12, %xmm11982; SSE-NEXT: punpcklbw {{.*#+}} xmm10 = xmm10[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]983; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm10[0,1,1,2]984; SSE-NEXT: pshuflw {{.*#+}} xmm10 = xmm10[0,1,1,2,4,5,6,7]985; SSE-NEXT: movdqa %xmm5, %xmm12986; SSE-NEXT: pandn %xmm10, %xmm12987; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm8[0,1,0,1]988; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm8[0,0,2,1,4,5,6,7]989; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,5,5,6,6]990; SSE-NEXT: pand %xmm5, %xmm8991; SSE-NEXT: por %xmm12, %xmm8992; SSE-NEXT: pand %xmm0, %xmm8993; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[0,1,0,1]994; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[0,0,0,0,4,5,6,7]995; SSE-NEXT: pshufhw {{.*#+}} xmm10 = xmm7[0,1,2,3,5,5,6,6]996; SSE-NEXT: movdqa %xmm0, %xmm7997; SSE-NEXT: pandn %xmm10, %xmm7998; SSE-NEXT: por %xmm8, %xmm7999; SSE-NEXT: movdqa %xmm4, %xmm81000; SSE-NEXT: punpckhbw {{.*#+}} xmm8 = xmm8[8],xmm4[8],xmm8[9],xmm4[9],xmm8[10],xmm4[10],xmm8[11],xmm4[11],xmm8[12],xmm4[12],xmm8[13],xmm4[13],xmm8[14],xmm4[14],xmm8[15],xmm4[15]1001; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm8[1,2,2,3]1002; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,5,6,6,7]1003; SSE-NEXT: movdqa %xmm0, %xmm101004; SSE-NEXT: pandn %xmm8, %xmm101005; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm2[2,3,2,3]1006; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm8[1,1,2,2,4,5,6,7]1007; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,7,7,7,7]1008; SSE-NEXT: pand %xmm0, %xmm81009; SSE-NEXT: por %xmm10, %xmm81010; SSE-NEXT: pand %xmm9, %xmm81011; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm1[2,3,2,3]1012; SSE-NEXT: pshuflw {{.*#+}} xmm10 = xmm10[1,1,2,2,4,5,6,7]1013; SSE-NEXT: pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,6,5,7,7]1014; SSE-NEXT: pandn %xmm10, %xmm91015; SSE-NEXT: por %xmm8, %xmm91016; SSE-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1017; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,1,1,2]1018; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,1,1,2,4,5,6,7]1019; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,0,1]1020; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,0,2,1,4,5,6,7]1021; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,5,6,6]1022; SSE-NEXT: pand %xmm5, %xmm21023; SSE-NEXT: pandn %xmm4, %xmm51024; SSE-NEXT: por %xmm2, %xmm51025; SSE-NEXT: pand %xmm0, %xmm51026; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,1]1027; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]1028; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,6,6]1029; SSE-NEXT: pandn %xmm1, %xmm01030; SSE-NEXT: por %xmm5, %xmm01031; SSE-NEXT: movdqa %xmm0, (%rcx)1032; SSE-NEXT: movdqa %xmm9, 32(%rcx)1033; SSE-NEXT: movdqa %xmm7, 48(%rcx)1034; SSE-NEXT: movdqa %xmm11, 80(%rcx)1035; SSE-NEXT: movdqa %xmm6, 16(%rcx)1036; SSE-NEXT: movdqa %xmm3, 64(%rcx)1037; SSE-NEXT: retq1038;1039; AVX-LABEL: store_i8_stride3_vf32:1040; AVX: # %bb.0:1041; AVX-NEXT: vmovdqa (%rdi), %xmm01042; AVX-NEXT: vmovdqa 16(%rdi), %xmm11043; AVX-NEXT: vpalignr {{.*#+}} xmm1 = xmm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]1044; AVX-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5]1045; AVX-NEXT: vmovdqa (%rsi), %xmm21046; AVX-NEXT: vmovdqa 16(%rsi), %xmm31047; AVX-NEXT: vpalignr {{.*#+}} xmm4 = xmm3[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]1048; AVX-NEXT: vpalignr {{.*#+}} xmm5 = xmm2[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10]1049; AVX-NEXT: vmovdqa (%rdx), %xmm61050; AVX-NEXT: vmovdqa 16(%rdx), %xmm71051; AVX-NEXT: vpalignr {{.*#+}} xmm8 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm6[0,1,2,3,4]1052; AVX-NEXT: vpalignr {{.*#+}} xmm9 = xmm1[5,6,7,8,9,10,11,12,13,14,15],xmm7[0,1,2,3,4]1053; AVX-NEXT: vpalignr {{.*#+}} xmm0 = xmm5[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]1054; AVX-NEXT: vpalignr {{.*#+}} xmm1 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]1055; AVX-NEXT: vpalignr {{.*#+}} xmm5 = xmm6[5,6,7,8,9,10,11,12,13,14,15],xmm5[0,1,2,3,4]1056; AVX-NEXT: vpalignr {{.*#+}} xmm4 = xmm7[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]1057; AVX-NEXT: vpalignr {{.*#+}} xmm3 = xmm9[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]1058; AVX-NEXT: vpalignr {{.*#+}} xmm2 = xmm8[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]1059; AVX-NEXT: vpalignr {{.*#+}} xmm1 = xmm1[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]1060; AVX-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],xmm5[0,1,2,3,4]1061; AVX-NEXT: vpalignr {{.*#+}} xmm4 = xmm4[5,6,7,8,9,10,11,12,13,14,15],xmm9[0,1,2,3,4]1062; AVX-NEXT: vpalignr {{.*#+}} xmm5 = xmm5[5,6,7,8,9,10,11,12,13,14,15],xmm8[0,1,2,3,4]1063; AVX-NEXT: vmovdqa {{.*#+}} xmm6 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1064; AVX-NEXT: vpshufb %xmm6, %xmm0, %xmm01065; AVX-NEXT: vpshufb %xmm6, %xmm2, %xmm21066; AVX-NEXT: vpshufb %xmm6, %xmm5, %xmm51067; AVX-NEXT: vpshufb %xmm6, %xmm3, %xmm31068; AVX-NEXT: vpshufb %xmm6, %xmm4, %xmm41069; AVX-NEXT: vpshufb %xmm6, %xmm1, %xmm11070; AVX-NEXT: vmovdqa %xmm1, 64(%rcx)1071; AVX-NEXT: vmovdqa %xmm4, 80(%rcx)1072; AVX-NEXT: vmovdqa %xmm3, 48(%rcx)1073; AVX-NEXT: vmovdqa %xmm5, 32(%rcx)1074; AVX-NEXT: vmovdqa %xmm2, (%rcx)1075; AVX-NEXT: vmovdqa %xmm0, 16(%rcx)1076; AVX-NEXT: retq1077;1078; AVX2-LABEL: store_i8_stride3_vf32:1079; AVX2: # %bb.0:1080; AVX2-NEXT: vmovdqa (%rdi), %ymm01081; AVX2-NEXT: vmovdqa (%rsi), %ymm11082; AVX2-NEXT: vmovdqa (%rdx), %ymm21083; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1084; AVX2-NEXT: vpalignr {{.*#+}} ymm3 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1085; AVX2-NEXT: vpalignr {{.*#+}} ymm4 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1086; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm3[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm3[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1087; AVX2-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1088; AVX2-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1089; AVX2-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1090; AVX2-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1091; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm31092; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1093; AVX2-NEXT: # ymm4 = mem[0,1,0,1]1094; AVX2-NEXT: vpshufb %ymm4, %ymm3, %ymm31095; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]1096; AVX2-NEXT: vpshufb %ymm4, %ymm1, %ymm11097; AVX2-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]1098; AVX2-NEXT: vpshufb %ymm4, %ymm0, %ymm01099; AVX2-NEXT: vmovdqa %ymm1, 32(%rcx)1100; AVX2-NEXT: vmovdqa %ymm0, 64(%rcx)1101; AVX2-NEXT: vmovdqa %ymm3, (%rcx)1102; AVX2-NEXT: vzeroupper1103; AVX2-NEXT: retq1104;1105; AVX2-FP-LABEL: store_i8_stride3_vf32:1106; AVX2-FP: # %bb.0:1107; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm01108; AVX2-FP-NEXT: vmovdqa (%rsi), %ymm11109; AVX2-FP-NEXT: vmovdqa (%rdx), %ymm21110; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1111; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm3 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1112; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm4 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1113; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm0 = ymm3[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm3[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1114; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1115; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1116; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1117; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1118; AVX2-FP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm31119; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1120; AVX2-FP-NEXT: # ymm4 = mem[0,1,0,1]1121; AVX2-FP-NEXT: vpshufb %ymm4, %ymm3, %ymm31122; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]1123; AVX2-FP-NEXT: vpshufb %ymm4, %ymm1, %ymm11124; AVX2-FP-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]1125; AVX2-FP-NEXT: vpshufb %ymm4, %ymm0, %ymm01126; AVX2-FP-NEXT: vmovdqa %ymm1, 32(%rcx)1127; AVX2-FP-NEXT: vmovdqa %ymm0, 64(%rcx)1128; AVX2-FP-NEXT: vmovdqa %ymm3, (%rcx)1129; AVX2-FP-NEXT: vzeroupper1130; AVX2-FP-NEXT: retq1131;1132; AVX2-FCP-LABEL: store_i8_stride3_vf32:1133; AVX2-FCP: # %bb.0:1134; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm01135; AVX2-FCP-NEXT: vmovdqa (%rsi), %ymm11136; AVX2-FCP-NEXT: vmovdqa (%rdx), %ymm21137; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1138; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm3 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1139; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm4 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1140; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm3[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm3[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1141; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1142; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1143; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1144; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1145; AVX2-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm31146; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1147; AVX2-FCP-NEXT: # ymm4 = mem[0,1,0,1]1148; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm31149; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]1150; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm1, %ymm11151; AVX2-FCP-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]1152; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm0, %ymm01153; AVX2-FCP-NEXT: vmovdqa %ymm1, 32(%rcx)1154; AVX2-FCP-NEXT: vmovdqa %ymm0, 64(%rcx)1155; AVX2-FCP-NEXT: vmovdqa %ymm3, (%rcx)1156; AVX2-FCP-NEXT: vzeroupper1157; AVX2-FCP-NEXT: retq1158;1159; AVX512-LABEL: store_i8_stride3_vf32:1160; AVX512: # %bb.0:1161; AVX512-NEXT: vmovdqa (%rdi), %ymm01162; AVX512-NEXT: vmovdqa (%rsi), %ymm11163; AVX512-NEXT: vmovdqa (%rdx), %ymm21164; AVX512-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1165; AVX512-NEXT: vpalignr {{.*#+}} ymm3 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1166; AVX512-NEXT: vpalignr {{.*#+}} ymm4 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1167; AVX512-NEXT: vpalignr {{.*#+}} ymm0 = ymm3[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm3[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1168; AVX512-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1169; AVX512-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1170; AVX512-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1171; AVX512-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1172; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm31173; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1174; AVX512-NEXT: # ymm4 = mem[0,1,0,1]1175; AVX512-NEXT: vpshufb %ymm4, %ymm3, %ymm31176; AVX512-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]1177; AVX512-NEXT: vpshufb %ymm4, %ymm1, %ymm11178; AVX512-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]1179; AVX512-NEXT: vpshufb %ymm4, %ymm0, %ymm01180; AVX512-NEXT: vmovdqa %ymm1, 32(%rcx)1181; AVX512-NEXT: vmovdqa %ymm0, 64(%rcx)1182; AVX512-NEXT: vmovdqa %ymm3, (%rcx)1183; AVX512-NEXT: vzeroupper1184; AVX512-NEXT: retq1185;1186; AVX512-FCP-LABEL: store_i8_stride3_vf32:1187; AVX512-FCP: # %bb.0:1188; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm01189; AVX512-FCP-NEXT: vmovdqa (%rsi), %ymm11190; AVX512-FCP-NEXT: vmovdqa (%rdx), %ymm21191; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1192; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm3 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1193; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm4 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1194; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm3[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm3[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1195; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1196; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1197; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1198; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1199; AVX512-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm31200; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1201; AVX512-FCP-NEXT: # ymm4 = mem[0,1,0,1]1202; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm31203; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]1204; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm1, %ymm11205; AVX512-FCP-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]1206; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm0, %ymm01207; AVX512-FCP-NEXT: vmovdqa %ymm1, 32(%rcx)1208; AVX512-FCP-NEXT: vmovdqa %ymm0, 64(%rcx)1209; AVX512-FCP-NEXT: vmovdqa %ymm3, (%rcx)1210; AVX512-FCP-NEXT: vzeroupper1211; AVX512-FCP-NEXT: retq1212;1213; AVX512DQ-LABEL: store_i8_stride3_vf32:1214; AVX512DQ: # %bb.0:1215; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm01216; AVX512DQ-NEXT: vmovdqa (%rsi), %ymm11217; AVX512DQ-NEXT: vmovdqa (%rdx), %ymm21218; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1219; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm3 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1220; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm4 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1221; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm0 = ymm3[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm3[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1222; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1223; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1224; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1225; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1226; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm31227; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1228; AVX512DQ-NEXT: # ymm4 = mem[0,1,0,1]1229; AVX512DQ-NEXT: vpshufb %ymm4, %ymm3, %ymm31230; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]1231; AVX512DQ-NEXT: vpshufb %ymm4, %ymm1, %ymm11232; AVX512DQ-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]1233; AVX512DQ-NEXT: vpshufb %ymm4, %ymm0, %ymm01234; AVX512DQ-NEXT: vmovdqa %ymm1, 32(%rcx)1235; AVX512DQ-NEXT: vmovdqa %ymm0, 64(%rcx)1236; AVX512DQ-NEXT: vmovdqa %ymm3, (%rcx)1237; AVX512DQ-NEXT: vzeroupper1238; AVX512DQ-NEXT: retq1239;1240; AVX512DQ-FCP-LABEL: store_i8_stride3_vf32:1241; AVX512DQ-FCP: # %bb.0:1242; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm01243; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %ymm11244; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %ymm21245; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1246; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm3 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1247; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm4 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1248; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm3[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm3[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1249; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1250; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1251; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1252; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1253; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm31254; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1255; AVX512DQ-FCP-NEXT: # ymm4 = mem[0,1,0,1]1256; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm31257; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]1258; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm1, %ymm11259; AVX512DQ-FCP-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]1260; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm0, %ymm01261; AVX512DQ-FCP-NEXT: vmovdqa %ymm1, 32(%rcx)1262; AVX512DQ-FCP-NEXT: vmovdqa %ymm0, 64(%rcx)1263; AVX512DQ-FCP-NEXT: vmovdqa %ymm3, (%rcx)1264; AVX512DQ-FCP-NEXT: vzeroupper1265; AVX512DQ-FCP-NEXT: retq1266;1267; AVX512BW-LABEL: store_i8_stride3_vf32:1268; AVX512BW: # %bb.0:1269; AVX512BW-NEXT: vmovdqa (%rdi), %ymm01270; AVX512BW-NEXT: vmovdqa (%rsi), %ymm11271; AVX512BW-NEXT: vmovdqa (%rdx), %ymm21272; AVX512BW-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1273; AVX512BW-NEXT: vpalignr {{.*#+}} ymm3 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1274; AVX512BW-NEXT: vpalignr {{.*#+}} ymm4 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1275; AVX512BW-NEXT: vpalignr {{.*#+}} ymm0 = ymm3[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm3[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1276; AVX512BW-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1277; AVX512BW-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1278; AVX512BW-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1279; AVX512BW-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1280; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm31281; AVX512BW-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]1282; AVX512BW-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]1283; AVX512BW-NEXT: vbroadcasti32x4 {{.*#+}} zmm2 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1284; AVX512BW-NEXT: # zmm2 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1285; AVX512BW-NEXT: vpshufb %ymm2, %ymm0, %ymm01286; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm3, %zmm11287; AVX512BW-NEXT: vpshufb %zmm2, %zmm1, %zmm11288; AVX512BW-NEXT: vmovdqa %ymm0, 64(%rcx)1289; AVX512BW-NEXT: vmovdqa64 %zmm1, (%rcx)1290; AVX512BW-NEXT: vzeroupper1291; AVX512BW-NEXT: retq1292;1293; AVX512BW-FCP-LABEL: store_i8_stride3_vf32:1294; AVX512BW-FCP: # %bb.0:1295; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %ymm01296; AVX512BW-FCP-NEXT: vmovdqa (%rsi), %ymm11297; AVX512BW-FCP-NEXT: vmovdqa (%rdx), %ymm21298; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1299; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} ymm3 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1300; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} ymm4 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1301; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm3[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm3[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1302; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1303; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1304; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1305; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1306; AVX512BW-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm31307; AVX512BW-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]1308; AVX512BW-FCP-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]1309; AVX512BW-FCP-NEXT: vbroadcasti32x4 {{.*#+}} zmm2 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1310; AVX512BW-FCP-NEXT: # zmm2 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1311; AVX512BW-FCP-NEXT: vpshufb %ymm2, %ymm0, %ymm01312; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm3, %zmm11313; AVX512BW-FCP-NEXT: vpshufb %zmm2, %zmm1, %zmm11314; AVX512BW-FCP-NEXT: vmovdqa %ymm0, 64(%rcx)1315; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, (%rcx)1316; AVX512BW-FCP-NEXT: vzeroupper1317; AVX512BW-FCP-NEXT: retq1318;1319; AVX512DQ-BW-LABEL: store_i8_stride3_vf32:1320; AVX512DQ-BW: # %bb.0:1321; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %ymm01322; AVX512DQ-BW-NEXT: vmovdqa (%rsi), %ymm11323; AVX512DQ-BW-NEXT: vmovdqa (%rdx), %ymm21324; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1325; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} ymm3 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1326; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} ymm4 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1327; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} ymm0 = ymm3[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm3[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1328; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1329; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1330; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1331; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1332; AVX512DQ-BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm31333; AVX512DQ-BW-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]1334; AVX512DQ-BW-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]1335; AVX512DQ-BW-NEXT: vbroadcasti32x4 {{.*#+}} zmm2 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1336; AVX512DQ-BW-NEXT: # zmm2 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1337; AVX512DQ-BW-NEXT: vpshufb %ymm2, %ymm0, %ymm01338; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm1, %zmm3, %zmm11339; AVX512DQ-BW-NEXT: vpshufb %zmm2, %zmm1, %zmm11340; AVX512DQ-BW-NEXT: vmovdqa %ymm0, 64(%rcx)1341; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, (%rcx)1342; AVX512DQ-BW-NEXT: vzeroupper1343; AVX512DQ-BW-NEXT: retq1344;1345; AVX512DQ-BW-FCP-LABEL: store_i8_stride3_vf32:1346; AVX512DQ-BW-FCP: # %bb.0:1347; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %ymm01348; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rsi), %ymm11349; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdx), %ymm21350; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1351; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} ymm3 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1352; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} ymm4 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1353; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm3[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm3[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1354; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1355; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1356; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1357; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm2[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm2[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1358; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm31359; AVX512DQ-BW-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]1360; AVX512DQ-BW-FCP-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]1361; AVX512DQ-BW-FCP-NEXT: vbroadcasti32x4 {{.*#+}} zmm2 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1362; AVX512DQ-BW-FCP-NEXT: # zmm2 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1363; AVX512DQ-BW-FCP-NEXT: vpshufb %ymm2, %ymm0, %ymm01364; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm3, %zmm11365; AVX512DQ-BW-FCP-NEXT: vpshufb %zmm2, %zmm1, %zmm11366; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm0, 64(%rcx)1367; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, (%rcx)1368; AVX512DQ-BW-FCP-NEXT: vzeroupper1369; AVX512DQ-BW-FCP-NEXT: retq1370 %in.vec0 = load <32 x i8>, ptr %in.vecptr0, align 641371 %in.vec1 = load <32 x i8>, ptr %in.vecptr1, align 641372 %in.vec2 = load <32 x i8>, ptr %in.vecptr2, align 641373 %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>1374 %2 = shufflevector <32 x i8> %in.vec2, <32 x i8> poison, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>1375 %3 = shufflevector <64 x i8> %1, <64 x i8> %2, <96 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95>1376 %interleaved.vec = shufflevector <96 x i8> %3, <96 x i8> poison, <96 x i32> <i32 0, i32 32, i32 64, i32 1, i32 33, i32 65, i32 2, i32 34, i32 66, i32 3, i32 35, i32 67, i32 4, i32 36, i32 68, i32 5, i32 37, i32 69, i32 6, i32 38, i32 70, i32 7, i32 39, i32 71, i32 8, i32 40, i32 72, i32 9, i32 41, i32 73, i32 10, i32 42, i32 74, i32 11, i32 43, i32 75, i32 12, i32 44, i32 76, i32 13, i32 45, i32 77, i32 14, i32 46, i32 78, i32 15, i32 47, i32 79, i32 16, i32 48, i32 80, i32 17, i32 49, i32 81, i32 18, i32 50, i32 82, i32 19, i32 51, i32 83, i32 20, i32 52, i32 84, i32 21, i32 53, i32 85, i32 22, i32 54, i32 86, i32 23, i32 55, i32 87, i32 24, i32 56, i32 88, i32 25, i32 57, i32 89, i32 26, i32 58, i32 90, i32 27, i32 59, i32 91, i32 28, i32 60, i32 92, i32 29, i32 61, i32 93, i32 30, i32 62, i32 94, i32 31, i32 63, i32 95>1377 store <96 x i8> %interleaved.vec, ptr %out.vec, align 641378 ret void1379}1380 1381define void @store_i8_stride3_vf64(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %out.vec) nounwind {1382; SSE-LABEL: store_i8_stride3_vf64:1383; SSE: # %bb.0:1384; SSE-NEXT: movdqa 16(%rdi), %xmm101385; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1386; SSE-NEXT: movdqa 32(%rdi), %xmm121387; SSE-NEXT: movdqa 48(%rdi), %xmm51388; SSE-NEXT: movdqa 16(%rsi), %xmm91389; SSE-NEXT: movdqa 32(%rsi), %xmm141390; SSE-NEXT: movdqa 48(%rsi), %xmm41391; SSE-NEXT: movdqa 16(%rdx), %xmm81392; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1393; SSE-NEXT: movdqa 32(%rdx), %xmm111394; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1395; SSE-NEXT: movdqa 48(%rdx), %xmm71396; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm5[3,3,3,3,4,5,6,7]1397; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm0[0,1,2,3,4,4,6,5]1398; SSE-NEXT: movdqa {{.*#+}} xmm1 = [255,255,0,255,255,0,255,255,0,255,255,0,255,255,0,255]1399; SSE-NEXT: movdqa %xmm1, %xmm31400; SSE-NEXT: pandn %xmm2, %xmm31401; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[2,1,2,3]1402; SSE-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1403; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,3,0,1]1404; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[1,2,2,3,4,5,6,7]1405; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm2[0,1,2,3,4,5,5,6]1406; SSE-NEXT: pand %xmm1, %xmm61407; SSE-NEXT: por %xmm3, %xmm61408; SSE-NEXT: movdqa {{.*#+}} xmm2 = [255,0,255,255,0,255,255,0,255,255,0,255,255,0,255,255]1409; SSE-NEXT: pand %xmm2, %xmm61410; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm7[2,1,3,3,4,5,6,7]1411; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]1412; SSE-NEXT: movdqa %xmm2, %xmm01413; SSE-NEXT: pandn %xmm3, %xmm01414; SSE-NEXT: por %xmm6, %xmm01415; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1416; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm12[3,3,3,3,4,5,6,7]1417; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,6,5]1418; SSE-NEXT: movdqa %xmm1, %xmm61419; SSE-NEXT: pandn %xmm3, %xmm61420; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm14[2,1,2,3]1421; SSE-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1422; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,3,0,1]1423; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]1424; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,6]1425; SSE-NEXT: pand %xmm1, %xmm31426; SSE-NEXT: por %xmm6, %xmm31427; SSE-NEXT: pand %xmm2, %xmm31428; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm11[2,1,3,3,4,5,6,7]1429; SSE-NEXT: pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]1430; SSE-NEXT: movdqa %xmm2, %xmm01431; SSE-NEXT: pandn %xmm6, %xmm01432; SSE-NEXT: por %xmm3, %xmm01433; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1434; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm10[3,3,3,3,4,5,6,7]1435; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,6,5]1436; SSE-NEXT: movdqa %xmm1, %xmm61437; SSE-NEXT: pandn %xmm3, %xmm61438; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm9[2,1,2,3]1439; SSE-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1440; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,3,0,1]1441; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]1442; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,6]1443; SSE-NEXT: pand %xmm1, %xmm31444; SSE-NEXT: por %xmm6, %xmm31445; SSE-NEXT: pshuflw {{.*#+}} xmm6 = xmm8[2,1,3,3,4,5,6,7]1446; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm6[0,1,2,3,4,4,4,4]1447; SSE-NEXT: movdqa %xmm2, %xmm131448; SSE-NEXT: pandn %xmm8, %xmm131449; SSE-NEXT: movdqa (%rdi), %xmm01450; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1451; SSE-NEXT: pand %xmm2, %xmm31452; SSE-NEXT: por %xmm3, %xmm131453; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm0[3,3,3,3,4,5,6,7]1454; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,6,5]1455; SSE-NEXT: movdqa %xmm1, %xmm81456; SSE-NEXT: pandn %xmm3, %xmm81457; SSE-NEXT: movdqa (%rsi), %xmm111458; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm11[2,1,2,3]1459; SSE-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1460; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,3,0,1]1461; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]1462; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,6]1463; SSE-NEXT: pand %xmm1, %xmm31464; SSE-NEXT: por %xmm8, %xmm31465; SSE-NEXT: movdqa (%rdx), %xmm01466; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1467; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm0[2,1,3,3,4,5,6,7]1468; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm8[0,1,2,3,4,4,4,4]1469; SSE-NEXT: movdqa %xmm2, %xmm101470; SSE-NEXT: pandn %xmm15, %xmm101471; SSE-NEXT: pand %xmm2, %xmm31472; SSE-NEXT: por %xmm3, %xmm101473; SSE-NEXT: movdqa %xmm4, %xmm31474; SSE-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm4[8],xmm3[9],xmm4[9],xmm3[10],xmm4[10],xmm3[11],xmm4[11],xmm3[12],xmm4[12],xmm3[13],xmm4[13],xmm3[14],xmm4[14],xmm3[15],xmm4[15]1475; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,2,2,3]1476; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,6,6,7]1477; SSE-NEXT: movdqa %xmm1, %xmm151478; SSE-NEXT: pandn %xmm3, %xmm151479; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm5[2,3,2,3]1480; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,1,2,2,4,5,6,7]1481; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm3[0,1,2,3,7,7,7,7]1482; SSE-NEXT: pand %xmm1, %xmm01483; SSE-NEXT: por %xmm15, %xmm01484; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm7[2,3,2,3]1485; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,1,2,2,4,5,6,7]1486; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,6,5,7,7]1487; SSE-NEXT: movdqa {{.*#+}} xmm15 = [0,255,255,0,255,255,0,255,255,0,255,255,0,255,255,0]1488; SSE-NEXT: movdqa %xmm15, %xmm81489; SSE-NEXT: pandn %xmm3, %xmm81490; SSE-NEXT: pand %xmm15, %xmm01491; SSE-NEXT: por %xmm0, %xmm81492; SSE-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1493; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,1,1,2]1494; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,1,1,2,4,5,6,7]1495; SSE-NEXT: movdqa %xmm2, %xmm31496; SSE-NEXT: pandn %xmm0, %xmm31497; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,1,0,1]1498; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,2,1,4,5,6,7]1499; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm0[0,1,2,3,5,5,6,6]1500; SSE-NEXT: pand %xmm2, %xmm41501; SSE-NEXT: por %xmm3, %xmm41502; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,1,0,1]1503; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]1504; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm0[0,1,2,3,5,5,6,6]1505; SSE-NEXT: movdqa %xmm1, %xmm61506; SSE-NEXT: pandn %xmm3, %xmm61507; SSE-NEXT: pand %xmm1, %xmm41508; SSE-NEXT: por %xmm4, %xmm61509; SSE-NEXT: movdqa %xmm14, %xmm31510; SSE-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm14[8],xmm3[9],xmm14[9],xmm3[10],xmm14[10],xmm3[11],xmm14[11],xmm3[12],xmm14[12],xmm3[13],xmm14[13],xmm3[14],xmm14[14],xmm3[15],xmm14[15]1511; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,2,2,3]1512; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,6,6,7]1513; SSE-NEXT: movdqa %xmm1, %xmm41514; SSE-NEXT: pandn %xmm3, %xmm41515; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm12[2,3,2,3]1516; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,1,2,2,4,5,6,7]1517; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,7,7,7]1518; SSE-NEXT: pand %xmm1, %xmm31519; SSE-NEXT: por %xmm4, %xmm31520; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1521; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm0[2,3,2,3]1522; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[1,1,2,2,4,5,6,7]1523; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm4[0,1,2,3,6,5,7,7]1524; SSE-NEXT: movdqa %xmm15, %xmm41525; SSE-NEXT: pandn %xmm5, %xmm41526; SSE-NEXT: pand %xmm15, %xmm31527; SSE-NEXT: por %xmm3, %xmm41528; SSE-NEXT: punpcklbw {{.*#+}} xmm14 = xmm14[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1529; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm14[0,1,1,2]1530; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,2,4,5,6,7]1531; SSE-NEXT: movdqa %xmm2, %xmm51532; SSE-NEXT: pandn %xmm3, %xmm51533; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm12[0,1,0,1]1534; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,0,2,1,4,5,6,7]1535; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,5,6,6]1536; SSE-NEXT: pand %xmm2, %xmm31537; SSE-NEXT: por %xmm5, %xmm31538; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm0[0,1,0,1]1539; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[0,0,0,0,4,5,6,7]1540; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm5[0,1,2,3,5,5,6,6]1541; SSE-NEXT: movdqa %xmm1, %xmm51542; SSE-NEXT: pandn %xmm7, %xmm51543; SSE-NEXT: pand %xmm1, %xmm31544; SSE-NEXT: por %xmm3, %xmm51545; SSE-NEXT: movdqa %xmm9, %xmm31546; SSE-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm9[8],xmm3[9],xmm9[9],xmm3[10],xmm9[10],xmm3[11],xmm9[11],xmm3[12],xmm9[12],xmm3[13],xmm9[13],xmm3[14],xmm9[14],xmm3[15],xmm9[15]1547; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,2,2,3]1548; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,6,6,7]1549; SSE-NEXT: movdqa %xmm1, %xmm71550; SSE-NEXT: pandn %xmm3, %xmm71551; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1552; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm0[2,3,2,3]1553; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,1,2,2,4,5,6,7]1554; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,7,7,7]1555; SSE-NEXT: pand %xmm1, %xmm31556; SSE-NEXT: por %xmm7, %xmm31557; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload1558; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm14[2,3,2,3]1559; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[1,1,2,2,4,5,6,7]1560; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,6,5,7,7]1561; SSE-NEXT: movdqa %xmm15, %xmm121562; SSE-NEXT: pandn %xmm7, %xmm121563; SSE-NEXT: pand %xmm15, %xmm31564; SSE-NEXT: por %xmm3, %xmm121565; SSE-NEXT: punpcklbw {{.*#+}} xmm9 = xmm9[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1566; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm9[0,1,1,2]1567; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,2,4,5,6,7]1568; SSE-NEXT: movdqa %xmm2, %xmm71569; SSE-NEXT: pandn %xmm3, %xmm71570; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm0[0,1,0,1]1571; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,0,2,1,4,5,6,7]1572; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,5,6,6]1573; SSE-NEXT: pand %xmm2, %xmm31574; SSE-NEXT: por %xmm7, %xmm31575; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm14[0,1,0,1]1576; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[0,0,0,0,4,5,6,7]1577; SSE-NEXT: pshufhw {{.*#+}} xmm9 = xmm7[0,1,2,3,5,5,6,6]1578; SSE-NEXT: movdqa %xmm1, %xmm71579; SSE-NEXT: pandn %xmm9, %xmm71580; SSE-NEXT: pand %xmm1, %xmm31581; SSE-NEXT: por %xmm3, %xmm71582; SSE-NEXT: movdqa %xmm11, %xmm31583; SSE-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm11[8],xmm3[9],xmm11[9],xmm3[10],xmm11[10],xmm3[11],xmm11[11],xmm3[12],xmm11[12],xmm3[13],xmm11[13],xmm3[14],xmm11[14],xmm3[15],xmm11[15]1584; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,2,2,3]1585; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,6,6,7]1586; SSE-NEXT: movdqa %xmm1, %xmm91587; SSE-NEXT: pandn %xmm3, %xmm91588; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1589; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm0[2,3,2,3]1590; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,1,2,2,4,5,6,7]1591; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,7,7,7]1592; SSE-NEXT: pand %xmm1, %xmm31593; SSE-NEXT: por %xmm9, %xmm31594; SSE-NEXT: pand %xmm15, %xmm31595; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload1596; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm14[2,3,2,3]1597; SSE-NEXT: pshuflw {{.*#+}} xmm9 = xmm9[1,1,2,2,4,5,6,7]1598; SSE-NEXT: pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,6,5,7,7]1599; SSE-NEXT: pandn %xmm9, %xmm151600; SSE-NEXT: por %xmm3, %xmm151601; SSE-NEXT: punpcklbw {{.*#+}} xmm11 = xmm11[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]1602; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm11[0,1,1,2]1603; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,2,4,5,6,7]1604; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm0[0,1,0,1]1605; SSE-NEXT: pshuflw {{.*#+}} xmm9 = xmm9[0,0,2,1,4,5,6,7]1606; SSE-NEXT: pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,5,5,6,6]1607; SSE-NEXT: pand %xmm2, %xmm91608; SSE-NEXT: pandn %xmm3, %xmm21609; SSE-NEXT: por %xmm9, %xmm21610; SSE-NEXT: pand %xmm1, %xmm21611; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm14[0,1,0,1]1612; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,0,0,0,4,5,6,7]1613; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,5,6,6]1614; SSE-NEXT: pandn %xmm3, %xmm11615; SSE-NEXT: por %xmm2, %xmm11616; SSE-NEXT: movdqa %xmm1, (%rcx)1617; SSE-NEXT: movdqa %xmm15, 32(%rcx)1618; SSE-NEXT: movdqa %xmm7, 48(%rcx)1619; SSE-NEXT: movdqa %xmm12, 80(%rcx)1620; SSE-NEXT: movdqa %xmm5, 96(%rcx)1621; SSE-NEXT: movdqa %xmm4, 128(%rcx)1622; SSE-NEXT: movdqa %xmm6, 144(%rcx)1623; SSE-NEXT: movdqa %xmm8, 176(%rcx)1624; SSE-NEXT: movdqa %xmm10, 16(%rcx)1625; SSE-NEXT: movdqa %xmm13, 64(%rcx)1626; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1627; SSE-NEXT: movaps %xmm0, 112(%rcx)1628; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1629; SSE-NEXT: movaps %xmm0, 160(%rcx)1630; SSE-NEXT: retq1631;1632; AVX-LABEL: store_i8_stride3_vf64:1633; AVX: # %bb.0:1634; AVX-NEXT: subq $40, %rsp1635; AVX-NEXT: vmovdqa (%rdi), %xmm81636; AVX-NEXT: vmovdqa 16(%rdi), %xmm91637; AVX-NEXT: vmovdqa 32(%rdi), %xmm61638; AVX-NEXT: vmovdqa 48(%rdi), %xmm31639; AVX-NEXT: vmovdqa {{.*#+}} xmm7 = [11,12,13,14,15,0,1,2,3,4,5,128,128,128,128,128]1640; AVX-NEXT: vpshufb %xmm7, %xmm8, %xmm01641; AVX-NEXT: vmovdqa %xmm0, (%rsp) # 16-byte Spill1642; AVX-NEXT: vmovdqa (%rdx), %xmm51643; AVX-NEXT: vmovdqa 16(%rdx), %xmm11644; AVX-NEXT: vpshufb %xmm7, %xmm9, %xmm01645; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1646; AVX-NEXT: vpshufb %xmm7, %xmm6, %xmm41647; AVX-NEXT: vpshufb %xmm7, %xmm3, %xmm71648; AVX-NEXT: vmovdqa {{.*#+}} xmm10 = [u,u,u,u,u,128,128,128,128,128,128,6,7,8,9,10]1649; AVX-NEXT: vpshufb %xmm10, %xmm3, %xmm31650; AVX-NEXT: vmovdqa {{.*#+}} xmm11 = [u,u,u,u,u,5,6,7,8,9,10,128,128,128,128,128]1651; AVX-NEXT: vmovdqa 16(%rsi), %xmm131652; AVX-NEXT: vmovdqa 32(%rsi), %xmm141653; AVX-NEXT: vmovdqa 48(%rsi), %xmm151654; AVX-NEXT: vpshufb %xmm11, %xmm15, %xmm121655; AVX-NEXT: vpor %xmm3, %xmm12, %xmm01656; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1657; AVX-NEXT: vpshufb %xmm10, %xmm6, %xmm61658; AVX-NEXT: vpshufb %xmm11, %xmm14, %xmm121659; AVX-NEXT: vpor %xmm6, %xmm12, %xmm01660; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1661; AVX-NEXT: vpshufb %xmm10, %xmm9, %xmm91662; AVX-NEXT: vpshufb %xmm11, %xmm13, %xmm121663; AVX-NEXT: vpor %xmm9, %xmm12, %xmm01664; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1665; AVX-NEXT: vmovdqa (%rsi), %xmm21666; AVX-NEXT: vpshufb %xmm10, %xmm8, %xmm81667; AVX-NEXT: vpshufb %xmm11, %xmm2, %xmm101668; AVX-NEXT: vpor %xmm8, %xmm10, %xmm01669; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1670; AVX-NEXT: vmovdqa %xmm5, %xmm01671; AVX-NEXT: vpunpckhbw {{.*#+}} xmm8 = xmm5[8],xmm2[8],xmm5[9],xmm2[9],xmm5[10],xmm2[10],xmm5[11],xmm2[11],xmm5[12],xmm2[12],xmm5[13],xmm2[13],xmm5[14],xmm2[14],xmm5[15],xmm2[15]1672; AVX-NEXT: vmovdqa {{.*#+}} xmm11 = [u,u,u,u,u,4,6,8,10,12,14,7,9,11,13,15]1673; AVX-NEXT: vpshufb %xmm11, %xmm8, %xmm81674; AVX-NEXT: vpunpckhbw {{.*#+}} xmm10 = xmm1[8],xmm13[8],xmm1[9],xmm13[9],xmm1[10],xmm13[10],xmm1[11],xmm13[11],xmm1[12],xmm13[12],xmm1[13],xmm13[13],xmm1[14],xmm13[14],xmm1[15],xmm13[15]1675; AVX-NEXT: vpshufb %xmm11, %xmm10, %xmm61676; AVX-NEXT: vmovdqa 32(%rdx), %xmm121677; AVX-NEXT: vpunpckhbw {{.*#+}} xmm10 = xmm12[8],xmm14[8],xmm12[9],xmm14[9],xmm12[10],xmm14[10],xmm12[11],xmm14[11],xmm12[12],xmm14[12],xmm12[13],xmm14[13],xmm12[14],xmm14[14],xmm12[15],xmm14[15]1678; AVX-NEXT: vpshufb %xmm11, %xmm10, %xmm51679; AVX-NEXT: vmovdqa 48(%rdx), %xmm101680; AVX-NEXT: vpunpckhbw {{.*#+}} xmm9 = xmm10[8],xmm15[8],xmm10[9],xmm15[9],xmm10[10],xmm15[10],xmm10[11],xmm15[11],xmm10[12],xmm15[12],xmm10[13],xmm15[13],xmm10[14],xmm15[14],xmm10[15],xmm15[15]1681; AVX-NEXT: vpshufb %xmm11, %xmm9, %xmm91682; AVX-NEXT: vpslldq {{.*#+}} xmm11 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm10[0,1,2,3,4]1683; AVX-NEXT: vpor %xmm7, %xmm11, %xmm111684; AVX-NEXT: vpalignr {{.*#+}} xmm3 = xmm11[5,6,7,8,9,10,11,12,13,14,15],xmm15[0,1,2,3,4]1685; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1686; AVX-NEXT: vpslldq {{.*#+}} xmm11 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm12[0,1,2,3,4]1687; AVX-NEXT: vpor %xmm4, %xmm11, %xmm111688; AVX-NEXT: vpalignr {{.*#+}} xmm3 = xmm11[5,6,7,8,9,10,11,12,13,14,15],xmm14[0,1,2,3,4]1689; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1690; AVX-NEXT: vpslldq {{.*#+}} xmm14 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4]1691; AVX-NEXT: vmovdqa %xmm1, %xmm111692; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload1693; AVX-NEXT: vpor %xmm1, %xmm14, %xmm141694; AVX-NEXT: vpalignr {{.*#+}} xmm3 = xmm14[5,6,7,8,9,10,11,12,13,14,15],xmm13[0,1,2,3,4]1695; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1696; AVX-NEXT: vpslldq {{.*#+}} xmm14 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4]1697; AVX-NEXT: vmovdqa %xmm0, %xmm31698; AVX-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload1699; AVX-NEXT: vpor %xmm0, %xmm14, %xmm141700; AVX-NEXT: vpalignr {{.*#+}} xmm14 = xmm14[5,6,7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4]1701; AVX-NEXT: vpalignr {{.*#+}} xmm2 = xmm9[5,6,7,8,9,10,11,12,13,14,15],xmm7[0,1,2,3,4]1702; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1703; AVX-NEXT: vpalignr {{.*#+}} xmm13 = xmm5[5,6,7,8,9,10,11,12,13,14,15],xmm4[0,1,2,3,4]1704; AVX-NEXT: vpalignr {{.*#+}} xmm15 = xmm6[5,6,7,8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4]1705; AVX-NEXT: vpalignr {{.*#+}} xmm1 = xmm8[5,6,7,8,9,10,11,12,13,14,15],xmm0[0,1,2,3,4]1706; AVX-NEXT: vmovdqa {{.*#+}} xmm8 = [5,128,11,6,128,12,7,128,13,8,128,14,9,128,15,10]1707; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1708; AVX-NEXT: vpshufb %xmm8, %xmm0, %xmm61709; AVX-NEXT: vmovdqa {{.*#+}} xmm9 = [128,5,128,128,6,128,128,7,128,128,8,128,128,9,128,128]1710; AVX-NEXT: vpshufb %xmm9, %xmm3, %xmm21711; AVX-NEXT: vpor %xmm2, %xmm6, %xmm21712; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1713; AVX-NEXT: vpshufb %xmm8, %xmm0, %xmm61714; AVX-NEXT: vpshufb %xmm9, %xmm11, %xmm41715; AVX-NEXT: vpor %xmm4, %xmm6, %xmm41716; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1717; AVX-NEXT: vpshufb %xmm8, %xmm0, %xmm61718; AVX-NEXT: vpshufb %xmm9, %xmm12, %xmm121719; AVX-NEXT: vpor %xmm6, %xmm12, %xmm61720; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1721; AVX-NEXT: vpshufb %xmm8, %xmm0, %xmm81722; AVX-NEXT: vpshufb %xmm9, %xmm10, %xmm91723; AVX-NEXT: vpor %xmm9, %xmm8, %xmm81724; AVX-NEXT: vmovdqa {{.*#+}} xmm9 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1725; AVX-NEXT: vpshufb %xmm9, %xmm14, %xmm01726; AVX-NEXT: vpshufb %xmm9, %xmm1, %xmm51727; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload1728; AVX-NEXT: vpshufb %xmm9, %xmm1, %xmm101729; AVX-NEXT: vpshufb %xmm9, %xmm15, %xmm31730; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload1731; AVX-NEXT: vpshufb %xmm9, %xmm1, %xmm111732; AVX-NEXT: vpshufb %xmm9, %xmm13, %xmm11733; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload1734; AVX-NEXT: vpshufb %xmm9, %xmm7, %xmm121735; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload1736; AVX-NEXT: vpshufb %xmm9, %xmm7, %xmm71737; AVX-NEXT: vmovdqa %xmm3, 80(%rcx)1738; AVX-NEXT: vmovdqa %xmm4, 64(%rcx)1739; AVX-NEXT: vmovdqa %xmm0, (%rcx)1740; AVX-NEXT: vmovdqa %xmm2, 16(%rcx)1741; AVX-NEXT: vmovdqa %xmm5, 32(%rcx)1742; AVX-NEXT: vmovdqa %xmm10, 48(%rcx)1743; AVX-NEXT: vmovdqa %xmm7, 176(%rcx)1744; AVX-NEXT: vmovdqa %xmm8, 160(%rcx)1745; AVX-NEXT: vmovdqa %xmm11, 96(%rcx)1746; AVX-NEXT: vmovdqa %xmm6, 112(%rcx)1747; AVX-NEXT: vmovdqa %xmm1, 128(%rcx)1748; AVX-NEXT: vmovdqa %xmm12, 144(%rcx)1749; AVX-NEXT: addq $40, %rsp1750; AVX-NEXT: retq1751;1752; AVX2-LABEL: store_i8_stride3_vf64:1753; AVX2: # %bb.0:1754; AVX2-NEXT: vmovdqa (%rdi), %ymm01755; AVX2-NEXT: vmovdqa 32(%rdi), %ymm11756; AVX2-NEXT: vmovdqa (%rsi), %ymm21757; AVX2-NEXT: vmovdqa 32(%rsi), %ymm31758; AVX2-NEXT: vmovdqa (%rdx), %ymm41759; AVX2-NEXT: vmovdqa 32(%rdx), %ymm51760; AVX2-NEXT: vpalignr {{.*#+}} ymm6 = ymm0[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1761; AVX2-NEXT: vpslldq {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[0,1,2,3,4],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[16,17,18,19,20]1762; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]1763; AVX2-NEXT: # ymm8 = mem[0,1,0,1]1764; AVX2-NEXT: vpblendvb %ymm8, %ymm6, %ymm7, %ymm71765; AVX2-NEXT: vpalignr {{.*#+}} ymm9 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1766; AVX2-NEXT: vpslldq {{.*#+}} ymm10 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[0,1,2,3,4],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[16,17,18,19,20]1767; AVX2-NEXT: vpblendvb %ymm8, %ymm9, %ymm10, %ymm101768; AVX2-NEXT: vpslldq {{.*#+}} ymm0 = zero,zero,zero,zero,zero,ymm0[0,1,2,3,4,5,6,7,8,9,10],zero,zero,zero,zero,zero,ymm0[16,17,18,19,20,21,22,23,24,25,26]1769; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [0,0,0,0,0,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,0,0,0]1770; AVX2-NEXT: # ymm11 = mem[0,1,0,1]1771; AVX2-NEXT: vpblendvb %ymm11, %ymm2, %ymm0, %ymm01772; AVX2-NEXT: vpslldq {{.*#+}} ymm1 = zero,zero,zero,zero,zero,ymm1[0,1,2,3,4,5,6,7,8,9,10],zero,zero,zero,zero,zero,ymm1[16,17,18,19,20,21,22,23,24,25,26]1773; AVX2-NEXT: vpblendvb %ymm11, %ymm3, %ymm1, %ymm11774; AVX2-NEXT: vpsrldq {{.*#+}} ymm11 = ymm4[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ymm4[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero1775; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm12 = [0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255]1776; AVX2-NEXT: # ymm12 = mem[0,1,0,1]1777; AVX2-NEXT: vpblendvb %ymm12, %ymm2, %ymm11, %ymm111778; AVX2-NEXT: vpsrldq {{.*#+}} ymm13 = ymm5[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ymm5[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero1779; AVX2-NEXT: vpblendvb %ymm12, %ymm3, %ymm13, %ymm121780; AVX2-NEXT: vpalignr {{.*#+}} ymm3 = ymm10[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm10[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1781; AVX2-NEXT: vpalignr {{.*#+}} ymm2 = ymm7[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm7[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1782; AVX2-NEXT: vpsrldq {{.*#+}} ymm1 = ymm1[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ymm1[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero1783; AVX2-NEXT: vpslldq {{.*#+}} ymm5 = zero,zero,zero,zero,zero,zero,ymm5[0,1,2,3,4,5,6,7,8,9],zero,zero,zero,zero,zero,zero,ymm5[16,17,18,19,20,21,22,23,24,25]1784; AVX2-NEXT: vpblendvb %ymm8, %ymm1, %ymm5, %ymm11785; AVX2-NEXT: vpsrldq {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ymm0[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero1786; AVX2-NEXT: vpslldq {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,ymm4[0,1,2,3,4,5,6,7,8,9],zero,zero,zero,zero,zero,zero,ymm4[16,17,18,19,20,21,22,23,24,25]1787; AVX2-NEXT: vpblendvb %ymm8, %ymm0, %ymm4, %ymm01788; AVX2-NEXT: vpalignr {{.*#+}} ymm4 = ymm12[5,6,7,8,9,10,11,12,13,14,15],ymm9[0,1,2,3,4],ymm12[21,22,23,24,25,26,27,28,29,30,31],ymm9[16,17,18,19,20]1789; AVX2-NEXT: vpalignr {{.*#+}} ymm5 = ymm11[5,6,7,8,9,10,11,12,13,14,15],ymm6[0,1,2,3,4],ymm11[21,22,23,24,25,26,27,28,29,30,31],ymm6[16,17,18,19,20]1790; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm61791; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1792; AVX2-NEXT: # ymm7 = mem[0,1,0,1]1793; AVX2-NEXT: vpshufb %ymm7, %ymm6, %ymm61794; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]1795; AVX2-NEXT: vpshufb %ymm7, %ymm2, %ymm21796; AVX2-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm5[2,3]1797; AVX2-NEXT: vpshufb %ymm7, %ymm0, %ymm01798; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm3, %ymm51799; AVX2-NEXT: vpshufb %ymm7, %ymm5, %ymm51800; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]1801; AVX2-NEXT: vpshufb %ymm7, %ymm3, %ymm31802; AVX2-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm1[2,3],ymm4[2,3]1803; AVX2-NEXT: vpshufb %ymm7, %ymm1, %ymm11804; AVX2-NEXT: vmovdqa %ymm2, 32(%rcx)1805; AVX2-NEXT: vmovdqa %ymm3, 128(%rcx)1806; AVX2-NEXT: vmovdqa %ymm0, 64(%rcx)1807; AVX2-NEXT: vmovdqa %ymm1, 160(%rcx)1808; AVX2-NEXT: vmovdqa %ymm6, (%rcx)1809; AVX2-NEXT: vmovdqa %ymm5, 96(%rcx)1810; AVX2-NEXT: vzeroupper1811; AVX2-NEXT: retq1812;1813; AVX2-FP-LABEL: store_i8_stride3_vf64:1814; AVX2-FP: # %bb.0:1815; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm01816; AVX2-FP-NEXT: vmovdqa 32(%rdi), %ymm11817; AVX2-FP-NEXT: vmovdqa (%rsi), %ymm21818; AVX2-FP-NEXT: vmovdqa 32(%rsi), %ymm31819; AVX2-FP-NEXT: vmovdqa (%rdx), %ymm41820; AVX2-FP-NEXT: vmovdqa 32(%rdx), %ymm51821; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm6 = ymm0[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1822; AVX2-FP-NEXT: vpslldq {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[0,1,2,3,4],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[16,17,18,19,20]1823; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]1824; AVX2-FP-NEXT: # ymm8 = mem[0,1,0,1]1825; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm6, %ymm7, %ymm71826; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm9 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1827; AVX2-FP-NEXT: vpslldq {{.*#+}} ymm10 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[0,1,2,3,4],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[16,17,18,19,20]1828; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm9, %ymm10, %ymm101829; AVX2-FP-NEXT: vpslldq {{.*#+}} ymm0 = zero,zero,zero,zero,zero,ymm0[0,1,2,3,4,5,6,7,8,9,10],zero,zero,zero,zero,zero,ymm0[16,17,18,19,20,21,22,23,24,25,26]1830; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [0,0,0,0,0,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,0,0,0]1831; AVX2-FP-NEXT: # ymm11 = mem[0,1,0,1]1832; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm2, %ymm0, %ymm01833; AVX2-FP-NEXT: vpslldq {{.*#+}} ymm1 = zero,zero,zero,zero,zero,ymm1[0,1,2,3,4,5,6,7,8,9,10],zero,zero,zero,zero,zero,ymm1[16,17,18,19,20,21,22,23,24,25,26]1834; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm3, %ymm1, %ymm11835; AVX2-FP-NEXT: vpsrldq {{.*#+}} ymm11 = ymm4[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ymm4[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero1836; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm12 = [0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255]1837; AVX2-FP-NEXT: # ymm12 = mem[0,1,0,1]1838; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm2, %ymm11, %ymm111839; AVX2-FP-NEXT: vpsrldq {{.*#+}} ymm13 = ymm5[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ymm5[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero1840; AVX2-FP-NEXT: vpblendvb %ymm12, %ymm3, %ymm13, %ymm121841; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm3 = ymm10[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm10[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1842; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm2 = ymm7[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm7[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1843; AVX2-FP-NEXT: vpsrldq {{.*#+}} ymm1 = ymm1[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ymm1[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero1844; AVX2-FP-NEXT: vpslldq {{.*#+}} ymm5 = zero,zero,zero,zero,zero,zero,ymm5[0,1,2,3,4,5,6,7,8,9],zero,zero,zero,zero,zero,zero,ymm5[16,17,18,19,20,21,22,23,24,25]1845; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm1, %ymm5, %ymm11846; AVX2-FP-NEXT: vpsrldq {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ymm0[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero1847; AVX2-FP-NEXT: vpslldq {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,ymm4[0,1,2,3,4,5,6,7,8,9],zero,zero,zero,zero,zero,zero,ymm4[16,17,18,19,20,21,22,23,24,25]1848; AVX2-FP-NEXT: vpblendvb %ymm8, %ymm0, %ymm4, %ymm01849; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm4 = ymm12[5,6,7,8,9,10,11,12,13,14,15],ymm9[0,1,2,3,4],ymm12[21,22,23,24,25,26,27,28,29,30,31],ymm9[16,17,18,19,20]1850; AVX2-FP-NEXT: vpalignr {{.*#+}} ymm5 = ymm11[5,6,7,8,9,10,11,12,13,14,15],ymm6[0,1,2,3,4],ymm11[21,22,23,24,25,26,27,28,29,30,31],ymm6[16,17,18,19,20]1851; AVX2-FP-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm61852; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1853; AVX2-FP-NEXT: # ymm7 = mem[0,1,0,1]1854; AVX2-FP-NEXT: vpshufb %ymm7, %ymm6, %ymm61855; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]1856; AVX2-FP-NEXT: vpshufb %ymm7, %ymm2, %ymm21857; AVX2-FP-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm5[2,3]1858; AVX2-FP-NEXT: vpshufb %ymm7, %ymm0, %ymm01859; AVX2-FP-NEXT: vinserti128 $1, %xmm1, %ymm3, %ymm51860; AVX2-FP-NEXT: vpshufb %ymm7, %ymm5, %ymm51861; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]1862; AVX2-FP-NEXT: vpshufb %ymm7, %ymm3, %ymm31863; AVX2-FP-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm1[2,3],ymm4[2,3]1864; AVX2-FP-NEXT: vpshufb %ymm7, %ymm1, %ymm11865; AVX2-FP-NEXT: vmovdqa %ymm2, 32(%rcx)1866; AVX2-FP-NEXT: vmovdqa %ymm3, 128(%rcx)1867; AVX2-FP-NEXT: vmovdqa %ymm0, 64(%rcx)1868; AVX2-FP-NEXT: vmovdqa %ymm1, 160(%rcx)1869; AVX2-FP-NEXT: vmovdqa %ymm6, (%rcx)1870; AVX2-FP-NEXT: vmovdqa %ymm5, 96(%rcx)1871; AVX2-FP-NEXT: vzeroupper1872; AVX2-FP-NEXT: retq1873;1874; AVX2-FCP-LABEL: store_i8_stride3_vf64:1875; AVX2-FCP: # %bb.0:1876; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm01877; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %ymm11878; AVX2-FCP-NEXT: vmovdqa (%rsi), %ymm21879; AVX2-FCP-NEXT: vmovdqa 32(%rsi), %ymm31880; AVX2-FCP-NEXT: vmovdqa (%rdx), %ymm41881; AVX2-FCP-NEXT: vmovdqa 32(%rdx), %ymm51882; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm6 = ymm0[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1883; AVX2-FCP-NEXT: vpslldq {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[0,1,2,3,4],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[16,17,18,19,20]1884; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]1885; AVX2-FCP-NEXT: # ymm8 = mem[0,1,0,1]1886; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm6, %ymm7, %ymm71887; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm9 = ymm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1888; AVX2-FCP-NEXT: vpslldq {{.*#+}} ymm10 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[0,1,2,3,4],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[16,17,18,19,20]1889; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm9, %ymm10, %ymm101890; AVX2-FCP-NEXT: vpslldq {{.*#+}} ymm0 = zero,zero,zero,zero,zero,ymm0[0,1,2,3,4,5,6,7,8,9,10],zero,zero,zero,zero,zero,ymm0[16,17,18,19,20,21,22,23,24,25,26]1891; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [0,0,0,0,0,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,0,0,0]1892; AVX2-FCP-NEXT: # ymm11 = mem[0,1,0,1]1893; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm2, %ymm0, %ymm01894; AVX2-FCP-NEXT: vpslldq {{.*#+}} ymm1 = zero,zero,zero,zero,zero,ymm1[0,1,2,3,4,5,6,7,8,9,10],zero,zero,zero,zero,zero,ymm1[16,17,18,19,20,21,22,23,24,25,26]1895; AVX2-FCP-NEXT: vpblendvb %ymm11, %ymm3, %ymm1, %ymm11896; AVX2-FCP-NEXT: vpsrldq {{.*#+}} ymm11 = ymm4[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ymm4[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero1897; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm12 = [0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255]1898; AVX2-FCP-NEXT: # ymm12 = mem[0,1,0,1]1899; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm2, %ymm11, %ymm111900; AVX2-FCP-NEXT: vpsrldq {{.*#+}} ymm13 = ymm5[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ymm5[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero1901; AVX2-FCP-NEXT: vpblendvb %ymm12, %ymm3, %ymm13, %ymm121902; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm3 = ymm10[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm10[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1903; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm7[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm7[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1904; AVX2-FCP-NEXT: vpsrldq {{.*#+}} ymm1 = ymm1[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ymm1[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero1905; AVX2-FCP-NEXT: vpslldq {{.*#+}} ymm5 = zero,zero,zero,zero,zero,zero,ymm5[0,1,2,3,4,5,6,7,8,9],zero,zero,zero,zero,zero,zero,ymm5[16,17,18,19,20,21,22,23,24,25]1906; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm1, %ymm5, %ymm11907; AVX2-FCP-NEXT: vpsrldq {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ymm0[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero1908; AVX2-FCP-NEXT: vpslldq {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,ymm4[0,1,2,3,4,5,6,7,8,9],zero,zero,zero,zero,zero,zero,ymm4[16,17,18,19,20,21,22,23,24,25]1909; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm0, %ymm4, %ymm01910; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm4 = ymm12[5,6,7,8,9,10,11,12,13,14,15],ymm9[0,1,2,3,4],ymm12[21,22,23,24,25,26,27,28,29,30,31],ymm9[16,17,18,19,20]1911; AVX2-FCP-NEXT: vpalignr {{.*#+}} ymm5 = ymm11[5,6,7,8,9,10,11,12,13,14,15],ymm6[0,1,2,3,4],ymm11[21,22,23,24,25,26,27,28,29,30,31],ymm6[16,17,18,19,20]1912; AVX2-FCP-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm61913; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1914; AVX2-FCP-NEXT: # ymm7 = mem[0,1,0,1]1915; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm6, %ymm61916; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]1917; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm2, %ymm21918; AVX2-FCP-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm5[2,3]1919; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm0, %ymm01920; AVX2-FCP-NEXT: vinserti128 $1, %xmm1, %ymm3, %ymm51921; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm5, %ymm51922; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]1923; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm3, %ymm31924; AVX2-FCP-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm1[2,3],ymm4[2,3]1925; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm1, %ymm11926; AVX2-FCP-NEXT: vmovdqa %ymm2, 32(%rcx)1927; AVX2-FCP-NEXT: vmovdqa %ymm3, 128(%rcx)1928; AVX2-FCP-NEXT: vmovdqa %ymm0, 64(%rcx)1929; AVX2-FCP-NEXT: vmovdqa %ymm1, 160(%rcx)1930; AVX2-FCP-NEXT: vmovdqa %ymm6, (%rcx)1931; AVX2-FCP-NEXT: vmovdqa %ymm5, 96(%rcx)1932; AVX2-FCP-NEXT: vzeroupper1933; AVX2-FCP-NEXT: retq1934;1935; AVX512-LABEL: store_i8_stride3_vf64:1936; AVX512: # %bb.0:1937; AVX512-NEXT: vmovdqa (%rdi), %ymm01938; AVX512-NEXT: vmovdqa 32(%rdi), %ymm11939; AVX512-NEXT: vpalignr {{.*#+}} ymm1 = ymm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1940; AVX512-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1941; AVX512-NEXT: vmovdqa (%rsi), %ymm21942; AVX512-NEXT: vmovdqa 32(%rsi), %ymm31943; AVX512-NEXT: vpalignr {{.*#+}} ymm4 = ymm3[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1944; AVX512-NEXT: vpalignr {{.*#+}} ymm5 = ymm2[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1945; AVX512-NEXT: vmovdqa (%rdx), %ymm61946; AVX512-NEXT: vmovdqa 32(%rdx), %ymm71947; AVX512-NEXT: vpalignr {{.*#+}} ymm8 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm6[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm6[16,17,18,19,20]1948; AVX512-NEXT: vpalignr {{.*#+}} ymm9 = ymm1[5,6,7,8,9,10,11,12,13,14,15],ymm7[0,1,2,3,4],ymm1[21,22,23,24,25,26,27,28,29,30,31],ymm7[16,17,18,19,20]1949; AVX512-NEXT: vpalignr {{.*#+}} ymm0 = ymm5[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm5[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1950; AVX512-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1951; AVX512-NEXT: vpalignr {{.*#+}} ymm5 = ymm6[5,6,7,8,9,10,11,12,13,14,15],ymm5[0,1,2,3,4],ymm6[21,22,23,24,25,26,27,28,29,30,31],ymm5[16,17,18,19,20]1952; AVX512-NEXT: vpalignr {{.*#+}} ymm4 = ymm7[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm7[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1953; AVX512-NEXT: vpalignr {{.*#+}} ymm3 = ymm9[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm9[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]1954; AVX512-NEXT: vpalignr {{.*#+}} ymm2 = ymm8[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm8[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]1955; AVX512-NEXT: vpalignr {{.*#+}} ymm1 = ymm1[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm1[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]1956; AVX512-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm5[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm5[16,17,18,19,20]1957; AVX512-NEXT: vpalignr {{.*#+}} ymm4 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm9[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm9[16,17,18,19,20]1958; AVX512-NEXT: vpalignr {{.*#+}} ymm5 = ymm5[5,6,7,8,9,10,11,12,13,14,15],ymm8[0,1,2,3,4],ymm5[21,22,23,24,25,26,27,28,29,30,31],ymm8[16,17,18,19,20]1959; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm61960; AVX512-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]1961; AVX512-NEXT: # ymm7 = mem[0,1,0,1]1962; AVX512-NEXT: vpshufb %ymm7, %ymm6, %ymm61963; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]1964; AVX512-NEXT: vpshufb %ymm7, %ymm2, %ymm21965; AVX512-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm5[2,3]1966; AVX512-NEXT: vpshufb %ymm7, %ymm0, %ymm01967; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm3, %ymm51968; AVX512-NEXT: vpshufb %ymm7, %ymm5, %ymm51969; AVX512-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]1970; AVX512-NEXT: vpshufb %ymm7, %ymm3, %ymm31971; AVX512-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm1[2,3],ymm4[2,3]1972; AVX512-NEXT: vpshufb %ymm7, %ymm1, %ymm11973; AVX512-NEXT: vmovdqa %ymm3, 128(%rcx)1974; AVX512-NEXT: vmovdqa %ymm1, 160(%rcx)1975; AVX512-NEXT: vmovdqa %ymm0, 64(%rcx)1976; AVX512-NEXT: vmovdqa %ymm2, 32(%rcx)1977; AVX512-NEXT: vmovdqa %ymm5, 96(%rcx)1978; AVX512-NEXT: vmovdqa %ymm6, (%rcx)1979; AVX512-NEXT: vzeroupper1980; AVX512-NEXT: retq1981;1982; AVX512-FCP-LABEL: store_i8_stride3_vf64:1983; AVX512-FCP: # %bb.0:1984; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm01985; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %ymm11986; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm1 = ymm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1987; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]1988; AVX512-FCP-NEXT: vmovdqa (%rsi), %ymm21989; AVX512-FCP-NEXT: vmovdqa 32(%rsi), %ymm31990; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm4 = ymm3[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1991; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm5 = ymm2[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]1992; AVX512-FCP-NEXT: vmovdqa (%rdx), %ymm61993; AVX512-FCP-NEXT: vmovdqa 32(%rdx), %ymm71994; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm8 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm6[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm6[16,17,18,19,20]1995; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm9 = ymm1[5,6,7,8,9,10,11,12,13,14,15],ymm7[0,1,2,3,4],ymm1[21,22,23,24,25,26,27,28,29,30,31],ymm7[16,17,18,19,20]1996; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm5[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm5[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]1997; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]1998; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm5 = ymm6[5,6,7,8,9,10,11,12,13,14,15],ymm5[0,1,2,3,4],ymm6[21,22,23,24,25,26,27,28,29,30,31],ymm5[16,17,18,19,20]1999; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm4 = ymm7[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm7[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]2000; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm3 = ymm9[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm9[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]2001; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm8[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm8[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]2002; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm1 = ymm1[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm1[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]2003; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm5[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm5[16,17,18,19,20]2004; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm4 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm9[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm9[16,17,18,19,20]2005; AVX512-FCP-NEXT: vpalignr {{.*#+}} ymm5 = ymm5[5,6,7,8,9,10,11,12,13,14,15],ymm8[0,1,2,3,4],ymm5[21,22,23,24,25,26,27,28,29,30,31],ymm8[16,17,18,19,20]2006; AVX512-FCP-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm62007; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]2008; AVX512-FCP-NEXT: # ymm7 = mem[0,1,0,1]2009; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm6, %ymm62010; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]2011; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm2, %ymm22012; AVX512-FCP-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm5[2,3]2013; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm0, %ymm02014; AVX512-FCP-NEXT: vinserti128 $1, %xmm1, %ymm3, %ymm52015; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm5, %ymm52016; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]2017; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm3, %ymm32018; AVX512-FCP-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm1[2,3],ymm4[2,3]2019; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm1, %ymm12020; AVX512-FCP-NEXT: vmovdqa %ymm3, 128(%rcx)2021; AVX512-FCP-NEXT: vmovdqa %ymm1, 160(%rcx)2022; AVX512-FCP-NEXT: vmovdqa %ymm0, 64(%rcx)2023; AVX512-FCP-NEXT: vmovdqa %ymm2, 32(%rcx)2024; AVX512-FCP-NEXT: vmovdqa %ymm5, 96(%rcx)2025; AVX512-FCP-NEXT: vmovdqa %ymm6, (%rcx)2026; AVX512-FCP-NEXT: vzeroupper2027; AVX512-FCP-NEXT: retq2028;2029; AVX512DQ-LABEL: store_i8_stride3_vf64:2030; AVX512DQ: # %bb.0:2031; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm02032; AVX512DQ-NEXT: vmovdqa 32(%rdi), %ymm12033; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm1 = ymm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]2034; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]2035; AVX512DQ-NEXT: vmovdqa (%rsi), %ymm22036; AVX512DQ-NEXT: vmovdqa 32(%rsi), %ymm32037; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm4 = ymm3[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]2038; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm5 = ymm2[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]2039; AVX512DQ-NEXT: vmovdqa (%rdx), %ymm62040; AVX512DQ-NEXT: vmovdqa 32(%rdx), %ymm72041; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm8 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm6[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm6[16,17,18,19,20]2042; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm9 = ymm1[5,6,7,8,9,10,11,12,13,14,15],ymm7[0,1,2,3,4],ymm1[21,22,23,24,25,26,27,28,29,30,31],ymm7[16,17,18,19,20]2043; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm0 = ymm5[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm5[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]2044; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]2045; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm5 = ymm6[5,6,7,8,9,10,11,12,13,14,15],ymm5[0,1,2,3,4],ymm6[21,22,23,24,25,26,27,28,29,30,31],ymm5[16,17,18,19,20]2046; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm4 = ymm7[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm7[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]2047; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm3 = ymm9[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm9[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]2048; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm2 = ymm8[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm8[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]2049; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm1 = ymm1[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm1[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]2050; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm5[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm5[16,17,18,19,20]2051; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm4 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm9[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm9[16,17,18,19,20]2052; AVX512DQ-NEXT: vpalignr {{.*#+}} ymm5 = ymm5[5,6,7,8,9,10,11,12,13,14,15],ymm8[0,1,2,3,4],ymm5[21,22,23,24,25,26,27,28,29,30,31],ymm8[16,17,18,19,20]2053; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm62054; AVX512DQ-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]2055; AVX512DQ-NEXT: # ymm7 = mem[0,1,0,1]2056; AVX512DQ-NEXT: vpshufb %ymm7, %ymm6, %ymm62057; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]2058; AVX512DQ-NEXT: vpshufb %ymm7, %ymm2, %ymm22059; AVX512DQ-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm5[2,3]2060; AVX512DQ-NEXT: vpshufb %ymm7, %ymm0, %ymm02061; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm3, %ymm52062; AVX512DQ-NEXT: vpshufb %ymm7, %ymm5, %ymm52063; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]2064; AVX512DQ-NEXT: vpshufb %ymm7, %ymm3, %ymm32065; AVX512DQ-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm1[2,3],ymm4[2,3]2066; AVX512DQ-NEXT: vpshufb %ymm7, %ymm1, %ymm12067; AVX512DQ-NEXT: vmovdqa %ymm3, 128(%rcx)2068; AVX512DQ-NEXT: vmovdqa %ymm1, 160(%rcx)2069; AVX512DQ-NEXT: vmovdqa %ymm0, 64(%rcx)2070; AVX512DQ-NEXT: vmovdqa %ymm2, 32(%rcx)2071; AVX512DQ-NEXT: vmovdqa %ymm5, 96(%rcx)2072; AVX512DQ-NEXT: vmovdqa %ymm6, (%rcx)2073; AVX512DQ-NEXT: vzeroupper2074; AVX512DQ-NEXT: retq2075;2076; AVX512DQ-FCP-LABEL: store_i8_stride3_vf64:2077; AVX512DQ-FCP: # %bb.0:2078; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm02079; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %ymm12080; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm1 = ymm1[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]2081; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21]2082; AVX512DQ-FCP-NEXT: vmovdqa (%rsi), %ymm22083; AVX512DQ-FCP-NEXT: vmovdqa 32(%rsi), %ymm32084; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm4 = ymm3[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]2085; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm5 = ymm2[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26]2086; AVX512DQ-FCP-NEXT: vmovdqa (%rdx), %ymm62087; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdx), %ymm72088; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm8 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm6[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm6[16,17,18,19,20]2089; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm9 = ymm1[5,6,7,8,9,10,11,12,13,14,15],ymm7[0,1,2,3,4],ymm1[21,22,23,24,25,26,27,28,29,30,31],ymm7[16,17,18,19,20]2090; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm5[5,6,7,8,9,10,11,12,13,14,15],ymm0[0,1,2,3,4],ymm5[21,22,23,24,25,26,27,28,29,30,31],ymm0[16,17,18,19,20]2091; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm1 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm1[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm1[16,17,18,19,20]2092; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm5 = ymm6[5,6,7,8,9,10,11,12,13,14,15],ymm5[0,1,2,3,4],ymm6[21,22,23,24,25,26,27,28,29,30,31],ymm5[16,17,18,19,20]2093; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm4 = ymm7[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm7[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]2094; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm3 = ymm9[5,6,7,8,9,10,11,12,13,14,15],ymm3[0,1,2,3,4],ymm9[21,22,23,24,25,26,27,28,29,30,31],ymm3[16,17,18,19,20]2095; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm2 = ymm8[5,6,7,8,9,10,11,12,13,14,15],ymm2[0,1,2,3,4],ymm8[21,22,23,24,25,26,27,28,29,30,31],ymm2[16,17,18,19,20]2096; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm1 = ymm1[5,6,7,8,9,10,11,12,13,14,15],ymm4[0,1,2,3,4],ymm1[21,22,23,24,25,26,27,28,29,30,31],ymm4[16,17,18,19,20]2097; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm0 = ymm0[5,6,7,8,9,10,11,12,13,14,15],ymm5[0,1,2,3,4],ymm0[21,22,23,24,25,26,27,28,29,30,31],ymm5[16,17,18,19,20]2098; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm4 = ymm4[5,6,7,8,9,10,11,12,13,14,15],ymm9[0,1,2,3,4],ymm4[21,22,23,24,25,26,27,28,29,30,31],ymm9[16,17,18,19,20]2099; AVX512DQ-FCP-NEXT: vpalignr {{.*#+}} ymm5 = ymm5[5,6,7,8,9,10,11,12,13,14,15],ymm8[0,1,2,3,4],ymm5[21,22,23,24,25,26,27,28,29,30,31],ymm8[16,17,18,19,20]2100; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm0, %ymm2, %ymm62101; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]2102; AVX512DQ-FCP-NEXT: # ymm7 = mem[0,1,0,1]2103; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm6, %ymm62104; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm5[0,1,2,3],ymm2[4,5,6,7]2105; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm2, %ymm22106; AVX512DQ-FCP-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm5[2,3]2107; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm0, %ymm02108; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm1, %ymm3, %ymm52109; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm5, %ymm52110; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]2111; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm3, %ymm32112; AVX512DQ-FCP-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm1[2,3],ymm4[2,3]2113; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm1, %ymm12114; AVX512DQ-FCP-NEXT: vmovdqa %ymm3, 128(%rcx)2115; AVX512DQ-FCP-NEXT: vmovdqa %ymm1, 160(%rcx)2116; AVX512DQ-FCP-NEXT: vmovdqa %ymm0, 64(%rcx)2117; AVX512DQ-FCP-NEXT: vmovdqa %ymm2, 32(%rcx)2118; AVX512DQ-FCP-NEXT: vmovdqa %ymm5, 96(%rcx)2119; AVX512DQ-FCP-NEXT: vmovdqa %ymm6, (%rcx)2120; AVX512DQ-FCP-NEXT: vzeroupper2121; AVX512DQ-FCP-NEXT: retq2122;2123; AVX512BW-LABEL: store_i8_stride3_vf64:2124; AVX512BW: # %bb.0:2125; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm02126; AVX512BW-NEXT: vmovdqa64 (%rsi), %zmm12127; AVX512BW-NEXT: vmovdqa64 (%rdx), %zmm22128; AVX512BW-NEXT: vpalignr {{.*#+}} zmm0 = zmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21,38,39,40,41,42,43,44,45,46,47,32,33,34,35,36,37,54,55,56,57,58,59,60,61,62,63,48,49,50,51,52,53]2129; AVX512BW-NEXT: vpalignr {{.*#+}} zmm3 = zmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26,43,44,45,46,47,32,33,34,35,36,37,38,39,40,41,42,59,60,61,62,63,48,49,50,51,52,53,54,55,56,57,58]2130; AVX512BW-NEXT: vpalignr {{.*#+}} zmm4 = zmm0[5,6,7,8,9,10,11,12,13,14,15],zmm2[0,1,2,3,4],zmm0[21,22,23,24,25,26,27,28,29,30,31],zmm2[16,17,18,19,20],zmm0[37,38,39,40,41,42,43,44,45,46,47],zmm2[32,33,34,35,36],zmm0[53,54,55,56,57,58,59,60,61,62,63],zmm2[48,49,50,51,52]2131; AVX512BW-NEXT: vpalignr {{.*#+}} zmm0 = zmm3[5,6,7,8,9,10,11,12,13,14,15],zmm0[0,1,2,3,4],zmm3[21,22,23,24,25,26,27,28,29,30,31],zmm0[16,17,18,19,20],zmm3[37,38,39,40,41,42,43,44,45,46,47],zmm0[32,33,34,35,36],zmm3[53,54,55,56,57,58,59,60,61,62,63],zmm0[48,49,50,51,52]2132; AVX512BW-NEXT: vpalignr {{.*#+}} zmm2 = zmm2[5,6,7,8,9,10,11,12,13,14,15],zmm3[0,1,2,3,4],zmm2[21,22,23,24,25,26,27,28,29,30,31],zmm3[16,17,18,19,20],zmm2[37,38,39,40,41,42,43,44,45,46,47],zmm3[32,33,34,35,36],zmm2[53,54,55,56,57,58,59,60,61,62,63],zmm3[48,49,50,51,52]2133; AVX512BW-NEXT: vpalignr {{.*#+}} zmm1 = zmm4[5,6,7,8,9,10,11,12,13,14,15],zmm1[0,1,2,3,4],zmm4[21,22,23,24,25,26,27,28,29,30,31],zmm1[16,17,18,19,20],zmm4[37,38,39,40,41,42,43,44,45,46,47],zmm1[32,33,34,35,36],zmm4[53,54,55,56,57,58,59,60,61,62,63],zmm1[48,49,50,51,52]2134; AVX512BW-NEXT: vpalignr {{.*#+}} zmm0 = zmm0[5,6,7,8,9,10,11,12,13,14,15],zmm2[0,1,2,3,4],zmm0[21,22,23,24,25,26,27,28,29,30,31],zmm2[16,17,18,19,20],zmm0[37,38,39,40,41,42,43,44,45,46,47],zmm2[32,33,34,35,36],zmm0[53,54,55,56,57,58,59,60,61,62,63],zmm2[48,49,50,51,52]2135; AVX512BW-NEXT: vpalignr {{.*#+}} zmm2 = zmm2[5,6,7,8,9,10,11,12,13,14,15],zmm4[0,1,2,3,4],zmm2[21,22,23,24,25,26,27,28,29,30,31],zmm4[16,17,18,19,20],zmm2[37,38,39,40,41,42,43,44,45,46,47],zmm4[32,33,34,35,36],zmm2[53,54,55,56,57,58,59,60,61,62,63],zmm4[48,49,50,51,52]2136; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm32137; AVX512BW-NEXT: vpblendd {{.*#+}} ymm4 = ymm2[0,1,2,3],ymm1[4,5,6,7]2138; AVX512BW-NEXT: vperm2i128 {{.*#+}} ymm5 = ymm0[2,3],ymm2[2,3]2139; AVX512BW-NEXT: vextracti64x4 $1, %zmm0, %ymm02140; AVX512BW-NEXT: vextracti64x4 $1, %zmm1, %ymm12141; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm62142; AVX512BW-NEXT: vextracti64x4 $1, %zmm2, %ymm22143; AVX512BW-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]2144; AVX512BW-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]2145; AVX512BW-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm22146; AVX512BW-NEXT: vbroadcasti32x4 {{.*#+}} zmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]2147; AVX512BW-NEXT: # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2148; AVX512BW-NEXT: vpshufb %zmm3, %zmm2, %zmm22149; AVX512BW-NEXT: vinserti64x4 $1, %ymm6, %zmm5, %zmm42150; AVX512BW-NEXT: vpshufb %zmm3, %zmm4, %zmm42151; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm02152; AVX512BW-NEXT: vpshufb %zmm3, %zmm0, %zmm02153; AVX512BW-NEXT: vmovdqa64 %zmm0, 128(%rcx)2154; AVX512BW-NEXT: vmovdqa64 %zmm4, 64(%rcx)2155; AVX512BW-NEXT: vmovdqa64 %zmm2, (%rcx)2156; AVX512BW-NEXT: vzeroupper2157; AVX512BW-NEXT: retq2158;2159; AVX512BW-FCP-LABEL: store_i8_stride3_vf64:2160; AVX512BW-FCP: # %bb.0:2161; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm02162; AVX512BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm12163; AVX512BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm22164; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} zmm0 = zmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21,38,39,40,41,42,43,44,45,46,47,32,33,34,35,36,37,54,55,56,57,58,59,60,61,62,63,48,49,50,51,52,53]2165; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} zmm3 = zmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26,43,44,45,46,47,32,33,34,35,36,37,38,39,40,41,42,59,60,61,62,63,48,49,50,51,52,53,54,55,56,57,58]2166; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} zmm4 = zmm0[5,6,7,8,9,10,11,12,13,14,15],zmm2[0,1,2,3,4],zmm0[21,22,23,24,25,26,27,28,29,30,31],zmm2[16,17,18,19,20],zmm0[37,38,39,40,41,42,43,44,45,46,47],zmm2[32,33,34,35,36],zmm0[53,54,55,56,57,58,59,60,61,62,63],zmm2[48,49,50,51,52]2167; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} zmm0 = zmm3[5,6,7,8,9,10,11,12,13,14,15],zmm0[0,1,2,3,4],zmm3[21,22,23,24,25,26,27,28,29,30,31],zmm0[16,17,18,19,20],zmm3[37,38,39,40,41,42,43,44,45,46,47],zmm0[32,33,34,35,36],zmm3[53,54,55,56,57,58,59,60,61,62,63],zmm0[48,49,50,51,52]2168; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} zmm2 = zmm2[5,6,7,8,9,10,11,12,13,14,15],zmm3[0,1,2,3,4],zmm2[21,22,23,24,25,26,27,28,29,30,31],zmm3[16,17,18,19,20],zmm2[37,38,39,40,41,42,43,44,45,46,47],zmm3[32,33,34,35,36],zmm2[53,54,55,56,57,58,59,60,61,62,63],zmm3[48,49,50,51,52]2169; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} zmm1 = zmm4[5,6,7,8,9,10,11,12,13,14,15],zmm1[0,1,2,3,4],zmm4[21,22,23,24,25,26,27,28,29,30,31],zmm1[16,17,18,19,20],zmm4[37,38,39,40,41,42,43,44,45,46,47],zmm1[32,33,34,35,36],zmm4[53,54,55,56,57,58,59,60,61,62,63],zmm1[48,49,50,51,52]2170; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} zmm0 = zmm0[5,6,7,8,9,10,11,12,13,14,15],zmm2[0,1,2,3,4],zmm0[21,22,23,24,25,26,27,28,29,30,31],zmm2[16,17,18,19,20],zmm0[37,38,39,40,41,42,43,44,45,46,47],zmm2[32,33,34,35,36],zmm0[53,54,55,56,57,58,59,60,61,62,63],zmm2[48,49,50,51,52]2171; AVX512BW-FCP-NEXT: vpalignr {{.*#+}} zmm2 = zmm2[5,6,7,8,9,10,11,12,13,14,15],zmm4[0,1,2,3,4],zmm2[21,22,23,24,25,26,27,28,29,30,31],zmm4[16,17,18,19,20],zmm2[37,38,39,40,41,42,43,44,45,46,47],zmm4[32,33,34,35,36],zmm2[53,54,55,56,57,58,59,60,61,62,63],zmm4[48,49,50,51,52]2172; AVX512BW-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm32173; AVX512BW-FCP-NEXT: vpblendd {{.*#+}} ymm4 = ymm2[0,1,2,3],ymm1[4,5,6,7]2174; AVX512BW-FCP-NEXT: vperm2i128 {{.*#+}} ymm5 = ymm0[2,3],ymm2[2,3]2175; AVX512BW-FCP-NEXT: vextracti64x4 $1, %zmm0, %ymm02176; AVX512BW-FCP-NEXT: vextracti64x4 $1, %zmm1, %ymm12177; AVX512BW-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm62178; AVX512BW-FCP-NEXT: vextracti64x4 $1, %zmm2, %ymm22179; AVX512BW-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]2180; AVX512BW-FCP-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]2181; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm22182; AVX512BW-FCP-NEXT: vbroadcasti32x4 {{.*#+}} zmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]2183; AVX512BW-FCP-NEXT: # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2184; AVX512BW-FCP-NEXT: vpshufb %zmm3, %zmm2, %zmm22185; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm5, %zmm42186; AVX512BW-FCP-NEXT: vpshufb %zmm3, %zmm4, %zmm42187; AVX512BW-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm02188; AVX512BW-FCP-NEXT: vpshufb %zmm3, %zmm0, %zmm02189; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, 128(%rcx)2190; AVX512BW-FCP-NEXT: vmovdqa64 %zmm4, 64(%rcx)2191; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, (%rcx)2192; AVX512BW-FCP-NEXT: vzeroupper2193; AVX512BW-FCP-NEXT: retq2194;2195; AVX512DQ-BW-LABEL: store_i8_stride3_vf64:2196; AVX512DQ-BW: # %bb.0:2197; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm02198; AVX512DQ-BW-NEXT: vmovdqa64 (%rsi), %zmm12199; AVX512DQ-BW-NEXT: vmovdqa64 (%rdx), %zmm22200; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} zmm0 = zmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21,38,39,40,41,42,43,44,45,46,47,32,33,34,35,36,37,54,55,56,57,58,59,60,61,62,63,48,49,50,51,52,53]2201; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} zmm3 = zmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26,43,44,45,46,47,32,33,34,35,36,37,38,39,40,41,42,59,60,61,62,63,48,49,50,51,52,53,54,55,56,57,58]2202; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} zmm4 = zmm0[5,6,7,8,9,10,11,12,13,14,15],zmm2[0,1,2,3,4],zmm0[21,22,23,24,25,26,27,28,29,30,31],zmm2[16,17,18,19,20],zmm0[37,38,39,40,41,42,43,44,45,46,47],zmm2[32,33,34,35,36],zmm0[53,54,55,56,57,58,59,60,61,62,63],zmm2[48,49,50,51,52]2203; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} zmm0 = zmm3[5,6,7,8,9,10,11,12,13,14,15],zmm0[0,1,2,3,4],zmm3[21,22,23,24,25,26,27,28,29,30,31],zmm0[16,17,18,19,20],zmm3[37,38,39,40,41,42,43,44,45,46,47],zmm0[32,33,34,35,36],zmm3[53,54,55,56,57,58,59,60,61,62,63],zmm0[48,49,50,51,52]2204; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} zmm2 = zmm2[5,6,7,8,9,10,11,12,13,14,15],zmm3[0,1,2,3,4],zmm2[21,22,23,24,25,26,27,28,29,30,31],zmm3[16,17,18,19,20],zmm2[37,38,39,40,41,42,43,44,45,46,47],zmm3[32,33,34,35,36],zmm2[53,54,55,56,57,58,59,60,61,62,63],zmm3[48,49,50,51,52]2205; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} zmm1 = zmm4[5,6,7,8,9,10,11,12,13,14,15],zmm1[0,1,2,3,4],zmm4[21,22,23,24,25,26,27,28,29,30,31],zmm1[16,17,18,19,20],zmm4[37,38,39,40,41,42,43,44,45,46,47],zmm1[32,33,34,35,36],zmm4[53,54,55,56,57,58,59,60,61,62,63],zmm1[48,49,50,51,52]2206; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} zmm0 = zmm0[5,6,7,8,9,10,11,12,13,14,15],zmm2[0,1,2,3,4],zmm0[21,22,23,24,25,26,27,28,29,30,31],zmm2[16,17,18,19,20],zmm0[37,38,39,40,41,42,43,44,45,46,47],zmm2[32,33,34,35,36],zmm0[53,54,55,56,57,58,59,60,61,62,63],zmm2[48,49,50,51,52]2207; AVX512DQ-BW-NEXT: vpalignr {{.*#+}} zmm2 = zmm2[5,6,7,8,9,10,11,12,13,14,15],zmm4[0,1,2,3,4],zmm2[21,22,23,24,25,26,27,28,29,30,31],zmm4[16,17,18,19,20],zmm2[37,38,39,40,41,42,43,44,45,46,47],zmm4[32,33,34,35,36],zmm2[53,54,55,56,57,58,59,60,61,62,63],zmm4[48,49,50,51,52]2208; AVX512DQ-BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm32209; AVX512DQ-BW-NEXT: vpblendd {{.*#+}} ymm4 = ymm2[0,1,2,3],ymm1[4,5,6,7]2210; AVX512DQ-BW-NEXT: vperm2i128 {{.*#+}} ymm5 = ymm0[2,3],ymm2[2,3]2211; AVX512DQ-BW-NEXT: vextracti64x4 $1, %zmm0, %ymm02212; AVX512DQ-BW-NEXT: vextracti64x4 $1, %zmm1, %ymm12213; AVX512DQ-BW-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm62214; AVX512DQ-BW-NEXT: vextracti64x4 $1, %zmm2, %ymm22215; AVX512DQ-BW-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]2216; AVX512DQ-BW-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]2217; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm22218; AVX512DQ-BW-NEXT: vbroadcasti32x4 {{.*#+}} zmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]2219; AVX512DQ-BW-NEXT: # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2220; AVX512DQ-BW-NEXT: vpshufb %zmm3, %zmm2, %zmm22221; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm6, %zmm5, %zmm42222; AVX512DQ-BW-NEXT: vpshufb %zmm3, %zmm4, %zmm42223; AVX512DQ-BW-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm02224; AVX512DQ-BW-NEXT: vpshufb %zmm3, %zmm0, %zmm02225; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, 128(%rcx)2226; AVX512DQ-BW-NEXT: vmovdqa64 %zmm4, 64(%rcx)2227; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, (%rcx)2228; AVX512DQ-BW-NEXT: vzeroupper2229; AVX512DQ-BW-NEXT: retq2230;2231; AVX512DQ-BW-FCP-LABEL: store_i8_stride3_vf64:2232; AVX512DQ-BW-FCP: # %bb.0:2233; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm02234; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rsi), %zmm12235; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdx), %zmm22236; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} zmm0 = zmm0[6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,22,23,24,25,26,27,28,29,30,31,16,17,18,19,20,21,38,39,40,41,42,43,44,45,46,47,32,33,34,35,36,37,54,55,56,57,58,59,60,61,62,63,48,49,50,51,52,53]2237; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} zmm3 = zmm1[11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,27,28,29,30,31,16,17,18,19,20,21,22,23,24,25,26,43,44,45,46,47,32,33,34,35,36,37,38,39,40,41,42,59,60,61,62,63,48,49,50,51,52,53,54,55,56,57,58]2238; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} zmm4 = zmm0[5,6,7,8,9,10,11,12,13,14,15],zmm2[0,1,2,3,4],zmm0[21,22,23,24,25,26,27,28,29,30,31],zmm2[16,17,18,19,20],zmm0[37,38,39,40,41,42,43,44,45,46,47],zmm2[32,33,34,35,36],zmm0[53,54,55,56,57,58,59,60,61,62,63],zmm2[48,49,50,51,52]2239; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} zmm0 = zmm3[5,6,7,8,9,10,11,12,13,14,15],zmm0[0,1,2,3,4],zmm3[21,22,23,24,25,26,27,28,29,30,31],zmm0[16,17,18,19,20],zmm3[37,38,39,40,41,42,43,44,45,46,47],zmm0[32,33,34,35,36],zmm3[53,54,55,56,57,58,59,60,61,62,63],zmm0[48,49,50,51,52]2240; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} zmm2 = zmm2[5,6,7,8,9,10,11,12,13,14,15],zmm3[0,1,2,3,4],zmm2[21,22,23,24,25,26,27,28,29,30,31],zmm3[16,17,18,19,20],zmm2[37,38,39,40,41,42,43,44,45,46,47],zmm3[32,33,34,35,36],zmm2[53,54,55,56,57,58,59,60,61,62,63],zmm3[48,49,50,51,52]2241; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} zmm1 = zmm4[5,6,7,8,9,10,11,12,13,14,15],zmm1[0,1,2,3,4],zmm4[21,22,23,24,25,26,27,28,29,30,31],zmm1[16,17,18,19,20],zmm4[37,38,39,40,41,42,43,44,45,46,47],zmm1[32,33,34,35,36],zmm4[53,54,55,56,57,58,59,60,61,62,63],zmm1[48,49,50,51,52]2242; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} zmm0 = zmm0[5,6,7,8,9,10,11,12,13,14,15],zmm2[0,1,2,3,4],zmm0[21,22,23,24,25,26,27,28,29,30,31],zmm2[16,17,18,19,20],zmm0[37,38,39,40,41,42,43,44,45,46,47],zmm2[32,33,34,35,36],zmm0[53,54,55,56,57,58,59,60,61,62,63],zmm2[48,49,50,51,52]2243; AVX512DQ-BW-FCP-NEXT: vpalignr {{.*#+}} zmm2 = zmm2[5,6,7,8,9,10,11,12,13,14,15],zmm4[0,1,2,3,4],zmm2[21,22,23,24,25,26,27,28,29,30,31],zmm4[16,17,18,19,20],zmm2[37,38,39,40,41,42,43,44,45,46,47],zmm4[32,33,34,35,36],zmm2[53,54,55,56,57,58,59,60,61,62,63],zmm4[48,49,50,51,52]2244; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm32245; AVX512DQ-BW-FCP-NEXT: vpblendd {{.*#+}} ymm4 = ymm2[0,1,2,3],ymm1[4,5,6,7]2246; AVX512DQ-BW-FCP-NEXT: vperm2i128 {{.*#+}} ymm5 = ymm0[2,3],ymm2[2,3]2247; AVX512DQ-BW-FCP-NEXT: vextracti64x4 $1, %zmm0, %ymm02248; AVX512DQ-BW-FCP-NEXT: vextracti64x4 $1, %zmm1, %ymm12249; AVX512DQ-BW-FCP-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm62250; AVX512DQ-BW-FCP-NEXT: vextracti64x4 $1, %zmm2, %ymm22251; AVX512DQ-BW-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]2252; AVX512DQ-BW-FCP-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm2[2,3]2253; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm4, %zmm3, %zmm22254; AVX512DQ-BW-FCP-NEXT: vbroadcasti32x4 {{.*#+}} zmm3 = [0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5,0,11,6,1,12,7,2,13,8,3,14,9,4,15,10,5]2255; AVX512DQ-BW-FCP-NEXT: # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2256; AVX512DQ-BW-FCP-NEXT: vpshufb %zmm3, %zmm2, %zmm22257; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm5, %zmm42258; AVX512DQ-BW-FCP-NEXT: vpshufb %zmm3, %zmm4, %zmm42259; AVX512DQ-BW-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm02260; AVX512DQ-BW-FCP-NEXT: vpshufb %zmm3, %zmm0, %zmm02261; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, 128(%rcx)2262; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm4, 64(%rcx)2263; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, (%rcx)2264; AVX512DQ-BW-FCP-NEXT: vzeroupper2265; AVX512DQ-BW-FCP-NEXT: retq2266 %in.vec0 = load <64 x i8>, ptr %in.vecptr0, align 642267 %in.vec1 = load <64 x i8>, ptr %in.vecptr1, align 642268 %in.vec2 = load <64 x i8>, ptr %in.vecptr2, align 642269 %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>2270 %2 = shufflevector <64 x i8> %in.vec2, <64 x i8> poison, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>2271 %3 = shufflevector <128 x i8> %1, <128 x i8> %2, <192 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159, i32 160, i32 161, i32 162, i32 163, i32 164, i32 165, i32 166, i32 167, i32 168, i32 169, i32 170, i32 171, i32 172, i32 173, i32 174, i32 175, i32 176, i32 177, i32 178, i32 179, i32 180, i32 181, i32 182, i32 183, i32 184, i32 185, i32 186, i32 187, i32 188, i32 189, i32 190, i32 191>2272 %interleaved.vec = shufflevector <192 x i8> %3, <192 x i8> poison, <192 x i32> <i32 0, i32 64, i32 128, i32 1, i32 65, i32 129, i32 2, i32 66, i32 130, i32 3, i32 67, i32 131, i32 4, i32 68, i32 132, i32 5, i32 69, i32 133, i32 6, i32 70, i32 134, i32 7, i32 71, i32 135, i32 8, i32 72, i32 136, i32 9, i32 73, i32 137, i32 10, i32 74, i32 138, i32 11, i32 75, i32 139, i32 12, i32 76, i32 140, i32 13, i32 77, i32 141, i32 14, i32 78, i32 142, i32 15, i32 79, i32 143, i32 16, i32 80, i32 144, i32 17, i32 81, i32 145, i32 18, i32 82, i32 146, i32 19, i32 83, i32 147, i32 20, i32 84, i32 148, i32 21, i32 85, i32 149, i32 22, i32 86, i32 150, i32 23, i32 87, i32 151, i32 24, i32 88, i32 152, i32 25, i32 89, i32 153, i32 26, i32 90, i32 154, i32 27, i32 91, i32 155, i32 28, i32 92, i32 156, i32 29, i32 93, i32 157, i32 30, i32 94, i32 158, i32 31, i32 95, i32 159, i32 32, i32 96, i32 160, i32 33, i32 97, i32 161, i32 34, i32 98, i32 162, i32 35, i32 99, i32 163, i32 36, i32 100, i32 164, i32 37, i32 101, i32 165, i32 38, i32 102, i32 166, i32 39, i32 103, i32 167, i32 40, i32 104, i32 168, i32 41, i32 105, i32 169, i32 42, i32 106, i32 170, i32 43, i32 107, i32 171, i32 44, i32 108, i32 172, i32 45, i32 109, i32 173, i32 46, i32 110, i32 174, i32 47, i32 111, i32 175, i32 48, i32 112, i32 176, i32 49, i32 113, i32 177, i32 50, i32 114, i32 178, i32 51, i32 115, i32 179, i32 52, i32 116, i32 180, i32 53, i32 117, i32 181, i32 54, i32 118, i32 182, i32 55, i32 119, i32 183, i32 56, i32 120, i32 184, i32 57, i32 121, i32 185, i32 58, i32 122, i32 186, i32 59, i32 123, i32 187, i32 60, i32 124, i32 188, i32 61, i32 125, i32 189, i32 62, i32 126, i32 190, i32 63, i32 127, i32 191>2273 store <192 x i8> %interleaved.vec, ptr %out.vec, align 642274 ret void2275}2276