brintos

brintos / llvm-project-archived public Read only

0
0
Text · 203.8 KiB · 1dff9f4 Raw
3511 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 loads.17 18define void @load_i8_stride4_vf2(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {19; SSE-LABEL: load_i8_stride4_vf2:20; SSE:       # %bb.0:21; SSE-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero22; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,0,255,0,255,0,255,0]23; SSE-NEXT:    pand %xmm0, %xmm124; SSE-NEXT:    packuswb %xmm1, %xmm125; SSE-NEXT:    packuswb %xmm1, %xmm126; SSE-NEXT:    pxor %xmm2, %xmm227; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm0[1,3,2,3,4,5,6,7]28; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]29; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[0,2,2,3]30; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[1,3,2,3,4,5,6,7]31; SSE-NEXT:    packuswb %xmm2, %xmm232; SSE-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm333; SSE-NEXT:    packuswb %xmm3, %xmm334; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,3]35; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]36; SSE-NEXT:    packuswb %xmm0, %xmm037; SSE-NEXT:    movd %xmm1, %eax38; SSE-NEXT:    movw %ax, (%rsi)39; SSE-NEXT:    movd %xmm2, %eax40; SSE-NEXT:    movw %ax, (%rdx)41; SSE-NEXT:    movd %xmm3, %eax42; SSE-NEXT:    movw %ax, (%rcx)43; SSE-NEXT:    movd %xmm0, %eax44; SSE-NEXT:    movw %ax, (%r8)45; SSE-NEXT:    retq46;47; AVX-LABEL: load_i8_stride4_vf2:48; AVX:       # %bb.0:49; AVX-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero50; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,4,u,u,u,u,u,u,u,u,u,u,u,u,u,u]51; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,u,u,u,u,u,u,u,u,u,u,u,u,u,u]52; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]53; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]54; AVX-NEXT:    vpextrw $0, %xmm1, (%rsi)55; AVX-NEXT:    vpextrw $0, %xmm2, (%rdx)56; AVX-NEXT:    vpextrw $0, %xmm3, (%rcx)57; AVX-NEXT:    vpextrw $0, %xmm0, (%r8)58; AVX-NEXT:    retq59;60; AVX2-LABEL: load_i8_stride4_vf2:61; AVX2:       # %bb.0:62; AVX2-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero63; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,4,u,u,u,u,u,u,u,u,u,u,u,u,u,u]64; AVX2-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,u,u,u,u,u,u,u,u,u,u,u,u,u,u]65; AVX2-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]66; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]67; AVX2-NEXT:    vpextrw $0, %xmm1, (%rsi)68; AVX2-NEXT:    vpextrw $0, %xmm2, (%rdx)69; AVX2-NEXT:    vpextrw $0, %xmm3, (%rcx)70; AVX2-NEXT:    vpextrw $0, %xmm0, (%r8)71; AVX2-NEXT:    retq72;73; AVX2-FP-LABEL: load_i8_stride4_vf2:74; AVX2-FP:       # %bb.0:75; AVX2-FP-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero76; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,4,u,u,u,u,u,u,u,u,u,u,u,u,u,u]77; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,u,u,u,u,u,u,u,u,u,u,u,u,u,u]78; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]79; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]80; AVX2-FP-NEXT:    vpextrw $0, %xmm1, (%rsi)81; AVX2-FP-NEXT:    vpextrw $0, %xmm2, (%rdx)82; AVX2-FP-NEXT:    vpextrw $0, %xmm3, (%rcx)83; AVX2-FP-NEXT:    vpextrw $0, %xmm0, (%r8)84; AVX2-FP-NEXT:    retq85;86; AVX2-FCP-LABEL: load_i8_stride4_vf2:87; AVX2-FCP:       # %bb.0:88; AVX2-FCP-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero89; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,4,u,u,u,u,u,u,u,u,u,u,u,u,u,u]90; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,u,u,u,u,u,u,u,u,u,u,u,u,u,u]91; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]92; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]93; AVX2-FCP-NEXT:    vpextrw $0, %xmm1, (%rsi)94; AVX2-FCP-NEXT:    vpextrw $0, %xmm2, (%rdx)95; AVX2-FCP-NEXT:    vpextrw $0, %xmm3, (%rcx)96; AVX2-FCP-NEXT:    vpextrw $0, %xmm0, (%r8)97; AVX2-FCP-NEXT:    retq98;99; AVX512-LABEL: load_i8_stride4_vf2:100; AVX512:       # %bb.0:101; AVX512-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero102; AVX512-NEXT:    vpmovdb %xmm0, %xmm1103; AVX512-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,u,u,u,u,u,u,u,u,u,u,u,u,u,u]104; AVX512-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]105; AVX512-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]106; AVX512-NEXT:    vpextrw $0, %xmm1, (%rsi)107; AVX512-NEXT:    vpextrw $0, %xmm2, (%rdx)108; AVX512-NEXT:    vpextrw $0, %xmm3, (%rcx)109; AVX512-NEXT:    vpextrw $0, %xmm0, (%r8)110; AVX512-NEXT:    retq111;112; AVX512-FCP-LABEL: load_i8_stride4_vf2:113; AVX512-FCP:       # %bb.0:114; AVX512-FCP-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero115; AVX512-FCP-NEXT:    vpmovdb %xmm0, %xmm1116; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,u,u,u,u,u,u,u,u,u,u,u,u,u,u]117; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]118; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]119; AVX512-FCP-NEXT:    vpextrw $0, %xmm1, (%rsi)120; AVX512-FCP-NEXT:    vpextrw $0, %xmm2, (%rdx)121; AVX512-FCP-NEXT:    vpextrw $0, %xmm3, (%rcx)122; AVX512-FCP-NEXT:    vpextrw $0, %xmm0, (%r8)123; AVX512-FCP-NEXT:    retq124;125; AVX512DQ-LABEL: load_i8_stride4_vf2:126; AVX512DQ:       # %bb.0:127; AVX512DQ-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero128; AVX512DQ-NEXT:    vpmovdb %xmm0, %xmm1129; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,u,u,u,u,u,u,u,u,u,u,u,u,u,u]130; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]131; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]132; AVX512DQ-NEXT:    vpextrw $0, %xmm1, (%rsi)133; AVX512DQ-NEXT:    vpextrw $0, %xmm2, (%rdx)134; AVX512DQ-NEXT:    vpextrw $0, %xmm3, (%rcx)135; AVX512DQ-NEXT:    vpextrw $0, %xmm0, (%r8)136; AVX512DQ-NEXT:    retq137;138; AVX512DQ-FCP-LABEL: load_i8_stride4_vf2:139; AVX512DQ-FCP:       # %bb.0:140; AVX512DQ-FCP-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero141; AVX512DQ-FCP-NEXT:    vpmovdb %xmm0, %xmm1142; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,u,u,u,u,u,u,u,u,u,u,u,u,u,u]143; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]144; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]145; AVX512DQ-FCP-NEXT:    vpextrw $0, %xmm1, (%rsi)146; AVX512DQ-FCP-NEXT:    vpextrw $0, %xmm2, (%rdx)147; AVX512DQ-FCP-NEXT:    vpextrw $0, %xmm3, (%rcx)148; AVX512DQ-FCP-NEXT:    vpextrw $0, %xmm0, (%r8)149; AVX512DQ-FCP-NEXT:    retq150;151; AVX512BW-LABEL: load_i8_stride4_vf2:152; AVX512BW:       # %bb.0:153; AVX512BW-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero154; AVX512BW-NEXT:    vpmovdb %xmm0, %xmm1155; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,u,u,u,u,u,u,u,u,u,u,u,u,u,u]156; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]157; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]158; AVX512BW-NEXT:    vpextrw $0, %xmm1, (%rsi)159; AVX512BW-NEXT:    vpextrw $0, %xmm2, (%rdx)160; AVX512BW-NEXT:    vpextrw $0, %xmm3, (%rcx)161; AVX512BW-NEXT:    vpextrw $0, %xmm0, (%r8)162; AVX512BW-NEXT:    retq163;164; AVX512BW-FCP-LABEL: load_i8_stride4_vf2:165; AVX512BW-FCP:       # %bb.0:166; AVX512BW-FCP-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero167; AVX512BW-FCP-NEXT:    vpmovdb %xmm0, %xmm1168; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,u,u,u,u,u,u,u,u,u,u,u,u,u,u]169; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]170; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]171; AVX512BW-FCP-NEXT:    vpextrw $0, %xmm1, (%rsi)172; AVX512BW-FCP-NEXT:    vpextrw $0, %xmm2, (%rdx)173; AVX512BW-FCP-NEXT:    vpextrw $0, %xmm3, (%rcx)174; AVX512BW-FCP-NEXT:    vpextrw $0, %xmm0, (%r8)175; AVX512BW-FCP-NEXT:    retq176;177; AVX512DQ-BW-LABEL: load_i8_stride4_vf2:178; AVX512DQ-BW:       # %bb.0:179; AVX512DQ-BW-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero180; AVX512DQ-BW-NEXT:    vpmovdb %xmm0, %xmm1181; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,u,u,u,u,u,u,u,u,u,u,u,u,u,u]182; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]183; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]184; AVX512DQ-BW-NEXT:    vpextrw $0, %xmm1, (%rsi)185; AVX512DQ-BW-NEXT:    vpextrw $0, %xmm2, (%rdx)186; AVX512DQ-BW-NEXT:    vpextrw $0, %xmm3, (%rcx)187; AVX512DQ-BW-NEXT:    vpextrw $0, %xmm0, (%r8)188; AVX512DQ-BW-NEXT:    retq189;190; AVX512DQ-BW-FCP-LABEL: load_i8_stride4_vf2:191; AVX512DQ-BW-FCP:       # %bb.0:192; AVX512DQ-BW-FCP-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero193; AVX512DQ-BW-FCP-NEXT:    vpmovdb %xmm0, %xmm1194; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,u,u,u,u,u,u,u,u,u,u,u,u,u,u]195; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]196; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]197; AVX512DQ-BW-FCP-NEXT:    vpextrw $0, %xmm1, (%rsi)198; AVX512DQ-BW-FCP-NEXT:    vpextrw $0, %xmm2, (%rdx)199; AVX512DQ-BW-FCP-NEXT:    vpextrw $0, %xmm3, (%rcx)200; AVX512DQ-BW-FCP-NEXT:    vpextrw $0, %xmm0, (%r8)201; AVX512DQ-BW-FCP-NEXT:    retq202  %wide.vec = load <8 x i8>, ptr %in.vec, align 64203  %strided.vec0 = shufflevector <8 x i8> %wide.vec, <8 x i8> poison, <2 x i32> <i32 0, i32 4>204  %strided.vec1 = shufflevector <8 x i8> %wide.vec, <8 x i8> poison, <2 x i32> <i32 1, i32 5>205  %strided.vec2 = shufflevector <8 x i8> %wide.vec, <8 x i8> poison, <2 x i32> <i32 2, i32 6>206  %strided.vec3 = shufflevector <8 x i8> %wide.vec, <8 x i8> poison, <2 x i32> <i32 3, i32 7>207  store <2 x i8> %strided.vec0, ptr %out.vec0, align 64208  store <2 x i8> %strided.vec1, ptr %out.vec1, align 64209  store <2 x i8> %strided.vec2, ptr %out.vec2, align 64210  store <2 x i8> %strided.vec3, ptr %out.vec3, align 64211  ret void212}213 214define void @load_i8_stride4_vf4(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {215; SSE-LABEL: load_i8_stride4_vf4:216; SSE:       # %bb.0:217; SSE-NEXT:    movdqa (%rdi), %xmm1218; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [255,0,255,0,255,0,255,0]219; SSE-NEXT:    pand %xmm1, %xmm0220; SSE-NEXT:    packuswb %xmm0, %xmm0221; SSE-NEXT:    packuswb %xmm0, %xmm0222; SSE-NEXT:    pxor %xmm2, %xmm2223; SSE-NEXT:    movdqa %xmm1, %xmm3224; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm2[8],xmm3[9],xmm2[9],xmm3[10],xmm2[10],xmm3[11],xmm2[11],xmm3[12],xmm2[12],xmm3[13],xmm2[13],xmm3[14],xmm2[14],xmm3[15],xmm2[15]225; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm3[0,2,2,3]226; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,3,2,3,4,5,6,7]227; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm1[3,1,2,3,4,5,6,7]228; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]229; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[0,2,2,3]230; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[1,3,2,3,4,5,6,7]231; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]232; SSE-NEXT:    packuswb %xmm2, %xmm2233; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm5[0,1,2,3,7,5,6,7]234; SSE-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm4235; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]236; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,0,3,2,4,5,6,7]237; SSE-NEXT:    packuswb %xmm4, %xmm4238; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[3,1,2,3]239; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]240; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]241; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,2,3,4,5,6,7]242; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]243; SSE-NEXT:    packuswb %xmm1, %xmm1244; SSE-NEXT:    movd %xmm0, (%rsi)245; SSE-NEXT:    movd %xmm2, (%rdx)246; SSE-NEXT:    movd %xmm4, (%rcx)247; SSE-NEXT:    movd %xmm1, (%r8)248; SSE-NEXT:    retq249;250; AVX-LABEL: load_i8_stride4_vf4:251; AVX:       # %bb.0:252; AVX-NEXT:    vmovdqa (%rdi), %xmm0253; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]254; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u]255; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,10,14,u,u,u,u,u,u,u,u,u,u,u,u]256; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,11,15,u,u,u,u,u,u,u,u,u,u,u,u]257; AVX-NEXT:    vmovd %xmm1, (%rsi)258; AVX-NEXT:    vmovd %xmm2, (%rdx)259; AVX-NEXT:    vmovd %xmm3, (%rcx)260; AVX-NEXT:    vmovd %xmm0, (%r8)261; AVX-NEXT:    retq262;263; AVX2-LABEL: load_i8_stride4_vf4:264; AVX2:       # %bb.0:265; AVX2-NEXT:    vmovdqa (%rdi), %xmm0266; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]267; AVX2-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u]268; AVX2-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,10,14,u,u,u,u,u,u,u,u,u,u,u,u]269; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,11,15,u,u,u,u,u,u,u,u,u,u,u,u]270; AVX2-NEXT:    vmovd %xmm1, (%rsi)271; AVX2-NEXT:    vmovd %xmm2, (%rdx)272; AVX2-NEXT:    vmovd %xmm3, (%rcx)273; AVX2-NEXT:    vmovd %xmm0, (%r8)274; AVX2-NEXT:    retq275;276; AVX2-FP-LABEL: load_i8_stride4_vf4:277; AVX2-FP:       # %bb.0:278; AVX2-FP-NEXT:    vmovdqa (%rdi), %xmm0279; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]280; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u]281; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,10,14,u,u,u,u,u,u,u,u,u,u,u,u]282; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,11,15,u,u,u,u,u,u,u,u,u,u,u,u]283; AVX2-FP-NEXT:    vmovd %xmm1, (%rsi)284; AVX2-FP-NEXT:    vmovd %xmm2, (%rdx)285; AVX2-FP-NEXT:    vmovd %xmm3, (%rcx)286; AVX2-FP-NEXT:    vmovd %xmm0, (%r8)287; AVX2-FP-NEXT:    retq288;289; AVX2-FCP-LABEL: load_i8_stride4_vf4:290; AVX2-FCP:       # %bb.0:291; AVX2-FCP-NEXT:    vmovdqa (%rdi), %xmm0292; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]293; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u]294; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,6,10,14,u,u,u,u,u,u,u,u,u,u,u,u]295; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[3,7,11,15,u,u,u,u,u,u,u,u,u,u,u,u]296; AVX2-FCP-NEXT:    vmovd %xmm1, (%rsi)297; AVX2-FCP-NEXT:    vmovd %xmm2, (%rdx)298; AVX2-FCP-NEXT:    vmovd %xmm3, (%rcx)299; AVX2-FCP-NEXT:    vmovd %xmm0, (%r8)300; AVX2-FCP-NEXT:    retq301;302; AVX512-LABEL: load_i8_stride4_vf4:303; AVX512:       # %bb.0:304; AVX512-NEXT:    vmovdqa (%rdi), %xmm0305; AVX512-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u]306; AVX512-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[2,6,10,14,u,u,u,u,u,u,u,u,u,u,u,u]307; AVX512-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[3,7,11,15,u,u,u,u,u,u,u,u,u,u,u,u]308; AVX512-NEXT:    vpmovdb %xmm0, (%rsi)309; AVX512-NEXT:    vmovd %xmm1, (%rdx)310; AVX512-NEXT:    vmovd %xmm2, (%rcx)311; AVX512-NEXT:    vmovd %xmm3, (%r8)312; AVX512-NEXT:    retq313;314; AVX512-FCP-LABEL: load_i8_stride4_vf4:315; AVX512-FCP:       # %bb.0:316; AVX512-FCP-NEXT:    vmovdqa (%rdi), %xmm0317; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u]318; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[2,6,10,14,u,u,u,u,u,u,u,u,u,u,u,u]319; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[3,7,11,15,u,u,u,u,u,u,u,u,u,u,u,u]320; AVX512-FCP-NEXT:    vpmovdb %xmm0, (%rsi)321; AVX512-FCP-NEXT:    vmovd %xmm1, (%rdx)322; AVX512-FCP-NEXT:    vmovd %xmm2, (%rcx)323; AVX512-FCP-NEXT:    vmovd %xmm3, (%r8)324; AVX512-FCP-NEXT:    retq325;326; AVX512DQ-LABEL: load_i8_stride4_vf4:327; AVX512DQ:       # %bb.0:328; AVX512DQ-NEXT:    vmovdqa (%rdi), %xmm0329; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u]330; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[2,6,10,14,u,u,u,u,u,u,u,u,u,u,u,u]331; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[3,7,11,15,u,u,u,u,u,u,u,u,u,u,u,u]332; AVX512DQ-NEXT:    vpmovdb %xmm0, (%rsi)333; AVX512DQ-NEXT:    vmovd %xmm1, (%rdx)334; AVX512DQ-NEXT:    vmovd %xmm2, (%rcx)335; AVX512DQ-NEXT:    vmovd %xmm3, (%r8)336; AVX512DQ-NEXT:    retq337;338; AVX512DQ-FCP-LABEL: load_i8_stride4_vf4:339; AVX512DQ-FCP:       # %bb.0:340; AVX512DQ-FCP-NEXT:    vmovdqa (%rdi), %xmm0341; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u]342; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[2,6,10,14,u,u,u,u,u,u,u,u,u,u,u,u]343; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[3,7,11,15,u,u,u,u,u,u,u,u,u,u,u,u]344; AVX512DQ-FCP-NEXT:    vpmovdb %xmm0, (%rsi)345; AVX512DQ-FCP-NEXT:    vmovd %xmm1, (%rdx)346; AVX512DQ-FCP-NEXT:    vmovd %xmm2, (%rcx)347; AVX512DQ-FCP-NEXT:    vmovd %xmm3, (%r8)348; AVX512DQ-FCP-NEXT:    retq349;350; AVX512BW-LABEL: load_i8_stride4_vf4:351; AVX512BW:       # %bb.0:352; AVX512BW-NEXT:    vmovdqa (%rdi), %xmm0353; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u]354; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[2,6,10,14,u,u,u,u,u,u,u,u,u,u,u,u]355; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[3,7,11,15,u,u,u,u,u,u,u,u,u,u,u,u]356; AVX512BW-NEXT:    vpmovdb %xmm0, (%rsi)357; AVX512BW-NEXT:    vmovd %xmm1, (%rdx)358; AVX512BW-NEXT:    vmovd %xmm2, (%rcx)359; AVX512BW-NEXT:    vmovd %xmm3, (%r8)360; AVX512BW-NEXT:    retq361;362; AVX512BW-FCP-LABEL: load_i8_stride4_vf4:363; AVX512BW-FCP:       # %bb.0:364; AVX512BW-FCP-NEXT:    vmovdqa (%rdi), %xmm0365; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u]366; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[2,6,10,14,u,u,u,u,u,u,u,u,u,u,u,u]367; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[3,7,11,15,u,u,u,u,u,u,u,u,u,u,u,u]368; AVX512BW-FCP-NEXT:    vpmovdb %xmm0, (%rsi)369; AVX512BW-FCP-NEXT:    vmovd %xmm1, (%rdx)370; AVX512BW-FCP-NEXT:    vmovd %xmm2, (%rcx)371; AVX512BW-FCP-NEXT:    vmovd %xmm3, (%r8)372; AVX512BW-FCP-NEXT:    retq373;374; AVX512DQ-BW-LABEL: load_i8_stride4_vf4:375; AVX512DQ-BW:       # %bb.0:376; AVX512DQ-BW-NEXT:    vmovdqa (%rdi), %xmm0377; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u]378; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[2,6,10,14,u,u,u,u,u,u,u,u,u,u,u,u]379; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[3,7,11,15,u,u,u,u,u,u,u,u,u,u,u,u]380; AVX512DQ-BW-NEXT:    vpmovdb %xmm0, (%rsi)381; AVX512DQ-BW-NEXT:    vmovd %xmm1, (%rdx)382; AVX512DQ-BW-NEXT:    vmovd %xmm2, (%rcx)383; AVX512DQ-BW-NEXT:    vmovd %xmm3, (%r8)384; AVX512DQ-BW-NEXT:    retq385;386; AVX512DQ-BW-FCP-LABEL: load_i8_stride4_vf4:387; AVX512DQ-BW-FCP:       # %bb.0:388; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdi), %xmm0389; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u]390; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[2,6,10,14,u,u,u,u,u,u,u,u,u,u,u,u]391; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[3,7,11,15,u,u,u,u,u,u,u,u,u,u,u,u]392; AVX512DQ-BW-FCP-NEXT:    vpmovdb %xmm0, (%rsi)393; AVX512DQ-BW-FCP-NEXT:    vmovd %xmm1, (%rdx)394; AVX512DQ-BW-FCP-NEXT:    vmovd %xmm2, (%rcx)395; AVX512DQ-BW-FCP-NEXT:    vmovd %xmm3, (%r8)396; AVX512DQ-BW-FCP-NEXT:    retq397  %wide.vec = load <16 x i8>, ptr %in.vec, align 64398  %strided.vec0 = shufflevector <16 x i8> %wide.vec, <16 x i8> poison, <4 x i32> <i32 0, i32 4, i32 8, i32 12>399  %strided.vec1 = shufflevector <16 x i8> %wide.vec, <16 x i8> poison, <4 x i32> <i32 1, i32 5, i32 9, i32 13>400  %strided.vec2 = shufflevector <16 x i8> %wide.vec, <16 x i8> poison, <4 x i32> <i32 2, i32 6, i32 10, i32 14>401  %strided.vec3 = shufflevector <16 x i8> %wide.vec, <16 x i8> poison, <4 x i32> <i32 3, i32 7, i32 11, i32 15>402  store <4 x i8> %strided.vec0, ptr %out.vec0, align 64403  store <4 x i8> %strided.vec1, ptr %out.vec1, align 64404  store <4 x i8> %strided.vec2, ptr %out.vec2, align 64405  store <4 x i8> %strided.vec3, ptr %out.vec3, align 64406  ret void407}408 409define void @load_i8_stride4_vf8(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {410; SSE-LABEL: load_i8_stride4_vf8:411; SSE:       # %bb.0:412; SSE-NEXT:    movdqa (%rdi), %xmm2413; SSE-NEXT:    movdqa 16(%rdi), %xmm4414; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,0,255,0,255,0,255,0]415; SSE-NEXT:    movdqa %xmm4, %xmm0416; SSE-NEXT:    movdqa %xmm4, %xmm1417; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm4[3,1,2,3,4,5,6,7]418; SSE-NEXT:    pand %xmm3, %xmm4419; SSE-NEXT:    pand %xmm2, %xmm3420; SSE-NEXT:    packuswb %xmm4, %xmm3421; SSE-NEXT:    packuswb %xmm3, %xmm3422; SSE-NEXT:    movq %xmm3, (%rsi)423; SSE-NEXT:    pxor %xmm4, %xmm4424; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm4[8],xmm0[9],xmm4[9],xmm0[10],xmm4[10],xmm0[11],xmm4[11],xmm0[12],xmm4[12],xmm0[13],xmm4[13],xmm0[14],xmm4[14],xmm0[15],xmm4[15]425; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[0,2,2,3]426; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,3,4,5,6,7]427; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3],xmm1[4],xmm4[4],xmm1[5],xmm4[5],xmm1[6],xmm4[6],xmm1[7],xmm4[7]428; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm1[0,2,2,3]429; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[0,1,1,3,4,5,6,7]430; SSE-NEXT:    punpckldq {{.*#+}} xmm6 = xmm6[0],xmm3[0],xmm6[1],xmm3[1]431; SSE-NEXT:    movdqa %xmm2, %xmm3432; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm2[3,1,2,3,4,5,6,7]433; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm4[8],xmm2[9],xmm4[9],xmm2[10],xmm4[10],xmm2[11],xmm4[11],xmm2[12],xmm4[12],xmm2[13],xmm4[13],xmm2[14],xmm4[14],xmm2[15],xmm4[15]434; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm2[0,2,2,3]435; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[1,3,2,3,4,5,6,7]436; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]437; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm3[0,2,2,3]438; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,3,2,3,4,5,6,7]439; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1]440; SSE-NEXT:    packuswb %xmm6, %xmm4441; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,3,2,3]442; SSE-NEXT:    movq %xmm4, (%rdx)443; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm5[0,1,2,3,7,5,6,7]444; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [255,255,255,255,255,255,255,255]445; SSE-NEXT:    pand %xmm5, %xmm4446; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,1,2,0]447; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,7,6,5,4]448; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm7[0,1,2,3,7,5,6,7]449; SSE-NEXT:    pand %xmm5, %xmm6450; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[0,2,2,3]451; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[1,0,3,2,4,5,6,7]452; SSE-NEXT:    packuswb %xmm4, %xmm5453; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[0,3,2,3]454; SSE-NEXT:    movq %xmm4, (%rcx)455; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,3]456; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,3,1,4,5,6,7]457; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]458; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,3,1,4,5,6,7]459; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]460; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[3,1,2,3]461; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]462; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm3[3,1,2,3]463; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[3,1,2,3,4,5,6,7]464; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]465; SSE-NEXT:    packuswb %xmm1, %xmm2466; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,3,2,3]467; SSE-NEXT:    movq %xmm0, (%r8)468; SSE-NEXT:    retq469;470; AVX-LABEL: load_i8_stride4_vf8:471; AVX:       # %bb.0:472; AVX-NEXT:    vmovd {{.*#+}} xmm0 = [0,4,8,12,0,0,0,0,0,0,0,0,0,0,0,0]473; AVX-NEXT:    vmovdqa (%rdi), %xmm1474; AVX-NEXT:    vmovdqa 16(%rdi), %xmm2475; AVX-NEXT:    vpshufb %xmm0, %xmm2, %xmm3476; AVX-NEXT:    vpshufb %xmm0, %xmm1, %xmm0477; AVX-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]478; AVX-NEXT:    vmovq %xmm0, (%rsi)479; AVX-NEXT:    vmovd {{.*#+}} xmm0 = [1,5,9,13,0,0,0,0,0,0,0,0,0,0,0,0]480; AVX-NEXT:    vpshufb %xmm0, %xmm2, %xmm3481; AVX-NEXT:    vpshufb %xmm0, %xmm1, %xmm0482; AVX-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]483; AVX-NEXT:    vmovq %xmm0, (%rdx)484; AVX-NEXT:    vmovd {{.*#+}} xmm0 = [2,6,10,14,0,0,0,0,0,0,0,0,0,0,0,0]485; AVX-NEXT:    vpshufb %xmm0, %xmm2, %xmm3486; AVX-NEXT:    vpshufb %xmm0, %xmm1, %xmm0487; AVX-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]488; AVX-NEXT:    vmovq %xmm0, (%rcx)489; AVX-NEXT:    vmovd {{.*#+}} xmm0 = [3,7,11,15,0,0,0,0,0,0,0,0,0,0,0,0]490; AVX-NEXT:    vpshufb %xmm0, %xmm2, %xmm2491; AVX-NEXT:    vpshufb %xmm0, %xmm1, %xmm0492; AVX-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]493; AVX-NEXT:    vmovq %xmm0, (%r8)494; AVX-NEXT:    retq495;496; AVX2-LABEL: load_i8_stride4_vf8:497; AVX2:       # %bb.0:498; AVX2-NEXT:    vmovd {{.*#+}} xmm0 = [0,4,8,12,0,0,0,0,0,0,0,0,0,0,0,0]499; AVX2-NEXT:    vmovdqa (%rdi), %xmm1500; AVX2-NEXT:    vmovdqa 16(%rdi), %xmm2501; AVX2-NEXT:    vpshufb %xmm0, %xmm2, %xmm3502; AVX2-NEXT:    vpshufb %xmm0, %xmm1, %xmm0503; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]504; AVX2-NEXT:    vmovq %xmm0, (%rsi)505; AVX2-NEXT:    vmovd {{.*#+}} xmm0 = [1,5,9,13,0,0,0,0,0,0,0,0,0,0,0,0]506; AVX2-NEXT:    vpshufb %xmm0, %xmm2, %xmm3507; AVX2-NEXT:    vpshufb %xmm0, %xmm1, %xmm0508; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]509; AVX2-NEXT:    vmovq %xmm0, (%rdx)510; AVX2-NEXT:    vmovd {{.*#+}} xmm0 = [2,6,10,14,0,0,0,0,0,0,0,0,0,0,0,0]511; AVX2-NEXT:    vpshufb %xmm0, %xmm2, %xmm3512; AVX2-NEXT:    vpshufb %xmm0, %xmm1, %xmm0513; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]514; AVX2-NEXT:    vmovq %xmm0, (%rcx)515; AVX2-NEXT:    vmovd {{.*#+}} xmm0 = [3,7,11,15,0,0,0,0,0,0,0,0,0,0,0,0]516; AVX2-NEXT:    vpshufb %xmm0, %xmm2, %xmm2517; AVX2-NEXT:    vpshufb %xmm0, %xmm1, %xmm0518; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]519; AVX2-NEXT:    vmovq %xmm0, (%r8)520; AVX2-NEXT:    retq521;522; AVX2-FP-LABEL: load_i8_stride4_vf8:523; AVX2-FP:       # %bb.0:524; AVX2-FP-NEXT:    vmovd {{.*#+}} xmm0 = [0,4,8,12,0,0,0,0,0,0,0,0,0,0,0,0]525; AVX2-FP-NEXT:    vmovdqa (%rdi), %xmm1526; AVX2-FP-NEXT:    vmovdqa 16(%rdi), %xmm2527; AVX2-FP-NEXT:    vpshufb %xmm0, %xmm2, %xmm3528; AVX2-FP-NEXT:    vpshufb %xmm0, %xmm1, %xmm0529; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]530; AVX2-FP-NEXT:    vmovq %xmm0, (%rsi)531; AVX2-FP-NEXT:    vmovd {{.*#+}} xmm0 = [1,5,9,13,0,0,0,0,0,0,0,0,0,0,0,0]532; AVX2-FP-NEXT:    vpshufb %xmm0, %xmm2, %xmm3533; AVX2-FP-NEXT:    vpshufb %xmm0, %xmm1, %xmm0534; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]535; AVX2-FP-NEXT:    vmovq %xmm0, (%rdx)536; AVX2-FP-NEXT:    vmovd {{.*#+}} xmm0 = [2,6,10,14,0,0,0,0,0,0,0,0,0,0,0,0]537; AVX2-FP-NEXT:    vpshufb %xmm0, %xmm2, %xmm3538; AVX2-FP-NEXT:    vpshufb %xmm0, %xmm1, %xmm0539; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]540; AVX2-FP-NEXT:    vmovq %xmm0, (%rcx)541; AVX2-FP-NEXT:    vmovd {{.*#+}} xmm0 = [3,7,11,15,0,0,0,0,0,0,0,0,0,0,0,0]542; AVX2-FP-NEXT:    vpshufb %xmm0, %xmm2, %xmm2543; AVX2-FP-NEXT:    vpshufb %xmm0, %xmm1, %xmm0544; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]545; AVX2-FP-NEXT:    vmovq %xmm0, (%r8)546; AVX2-FP-NEXT:    retq547;548; AVX2-FCP-LABEL: load_i8_stride4_vf8:549; AVX2-FCP:       # %bb.0:550; AVX2-FCP-NEXT:    vmovd {{.*#+}} xmm0 = [0,4,8,12,0,0,0,0,0,0,0,0,0,0,0,0]551; AVX2-FCP-NEXT:    vmovdqa (%rdi), %xmm1552; AVX2-FCP-NEXT:    vmovdqa 16(%rdi), %xmm2553; AVX2-FCP-NEXT:    vpshufb %xmm0, %xmm2, %xmm3554; AVX2-FCP-NEXT:    vpshufb %xmm0, %xmm1, %xmm0555; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]556; AVX2-FCP-NEXT:    vmovq %xmm0, (%rsi)557; AVX2-FCP-NEXT:    vmovd {{.*#+}} xmm0 = [1,5,9,13,0,0,0,0,0,0,0,0,0,0,0,0]558; AVX2-FCP-NEXT:    vpshufb %xmm0, %xmm2, %xmm3559; AVX2-FCP-NEXT:    vpshufb %xmm0, %xmm1, %xmm0560; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]561; AVX2-FCP-NEXT:    vmovq %xmm0, (%rdx)562; AVX2-FCP-NEXT:    vmovd {{.*#+}} xmm0 = [2,6,10,14,0,0,0,0,0,0,0,0,0,0,0,0]563; AVX2-FCP-NEXT:    vpshufb %xmm0, %xmm2, %xmm3564; AVX2-FCP-NEXT:    vpshufb %xmm0, %xmm1, %xmm0565; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]566; AVX2-FCP-NEXT:    vmovq %xmm0, (%rcx)567; AVX2-FCP-NEXT:    vmovd {{.*#+}} xmm0 = [3,7,11,15,0,0,0,0,0,0,0,0,0,0,0,0]568; AVX2-FCP-NEXT:    vpshufb %xmm0, %xmm2, %xmm2569; AVX2-FCP-NEXT:    vpshufb %xmm0, %xmm1, %xmm0570; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]571; AVX2-FCP-NEXT:    vmovq %xmm0, (%r8)572; AVX2-FCP-NEXT:    retq573;574; AVX512-LABEL: load_i8_stride4_vf8:575; AVX512:       # %bb.0:576; AVX512-NEXT:    vmovdqa (%rdi), %ymm0577; AVX512-NEXT:    vpmovdb %ymm0, (%rsi)578; AVX512-NEXT:    vpsrld $8, %ymm0, %ymm1579; AVX512-NEXT:    vpmovdb %ymm1, (%rdx)580; AVX512-NEXT:    vpsrld $16, %ymm0, %ymm1581; AVX512-NEXT:    vpmovdb %ymm1, (%rcx)582; AVX512-NEXT:    vpsrld $24, %ymm0, %ymm0583; AVX512-NEXT:    vpmovdb %ymm0, (%r8)584; AVX512-NEXT:    vzeroupper585; AVX512-NEXT:    retq586;587; AVX512-FCP-LABEL: load_i8_stride4_vf8:588; AVX512-FCP:       # %bb.0:589; AVX512-FCP-NEXT:    vmovdqa (%rdi), %ymm0590; AVX512-FCP-NEXT:    vpmovdb %ymm0, (%rsi)591; AVX512-FCP-NEXT:    vpsrld $8, %ymm0, %ymm1592; AVX512-FCP-NEXT:    vpmovdb %ymm1, (%rdx)593; AVX512-FCP-NEXT:    vpsrld $16, %ymm0, %ymm1594; AVX512-FCP-NEXT:    vpmovdb %ymm1, (%rcx)595; AVX512-FCP-NEXT:    vpsrld $24, %ymm0, %ymm0596; AVX512-FCP-NEXT:    vpmovdb %ymm0, (%r8)597; AVX512-FCP-NEXT:    vzeroupper598; AVX512-FCP-NEXT:    retq599;600; AVX512DQ-LABEL: load_i8_stride4_vf8:601; AVX512DQ:       # %bb.0:602; AVX512DQ-NEXT:    vmovdqa (%rdi), %ymm0603; AVX512DQ-NEXT:    vpmovdb %ymm0, (%rsi)604; AVX512DQ-NEXT:    vpsrld $8, %ymm0, %ymm1605; AVX512DQ-NEXT:    vpmovdb %ymm1, (%rdx)606; AVX512DQ-NEXT:    vpsrld $16, %ymm0, %ymm1607; AVX512DQ-NEXT:    vpmovdb %ymm1, (%rcx)608; AVX512DQ-NEXT:    vpsrld $24, %ymm0, %ymm0609; AVX512DQ-NEXT:    vpmovdb %ymm0, (%r8)610; AVX512DQ-NEXT:    vzeroupper611; AVX512DQ-NEXT:    retq612;613; AVX512DQ-FCP-LABEL: load_i8_stride4_vf8:614; AVX512DQ-FCP:       # %bb.0:615; AVX512DQ-FCP-NEXT:    vmovdqa (%rdi), %ymm0616; AVX512DQ-FCP-NEXT:    vpmovdb %ymm0, (%rsi)617; AVX512DQ-FCP-NEXT:    vpsrld $8, %ymm0, %ymm1618; AVX512DQ-FCP-NEXT:    vpmovdb %ymm1, (%rdx)619; AVX512DQ-FCP-NEXT:    vpsrld $16, %ymm0, %ymm1620; AVX512DQ-FCP-NEXT:    vpmovdb %ymm1, (%rcx)621; AVX512DQ-FCP-NEXT:    vpsrld $24, %ymm0, %ymm0622; AVX512DQ-FCP-NEXT:    vpmovdb %ymm0, (%r8)623; AVX512DQ-FCP-NEXT:    vzeroupper624; AVX512DQ-FCP-NEXT:    retq625;626; AVX512BW-LABEL: load_i8_stride4_vf8:627; AVX512BW:       # %bb.0:628; AVX512BW-NEXT:    vmovdqa (%rdi), %ymm0629; AVX512BW-NEXT:    vpmovdb %ymm0, (%rsi)630; AVX512BW-NEXT:    vpsrld $8, %ymm0, %ymm1631; AVX512BW-NEXT:    vpmovdb %ymm1, (%rdx)632; AVX512BW-NEXT:    vpsrld $16, %ymm0, %ymm1633; AVX512BW-NEXT:    vpmovdb %ymm1, (%rcx)634; AVX512BW-NEXT:    vpsrld $24, %ymm0, %ymm0635; AVX512BW-NEXT:    vpmovdb %ymm0, (%r8)636; AVX512BW-NEXT:    vzeroupper637; AVX512BW-NEXT:    retq638;639; AVX512BW-FCP-LABEL: load_i8_stride4_vf8:640; AVX512BW-FCP:       # %bb.0:641; AVX512BW-FCP-NEXT:    vmovdqa (%rdi), %ymm0642; AVX512BW-FCP-NEXT:    vpmovdb %ymm0, (%rsi)643; AVX512BW-FCP-NEXT:    vpsrld $8, %ymm0, %ymm1644; AVX512BW-FCP-NEXT:    vpmovdb %ymm1, (%rdx)645; AVX512BW-FCP-NEXT:    vpsrld $16, %ymm0, %ymm1646; AVX512BW-FCP-NEXT:    vpmovdb %ymm1, (%rcx)647; AVX512BW-FCP-NEXT:    vpsrld $24, %ymm0, %ymm0648; AVX512BW-FCP-NEXT:    vpmovdb %ymm0, (%r8)649; AVX512BW-FCP-NEXT:    vzeroupper650; AVX512BW-FCP-NEXT:    retq651;652; AVX512DQ-BW-LABEL: load_i8_stride4_vf8:653; AVX512DQ-BW:       # %bb.0:654; AVX512DQ-BW-NEXT:    vmovdqa (%rdi), %ymm0655; AVX512DQ-BW-NEXT:    vpmovdb %ymm0, (%rsi)656; AVX512DQ-BW-NEXT:    vpsrld $8, %ymm0, %ymm1657; AVX512DQ-BW-NEXT:    vpmovdb %ymm1, (%rdx)658; AVX512DQ-BW-NEXT:    vpsrld $16, %ymm0, %ymm1659; AVX512DQ-BW-NEXT:    vpmovdb %ymm1, (%rcx)660; AVX512DQ-BW-NEXT:    vpsrld $24, %ymm0, %ymm0661; AVX512DQ-BW-NEXT:    vpmovdb %ymm0, (%r8)662; AVX512DQ-BW-NEXT:    vzeroupper663; AVX512DQ-BW-NEXT:    retq664;665; AVX512DQ-BW-FCP-LABEL: load_i8_stride4_vf8:666; AVX512DQ-BW-FCP:       # %bb.0:667; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdi), %ymm0668; AVX512DQ-BW-FCP-NEXT:    vpmovdb %ymm0, (%rsi)669; AVX512DQ-BW-FCP-NEXT:    vpsrld $8, %ymm0, %ymm1670; AVX512DQ-BW-FCP-NEXT:    vpmovdb %ymm1, (%rdx)671; AVX512DQ-BW-FCP-NEXT:    vpsrld $16, %ymm0, %ymm1672; AVX512DQ-BW-FCP-NEXT:    vpmovdb %ymm1, (%rcx)673; AVX512DQ-BW-FCP-NEXT:    vpsrld $24, %ymm0, %ymm0674; AVX512DQ-BW-FCP-NEXT:    vpmovdb %ymm0, (%r8)675; AVX512DQ-BW-FCP-NEXT:    vzeroupper676; AVX512DQ-BW-FCP-NEXT:    retq677  %wide.vec = load <32 x i8>, ptr %in.vec, align 64678  %strided.vec0 = shufflevector <32 x i8> %wide.vec, <32 x i8> poison, <8 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28>679  %strided.vec1 = shufflevector <32 x i8> %wide.vec, <32 x i8> poison, <8 x i32> <i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 25, i32 29>680  %strided.vec2 = shufflevector <32 x i8> %wide.vec, <32 x i8> poison, <8 x i32> <i32 2, i32 6, i32 10, i32 14, i32 18, i32 22, i32 26, i32 30>681  %strided.vec3 = shufflevector <32 x i8> %wide.vec, <32 x i8> poison, <8 x i32> <i32 3, i32 7, i32 11, i32 15, i32 19, i32 23, i32 27, i32 31>682  store <8 x i8> %strided.vec0, ptr %out.vec0, align 64683  store <8 x i8> %strided.vec1, ptr %out.vec1, align 64684  store <8 x i8> %strided.vec2, ptr %out.vec2, align 64685  store <8 x i8> %strided.vec3, ptr %out.vec3, align 64686  ret void687}688 689define void @load_i8_stride4_vf16(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {690; SSE-LABEL: load_i8_stride4_vf16:691; SSE:       # %bb.0:692; SSE-NEXT:    movdqa (%rdi), %xmm1693; SSE-NEXT:    movdqa 16(%rdi), %xmm3694; SSE-NEXT:    movdqa 32(%rdi), %xmm9695; SSE-NEXT:    movdqa 48(%rdi), %xmm10696; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [255,0,255,0,255,0,255,0]697; SSE-NEXT:    movdqa %xmm10, %xmm0698; SSE-NEXT:    movdqa %xmm10, %xmm4699; SSE-NEXT:    movdqa %xmm10, %xmm7700; SSE-NEXT:    pand %xmm2, %xmm7701; SSE-NEXT:    movdqa %xmm9, %xmm5702; SSE-NEXT:    movdqa %xmm9, %xmm6703; SSE-NEXT:    movdqa %xmm9, %xmm11704; SSE-NEXT:    pand %xmm2, %xmm11705; SSE-NEXT:    packuswb %xmm7, %xmm11706; SSE-NEXT:    movdqa %xmm3, %xmm7707; SSE-NEXT:    movdqa %xmm3, %xmm8708; SSE-NEXT:    movdqa %xmm3, %xmm12709; SSE-NEXT:    pand %xmm2, %xmm12710; SSE-NEXT:    pand %xmm1, %xmm2711; SSE-NEXT:    packuswb %xmm12, %xmm2712; SSE-NEXT:    packuswb %xmm11, %xmm2713; SSE-NEXT:    pxor %xmm11, %xmm11714; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm11[8],xmm0[9],xmm11[9],xmm0[10],xmm11[10],xmm0[11],xmm11[11],xmm0[12],xmm11[12],xmm0[13],xmm11[13],xmm0[14],xmm11[14],xmm0[15],xmm11[15]715; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill716; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm0[0,2,2,3]717; SSE-NEXT:    pshuflw {{.*#+}} xmm12 = xmm12[0,1,1,3,4,5,6,7]718; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm11[0],xmm4[1],xmm11[1],xmm4[2],xmm11[2],xmm4[3],xmm11[3],xmm4[4],xmm11[4],xmm4[5],xmm11[5],xmm4[6],xmm11[6],xmm4[7],xmm11[7]719; SSE-NEXT:    pshufd {{.*#+}} xmm13 = xmm4[0,2,2,3]720; SSE-NEXT:    pshuflw {{.*#+}} xmm13 = xmm13[0,1,1,3,4,5,6,7]721; SSE-NEXT:    punpckldq {{.*#+}} xmm13 = xmm13[0],xmm12[0],xmm13[1],xmm12[1]722; SSE-NEXT:    punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm11[8],xmm5[9],xmm11[9],xmm5[10],xmm11[10],xmm5[11],xmm11[11],xmm5[12],xmm11[12],xmm5[13],xmm11[13],xmm5[14],xmm11[14],xmm5[15],xmm11[15]723; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm5[0,2,2,3]724; SSE-NEXT:    pshuflw {{.*#+}} xmm12 = xmm12[1,3,2,3,4,5,6,7]725; SSE-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm11[0],xmm6[1],xmm11[1],xmm6[2],xmm11[2],xmm6[3],xmm11[3],xmm6[4],xmm11[4],xmm6[5],xmm11[5],xmm6[6],xmm11[6],xmm6[7],xmm11[7]726; SSE-NEXT:    pshufd {{.*#+}} xmm14 = xmm6[0,2,2,3]727; SSE-NEXT:    pshuflw {{.*#+}} xmm14 = xmm14[1,3,2,3,4,5,6,7]728; SSE-NEXT:    punpckldq {{.*#+}} xmm14 = xmm14[0],xmm12[0],xmm14[1],xmm12[1]729; SSE-NEXT:    packuswb %xmm13, %xmm14730; SSE-NEXT:    punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm11[8],xmm7[9],xmm11[9],xmm7[10],xmm11[10],xmm7[11],xmm11[11],xmm7[12],xmm11[12],xmm7[13],xmm11[13],xmm7[14],xmm11[14],xmm7[15],xmm11[15]731; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm7[0,2,2,3]732; SSE-NEXT:    pshuflw {{.*#+}} xmm12 = xmm12[0,1,1,3,4,5,6,7]733; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm11[0],xmm8[1],xmm11[1],xmm8[2],xmm11[2],xmm8[3],xmm11[3],xmm8[4],xmm11[4],xmm8[5],xmm11[5],xmm8[6],xmm11[6],xmm8[7],xmm11[7]734; SSE-NEXT:    pshufd {{.*#+}} xmm13 = xmm8[0,2,2,3]735; SSE-NEXT:    pshuflw {{.*#+}} xmm15 = xmm13[0,1,1,3,4,5,6,7]736; SSE-NEXT:    punpckldq {{.*#+}} xmm15 = xmm15[0],xmm12[0],xmm15[1],xmm12[1]737; SSE-NEXT:    movdqa %xmm1, %xmm12738; SSE-NEXT:    movdqa %xmm1, %xmm13739; SSE-NEXT:    punpckhbw {{.*#+}} xmm13 = xmm13[8],xmm11[8],xmm13[9],xmm11[9],xmm13[10],xmm11[10],xmm13[11],xmm11[11],xmm13[12],xmm11[12],xmm13[13],xmm11[13],xmm13[14],xmm11[14],xmm13[15],xmm11[15]740; SSE-NEXT:    punpcklbw {{.*#+}} xmm12 = xmm12[0],xmm11[0],xmm12[1],xmm11[1],xmm12[2],xmm11[2],xmm12[3],xmm11[3],xmm12[4],xmm11[4],xmm12[5],xmm11[5],xmm12[6],xmm11[6],xmm12[7],xmm11[7]741; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm13[0,2,2,3]742; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm11[1,3,2,3,4,5,6,7]743; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm12[0,2,2,3]744; SSE-NEXT:    pshuflw {{.*#+}} xmm11 = xmm11[1,3,2,3,4,5,6,7]745; SSE-NEXT:    punpckldq {{.*#+}} xmm11 = xmm11[0],xmm0[0],xmm11[1],xmm0[1]746; SSE-NEXT:    packuswb %xmm15, %xmm11747; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm10[3,1,2,3,4,5,6,7]748; SSE-NEXT:    pshuflw {{.*#+}} xmm9 = xmm9[3,1,2,3,4,5,6,7]749; SSE-NEXT:    shufps {{.*#+}} xmm11 = xmm11[0,3],xmm14[0,3]750; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,6,7]751; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [255,255,255,255,255,255,255,255]752; SSE-NEXT:    pand %xmm10, %xmm0753; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,0]754; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,6,5,4]755; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,7,5,6,7]756; SSE-NEXT:    pand %xmm10, %xmm9757; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[0,2,2,3]758; SSE-NEXT:    pshuflw {{.*#+}} xmm9 = xmm9[1,0,3,2,4,5,6,7]759; SSE-NEXT:    packuswb %xmm0, %xmm9760; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm3[3,1,2,3,4,5,6,7]761; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,2,3,4,5,6,7]762; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,6,7]763; SSE-NEXT:    pand %xmm10, %xmm0764; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,5,6,7]765; SSE-NEXT:    pand %xmm10, %xmm1766; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,0]767; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,6,5,4]768; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]769; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,2,4,5,6,7]770; SSE-NEXT:    packuswb %xmm0, %xmm1771; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,3],xmm9[0,3]772; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload773; SSE-NEXT:    # xmm0 = mem[3,1,2,3]774; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,3,1,4,5,6,7]775; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[3,1,2,3]776; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,3,1,4,5,6,7]777; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]778; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[3,1,2,3]779; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]780; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm6[3,1,2,3]781; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[3,1,2,3,4,5,6,7]782; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1]783; SSE-NEXT:    packuswb %xmm3, %xmm4784; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm7[3,1,2,3]785; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,3,1,4,5,6,7]786; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm8[3,1,2,3]787; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,3,1,4,5,6,7]788; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]789; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm13[3,1,2,3]790; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]791; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm12[3,1,2,3]792; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[3,1,2,3,4,5,6,7]793; SSE-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]794; SSE-NEXT:    packuswb %xmm3, %xmm5795; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,3],xmm4[0,3]796; SSE-NEXT:    movdqa %xmm2, (%rsi)797; SSE-NEXT:    movaps %xmm11, (%rdx)798; SSE-NEXT:    movaps %xmm1, (%rcx)799; SSE-NEXT:    movaps %xmm5, (%r8)800; SSE-NEXT:    retq801;802; AVX-LABEL: load_i8_stride4_vf16:803; AVX:       # %bb.0:804; AVX-NEXT:    vbroadcastss {{.*#+}} xmm2 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]805; AVX-NEXT:    vmovdqa (%rdi), %xmm0806; AVX-NEXT:    vmovdqa 16(%rdi), %xmm1807; AVX-NEXT:    vmovdqa 32(%rdi), %xmm3808; AVX-NEXT:    vmovdqa 48(%rdi), %xmm4809; AVX-NEXT:    vpshufb %xmm2, %xmm4, %xmm5810; AVX-NEXT:    vpshufb %xmm2, %xmm3, %xmm2811; AVX-NEXT:    vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]812; AVX-NEXT:    vmovd {{.*#+}} xmm5 = [0,4,8,12,0,0,0,0,0,0,0,0,0,0,0,0]813; AVX-NEXT:    vpshufb %xmm5, %xmm1, %xmm6814; AVX-NEXT:    vpshufb %xmm5, %xmm0, %xmm5815; AVX-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]816; AVX-NEXT:    vpblendw {{.*#+}} xmm2 = xmm5[0,1,2,3],xmm2[4,5,6,7]817; AVX-NEXT:    vbroadcastss {{.*#+}} xmm5 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]818; AVX-NEXT:    vpshufb %xmm5, %xmm4, %xmm6819; AVX-NEXT:    vpshufb %xmm5, %xmm3, %xmm5820; AVX-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]821; AVX-NEXT:    vmovd {{.*#+}} xmm6 = [1,5,9,13,0,0,0,0,0,0,0,0,0,0,0,0]822; AVX-NEXT:    vpshufb %xmm6, %xmm1, %xmm7823; AVX-NEXT:    vpshufb %xmm6, %xmm0, %xmm6824; AVX-NEXT:    vpunpckldq {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1]825; AVX-NEXT:    vpblendw {{.*#+}} xmm5 = xmm6[0,1,2,3],xmm5[4,5,6,7]826; AVX-NEXT:    vbroadcastss {{.*#+}} xmm6 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]827; AVX-NEXT:    vpshufb %xmm6, %xmm4, %xmm7828; AVX-NEXT:    vpshufb %xmm6, %xmm3, %xmm6829; AVX-NEXT:    vpunpckldq {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1]830; AVX-NEXT:    vmovd {{.*#+}} xmm7 = [2,6,10,14,0,0,0,0,0,0,0,0,0,0,0,0]831; AVX-NEXT:    vpshufb %xmm7, %xmm1, %xmm8832; AVX-NEXT:    vpshufb %xmm7, %xmm0, %xmm7833; AVX-NEXT:    vpunpckldq {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1]834; AVX-NEXT:    vpblendw {{.*#+}} xmm6 = xmm7[0,1,2,3],xmm6[4,5,6,7]835; AVX-NEXT:    vbroadcastss {{.*#+}} xmm7 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]836; AVX-NEXT:    vpshufb %xmm7, %xmm4, %xmm4837; AVX-NEXT:    vpshufb %xmm7, %xmm3, %xmm3838; AVX-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]839; AVX-NEXT:    vmovd {{.*#+}} xmm4 = [3,7,11,15,0,0,0,0,0,0,0,0,0,0,0,0]840; AVX-NEXT:    vpshufb %xmm4, %xmm1, %xmm1841; AVX-NEXT:    vpshufb %xmm4, %xmm0, %xmm0842; AVX-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]843; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm3[4,5,6,7]844; AVX-NEXT:    vmovdqa %xmm2, (%rsi)845; AVX-NEXT:    vmovdqa %xmm5, (%rdx)846; AVX-NEXT:    vmovdqa %xmm6, (%rcx)847; AVX-NEXT:    vmovdqa %xmm0, (%r8)848; AVX-NEXT:    retq849;850; AVX2-LABEL: load_i8_stride4_vf16:851; AVX2:       # %bb.0:852; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm1 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]853; AVX2-NEXT:    vmovdqa (%rdi), %ymm2854; AVX2-NEXT:    vmovdqa 32(%rdi), %ymm0855; AVX2-NEXT:    vpshufb %ymm1, %ymm2, %ymm3856; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm4857; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]858; AVX2-NEXT:    vpshufb %ymm1, %ymm0, %ymm1859; AVX2-NEXT:    vpmovsxbd {{.*#+}} xmm4 = [0,0,0,4]860; AVX2-NEXT:    vpermd %ymm1, %ymm4, %ymm1861; AVX2-NEXT:    vpblendd {{.*#+}} xmm1 = xmm3[0,1],xmm1[2,3]862; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm3 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]863; AVX2-NEXT:    vpshufb %ymm3, %ymm2, %ymm5864; AVX2-NEXT:    vextracti128 $1, %ymm5, %xmm6865; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]866; AVX2-NEXT:    vpshufb %ymm3, %ymm0, %ymm3867; AVX2-NEXT:    vpermd %ymm3, %ymm4, %ymm3868; AVX2-NEXT:    vpblendd {{.*#+}} xmm3 = xmm5[0,1],xmm3[2,3]869; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]870; AVX2-NEXT:    vpshufb %ymm5, %ymm2, %ymm6871; AVX2-NEXT:    vextracti128 $1, %ymm6, %xmm7872; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1]873; AVX2-NEXT:    vpshufb %ymm5, %ymm0, %ymm5874; AVX2-NEXT:    vpermd %ymm5, %ymm4, %ymm5875; AVX2-NEXT:    vpblendd {{.*#+}} xmm5 = xmm6[0,1],xmm5[2,3]876; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm6 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]877; AVX2-NEXT:    vpshufb %ymm6, %ymm2, %ymm2878; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm7879; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1]880; AVX2-NEXT:    vpshufb %ymm6, %ymm0, %ymm0881; AVX2-NEXT:    vpermd %ymm0, %ymm4, %ymm0882; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm2[0,1],xmm0[2,3]883; AVX2-NEXT:    vmovdqa %xmm1, (%rsi)884; AVX2-NEXT:    vmovdqa %xmm3, (%rdx)885; AVX2-NEXT:    vmovdqa %xmm5, (%rcx)886; AVX2-NEXT:    vmovdqa %xmm0, (%r8)887; AVX2-NEXT:    vzeroupper888; AVX2-NEXT:    retq889;890; AVX2-FP-LABEL: load_i8_stride4_vf16:891; AVX2-FP:       # %bb.0:892; AVX2-FP-NEXT:    vpbroadcastd {{.*#+}} ymm1 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]893; AVX2-FP-NEXT:    vmovdqa (%rdi), %ymm2894; AVX2-FP-NEXT:    vmovdqa 32(%rdi), %ymm0895; AVX2-FP-NEXT:    vpshufb %ymm1, %ymm2, %ymm3896; AVX2-FP-NEXT:    vextracti128 $1, %ymm3, %xmm4897; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]898; AVX2-FP-NEXT:    vpshufb %ymm1, %ymm0, %ymm1899; AVX2-FP-NEXT:    vpmovsxbd {{.*#+}} xmm4 = [0,0,0,4]900; AVX2-FP-NEXT:    vpermd %ymm1, %ymm4, %ymm1901; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm1 = xmm3[0,1],xmm1[2,3]902; AVX2-FP-NEXT:    vpbroadcastd {{.*#+}} ymm3 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]903; AVX2-FP-NEXT:    vpshufb %ymm3, %ymm2, %ymm5904; AVX2-FP-NEXT:    vextracti128 $1, %ymm5, %xmm6905; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]906; AVX2-FP-NEXT:    vpshufb %ymm3, %ymm0, %ymm3907; AVX2-FP-NEXT:    vpermd %ymm3, %ymm4, %ymm3908; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm3 = xmm5[0,1],xmm3[2,3]909; AVX2-FP-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]910; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm2, %ymm6911; AVX2-FP-NEXT:    vextracti128 $1, %ymm6, %xmm7912; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1]913; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm0, %ymm5914; AVX2-FP-NEXT:    vpermd %ymm5, %ymm4, %ymm5915; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm5 = xmm6[0,1],xmm5[2,3]916; AVX2-FP-NEXT:    vpbroadcastd {{.*#+}} ymm6 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]917; AVX2-FP-NEXT:    vpshufb %ymm6, %ymm2, %ymm2918; AVX2-FP-NEXT:    vextracti128 $1, %ymm2, %xmm7919; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1]920; AVX2-FP-NEXT:    vpshufb %ymm6, %ymm0, %ymm0921; AVX2-FP-NEXT:    vpermd %ymm0, %ymm4, %ymm0922; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm0 = xmm2[0,1],xmm0[2,3]923; AVX2-FP-NEXT:    vmovdqa %xmm1, (%rsi)924; AVX2-FP-NEXT:    vmovdqa %xmm3, (%rdx)925; AVX2-FP-NEXT:    vmovdqa %xmm5, (%rcx)926; AVX2-FP-NEXT:    vmovdqa %xmm0, (%r8)927; AVX2-FP-NEXT:    vzeroupper928; AVX2-FP-NEXT:    retq929;930; AVX2-FCP-LABEL: load_i8_stride4_vf16:931; AVX2-FCP:       # %bb.0:932; AVX2-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm1 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]933; AVX2-FCP-NEXT:    vmovdqa (%rdi), %ymm2934; AVX2-FCP-NEXT:    vmovdqa 32(%rdi), %ymm0935; AVX2-FCP-NEXT:    vpshufb %ymm1, %ymm2, %ymm3936; AVX2-FCP-NEXT:    vextracti128 $1, %ymm3, %xmm4937; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]938; AVX2-FCP-NEXT:    vpshufb %ymm1, %ymm0, %ymm1939; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} xmm4 = [0,0,0,4]940; AVX2-FCP-NEXT:    vpermd %ymm1, %ymm4, %ymm1941; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm1 = xmm3[0,1],xmm1[2,3]942; AVX2-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm3 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]943; AVX2-FCP-NEXT:    vpshufb %ymm3, %ymm2, %ymm5944; AVX2-FCP-NEXT:    vextracti128 $1, %ymm5, %xmm6945; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]946; AVX2-FCP-NEXT:    vpshufb %ymm3, %ymm0, %ymm3947; AVX2-FCP-NEXT:    vpermd %ymm3, %ymm4, %ymm3948; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm3 = xmm5[0,1],xmm3[2,3]949; AVX2-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]950; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm2, %ymm6951; AVX2-FCP-NEXT:    vextracti128 $1, %ymm6, %xmm7952; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1]953; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm0, %ymm5954; AVX2-FCP-NEXT:    vpermd %ymm5, %ymm4, %ymm5955; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm5 = xmm6[0,1],xmm5[2,3]956; AVX2-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm6 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]957; AVX2-FCP-NEXT:    vpshufb %ymm6, %ymm2, %ymm2958; AVX2-FCP-NEXT:    vextracti128 $1, %ymm2, %xmm7959; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1]960; AVX2-FCP-NEXT:    vpshufb %ymm6, %ymm0, %ymm0961; AVX2-FCP-NEXT:    vpermd %ymm0, %ymm4, %ymm0962; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm0 = xmm2[0,1],xmm0[2,3]963; AVX2-FCP-NEXT:    vmovdqa %xmm1, (%rsi)964; AVX2-FCP-NEXT:    vmovdqa %xmm3, (%rdx)965; AVX2-FCP-NEXT:    vmovdqa %xmm5, (%rcx)966; AVX2-FCP-NEXT:    vmovdqa %xmm0, (%r8)967; AVX2-FCP-NEXT:    vzeroupper968; AVX2-FCP-NEXT:    retq969;970; AVX512-LABEL: load_i8_stride4_vf16:971; AVX512:       # %bb.0:972; AVX512-NEXT:    vmovdqa64 (%rdi), %zmm0973; AVX512-NEXT:    vpsrld $8, %zmm0, %zmm1974; AVX512-NEXT:    vpsrld $16, %zmm0, %zmm2975; AVX512-NEXT:    vpsrld $24, %zmm0, %zmm3976; AVX512-NEXT:    vpmovdb %zmm0, (%rsi)977; AVX512-NEXT:    vpmovdb %zmm1, (%rdx)978; AVX512-NEXT:    vpmovdb %zmm2, (%rcx)979; AVX512-NEXT:    vpmovdb %zmm3, (%r8)980; AVX512-NEXT:    vzeroupper981; AVX512-NEXT:    retq982;983; AVX512-FCP-LABEL: load_i8_stride4_vf16:984; AVX512-FCP:       # %bb.0:985; AVX512-FCP-NEXT:    vmovdqa64 (%rdi), %zmm0986; AVX512-FCP-NEXT:    vpsrld $8, %zmm0, %zmm1987; AVX512-FCP-NEXT:    vpsrld $16, %zmm0, %zmm2988; AVX512-FCP-NEXT:    vpsrld $24, %zmm0, %zmm3989; AVX512-FCP-NEXT:    vpmovdb %zmm0, (%rsi)990; AVX512-FCP-NEXT:    vpmovdb %zmm1, (%rdx)991; AVX512-FCP-NEXT:    vpmovdb %zmm2, (%rcx)992; AVX512-FCP-NEXT:    vpmovdb %zmm3, (%r8)993; AVX512-FCP-NEXT:    vzeroupper994; AVX512-FCP-NEXT:    retq995;996; AVX512DQ-LABEL: load_i8_stride4_vf16:997; AVX512DQ:       # %bb.0:998; AVX512DQ-NEXT:    vmovdqa64 (%rdi), %zmm0999; AVX512DQ-NEXT:    vpsrld $8, %zmm0, %zmm11000; AVX512DQ-NEXT:    vpsrld $16, %zmm0, %zmm21001; AVX512DQ-NEXT:    vpsrld $24, %zmm0, %zmm31002; AVX512DQ-NEXT:    vpmovdb %zmm0, (%rsi)1003; AVX512DQ-NEXT:    vpmovdb %zmm1, (%rdx)1004; AVX512DQ-NEXT:    vpmovdb %zmm2, (%rcx)1005; AVX512DQ-NEXT:    vpmovdb %zmm3, (%r8)1006; AVX512DQ-NEXT:    vzeroupper1007; AVX512DQ-NEXT:    retq1008;1009; AVX512DQ-FCP-LABEL: load_i8_stride4_vf16:1010; AVX512DQ-FCP:       # %bb.0:1011; AVX512DQ-FCP-NEXT:    vmovdqa64 (%rdi), %zmm01012; AVX512DQ-FCP-NEXT:    vpsrld $8, %zmm0, %zmm11013; AVX512DQ-FCP-NEXT:    vpsrld $16, %zmm0, %zmm21014; AVX512DQ-FCP-NEXT:    vpsrld $24, %zmm0, %zmm31015; AVX512DQ-FCP-NEXT:    vpmovdb %zmm0, (%rsi)1016; AVX512DQ-FCP-NEXT:    vpmovdb %zmm1, (%rdx)1017; AVX512DQ-FCP-NEXT:    vpmovdb %zmm2, (%rcx)1018; AVX512DQ-FCP-NEXT:    vpmovdb %zmm3, (%r8)1019; AVX512DQ-FCP-NEXT:    vzeroupper1020; AVX512DQ-FCP-NEXT:    retq1021;1022; AVX512BW-LABEL: load_i8_stride4_vf16:1023; AVX512BW:       # %bb.0:1024; AVX512BW-NEXT:    vmovdqa64 (%rdi), %zmm01025; AVX512BW-NEXT:    vpsrld $8, %zmm0, %zmm11026; AVX512BW-NEXT:    vpsrld $16, %zmm0, %zmm21027; AVX512BW-NEXT:    vpsrld $24, %zmm0, %zmm31028; AVX512BW-NEXT:    vpmovdb %zmm0, (%rsi)1029; AVX512BW-NEXT:    vpmovdb %zmm1, (%rdx)1030; AVX512BW-NEXT:    vpmovdb %zmm2, (%rcx)1031; AVX512BW-NEXT:    vpmovdb %zmm3, (%r8)1032; AVX512BW-NEXT:    vzeroupper1033; AVX512BW-NEXT:    retq1034;1035; AVX512BW-FCP-LABEL: load_i8_stride4_vf16:1036; AVX512BW-FCP:       # %bb.0:1037; AVX512BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm01038; AVX512BW-FCP-NEXT:    vpsrld $8, %zmm0, %zmm11039; AVX512BW-FCP-NEXT:    vpsrld $16, %zmm0, %zmm21040; AVX512BW-FCP-NEXT:    vpsrld $24, %zmm0, %zmm31041; AVX512BW-FCP-NEXT:    vpmovdb %zmm0, (%rsi)1042; AVX512BW-FCP-NEXT:    vpmovdb %zmm1, (%rdx)1043; AVX512BW-FCP-NEXT:    vpmovdb %zmm2, (%rcx)1044; AVX512BW-FCP-NEXT:    vpmovdb %zmm3, (%r8)1045; AVX512BW-FCP-NEXT:    vzeroupper1046; AVX512BW-FCP-NEXT:    retq1047;1048; AVX512DQ-BW-LABEL: load_i8_stride4_vf16:1049; AVX512DQ-BW:       # %bb.0:1050; AVX512DQ-BW-NEXT:    vmovdqa64 (%rdi), %zmm01051; AVX512DQ-BW-NEXT:    vpsrld $8, %zmm0, %zmm11052; AVX512DQ-BW-NEXT:    vpsrld $16, %zmm0, %zmm21053; AVX512DQ-BW-NEXT:    vpsrld $24, %zmm0, %zmm31054; AVX512DQ-BW-NEXT:    vpmovdb %zmm0, (%rsi)1055; AVX512DQ-BW-NEXT:    vpmovdb %zmm1, (%rdx)1056; AVX512DQ-BW-NEXT:    vpmovdb %zmm2, (%rcx)1057; AVX512DQ-BW-NEXT:    vpmovdb %zmm3, (%r8)1058; AVX512DQ-BW-NEXT:    vzeroupper1059; AVX512DQ-BW-NEXT:    retq1060;1061; AVX512DQ-BW-FCP-LABEL: load_i8_stride4_vf16:1062; AVX512DQ-BW-FCP:       # %bb.0:1063; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm01064; AVX512DQ-BW-FCP-NEXT:    vpsrld $8, %zmm0, %zmm11065; AVX512DQ-BW-FCP-NEXT:    vpsrld $16, %zmm0, %zmm21066; AVX512DQ-BW-FCP-NEXT:    vpsrld $24, %zmm0, %zmm31067; AVX512DQ-BW-FCP-NEXT:    vpmovdb %zmm0, (%rsi)1068; AVX512DQ-BW-FCP-NEXT:    vpmovdb %zmm1, (%rdx)1069; AVX512DQ-BW-FCP-NEXT:    vpmovdb %zmm2, (%rcx)1070; AVX512DQ-BW-FCP-NEXT:    vpmovdb %zmm3, (%r8)1071; AVX512DQ-BW-FCP-NEXT:    vzeroupper1072; AVX512DQ-BW-FCP-NEXT:    retq1073  %wide.vec = load <64 x i8>, ptr %in.vec, align 641074  %strided.vec0 = shufflevector <64 x i8> %wide.vec, <64 x i8> poison, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28, i32 32, i32 36, i32 40, i32 44, i32 48, i32 52, i32 56, i32 60>1075  %strided.vec1 = shufflevector <64 x i8> %wide.vec, <64 x i8> poison, <16 x i32> <i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 25, i32 29, i32 33, i32 37, i32 41, i32 45, i32 49, i32 53, i32 57, i32 61>1076  %strided.vec2 = shufflevector <64 x i8> %wide.vec, <64 x i8> poison, <16 x i32> <i32 2, i32 6, i32 10, i32 14, i32 18, i32 22, i32 26, i32 30, i32 34, i32 38, i32 42, i32 46, i32 50, i32 54, i32 58, i32 62>1077  %strided.vec3 = shufflevector <64 x i8> %wide.vec, <64 x i8> poison, <16 x i32> <i32 3, i32 7, i32 11, i32 15, i32 19, i32 23, i32 27, i32 31, i32 35, i32 39, i32 43, i32 47, i32 51, i32 55, i32 59, i32 63>1078  store <16 x i8> %strided.vec0, ptr %out.vec0, align 641079  store <16 x i8> %strided.vec1, ptr %out.vec1, align 641080  store <16 x i8> %strided.vec2, ptr %out.vec2, align 641081  store <16 x i8> %strided.vec3, ptr %out.vec3, align 641082  ret void1083}1084 1085define void @load_i8_stride4_vf32(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {1086; SSE-LABEL: load_i8_stride4_vf32:1087; SSE:       # %bb.0:1088; SSE-NEXT:    subq $136, %rsp1089; SSE-NEXT:    movdqa 64(%rdi), %xmm41090; SSE-NEXT:    movdqa 80(%rdi), %xmm91091; SSE-NEXT:    movdqa 96(%rdi), %xmm111092; SSE-NEXT:    movdqa 112(%rdi), %xmm121093; SSE-NEXT:    movdqa (%rdi), %xmm131094; SSE-NEXT:    movdqa 16(%rdi), %xmm141095; SSE-NEXT:    movdqa 32(%rdi), %xmm21096; SSE-NEXT:    movdqa 48(%rdi), %xmm101097; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [255,0,255,0,255,0,255,0]1098; SSE-NEXT:    movdqa %xmm10, %xmm31099; SSE-NEXT:    movdqa %xmm10, %xmm51100; SSE-NEXT:    movdqa %xmm10, %xmm01101; SSE-NEXT:    pand %xmm8, %xmm01102; SSE-NEXT:    movdqa %xmm2, %xmm61103; SSE-NEXT:    movdqa %xmm2, %xmm11104; SSE-NEXT:    movdqa %xmm2, %xmm151105; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1106; SSE-NEXT:    pand %xmm8, %xmm11107; SSE-NEXT:    packuswb %xmm0, %xmm11108; SSE-NEXT:    movdqa %xmm14, %xmm01109; SSE-NEXT:    pand %xmm8, %xmm01110; SSE-NEXT:    movdqa %xmm13, %xmm71111; SSE-NEXT:    pand %xmm8, %xmm71112; SSE-NEXT:    packuswb %xmm0, %xmm71113; SSE-NEXT:    packuswb %xmm1, %xmm71114; SSE-NEXT:    movdqa %xmm12, %xmm01115; SSE-NEXT:    pand %xmm8, %xmm01116; SSE-NEXT:    movdqa %xmm11, %xmm11117; SSE-NEXT:    pand %xmm8, %xmm11118; SSE-NEXT:    packuswb %xmm0, %xmm11119; SSE-NEXT:    movdqa %xmm9, %xmm01120; SSE-NEXT:    pand %xmm8, %xmm01121; SSE-NEXT:    pand %xmm4, %xmm81122; SSE-NEXT:    packuswb %xmm0, %xmm81123; SSE-NEXT:    packuswb %xmm1, %xmm81124; SSE-NEXT:    pxor %xmm2, %xmm21125; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm2[8],xmm3[9],xmm2[9],xmm3[10],xmm2[10],xmm3[11],xmm2[11],xmm3[12],xmm2[12],xmm3[13],xmm2[13],xmm3[14],xmm2[14],xmm3[15],xmm2[15]1126; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1127; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,2,2,3]1128; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,1,3,4,5,6,7]1129; SSE-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3],xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]1130; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1131; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm5[0,2,2,3]1132; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,3,4,5,6,7]1133; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]1134; SSE-NEXT:    punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm2[8],xmm6[9],xmm2[9],xmm6[10],xmm2[10],xmm6[11],xmm2[11],xmm6[12],xmm2[12],xmm6[13],xmm2[13],xmm6[14],xmm2[14],xmm6[15],xmm2[15]1135; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1136; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm6[0,2,2,3]1137; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,3,2,3,4,5,6,7]1138; SSE-NEXT:    movdqa %xmm15, %xmm11139; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]1140; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1141; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[0,2,2,3]1142; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[1,3,2,3,4,5,6,7]1143; SSE-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]1144; SSE-NEXT:    packuswb %xmm3, %xmm51145; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1146; SSE-NEXT:    movdqa %xmm14, %xmm01147; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm2[8],xmm0[9],xmm2[9],xmm0[10],xmm2[10],xmm0[11],xmm2[11],xmm0[12],xmm2[12],xmm0[13],xmm2[13],xmm0[14],xmm2[14],xmm0[15],xmm2[15]1148; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1149; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]1150; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,1,3,4,5,6,7]1151; SSE-NEXT:    movdqa %xmm14, %xmm11152; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]1153; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1154; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[0,2,2,3]1155; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,3,4,5,6,7]1156; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]1157; SSE-NEXT:    movdqa %xmm13, %xmm141158; SSE-NEXT:    movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1159; SSE-NEXT:    movdqa %xmm13, %xmm01160; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm2[8],xmm0[9],xmm2[9],xmm0[10],xmm2[10],xmm0[11],xmm2[11],xmm0[12],xmm2[12],xmm0[13],xmm2[13],xmm0[14],xmm2[14],xmm0[15],xmm2[15]1161; SSE-NEXT:    movdqa %xmm0, (%rsp) # 16-byte Spill1162; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]1163; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,3,2,3,4,5,6,7]1164; SSE-NEXT:    punpcklbw {{.*#+}} xmm14 = xmm14[0],xmm2[0],xmm14[1],xmm2[1],xmm14[2],xmm2[2],xmm14[3],xmm2[3],xmm14[4],xmm2[4],xmm14[5],xmm2[5],xmm14[6],xmm2[6],xmm14[7],xmm2[7]1165; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm14[0,2,2,3]1166; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm6[1,3,2,3,4,5,6,7]1167; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]1168; SSE-NEXT:    packuswb %xmm3, %xmm11169; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,3],xmm5[0,3]1170; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1171; SSE-NEXT:    movdqa %xmm12, %xmm151172; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1173; SSE-NEXT:    movdqa %xmm12, %xmm01174; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm2[8],xmm0[9],xmm2[9],xmm0[10],xmm2[10],xmm0[11],xmm2[11],xmm0[12],xmm2[12],xmm0[13],xmm2[13],xmm0[14],xmm2[14],xmm0[15],xmm2[15]1175; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1176; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]1177; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,1,3,4,5,6,7]1178; SSE-NEXT:    punpcklbw {{.*#+}} xmm15 = xmm15[0],xmm2[0],xmm15[1],xmm2[1],xmm15[2],xmm2[2],xmm15[3],xmm2[3],xmm15[4],xmm2[4],xmm15[5],xmm2[5],xmm15[6],xmm2[6],xmm15[7],xmm2[7]1179; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm15[0,2,2,3]1180; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,3,4,5,6,7]1181; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]1182; SSE-NEXT:    movdqa %xmm11, %xmm121183; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1184; SSE-NEXT:    movdqa %xmm11, %xmm131185; SSE-NEXT:    punpckhbw {{.*#+}} xmm13 = xmm13[8],xmm2[8],xmm13[9],xmm2[9],xmm13[10],xmm2[10],xmm13[11],xmm2[11],xmm13[12],xmm2[12],xmm13[13],xmm2[13],xmm13[14],xmm2[14],xmm13[15],xmm2[15]1186; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm13[0,2,2,3]1187; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm0[1,3,2,3,4,5,6,7]1188; SSE-NEXT:    punpcklbw {{.*#+}} xmm12 = xmm12[0],xmm2[0],xmm12[1],xmm2[1],xmm12[2],xmm2[2],xmm12[3],xmm2[3],xmm12[4],xmm2[4],xmm12[5],xmm2[5],xmm12[6],xmm2[6],xmm12[7],xmm2[7]1189; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm12[0,2,2,3]1190; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm5[1,3,2,3,4,5,6,7]1191; SSE-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1]1192; SSE-NEXT:    packuswb %xmm3, %xmm01193; SSE-NEXT:    movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1194; SSE-NEXT:    movdqa %xmm9, %xmm111195; SSE-NEXT:    punpckhbw {{.*#+}} xmm11 = xmm11[8],xmm2[8],xmm11[9],xmm2[9],xmm11[10],xmm2[10],xmm11[11],xmm2[11],xmm11[12],xmm2[12],xmm11[13],xmm2[13],xmm11[14],xmm2[14],xmm11[15],xmm2[15]1196; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm11[0,2,2,3]1197; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,3,4,5,6,7]1198; SSE-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm2[0],xmm9[1],xmm2[1],xmm9[2],xmm2[2],xmm9[3],xmm2[3],xmm9[4],xmm2[4],xmm9[5],xmm2[5],xmm9[6],xmm2[6],xmm9[7],xmm2[7]1199; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[0,2,2,3]1200; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm5[0,1,1,3,4,5,6,7]1201; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]1202; SSE-NEXT:    movdqa %xmm4, %xmm51203; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1204; SSE-NEXT:    movdqa %xmm4, %xmm61205; SSE-NEXT:    punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm2[8],xmm6[9],xmm2[9],xmm6[10],xmm2[10],xmm6[11],xmm2[11],xmm6[12],xmm2[12],xmm6[13],xmm2[13],xmm6[14],xmm2[14],xmm6[15],xmm2[15]1206; SSE-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3],xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]1207; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm6[0,2,2,3]1208; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[1,3,2,3,4,5,6,7]1209; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm5[0,2,2,3]1210; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm3[1,3,2,3,4,5,6,7]1211; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]1212; SSE-NEXT:    packuswb %xmm1, %xmm41213; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,3],xmm0[0,3]1214; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm10[3,1,2,3,4,5,6,7]1215; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1216; SSE-NEXT:    # xmm1 = mem[3,1,2,3,4,5,6,7]1217; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm0[0,1,2,3,7,5,6,7]1218; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255]1219; SSE-NEXT:    pand %xmm3, %xmm21220; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,0]1221; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,6,5,4]1222; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,5,6,7]1223; SSE-NEXT:    pand %xmm3, %xmm11224; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]1225; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,2,4,5,6,7]1226; SSE-NEXT:    packuswb %xmm2, %xmm11227; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload1228; SSE-NEXT:    # xmm2 = mem[3,1,2,3,4,5,6,7]1229; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload1230; SSE-NEXT:    # xmm10 = mem[3,1,2,3,4,5,6,7]1231; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,5,6,7]1232; SSE-NEXT:    pand %xmm3, %xmm21233; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,0]1234; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,6,5,4]1235; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,7,5,6,7]1236; SSE-NEXT:    pand %xmm3, %xmm101237; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,2,2,3]1238; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm10[1,0,3,2,4,5,6,7]1239; SSE-NEXT:    packuswb %xmm2, %xmm101240; SSE-NEXT:    shufps {{.*#+}} xmm10 = xmm10[0,3],xmm1[0,3]1241; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1242; SSE-NEXT:    # xmm1 = mem[3,1,2,3,4,5,6,7]1243; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload1244; SSE-NEXT:    # xmm2 = mem[3,1,2,3,4,5,6,7]1245; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,5,6,7]1246; SSE-NEXT:    pand %xmm3, %xmm11247; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]1248; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,6,5,4]1249; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,5,6,7]1250; SSE-NEXT:    pand %xmm3, %xmm21251; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]1252; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[1,0,3,2,4,5,6,7]1253; SSE-NEXT:    packuswb %xmm1, %xmm21254; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1255; SSE-NEXT:    # xmm1 = mem[3,1,2,3,4,5,6,7]1256; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload1257; SSE-NEXT:    # xmm0 = mem[3,1,2,3,4,5,6,7]1258; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,5,6,7]1259; SSE-NEXT:    pand %xmm3, %xmm11260; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,6,7]1261; SSE-NEXT:    pand %xmm3, %xmm01262; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]1263; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,6,5,4]1264; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]1265; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,0,3,2,4,5,6,7]1266; SSE-NEXT:    packuswb %xmm1, %xmm01267; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,3],xmm2[0,3]1268; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1269; SSE-NEXT:    # xmm1 = mem[3,1,2,3]1270; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,3,1,4,5,6,7]1271; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload1272; SSE-NEXT:    # xmm2 = mem[3,1,2,3]1273; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,3,1,4,5,6,7]1274; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1275; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1276; SSE-NEXT:    # xmm1 = mem[3,1,2,3]1277; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,2,3,4,5,6,7]1278; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload1279; SSE-NEXT:    # xmm3 = mem[3,1,2,3]1280; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]1281; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]1282; SSE-NEXT:    packuswb %xmm2, %xmm31283; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1284; SSE-NEXT:    # xmm1 = mem[3,1,2,3]1285; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,3,1,4,5,6,7]1286; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload1287; SSE-NEXT:    # xmm2 = mem[3,1,2,3]1288; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,3,1,4,5,6,7]1289; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1290; SSE-NEXT:    pshufd $231, (%rsp), %xmm1 # 16-byte Folded Reload1291; SSE-NEXT:    # xmm1 = mem[3,1,2,3]1292; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,2,3,4,5,6,7]1293; SSE-NEXT:    pshufd {{.*#+}} xmm14 = xmm14[3,1,2,3]1294; SSE-NEXT:    pshuflw {{.*#+}} xmm14 = xmm14[3,1,2,3,4,5,6,7]1295; SSE-NEXT:    punpckldq {{.*#+}} xmm14 = xmm14[0],xmm1[0],xmm14[1],xmm1[1]1296; SSE-NEXT:    packuswb %xmm2, %xmm141297; SSE-NEXT:    shufps {{.*#+}} xmm14 = xmm14[0,3],xmm3[0,3]1298; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload1299; SSE-NEXT:    # xmm1 = mem[3,1,2,3]1300; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,3,1,4,5,6,7]1301; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm15[3,1,2,3]1302; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,3,1,4,5,6,7]1303; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1304; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm13[3,1,2,3]1305; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,2,3,4,5,6,7]1306; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm12[3,1,2,3]1307; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]1308; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]1309; SSE-NEXT:    packuswb %xmm2, %xmm31310; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm11[3,1,2,3]1311; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,3,1,4,5,6,7]1312; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm9[3,1,2,3]1313; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,3,1,4,5,6,7]1314; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1315; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm6[3,1,2,3]1316; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,2,3,4,5,6,7]1317; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[3,1,2,3]1318; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[3,1,2,3,4,5,6,7]1319; SSE-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1]1320; SSE-NEXT:    packuswb %xmm2, %xmm51321; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,3],xmm3[0,3]1322; SSE-NEXT:    movdqa %xmm8, 16(%rsi)1323; SSE-NEXT:    movdqa %xmm7, (%rsi)1324; SSE-NEXT:    movaps %xmm4, 16(%rdx)1325; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload1326; SSE-NEXT:    movaps %xmm1, (%rdx)1327; SSE-NEXT:    movaps %xmm0, 16(%rcx)1328; SSE-NEXT:    movaps %xmm10, (%rcx)1329; SSE-NEXT:    movaps %xmm5, 16(%r8)1330; SSE-NEXT:    movaps %xmm14, (%r8)1331; SSE-NEXT:    addq $136, %rsp1332; SSE-NEXT:    retq1333;1334; AVX-LABEL: load_i8_stride4_vf32:1335; AVX:       # %bb.0:1336; AVX-NEXT:    vbroadcastss {{.*#+}} xmm8 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]1337; AVX-NEXT:    vmovdqa 112(%rdi), %xmm01338; AVX-NEXT:    vpshufb %xmm8, %xmm0, %xmm11339; AVX-NEXT:    vmovdqa 96(%rdi), %xmm21340; AVX-NEXT:    vpshufb %xmm8, %xmm2, %xmm31341; AVX-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]1342; AVX-NEXT:    vmovd {{.*#+}} xmm9 = [0,4,8,12,0,0,0,0,0,0,0,0,0,0,0,0]1343; AVX-NEXT:    vmovdqa 80(%rdi), %xmm31344; AVX-NEXT:    vpshufb %xmm9, %xmm3, %xmm41345; AVX-NEXT:    vmovdqa 64(%rdi), %xmm51346; AVX-NEXT:    vpshufb %xmm9, %xmm5, %xmm61347; AVX-NEXT:    vpunpckldq {{.*#+}} xmm4 = xmm6[0],xmm4[0],xmm6[1],xmm4[1]1348; AVX-NEXT:    vpblendw {{.*#+}} xmm1 = xmm4[0,1,2,3],xmm1[4,5,6,7]1349; AVX-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm101350; AVX-NEXT:    vmovdqa (%rdi), %xmm11351; AVX-NEXT:    vmovdqa 16(%rdi), %xmm41352; AVX-NEXT:    vmovdqa 32(%rdi), %xmm61353; AVX-NEXT:    vmovdqa 48(%rdi), %xmm71354; AVX-NEXT:    vpshufb %xmm8, %xmm7, %xmm111355; AVX-NEXT:    vpshufb %xmm8, %xmm6, %xmm81356; AVX-NEXT:    vpunpckldq {{.*#+}} xmm8 = xmm8[0],xmm11[0],xmm8[1],xmm11[1]1357; AVX-NEXT:    vpshufb %xmm9, %xmm4, %xmm111358; AVX-NEXT:    vpshufb %xmm9, %xmm1, %xmm91359; AVX-NEXT:    vpunpckldq {{.*#+}} xmm9 = xmm9[0],xmm11[0],xmm9[1],xmm11[1]1360; AVX-NEXT:    vpblendw {{.*#+}} xmm8 = xmm9[0,1,2,3],xmm8[4,5,6,7]1361; AVX-NEXT:    vblendps {{.*#+}} ymm8 = ymm8[0,1,2,3],ymm10[4,5,6,7]1362; AVX-NEXT:    vbroadcastss {{.*#+}} xmm9 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]1363; AVX-NEXT:    vpshufb %xmm9, %xmm0, %xmm101364; AVX-NEXT:    vpshufb %xmm9, %xmm2, %xmm111365; AVX-NEXT:    vpunpckldq {{.*#+}} xmm10 = xmm11[0],xmm10[0],xmm11[1],xmm10[1]1366; AVX-NEXT:    vmovd {{.*#+}} xmm11 = [1,5,9,13,0,0,0,0,0,0,0,0,0,0,0,0]1367; AVX-NEXT:    vpshufb %xmm11, %xmm3, %xmm121368; AVX-NEXT:    vpshufb %xmm11, %xmm5, %xmm131369; AVX-NEXT:    vpunpckldq {{.*#+}} xmm12 = xmm13[0],xmm12[0],xmm13[1],xmm12[1]1370; AVX-NEXT:    vpblendw {{.*#+}} xmm10 = xmm12[0,1,2,3],xmm10[4,5,6,7]1371; AVX-NEXT:    vinsertf128 $1, %xmm10, %ymm0, %ymm101372; AVX-NEXT:    vpshufb %xmm9, %xmm7, %xmm121373; AVX-NEXT:    vpshufb %xmm9, %xmm6, %xmm91374; AVX-NEXT:    vpunpckldq {{.*#+}} xmm9 = xmm9[0],xmm12[0],xmm9[1],xmm12[1]1375; AVX-NEXT:    vpshufb %xmm11, %xmm4, %xmm121376; AVX-NEXT:    vpshufb %xmm11, %xmm1, %xmm111377; AVX-NEXT:    vpunpckldq {{.*#+}} xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1]1378; AVX-NEXT:    vpblendw {{.*#+}} xmm9 = xmm11[0,1,2,3],xmm9[4,5,6,7]1379; AVX-NEXT:    vblendps {{.*#+}} ymm9 = ymm9[0,1,2,3],ymm10[4,5,6,7]1380; AVX-NEXT:    vbroadcastss {{.*#+}} xmm10 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]1381; AVX-NEXT:    vpshufb %xmm10, %xmm0, %xmm111382; AVX-NEXT:    vpshufb %xmm10, %xmm2, %xmm121383; AVX-NEXT:    vpunpckldq {{.*#+}} xmm11 = xmm12[0],xmm11[0],xmm12[1],xmm11[1]1384; AVX-NEXT:    vmovd {{.*#+}} xmm12 = [2,6,10,14,0,0,0,0,0,0,0,0,0,0,0,0]1385; AVX-NEXT:    vpshufb %xmm12, %xmm3, %xmm131386; AVX-NEXT:    vpshufb %xmm12, %xmm5, %xmm141387; AVX-NEXT:    vpunpckldq {{.*#+}} xmm13 = xmm14[0],xmm13[0],xmm14[1],xmm13[1]1388; AVX-NEXT:    vpblendw {{.*#+}} xmm11 = xmm13[0,1,2,3],xmm11[4,5,6,7]1389; AVX-NEXT:    vinsertf128 $1, %xmm11, %ymm0, %ymm111390; AVX-NEXT:    vpshufb %xmm10, %xmm7, %xmm131391; AVX-NEXT:    vpshufb %xmm10, %xmm6, %xmm101392; AVX-NEXT:    vpunpckldq {{.*#+}} xmm10 = xmm10[0],xmm13[0],xmm10[1],xmm13[1]1393; AVX-NEXT:    vpshufb %xmm12, %xmm4, %xmm131394; AVX-NEXT:    vpshufb %xmm12, %xmm1, %xmm121395; AVX-NEXT:    vpunpckldq {{.*#+}} xmm12 = xmm12[0],xmm13[0],xmm12[1],xmm13[1]1396; AVX-NEXT:    vpblendw {{.*#+}} xmm10 = xmm12[0,1,2,3],xmm10[4,5,6,7]1397; AVX-NEXT:    vblendps {{.*#+}} ymm10 = ymm10[0,1,2,3],ymm11[4,5,6,7]1398; AVX-NEXT:    vbroadcastss {{.*#+}} xmm11 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]1399; AVX-NEXT:    vpshufb %xmm11, %xmm0, %xmm01400; AVX-NEXT:    vpshufb %xmm11, %xmm2, %xmm21401; AVX-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]1402; AVX-NEXT:    vmovd {{.*#+}} xmm2 = [3,7,11,15,0,0,0,0,0,0,0,0,0,0,0,0]1403; AVX-NEXT:    vpshufb %xmm2, %xmm3, %xmm31404; AVX-NEXT:    vpshufb %xmm2, %xmm5, %xmm51405; AVX-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]1406; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm3[0,1,2,3],xmm0[4,5,6,7]1407; AVX-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm01408; AVX-NEXT:    vpshufb %xmm11, %xmm7, %xmm31409; AVX-NEXT:    vpshufb %xmm11, %xmm6, %xmm51410; AVX-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]1411; AVX-NEXT:    vpshufb %xmm2, %xmm4, %xmm41412; AVX-NEXT:    vpshufb %xmm2, %xmm1, %xmm11413; AVX-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]1414; AVX-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3],xmm3[4,5,6,7]1415; AVX-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]1416; AVX-NEXT:    vmovaps %ymm8, (%rsi)1417; AVX-NEXT:    vmovaps %ymm9, (%rdx)1418; AVX-NEXT:    vmovaps %ymm10, (%rcx)1419; AVX-NEXT:    vmovaps %ymm0, (%r8)1420; AVX-NEXT:    vzeroupper1421; AVX-NEXT:    retq1422;1423; AVX2-LABEL: load_i8_stride4_vf32:1424; AVX2:       # %bb.0:1425; AVX2-NEXT:    vmovdqa (%rdi), %ymm11426; AVX2-NEXT:    vmovdqa 32(%rdi), %ymm01427; AVX2-NEXT:    vmovdqa 64(%rdi), %ymm31428; AVX2-NEXT:    vmovdqa 96(%rdi), %ymm41429; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]1430; AVX2-NEXT:    vpshufb %ymm5, %ymm4, %ymm61431; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [0,4,0,4,0,4,0,4]1432; AVX2-NEXT:    vpermd %ymm6, %ymm2, %ymm61433; AVX2-NEXT:    vpshufb %ymm5, %ymm3, %ymm71434; AVX2-NEXT:    vpermd %ymm7, %ymm2, %ymm71435; AVX2-NEXT:    vpblendd {{.*#+}} ymm6 = ymm7[0,1,2,3,4,5],ymm6[6,7]1436; AVX2-NEXT:    vpshufb %ymm5, %ymm1, %ymm71437; AVX2-NEXT:    vextracti128 $1, %ymm7, %xmm81438; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1]1439; AVX2-NEXT:    vpshufb %ymm5, %ymm0, %ymm51440; AVX2-NEXT:    vpermd %ymm5, %ymm2, %ymm51441; AVX2-NEXT:    vpblendd {{.*#+}} xmm5 = xmm7[0,1],xmm5[2,3]1442; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm6[4,5,6,7]1443; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm6 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]1444; AVX2-NEXT:    vpshufb %ymm6, %ymm4, %ymm71445; AVX2-NEXT:    vpermd %ymm7, %ymm2, %ymm71446; AVX2-NEXT:    vpshufb %ymm6, %ymm3, %ymm81447; AVX2-NEXT:    vpermd %ymm8, %ymm2, %ymm81448; AVX2-NEXT:    vpblendd {{.*#+}} ymm7 = ymm8[0,1,2,3,4,5],ymm7[6,7]1449; AVX2-NEXT:    vpshufb %ymm6, %ymm1, %ymm81450; AVX2-NEXT:    vextracti128 $1, %ymm8, %xmm91451; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm8 = xmm8[0],xmm9[0],xmm8[1],xmm9[1]1452; AVX2-NEXT:    vpshufb %ymm6, %ymm0, %ymm61453; AVX2-NEXT:    vpermd %ymm6, %ymm2, %ymm61454; AVX2-NEXT:    vpblendd {{.*#+}} xmm6 = xmm8[0,1],xmm6[2,3]1455; AVX2-NEXT:    vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm7[4,5,6,7]1456; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm7 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]1457; AVX2-NEXT:    vpshufb %ymm7, %ymm4, %ymm81458; AVX2-NEXT:    vpermd %ymm8, %ymm2, %ymm81459; AVX2-NEXT:    vpshufb %ymm7, %ymm3, %ymm91460; AVX2-NEXT:    vpermd %ymm9, %ymm2, %ymm91461; AVX2-NEXT:    vpblendd {{.*#+}} ymm8 = ymm9[0,1,2,3,4,5],ymm8[6,7]1462; AVX2-NEXT:    vpshufb %ymm7, %ymm1, %ymm91463; AVX2-NEXT:    vextracti128 $1, %ymm9, %xmm101464; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm9 = xmm9[0],xmm10[0],xmm9[1],xmm10[1]1465; AVX2-NEXT:    vpshufb %ymm7, %ymm0, %ymm71466; AVX2-NEXT:    vpermd %ymm7, %ymm2, %ymm71467; AVX2-NEXT:    vpblendd {{.*#+}} xmm7 = xmm9[0,1],xmm7[2,3]1468; AVX2-NEXT:    vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm8[4,5,6,7]1469; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm8 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]1470; AVX2-NEXT:    vpshufb %ymm8, %ymm4, %ymm41471; AVX2-NEXT:    vpermd %ymm4, %ymm2, %ymm41472; AVX2-NEXT:    vpshufb %ymm8, %ymm3, %ymm31473; AVX2-NEXT:    vpermd %ymm3, %ymm2, %ymm31474; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm4[6,7]1475; AVX2-NEXT:    vpshufb %ymm8, %ymm1, %ymm11476; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm41477; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]1478; AVX2-NEXT:    vpshufb %ymm8, %ymm0, %ymm01479; AVX2-NEXT:    vpermd %ymm0, %ymm2, %ymm01480; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]1481; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm3[4,5,6,7]1482; AVX2-NEXT:    vmovdqa %ymm5, (%rsi)1483; AVX2-NEXT:    vmovdqa %ymm6, (%rdx)1484; AVX2-NEXT:    vmovdqa %ymm7, (%rcx)1485; AVX2-NEXT:    vmovdqa %ymm0, (%r8)1486; AVX2-NEXT:    vzeroupper1487; AVX2-NEXT:    retq1488;1489; AVX2-FP-LABEL: load_i8_stride4_vf32:1490; AVX2-FP:       # %bb.0:1491; AVX2-FP-NEXT:    vmovdqa (%rdi), %ymm11492; AVX2-FP-NEXT:    vmovdqa 32(%rdi), %ymm01493; AVX2-FP-NEXT:    vmovdqa 64(%rdi), %ymm31494; AVX2-FP-NEXT:    vmovdqa 96(%rdi), %ymm41495; AVX2-FP-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]1496; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm4, %ymm61497; AVX2-FP-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [0,4,0,4,0,4,0,4]1498; AVX2-FP-NEXT:    vpermd %ymm6, %ymm2, %ymm61499; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm3, %ymm71500; AVX2-FP-NEXT:    vpermd %ymm7, %ymm2, %ymm71501; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm6 = ymm7[0,1,2,3,4,5],ymm6[6,7]1502; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm1, %ymm71503; AVX2-FP-NEXT:    vextracti128 $1, %ymm7, %xmm81504; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1]1505; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm0, %ymm51506; AVX2-FP-NEXT:    vpermd %ymm5, %ymm2, %ymm51507; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm5 = xmm7[0,1],xmm5[2,3]1508; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm6[4,5,6,7]1509; AVX2-FP-NEXT:    vpbroadcastd {{.*#+}} ymm6 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]1510; AVX2-FP-NEXT:    vpshufb %ymm6, %ymm4, %ymm71511; AVX2-FP-NEXT:    vpermd %ymm7, %ymm2, %ymm71512; AVX2-FP-NEXT:    vpshufb %ymm6, %ymm3, %ymm81513; AVX2-FP-NEXT:    vpermd %ymm8, %ymm2, %ymm81514; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm7 = ymm8[0,1,2,3,4,5],ymm7[6,7]1515; AVX2-FP-NEXT:    vpshufb %ymm6, %ymm1, %ymm81516; AVX2-FP-NEXT:    vextracti128 $1, %ymm8, %xmm91517; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm8 = xmm8[0],xmm9[0],xmm8[1],xmm9[1]1518; AVX2-FP-NEXT:    vpshufb %ymm6, %ymm0, %ymm61519; AVX2-FP-NEXT:    vpermd %ymm6, %ymm2, %ymm61520; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm6 = xmm8[0,1],xmm6[2,3]1521; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm7[4,5,6,7]1522; AVX2-FP-NEXT:    vpbroadcastd {{.*#+}} ymm7 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]1523; AVX2-FP-NEXT:    vpshufb %ymm7, %ymm4, %ymm81524; AVX2-FP-NEXT:    vpermd %ymm8, %ymm2, %ymm81525; AVX2-FP-NEXT:    vpshufb %ymm7, %ymm3, %ymm91526; AVX2-FP-NEXT:    vpermd %ymm9, %ymm2, %ymm91527; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm8 = ymm9[0,1,2,3,4,5],ymm8[6,7]1528; AVX2-FP-NEXT:    vpshufb %ymm7, %ymm1, %ymm91529; AVX2-FP-NEXT:    vextracti128 $1, %ymm9, %xmm101530; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm9 = xmm9[0],xmm10[0],xmm9[1],xmm10[1]1531; AVX2-FP-NEXT:    vpshufb %ymm7, %ymm0, %ymm71532; AVX2-FP-NEXT:    vpermd %ymm7, %ymm2, %ymm71533; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm7 = xmm9[0,1],xmm7[2,3]1534; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm8[4,5,6,7]1535; AVX2-FP-NEXT:    vpbroadcastd {{.*#+}} ymm8 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]1536; AVX2-FP-NEXT:    vpshufb %ymm8, %ymm4, %ymm41537; AVX2-FP-NEXT:    vpermd %ymm4, %ymm2, %ymm41538; AVX2-FP-NEXT:    vpshufb %ymm8, %ymm3, %ymm31539; AVX2-FP-NEXT:    vpermd %ymm3, %ymm2, %ymm31540; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm4[6,7]1541; AVX2-FP-NEXT:    vpshufb %ymm8, %ymm1, %ymm11542; AVX2-FP-NEXT:    vextracti128 $1, %ymm1, %xmm41543; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]1544; AVX2-FP-NEXT:    vpshufb %ymm8, %ymm0, %ymm01545; AVX2-FP-NEXT:    vpermd %ymm0, %ymm2, %ymm01546; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]1547; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm3[4,5,6,7]1548; AVX2-FP-NEXT:    vmovdqa %ymm5, (%rsi)1549; AVX2-FP-NEXT:    vmovdqa %ymm6, (%rdx)1550; AVX2-FP-NEXT:    vmovdqa %ymm7, (%rcx)1551; AVX2-FP-NEXT:    vmovdqa %ymm0, (%r8)1552; AVX2-FP-NEXT:    vzeroupper1553; AVX2-FP-NEXT:    retq1554;1555; AVX2-FCP-LABEL: load_i8_stride4_vf32:1556; AVX2-FCP:       # %bb.0:1557; AVX2-FCP-NEXT:    vmovdqa (%rdi), %ymm11558; AVX2-FCP-NEXT:    vmovdqa 32(%rdi), %ymm01559; AVX2-FCP-NEXT:    vmovdqa 64(%rdi), %ymm31560; AVX2-FCP-NEXT:    vmovdqa 96(%rdi), %ymm41561; AVX2-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]1562; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm4, %ymm61563; AVX2-FCP-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [0,4,0,4,0,4,0,4]1564; AVX2-FCP-NEXT:    vpermd %ymm6, %ymm2, %ymm61565; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm3, %ymm71566; AVX2-FCP-NEXT:    vpermd %ymm7, %ymm2, %ymm71567; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm6 = ymm7[0,1,2,3,4,5],ymm6[6,7]1568; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm1, %ymm71569; AVX2-FCP-NEXT:    vextracti128 $1, %ymm7, %xmm81570; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1]1571; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm0, %ymm51572; AVX2-FCP-NEXT:    vpermd %ymm5, %ymm2, %ymm51573; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm5 = xmm7[0,1],xmm5[2,3]1574; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm6[4,5,6,7]1575; AVX2-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm6 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]1576; AVX2-FCP-NEXT:    vpshufb %ymm6, %ymm4, %ymm71577; AVX2-FCP-NEXT:    vpermd %ymm7, %ymm2, %ymm71578; AVX2-FCP-NEXT:    vpshufb %ymm6, %ymm3, %ymm81579; AVX2-FCP-NEXT:    vpermd %ymm8, %ymm2, %ymm81580; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm7 = ymm8[0,1,2,3,4,5],ymm7[6,7]1581; AVX2-FCP-NEXT:    vpshufb %ymm6, %ymm1, %ymm81582; AVX2-FCP-NEXT:    vextracti128 $1, %ymm8, %xmm91583; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm8 = xmm8[0],xmm9[0],xmm8[1],xmm9[1]1584; AVX2-FCP-NEXT:    vpshufb %ymm6, %ymm0, %ymm61585; AVX2-FCP-NEXT:    vpermd %ymm6, %ymm2, %ymm61586; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm6 = xmm8[0,1],xmm6[2,3]1587; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm7[4,5,6,7]1588; AVX2-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm7 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]1589; AVX2-FCP-NEXT:    vpshufb %ymm7, %ymm4, %ymm81590; AVX2-FCP-NEXT:    vpermd %ymm8, %ymm2, %ymm81591; AVX2-FCP-NEXT:    vpshufb %ymm7, %ymm3, %ymm91592; AVX2-FCP-NEXT:    vpermd %ymm9, %ymm2, %ymm91593; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm8 = ymm9[0,1,2,3,4,5],ymm8[6,7]1594; AVX2-FCP-NEXT:    vpshufb %ymm7, %ymm1, %ymm91595; AVX2-FCP-NEXT:    vextracti128 $1, %ymm9, %xmm101596; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm9 = xmm9[0],xmm10[0],xmm9[1],xmm10[1]1597; AVX2-FCP-NEXT:    vpshufb %ymm7, %ymm0, %ymm71598; AVX2-FCP-NEXT:    vpermd %ymm7, %ymm2, %ymm71599; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm7 = xmm9[0,1],xmm7[2,3]1600; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm8[4,5,6,7]1601; AVX2-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm8 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]1602; AVX2-FCP-NEXT:    vpshufb %ymm8, %ymm4, %ymm41603; AVX2-FCP-NEXT:    vpermd %ymm4, %ymm2, %ymm41604; AVX2-FCP-NEXT:    vpshufb %ymm8, %ymm3, %ymm31605; AVX2-FCP-NEXT:    vpermd %ymm3, %ymm2, %ymm31606; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm4[6,7]1607; AVX2-FCP-NEXT:    vpshufb %ymm8, %ymm1, %ymm11608; AVX2-FCP-NEXT:    vextracti128 $1, %ymm1, %xmm41609; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]1610; AVX2-FCP-NEXT:    vpshufb %ymm8, %ymm0, %ymm01611; AVX2-FCP-NEXT:    vpermd %ymm0, %ymm2, %ymm01612; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]1613; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm3[4,5,6,7]1614; AVX2-FCP-NEXT:    vmovdqa %ymm5, (%rsi)1615; AVX2-FCP-NEXT:    vmovdqa %ymm6, (%rdx)1616; AVX2-FCP-NEXT:    vmovdqa %ymm7, (%rcx)1617; AVX2-FCP-NEXT:    vmovdqa %ymm0, (%r8)1618; AVX2-FCP-NEXT:    vzeroupper1619; AVX2-FCP-NEXT:    retq1620;1621; AVX512-LABEL: load_i8_stride4_vf32:1622; AVX512:       # %bb.0:1623; AVX512-NEXT:    vpbroadcastd {{.*#+}} ymm0 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]1624; AVX512-NEXT:    vmovdqa 96(%rdi), %ymm11625; AVX512-NEXT:    vpshufb %ymm0, %ymm1, %ymm21626; AVX512-NEXT:    vmovdqa 64(%rdi), %ymm31627; AVX512-NEXT:    vpshufb %ymm0, %ymm3, %ymm01628; AVX512-NEXT:    vpmovsxbd {{.*#+}} ymm4 = [0,4,0,4,0,4,8,12]1629; AVX512-NEXT:    vpermt2d %ymm2, %ymm4, %ymm01630; AVX512-NEXT:    vmovdqa64 (%rdi), %zmm21631; AVX512-NEXT:    vpmovdb %zmm2, %xmm51632; AVX512-NEXT:    vpblendd {{.*#+}} ymm0 = ymm5[0,1,2,3],ymm0[4,5,6,7]1633; AVX512-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]1634; AVX512-NEXT:    vpshufb %ymm5, %ymm1, %ymm61635; AVX512-NEXT:    vpshufb %ymm5, %ymm3, %ymm51636; AVX512-NEXT:    vpermt2d %ymm6, %ymm4, %ymm51637; AVX512-NEXT:    vpsrld $8, %zmm2, %zmm61638; AVX512-NEXT:    vpmovdb %zmm6, %xmm61639; AVX512-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]1640; AVX512-NEXT:    vpbroadcastd {{.*#+}} ymm6 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]1641; AVX512-NEXT:    vpshufb %ymm6, %ymm1, %ymm71642; AVX512-NEXT:    vpshufb %ymm6, %ymm3, %ymm61643; AVX512-NEXT:    vpermt2d %ymm7, %ymm4, %ymm61644; AVX512-NEXT:    vpsrld $16, %zmm2, %zmm71645; AVX512-NEXT:    vpmovdb %zmm7, %xmm71646; AVX512-NEXT:    vpblendd {{.*#+}} ymm6 = ymm7[0,1,2,3],ymm6[4,5,6,7]1647; AVX512-NEXT:    vpbroadcastd {{.*#+}} ymm7 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]1648; AVX512-NEXT:    vpshufb %ymm7, %ymm1, %ymm11649; AVX512-NEXT:    vpshufb %ymm7, %ymm3, %ymm31650; AVX512-NEXT:    vpermt2d %ymm1, %ymm4, %ymm31651; AVX512-NEXT:    vpsrld $24, %zmm2, %zmm11652; AVX512-NEXT:    vpmovdb %zmm1, %xmm11653; AVX512-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm3[4,5,6,7]1654; AVX512-NEXT:    vmovdqa %ymm0, (%rsi)1655; AVX512-NEXT:    vmovdqa %ymm5, (%rdx)1656; AVX512-NEXT:    vmovdqa %ymm6, (%rcx)1657; AVX512-NEXT:    vmovdqa %ymm1, (%r8)1658; AVX512-NEXT:    vzeroupper1659; AVX512-NEXT:    retq1660;1661; AVX512-FCP-LABEL: load_i8_stride4_vf32:1662; AVX512-FCP:       # %bb.0:1663; AVX512-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm0 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]1664; AVX512-FCP-NEXT:    vmovdqa 96(%rdi), %ymm11665; AVX512-FCP-NEXT:    vpshufb %ymm0, %ymm1, %ymm21666; AVX512-FCP-NEXT:    vmovdqa 64(%rdi), %ymm31667; AVX512-FCP-NEXT:    vpshufb %ymm0, %ymm3, %ymm01668; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm4 = [0,4,0,4,0,4,8,12]1669; AVX512-FCP-NEXT:    vpermt2d %ymm2, %ymm4, %ymm01670; AVX512-FCP-NEXT:    vmovdqa64 (%rdi), %zmm21671; AVX512-FCP-NEXT:    vpmovdb %zmm2, %xmm51672; AVX512-FCP-NEXT:    vpblendd {{.*#+}} ymm0 = ymm5[0,1,2,3],ymm0[4,5,6,7]1673; AVX512-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]1674; AVX512-FCP-NEXT:    vpshufb %ymm5, %ymm1, %ymm61675; AVX512-FCP-NEXT:    vpshufb %ymm5, %ymm3, %ymm51676; AVX512-FCP-NEXT:    vpermt2d %ymm6, %ymm4, %ymm51677; AVX512-FCP-NEXT:    vpsrld $8, %zmm2, %zmm61678; AVX512-FCP-NEXT:    vpmovdb %zmm6, %xmm61679; AVX512-FCP-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]1680; AVX512-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm6 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]1681; AVX512-FCP-NEXT:    vpshufb %ymm6, %ymm1, %ymm71682; AVX512-FCP-NEXT:    vpshufb %ymm6, %ymm3, %ymm61683; AVX512-FCP-NEXT:    vpermt2d %ymm7, %ymm4, %ymm61684; AVX512-FCP-NEXT:    vpsrld $16, %zmm2, %zmm71685; AVX512-FCP-NEXT:    vpmovdb %zmm7, %xmm71686; AVX512-FCP-NEXT:    vpblendd {{.*#+}} ymm6 = ymm7[0,1,2,3],ymm6[4,5,6,7]1687; AVX512-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm7 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]1688; AVX512-FCP-NEXT:    vpshufb %ymm7, %ymm1, %ymm11689; AVX512-FCP-NEXT:    vpshufb %ymm7, %ymm3, %ymm31690; AVX512-FCP-NEXT:    vpermt2d %ymm1, %ymm4, %ymm31691; AVX512-FCP-NEXT:    vpsrld $24, %zmm2, %zmm11692; AVX512-FCP-NEXT:    vpmovdb %zmm1, %xmm11693; AVX512-FCP-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm3[4,5,6,7]1694; AVX512-FCP-NEXT:    vmovdqa %ymm0, (%rsi)1695; AVX512-FCP-NEXT:    vmovdqa %ymm5, (%rdx)1696; AVX512-FCP-NEXT:    vmovdqa %ymm6, (%rcx)1697; AVX512-FCP-NEXT:    vmovdqa %ymm1, (%r8)1698; AVX512-FCP-NEXT:    vzeroupper1699; AVX512-FCP-NEXT:    retq1700;1701; AVX512DQ-LABEL: load_i8_stride4_vf32:1702; AVX512DQ:       # %bb.0:1703; AVX512DQ-NEXT:    vpbroadcastd {{.*#+}} ymm0 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]1704; AVX512DQ-NEXT:    vmovdqa 96(%rdi), %ymm11705; AVX512DQ-NEXT:    vpshufb %ymm0, %ymm1, %ymm21706; AVX512DQ-NEXT:    vmovdqa 64(%rdi), %ymm31707; AVX512DQ-NEXT:    vpshufb %ymm0, %ymm3, %ymm01708; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} ymm4 = [0,4,0,4,0,4,8,12]1709; AVX512DQ-NEXT:    vpermt2d %ymm2, %ymm4, %ymm01710; AVX512DQ-NEXT:    vmovdqa64 (%rdi), %zmm21711; AVX512DQ-NEXT:    vpmovdb %zmm2, %xmm51712; AVX512DQ-NEXT:    vpblendd {{.*#+}} ymm0 = ymm5[0,1,2,3],ymm0[4,5,6,7]1713; AVX512DQ-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]1714; AVX512DQ-NEXT:    vpshufb %ymm5, %ymm1, %ymm61715; AVX512DQ-NEXT:    vpshufb %ymm5, %ymm3, %ymm51716; AVX512DQ-NEXT:    vpermt2d %ymm6, %ymm4, %ymm51717; AVX512DQ-NEXT:    vpsrld $8, %zmm2, %zmm61718; AVX512DQ-NEXT:    vpmovdb %zmm6, %xmm61719; AVX512DQ-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]1720; AVX512DQ-NEXT:    vpbroadcastd {{.*#+}} ymm6 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]1721; AVX512DQ-NEXT:    vpshufb %ymm6, %ymm1, %ymm71722; AVX512DQ-NEXT:    vpshufb %ymm6, %ymm3, %ymm61723; AVX512DQ-NEXT:    vpermt2d %ymm7, %ymm4, %ymm61724; AVX512DQ-NEXT:    vpsrld $16, %zmm2, %zmm71725; AVX512DQ-NEXT:    vpmovdb %zmm7, %xmm71726; AVX512DQ-NEXT:    vpblendd {{.*#+}} ymm6 = ymm7[0,1,2,3],ymm6[4,5,6,7]1727; AVX512DQ-NEXT:    vpbroadcastd {{.*#+}} ymm7 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]1728; AVX512DQ-NEXT:    vpshufb %ymm7, %ymm1, %ymm11729; AVX512DQ-NEXT:    vpshufb %ymm7, %ymm3, %ymm31730; AVX512DQ-NEXT:    vpermt2d %ymm1, %ymm4, %ymm31731; AVX512DQ-NEXT:    vpsrld $24, %zmm2, %zmm11732; AVX512DQ-NEXT:    vpmovdb %zmm1, %xmm11733; AVX512DQ-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm3[4,5,6,7]1734; AVX512DQ-NEXT:    vmovdqa %ymm0, (%rsi)1735; AVX512DQ-NEXT:    vmovdqa %ymm5, (%rdx)1736; AVX512DQ-NEXT:    vmovdqa %ymm6, (%rcx)1737; AVX512DQ-NEXT:    vmovdqa %ymm1, (%r8)1738; AVX512DQ-NEXT:    vzeroupper1739; AVX512DQ-NEXT:    retq1740;1741; AVX512DQ-FCP-LABEL: load_i8_stride4_vf32:1742; AVX512DQ-FCP:       # %bb.0:1743; AVX512DQ-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm0 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]1744; AVX512DQ-FCP-NEXT:    vmovdqa 96(%rdi), %ymm11745; AVX512DQ-FCP-NEXT:    vpshufb %ymm0, %ymm1, %ymm21746; AVX512DQ-FCP-NEXT:    vmovdqa 64(%rdi), %ymm31747; AVX512DQ-FCP-NEXT:    vpshufb %ymm0, %ymm3, %ymm01748; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm4 = [0,4,0,4,0,4,8,12]1749; AVX512DQ-FCP-NEXT:    vpermt2d %ymm2, %ymm4, %ymm01750; AVX512DQ-FCP-NEXT:    vmovdqa64 (%rdi), %zmm21751; AVX512DQ-FCP-NEXT:    vpmovdb %zmm2, %xmm51752; AVX512DQ-FCP-NEXT:    vpblendd {{.*#+}} ymm0 = ymm5[0,1,2,3],ymm0[4,5,6,7]1753; AVX512DQ-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]1754; AVX512DQ-FCP-NEXT:    vpshufb %ymm5, %ymm1, %ymm61755; AVX512DQ-FCP-NEXT:    vpshufb %ymm5, %ymm3, %ymm51756; AVX512DQ-FCP-NEXT:    vpermt2d %ymm6, %ymm4, %ymm51757; AVX512DQ-FCP-NEXT:    vpsrld $8, %zmm2, %zmm61758; AVX512DQ-FCP-NEXT:    vpmovdb %zmm6, %xmm61759; AVX512DQ-FCP-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]1760; AVX512DQ-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm6 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]1761; AVX512DQ-FCP-NEXT:    vpshufb %ymm6, %ymm1, %ymm71762; AVX512DQ-FCP-NEXT:    vpshufb %ymm6, %ymm3, %ymm61763; AVX512DQ-FCP-NEXT:    vpermt2d %ymm7, %ymm4, %ymm61764; AVX512DQ-FCP-NEXT:    vpsrld $16, %zmm2, %zmm71765; AVX512DQ-FCP-NEXT:    vpmovdb %zmm7, %xmm71766; AVX512DQ-FCP-NEXT:    vpblendd {{.*#+}} ymm6 = ymm7[0,1,2,3],ymm6[4,5,6,7]1767; AVX512DQ-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm7 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]1768; AVX512DQ-FCP-NEXT:    vpshufb %ymm7, %ymm1, %ymm11769; AVX512DQ-FCP-NEXT:    vpshufb %ymm7, %ymm3, %ymm31770; AVX512DQ-FCP-NEXT:    vpermt2d %ymm1, %ymm4, %ymm31771; AVX512DQ-FCP-NEXT:    vpsrld $24, %zmm2, %zmm11772; AVX512DQ-FCP-NEXT:    vpmovdb %zmm1, %xmm11773; AVX512DQ-FCP-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm3[4,5,6,7]1774; AVX512DQ-FCP-NEXT:    vmovdqa %ymm0, (%rsi)1775; AVX512DQ-FCP-NEXT:    vmovdqa %ymm5, (%rdx)1776; AVX512DQ-FCP-NEXT:    vmovdqa %ymm6, (%rcx)1777; AVX512DQ-FCP-NEXT:    vmovdqa %ymm1, (%r8)1778; AVX512DQ-FCP-NEXT:    vzeroupper1779; AVX512DQ-FCP-NEXT:    retq1780;1781; AVX512BW-LABEL: load_i8_stride4_vf32:1782; AVX512BW:       # %bb.0:1783; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} ymm0 = [0,4,8,12,1,5,9,13]1784; AVX512BW-NEXT:    vmovdqa64 (%rdi), %zmm11785; AVX512BW-NEXT:    vmovdqa64 64(%rdi), %zmm21786; AVX512BW-NEXT:    vpshufb {{.*#+}} zmm3 = zero,zero,zero,zero,zmm2[0,4,8,12,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[16,20,24,28,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[32,36,40,44,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[48,52,56,60,u,u,u,u,u,u,u,u]1787; AVX512BW-NEXT:    vpshufb {{.*#+}} zmm4 = zmm1[0,4,8,12],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,16,20,24,28],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,32,36,40,44],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,48,52,56,60],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1788; AVX512BW-NEXT:    vporq %zmm3, %zmm4, %zmm31789; AVX512BW-NEXT:    vpermd %zmm3, %zmm0, %zmm31790; AVX512BW-NEXT:    vpshufb {{.*#+}} zmm4 = zero,zero,zero,zero,zmm2[1,5,9,13,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[17,21,25,29,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[33,37,41,45,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[49,53,57,61,u,u,u,u,u,u,u,u]1791; AVX512BW-NEXT:    vpshufb {{.*#+}} zmm5 = zmm1[1,5,9,13],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,17,21,25,29],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,33,37,41,45],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,49,53,57,61],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1792; AVX512BW-NEXT:    vporq %zmm4, %zmm5, %zmm41793; AVX512BW-NEXT:    vpermd %zmm4, %zmm0, %zmm41794; AVX512BW-NEXT:    vpshufb {{.*#+}} zmm5 = zero,zero,zero,zero,zmm2[2,6,10,14,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[18,22,26,30,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[34,38,42,46,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[50,54,58,62,u,u,u,u,u,u,u,u]1795; AVX512BW-NEXT:    vpshufb {{.*#+}} zmm6 = zmm1[2,6,10,14],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,18,22,26,30],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,34,38,42,46],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,50,54,58,62],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1796; AVX512BW-NEXT:    vporq %zmm5, %zmm6, %zmm51797; AVX512BW-NEXT:    vpermd %zmm5, %zmm0, %zmm51798; AVX512BW-NEXT:    vpshufb {{.*#+}} zmm2 = zero,zero,zero,zero,zmm2[3,7,11,15,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[19,23,27,31,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[35,39,43,47,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[51,55,59,63,u,u,u,u,u,u,u,u]1799; AVX512BW-NEXT:    vpshufb {{.*#+}} zmm1 = zmm1[3,7,11,15],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,19,23,27,31],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,35,39,43,47],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,51,55,59,63],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1800; AVX512BW-NEXT:    vporq %zmm2, %zmm1, %zmm11801; AVX512BW-NEXT:    vpermd %zmm1, %zmm0, %zmm01802; AVX512BW-NEXT:    vmovdqa %ymm3, (%rsi)1803; AVX512BW-NEXT:    vmovdqa %ymm4, (%rdx)1804; AVX512BW-NEXT:    vmovdqa %ymm5, (%rcx)1805; AVX512BW-NEXT:    vmovdqa %ymm0, (%r8)1806; AVX512BW-NEXT:    vzeroupper1807; AVX512BW-NEXT:    retq1808;1809; AVX512BW-FCP-LABEL: load_i8_stride4_vf32:1810; AVX512BW-FCP:       # %bb.0:1811; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm0 = [0,4,8,12,1,5,9,13]1812; AVX512BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm11813; AVX512BW-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm21814; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} zmm3 = zero,zero,zero,zero,zmm2[0,4,8,12,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[16,20,24,28,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[32,36,40,44,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[48,52,56,60,u,u,u,u,u,u,u,u]1815; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} zmm4 = zmm1[0,4,8,12],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,16,20,24,28],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,32,36,40,44],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,48,52,56,60],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1816; AVX512BW-FCP-NEXT:    vporq %zmm3, %zmm4, %zmm31817; AVX512BW-FCP-NEXT:    vpermd %zmm3, %zmm0, %zmm31818; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} zmm4 = zero,zero,zero,zero,zmm2[1,5,9,13,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[17,21,25,29,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[33,37,41,45,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[49,53,57,61,u,u,u,u,u,u,u,u]1819; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} zmm5 = zmm1[1,5,9,13],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,17,21,25,29],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,33,37,41,45],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,49,53,57,61],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1820; AVX512BW-FCP-NEXT:    vporq %zmm4, %zmm5, %zmm41821; AVX512BW-FCP-NEXT:    vpermd %zmm4, %zmm0, %zmm41822; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} zmm5 = zero,zero,zero,zero,zmm2[2,6,10,14,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[18,22,26,30,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[34,38,42,46,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[50,54,58,62,u,u,u,u,u,u,u,u]1823; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} zmm6 = zmm1[2,6,10,14],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,18,22,26,30],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,34,38,42,46],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,50,54,58,62],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1824; AVX512BW-FCP-NEXT:    vporq %zmm5, %zmm6, %zmm51825; AVX512BW-FCP-NEXT:    vpermd %zmm5, %zmm0, %zmm51826; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} zmm2 = zero,zero,zero,zero,zmm2[3,7,11,15,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[19,23,27,31,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[35,39,43,47,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[51,55,59,63,u,u,u,u,u,u,u,u]1827; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} zmm1 = zmm1[3,7,11,15],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,19,23,27,31],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,35,39,43,47],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,51,55,59,63],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1828; AVX512BW-FCP-NEXT:    vporq %zmm2, %zmm1, %zmm11829; AVX512BW-FCP-NEXT:    vpermd %zmm1, %zmm0, %zmm01830; AVX512BW-FCP-NEXT:    vmovdqa %ymm3, (%rsi)1831; AVX512BW-FCP-NEXT:    vmovdqa %ymm4, (%rdx)1832; AVX512BW-FCP-NEXT:    vmovdqa %ymm5, (%rcx)1833; AVX512BW-FCP-NEXT:    vmovdqa %ymm0, (%r8)1834; AVX512BW-FCP-NEXT:    vzeroupper1835; AVX512BW-FCP-NEXT:    retq1836;1837; AVX512DQ-BW-LABEL: load_i8_stride4_vf32:1838; AVX512DQ-BW:       # %bb.0:1839; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} ymm0 = [0,4,8,12,1,5,9,13]1840; AVX512DQ-BW-NEXT:    vmovdqa64 (%rdi), %zmm11841; AVX512DQ-BW-NEXT:    vmovdqa64 64(%rdi), %zmm21842; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} zmm3 = zero,zero,zero,zero,zmm2[0,4,8,12,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[16,20,24,28,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[32,36,40,44,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[48,52,56,60,u,u,u,u,u,u,u,u]1843; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} zmm4 = zmm1[0,4,8,12],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,16,20,24,28],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,32,36,40,44],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,48,52,56,60],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1844; AVX512DQ-BW-NEXT:    vporq %zmm3, %zmm4, %zmm31845; AVX512DQ-BW-NEXT:    vpermd %zmm3, %zmm0, %zmm31846; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} zmm4 = zero,zero,zero,zero,zmm2[1,5,9,13,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[17,21,25,29,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[33,37,41,45,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[49,53,57,61,u,u,u,u,u,u,u,u]1847; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} zmm5 = zmm1[1,5,9,13],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,17,21,25,29],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,33,37,41,45],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,49,53,57,61],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1848; AVX512DQ-BW-NEXT:    vporq %zmm4, %zmm5, %zmm41849; AVX512DQ-BW-NEXT:    vpermd %zmm4, %zmm0, %zmm41850; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} zmm5 = zero,zero,zero,zero,zmm2[2,6,10,14,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[18,22,26,30,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[34,38,42,46,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[50,54,58,62,u,u,u,u,u,u,u,u]1851; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} zmm6 = zmm1[2,6,10,14],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,18,22,26,30],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,34,38,42,46],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,50,54,58,62],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1852; AVX512DQ-BW-NEXT:    vporq %zmm5, %zmm6, %zmm51853; AVX512DQ-BW-NEXT:    vpermd %zmm5, %zmm0, %zmm51854; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} zmm2 = zero,zero,zero,zero,zmm2[3,7,11,15,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[19,23,27,31,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[35,39,43,47,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[51,55,59,63,u,u,u,u,u,u,u,u]1855; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} zmm1 = zmm1[3,7,11,15],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,19,23,27,31],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,35,39,43,47],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,51,55,59,63],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1856; AVX512DQ-BW-NEXT:    vporq %zmm2, %zmm1, %zmm11857; AVX512DQ-BW-NEXT:    vpermd %zmm1, %zmm0, %zmm01858; AVX512DQ-BW-NEXT:    vmovdqa %ymm3, (%rsi)1859; AVX512DQ-BW-NEXT:    vmovdqa %ymm4, (%rdx)1860; AVX512DQ-BW-NEXT:    vmovdqa %ymm5, (%rcx)1861; AVX512DQ-BW-NEXT:    vmovdqa %ymm0, (%r8)1862; AVX512DQ-BW-NEXT:    vzeroupper1863; AVX512DQ-BW-NEXT:    retq1864;1865; AVX512DQ-BW-FCP-LABEL: load_i8_stride4_vf32:1866; AVX512DQ-BW-FCP:       # %bb.0:1867; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm0 = [0,4,8,12,1,5,9,13]1868; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm11869; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm21870; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} zmm3 = zero,zero,zero,zero,zmm2[0,4,8,12,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[16,20,24,28,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[32,36,40,44,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[48,52,56,60,u,u,u,u,u,u,u,u]1871; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} zmm4 = zmm1[0,4,8,12],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,16,20,24,28],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,32,36,40,44],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,48,52,56,60],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1872; AVX512DQ-BW-FCP-NEXT:    vporq %zmm3, %zmm4, %zmm31873; AVX512DQ-BW-FCP-NEXT:    vpermd %zmm3, %zmm0, %zmm31874; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} zmm4 = zero,zero,zero,zero,zmm2[1,5,9,13,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[17,21,25,29,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[33,37,41,45,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[49,53,57,61,u,u,u,u,u,u,u,u]1875; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} zmm5 = zmm1[1,5,9,13],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,17,21,25,29],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,33,37,41,45],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,49,53,57,61],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1876; AVX512DQ-BW-FCP-NEXT:    vporq %zmm4, %zmm5, %zmm41877; AVX512DQ-BW-FCP-NEXT:    vpermd %zmm4, %zmm0, %zmm41878; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} zmm5 = zero,zero,zero,zero,zmm2[2,6,10,14,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[18,22,26,30,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[34,38,42,46,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[50,54,58,62,u,u,u,u,u,u,u,u]1879; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} zmm6 = zmm1[2,6,10,14],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,18,22,26,30],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,34,38,42,46],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,50,54,58,62],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1880; AVX512DQ-BW-FCP-NEXT:    vporq %zmm5, %zmm6, %zmm51881; AVX512DQ-BW-FCP-NEXT:    vpermd %zmm5, %zmm0, %zmm51882; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} zmm2 = zero,zero,zero,zero,zmm2[3,7,11,15,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[19,23,27,31,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[35,39,43,47,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zmm2[51,55,59,63,u,u,u,u,u,u,u,u]1883; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} zmm1 = zmm1[3,7,11,15],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,19,23,27,31],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,35,39,43,47],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u,51,55,59,63],zero,zero,zero,zero,zmm1[u,u,u,u,u,u,u,u]1884; AVX512DQ-BW-FCP-NEXT:    vporq %zmm2, %zmm1, %zmm11885; AVX512DQ-BW-FCP-NEXT:    vpermd %zmm1, %zmm0, %zmm01886; AVX512DQ-BW-FCP-NEXT:    vmovdqa %ymm3, (%rsi)1887; AVX512DQ-BW-FCP-NEXT:    vmovdqa %ymm4, (%rdx)1888; AVX512DQ-BW-FCP-NEXT:    vmovdqa %ymm5, (%rcx)1889; AVX512DQ-BW-FCP-NEXT:    vmovdqa %ymm0, (%r8)1890; AVX512DQ-BW-FCP-NEXT:    vzeroupper1891; AVX512DQ-BW-FCP-NEXT:    retq1892  %wide.vec = load <128 x i8>, ptr %in.vec, align 641893  %strided.vec0 = shufflevector <128 x i8> %wide.vec, <128 x i8> poison, <32 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28, i32 32, i32 36, i32 40, i32 44, i32 48, i32 52, i32 56, i32 60, i32 64, i32 68, i32 72, i32 76, i32 80, i32 84, i32 88, i32 92, i32 96, i32 100, i32 104, i32 108, i32 112, i32 116, i32 120, i32 124>1894  %strided.vec1 = shufflevector <128 x i8> %wide.vec, <128 x i8> poison, <32 x i32> <i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 25, i32 29, i32 33, i32 37, i32 41, i32 45, i32 49, i32 53, i32 57, i32 61, i32 65, i32 69, i32 73, i32 77, i32 81, i32 85, i32 89, i32 93, i32 97, i32 101, i32 105, i32 109, i32 113, i32 117, i32 121, i32 125>1895  %strided.vec2 = shufflevector <128 x i8> %wide.vec, <128 x i8> poison, <32 x i32> <i32 2, i32 6, i32 10, i32 14, i32 18, i32 22, i32 26, i32 30, i32 34, i32 38, i32 42, i32 46, i32 50, i32 54, i32 58, i32 62, i32 66, i32 70, i32 74, i32 78, i32 82, i32 86, i32 90, i32 94, i32 98, i32 102, i32 106, i32 110, i32 114, i32 118, i32 122, i32 126>1896  %strided.vec3 = shufflevector <128 x i8> %wide.vec, <128 x i8> poison, <32 x i32> <i32 3, i32 7, i32 11, i32 15, i32 19, i32 23, i32 27, i32 31, i32 35, i32 39, i32 43, i32 47, i32 51, i32 55, i32 59, i32 63, i32 67, i32 71, i32 75, i32 79, i32 83, i32 87, i32 91, i32 95, i32 99, i32 103, i32 107, i32 111, i32 115, i32 119, i32 123, i32 127>1897  store <32 x i8> %strided.vec0, ptr %out.vec0, align 641898  store <32 x i8> %strided.vec1, ptr %out.vec1, align 641899  store <32 x i8> %strided.vec2, ptr %out.vec2, align 641900  store <32 x i8> %strided.vec3, ptr %out.vec3, align 641901  ret void1902}1903 1904define void @load_i8_stride4_vf64(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3) nounwind {1905; SSE-LABEL: load_i8_stride4_vf64:1906; SSE:       # %bb.0:1907; SSE-NEXT:    subq $600, %rsp # imm = 0x2581908; SSE-NEXT:    movdqa 16(%rdi), %xmm81909; SSE-NEXT:    movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1910; SSE-NEXT:    movdqa 32(%rdi), %xmm151911; SSE-NEXT:    movdqa 48(%rdi), %xmm141912; SSE-NEXT:    movdqa 128(%rdi), %xmm41913; SSE-NEXT:    movdqa 144(%rdi), %xmm71914; SSE-NEXT:    movdqa 160(%rdi), %xmm101915; SSE-NEXT:    movdqa 176(%rdi), %xmm121916; SSE-NEXT:    movdqa 64(%rdi), %xmm61917; SSE-NEXT:    movdqa 80(%rdi), %xmm131918; SSE-NEXT:    movdqa 96(%rdi), %xmm21919; SSE-NEXT:    movdqa 112(%rdi), %xmm11920; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [255,0,255,0,255,0,255,0]1921; SSE-NEXT:    movdqa %xmm1, %xmm01922; SSE-NEXT:    movdqa %xmm1, %xmm31923; SSE-NEXT:    pand %xmm9, %xmm01924; SSE-NEXT:    movdqa %xmm2, %xmm11925; SSE-NEXT:    movdqa %xmm2, %xmm51926; SSE-NEXT:    pand %xmm9, %xmm11927; SSE-NEXT:    packuswb %xmm0, %xmm11928; SSE-NEXT:    movdqa %xmm13, %xmm01929; SSE-NEXT:    pand %xmm9, %xmm01930; SSE-NEXT:    movdqa %xmm6, %xmm21931; SSE-NEXT:    pand %xmm9, %xmm21932; SSE-NEXT:    packuswb %xmm0, %xmm21933; SSE-NEXT:    packuswb %xmm1, %xmm21934; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1935; SSE-NEXT:    movdqa %xmm12, %xmm01936; SSE-NEXT:    pand %xmm9, %xmm01937; SSE-NEXT:    movdqa %xmm10, %xmm11938; SSE-NEXT:    pand %xmm9, %xmm11939; SSE-NEXT:    packuswb %xmm0, %xmm11940; SSE-NEXT:    movdqa %xmm7, %xmm01941; SSE-NEXT:    pand %xmm9, %xmm01942; SSE-NEXT:    movdqa %xmm4, %xmm21943; SSE-NEXT:    pand %xmm9, %xmm21944; SSE-NEXT:    packuswb %xmm0, %xmm21945; SSE-NEXT:    packuswb %xmm1, %xmm21946; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1947; SSE-NEXT:    movdqa %xmm14, %xmm01948; SSE-NEXT:    pand %xmm9, %xmm01949; SSE-NEXT:    movdqa %xmm15, %xmm11950; SSE-NEXT:    pand %xmm9, %xmm11951; SSE-NEXT:    packuswb %xmm0, %xmm11952; SSE-NEXT:    movdqa %xmm8, %xmm01953; SSE-NEXT:    pand %xmm9, %xmm01954; SSE-NEXT:    movdqa (%rdi), %xmm111955; SSE-NEXT:    movdqa %xmm11, %xmm21956; SSE-NEXT:    pand %xmm9, %xmm21957; SSE-NEXT:    packuswb %xmm0, %xmm21958; SSE-NEXT:    packuswb %xmm1, %xmm21959; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1960; SSE-NEXT:    movdqa 240(%rdi), %xmm01961; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1962; SSE-NEXT:    pand %xmm9, %xmm01963; SSE-NEXT:    movdqa 224(%rdi), %xmm11964; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1965; SSE-NEXT:    pand %xmm9, %xmm11966; SSE-NEXT:    packuswb %xmm0, %xmm11967; SSE-NEXT:    movdqa 208(%rdi), %xmm01968; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1969; SSE-NEXT:    pand %xmm9, %xmm01970; SSE-NEXT:    movdqa 192(%rdi), %xmm21971; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1972; SSE-NEXT:    pand %xmm2, %xmm91973; SSE-NEXT:    packuswb %xmm0, %xmm91974; SSE-NEXT:    packuswb %xmm1, %xmm91975; SSE-NEXT:    movdqa %xmm3, %xmm11976; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1977; SSE-NEXT:    movdqa %xmm3, %xmm01978; SSE-NEXT:    pxor %xmm8, %xmm81979; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]1980; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1981; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]1982; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,1,3,4,5,6,7]1983; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]1984; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1985; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[0,2,2,3]1986; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,3,4,5,6,7]1987; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]1988; SSE-NEXT:    movdqa %xmm5, %xmm11989; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1990; SSE-NEXT:    movdqa %xmm5, %xmm01991; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]1992; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1993; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]1994; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,3,2,3,4,5,6,7]1995; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]1996; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1997; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[0,2,2,3]1998; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[1,3,2,3,4,5,6,7]1999; SSE-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]2000; SSE-NEXT:    packuswb %xmm3, %xmm52001; SSE-NEXT:    movdqa %xmm13, %xmm12002; SSE-NEXT:    movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2003; SSE-NEXT:    movdqa %xmm13, %xmm02004; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]2005; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2006; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2007; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,1,3,4,5,6,7]2008; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]2009; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2010; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[0,2,2,3]2011; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,3,4,5,6,7]2012; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]2013; SSE-NEXT:    movdqa %xmm6, %xmm12014; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2015; SSE-NEXT:    movdqa %xmm6, %xmm02016; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]2017; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2018; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2019; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,3,2,3,4,5,6,7]2020; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]2021; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2022; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm1[0,2,2,3]2023; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm6[1,3,2,3,4,5,6,7]2024; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]2025; SSE-NEXT:    packuswb %xmm3, %xmm12026; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,3],xmm5[0,3]2027; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2028; SSE-NEXT:    movdqa %xmm12, %xmm12029; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2030; SSE-NEXT:    movdqa %xmm12, %xmm02031; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]2032; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2033; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2034; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,1,3,4,5,6,7]2035; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]2036; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2037; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[0,2,2,3]2038; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,3,4,5,6,7]2039; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]2040; SSE-NEXT:    movdqa %xmm10, %xmm12041; SSE-NEXT:    movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2042; SSE-NEXT:    movdqa %xmm10, %xmm02043; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]2044; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2045; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2046; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,3,2,3,4,5,6,7]2047; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]2048; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2049; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[0,2,2,3]2050; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm5[1,3,2,3,4,5,6,7]2051; SSE-NEXT:    punpckldq {{.*#+}} xmm6 = xmm6[0],xmm0[0],xmm6[1],xmm0[1]2052; SSE-NEXT:    packuswb %xmm3, %xmm62053; SSE-NEXT:    movdqa %xmm7, (%rsp) # 16-byte Spill2054; SSE-NEXT:    movdqa %xmm7, %xmm02055; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]2056; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2057; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2058; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,1,3,4,5,6,7]2059; SSE-NEXT:    movdqa %xmm7, %xmm12060; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]2061; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2062; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[0,2,2,3]2063; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,3,4,5,6,7]2064; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]2065; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2066; SSE-NEXT:    movdqa %xmm4, %xmm02067; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]2068; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2069; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2070; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,3,2,3,4,5,6,7]2071; SSE-NEXT:    movdqa %xmm4, %xmm12072; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]2073; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2074; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[0,2,2,3]2075; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm5[1,3,2,3,4,5,6,7]2076; SSE-NEXT:    punpckldq {{.*#+}} xmm10 = xmm10[0],xmm0[0],xmm10[1],xmm0[1]2077; SSE-NEXT:    packuswb %xmm3, %xmm102078; SSE-NEXT:    shufps {{.*#+}} xmm10 = xmm10[0,3],xmm6[0,3]2079; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2080; SSE-NEXT:    movdqa %xmm14, %xmm02081; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]2082; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2083; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2084; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,1,3,4,5,6,7]2085; SSE-NEXT:    punpcklbw {{.*#+}} xmm14 = xmm14[0],xmm8[0],xmm14[1],xmm8[1],xmm14[2],xmm8[2],xmm14[3],xmm8[3],xmm14[4],xmm8[4],xmm14[5],xmm8[5],xmm14[6],xmm8[6],xmm14[7],xmm8[7]2086; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2087; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm14[0,2,2,3]2088; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,3,4,5,6,7]2089; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]2090; SSE-NEXT:    movdqa %xmm15, %xmm02091; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]2092; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2093; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2094; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm0[1,3,2,3,4,5,6,7]2095; SSE-NEXT:    movdqa %xmm15, %xmm122096; SSE-NEXT:    movdqa %xmm15, %xmm142097; SSE-NEXT:    punpcklbw {{.*#+}} xmm12 = xmm12[0],xmm8[0],xmm12[1],xmm8[1],xmm12[2],xmm8[2],xmm12[3],xmm8[3],xmm12[4],xmm8[4],xmm12[5],xmm8[5],xmm12[6],xmm8[6],xmm12[7],xmm8[7]2098; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm12[0,2,2,3]2099; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm6[1,3,2,3,4,5,6,7]2100; SSE-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1]2101; SSE-NEXT:    packuswb %xmm3, %xmm02102; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload2103; SSE-NEXT:    movdqa %xmm15, %xmm132104; SSE-NEXT:    punpckhbw {{.*#+}} xmm13 = xmm13[8],xmm8[8],xmm13[9],xmm8[9],xmm13[10],xmm8[10],xmm13[11],xmm8[11],xmm13[12],xmm8[12],xmm13[13],xmm8[13],xmm13[14],xmm8[14],xmm13[15],xmm8[15]2105; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm13[0,2,2,3]2106; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,3,4,5,6,7]2107; SSE-NEXT:    punpcklbw {{.*#+}} xmm15 = xmm15[0],xmm8[0],xmm15[1],xmm8[1],xmm15[2],xmm8[2],xmm15[3],xmm8[3],xmm15[4],xmm8[4],xmm15[5],xmm8[5],xmm15[6],xmm8[6],xmm15[7],xmm8[7]2108; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm15[0,2,2,3]2109; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm6[0,1,1,3,4,5,6,7]2110; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]2111; SSE-NEXT:    movdqa %xmm11, %xmm72112; SSE-NEXT:    punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm8[8],xmm7[9],xmm8[9],xmm7[10],xmm8[10],xmm7[11],xmm8[11],xmm7[12],xmm8[12],xmm7[13],xmm8[13],xmm7[14],xmm8[14],xmm7[15],xmm8[15]2113; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm7[0,2,2,3]2114; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[1,3,2,3,4,5,6,7]2115; SSE-NEXT:    movdqa %xmm11, %xmm62116; SSE-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],xmm8[3],xmm6[4],xmm8[4],xmm6[5],xmm8[5],xmm6[6],xmm8[6],xmm6[7],xmm8[7]2117; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[0,2,2,3]2118; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[1,3,2,3,4,5,6,7]2119; SSE-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]2120; SSE-NEXT:    packuswb %xmm1, %xmm52121; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,3],xmm0[0,3]2122; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2123; SSE-NEXT:    movdqa %xmm1, %xmm02124; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]2125; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2126; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2127; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,1,3,4,5,6,7]2128; SSE-NEXT:    movdqa %xmm1, %xmm32129; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],xmm8[3],xmm3[4],xmm8[4],xmm3[5],xmm8[5],xmm3[6],xmm8[6],xmm3[7],xmm8[7]2130; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2131; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[0,2,2,3]2132; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,1,3,4,5,6,7]2133; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]2134; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload2135; SSE-NEXT:    movdqa %xmm2, %xmm02136; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]2137; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2138; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2139; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,3,2,3,4,5,6,7]2140; SSE-NEXT:    movdqa %xmm2, %xmm42141; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],xmm8[3],xmm4[4],xmm8[4],xmm4[5],xmm8[5],xmm4[6],xmm8[6],xmm4[7],xmm8[7]2142; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2143; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[0,2,2,3]2144; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[1,3,2,3,4,5,6,7]2145; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]2146; SSE-NEXT:    packuswb %xmm1, %xmm32147; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2148; SSE-NEXT:    movdqa %xmm1, %xmm02149; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]2150; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2151; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2152; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm0[0,1,1,3,4,5,6,7]2153; SSE-NEXT:    movdqa %xmm1, %xmm02154; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],xmm8[3],xmm0[4],xmm8[4],xmm0[5],xmm8[5],xmm0[6],xmm8[6],xmm0[7],xmm8[7]2155; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2156; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[0,2,2,3]2157; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm1[0,1,1,3,4,5,6,7]2158; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]2159; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2160; SSE-NEXT:    movdqa %xmm0, %xmm42161; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm8[8],xmm4[9],xmm8[9],xmm4[10],xmm8[10],xmm4[11],xmm8[11],xmm4[12],xmm8[12],xmm4[13],xmm8[13],xmm4[14],xmm8[14],xmm4[15],xmm8[15]2162; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2163; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],xmm8[3],xmm0[4],xmm8[4],xmm0[5],xmm8[5],xmm0[6],xmm8[6],xmm0[7],xmm8[7]2164; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2165; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm4[0,2,2,3]2166; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm1[1,3,2,3,4,5,6,7]2167; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[0,2,2,3]2168; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,3,2,3,4,5,6,7]2169; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]2170; SSE-NEXT:    packuswb %xmm2, %xmm12171; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,3],xmm3[0,3]2172; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload2173; SSE-NEXT:    # xmm0 = mem[3,1,2,3,4,5,6,7]2174; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm14[3,1,2,3,4,5,6,7]2175; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm0[0,1,2,3,7,5,6,7]2176; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [255,255,255,255,255,255,255,255]2177; SSE-NEXT:    pand %xmm0, %xmm32178; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,0]2179; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,6,5,4]2180; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,5,6,7]2181; SSE-NEXT:    pand %xmm0, %xmm22182; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]2183; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm2[1,0,3,2,4,5,6,7]2184; SSE-NEXT:    packuswb %xmm3, %xmm42185; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload2186; SSE-NEXT:    # xmm2 = mem[3,1,2,3,4,5,6,7]2187; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm11[3,1,2,3,4,5,6,7]2188; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,5,6,7]2189; SSE-NEXT:    pand %xmm0, %xmm22190; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,0]2191; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm2[0,1,2,3,7,6,5,4]2192; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm3[0,1,2,3,7,5,6,7]2193; SSE-NEXT:    pand %xmm0, %xmm22194; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]2195; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[1,0,3,2,4,5,6,7]2196; SSE-NEXT:    packuswb %xmm8, %xmm22197; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,3],xmm4[0,3]2198; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2199; SSE-NEXT:    # xmm3 = mem[3,1,2,3,4,5,6,7]2200; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload2201; SSE-NEXT:    # xmm4 = mem[3,1,2,3,4,5,6,7]2202; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,5,6,7]2203; SSE-NEXT:    pand %xmm0, %xmm32204; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,0]2205; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,6,5,4]2206; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,7,5,6,7]2207; SSE-NEXT:    pand %xmm0, %xmm42208; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]2209; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,0,3,2,4,5,6,7]2210; SSE-NEXT:    packuswb %xmm3, %xmm42211; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2212; SSE-NEXT:    # xmm3 = mem[3,1,2,3,4,5,6,7]2213; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload2214; SSE-NEXT:    # xmm8 = mem[3,1,2,3,4,5,6,7]2215; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,5,6,7]2216; SSE-NEXT:    pand %xmm0, %xmm32217; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,0]2218; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,6,5,4]2219; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,7,5,6,7]2220; SSE-NEXT:    pand %xmm0, %xmm82221; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,2,2,3]2222; SSE-NEXT:    pshuflw {{.*#+}} xmm11 = xmm8[1,0,3,2,4,5,6,7]2223; SSE-NEXT:    packuswb %xmm3, %xmm112224; SSE-NEXT:    shufps {{.*#+}} xmm11 = xmm11[0,3],xmm4[0,3]2225; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2226; SSE-NEXT:    # xmm3 = mem[3,1,2,3,4,5,6,7]2227; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload2228; SSE-NEXT:    # xmm4 = mem[3,1,2,3,4,5,6,7]2229; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,5,6,7]2230; SSE-NEXT:    pand %xmm0, %xmm32231; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,0]2232; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,6,5,4]2233; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,7,5,6,7]2234; SSE-NEXT:    pand %xmm0, %xmm42235; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]2236; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,0,3,2,4,5,6,7]2237; SSE-NEXT:    packuswb %xmm3, %xmm42238; SSE-NEXT:    pshuflw $231, (%rsp), %xmm3 # 16-byte Folded Reload2239; SSE-NEXT:    # xmm3 = mem[3,1,2,3,4,5,6,7]2240; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload2241; SSE-NEXT:    # xmm8 = mem[3,1,2,3,4,5,6,7]2242; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,5,6,7]2243; SSE-NEXT:    pand %xmm0, %xmm32244; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,0]2245; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,6,5,4]2246; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,7,5,6,7]2247; SSE-NEXT:    pand %xmm0, %xmm82248; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,2,2,3]2249; SSE-NEXT:    pshuflw {{.*#+}} xmm14 = xmm8[1,0,3,2,4,5,6,7]2250; SSE-NEXT:    packuswb %xmm3, %xmm142251; SSE-NEXT:    shufps {{.*#+}} xmm14 = xmm14[0,3],xmm4[0,3]2252; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2253; SSE-NEXT:    # xmm3 = mem[3,1,2,3,4,5,6,7]2254; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload2255; SSE-NEXT:    # xmm4 = mem[3,1,2,3,4,5,6,7]2256; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,5,6,7]2257; SSE-NEXT:    pand %xmm0, %xmm32258; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,0]2259; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,6,5,4]2260; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,7,5,6,7]2261; SSE-NEXT:    pand %xmm0, %xmm42262; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]2263; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,0,3,2,4,5,6,7]2264; SSE-NEXT:    packuswb %xmm3, %xmm42265; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2266; SSE-NEXT:    # xmm3 = mem[3,1,2,3,4,5,6,7]2267; SSE-NEXT:    pshuflw $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload2268; SSE-NEXT:    # xmm8 = mem[3,1,2,3,4,5,6,7]2269; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,5,6,7]2270; SSE-NEXT:    pand %xmm0, %xmm32271; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,7,5,6,7]2272; SSE-NEXT:    pand %xmm0, %xmm82273; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,1,2,0]2274; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm0[0,1,2,3,7,6,5,4]2275; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm8[0,2,2,3]2276; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,0,3,2,4,5,6,7]2277; SSE-NEXT:    packuswb %xmm3, %xmm02278; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,3],xmm4[0,3]2279; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2280; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2281; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,3,1,4,5,6,7]2282; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload2283; SSE-NEXT:    # xmm4 = mem[3,1,2,3]2284; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,3,1,4,5,6,7]2285; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2286; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2287; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2288; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]2289; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm12[3,1,2,3]2290; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[3,1,2,3,4,5,6,7]2291; SSE-NEXT:    punpckldq {{.*#+}} xmm8 = xmm8[0],xmm3[0],xmm8[1],xmm3[1]2292; SSE-NEXT:    packuswb %xmm4, %xmm82293; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm13[3,1,2,3]2294; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,3,1,4,5,6,7]2295; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm15[3,1,2,3]2296; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,3,1,4,5,6,7]2297; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2298; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm7[3,1,2,3]2299; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]2300; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[3,1,2,3]2301; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[3,1,2,3,4,5,6,7]2302; SSE-NEXT:    punpckldq {{.*#+}} xmm6 = xmm6[0],xmm3[0],xmm6[1],xmm3[1]2303; SSE-NEXT:    packuswb %xmm4, %xmm62304; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[0,3],xmm8[0,3]2305; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2306; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2307; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,3,1,4,5,6,7]2308; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload2309; SSE-NEXT:    # xmm4 = mem[3,1,2,3]2310; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,3,1,4,5,6,7]2311; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2312; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2313; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2314; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]2315; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload2316; SSE-NEXT:    # xmm7 = mem[3,1,2,3]2317; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm7[3,1,2,3,4,5,6,7]2318; SSE-NEXT:    punpckldq {{.*#+}} xmm8 = xmm8[0],xmm3[0],xmm8[1],xmm3[1]2319; SSE-NEXT:    packuswb %xmm4, %xmm82320; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2321; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2322; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,3,1,4,5,6,7]2323; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload2324; SSE-NEXT:    # xmm4 = mem[3,1,2,3]2325; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,3,1,4,5,6,7]2326; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2327; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2328; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2329; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]2330; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload2331; SSE-NEXT:    # xmm7 = mem[3,1,2,3]2332; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[3,1,2,3,4,5,6,7]2333; SSE-NEXT:    punpckldq {{.*#+}} xmm7 = xmm7[0],xmm3[0],xmm7[1],xmm3[1]2334; SSE-NEXT:    packuswb %xmm4, %xmm72335; SSE-NEXT:    shufps {{.*#+}} xmm7 = xmm7[0,3],xmm8[0,3]2336; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2337; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2338; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,3,1,4,5,6,7]2339; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload2340; SSE-NEXT:    # xmm4 = mem[3,1,2,3]2341; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,3,1,4,5,6,7]2342; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2343; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2344; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2345; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]2346; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload2347; SSE-NEXT:    # xmm8 = mem[3,1,2,3]2348; SSE-NEXT:    pshuflw {{.*#+}} xmm12 = xmm8[3,1,2,3,4,5,6,7]2349; SSE-NEXT:    punpckldq {{.*#+}} xmm12 = xmm12[0],xmm3[0],xmm12[1],xmm3[1]2350; SSE-NEXT:    packuswb %xmm4, %xmm122351; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2352; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2353; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,3,1,4,5,6,7]2354; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload2355; SSE-NEXT:    # xmm4 = mem[3,1,2,3]2356; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,3,1,4,5,6,7]2357; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2358; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2359; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2360; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]2361; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload2362; SSE-NEXT:    # xmm8 = mem[3,1,2,3]2363; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[3,1,2,3,4,5,6,7]2364; SSE-NEXT:    punpckldq {{.*#+}} xmm8 = xmm8[0],xmm3[0],xmm8[1],xmm3[1]2365; SSE-NEXT:    packuswb %xmm4, %xmm82366; SSE-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,3],xmm12[0,3]2367; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2368; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2369; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,3,1,4,5,6,7]2370; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload2371; SSE-NEXT:    # xmm4 = mem[3,1,2,3]2372; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,3,1,4,5,6,7]2373; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2374; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2375; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2376; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]2377; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload2378; SSE-NEXT:    # xmm12 = mem[3,1,2,3]2379; SSE-NEXT:    pshuflw {{.*#+}} xmm12 = xmm12[3,1,2,3,4,5,6,7]2380; SSE-NEXT:    punpckldq {{.*#+}} xmm12 = xmm12[0],xmm3[0],xmm12[1],xmm3[1]2381; SSE-NEXT:    packuswb %xmm4, %xmm122382; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2383; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2384; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,3,1,4,5,6,7]2385; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload2386; SSE-NEXT:    # xmm4 = mem[3,1,2,3]2387; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,3,1,4,5,6,7]2388; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2389; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2390; SSE-NEXT:    # xmm3 = mem[3,1,2,3]2391; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]2392; SSE-NEXT:    pshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload2393; SSE-NEXT:    # xmm13 = mem[3,1,2,3]2394; SSE-NEXT:    pshuflw {{.*#+}} xmm13 = xmm13[3,1,2,3,4,5,6,7]2395; SSE-NEXT:    punpckldq {{.*#+}} xmm13 = xmm13[0],xmm3[0],xmm13[1],xmm3[1]2396; SSE-NEXT:    packuswb %xmm4, %xmm132397; SSE-NEXT:    shufps {{.*#+}} xmm13 = xmm13[0,3],xmm12[0,3]2398; SSE-NEXT:    movdqa %xmm9, 48(%rsi)2399; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload2400; SSE-NEXT:    movaps %xmm3, (%rsi)2401; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload2402; SSE-NEXT:    movaps %xmm3, 32(%rsi)2403; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload2404; SSE-NEXT:    movaps %xmm3, 16(%rsi)2405; SSE-NEXT:    movaps %xmm1, 48(%rdx)2406; SSE-NEXT:    movaps %xmm5, (%rdx)2407; SSE-NEXT:    movaps %xmm10, 32(%rdx)2408; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2409; SSE-NEXT:    movaps %xmm1, 16(%rdx)2410; SSE-NEXT:    movaps %xmm0, 48(%rcx)2411; SSE-NEXT:    movaps %xmm14, 32(%rcx)2412; SSE-NEXT:    movaps %xmm11, 16(%rcx)2413; SSE-NEXT:    movaps %xmm2, (%rcx)2414; SSE-NEXT:    movaps %xmm13, 48(%r8)2415; SSE-NEXT:    movaps %xmm8, 32(%r8)2416; SSE-NEXT:    movaps %xmm7, 16(%r8)2417; SSE-NEXT:    movaps %xmm6, (%r8)2418; SSE-NEXT:    addq $600, %rsp # imm = 0x2582419; SSE-NEXT:    retq2420;2421; AVX-LABEL: load_i8_stride4_vf64:2422; AVX:       # %bb.0:2423; AVX-NEXT:    subq $328, %rsp # imm = 0x1482424; AVX-NEXT:    vbroadcastss {{.*#+}} xmm1 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]2425; AVX-NEXT:    vmovdqa 112(%rdi), %xmm62426; AVX-NEXT:    vpshufb %xmm1, %xmm6, %xmm02427; AVX-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2428; AVX-NEXT:    vmovdqa 96(%rdi), %xmm82429; AVX-NEXT:    vpshufb %xmm1, %xmm8, %xmm22430; AVX-NEXT:    vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]2431; AVX-NEXT:    vmovd {{.*#+}} xmm3 = [0,4,8,12,0,0,0,0,0,0,0,0,0,0,0,0]2432; AVX-NEXT:    vmovdqa 80(%rdi), %xmm02433; AVX-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2434; AVX-NEXT:    vpshufb %xmm3, %xmm0, %xmm52435; AVX-NEXT:    vmovdqa 64(%rdi), %xmm02436; AVX-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2437; AVX-NEXT:    vpshufb %xmm3, %xmm0, %xmm72438; AVX-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm7[0],xmm5[0],xmm7[1],xmm5[1]2439; AVX-NEXT:    vpblendw {{.*#+}} xmm2 = xmm5[0,1,2,3],xmm2[4,5,6,7]2440; AVX-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm92441; AVX-NEXT:    vmovdqa (%rdi), %xmm02442; AVX-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2443; AVX-NEXT:    vmovdqa 16(%rdi), %xmm22444; AVX-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2445; AVX-NEXT:    vmovdqa 32(%rdi), %xmm42446; AVX-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2447; AVX-NEXT:    vmovdqa 48(%rdi), %xmm52448; AVX-NEXT:    vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2449; AVX-NEXT:    vpshufb %xmm1, %xmm5, %xmm102450; AVX-NEXT:    vpshufb %xmm1, %xmm4, %xmm112451; AVX-NEXT:    vpunpckldq {{.*#+}} xmm10 = xmm11[0],xmm10[0],xmm11[1],xmm10[1]2452; AVX-NEXT:    vpshufb %xmm3, %xmm2, %xmm112453; AVX-NEXT:    vpshufb %xmm3, %xmm0, %xmm122454; AVX-NEXT:    vpunpckldq {{.*#+}} xmm11 = xmm12[0],xmm11[0],xmm12[1],xmm11[1]2455; AVX-NEXT:    vpblendw {{.*#+}} xmm10 = xmm11[0,1,2,3],xmm10[4,5,6,7]2456; AVX-NEXT:    vblendps {{.*#+}} ymm0 = ymm10[0,1,2,3],ymm9[4,5,6,7]2457; AVX-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2458; AVX-NEXT:    vmovdqa 240(%rdi), %xmm02459; AVX-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2460; AVX-NEXT:    vpshufb %xmm1, %xmm0, %xmm112461; AVX-NEXT:    vmovdqa 224(%rdi), %xmm02462; AVX-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2463; AVX-NEXT:    vpshufb %xmm1, %xmm0, %xmm122464; AVX-NEXT:    vpunpckldq {{.*#+}} xmm13 = xmm12[0],xmm11[0],xmm12[1],xmm11[1]2465; AVX-NEXT:    vmovdqa 208(%rdi), %xmm02466; AVX-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2467; AVX-NEXT:    vpshufb %xmm3, %xmm0, %xmm142468; AVX-NEXT:    vmovdqa 192(%rdi), %xmm02469; AVX-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2470; AVX-NEXT:    vpshufb %xmm3, %xmm0, %xmm152471; AVX-NEXT:    vpunpckldq {{.*#+}} xmm14 = xmm15[0],xmm14[0],xmm15[1],xmm14[1]2472; AVX-NEXT:    vpblendw {{.*#+}} xmm2 = xmm14[0,1,2,3],xmm13[4,5,6,7]2473; AVX-NEXT:    vmovdqa 176(%rdi), %xmm02474; AVX-NEXT:    vmovdqa %xmm0, (%rsp) # 16-byte Spill2475; AVX-NEXT:    vpshufb %xmm1, %xmm0, %xmm152476; AVX-NEXT:    vmovdqa 160(%rdi), %xmm02477; AVX-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2478; AVX-NEXT:    vpshufb %xmm1, %xmm0, %xmm12479; AVX-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm15[0],xmm1[1],xmm15[1]2480; AVX-NEXT:    vmovdqa 144(%rdi), %xmm02481; AVX-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2482; AVX-NEXT:    vpshufb %xmm3, %xmm0, %xmm02483; AVX-NEXT:    vmovdqa 128(%rdi), %xmm42484; AVX-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2485; AVX-NEXT:    vpshufb %xmm3, %xmm4, %xmm32486; AVX-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]2487; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]2488; AVX-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm12489; AVX-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]2490; AVX-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2491; AVX-NEXT:    vbroadcastss {{.*#+}} xmm0 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]2492; AVX-NEXT:    vpshufb %xmm0, %xmm6, %xmm12493; AVX-NEXT:    vmovdqa %xmm8, %xmm42494; AVX-NEXT:    vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2495; AVX-NEXT:    vpshufb %xmm0, %xmm8, %xmm22496; AVX-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2497; AVX-NEXT:    vmovd {{.*#+}} xmm2 = [1,5,9,13,0,0,0,0,0,0,0,0,0,0,0,0]2498; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload2499; AVX-NEXT:    vpshufb %xmm2, %xmm7, %xmm32500; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload2501; AVX-NEXT:    vpshufb %xmm2, %xmm8, %xmm52502; AVX-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]2503; AVX-NEXT:    vpblendw {{.*#+}} xmm1 = xmm3[0,1,2,3],xmm1[4,5,6,7]2504; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload2505; AVX-NEXT:    vpshufb %xmm0, %xmm12, %xmm32506; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload2507; AVX-NEXT:    vpshufb %xmm0, %xmm11, %xmm52508; AVX-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]2509; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload2510; AVX-NEXT:    vpshufb %xmm2, %xmm10, %xmm52511; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload2512; AVX-NEXT:    vpshufb %xmm2, %xmm9, %xmm62513; AVX-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm6[0],xmm5[0],xmm6[1],xmm5[1]2514; AVX-NEXT:    vpblendw {{.*#+}} xmm3 = xmm5[0,1,2,3],xmm3[4,5,6,7]2515; AVX-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm12516; AVX-NEXT:    vblendps {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]2517; AVX-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2518; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload2519; AVX-NEXT:    vpshufb %xmm0, %xmm13, %xmm12520; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload2521; AVX-NEXT:    vpshufb %xmm0, %xmm14, %xmm32522; AVX-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]2523; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload2524; AVX-NEXT:    vpshufb %xmm2, %xmm15, %xmm32525; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload2526; AVX-NEXT:    vpshufb %xmm2, %xmm5, %xmm52527; AVX-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]2528; AVX-NEXT:    vpblendw {{.*#+}} xmm1 = xmm3[0,1,2,3],xmm1[4,5,6,7]2529; AVX-NEXT:    vmovdqa (%rsp), %xmm3 # 16-byte Reload2530; AVX-NEXT:    vpshufb %xmm0, %xmm3, %xmm32531; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload2532; AVX-NEXT:    vpshufb %xmm0, %xmm5, %xmm02533; AVX-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]2534; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload2535; AVX-NEXT:    vpshufb %xmm2, %xmm3, %xmm32536; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload2537; AVX-NEXT:    vpshufb %xmm2, %xmm5, %xmm22538; AVX-NEXT:    vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]2539; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm2[0,1,2,3],xmm0[4,5,6,7]2540; AVX-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm12541; AVX-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]2542; AVX-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2543; AVX-NEXT:    vbroadcastss {{.*#+}} xmm0 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]2544; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2545; AVX-NEXT:    vpshufb %xmm0, %xmm1, %xmm12546; AVX-NEXT:    vpshufb %xmm0, %xmm4, %xmm22547; AVX-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2548; AVX-NEXT:    vmovd {{.*#+}} xmm2 = [2,6,10,14,0,0,0,0,0,0,0,0,0,0,0,0]2549; AVX-NEXT:    vpshufb %xmm2, %xmm7, %xmm32550; AVX-NEXT:    vpshufb %xmm2, %xmm8, %xmm52551; AVX-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]2552; AVX-NEXT:    vpblendw {{.*#+}} xmm1 = xmm3[0,1,2,3],xmm1[4,5,6,7]2553; AVX-NEXT:    vpshufb %xmm0, %xmm12, %xmm32554; AVX-NEXT:    vpshufb %xmm0, %xmm11, %xmm52555; AVX-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]2556; AVX-NEXT:    vpshufb %xmm2, %xmm10, %xmm52557; AVX-NEXT:    vpshufb %xmm2, %xmm9, %xmm62558; AVX-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm6[0],xmm5[0],xmm6[1],xmm5[1]2559; AVX-NEXT:    vpblendw {{.*#+}} xmm3 = xmm5[0,1,2,3],xmm3[4,5,6,7]2560; AVX-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm12561; AVX-NEXT:    vblendps {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]2562; AVX-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2563; AVX-NEXT:    vpshufb %xmm0, %xmm13, %xmm12564; AVX-NEXT:    vpshufb %xmm0, %xmm14, %xmm32565; AVX-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]2566; AVX-NEXT:    vpshufb %xmm2, %xmm15, %xmm32567; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload2568; AVX-NEXT:    vpshufb %xmm2, %xmm4, %xmm52569; AVX-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]2570; AVX-NEXT:    vpblendw {{.*#+}} xmm1 = xmm3[0,1,2,3],xmm1[4,5,6,7]2571; AVX-NEXT:    vmovdqa (%rsp), %xmm7 # 16-byte Reload2572; AVX-NEXT:    vpshufb %xmm0, %xmm7, %xmm32573; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload2574; AVX-NEXT:    vpshufb %xmm0, %xmm8, %xmm02575; AVX-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]2576; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload2577; AVX-NEXT:    vpshufb %xmm2, %xmm9, %xmm32578; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload2579; AVX-NEXT:    vpshufb %xmm2, %xmm10, %xmm22580; AVX-NEXT:    vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]2581; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm2[0,1,2,3],xmm0[4,5,6,7]2582; AVX-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm12583; AVX-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]2584; AVX-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2585; AVX-NEXT:    vbroadcastss {{.*#+}} xmm0 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]2586; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2587; AVX-NEXT:    vpshufb %xmm0, %xmm1, %xmm12588; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload2589; AVX-NEXT:    vpshufb %xmm0, %xmm2, %xmm22590; AVX-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2591; AVX-NEXT:    vmovd {{.*#+}} xmm2 = [3,7,11,15,0,0,0,0,0,0,0,0,0,0,0,0]2592; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload2593; AVX-NEXT:    vpshufb %xmm2, %xmm3, %xmm32594; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload2595; AVX-NEXT:    vpshufb %xmm2, %xmm5, %xmm52596; AVX-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]2597; AVX-NEXT:    vpblendw {{.*#+}} xmm1 = xmm3[0,1,2,3],xmm1[4,5,6,7]2598; AVX-NEXT:    vpshufb %xmm0, %xmm12, %xmm32599; AVX-NEXT:    vpshufb %xmm0, %xmm11, %xmm52600; AVX-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]2601; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload2602; AVX-NEXT:    vpshufb %xmm2, %xmm5, %xmm52603; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload2604; AVX-NEXT:    vpshufb %xmm2, %xmm6, %xmm62605; AVX-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm6[0],xmm5[0],xmm6[1],xmm5[1]2606; AVX-NEXT:    vpblendw {{.*#+}} xmm3 = xmm5[0,1,2,3],xmm3[4,5,6,7]2607; AVX-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm12608; AVX-NEXT:    vblendps {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]2609; AVX-NEXT:    vpshufb %xmm0, %xmm13, %xmm32610; AVX-NEXT:    vpshufb %xmm0, %xmm14, %xmm52611; AVX-NEXT:    vpunpckldq {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]2612; AVX-NEXT:    vpshufb %xmm2, %xmm15, %xmm52613; AVX-NEXT:    vpshufb %xmm2, %xmm4, %xmm62614; AVX-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm6[0],xmm5[0],xmm6[1],xmm5[1]2615; AVX-NEXT:    vpblendw {{.*#+}} xmm3 = xmm5[0,1,2,3],xmm3[4,5,6,7]2616; AVX-NEXT:    vpshufb %xmm0, %xmm7, %xmm52617; AVX-NEXT:    vpshufb %xmm0, %xmm8, %xmm02618; AVX-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1]2619; AVX-NEXT:    vpshufb %xmm2, %xmm9, %xmm52620; AVX-NEXT:    vpshufb %xmm2, %xmm10, %xmm22621; AVX-NEXT:    vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]2622; AVX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm2[0,1,2,3],xmm0[4,5,6,7]2623; AVX-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm22624; AVX-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5,6,7]2625; AVX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload2626; AVX-NEXT:    vmovaps %ymm2, 32(%rsi)2627; AVX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload2628; AVX-NEXT:    vmovaps %ymm2, (%rsi)2629; AVX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload2630; AVX-NEXT:    vmovaps %ymm2, 32(%rdx)2631; AVX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload2632; AVX-NEXT:    vmovaps %ymm2, (%rdx)2633; AVX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload2634; AVX-NEXT:    vmovaps %ymm2, 32(%rcx)2635; AVX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload2636; AVX-NEXT:    vmovaps %ymm2, (%rcx)2637; AVX-NEXT:    vmovaps %ymm0, 32(%r8)2638; AVX-NEXT:    vmovaps %ymm1, (%r8)2639; AVX-NEXT:    addq $328, %rsp # imm = 0x1482640; AVX-NEXT:    vzeroupper2641; AVX-NEXT:    retq2642;2643; AVX2-LABEL: load_i8_stride4_vf64:2644; AVX2:       # %bb.0:2645; AVX2-NEXT:    vmovdqa 160(%rdi), %ymm02646; AVX2-NEXT:    vmovdqa 128(%rdi), %ymm12647; AVX2-NEXT:    vmovdqa 192(%rdi), %ymm22648; AVX2-NEXT:    vmovdqa 224(%rdi), %ymm42649; AVX2-NEXT:    vmovdqa (%rdi), %ymm72650; AVX2-NEXT:    vmovdqa 32(%rdi), %ymm62651; AVX2-NEXT:    vmovdqa 64(%rdi), %ymm82652; AVX2-NEXT:    vmovdqa 96(%rdi), %ymm92653; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm10 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]2654; AVX2-NEXT:    vpshufb %ymm10, %ymm9, %ymm52655; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm3 = [0,4,0,4,0,4,0,4]2656; AVX2-NEXT:    vpermd %ymm5, %ymm3, %ymm52657; AVX2-NEXT:    vpshufb %ymm10, %ymm8, %ymm112658; AVX2-NEXT:    vpermd %ymm11, %ymm3, %ymm112659; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm11[0,1,2,3,4,5],ymm5[6,7]2660; AVX2-NEXT:    vpshufb %ymm10, %ymm7, %ymm112661; AVX2-NEXT:    vextracti128 $1, %ymm11, %xmm122662; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1]2663; AVX2-NEXT:    vpshufb %ymm10, %ymm6, %ymm122664; AVX2-NEXT:    vpermd %ymm12, %ymm3, %ymm122665; AVX2-NEXT:    vpblendd {{.*#+}} xmm11 = xmm11[0,1],xmm12[2,3]2666; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm11[0,1,2,3],ymm5[4,5,6,7]2667; AVX2-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2668; AVX2-NEXT:    vpshufb %ymm10, %ymm4, %ymm112669; AVX2-NEXT:    vpermd %ymm11, %ymm3, %ymm112670; AVX2-NEXT:    vpshufb %ymm10, %ymm2, %ymm122671; AVX2-NEXT:    vpermd %ymm12, %ymm3, %ymm122672; AVX2-NEXT:    vpblendd {{.*#+}} ymm11 = ymm12[0,1,2,3,4,5],ymm11[6,7]2673; AVX2-NEXT:    vpshufb %ymm10, %ymm1, %ymm122674; AVX2-NEXT:    vextracti128 $1, %ymm12, %xmm132675; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm12 = xmm12[0],xmm13[0],xmm12[1],xmm13[1]2676; AVX2-NEXT:    vpshufb %ymm10, %ymm0, %ymm102677; AVX2-NEXT:    vpermd %ymm10, %ymm3, %ymm102678; AVX2-NEXT:    vpblendd {{.*#+}} xmm10 = xmm12[0,1],xmm10[2,3]2679; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm10[0,1,2,3],ymm11[4,5,6,7]2680; AVX2-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2681; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm12 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]2682; AVX2-NEXT:    vpshufb %ymm12, %ymm9, %ymm112683; AVX2-NEXT:    vpermd %ymm11, %ymm3, %ymm112684; AVX2-NEXT:    vpshufb %ymm12, %ymm8, %ymm132685; AVX2-NEXT:    vpermd %ymm13, %ymm3, %ymm132686; AVX2-NEXT:    vpblendd {{.*#+}} ymm11 = ymm13[0,1,2,3,4,5],ymm11[6,7]2687; AVX2-NEXT:    vpshufb %ymm12, %ymm7, %ymm132688; AVX2-NEXT:    vextracti128 $1, %ymm13, %xmm142689; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm13 = xmm13[0],xmm14[0],xmm13[1],xmm14[1]2690; AVX2-NEXT:    vpshufb %ymm12, %ymm6, %ymm142691; AVX2-NEXT:    vpermd %ymm14, %ymm3, %ymm142692; AVX2-NEXT:    vpblendd {{.*#+}} xmm13 = xmm13[0,1],xmm14[2,3]2693; AVX2-NEXT:    vpblendd {{.*#+}} ymm11 = ymm13[0,1,2,3],ymm11[4,5,6,7]2694; AVX2-NEXT:    vpshufb %ymm12, %ymm4, %ymm132695; AVX2-NEXT:    vpermd %ymm13, %ymm3, %ymm132696; AVX2-NEXT:    vpshufb %ymm12, %ymm2, %ymm142697; AVX2-NEXT:    vpermd %ymm14, %ymm3, %ymm142698; AVX2-NEXT:    vpblendd {{.*#+}} ymm13 = ymm14[0,1,2,3,4,5],ymm13[6,7]2699; AVX2-NEXT:    vpshufb %ymm12, %ymm1, %ymm142700; AVX2-NEXT:    vextracti128 $1, %ymm14, %xmm152701; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm14 = xmm14[0],xmm15[0],xmm14[1],xmm15[1]2702; AVX2-NEXT:    vpshufb %ymm12, %ymm0, %ymm122703; AVX2-NEXT:    vpermd %ymm12, %ymm3, %ymm122704; AVX2-NEXT:    vpblendd {{.*#+}} xmm12 = xmm14[0,1],xmm12[2,3]2705; AVX2-NEXT:    vpblendd {{.*#+}} ymm12 = ymm12[0,1,2,3],ymm13[4,5,6,7]2706; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm14 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]2707; AVX2-NEXT:    vpshufb %ymm14, %ymm9, %ymm132708; AVX2-NEXT:    vpermd %ymm13, %ymm3, %ymm132709; AVX2-NEXT:    vpshufb %ymm14, %ymm8, %ymm152710; AVX2-NEXT:    vpermd %ymm15, %ymm3, %ymm152711; AVX2-NEXT:    vpblendd {{.*#+}} ymm13 = ymm15[0,1,2,3,4,5],ymm13[6,7]2712; AVX2-NEXT:    vpshufb %ymm14, %ymm7, %ymm152713; AVX2-NEXT:    vextracti128 $1, %ymm15, %xmm52714; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm15[0],xmm5[0],xmm15[1],xmm5[1]2715; AVX2-NEXT:    vpshufb %ymm14, %ymm6, %ymm152716; AVX2-NEXT:    vpermd %ymm15, %ymm3, %ymm152717; AVX2-NEXT:    vpblendd {{.*#+}} xmm5 = xmm5[0,1],xmm15[2,3]2718; AVX2-NEXT:    vpblendd {{.*#+}} ymm13 = ymm5[0,1,2,3],ymm13[4,5,6,7]2719; AVX2-NEXT:    vpshufb %ymm14, %ymm4, %ymm52720; AVX2-NEXT:    vpermd %ymm5, %ymm3, %ymm52721; AVX2-NEXT:    vpshufb %ymm14, %ymm2, %ymm152722; AVX2-NEXT:    vpermd %ymm15, %ymm3, %ymm152723; AVX2-NEXT:    vpblendd {{.*#+}} ymm5 = ymm15[0,1,2,3,4,5],ymm5[6,7]2724; AVX2-NEXT:    vpshufb %ymm14, %ymm1, %ymm152725; AVX2-NEXT:    vextracti128 $1, %ymm15, %xmm102726; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm10 = xmm15[0],xmm10[0],xmm15[1],xmm10[1]2727; AVX2-NEXT:    vpshufb %ymm14, %ymm0, %ymm142728; AVX2-NEXT:    vpermd %ymm14, %ymm3, %ymm142729; AVX2-NEXT:    vpblendd {{.*#+}} xmm10 = xmm10[0,1],xmm14[2,3]2730; AVX2-NEXT:    vpblendd {{.*#+}} ymm14 = ymm10[0,1,2,3],ymm5[4,5,6,7]2731; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]2732; AVX2-NEXT:    vpshufb %ymm5, %ymm9, %ymm92733; AVX2-NEXT:    vpermd %ymm9, %ymm3, %ymm92734; AVX2-NEXT:    vpshufb %ymm5, %ymm8, %ymm82735; AVX2-NEXT:    vpermd %ymm8, %ymm3, %ymm82736; AVX2-NEXT:    vpblendd {{.*#+}} ymm8 = ymm8[0,1,2,3,4,5],ymm9[6,7]2737; AVX2-NEXT:    vpshufb %ymm5, %ymm7, %ymm72738; AVX2-NEXT:    vextracti128 $1, %ymm7, %xmm92739; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm7 = xmm7[0],xmm9[0],xmm7[1],xmm9[1]2740; AVX2-NEXT:    vpshufb %ymm5, %ymm6, %ymm62741; AVX2-NEXT:    vpermd %ymm6, %ymm3, %ymm62742; AVX2-NEXT:    vpblendd {{.*#+}} xmm6 = xmm7[0,1],xmm6[2,3]2743; AVX2-NEXT:    vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm8[4,5,6,7]2744; AVX2-NEXT:    vpshufb %ymm5, %ymm4, %ymm42745; AVX2-NEXT:    vpermd %ymm4, %ymm3, %ymm42746; AVX2-NEXT:    vpshufb %ymm5, %ymm2, %ymm22747; AVX2-NEXT:    vpermd %ymm2, %ymm3, %ymm22748; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6,7]2749; AVX2-NEXT:    vpshufb %ymm5, %ymm1, %ymm12750; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm42751; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]2752; AVX2-NEXT:    vpshufb %ymm5, %ymm0, %ymm02753; AVX2-NEXT:    vpermd %ymm0, %ymm3, %ymm02754; AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]2755; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5,6,7]2756; AVX2-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload2757; AVX2-NEXT:    vmovaps %ymm1, 32(%rsi)2758; AVX2-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload2759; AVX2-NEXT:    vmovaps %ymm1, (%rsi)2760; AVX2-NEXT:    vmovdqa %ymm12, 32(%rdx)2761; AVX2-NEXT:    vmovdqa %ymm11, (%rdx)2762; AVX2-NEXT:    vmovdqa %ymm14, 32(%rcx)2763; AVX2-NEXT:    vmovdqa %ymm13, (%rcx)2764; AVX2-NEXT:    vmovdqa %ymm0, 32(%r8)2765; AVX2-NEXT:    vmovdqa %ymm6, (%r8)2766; AVX2-NEXT:    vzeroupper2767; AVX2-NEXT:    retq2768;2769; AVX2-FP-LABEL: load_i8_stride4_vf64:2770; AVX2-FP:       # %bb.0:2771; AVX2-FP-NEXT:    vmovdqa 160(%rdi), %ymm02772; AVX2-FP-NEXT:    vmovdqa 128(%rdi), %ymm12773; AVX2-FP-NEXT:    vmovdqa 192(%rdi), %ymm22774; AVX2-FP-NEXT:    vmovdqa 224(%rdi), %ymm42775; AVX2-FP-NEXT:    vmovdqa (%rdi), %ymm72776; AVX2-FP-NEXT:    vmovdqa 32(%rdi), %ymm62777; AVX2-FP-NEXT:    vmovdqa 64(%rdi), %ymm82778; AVX2-FP-NEXT:    vmovdqa 96(%rdi), %ymm92779; AVX2-FP-NEXT:    vpbroadcastd {{.*#+}} ymm10 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]2780; AVX2-FP-NEXT:    vpshufb %ymm10, %ymm9, %ymm52781; AVX2-FP-NEXT:    vpbroadcastq {{.*#+}} ymm3 = [0,4,0,4,0,4,0,4]2782; AVX2-FP-NEXT:    vpermd %ymm5, %ymm3, %ymm52783; AVX2-FP-NEXT:    vpshufb %ymm10, %ymm8, %ymm112784; AVX2-FP-NEXT:    vpermd %ymm11, %ymm3, %ymm112785; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm5 = ymm11[0,1,2,3,4,5],ymm5[6,7]2786; AVX2-FP-NEXT:    vpshufb %ymm10, %ymm7, %ymm112787; AVX2-FP-NEXT:    vextracti128 $1, %ymm11, %xmm122788; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1]2789; AVX2-FP-NEXT:    vpshufb %ymm10, %ymm6, %ymm122790; AVX2-FP-NEXT:    vpermd %ymm12, %ymm3, %ymm122791; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm11 = xmm11[0,1],xmm12[2,3]2792; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm5 = ymm11[0,1,2,3],ymm5[4,5,6,7]2793; AVX2-FP-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2794; AVX2-FP-NEXT:    vpshufb %ymm10, %ymm4, %ymm112795; AVX2-FP-NEXT:    vpermd %ymm11, %ymm3, %ymm112796; AVX2-FP-NEXT:    vpshufb %ymm10, %ymm2, %ymm122797; AVX2-FP-NEXT:    vpermd %ymm12, %ymm3, %ymm122798; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm11 = ymm12[0,1,2,3,4,5],ymm11[6,7]2799; AVX2-FP-NEXT:    vpshufb %ymm10, %ymm1, %ymm122800; AVX2-FP-NEXT:    vextracti128 $1, %ymm12, %xmm132801; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm12 = xmm12[0],xmm13[0],xmm12[1],xmm13[1]2802; AVX2-FP-NEXT:    vpshufb %ymm10, %ymm0, %ymm102803; AVX2-FP-NEXT:    vpermd %ymm10, %ymm3, %ymm102804; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm10 = xmm12[0,1],xmm10[2,3]2805; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm5 = ymm10[0,1,2,3],ymm11[4,5,6,7]2806; AVX2-FP-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2807; AVX2-FP-NEXT:    vpbroadcastd {{.*#+}} ymm12 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]2808; AVX2-FP-NEXT:    vpshufb %ymm12, %ymm9, %ymm112809; AVX2-FP-NEXT:    vpermd %ymm11, %ymm3, %ymm112810; AVX2-FP-NEXT:    vpshufb %ymm12, %ymm8, %ymm132811; AVX2-FP-NEXT:    vpermd %ymm13, %ymm3, %ymm132812; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm11 = ymm13[0,1,2,3,4,5],ymm11[6,7]2813; AVX2-FP-NEXT:    vpshufb %ymm12, %ymm7, %ymm132814; AVX2-FP-NEXT:    vextracti128 $1, %ymm13, %xmm142815; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm13 = xmm13[0],xmm14[0],xmm13[1],xmm14[1]2816; AVX2-FP-NEXT:    vpshufb %ymm12, %ymm6, %ymm142817; AVX2-FP-NEXT:    vpermd %ymm14, %ymm3, %ymm142818; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm13 = xmm13[0,1],xmm14[2,3]2819; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm11 = ymm13[0,1,2,3],ymm11[4,5,6,7]2820; AVX2-FP-NEXT:    vpshufb %ymm12, %ymm4, %ymm132821; AVX2-FP-NEXT:    vpermd %ymm13, %ymm3, %ymm132822; AVX2-FP-NEXT:    vpshufb %ymm12, %ymm2, %ymm142823; AVX2-FP-NEXT:    vpermd %ymm14, %ymm3, %ymm142824; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm13 = ymm14[0,1,2,3,4,5],ymm13[6,7]2825; AVX2-FP-NEXT:    vpshufb %ymm12, %ymm1, %ymm142826; AVX2-FP-NEXT:    vextracti128 $1, %ymm14, %xmm152827; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm14 = xmm14[0],xmm15[0],xmm14[1],xmm15[1]2828; AVX2-FP-NEXT:    vpshufb %ymm12, %ymm0, %ymm122829; AVX2-FP-NEXT:    vpermd %ymm12, %ymm3, %ymm122830; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm12 = xmm14[0,1],xmm12[2,3]2831; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm12 = ymm12[0,1,2,3],ymm13[4,5,6,7]2832; AVX2-FP-NEXT:    vpbroadcastd {{.*#+}} ymm14 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]2833; AVX2-FP-NEXT:    vpshufb %ymm14, %ymm9, %ymm132834; AVX2-FP-NEXT:    vpermd %ymm13, %ymm3, %ymm132835; AVX2-FP-NEXT:    vpshufb %ymm14, %ymm8, %ymm152836; AVX2-FP-NEXT:    vpermd %ymm15, %ymm3, %ymm152837; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm13 = ymm15[0,1,2,3,4,5],ymm13[6,7]2838; AVX2-FP-NEXT:    vpshufb %ymm14, %ymm7, %ymm152839; AVX2-FP-NEXT:    vextracti128 $1, %ymm15, %xmm52840; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm15[0],xmm5[0],xmm15[1],xmm5[1]2841; AVX2-FP-NEXT:    vpshufb %ymm14, %ymm6, %ymm152842; AVX2-FP-NEXT:    vpermd %ymm15, %ymm3, %ymm152843; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm5 = xmm5[0,1],xmm15[2,3]2844; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm13 = ymm5[0,1,2,3],ymm13[4,5,6,7]2845; AVX2-FP-NEXT:    vpshufb %ymm14, %ymm4, %ymm52846; AVX2-FP-NEXT:    vpermd %ymm5, %ymm3, %ymm52847; AVX2-FP-NEXT:    vpshufb %ymm14, %ymm2, %ymm152848; AVX2-FP-NEXT:    vpermd %ymm15, %ymm3, %ymm152849; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm5 = ymm15[0,1,2,3,4,5],ymm5[6,7]2850; AVX2-FP-NEXT:    vpshufb %ymm14, %ymm1, %ymm152851; AVX2-FP-NEXT:    vextracti128 $1, %ymm15, %xmm102852; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm10 = xmm15[0],xmm10[0],xmm15[1],xmm10[1]2853; AVX2-FP-NEXT:    vpshufb %ymm14, %ymm0, %ymm142854; AVX2-FP-NEXT:    vpermd %ymm14, %ymm3, %ymm142855; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm10 = xmm10[0,1],xmm14[2,3]2856; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm14 = ymm10[0,1,2,3],ymm5[4,5,6,7]2857; AVX2-FP-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]2858; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm9, %ymm92859; AVX2-FP-NEXT:    vpermd %ymm9, %ymm3, %ymm92860; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm8, %ymm82861; AVX2-FP-NEXT:    vpermd %ymm8, %ymm3, %ymm82862; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm8 = ymm8[0,1,2,3,4,5],ymm9[6,7]2863; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm7, %ymm72864; AVX2-FP-NEXT:    vextracti128 $1, %ymm7, %xmm92865; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm7 = xmm7[0],xmm9[0],xmm7[1],xmm9[1]2866; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm6, %ymm62867; AVX2-FP-NEXT:    vpermd %ymm6, %ymm3, %ymm62868; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm6 = xmm7[0,1],xmm6[2,3]2869; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm8[4,5,6,7]2870; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm4, %ymm42871; AVX2-FP-NEXT:    vpermd %ymm4, %ymm3, %ymm42872; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm2, %ymm22873; AVX2-FP-NEXT:    vpermd %ymm2, %ymm3, %ymm22874; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6,7]2875; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm1, %ymm12876; AVX2-FP-NEXT:    vextracti128 $1, %ymm1, %xmm42877; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]2878; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm0, %ymm02879; AVX2-FP-NEXT:    vpermd %ymm0, %ymm3, %ymm02880; AVX2-FP-NEXT:    vpblendd {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]2881; AVX2-FP-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5,6,7]2882; AVX2-FP-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload2883; AVX2-FP-NEXT:    vmovaps %ymm1, 32(%rsi)2884; AVX2-FP-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload2885; AVX2-FP-NEXT:    vmovaps %ymm1, (%rsi)2886; AVX2-FP-NEXT:    vmovdqa %ymm12, 32(%rdx)2887; AVX2-FP-NEXT:    vmovdqa %ymm11, (%rdx)2888; AVX2-FP-NEXT:    vmovdqa %ymm14, 32(%rcx)2889; AVX2-FP-NEXT:    vmovdqa %ymm13, (%rcx)2890; AVX2-FP-NEXT:    vmovdqa %ymm0, 32(%r8)2891; AVX2-FP-NEXT:    vmovdqa %ymm6, (%r8)2892; AVX2-FP-NEXT:    vzeroupper2893; AVX2-FP-NEXT:    retq2894;2895; AVX2-FCP-LABEL: load_i8_stride4_vf64:2896; AVX2-FCP:       # %bb.0:2897; AVX2-FCP-NEXT:    vmovdqa 160(%rdi), %ymm02898; AVX2-FCP-NEXT:    vmovdqa 128(%rdi), %ymm12899; AVX2-FCP-NEXT:    vmovdqa 192(%rdi), %ymm22900; AVX2-FCP-NEXT:    vmovdqa 224(%rdi), %ymm42901; AVX2-FCP-NEXT:    vmovdqa (%rdi), %ymm72902; AVX2-FCP-NEXT:    vmovdqa 32(%rdi), %ymm62903; AVX2-FCP-NEXT:    vmovdqa 64(%rdi), %ymm82904; AVX2-FCP-NEXT:    vmovdqa 96(%rdi), %ymm92905; AVX2-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm10 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]2906; AVX2-FCP-NEXT:    vpshufb %ymm10, %ymm9, %ymm52907; AVX2-FCP-NEXT:    vpbroadcastq {{.*#+}} ymm3 = [0,4,0,4,0,4,0,4]2908; AVX2-FCP-NEXT:    vpermd %ymm5, %ymm3, %ymm52909; AVX2-FCP-NEXT:    vpshufb %ymm10, %ymm8, %ymm112910; AVX2-FCP-NEXT:    vpermd %ymm11, %ymm3, %ymm112911; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm5 = ymm11[0,1,2,3,4,5],ymm5[6,7]2912; AVX2-FCP-NEXT:    vpshufb %ymm10, %ymm7, %ymm112913; AVX2-FCP-NEXT:    vextracti128 $1, %ymm11, %xmm122914; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1]2915; AVX2-FCP-NEXT:    vpshufb %ymm10, %ymm6, %ymm122916; AVX2-FCP-NEXT:    vpermd %ymm12, %ymm3, %ymm122917; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm11 = xmm11[0,1],xmm12[2,3]2918; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm5 = ymm11[0,1,2,3],ymm5[4,5,6,7]2919; AVX2-FCP-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2920; AVX2-FCP-NEXT:    vpshufb %ymm10, %ymm4, %ymm112921; AVX2-FCP-NEXT:    vpermd %ymm11, %ymm3, %ymm112922; AVX2-FCP-NEXT:    vpshufb %ymm10, %ymm2, %ymm122923; AVX2-FCP-NEXT:    vpermd %ymm12, %ymm3, %ymm122924; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm11 = ymm12[0,1,2,3,4,5],ymm11[6,7]2925; AVX2-FCP-NEXT:    vpshufb %ymm10, %ymm1, %ymm122926; AVX2-FCP-NEXT:    vextracti128 $1, %ymm12, %xmm132927; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm12 = xmm12[0],xmm13[0],xmm12[1],xmm13[1]2928; AVX2-FCP-NEXT:    vpshufb %ymm10, %ymm0, %ymm102929; AVX2-FCP-NEXT:    vpermd %ymm10, %ymm3, %ymm102930; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm10 = xmm12[0,1],xmm10[2,3]2931; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm5 = ymm10[0,1,2,3],ymm11[4,5,6,7]2932; AVX2-FCP-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2933; AVX2-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm12 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]2934; AVX2-FCP-NEXT:    vpshufb %ymm12, %ymm9, %ymm112935; AVX2-FCP-NEXT:    vpermd %ymm11, %ymm3, %ymm112936; AVX2-FCP-NEXT:    vpshufb %ymm12, %ymm8, %ymm132937; AVX2-FCP-NEXT:    vpermd %ymm13, %ymm3, %ymm132938; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm11 = ymm13[0,1,2,3,4,5],ymm11[6,7]2939; AVX2-FCP-NEXT:    vpshufb %ymm12, %ymm7, %ymm132940; AVX2-FCP-NEXT:    vextracti128 $1, %ymm13, %xmm142941; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm13 = xmm13[0],xmm14[0],xmm13[1],xmm14[1]2942; AVX2-FCP-NEXT:    vpshufb %ymm12, %ymm6, %ymm142943; AVX2-FCP-NEXT:    vpermd %ymm14, %ymm3, %ymm142944; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm13 = xmm13[0,1],xmm14[2,3]2945; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm11 = ymm13[0,1,2,3],ymm11[4,5,6,7]2946; AVX2-FCP-NEXT:    vpshufb %ymm12, %ymm4, %ymm132947; AVX2-FCP-NEXT:    vpermd %ymm13, %ymm3, %ymm132948; AVX2-FCP-NEXT:    vpshufb %ymm12, %ymm2, %ymm142949; AVX2-FCP-NEXT:    vpermd %ymm14, %ymm3, %ymm142950; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm13 = ymm14[0,1,2,3,4,5],ymm13[6,7]2951; AVX2-FCP-NEXT:    vpshufb %ymm12, %ymm1, %ymm142952; AVX2-FCP-NEXT:    vextracti128 $1, %ymm14, %xmm152953; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm14 = xmm14[0],xmm15[0],xmm14[1],xmm15[1]2954; AVX2-FCP-NEXT:    vpshufb %ymm12, %ymm0, %ymm122955; AVX2-FCP-NEXT:    vpermd %ymm12, %ymm3, %ymm122956; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm12 = xmm14[0,1],xmm12[2,3]2957; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm12 = ymm12[0,1,2,3],ymm13[4,5,6,7]2958; AVX2-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm14 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]2959; AVX2-FCP-NEXT:    vpshufb %ymm14, %ymm9, %ymm132960; AVX2-FCP-NEXT:    vpermd %ymm13, %ymm3, %ymm132961; AVX2-FCP-NEXT:    vpshufb %ymm14, %ymm8, %ymm152962; AVX2-FCP-NEXT:    vpermd %ymm15, %ymm3, %ymm152963; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm13 = ymm15[0,1,2,3,4,5],ymm13[6,7]2964; AVX2-FCP-NEXT:    vpshufb %ymm14, %ymm7, %ymm152965; AVX2-FCP-NEXT:    vextracti128 $1, %ymm15, %xmm52966; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm5 = xmm15[0],xmm5[0],xmm15[1],xmm5[1]2967; AVX2-FCP-NEXT:    vpshufb %ymm14, %ymm6, %ymm152968; AVX2-FCP-NEXT:    vpermd %ymm15, %ymm3, %ymm152969; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm5 = xmm5[0,1],xmm15[2,3]2970; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm13 = ymm5[0,1,2,3],ymm13[4,5,6,7]2971; AVX2-FCP-NEXT:    vpshufb %ymm14, %ymm4, %ymm52972; AVX2-FCP-NEXT:    vpermd %ymm5, %ymm3, %ymm52973; AVX2-FCP-NEXT:    vpshufb %ymm14, %ymm2, %ymm152974; AVX2-FCP-NEXT:    vpermd %ymm15, %ymm3, %ymm152975; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm5 = ymm15[0,1,2,3,4,5],ymm5[6,7]2976; AVX2-FCP-NEXT:    vpshufb %ymm14, %ymm1, %ymm152977; AVX2-FCP-NEXT:    vextracti128 $1, %ymm15, %xmm102978; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm10 = xmm15[0],xmm10[0],xmm15[1],xmm10[1]2979; AVX2-FCP-NEXT:    vpshufb %ymm14, %ymm0, %ymm142980; AVX2-FCP-NEXT:    vpermd %ymm14, %ymm3, %ymm142981; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm10 = xmm10[0,1],xmm14[2,3]2982; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm14 = ymm10[0,1,2,3],ymm5[4,5,6,7]2983; AVX2-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm5 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]2984; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm9, %ymm92985; AVX2-FCP-NEXT:    vpermd %ymm9, %ymm3, %ymm92986; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm8, %ymm82987; AVX2-FCP-NEXT:    vpermd %ymm8, %ymm3, %ymm82988; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm8 = ymm8[0,1,2,3,4,5],ymm9[6,7]2989; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm7, %ymm72990; AVX2-FCP-NEXT:    vextracti128 $1, %ymm7, %xmm92991; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm7 = xmm7[0],xmm9[0],xmm7[1],xmm9[1]2992; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm6, %ymm62993; AVX2-FCP-NEXT:    vpermd %ymm6, %ymm3, %ymm62994; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm6 = xmm7[0,1],xmm6[2,3]2995; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm8[4,5,6,7]2996; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm4, %ymm42997; AVX2-FCP-NEXT:    vpermd %ymm4, %ymm3, %ymm42998; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm2, %ymm22999; AVX2-FCP-NEXT:    vpermd %ymm2, %ymm3, %ymm23000; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6,7]3001; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm1, %ymm13002; AVX2-FCP-NEXT:    vextracti128 $1, %ymm1, %xmm43003; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]3004; AVX2-FCP-NEXT:    vpshufb %ymm5, %ymm0, %ymm03005; AVX2-FCP-NEXT:    vpermd %ymm0, %ymm3, %ymm03006; AVX2-FCP-NEXT:    vpblendd {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]3007; AVX2-FCP-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5,6,7]3008; AVX2-FCP-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload3009; AVX2-FCP-NEXT:    vmovaps %ymm1, 32(%rsi)3010; AVX2-FCP-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload3011; AVX2-FCP-NEXT:    vmovaps %ymm1, (%rsi)3012; AVX2-FCP-NEXT:    vmovdqa %ymm12, 32(%rdx)3013; AVX2-FCP-NEXT:    vmovdqa %ymm11, (%rdx)3014; AVX2-FCP-NEXT:    vmovdqa %ymm14, 32(%rcx)3015; AVX2-FCP-NEXT:    vmovdqa %ymm13, (%rcx)3016; AVX2-FCP-NEXT:    vmovdqa %ymm0, 32(%r8)3017; AVX2-FCP-NEXT:    vmovdqa %ymm6, (%r8)3018; AVX2-FCP-NEXT:    vzeroupper3019; AVX2-FCP-NEXT:    retq3020;3021; AVX512-LABEL: load_i8_stride4_vf64:3022; AVX512:       # %bb.0:3023; AVX512-NEXT:    vmovdqa64 (%rdi), %zmm03024; AVX512-NEXT:    vmovdqa64 128(%rdi), %zmm23025; AVX512-NEXT:    vpbroadcastd {{.*#+}} ymm7 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]3026; AVX512-NEXT:    vmovdqa 224(%rdi), %ymm33027; AVX512-NEXT:    vpshufb %ymm7, %ymm3, %ymm53028; AVX512-NEXT:    vmovdqa 192(%rdi), %ymm43029; AVX512-NEXT:    vpshufb %ymm7, %ymm4, %ymm63030; AVX512-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [0,4,0,4,0,4,8,12]3031; AVX512-NEXT:    vpermt2d %ymm5, %ymm1, %ymm63032; AVX512-NEXT:    vpmovdb %zmm2, %xmm53033; AVX512-NEXT:    vpblendd {{.*#+}} ymm8 = ymm5[0,1,2,3],ymm6[4,5,6,7]3034; AVX512-NEXT:    vmovdqa 96(%rdi), %ymm53035; AVX512-NEXT:    vpshufb %ymm7, %ymm5, %ymm93036; AVX512-NEXT:    vmovdqa 64(%rdi), %ymm63037; AVX512-NEXT:    vpshufb %ymm7, %ymm6, %ymm73038; AVX512-NEXT:    vpermt2d %ymm9, %ymm1, %ymm73039; AVX512-NEXT:    vpmovdb %zmm0, %xmm93040; AVX512-NEXT:    vpblendd {{.*#+}} ymm7 = ymm9[0,1,2,3],ymm7[4,5,6,7]3041; AVX512-NEXT:    vshufi64x2 {{.*#+}} zmm7 = zmm7[0,1,2,3],zmm8[0,1,2,3]3042; AVX512-NEXT:    vpbroadcastd {{.*#+}} ymm8 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]3043; AVX512-NEXT:    vpshufb %ymm8, %ymm3, %ymm93044; AVX512-NEXT:    vpshufb %ymm8, %ymm4, %ymm103045; AVX512-NEXT:    vpermt2d %ymm9, %ymm1, %ymm103046; AVX512-NEXT:    vpsrld $8, %zmm2, %zmm93047; AVX512-NEXT:    vpmovdb %zmm9, %xmm93048; AVX512-NEXT:    vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3],ymm10[4,5,6,7]3049; AVX512-NEXT:    vpshufb %ymm8, %ymm5, %ymm103050; AVX512-NEXT:    vpshufb %ymm8, %ymm6, %ymm83051; AVX512-NEXT:    vpermt2d %ymm10, %ymm1, %ymm83052; AVX512-NEXT:    vpsrld $8, %zmm0, %zmm103053; AVX512-NEXT:    vpmovdb %zmm10, %xmm103054; AVX512-NEXT:    vpblendd {{.*#+}} ymm8 = ymm10[0,1,2,3],ymm8[4,5,6,7]3055; AVX512-NEXT:    vshufi64x2 {{.*#+}} zmm8 = zmm8[0,1,2,3],zmm9[0,1,2,3]3056; AVX512-NEXT:    vpbroadcastd {{.*#+}} ymm9 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]3057; AVX512-NEXT:    vpshufb %ymm9, %ymm3, %ymm103058; AVX512-NEXT:    vpshufb %ymm9, %ymm4, %ymm113059; AVX512-NEXT:    vpermt2d %ymm10, %ymm1, %ymm113060; AVX512-NEXT:    vpsrld $16, %zmm2, %zmm103061; AVX512-NEXT:    vpmovdb %zmm10, %xmm103062; AVX512-NEXT:    vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3],ymm11[4,5,6,7]3063; AVX512-NEXT:    vpshufb %ymm9, %ymm5, %ymm113064; AVX512-NEXT:    vpshufb %ymm9, %ymm6, %ymm93065; AVX512-NEXT:    vpermt2d %ymm11, %ymm1, %ymm93066; AVX512-NEXT:    vpsrld $16, %zmm0, %zmm113067; AVX512-NEXT:    vpmovdb %zmm11, %xmm113068; AVX512-NEXT:    vpblendd {{.*#+}} ymm9 = ymm11[0,1,2,3],ymm9[4,5,6,7]3069; AVX512-NEXT:    vshufi64x2 {{.*#+}} zmm9 = zmm9[0,1,2,3],zmm10[0,1,2,3]3070; AVX512-NEXT:    vpbroadcastd {{.*#+}} ymm10 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]3071; AVX512-NEXT:    vpshufb %ymm10, %ymm3, %ymm33072; AVX512-NEXT:    vpshufb %ymm10, %ymm4, %ymm43073; AVX512-NEXT:    vpermt2d %ymm3, %ymm1, %ymm43074; AVX512-NEXT:    vpsrld $24, %zmm2, %zmm23075; AVX512-NEXT:    vpmovdb %zmm2, %xmm23076; AVX512-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4,5,6,7]3077; AVX512-NEXT:    vpshufb %ymm10, %ymm5, %ymm33078; AVX512-NEXT:    vpshufb %ymm10, %ymm6, %ymm43079; AVX512-NEXT:    vpermt2d %ymm3, %ymm1, %ymm43080; AVX512-NEXT:    vpsrld $24, %zmm0, %zmm03081; AVX512-NEXT:    vpmovdb %zmm0, %xmm03082; AVX512-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4,5,6,7]3083; AVX512-NEXT:    vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3],zmm2[0,1,2,3]3084; AVX512-NEXT:    vmovdqa64 %zmm7, (%rsi)3085; AVX512-NEXT:    vmovdqa64 %zmm8, (%rdx)3086; AVX512-NEXT:    vmovdqa64 %zmm9, (%rcx)3087; AVX512-NEXT:    vmovdqa64 %zmm0, (%r8)3088; AVX512-NEXT:    vzeroupper3089; AVX512-NEXT:    retq3090;3091; AVX512-FCP-LABEL: load_i8_stride4_vf64:3092; AVX512-FCP:       # %bb.0:3093; AVX512-FCP-NEXT:    vmovdqa64 (%rdi), %zmm03094; AVX512-FCP-NEXT:    vmovdqa64 128(%rdi), %zmm23095; AVX512-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm7 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]3096; AVX512-FCP-NEXT:    vmovdqa 224(%rdi), %ymm33097; AVX512-FCP-NEXT:    vpshufb %ymm7, %ymm3, %ymm53098; AVX512-FCP-NEXT:    vmovdqa 192(%rdi), %ymm43099; AVX512-FCP-NEXT:    vpshufb %ymm7, %ymm4, %ymm63100; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [0,4,0,4,0,4,8,12]3101; AVX512-FCP-NEXT:    vpermt2d %ymm5, %ymm1, %ymm63102; AVX512-FCP-NEXT:    vpmovdb %zmm2, %xmm53103; AVX512-FCP-NEXT:    vpblendd {{.*#+}} ymm8 = ymm5[0,1,2,3],ymm6[4,5,6,7]3104; AVX512-FCP-NEXT:    vmovdqa 96(%rdi), %ymm53105; AVX512-FCP-NEXT:    vpshufb %ymm7, %ymm5, %ymm93106; AVX512-FCP-NEXT:    vmovdqa 64(%rdi), %ymm63107; AVX512-FCP-NEXT:    vpshufb %ymm7, %ymm6, %ymm73108; AVX512-FCP-NEXT:    vpermt2d %ymm9, %ymm1, %ymm73109; AVX512-FCP-NEXT:    vpmovdb %zmm0, %xmm93110; AVX512-FCP-NEXT:    vpblendd {{.*#+}} ymm7 = ymm9[0,1,2,3],ymm7[4,5,6,7]3111; AVX512-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm7 = zmm7[0,1,2,3],zmm8[0,1,2,3]3112; AVX512-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm8 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]3113; AVX512-FCP-NEXT:    vpshufb %ymm8, %ymm3, %ymm93114; AVX512-FCP-NEXT:    vpshufb %ymm8, %ymm4, %ymm103115; AVX512-FCP-NEXT:    vpermt2d %ymm9, %ymm1, %ymm103116; AVX512-FCP-NEXT:    vpsrld $8, %zmm2, %zmm93117; AVX512-FCP-NEXT:    vpmovdb %zmm9, %xmm93118; AVX512-FCP-NEXT:    vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3],ymm10[4,5,6,7]3119; AVX512-FCP-NEXT:    vpshufb %ymm8, %ymm5, %ymm103120; AVX512-FCP-NEXT:    vpshufb %ymm8, %ymm6, %ymm83121; AVX512-FCP-NEXT:    vpermt2d %ymm10, %ymm1, %ymm83122; AVX512-FCP-NEXT:    vpsrld $8, %zmm0, %zmm103123; AVX512-FCP-NEXT:    vpmovdb %zmm10, %xmm103124; AVX512-FCP-NEXT:    vpblendd {{.*#+}} ymm8 = ymm10[0,1,2,3],ymm8[4,5,6,7]3125; AVX512-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm8 = zmm8[0,1,2,3],zmm9[0,1,2,3]3126; AVX512-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm9 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]3127; AVX512-FCP-NEXT:    vpshufb %ymm9, %ymm3, %ymm103128; AVX512-FCP-NEXT:    vpshufb %ymm9, %ymm4, %ymm113129; AVX512-FCP-NEXT:    vpermt2d %ymm10, %ymm1, %ymm113130; AVX512-FCP-NEXT:    vpsrld $16, %zmm2, %zmm103131; AVX512-FCP-NEXT:    vpmovdb %zmm10, %xmm103132; AVX512-FCP-NEXT:    vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3],ymm11[4,5,6,7]3133; AVX512-FCP-NEXT:    vpshufb %ymm9, %ymm5, %ymm113134; AVX512-FCP-NEXT:    vpshufb %ymm9, %ymm6, %ymm93135; AVX512-FCP-NEXT:    vpermt2d %ymm11, %ymm1, %ymm93136; AVX512-FCP-NEXT:    vpsrld $16, %zmm0, %zmm113137; AVX512-FCP-NEXT:    vpmovdb %zmm11, %xmm113138; AVX512-FCP-NEXT:    vpblendd {{.*#+}} ymm9 = ymm11[0,1,2,3],ymm9[4,5,6,7]3139; AVX512-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm9 = zmm9[0,1,2,3],zmm10[0,1,2,3]3140; AVX512-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm10 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]3141; AVX512-FCP-NEXT:    vpshufb %ymm10, %ymm3, %ymm33142; AVX512-FCP-NEXT:    vpshufb %ymm10, %ymm4, %ymm43143; AVX512-FCP-NEXT:    vpermt2d %ymm3, %ymm1, %ymm43144; AVX512-FCP-NEXT:    vpsrld $24, %zmm2, %zmm23145; AVX512-FCP-NEXT:    vpmovdb %zmm2, %xmm23146; AVX512-FCP-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4,5,6,7]3147; AVX512-FCP-NEXT:    vpshufb %ymm10, %ymm5, %ymm33148; AVX512-FCP-NEXT:    vpshufb %ymm10, %ymm6, %ymm43149; AVX512-FCP-NEXT:    vpermt2d %ymm3, %ymm1, %ymm43150; AVX512-FCP-NEXT:    vpsrld $24, %zmm0, %zmm03151; AVX512-FCP-NEXT:    vpmovdb %zmm0, %xmm03152; AVX512-FCP-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4,5,6,7]3153; AVX512-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3],zmm2[0,1,2,3]3154; AVX512-FCP-NEXT:    vmovdqa64 %zmm7, (%rsi)3155; AVX512-FCP-NEXT:    vmovdqa64 %zmm8, (%rdx)3156; AVX512-FCP-NEXT:    vmovdqa64 %zmm9, (%rcx)3157; AVX512-FCP-NEXT:    vmovdqa64 %zmm0, (%r8)3158; AVX512-FCP-NEXT:    vzeroupper3159; AVX512-FCP-NEXT:    retq3160;3161; AVX512DQ-LABEL: load_i8_stride4_vf64:3162; AVX512DQ:       # %bb.0:3163; AVX512DQ-NEXT:    vmovdqa64 (%rdi), %zmm03164; AVX512DQ-NEXT:    vmovdqa64 128(%rdi), %zmm23165; AVX512DQ-NEXT:    vpbroadcastd {{.*#+}} ymm7 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]3166; AVX512DQ-NEXT:    vmovdqa 224(%rdi), %ymm33167; AVX512DQ-NEXT:    vpshufb %ymm7, %ymm3, %ymm53168; AVX512DQ-NEXT:    vmovdqa 192(%rdi), %ymm43169; AVX512DQ-NEXT:    vpshufb %ymm7, %ymm4, %ymm63170; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [0,4,0,4,0,4,8,12]3171; AVX512DQ-NEXT:    vpermt2d %ymm5, %ymm1, %ymm63172; AVX512DQ-NEXT:    vpmovdb %zmm2, %xmm53173; AVX512DQ-NEXT:    vpblendd {{.*#+}} ymm8 = ymm5[0,1,2,3],ymm6[4,5,6,7]3174; AVX512DQ-NEXT:    vmovdqa 96(%rdi), %ymm53175; AVX512DQ-NEXT:    vpshufb %ymm7, %ymm5, %ymm93176; AVX512DQ-NEXT:    vmovdqa 64(%rdi), %ymm63177; AVX512DQ-NEXT:    vpshufb %ymm7, %ymm6, %ymm73178; AVX512DQ-NEXT:    vpermt2d %ymm9, %ymm1, %ymm73179; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm93180; AVX512DQ-NEXT:    vpblendd {{.*#+}} ymm7 = ymm9[0,1,2,3],ymm7[4,5,6,7]3181; AVX512DQ-NEXT:    vshufi64x2 {{.*#+}} zmm7 = zmm7[0,1,2,3],zmm8[0,1,2,3]3182; AVX512DQ-NEXT:    vpbroadcastd {{.*#+}} ymm8 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]3183; AVX512DQ-NEXT:    vpshufb %ymm8, %ymm3, %ymm93184; AVX512DQ-NEXT:    vpshufb %ymm8, %ymm4, %ymm103185; AVX512DQ-NEXT:    vpermt2d %ymm9, %ymm1, %ymm103186; AVX512DQ-NEXT:    vpsrld $8, %zmm2, %zmm93187; AVX512DQ-NEXT:    vpmovdb %zmm9, %xmm93188; AVX512DQ-NEXT:    vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3],ymm10[4,5,6,7]3189; AVX512DQ-NEXT:    vpshufb %ymm8, %ymm5, %ymm103190; AVX512DQ-NEXT:    vpshufb %ymm8, %ymm6, %ymm83191; AVX512DQ-NEXT:    vpermt2d %ymm10, %ymm1, %ymm83192; AVX512DQ-NEXT:    vpsrld $8, %zmm0, %zmm103193; AVX512DQ-NEXT:    vpmovdb %zmm10, %xmm103194; AVX512DQ-NEXT:    vpblendd {{.*#+}} ymm8 = ymm10[0,1,2,3],ymm8[4,5,6,7]3195; AVX512DQ-NEXT:    vshufi64x2 {{.*#+}} zmm8 = zmm8[0,1,2,3],zmm9[0,1,2,3]3196; AVX512DQ-NEXT:    vpbroadcastd {{.*#+}} ymm9 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]3197; AVX512DQ-NEXT:    vpshufb %ymm9, %ymm3, %ymm103198; AVX512DQ-NEXT:    vpshufb %ymm9, %ymm4, %ymm113199; AVX512DQ-NEXT:    vpermt2d %ymm10, %ymm1, %ymm113200; AVX512DQ-NEXT:    vpsrld $16, %zmm2, %zmm103201; AVX512DQ-NEXT:    vpmovdb %zmm10, %xmm103202; AVX512DQ-NEXT:    vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3],ymm11[4,5,6,7]3203; AVX512DQ-NEXT:    vpshufb %ymm9, %ymm5, %ymm113204; AVX512DQ-NEXT:    vpshufb %ymm9, %ymm6, %ymm93205; AVX512DQ-NEXT:    vpermt2d %ymm11, %ymm1, %ymm93206; AVX512DQ-NEXT:    vpsrld $16, %zmm0, %zmm113207; AVX512DQ-NEXT:    vpmovdb %zmm11, %xmm113208; AVX512DQ-NEXT:    vpblendd {{.*#+}} ymm9 = ymm11[0,1,2,3],ymm9[4,5,6,7]3209; AVX512DQ-NEXT:    vshufi64x2 {{.*#+}} zmm9 = zmm9[0,1,2,3],zmm10[0,1,2,3]3210; AVX512DQ-NEXT:    vpbroadcastd {{.*#+}} ymm10 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]3211; AVX512DQ-NEXT:    vpshufb %ymm10, %ymm3, %ymm33212; AVX512DQ-NEXT:    vpshufb %ymm10, %ymm4, %ymm43213; AVX512DQ-NEXT:    vpermt2d %ymm3, %ymm1, %ymm43214; AVX512DQ-NEXT:    vpsrld $24, %zmm2, %zmm23215; AVX512DQ-NEXT:    vpmovdb %zmm2, %xmm23216; AVX512DQ-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4,5,6,7]3217; AVX512DQ-NEXT:    vpshufb %ymm10, %ymm5, %ymm33218; AVX512DQ-NEXT:    vpshufb %ymm10, %ymm6, %ymm43219; AVX512DQ-NEXT:    vpermt2d %ymm3, %ymm1, %ymm43220; AVX512DQ-NEXT:    vpsrld $24, %zmm0, %zmm03221; AVX512DQ-NEXT:    vpmovdb %zmm0, %xmm03222; AVX512DQ-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4,5,6,7]3223; AVX512DQ-NEXT:    vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3],zmm2[0,1,2,3]3224; AVX512DQ-NEXT:    vmovdqa64 %zmm7, (%rsi)3225; AVX512DQ-NEXT:    vmovdqa64 %zmm8, (%rdx)3226; AVX512DQ-NEXT:    vmovdqa64 %zmm9, (%rcx)3227; AVX512DQ-NEXT:    vmovdqa64 %zmm0, (%r8)3228; AVX512DQ-NEXT:    vzeroupper3229; AVX512DQ-NEXT:    retq3230;3231; AVX512DQ-FCP-LABEL: load_i8_stride4_vf64:3232; AVX512DQ-FCP:       # %bb.0:3233; AVX512DQ-FCP-NEXT:    vmovdqa64 (%rdi), %zmm03234; AVX512DQ-FCP-NEXT:    vmovdqa64 128(%rdi), %zmm23235; AVX512DQ-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm7 = [0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12,0,4,8,12]3236; AVX512DQ-FCP-NEXT:    vmovdqa 224(%rdi), %ymm33237; AVX512DQ-FCP-NEXT:    vpshufb %ymm7, %ymm3, %ymm53238; AVX512DQ-FCP-NEXT:    vmovdqa 192(%rdi), %ymm43239; AVX512DQ-FCP-NEXT:    vpshufb %ymm7, %ymm4, %ymm63240; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [0,4,0,4,0,4,8,12]3241; AVX512DQ-FCP-NEXT:    vpermt2d %ymm5, %ymm1, %ymm63242; AVX512DQ-FCP-NEXT:    vpmovdb %zmm2, %xmm53243; AVX512DQ-FCP-NEXT:    vpblendd {{.*#+}} ymm8 = ymm5[0,1,2,3],ymm6[4,5,6,7]3244; AVX512DQ-FCP-NEXT:    vmovdqa 96(%rdi), %ymm53245; AVX512DQ-FCP-NEXT:    vpshufb %ymm7, %ymm5, %ymm93246; AVX512DQ-FCP-NEXT:    vmovdqa 64(%rdi), %ymm63247; AVX512DQ-FCP-NEXT:    vpshufb %ymm7, %ymm6, %ymm73248; AVX512DQ-FCP-NEXT:    vpermt2d %ymm9, %ymm1, %ymm73249; AVX512DQ-FCP-NEXT:    vpmovdb %zmm0, %xmm93250; AVX512DQ-FCP-NEXT:    vpblendd {{.*#+}} ymm7 = ymm9[0,1,2,3],ymm7[4,5,6,7]3251; AVX512DQ-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm7 = zmm7[0,1,2,3],zmm8[0,1,2,3]3252; AVX512DQ-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm8 = [1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13,1,5,9,13]3253; AVX512DQ-FCP-NEXT:    vpshufb %ymm8, %ymm3, %ymm93254; AVX512DQ-FCP-NEXT:    vpshufb %ymm8, %ymm4, %ymm103255; AVX512DQ-FCP-NEXT:    vpermt2d %ymm9, %ymm1, %ymm103256; AVX512DQ-FCP-NEXT:    vpsrld $8, %zmm2, %zmm93257; AVX512DQ-FCP-NEXT:    vpmovdb %zmm9, %xmm93258; AVX512DQ-FCP-NEXT:    vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3],ymm10[4,5,6,7]3259; AVX512DQ-FCP-NEXT:    vpshufb %ymm8, %ymm5, %ymm103260; AVX512DQ-FCP-NEXT:    vpshufb %ymm8, %ymm6, %ymm83261; AVX512DQ-FCP-NEXT:    vpermt2d %ymm10, %ymm1, %ymm83262; AVX512DQ-FCP-NEXT:    vpsrld $8, %zmm0, %zmm103263; AVX512DQ-FCP-NEXT:    vpmovdb %zmm10, %xmm103264; AVX512DQ-FCP-NEXT:    vpblendd {{.*#+}} ymm8 = ymm10[0,1,2,3],ymm8[4,5,6,7]3265; AVX512DQ-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm8 = zmm8[0,1,2,3],zmm9[0,1,2,3]3266; AVX512DQ-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm9 = [2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14,2,6,10,14]3267; AVX512DQ-FCP-NEXT:    vpshufb %ymm9, %ymm3, %ymm103268; AVX512DQ-FCP-NEXT:    vpshufb %ymm9, %ymm4, %ymm113269; AVX512DQ-FCP-NEXT:    vpermt2d %ymm10, %ymm1, %ymm113270; AVX512DQ-FCP-NEXT:    vpsrld $16, %zmm2, %zmm103271; AVX512DQ-FCP-NEXT:    vpmovdb %zmm10, %xmm103272; AVX512DQ-FCP-NEXT:    vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3],ymm11[4,5,6,7]3273; AVX512DQ-FCP-NEXT:    vpshufb %ymm9, %ymm5, %ymm113274; AVX512DQ-FCP-NEXT:    vpshufb %ymm9, %ymm6, %ymm93275; AVX512DQ-FCP-NEXT:    vpermt2d %ymm11, %ymm1, %ymm93276; AVX512DQ-FCP-NEXT:    vpsrld $16, %zmm0, %zmm113277; AVX512DQ-FCP-NEXT:    vpmovdb %zmm11, %xmm113278; AVX512DQ-FCP-NEXT:    vpblendd {{.*#+}} ymm9 = ymm11[0,1,2,3],ymm9[4,5,6,7]3279; AVX512DQ-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm9 = zmm9[0,1,2,3],zmm10[0,1,2,3]3280; AVX512DQ-FCP-NEXT:    vpbroadcastd {{.*#+}} ymm10 = [3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15,3,7,11,15]3281; AVX512DQ-FCP-NEXT:    vpshufb %ymm10, %ymm3, %ymm33282; AVX512DQ-FCP-NEXT:    vpshufb %ymm10, %ymm4, %ymm43283; AVX512DQ-FCP-NEXT:    vpermt2d %ymm3, %ymm1, %ymm43284; AVX512DQ-FCP-NEXT:    vpsrld $24, %zmm2, %zmm23285; AVX512DQ-FCP-NEXT:    vpmovdb %zmm2, %xmm23286; AVX512DQ-FCP-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4,5,6,7]3287; AVX512DQ-FCP-NEXT:    vpshufb %ymm10, %ymm5, %ymm33288; AVX512DQ-FCP-NEXT:    vpshufb %ymm10, %ymm6, %ymm43289; AVX512DQ-FCP-NEXT:    vpermt2d %ymm3, %ymm1, %ymm43290; AVX512DQ-FCP-NEXT:    vpsrld $24, %zmm0, %zmm03291; AVX512DQ-FCP-NEXT:    vpmovdb %zmm0, %xmm03292; AVX512DQ-FCP-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4,5,6,7]3293; AVX512DQ-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3],zmm2[0,1,2,3]3294; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm7, (%rsi)3295; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm8, (%rdx)3296; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm9, (%rcx)3297; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm0, (%r8)3298; AVX512DQ-FCP-NEXT:    vzeroupper3299; AVX512DQ-FCP-NEXT:    retq3300;3301; AVX512BW-LABEL: load_i8_stride4_vf64:3302; AVX512BW:       # %bb.0:3303; AVX512BW-NEXT:    vmovdqa64 (%rdi), %zmm03304; AVX512BW-NEXT:    vmovdqa64 64(%rdi), %zmm13305; AVX512BW-NEXT:    vmovdqa64 128(%rdi), %zmm23306; AVX512BW-NEXT:    vmovdqa64 192(%rdi), %zmm33307; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm4 = [128,128,128,128,0,4,8,12,u,u,u,u,u,u,u,u,128,128,128,128,16,20,24,28,u,u,u,u,u,u,u,u,128,128,128,128,32,36,40,44,u,u,u,u,u,u,u,u,128,128,128,128,48,52,56,60,u,u,u,u,u,u,u,u]3308; AVX512BW-NEXT:    vpshufb %zmm4, %zmm3, %zmm53309; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm6 = [0,4,8,12,128,128,128,128,u,u,u,u,u,u,u,u,16,20,24,28,128,128,128,128,u,u,u,u,u,u,u,u,32,36,40,44,128,128,128,128,u,u,u,u,u,u,u,u,48,52,56,60,128,128,128,128,u,u,u,u,u,u,u,u]3310; AVX512BW-NEXT:    vpshufb %zmm6, %zmm2, %zmm73311; AVX512BW-NEXT:    vporq %zmm5, %zmm7, %zmm53312; AVX512BW-NEXT:    vpshufb %zmm4, %zmm1, %zmm43313; AVX512BW-NEXT:    vpshufb %zmm6, %zmm0, %zmm63314; AVX512BW-NEXT:    vporq %zmm4, %zmm6, %zmm43315; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [0,4,8,12,1,5,9,13,16,20,24,28,17,21,25,29]3316; AVX512BW-NEXT:    vpermt2d %zmm5, %zmm6, %zmm43317; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [128,128,128,128,1,5,9,13,u,u,u,u,u,u,u,u,128,128,128,128,17,21,25,29,u,u,u,u,u,u,u,u,128,128,128,128,33,37,41,45,u,u,u,u,u,u,u,u,128,128,128,128,49,53,57,61,u,u,u,u,u,u,u,u]3318; AVX512BW-NEXT:    vpshufb %zmm5, %zmm3, %zmm73319; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [1,5,9,13,128,128,128,128,u,u,u,u,u,u,u,u,17,21,25,29,128,128,128,128,u,u,u,u,u,u,u,u,33,37,41,45,128,128,128,128,u,u,u,u,u,u,u,u,49,53,57,61,128,128,128,128,u,u,u,u,u,u,u,u]3320; AVX512BW-NEXT:    vpshufb %zmm8, %zmm2, %zmm93321; AVX512BW-NEXT:    vporq %zmm7, %zmm9, %zmm73322; AVX512BW-NEXT:    vpshufb %zmm5, %zmm1, %zmm53323; AVX512BW-NEXT:    vpshufb %zmm8, %zmm0, %zmm83324; AVX512BW-NEXT:    vporq %zmm5, %zmm8, %zmm53325; AVX512BW-NEXT:    vpermt2d %zmm7, %zmm6, %zmm53326; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [128,128,128,128,2,6,10,14,u,u,u,u,u,u,u,u,128,128,128,128,18,22,26,30,u,u,u,u,u,u,u,u,128,128,128,128,34,38,42,46,u,u,u,u,u,u,u,u,128,128,128,128,50,54,58,62,u,u,u,u,u,u,u,u]3327; AVX512BW-NEXT:    vpshufb %zmm7, %zmm3, %zmm83328; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm9 = [2,6,10,14,128,128,128,128,u,u,u,u,u,u,u,u,18,22,26,30,128,128,128,128,u,u,u,u,u,u,u,u,34,38,42,46,128,128,128,128,u,u,u,u,u,u,u,u,50,54,58,62,128,128,128,128,u,u,u,u,u,u,u,u]3329; AVX512BW-NEXT:    vpshufb %zmm9, %zmm2, %zmm103330; AVX512BW-NEXT:    vporq %zmm8, %zmm10, %zmm83331; AVX512BW-NEXT:    vpshufb %zmm7, %zmm1, %zmm73332; AVX512BW-NEXT:    vpshufb %zmm9, %zmm0, %zmm93333; AVX512BW-NEXT:    vporq %zmm7, %zmm9, %zmm73334; AVX512BW-NEXT:    vpermt2d %zmm8, %zmm6, %zmm73335; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [128,128,128,128,3,7,11,15,u,u,u,u,u,u,u,u,128,128,128,128,19,23,27,31,u,u,u,u,u,u,u,u,128,128,128,128,35,39,43,47,u,u,u,u,u,u,u,u,128,128,128,128,51,55,59,63,u,u,u,u,u,u,u,u]3336; AVX512BW-NEXT:    vpshufb %zmm8, %zmm3, %zmm33337; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm9 = [3,7,11,15,128,128,128,128,u,u,u,u,u,u,u,u,19,23,27,31,128,128,128,128,u,u,u,u,u,u,u,u,35,39,43,47,128,128,128,128,u,u,u,u,u,u,u,u,51,55,59,63,128,128,128,128,u,u,u,u,u,u,u,u]3338; AVX512BW-NEXT:    vpshufb %zmm9, %zmm2, %zmm23339; AVX512BW-NEXT:    vporq %zmm3, %zmm2, %zmm23340; AVX512BW-NEXT:    vpshufb %zmm8, %zmm1, %zmm13341; AVX512BW-NEXT:    vpshufb %zmm9, %zmm0, %zmm03342; AVX512BW-NEXT:    vporq %zmm1, %zmm0, %zmm03343; AVX512BW-NEXT:    vpermt2d %zmm2, %zmm6, %zmm03344; AVX512BW-NEXT:    vmovdqa64 %zmm4, (%rsi)3345; AVX512BW-NEXT:    vmovdqa64 %zmm5, (%rdx)3346; AVX512BW-NEXT:    vmovdqa64 %zmm7, (%rcx)3347; AVX512BW-NEXT:    vmovdqa64 %zmm0, (%r8)3348; AVX512BW-NEXT:    vzeroupper3349; AVX512BW-NEXT:    retq3350;3351; AVX512BW-FCP-LABEL: load_i8_stride4_vf64:3352; AVX512BW-FCP:       # %bb.0:3353; AVX512BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm03354; AVX512BW-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm13355; AVX512BW-FCP-NEXT:    vmovdqa64 128(%rdi), %zmm23356; AVX512BW-FCP-NEXT:    vmovdqa64 192(%rdi), %zmm33357; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm4 = [128,128,128,128,0,4,8,12,u,u,u,u,u,u,u,u,128,128,128,128,16,20,24,28,u,u,u,u,u,u,u,u,128,128,128,128,32,36,40,44,u,u,u,u,u,u,u,u,128,128,128,128,48,52,56,60,u,u,u,u,u,u,u,u]3358; AVX512BW-FCP-NEXT:    vpshufb %zmm4, %zmm3, %zmm53359; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm6 = [0,4,8,12,128,128,128,128,u,u,u,u,u,u,u,u,16,20,24,28,128,128,128,128,u,u,u,u,u,u,u,u,32,36,40,44,128,128,128,128,u,u,u,u,u,u,u,u,48,52,56,60,128,128,128,128,u,u,u,u,u,u,u,u]3360; AVX512BW-FCP-NEXT:    vpshufb %zmm6, %zmm2, %zmm73361; AVX512BW-FCP-NEXT:    vporq %zmm5, %zmm7, %zmm53362; AVX512BW-FCP-NEXT:    vpshufb %zmm4, %zmm1, %zmm43363; AVX512BW-FCP-NEXT:    vpshufb %zmm6, %zmm0, %zmm63364; AVX512BW-FCP-NEXT:    vporq %zmm4, %zmm6, %zmm43365; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [0,4,8,12,1,5,9,13,16,20,24,28,17,21,25,29]3366; AVX512BW-FCP-NEXT:    vpermt2d %zmm5, %zmm6, %zmm43367; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [128,128,128,128,1,5,9,13,u,u,u,u,u,u,u,u,128,128,128,128,17,21,25,29,u,u,u,u,u,u,u,u,128,128,128,128,33,37,41,45,u,u,u,u,u,u,u,u,128,128,128,128,49,53,57,61,u,u,u,u,u,u,u,u]3368; AVX512BW-FCP-NEXT:    vpshufb %zmm5, %zmm3, %zmm73369; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [1,5,9,13,128,128,128,128,u,u,u,u,u,u,u,u,17,21,25,29,128,128,128,128,u,u,u,u,u,u,u,u,33,37,41,45,128,128,128,128,u,u,u,u,u,u,u,u,49,53,57,61,128,128,128,128,u,u,u,u,u,u,u,u]3370; AVX512BW-FCP-NEXT:    vpshufb %zmm8, %zmm2, %zmm93371; AVX512BW-FCP-NEXT:    vporq %zmm7, %zmm9, %zmm73372; AVX512BW-FCP-NEXT:    vpshufb %zmm5, %zmm1, %zmm53373; AVX512BW-FCP-NEXT:    vpshufb %zmm8, %zmm0, %zmm83374; AVX512BW-FCP-NEXT:    vporq %zmm5, %zmm8, %zmm53375; AVX512BW-FCP-NEXT:    vpermt2d %zmm7, %zmm6, %zmm53376; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [128,128,128,128,2,6,10,14,u,u,u,u,u,u,u,u,128,128,128,128,18,22,26,30,u,u,u,u,u,u,u,u,128,128,128,128,34,38,42,46,u,u,u,u,u,u,u,u,128,128,128,128,50,54,58,62,u,u,u,u,u,u,u,u]3377; AVX512BW-FCP-NEXT:    vpshufb %zmm7, %zmm3, %zmm83378; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm9 = [2,6,10,14,128,128,128,128,u,u,u,u,u,u,u,u,18,22,26,30,128,128,128,128,u,u,u,u,u,u,u,u,34,38,42,46,128,128,128,128,u,u,u,u,u,u,u,u,50,54,58,62,128,128,128,128,u,u,u,u,u,u,u,u]3379; AVX512BW-FCP-NEXT:    vpshufb %zmm9, %zmm2, %zmm103380; AVX512BW-FCP-NEXT:    vporq %zmm8, %zmm10, %zmm83381; AVX512BW-FCP-NEXT:    vpshufb %zmm7, %zmm1, %zmm73382; AVX512BW-FCP-NEXT:    vpshufb %zmm9, %zmm0, %zmm93383; AVX512BW-FCP-NEXT:    vporq %zmm7, %zmm9, %zmm73384; AVX512BW-FCP-NEXT:    vpermt2d %zmm8, %zmm6, %zmm73385; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [128,128,128,128,3,7,11,15,u,u,u,u,u,u,u,u,128,128,128,128,19,23,27,31,u,u,u,u,u,u,u,u,128,128,128,128,35,39,43,47,u,u,u,u,u,u,u,u,128,128,128,128,51,55,59,63,u,u,u,u,u,u,u,u]3386; AVX512BW-FCP-NEXT:    vpshufb %zmm8, %zmm3, %zmm33387; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm9 = [3,7,11,15,128,128,128,128,u,u,u,u,u,u,u,u,19,23,27,31,128,128,128,128,u,u,u,u,u,u,u,u,35,39,43,47,128,128,128,128,u,u,u,u,u,u,u,u,51,55,59,63,128,128,128,128,u,u,u,u,u,u,u,u]3388; AVX512BW-FCP-NEXT:    vpshufb %zmm9, %zmm2, %zmm23389; AVX512BW-FCP-NEXT:    vporq %zmm3, %zmm2, %zmm23390; AVX512BW-FCP-NEXT:    vpshufb %zmm8, %zmm1, %zmm13391; AVX512BW-FCP-NEXT:    vpshufb %zmm9, %zmm0, %zmm03392; AVX512BW-FCP-NEXT:    vporq %zmm1, %zmm0, %zmm03393; AVX512BW-FCP-NEXT:    vpermt2d %zmm2, %zmm6, %zmm03394; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm4, (%rsi)3395; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm5, (%rdx)3396; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm7, (%rcx)3397; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm0, (%r8)3398; AVX512BW-FCP-NEXT:    vzeroupper3399; AVX512BW-FCP-NEXT:    retq3400;3401; AVX512DQ-BW-LABEL: load_i8_stride4_vf64:3402; AVX512DQ-BW:       # %bb.0:3403; AVX512DQ-BW-NEXT:    vmovdqa64 (%rdi), %zmm03404; AVX512DQ-BW-NEXT:    vmovdqa64 64(%rdi), %zmm13405; AVX512DQ-BW-NEXT:    vmovdqa64 128(%rdi), %zmm23406; AVX512DQ-BW-NEXT:    vmovdqa64 192(%rdi), %zmm33407; AVX512DQ-BW-NEXT:    vmovdqa64 {{.*#+}} zmm4 = [128,128,128,128,0,4,8,12,u,u,u,u,u,u,u,u,128,128,128,128,16,20,24,28,u,u,u,u,u,u,u,u,128,128,128,128,32,36,40,44,u,u,u,u,u,u,u,u,128,128,128,128,48,52,56,60,u,u,u,u,u,u,u,u]3408; AVX512DQ-BW-NEXT:    vpshufb %zmm4, %zmm3, %zmm53409; AVX512DQ-BW-NEXT:    vmovdqa64 {{.*#+}} zmm6 = [0,4,8,12,128,128,128,128,u,u,u,u,u,u,u,u,16,20,24,28,128,128,128,128,u,u,u,u,u,u,u,u,32,36,40,44,128,128,128,128,u,u,u,u,u,u,u,u,48,52,56,60,128,128,128,128,u,u,u,u,u,u,u,u]3410; AVX512DQ-BW-NEXT:    vpshufb %zmm6, %zmm2, %zmm73411; AVX512DQ-BW-NEXT:    vporq %zmm5, %zmm7, %zmm53412; AVX512DQ-BW-NEXT:    vpshufb %zmm4, %zmm1, %zmm43413; AVX512DQ-BW-NEXT:    vpshufb %zmm6, %zmm0, %zmm63414; AVX512DQ-BW-NEXT:    vporq %zmm4, %zmm6, %zmm43415; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [0,4,8,12,1,5,9,13,16,20,24,28,17,21,25,29]3416; AVX512DQ-BW-NEXT:    vpermt2d %zmm5, %zmm6, %zmm43417; AVX512DQ-BW-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [128,128,128,128,1,5,9,13,u,u,u,u,u,u,u,u,128,128,128,128,17,21,25,29,u,u,u,u,u,u,u,u,128,128,128,128,33,37,41,45,u,u,u,u,u,u,u,u,128,128,128,128,49,53,57,61,u,u,u,u,u,u,u,u]3418; AVX512DQ-BW-NEXT:    vpshufb %zmm5, %zmm3, %zmm73419; AVX512DQ-BW-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [1,5,9,13,128,128,128,128,u,u,u,u,u,u,u,u,17,21,25,29,128,128,128,128,u,u,u,u,u,u,u,u,33,37,41,45,128,128,128,128,u,u,u,u,u,u,u,u,49,53,57,61,128,128,128,128,u,u,u,u,u,u,u,u]3420; AVX512DQ-BW-NEXT:    vpshufb %zmm8, %zmm2, %zmm93421; AVX512DQ-BW-NEXT:    vporq %zmm7, %zmm9, %zmm73422; AVX512DQ-BW-NEXT:    vpshufb %zmm5, %zmm1, %zmm53423; AVX512DQ-BW-NEXT:    vpshufb %zmm8, %zmm0, %zmm83424; AVX512DQ-BW-NEXT:    vporq %zmm5, %zmm8, %zmm53425; AVX512DQ-BW-NEXT:    vpermt2d %zmm7, %zmm6, %zmm53426; AVX512DQ-BW-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [128,128,128,128,2,6,10,14,u,u,u,u,u,u,u,u,128,128,128,128,18,22,26,30,u,u,u,u,u,u,u,u,128,128,128,128,34,38,42,46,u,u,u,u,u,u,u,u,128,128,128,128,50,54,58,62,u,u,u,u,u,u,u,u]3427; AVX512DQ-BW-NEXT:    vpshufb %zmm7, %zmm3, %zmm83428; AVX512DQ-BW-NEXT:    vmovdqa64 {{.*#+}} zmm9 = [2,6,10,14,128,128,128,128,u,u,u,u,u,u,u,u,18,22,26,30,128,128,128,128,u,u,u,u,u,u,u,u,34,38,42,46,128,128,128,128,u,u,u,u,u,u,u,u,50,54,58,62,128,128,128,128,u,u,u,u,u,u,u,u]3429; AVX512DQ-BW-NEXT:    vpshufb %zmm9, %zmm2, %zmm103430; AVX512DQ-BW-NEXT:    vporq %zmm8, %zmm10, %zmm83431; AVX512DQ-BW-NEXT:    vpshufb %zmm7, %zmm1, %zmm73432; AVX512DQ-BW-NEXT:    vpshufb %zmm9, %zmm0, %zmm93433; AVX512DQ-BW-NEXT:    vporq %zmm7, %zmm9, %zmm73434; AVX512DQ-BW-NEXT:    vpermt2d %zmm8, %zmm6, %zmm73435; AVX512DQ-BW-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [128,128,128,128,3,7,11,15,u,u,u,u,u,u,u,u,128,128,128,128,19,23,27,31,u,u,u,u,u,u,u,u,128,128,128,128,35,39,43,47,u,u,u,u,u,u,u,u,128,128,128,128,51,55,59,63,u,u,u,u,u,u,u,u]3436; AVX512DQ-BW-NEXT:    vpshufb %zmm8, %zmm3, %zmm33437; AVX512DQ-BW-NEXT:    vmovdqa64 {{.*#+}} zmm9 = [3,7,11,15,128,128,128,128,u,u,u,u,u,u,u,u,19,23,27,31,128,128,128,128,u,u,u,u,u,u,u,u,35,39,43,47,128,128,128,128,u,u,u,u,u,u,u,u,51,55,59,63,128,128,128,128,u,u,u,u,u,u,u,u]3438; AVX512DQ-BW-NEXT:    vpshufb %zmm9, %zmm2, %zmm23439; AVX512DQ-BW-NEXT:    vporq %zmm3, %zmm2, %zmm23440; AVX512DQ-BW-NEXT:    vpshufb %zmm8, %zmm1, %zmm13441; AVX512DQ-BW-NEXT:    vpshufb %zmm9, %zmm0, %zmm03442; AVX512DQ-BW-NEXT:    vporq %zmm1, %zmm0, %zmm03443; AVX512DQ-BW-NEXT:    vpermt2d %zmm2, %zmm6, %zmm03444; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm4, (%rsi)3445; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm5, (%rdx)3446; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm7, (%rcx)3447; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm0, (%r8)3448; AVX512DQ-BW-NEXT:    vzeroupper3449; AVX512DQ-BW-NEXT:    retq3450;3451; AVX512DQ-BW-FCP-LABEL: load_i8_stride4_vf64:3452; AVX512DQ-BW-FCP:       # %bb.0:3453; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 (%rdi), %zmm03454; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 64(%rdi), %zmm13455; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 128(%rdi), %zmm23456; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 192(%rdi), %zmm33457; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm4 = [128,128,128,128,0,4,8,12,u,u,u,u,u,u,u,u,128,128,128,128,16,20,24,28,u,u,u,u,u,u,u,u,128,128,128,128,32,36,40,44,u,u,u,u,u,u,u,u,128,128,128,128,48,52,56,60,u,u,u,u,u,u,u,u]3458; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm4, %zmm3, %zmm53459; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm6 = [0,4,8,12,128,128,128,128,u,u,u,u,u,u,u,u,16,20,24,28,128,128,128,128,u,u,u,u,u,u,u,u,32,36,40,44,128,128,128,128,u,u,u,u,u,u,u,u,48,52,56,60,128,128,128,128,u,u,u,u,u,u,u,u]3460; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm6, %zmm2, %zmm73461; AVX512DQ-BW-FCP-NEXT:    vporq %zmm5, %zmm7, %zmm53462; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm4, %zmm1, %zmm43463; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm6, %zmm0, %zmm63464; AVX512DQ-BW-FCP-NEXT:    vporq %zmm4, %zmm6, %zmm43465; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [0,4,8,12,1,5,9,13,16,20,24,28,17,21,25,29]3466; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm5, %zmm6, %zmm43467; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [128,128,128,128,1,5,9,13,u,u,u,u,u,u,u,u,128,128,128,128,17,21,25,29,u,u,u,u,u,u,u,u,128,128,128,128,33,37,41,45,u,u,u,u,u,u,u,u,128,128,128,128,49,53,57,61,u,u,u,u,u,u,u,u]3468; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm5, %zmm3, %zmm73469; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [1,5,9,13,128,128,128,128,u,u,u,u,u,u,u,u,17,21,25,29,128,128,128,128,u,u,u,u,u,u,u,u,33,37,41,45,128,128,128,128,u,u,u,u,u,u,u,u,49,53,57,61,128,128,128,128,u,u,u,u,u,u,u,u]3470; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm8, %zmm2, %zmm93471; AVX512DQ-BW-FCP-NEXT:    vporq %zmm7, %zmm9, %zmm73472; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm5, %zmm1, %zmm53473; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm8, %zmm0, %zmm83474; AVX512DQ-BW-FCP-NEXT:    vporq %zmm5, %zmm8, %zmm53475; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm7, %zmm6, %zmm53476; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [128,128,128,128,2,6,10,14,u,u,u,u,u,u,u,u,128,128,128,128,18,22,26,30,u,u,u,u,u,u,u,u,128,128,128,128,34,38,42,46,u,u,u,u,u,u,u,u,128,128,128,128,50,54,58,62,u,u,u,u,u,u,u,u]3477; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm7, %zmm3, %zmm83478; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm9 = [2,6,10,14,128,128,128,128,u,u,u,u,u,u,u,u,18,22,26,30,128,128,128,128,u,u,u,u,u,u,u,u,34,38,42,46,128,128,128,128,u,u,u,u,u,u,u,u,50,54,58,62,128,128,128,128,u,u,u,u,u,u,u,u]3479; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm9, %zmm2, %zmm103480; AVX512DQ-BW-FCP-NEXT:    vporq %zmm8, %zmm10, %zmm83481; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm7, %zmm1, %zmm73482; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm9, %zmm0, %zmm93483; AVX512DQ-BW-FCP-NEXT:    vporq %zmm7, %zmm9, %zmm73484; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm8, %zmm6, %zmm73485; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [128,128,128,128,3,7,11,15,u,u,u,u,u,u,u,u,128,128,128,128,19,23,27,31,u,u,u,u,u,u,u,u,128,128,128,128,35,39,43,47,u,u,u,u,u,u,u,u,128,128,128,128,51,55,59,63,u,u,u,u,u,u,u,u]3486; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm8, %zmm3, %zmm33487; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm9 = [3,7,11,15,128,128,128,128,u,u,u,u,u,u,u,u,19,23,27,31,128,128,128,128,u,u,u,u,u,u,u,u,35,39,43,47,128,128,128,128,u,u,u,u,u,u,u,u,51,55,59,63,128,128,128,128,u,u,u,u,u,u,u,u]3488; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm9, %zmm2, %zmm23489; AVX512DQ-BW-FCP-NEXT:    vporq %zmm3, %zmm2, %zmm23490; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm8, %zmm1, %zmm13491; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm9, %zmm0, %zmm03492; AVX512DQ-BW-FCP-NEXT:    vporq %zmm1, %zmm0, %zmm03493; AVX512DQ-BW-FCP-NEXT:    vpermt2d %zmm2, %zmm6, %zmm03494; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm4, (%rsi)3495; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm5, (%rdx)3496; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm7, (%rcx)3497; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm0, (%r8)3498; AVX512DQ-BW-FCP-NEXT:    vzeroupper3499; AVX512DQ-BW-FCP-NEXT:    retq3500  %wide.vec = load <256 x i8>, ptr %in.vec, align 643501  %strided.vec0 = shufflevector <256 x i8> %wide.vec, <256 x i8> poison, <64 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28, i32 32, i32 36, i32 40, i32 44, i32 48, i32 52, i32 56, i32 60, i32 64, i32 68, i32 72, i32 76, i32 80, i32 84, i32 88, i32 92, i32 96, i32 100, i32 104, i32 108, i32 112, i32 116, i32 120, i32 124, i32 128, i32 132, i32 136, i32 140, i32 144, i32 148, i32 152, i32 156, i32 160, i32 164, i32 168, i32 172, i32 176, i32 180, i32 184, i32 188, i32 192, i32 196, i32 200, i32 204, i32 208, i32 212, i32 216, i32 220, i32 224, i32 228, i32 232, i32 236, i32 240, i32 244, i32 248, i32 252>3502  %strided.vec1 = shufflevector <256 x i8> %wide.vec, <256 x i8> poison, <64 x i32> <i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 25, i32 29, i32 33, i32 37, i32 41, i32 45, i32 49, i32 53, i32 57, i32 61, i32 65, i32 69, i32 73, i32 77, i32 81, i32 85, i32 89, i32 93, i32 97, i32 101, i32 105, i32 109, i32 113, i32 117, i32 121, i32 125, i32 129, i32 133, i32 137, i32 141, i32 145, i32 149, i32 153, i32 157, i32 161, i32 165, i32 169, i32 173, i32 177, i32 181, i32 185, i32 189, i32 193, i32 197, i32 201, i32 205, i32 209, i32 213, i32 217, i32 221, i32 225, i32 229, i32 233, i32 237, i32 241, i32 245, i32 249, i32 253>3503  %strided.vec2 = shufflevector <256 x i8> %wide.vec, <256 x i8> poison, <64 x i32> <i32 2, i32 6, i32 10, i32 14, i32 18, i32 22, i32 26, i32 30, i32 34, i32 38, i32 42, i32 46, i32 50, i32 54, i32 58, i32 62, i32 66, i32 70, i32 74, i32 78, i32 82, i32 86, i32 90, i32 94, i32 98, i32 102, i32 106, i32 110, i32 114, i32 118, i32 122, i32 126, i32 130, i32 134, i32 138, i32 142, i32 146, i32 150, i32 154, i32 158, i32 162, i32 166, i32 170, i32 174, i32 178, i32 182, i32 186, i32 190, i32 194, i32 198, i32 202, i32 206, i32 210, i32 214, i32 218, i32 222, i32 226, i32 230, i32 234, i32 238, i32 242, i32 246, i32 250, i32 254>3504  %strided.vec3 = shufflevector <256 x i8> %wide.vec, <256 x i8> poison, <64 x i32> <i32 3, i32 7, i32 11, i32 15, i32 19, i32 23, i32 27, i32 31, i32 35, i32 39, i32 43, i32 47, i32 51, i32 55, i32 59, i32 63, i32 67, i32 71, i32 75, i32 79, i32 83, i32 87, i32 91, i32 95, i32 99, i32 103, i32 107, i32 111, i32 115, i32 119, i32 123, i32 127, i32 131, i32 135, i32 139, i32 143, i32 147, i32 151, i32 155, i32 159, i32 163, i32 167, i32 171, i32 175, i32 179, i32 183, i32 187, i32 191, i32 195, i32 199, i32 203, i32 207, i32 211, i32 215, i32 219, i32 223, i32 227, i32 231, i32 235, i32 239, i32 243, i32 247, i32 251, i32 255>3505  store <64 x i8> %strided.vec0, ptr %out.vec0, align 643506  store <64 x i8> %strided.vec1, ptr %out.vec1, align 643507  store <64 x i8> %strided.vec2, ptr %out.vec2, align 643508  store <64 x i8> %strided.vec3, ptr %out.vec3, align 643509  ret void3510}3511