10171 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_i16_stride5_vf2(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4) nounwind {19; SSE-LABEL: load_i16_stride5_vf2:20; SSE: # %bb.0:21; SSE-NEXT: movdqa (%rdi), %xmm022; SSE-NEXT: movdqa 16(%rdi), %xmm123; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm0[0,2,2,3]24; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]25; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm0[0,3,2,3]26; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]27; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm0[3,1,2,3]28; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,1,2,3,4,5,6,7]29; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm0[2,3,2,3]30; SSE-NEXT: psrlq $48, %xmm031; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]32; SSE-NEXT: psrld $16, %xmm133; SSE-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1],xmm5[2],xmm1[2],xmm5[3],xmm1[3]34; SSE-NEXT: movd %xmm2, (%rsi)35; SSE-NEXT: movd %xmm3, (%rdx)36; SSE-NEXT: movd %xmm4, (%rcx)37; SSE-NEXT: movd %xmm0, (%r8)38; SSE-NEXT: movd %xmm5, (%r9)39; SSE-NEXT: retq40;41; AVX-LABEL: load_i16_stride5_vf2:42; AVX: # %bb.0:43; AVX-NEXT: vmovdqa (%rdi), %xmm044; AVX-NEXT: vmovdqa 16(%rdi), %xmm145; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,2,2,3]46; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]47; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[0,3,2,3]48; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]49; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm0[3,1,2,3]50; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[2,1,2,3,4,5,6,7]51; AVX-NEXT: vpsrlq $48, %xmm0, %xmm552; AVX-NEXT: vpunpcklwd {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1],xmm5[2],xmm1[2],xmm5[3],xmm1[3]53; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]54; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6,7]55; AVX-NEXT: vmovd %xmm2, (%rsi)56; AVX-NEXT: vmovd %xmm3, (%rdx)57; AVX-NEXT: vmovd %xmm4, (%rcx)58; AVX-NEXT: vmovd %xmm5, (%r8)59; AVX-NEXT: vmovd %xmm0, (%r9)60; AVX-NEXT: retq61;62; AVX2-LABEL: load_i16_stride5_vf2:63; AVX2: # %bb.0:64; AVX2-NEXT: vmovdqa (%rdi), %xmm065; AVX2-NEXT: vmovdqa 16(%rdi), %xmm166; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,2,2,3]67; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]68; AVX2-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[0,3,2,3]69; AVX2-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]70; AVX2-NEXT: vpshufd {{.*#+}} xmm4 = xmm0[3,1,2,3]71; AVX2-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[2,1,2,3,4,5,6,7]72; AVX2-NEXT: vpsrlq $48, %xmm0, %xmm073; AVX2-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]74; AVX2-NEXT: vpbroadcastw 8(%rdi), %xmm575; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2,3,4,5,6,7]76; AVX2-NEXT: vmovd %xmm2, (%rsi)77; AVX2-NEXT: vmovd %xmm3, (%rdx)78; AVX2-NEXT: vmovd %xmm4, (%rcx)79; AVX2-NEXT: vmovd %xmm0, (%r8)80; AVX2-NEXT: vmovd %xmm1, (%r9)81; AVX2-NEXT: retq82;83; AVX2-FP-LABEL: load_i16_stride5_vf2:84; AVX2-FP: # %bb.0:85; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm086; AVX2-FP-NEXT: vmovdqa 16(%rdi), %xmm187; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm2 = xmm0[0,1,10,11,u,u,u,u,u,u,u,u,u,u,u,u]88; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm3 = xmm0[2,3,12,13,u,u,u,u,u,u,u,u,u,u,u,u]89; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm4 = xmm0[4,5,14,15,u,u,u,u,u,u,u,u,u,u,u,u]90; AVX2-FP-NEXT: vpsrlq $48, %xmm0, %xmm091; AVX2-FP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]92; AVX2-FP-NEXT: vpbroadcastw 8(%rdi), %xmm593; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2,3,4,5,6,7]94; AVX2-FP-NEXT: vmovd %xmm2, (%rsi)95; AVX2-FP-NEXT: vmovd %xmm3, (%rdx)96; AVX2-FP-NEXT: vmovd %xmm4, (%rcx)97; AVX2-FP-NEXT: vmovd %xmm0, (%r8)98; AVX2-FP-NEXT: vmovd %xmm1, (%r9)99; AVX2-FP-NEXT: retq100;101; AVX2-FCP-LABEL: load_i16_stride5_vf2:102; AVX2-FCP: # %bb.0:103; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm0104; AVX2-FCP-NEXT: vmovdqa 16(%rdi), %xmm1105; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm0[0,1,10,11,u,u,u,u,u,u,u,u,u,u,u,u]106; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm0[2,3,12,13,u,u,u,u,u,u,u,u,u,u,u,u]107; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm0[4,5,14,15,u,u,u,u,u,u,u,u,u,u,u,u]108; AVX2-FCP-NEXT: vpsrlq $48, %xmm0, %xmm0109; AVX2-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]110; AVX2-FCP-NEXT: vpbroadcastw 8(%rdi), %xmm5111; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2,3,4,5,6,7]112; AVX2-FCP-NEXT: vmovd %xmm2, (%rsi)113; AVX2-FCP-NEXT: vmovd %xmm3, (%rdx)114; AVX2-FCP-NEXT: vmovd %xmm4, (%rcx)115; AVX2-FCP-NEXT: vmovd %xmm0, (%r8)116; AVX2-FCP-NEXT: vmovd %xmm1, (%r9)117; AVX2-FCP-NEXT: retq118;119; AVX512-LABEL: load_i16_stride5_vf2:120; AVX512: # %bb.0:121; AVX512-NEXT: vmovdqa (%rdi), %xmm0122; AVX512-NEXT: vmovdqa 16(%rdi), %xmm1123; AVX512-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,2,2,3]124; AVX512-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]125; AVX512-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[0,3,2,3]126; AVX512-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]127; AVX512-NEXT: vpshufd {{.*#+}} xmm4 = xmm0[3,1,2,3]128; AVX512-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[2,1,2,3,4,5,6,7]129; AVX512-NEXT: vpsrlq $48, %xmm0, %xmm0130; AVX512-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]131; AVX512-NEXT: vpbroadcastw 8(%rdi), %xmm5132; AVX512-NEXT: vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2,3,4,5,6,7]133; AVX512-NEXT: vmovd %xmm2, (%rsi)134; AVX512-NEXT: vmovd %xmm3, (%rdx)135; AVX512-NEXT: vmovd %xmm4, (%rcx)136; AVX512-NEXT: vmovd %xmm0, (%r8)137; AVX512-NEXT: vmovd %xmm1, (%r9)138; AVX512-NEXT: retq139;140; AVX512-FCP-LABEL: load_i16_stride5_vf2:141; AVX512-FCP: # %bb.0:142; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm0143; AVX512-FCP-NEXT: vmovdqa 16(%rdi), %xmm1144; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm0[0,1,10,11,u,u,u,u,u,u,u,u,u,u,u,u]145; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm0[2,3,12,13,u,u,u,u,u,u,u,u,u,u,u,u]146; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm0[4,5,14,15,u,u,u,u,u,u,u,u,u,u,u,u]147; AVX512-FCP-NEXT: vpsrlq $48, %xmm0, %xmm0148; AVX512-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]149; AVX512-FCP-NEXT: vpbroadcastw 8(%rdi), %xmm5150; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2,3,4,5,6,7]151; AVX512-FCP-NEXT: vmovd %xmm2, (%rsi)152; AVX512-FCP-NEXT: vmovd %xmm3, (%rdx)153; AVX512-FCP-NEXT: vmovd %xmm4, (%rcx)154; AVX512-FCP-NEXT: vmovd %xmm0, (%r8)155; AVX512-FCP-NEXT: vmovd %xmm1, (%r9)156; AVX512-FCP-NEXT: retq157;158; AVX512DQ-LABEL: load_i16_stride5_vf2:159; AVX512DQ: # %bb.0:160; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm0161; AVX512DQ-NEXT: vmovdqa 16(%rdi), %xmm1162; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,2,2,3]163; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]164; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[0,3,2,3]165; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]166; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm4 = xmm0[3,1,2,3]167; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[2,1,2,3,4,5,6,7]168; AVX512DQ-NEXT: vpsrlq $48, %xmm0, %xmm0169; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]170; AVX512DQ-NEXT: vpbroadcastw 8(%rdi), %xmm5171; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2,3,4,5,6,7]172; AVX512DQ-NEXT: vmovd %xmm2, (%rsi)173; AVX512DQ-NEXT: vmovd %xmm3, (%rdx)174; AVX512DQ-NEXT: vmovd %xmm4, (%rcx)175; AVX512DQ-NEXT: vmovd %xmm0, (%r8)176; AVX512DQ-NEXT: vmovd %xmm1, (%r9)177; AVX512DQ-NEXT: retq178;179; AVX512DQ-FCP-LABEL: load_i16_stride5_vf2:180; AVX512DQ-FCP: # %bb.0:181; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm0182; AVX512DQ-FCP-NEXT: vmovdqa 16(%rdi), %xmm1183; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm0[0,1,10,11,u,u,u,u,u,u,u,u,u,u,u,u]184; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm0[2,3,12,13,u,u,u,u,u,u,u,u,u,u,u,u]185; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm0[4,5,14,15,u,u,u,u,u,u,u,u,u,u,u,u]186; AVX512DQ-FCP-NEXT: vpsrlq $48, %xmm0, %xmm0187; AVX512DQ-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]188; AVX512DQ-FCP-NEXT: vpbroadcastw 8(%rdi), %xmm5189; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2,3,4,5,6,7]190; AVX512DQ-FCP-NEXT: vmovd %xmm2, (%rsi)191; AVX512DQ-FCP-NEXT: vmovd %xmm3, (%rdx)192; AVX512DQ-FCP-NEXT: vmovd %xmm4, (%rcx)193; AVX512DQ-FCP-NEXT: vmovd %xmm0, (%r8)194; AVX512DQ-FCP-NEXT: vmovd %xmm1, (%r9)195; AVX512DQ-FCP-NEXT: retq196;197; AVX512BW-LABEL: load_i16_stride5_vf2:198; AVX512BW: # %bb.0:199; AVX512BW-NEXT: vmovdqa (%rdi), %xmm0200; AVX512BW-NEXT: vmovdqa 16(%rdi), %xmm1201; AVX512BW-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,2,2,3]202; AVX512BW-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]203; AVX512BW-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[0,3,2,3]204; AVX512BW-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]205; AVX512BW-NEXT: vpshufd {{.*#+}} xmm4 = xmm0[3,1,2,3]206; AVX512BW-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[2,1,2,3,4,5,6,7]207; AVX512BW-NEXT: vpsrlq $48, %xmm0, %xmm0208; AVX512BW-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]209; AVX512BW-NEXT: vpbroadcastw 8(%rdi), %xmm5210; AVX512BW-NEXT: vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2,3,4,5,6,7]211; AVX512BW-NEXT: vmovd %xmm2, (%rsi)212; AVX512BW-NEXT: vmovd %xmm3, (%rdx)213; AVX512BW-NEXT: vmovd %xmm4, (%rcx)214; AVX512BW-NEXT: vmovd %xmm0, (%r8)215; AVX512BW-NEXT: vmovd %xmm1, (%r9)216; AVX512BW-NEXT: retq217;218; AVX512BW-FCP-LABEL: load_i16_stride5_vf2:219; AVX512BW-FCP: # %bb.0:220; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %xmm0221; AVX512BW-FCP-NEXT: vmovdqa 16(%rdi), %xmm1222; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm0[0,1,10,11,u,u,u,u,u,u,u,u,u,u,u,u]223; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm0[2,3,12,13,u,u,u,u,u,u,u,u,u,u,u,u]224; AVX512BW-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm0[4,5,14,15,u,u,u,u,u,u,u,u,u,u,u,u]225; AVX512BW-FCP-NEXT: vpsrlq $48, %xmm0, %xmm0226; AVX512BW-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]227; AVX512BW-FCP-NEXT: vpbroadcastw 8(%rdi), %xmm5228; AVX512BW-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2,3,4,5,6,7]229; AVX512BW-FCP-NEXT: vmovd %xmm2, (%rsi)230; AVX512BW-FCP-NEXT: vmovd %xmm3, (%rdx)231; AVX512BW-FCP-NEXT: vmovd %xmm4, (%rcx)232; AVX512BW-FCP-NEXT: vmovd %xmm0, (%r8)233; AVX512BW-FCP-NEXT: vmovd %xmm1, (%r9)234; AVX512BW-FCP-NEXT: retq235;236; AVX512DQ-BW-LABEL: load_i16_stride5_vf2:237; AVX512DQ-BW: # %bb.0:238; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %xmm0239; AVX512DQ-BW-NEXT: vmovdqa 16(%rdi), %xmm1240; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,2,2,3]241; AVX512DQ-BW-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]242; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[0,3,2,3]243; AVX512DQ-BW-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]244; AVX512DQ-BW-NEXT: vpshufd {{.*#+}} xmm4 = xmm0[3,1,2,3]245; AVX512DQ-BW-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[2,1,2,3,4,5,6,7]246; AVX512DQ-BW-NEXT: vpsrlq $48, %xmm0, %xmm0247; AVX512DQ-BW-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]248; AVX512DQ-BW-NEXT: vpbroadcastw 8(%rdi), %xmm5249; AVX512DQ-BW-NEXT: vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2,3,4,5,6,7]250; AVX512DQ-BW-NEXT: vmovd %xmm2, (%rsi)251; AVX512DQ-BW-NEXT: vmovd %xmm3, (%rdx)252; AVX512DQ-BW-NEXT: vmovd %xmm4, (%rcx)253; AVX512DQ-BW-NEXT: vmovd %xmm0, (%r8)254; AVX512DQ-BW-NEXT: vmovd %xmm1, (%r9)255; AVX512DQ-BW-NEXT: retq256;257; AVX512DQ-BW-FCP-LABEL: load_i16_stride5_vf2:258; AVX512DQ-BW-FCP: # %bb.0:259; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %xmm0260; AVX512DQ-BW-FCP-NEXT: vmovdqa 16(%rdi), %xmm1261; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm0[0,1,10,11,u,u,u,u,u,u,u,u,u,u,u,u]262; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm0[2,3,12,13,u,u,u,u,u,u,u,u,u,u,u,u]263; AVX512DQ-BW-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm0[4,5,14,15,u,u,u,u,u,u,u,u,u,u,u,u]264; AVX512DQ-BW-FCP-NEXT: vpsrlq $48, %xmm0, %xmm0265; AVX512DQ-BW-FCP-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]266; AVX512DQ-BW-FCP-NEXT: vpbroadcastw 8(%rdi), %xmm5267; AVX512DQ-BW-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2,3,4,5,6,7]268; AVX512DQ-BW-FCP-NEXT: vmovd %xmm2, (%rsi)269; AVX512DQ-BW-FCP-NEXT: vmovd %xmm3, (%rdx)270; AVX512DQ-BW-FCP-NEXT: vmovd %xmm4, (%rcx)271; AVX512DQ-BW-FCP-NEXT: vmovd %xmm0, (%r8)272; AVX512DQ-BW-FCP-NEXT: vmovd %xmm1, (%r9)273; AVX512DQ-BW-FCP-NEXT: retq274 %wide.vec = load <10 x i16>, ptr %in.vec, align 64275 %strided.vec0 = shufflevector <10 x i16> %wide.vec, <10 x i16> poison, <2 x i32> <i32 0, i32 5>276 %strided.vec1 = shufflevector <10 x i16> %wide.vec, <10 x i16> poison, <2 x i32> <i32 1, i32 6>277 %strided.vec2 = shufflevector <10 x i16> %wide.vec, <10 x i16> poison, <2 x i32> <i32 2, i32 7>278 %strided.vec3 = shufflevector <10 x i16> %wide.vec, <10 x i16> poison, <2 x i32> <i32 3, i32 8>279 %strided.vec4 = shufflevector <10 x i16> %wide.vec, <10 x i16> poison, <2 x i32> <i32 4, i32 9>280 store <2 x i16> %strided.vec0, ptr %out.vec0, align 64281 store <2 x i16> %strided.vec1, ptr %out.vec1, align 64282 store <2 x i16> %strided.vec2, ptr %out.vec2, align 64283 store <2 x i16> %strided.vec3, ptr %out.vec3, align 64284 store <2 x i16> %strided.vec4, ptr %out.vec4, align 64285 ret void286}287 288define void @load_i16_stride5_vf4(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4) nounwind {289; SSE-LABEL: load_i16_stride5_vf4:290; SSE: # %bb.0:291; SSE-NEXT: movdqa (%rdi), %xmm1292; SSE-NEXT: movdqa 16(%rdi), %xmm2293; SSE-NEXT: movdqa 32(%rdi), %xmm0294; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm2[3,1,2,3]295; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[2,1,2,3,4,5,6,7]296; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm1[0,2,2,3]297; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]298; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]299; SSE-NEXT: movq %xmm4, (%rsi)300; SSE-NEXT: movdqa %xmm2, %xmm3301; SSE-NEXT: psrlq $48, %xmm3302; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm1[0,3,2,3]303; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[1,2,2,3,4,5,6,7]304; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]305; SSE-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3]306; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm4[0,3,2,1]307; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7]308; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]309; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,3,2,1,4,5,6,7]310; SSE-NEXT: movq %xmm3, (%rdx)311; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm1[0,1,1,3]312; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,7,6,7]313; SSE-NEXT: punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm2[2],xmm3[3],xmm2[3]314; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]315; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[3,1,2,0]316; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7]317; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,1,2,3]318; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,2,0,3,4,5,6,7]319; SSE-NEXT: movq %xmm3, (%rcx)320; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,1,1]321; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,2,2,3]322; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]323; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm4[0,3,2,3,4,5,6,7]324; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]325; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[1,0,3,3,4,5,6,7]326; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]327; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,2,2,3,4,5,6,7]328; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]329; SSE-NEXT: movq %xmm3, (%r8)330; SSE-NEXT: movdqa {{.*#+}} xmm3 = [65535,65535,65535,0,65535,65535,65535,65535]331; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm2[3,0]332; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm1[0,2]333; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm2[0,1,2,3,4,6,6,7]334; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]335; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,3,3,4,5,6,7]336; SSE-NEXT: pand %xmm3, %xmm1337; SSE-NEXT: pandn %xmm0, %xmm3338; SSE-NEXT: por %xmm1, %xmm3339; SSE-NEXT: movq %xmm3, (%r9)340; SSE-NEXT: retq341;342; AVX-LABEL: load_i16_stride5_vf4:343; AVX: # %bb.0:344; AVX-NEXT: vpshufd {{.*#+}} xmm0 = mem[3,1,2,3]345; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,1,2,3,4,5,6,7]346; AVX-NEXT: vmovdqa (%rdi), %xmm1347; AVX-NEXT: vmovdqa 16(%rdi), %xmm2348; AVX-NEXT: vmovdqa 32(%rdi), %xmm3349; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm1[0,2,2,3]350; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]351; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm4[0],xmm0[0],xmm4[1],xmm0[1]352; AVX-NEXT: vmovq %xmm0, (%rsi)353; AVX-NEXT: vpsrlq $48, %xmm2, %xmm0354; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm1[0,3,2,3]355; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[1,2,2,3,4,5,6,7]356; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm4[0],xmm0[0],xmm4[1],xmm0[1]357; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]358; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,4,5,8,9,2,3,u,u,u,u,u,u,u,u]359; AVX-NEXT: vmovq %xmm0, (%rdx)360; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm1[0,1,1,3]361; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]362; AVX-NEXT: vpunpckhdq {{.*#+}} xmm0 = xmm0[2],xmm2[2],xmm0[3],xmm2[3]363; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]364; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,4,5,8,9,6,7,u,u,u,u,u,u,u,u]365; AVX-NEXT: vmovq %xmm0, (%rcx)366; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm2[0,1],xmm1[2,3],xmm2[4,5,6,7]367; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[6,7,0,1,10,11,10,11,u,u,u,u,u,u,u,u]368; AVX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]369; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]370; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]371; AVX-NEXT: vmovq %xmm0, (%r8)372; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm2[0,1,2,3],xmm1[4,5],xmm2[6,7]373; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]374; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]375; AVX-NEXT: vmovq %xmm0, (%r9)376; AVX-NEXT: retq377;378; AVX2-LABEL: load_i16_stride5_vf4:379; AVX2: # %bb.0:380; AVX2-NEXT: vmovdqa (%rdi), %xmm0381; AVX2-NEXT: vmovdqa 16(%rdi), %xmm1382; AVX2-NEXT: vmovdqa 32(%rdi), %xmm2383; AVX2-NEXT: vpshufd {{.*#+}} xmm3 = xmm1[3,1,2,3]384; AVX2-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,1,2,3,4,5,6,7]385; AVX2-NEXT: vpshufd {{.*#+}} xmm4 = xmm0[0,2,2,3]386; AVX2-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]387; AVX2-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]388; AVX2-NEXT: vmovq %xmm3, (%rsi)389; AVX2-NEXT: vpblendw {{.*#+}} xmm3 = xmm2[0],xmm0[1,2,3,4,5,6,7]390; AVX2-NEXT: vpblendd {{.*#+}} xmm3 = xmm3[0],xmm1[1],xmm3[2,3]391; AVX2-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[2,3,12,13,6,7,0,1,u,u,u,u,u,u,u,u]392; AVX2-NEXT: vmovq %xmm3, (%rdx)393; AVX2-NEXT: vpblendd {{.*#+}} xmm3 = xmm2[0],xmm0[1,2,3]394; AVX2-NEXT: vpblendd {{.*#+}} xmm3 = xmm3[0,1],xmm1[2],xmm3[3]395; AVX2-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[4,5,14,15,8,9,2,3,u,u,u,u,u,u,u,u]396; AVX2-NEXT: vmovq %xmm3, (%rcx)397; AVX2-NEXT: vpblendw {{.*#+}} xmm3 = xmm0[0,1],xmm2[2],xmm0[3,4,5,6,7]398; AVX2-NEXT: vpblendd {{.*#+}} xmm3 = xmm1[0],xmm3[1],xmm1[2,3]399; AVX2-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[6,7,0,1,10,11,4,5,u,u,u,u,u,u,u,u]400; AVX2-NEXT: vmovq %xmm3, (%r8)401; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm1[0,1],xmm0[2],xmm1[3]402; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]403; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3],xmm0[4,5,6,7]404; AVX2-NEXT: vmovq %xmm0, (%r9)405; AVX2-NEXT: retq406;407; AVX2-FP-LABEL: load_i16_stride5_vf4:408; AVX2-FP: # %bb.0:409; AVX2-FP-NEXT: vmovdqa (%rdi), %xmm0410; AVX2-FP-NEXT: vmovdqa 16(%rdi), %xmm1411; AVX2-FP-NEXT: vmovdqa 32(%rdi), %xmm2412; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm3 = xmm1[4,5,14,15,u,u,u,u,u,u,u,u,u,u,u,u]413; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm4 = xmm0[0,1,10,11,u,u,u,u,u,u,u,u,u,u,u,u]414; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]415; AVX2-FP-NEXT: vmovq %xmm3, (%rsi)416; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm3 = xmm2[0],xmm0[1,2,3,4,5,6,7]417; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm3 = xmm3[0],xmm1[1],xmm3[2,3]418; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[2,3,12,13,6,7,0,1,u,u,u,u,u,u,u,u]419; AVX2-FP-NEXT: vmovq %xmm3, (%rdx)420; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm3 = xmm2[0],xmm0[1,2,3]421; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm3 = xmm3[0,1],xmm1[2],xmm3[3]422; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[4,5,14,15,8,9,2,3,u,u,u,u,u,u,u,u]423; AVX2-FP-NEXT: vmovq %xmm3, (%rcx)424; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm3 = xmm0[0,1],xmm2[2],xmm0[3,4,5,6,7]425; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm3 = xmm1[0],xmm3[1],xmm1[2,3]426; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[6,7,0,1,10,11,4,5,u,u,u,u,u,u,u,u]427; AVX2-FP-NEXT: vmovq %xmm3, (%r8)428; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm0 = xmm1[0,1],xmm0[2],xmm1[3]429; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]430; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3],xmm0[4,5,6,7]431; AVX2-FP-NEXT: vmovq %xmm0, (%r9)432; AVX2-FP-NEXT: retq433;434; AVX2-FCP-LABEL: load_i16_stride5_vf4:435; AVX2-FCP: # %bb.0:436; AVX2-FCP-NEXT: vmovdqa (%rdi), %xmm0437; AVX2-FCP-NEXT: vmovdqa 16(%rdi), %xmm1438; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %xmm2439; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm1[4,5,14,15,u,u,u,u,u,u,u,u,u,u,u,u]440; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm0[0,1,10,11,u,u,u,u,u,u,u,u,u,u,u,u]441; AVX2-FCP-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]442; AVX2-FCP-NEXT: vmovq %xmm3, (%rsi)443; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm2[0],xmm0[1,2,3,4,5,6,7]444; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm3 = xmm3[0],xmm1[1],xmm3[2,3]445; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[2,3,12,13,6,7,0,1,u,u,u,u,u,u,u,u]446; AVX2-FCP-NEXT: vmovq %xmm3, (%rdx)447; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm3 = xmm2[0],xmm0[1,2,3]448; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm3 = xmm3[0,1],xmm1[2],xmm3[3]449; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[4,5,14,15,8,9,2,3,u,u,u,u,u,u,u,u]450; AVX2-FCP-NEXT: vmovq %xmm3, (%rcx)451; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm0[0,1],xmm2[2],xmm0[3,4,5,6,7]452; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm3 = xmm1[0],xmm3[1],xmm1[2,3]453; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[6,7,0,1,10,11,4,5,u,u,u,u,u,u,u,u]454; AVX2-FCP-NEXT: vmovq %xmm3, (%r8)455; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm1[0,1],xmm0[2],xmm1[3]456; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]457; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3],xmm0[4,5,6,7]458; AVX2-FCP-NEXT: vmovq %xmm0, (%r9)459; AVX2-FCP-NEXT: retq460;461; AVX512-LABEL: load_i16_stride5_vf4:462; AVX512: # %bb.0:463; AVX512-NEXT: pushq %rbp464; AVX512-NEXT: pushq %r14465; AVX512-NEXT: pushq %rbx466; AVX512-NEXT: vmovdqa (%rdi), %xmm0467; AVX512-NEXT: vmovdqa 16(%rdi), %xmm1468; AVX512-NEXT: vmovdqa 32(%rdi), %xmm2469; AVX512-NEXT: vpextrw $7, %xmm1, %eax470; AVX512-NEXT: vpextrw $5, %xmm0, %r10d471; AVX512-NEXT: vmovd %xmm2, %r11d472; AVX512-NEXT: vpextrw $3, %xmm1, %ebx473; AVX512-NEXT: vpextrw $6, %xmm0, %ebp474; AVX512-NEXT: vpextrw $1, %xmm0, %r14d475; AVX512-NEXT: vpinsrw $1, %r10d, %xmm0, %xmm3476; AVX512-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0,1],xmm1[2],xmm3[3,4,5,6,7]477; AVX512-NEXT: vpinsrw $3, %eax, %xmm1, %xmm1478; AVX512-NEXT: vmovdqa 16(%rdi), %xmm3479; AVX512-NEXT: vmovq %xmm1, (%rsi)480; AVX512-NEXT: vmovd %r14d, %xmm1481; AVX512-NEXT: vpinsrw $1, %ebp, %xmm1, %xmm1482; AVX512-NEXT: vpinsrw $2, %ebx, %xmm1, %xmm1483; AVX512-NEXT: vpinsrw $3, %r11d, %xmm1, %xmm1484; AVX512-NEXT: vmovq %xmm1, (%rdx)485; AVX512-NEXT: vpblendd {{.*#+}} xmm1 = xmm2[0],xmm0[1,2,3]486; AVX512-NEXT: vpblendd {{.*#+}} xmm1 = xmm1[0,1],xmm3[2],xmm1[3]487; AVX512-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[4,5,14,15,8,9,2,3,u,u,u,u,u,u,u,u]488; AVX512-NEXT: vmovq %xmm1, (%rcx)489; AVX512-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1],xmm2[2],xmm0[3,4,5,6,7]490; AVX512-NEXT: vpblendd {{.*#+}} xmm1 = xmm3[0],xmm1[1],xmm3[2,3]491; AVX512-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,7,0,1,10,11,4,5,u,u,u,u,u,u,u,u]492; AVX512-NEXT: vmovq %xmm1, (%r8)493; AVX512-NEXT: vpblendd {{.*#+}} xmm0 = xmm3[0,1],xmm0[2],xmm3[3]494; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]495; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3],xmm0[4,5,6,7]496; AVX512-NEXT: vmovq %xmm0, (%r9)497; AVX512-NEXT: popq %rbx498; AVX512-NEXT: popq %r14499; AVX512-NEXT: popq %rbp500; AVX512-NEXT: retq501;502; AVX512-FCP-LABEL: load_i16_stride5_vf4:503; AVX512-FCP: # %bb.0:504; AVX512-FCP-NEXT: vmovdqa (%rdi), %xmm0505; AVX512-FCP-NEXT: vmovdqa 16(%rdi), %xmm1506; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %xmm2507; AVX512-FCP-NEXT: vpextrw $7, %xmm1, %eax508; AVX512-FCP-NEXT: vmovd %xmm2, %r10d509; AVX512-FCP-NEXT: vpextrw $3, %xmm1, %r11d510; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm0[0,1,10,11,u,u,u,u,u,u,u,u,u,u,u,u]511; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0,1],xmm1[2],xmm3[3,4,5,6,7]512; AVX512-FCP-NEXT: vpinsrw $3, %eax, %xmm1, %xmm1513; AVX512-FCP-NEXT: vmovdqa 16(%rdi), %xmm3514; AVX512-FCP-NEXT: vmovq %xmm1, (%rsi)515; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[2,3,12,13,u,u,u,u,u,u,u,u,u,u,u,u]516; AVX512-FCP-NEXT: vpinsrw $2, %r11d, %xmm1, %xmm1517; AVX512-FCP-NEXT: vpinsrw $3, %r10d, %xmm1, %xmm1518; AVX512-FCP-NEXT: vmovq %xmm1, (%rdx)519; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm1 = xmm2[0],xmm0[1,2,3]520; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm1 = xmm1[0,1],xmm3[2],xmm1[3]521; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[4,5,14,15,8,9,2,3,u,u,u,u,u,u,u,u]522; AVX512-FCP-NEXT: vmovq %xmm1, (%rcx)523; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1],xmm2[2],xmm0[3,4,5,6,7]524; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm1 = xmm3[0],xmm1[1],xmm3[2,3]525; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,7,0,1,10,11,4,5,u,u,u,u,u,u,u,u]526; AVX512-FCP-NEXT: vmovq %xmm1, (%r8)527; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm3[0,1],xmm0[2],xmm3[3]528; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]529; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3],xmm0[4,5,6,7]530; AVX512-FCP-NEXT: vmovq %xmm0, (%r9)531; AVX512-FCP-NEXT: retq532;533; AVX512DQ-LABEL: load_i16_stride5_vf4:534; AVX512DQ: # %bb.0:535; AVX512DQ-NEXT: pushq %rbp536; AVX512DQ-NEXT: pushq %r14537; AVX512DQ-NEXT: pushq %rbx538; AVX512DQ-NEXT: vmovdqa (%rdi), %xmm0539; AVX512DQ-NEXT: vmovdqa 16(%rdi), %xmm1540; AVX512DQ-NEXT: vmovdqa 32(%rdi), %xmm2541; AVX512DQ-NEXT: vpextrw $7, %xmm1, %eax542; AVX512DQ-NEXT: vpextrw $5, %xmm0, %r10d543; AVX512DQ-NEXT: vmovd %xmm2, %r11d544; AVX512DQ-NEXT: vpextrw $3, %xmm1, %ebx545; AVX512DQ-NEXT: vpextrw $6, %xmm0, %ebp546; AVX512DQ-NEXT: vpextrw $1, %xmm0, %r14d547; AVX512DQ-NEXT: vpinsrw $1, %r10d, %xmm0, %xmm3548; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0,1],xmm1[2],xmm3[3,4,5,6,7]549; AVX512DQ-NEXT: vpinsrw $3, %eax, %xmm1, %xmm1550; AVX512DQ-NEXT: vmovdqa 16(%rdi), %xmm3551; AVX512DQ-NEXT: vmovq %xmm1, (%rsi)552; AVX512DQ-NEXT: vmovd %r14d, %xmm1553; AVX512DQ-NEXT: vpinsrw $1, %ebp, %xmm1, %xmm1554; AVX512DQ-NEXT: vpinsrw $2, %ebx, %xmm1, %xmm1555; AVX512DQ-NEXT: vpinsrw $3, %r11d, %xmm1, %xmm1556; AVX512DQ-NEXT: vmovq %xmm1, (%rdx)557; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm1 = xmm2[0],xmm0[1,2,3]558; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm1 = xmm1[0,1],xmm3[2],xmm1[3]559; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[4,5,14,15,8,9,2,3,u,u,u,u,u,u,u,u]560; AVX512DQ-NEXT: vmovq %xmm1, (%rcx)561; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1],xmm2[2],xmm0[3,4,5,6,7]562; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm1 = xmm3[0],xmm1[1],xmm3[2,3]563; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,7,0,1,10,11,4,5,u,u,u,u,u,u,u,u]564; AVX512DQ-NEXT: vmovq %xmm1, (%r8)565; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm0 = xmm3[0,1],xmm0[2],xmm3[3]566; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]567; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3],xmm0[4,5,6,7]568; AVX512DQ-NEXT: vmovq %xmm0, (%r9)569; AVX512DQ-NEXT: popq %rbx570; AVX512DQ-NEXT: popq %r14571; AVX512DQ-NEXT: popq %rbp572; AVX512DQ-NEXT: retq573;574; AVX512DQ-FCP-LABEL: load_i16_stride5_vf4:575; AVX512DQ-FCP: # %bb.0:576; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %xmm0577; AVX512DQ-FCP-NEXT: vmovdqa 16(%rdi), %xmm1578; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %xmm2579; AVX512DQ-FCP-NEXT: vpextrw $7, %xmm1, %eax580; AVX512DQ-FCP-NEXT: vmovd %xmm2, %r10d581; AVX512DQ-FCP-NEXT: vpextrw $3, %xmm1, %r11d582; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm0[0,1,10,11,u,u,u,u,u,u,u,u,u,u,u,u]583; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0,1],xmm1[2],xmm3[3,4,5,6,7]584; AVX512DQ-FCP-NEXT: vpinsrw $3, %eax, %xmm1, %xmm1585; AVX512DQ-FCP-NEXT: vmovdqa 16(%rdi), %xmm3586; AVX512DQ-FCP-NEXT: vmovq %xmm1, (%rsi)587; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[2,3,12,13,u,u,u,u,u,u,u,u,u,u,u,u]588; AVX512DQ-FCP-NEXT: vpinsrw $2, %r11d, %xmm1, %xmm1589; AVX512DQ-FCP-NEXT: vpinsrw $3, %r10d, %xmm1, %xmm1590; AVX512DQ-FCP-NEXT: vmovq %xmm1, (%rdx)591; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm1 = xmm2[0],xmm0[1,2,3]592; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm1 = xmm1[0,1],xmm3[2],xmm1[3]593; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[4,5,14,15,8,9,2,3,u,u,u,u,u,u,u,u]594; AVX512DQ-FCP-NEXT: vmovq %xmm1, (%rcx)595; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1],xmm2[2],xmm0[3,4,5,6,7]596; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm1 = xmm3[0],xmm1[1],xmm3[2,3]597; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[6,7,0,1,10,11,4,5,u,u,u,u,u,u,u,u]598; AVX512DQ-FCP-NEXT: vmovq %xmm1, (%r8)599; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm3[0,1],xmm0[2],xmm3[3]600; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]601; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3],xmm0[4,5,6,7]602; AVX512DQ-FCP-NEXT: vmovq %xmm0, (%r9)603; AVX512DQ-FCP-NEXT: retq604;605; AVX512BW-LABEL: load_i16_stride5_vf4:606; AVX512BW: # %bb.0:607; AVX512BW-NEXT: vmovq {{.*#+}} xmm0 = [1,6,11,0,0,0,0,0]608; AVX512BW-NEXT: vmovdqa (%rdi), %ymm1609; AVX512BW-NEXT: vpermw %ymm1, %ymm0, %ymm0610; AVX512BW-NEXT: vmovq {{.*#+}} xmm2 = [0,5,10,0,0,0,0,0]611; AVX512BW-NEXT: vpermw %ymm1, %ymm2, %ymm1612; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm2613; AVX512BW-NEXT: vmovdqa 16(%rdi), %xmm3614; AVX512BW-NEXT: vpextrw $7, %xmm3, %eax615; AVX512BW-NEXT: movl 32(%rdi), %edi616; AVX512BW-NEXT: vpinsrw $3, %eax, %xmm1, %xmm1617; AVX512BW-NEXT: vmovq %xmm1, (%rsi)618; AVX512BW-NEXT: vpinsrw $3, %edi, %xmm0, %xmm0619; AVX512BW-NEXT: vmovq %xmm0, (%rdx)620; AVX512BW-NEXT: vmovq {{.*#+}} xmm0 = [2,7,12,17,0,0,0,0]621; AVX512BW-NEXT: vpermw %zmm2, %zmm0, %zmm0622; AVX512BW-NEXT: vmovq %xmm0, (%rcx)623; AVX512BW-NEXT: vmovq {{.*#+}} xmm0 = [3,8,13,18,0,0,0,0]624; AVX512BW-NEXT: vpermw %zmm2, %zmm0, %zmm0625; AVX512BW-NEXT: vmovq %xmm0, (%r8)626; AVX512BW-NEXT: vmovq {{.*#+}} xmm0 = [4,9,14,19,0,0,0,0]627; AVX512BW-NEXT: vpermw %zmm2, %zmm0, %zmm0628; AVX512BW-NEXT: vmovq %xmm0, (%r9)629; AVX512BW-NEXT: vzeroupper630; AVX512BW-NEXT: retq631;632; AVX512BW-FCP-LABEL: load_i16_stride5_vf4:633; AVX512BW-FCP: # %bb.0:634; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = [1,6,11,0,0,0,0,0]635; AVX512BW-FCP-NEXT: vmovdqa (%rdi), %ymm1636; AVX512BW-FCP-NEXT: vpermw %ymm1, %ymm0, %ymm0637; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = [0,5,10,0,0,0,0,0]638; AVX512BW-FCP-NEXT: vpermw %ymm1, %ymm2, %ymm1639; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm2640; AVX512BW-FCP-NEXT: vmovdqa 16(%rdi), %xmm3641; AVX512BW-FCP-NEXT: vpextrw $7, %xmm3, %eax642; AVX512BW-FCP-NEXT: movl 32(%rdi), %edi643; AVX512BW-FCP-NEXT: vpinsrw $3, %eax, %xmm1, %xmm1644; AVX512BW-FCP-NEXT: vmovq %xmm1, (%rsi)645; AVX512BW-FCP-NEXT: vpinsrw $3, %edi, %xmm0, %xmm0646; AVX512BW-FCP-NEXT: vmovq %xmm0, (%rdx)647; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = [2,7,12,17,0,0,0,0]648; AVX512BW-FCP-NEXT: vpermw %zmm2, %zmm0, %zmm0649; AVX512BW-FCP-NEXT: vmovq %xmm0, (%rcx)650; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = [3,8,13,18,0,0,0,0]651; AVX512BW-FCP-NEXT: vpermw %zmm2, %zmm0, %zmm0652; AVX512BW-FCP-NEXT: vmovq %xmm0, (%r8)653; AVX512BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = [4,9,14,19,0,0,0,0]654; AVX512BW-FCP-NEXT: vpermw %zmm2, %zmm0, %zmm0655; AVX512BW-FCP-NEXT: vmovq %xmm0, (%r9)656; AVX512BW-FCP-NEXT: vzeroupper657; AVX512BW-FCP-NEXT: retq658;659; AVX512DQ-BW-LABEL: load_i16_stride5_vf4:660; AVX512DQ-BW: # %bb.0:661; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm0 = [1,6,11,0,0,0,0,0]662; AVX512DQ-BW-NEXT: vmovdqa (%rdi), %ymm1663; AVX512DQ-BW-NEXT: vpermw %ymm1, %ymm0, %ymm0664; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm2 = [0,5,10,0,0,0,0,0]665; AVX512DQ-BW-NEXT: vpermw %ymm1, %ymm2, %ymm1666; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm2667; AVX512DQ-BW-NEXT: vmovdqa 16(%rdi), %xmm3668; AVX512DQ-BW-NEXT: vpextrw $7, %xmm3, %eax669; AVX512DQ-BW-NEXT: movl 32(%rdi), %edi670; AVX512DQ-BW-NEXT: vpinsrw $3, %eax, %xmm1, %xmm1671; AVX512DQ-BW-NEXT: vmovq %xmm1, (%rsi)672; AVX512DQ-BW-NEXT: vpinsrw $3, %edi, %xmm0, %xmm0673; AVX512DQ-BW-NEXT: vmovq %xmm0, (%rdx)674; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm0 = [2,7,12,17,0,0,0,0]675; AVX512DQ-BW-NEXT: vpermw %zmm2, %zmm0, %zmm0676; AVX512DQ-BW-NEXT: vmovq %xmm0, (%rcx)677; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm0 = [3,8,13,18,0,0,0,0]678; AVX512DQ-BW-NEXT: vpermw %zmm2, %zmm0, %zmm0679; AVX512DQ-BW-NEXT: vmovq %xmm0, (%r8)680; AVX512DQ-BW-NEXT: vmovq {{.*#+}} xmm0 = [4,9,14,19,0,0,0,0]681; AVX512DQ-BW-NEXT: vpermw %zmm2, %zmm0, %zmm0682; AVX512DQ-BW-NEXT: vmovq %xmm0, (%r9)683; AVX512DQ-BW-NEXT: vzeroupper684; AVX512DQ-BW-NEXT: retq685;686; AVX512DQ-BW-FCP-LABEL: load_i16_stride5_vf4:687; AVX512DQ-BW-FCP: # %bb.0:688; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = [1,6,11,0,0,0,0,0]689; AVX512DQ-BW-FCP-NEXT: vmovdqa (%rdi), %ymm1690; AVX512DQ-BW-FCP-NEXT: vpermw %ymm1, %ymm0, %ymm0691; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm2 = [0,5,10,0,0,0,0,0]692; AVX512DQ-BW-FCP-NEXT: vpermw %ymm1, %ymm2, %ymm1693; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm2694; AVX512DQ-BW-FCP-NEXT: vmovdqa 16(%rdi), %xmm3695; AVX512DQ-BW-FCP-NEXT: vpextrw $7, %xmm3, %eax696; AVX512DQ-BW-FCP-NEXT: movl 32(%rdi), %edi697; AVX512DQ-BW-FCP-NEXT: vpinsrw $3, %eax, %xmm1, %xmm1698; AVX512DQ-BW-FCP-NEXT: vmovq %xmm1, (%rsi)699; AVX512DQ-BW-FCP-NEXT: vpinsrw $3, %edi, %xmm0, %xmm0700; AVX512DQ-BW-FCP-NEXT: vmovq %xmm0, (%rdx)701; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = [2,7,12,17,0,0,0,0]702; AVX512DQ-BW-FCP-NEXT: vpermw %zmm2, %zmm0, %zmm0703; AVX512DQ-BW-FCP-NEXT: vmovq %xmm0, (%rcx)704; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = [3,8,13,18,0,0,0,0]705; AVX512DQ-BW-FCP-NEXT: vpermw %zmm2, %zmm0, %zmm0706; AVX512DQ-BW-FCP-NEXT: vmovq %xmm0, (%r8)707; AVX512DQ-BW-FCP-NEXT: vmovq {{.*#+}} xmm0 = [4,9,14,19,0,0,0,0]708; AVX512DQ-BW-FCP-NEXT: vpermw %zmm2, %zmm0, %zmm0709; AVX512DQ-BW-FCP-NEXT: vmovq %xmm0, (%r9)710; AVX512DQ-BW-FCP-NEXT: vzeroupper711; AVX512DQ-BW-FCP-NEXT: retq712 %wide.vec = load <20 x i16>, ptr %in.vec, align 64713 %strided.vec0 = shufflevector <20 x i16> %wide.vec, <20 x i16> poison, <4 x i32> <i32 0, i32 5, i32 10, i32 15>714 %strided.vec1 = shufflevector <20 x i16> %wide.vec, <20 x i16> poison, <4 x i32> <i32 1, i32 6, i32 11, i32 16>715 %strided.vec2 = shufflevector <20 x i16> %wide.vec, <20 x i16> poison, <4 x i32> <i32 2, i32 7, i32 12, i32 17>716 %strided.vec3 = shufflevector <20 x i16> %wide.vec, <20 x i16> poison, <4 x i32> <i32 3, i32 8, i32 13, i32 18>717 %strided.vec4 = shufflevector <20 x i16> %wide.vec, <20 x i16> poison, <4 x i32> <i32 4, i32 9, i32 14, i32 19>718 store <4 x i16> %strided.vec0, ptr %out.vec0, align 64719 store <4 x i16> %strided.vec1, ptr %out.vec1, align 64720 store <4 x i16> %strided.vec2, ptr %out.vec2, align 64721 store <4 x i16> %strided.vec3, ptr %out.vec3, align 64722 store <4 x i16> %strided.vec4, ptr %out.vec4, align 64723 ret void724}725 726define void @load_i16_stride5_vf8(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4) nounwind {727; SSE-LABEL: load_i16_stride5_vf8:728; SSE: # %bb.0:729; SSE-NEXT: movdqa 64(%rdi), %xmm6730; SSE-NEXT: movdqa (%rdi), %xmm4731; SSE-NEXT: movdqa 16(%rdi), %xmm3732; SSE-NEXT: movdqa 32(%rdi), %xmm0733; SSE-NEXT: movdqa 48(%rdi), %xmm5734; SSE-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,0,65535,65535,65535]735; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm5[0,1,0,3]736; SSE-NEXT: pand %xmm1, %xmm2737; SSE-NEXT: pandn %xmm0, %xmm1738; SSE-NEXT: por %xmm2, %xmm1739; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm3[3,1,2,3]740; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[2,1,2,3,4,5,6,7]741; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm4[0,2,2,3]742; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[0,3,2,3,4,5,6,7]743; SSE-NEXT: punpckldq {{.*#+}} xmm7 = xmm7[0],xmm2[0],xmm7[1],xmm2[1]744; SSE-NEXT: shufps {{.*#+}} xmm7 = xmm7[0,1],xmm1[2,3]745; SSE-NEXT: movaps {{.*#+}} xmm1 = [65535,65535,65535,65535,65535,65535,65535,0]746; SSE-NEXT: andps %xmm1, %xmm7747; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm6[0,1,0,1]748; SSE-NEXT: movaps %xmm1, %xmm2749; SSE-NEXT: pandn %xmm8, %xmm2750; SSE-NEXT: por %xmm7, %xmm2751; SSE-NEXT: movdqa %xmm3, %xmm7752; SSE-NEXT: psrlq $48, %xmm7753; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm4[0,3,2,3]754; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm8[1,2,2,3,4,5,6,7]755; SSE-NEXT: punpckldq {{.*#+}} xmm8 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]756; SSE-NEXT: movdqa {{.*#+}} xmm7 = [0,0,0,65535,65535,65535,65535,65535]757; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm5[1,3,2,3]758; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm0[0,2,2,3]759; SSE-NEXT: punpckldq {{.*#+}} xmm10 = xmm10[0],xmm9[0],xmm10[1],xmm9[1]760; SSE-NEXT: pshufhw {{.*#+}} xmm9 = xmm10[0,1,2,3,7,5,6,7]761; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm9[0,1,2,1]762; SSE-NEXT: pshuflw {{.*#+}} xmm9 = xmm9[0,0,0,0,4,5,6,7]763; SSE-NEXT: pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,5,6,4,7]764; SSE-NEXT: pand %xmm7, %xmm9765; SSE-NEXT: pandn %xmm8, %xmm7766; SSE-NEXT: por %xmm9, %xmm7767; SSE-NEXT: pand %xmm1, %xmm7768; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm6[0,1,2,0]769; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm6[0,1,0,3]770; SSE-NEXT: pshufd {{.*#+}} xmm10 = xmm6[0,1,1,3]771; SSE-NEXT: psllq $48, %xmm6772; SSE-NEXT: pandn %xmm6, %xmm1773; SSE-NEXT: por %xmm7, %xmm1774; SSE-NEXT: movdqa %xmm5, %xmm7775; SSE-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,2,2,3]776; SSE-NEXT: movdqa %xmm5, %xmm12777; SSE-NEXT: shufps {{.*#+}} xmm12 = xmm12[1,0],xmm0[0,0]778; SSE-NEXT: shufps {{.*#+}} xmm12 = xmm12[2,0],xmm0[2,3]779; SSE-NEXT: shufps {{.*#+}} xmm12 = xmm12[0,0,1,3]780; SSE-NEXT: movdqa {{.*#+}} xmm13 = [65535,65535,65535,0,0,0,65535,65535]781; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,1,1,3]782; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,7,6,7]783; SSE-NEXT: punpckhdq {{.*#+}} xmm5 = xmm5[2],xmm3[2],xmm5[3],xmm3[3]784; SSE-NEXT: pand %xmm13, %xmm5785; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm4[1,1,1,1]786; SSE-NEXT: pshufd {{.*#+}} xmm14 = xmm3[0,2,2,3]787; SSE-NEXT: punpckldq {{.*#+}} xmm14 = xmm14[0],xmm11[0],xmm14[1],xmm11[1]788; SSE-NEXT: movdqa %xmm13, %xmm15789; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm14[0,3,2,3,4,5,6,7]790; SSE-NEXT: pshufd {{.*#+}} xmm11 = xmm11[0,2,2,3]791; SSE-NEXT: pshuflw {{.*#+}} xmm11 = xmm11[1,0,3,3,4,5,6,7]792; SSE-NEXT: pand %xmm13, %xmm11793; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[2,0],xmm3[3,0]794; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm4[0,2]795; SSE-NEXT: movdqa %xmm13, %xmm4796; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7]797; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]798; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[2,1,3,3,4,5,6,7]799; SSE-NEXT: pand %xmm13, %xmm3800; SSE-NEXT: pandn %xmm12, %xmm13801; SSE-NEXT: por %xmm13, %xmm5802; SSE-NEXT: pshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,6,5,6,7]803; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,6,5]804; SSE-NEXT: shufps {{.*#+}} xmm8 = xmm8[3,1],xmm12[2,3]805; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,1],xmm8[2,0]806; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm0[2,2,2,2,4,5,6,7]807; SSE-NEXT: pandn %xmm8, %xmm15808; SSE-NEXT: por %xmm15, %xmm11809; SSE-NEXT: shufps {{.*#+}} xmm7 = xmm7[2,0],xmm0[3,0]810; SSE-NEXT: pandn %xmm0, %xmm4811; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm7[0,2]812; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,4,6,7]813; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm9[0,1,2,3,4,5,5,6]814; SSE-NEXT: shufps {{.*#+}} xmm7 = xmm7[3,1],xmm0[2,3]815; SSE-NEXT: shufps {{.*#+}} xmm11 = xmm11[0,1],xmm7[2,0]816; SSE-NEXT: por %xmm4, %xmm3817; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm6[0,1,0,3,4,5,6,7]818; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm10[0,1,2,3,4,5,4,7]819; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,1],xmm0[1,3]820; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,0]821; SSE-NEXT: movdqa %xmm2, (%rsi)822; SSE-NEXT: movdqa %xmm1, (%rdx)823; SSE-NEXT: movaps %xmm5, (%rcx)824; SSE-NEXT: movaps %xmm11, (%r8)825; SSE-NEXT: movaps %xmm3, (%r9)826; SSE-NEXT: retq827;828; AVX-LABEL: load_i16_stride5_vf8:829; AVX: # %bb.0:830; AVX-NEXT: vmovdqa (%rdi), %xmm0831; AVX-NEXT: vmovdqa 16(%rdi), %xmm1832; AVX-NEXT: vmovdqa 32(%rdi), %xmm2833; AVX-NEXT: vmovdqa 48(%rdi), %xmm3834; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm3[0,1,0,3]835; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3],xmm2[4],xmm4[5,6,7]836; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm1[3,1,2,3]837; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[2,1,2,3,4,5,6,7]838; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm0[0,2,2,3]839; AVX-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,3,2,3,4,5,6,7]840; AVX-NEXT: vpunpckldq {{.*#+}} xmm5 = xmm6[0],xmm5[0],xmm6[1],xmm5[1]841; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0,1,2,3],xmm4[4,5,6,7]842; AVX-NEXT: vmovdqa 64(%rdi), %xmm5843; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm5[0,1,0,1]844; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6],xmm6[7]845; AVX-NEXT: vpsrlq $48, %xmm1, %xmm6846; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm0[0,3,2,3]847; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[1,2,2,3,4,5,6,7]848; AVX-NEXT: vpunpckldq {{.*#+}} xmm6 = xmm7[0],xmm6[0],xmm7[1],xmm6[1]849; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm2[0,1],xmm3[2,3],xmm2[4,5],xmm3[6,7]850; AVX-NEXT: vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,0,1,10,11,4,5,14,15,u,u]851; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1,2],xmm7[3,4,5,6,7]852; AVX-NEXT: vpsllq $48, %xmm5, %xmm7853; AVX-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,6],xmm7[7]854; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm0[0,1,1,3]855; AVX-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,7,6,7]856; AVX-NEXT: vpunpckhdq {{.*#+}} xmm7 = xmm7[2],xmm1[2],xmm7[3],xmm1[3]857; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm2[0,1],xmm3[2,3],xmm2[4,5,6,7]858; AVX-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,2,3,12,13,6,7,u,u,u,u]859; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm8[3,4,5],xmm7[6,7]860; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm5[0,1,2,0]861; AVX-NEXT: vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,6,5]862; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5],xmm8[6,7]863; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm1[0,1],xmm0[2,3],xmm1[4,5,6,7]864; AVX-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[6,7,0,1,10,11,u,u,u,u,u,u,12,13,14,15]865; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm2[0,1,2,3],xmm3[4,5],xmm2[6,7]866; AVX-NEXT: vpshuflw {{.*#+}} xmm9 = xmm9[2,2,2,2,4,5,6,7]867; AVX-NEXT: vpshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,7,4,6,7]868; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1,2],xmm9[3,4,5],xmm8[6,7]869; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm5[0,1,0,3]870; AVX-NEXT: vpshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,5,5,6]871; AVX-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5],xmm9[6,7]872; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[1,1,1,1]873; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]874; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,1,0,3,4,5,6,7]875; AVX-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]876; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3],xmm0[4,5],xmm1[6,7]877; AVX-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,2,3,12,13,u,u,u,u,u,u,12,13,14,15]878; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3,4,5],xmm0[6,7]879; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm5[0,1,1,3]880; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,7]881; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5],xmm1[6,7]882; AVX-NEXT: vmovdqa %xmm4, (%rsi)883; AVX-NEXT: vmovdqa %xmm6, (%rdx)884; AVX-NEXT: vmovdqa %xmm7, (%rcx)885; AVX-NEXT: vmovdqa %xmm8, (%r8)886; AVX-NEXT: vmovdqa %xmm0, (%r9)887; AVX-NEXT: retq888;889; AVX2-LABEL: load_i16_stride5_vf8:890; AVX2: # %bb.0:891; AVX2-NEXT: vmovdqa (%rdi), %ymm0892; AVX2-NEXT: vmovdqa 32(%rdi), %ymm2893; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]894; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3895; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm3[1,2,3],xmm1[4,5],xmm3[6,7]896; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,10,11,4,5,14,15,8,9,2,3,12,13,u,u]897; AVX2-NEXT: vpbroadcastw 70(%rdi), %xmm3898; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6],xmm3[7]899; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm2[0],ymm0[1],ymm2[2],ymm0[3],ymm2[4,5],ymm0[6],ymm2[7,8],ymm0[9],ymm2[10],ymm0[11],ymm2[12,13],ymm0[14],ymm2[15]900; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4901; AVX2-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3],xmm3[4,5,6],xmm4[7]902; AVX2-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[2,3,12,13,6,7,0,1,10,11,4,5,14,15,u,u]903; AVX2-NEXT: vmovdqa 64(%rdi), %xmm4904; AVX2-NEXT: vpsllq $48, %xmm4, %xmm5905; AVX2-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,6],xmm5[7]906; AVX2-NEXT: vpblendw {{.*#+}} ymm5 = ymm2[0,1],ymm0[2],ymm2[3],ymm0[4],ymm2[5,6],ymm0[7],ymm2[8,9],ymm0[10],ymm2[11],ymm0[12],ymm2[13,14],ymm0[15]907; AVX2-NEXT: vextracti128 $1, %ymm5, %xmm6908; AVX2-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2],xmm6[3,4],xmm5[5,6,7]909; AVX2-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]910; AVX2-NEXT: vpshufd {{.*#+}} xmm6 = xmm4[0,1,2,0]911; AVX2-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,6,5]912; AVX2-NEXT: vpblendd {{.*#+}} xmm5 = xmm5[0,1,2],xmm6[3]913; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm0[0],ymm2[1,2],ymm0[3],ymm2[4],ymm0[5],ymm2[6,7],ymm0[8],ymm2[9,10],ymm0[11],ymm2[12],ymm0[13],ymm2[14,15]914; AVX2-NEXT: vextracti128 $1, %ymm6, %xmm7915; AVX2-NEXT: vpblendd {{.*#+}} xmm6 = xmm7[0],xmm6[1],xmm7[2],xmm6[3]916; AVX2-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]917; AVX2-NEXT: vpshufd {{.*#+}} xmm7 = xmm4[0,1,0,3]918; AVX2-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,5,6]919; AVX2-NEXT: vpblendd {{.*#+}} xmm6 = xmm6[0,1,2],xmm7[3]920; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0],ymm0[1],ymm2[2,3],ymm0[4],ymm2[5],ymm0[6],ymm2[7,8],ymm0[9],ymm2[10,11],ymm0[12],ymm2[13],ymm0[14],ymm2[15]921; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2922; AVX2-NEXT: vpblendw {{.*#+}} xmm0 = xmm2[0,1,2],xmm0[3,4],xmm2[5,6,7]923; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]924; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm4[0,1,1,3]925; AVX2-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]926; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3]927; AVX2-NEXT: vmovdqa %xmm1, (%rsi)928; AVX2-NEXT: vmovdqa %xmm3, (%rdx)929; AVX2-NEXT: vmovdqa %xmm5, (%rcx)930; AVX2-NEXT: vmovdqa %xmm6, (%r8)931; AVX2-NEXT: vmovdqa %xmm0, (%r9)932; AVX2-NEXT: vzeroupper933; AVX2-NEXT: retq934;935; AVX2-FP-LABEL: load_i16_stride5_vf8:936; AVX2-FP: # %bb.0:937; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm0938; AVX2-FP-NEXT: vmovdqa 32(%rdi), %ymm1939; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]940; AVX2-FP-NEXT: vextracti128 $1, %ymm2, %xmm3941; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1,2,3],xmm2[4,5],xmm3[6,7]942; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[0,1,10,11,4,5,14,15,8,9,2,3,12,13,u,u]943; AVX2-FP-NEXT: vpbroadcastw 70(%rdi), %xmm3944; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6],xmm3[7]945; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]946; AVX2-FP-NEXT: vextracti128 $1, %ymm3, %xmm4947; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3],xmm3[4,5,6],xmm4[7]948; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[2,3,12,13,6,7,0,1,10,11,4,5,14,15,u,u]949; AVX2-FP-NEXT: vmovdqa 64(%rdi), %xmm4950; AVX2-FP-NEXT: vpsllq $48, %xmm4, %xmm5951; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,6],xmm5[7]952; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm5 = [4,5,14,15,8,9,2,3,12,13,6,7,0,1,10,11]953; AVX2-FP-NEXT: vpshufb %xmm5, %xmm4, %xmm6954; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm7 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]955; AVX2-FP-NEXT: vextracti128 $1, %ymm7, %xmm8956; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm8[3,4],xmm7[5,6,7]957; AVX2-FP-NEXT: vpshufb %xmm5, %xmm7, %xmm5958; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm5 = xmm5[0,1,2],xmm6[3]959; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm6 = [6,7,0,1,10,11,4,5,14,15,8,9,2,3,12,13]960; AVX2-FP-NEXT: vpshufb %xmm6, %xmm4, %xmm7961; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]962; AVX2-FP-NEXT: vextracti128 $1, %ymm8, %xmm9963; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm8 = xmm9[0],xmm8[1],xmm9[2],xmm8[3]964; AVX2-FP-NEXT: vpshufb %xmm6, %xmm8, %xmm6965; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm6 = xmm6[0,1,2],xmm7[3]966; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm7 = [8,9,2,3,12,13,6,7,0,1,10,11,4,5,14,15]967; AVX2-FP-NEXT: vpshufb %xmm7, %xmm4, %xmm4968; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]969; AVX2-FP-NEXT: vextracti128 $1, %ymm0, %xmm1970; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]971; AVX2-FP-NEXT: vpshufb %xmm7, %xmm0, %xmm0972; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1,2],xmm4[3]973; AVX2-FP-NEXT: vmovdqa %xmm2, (%rsi)974; AVX2-FP-NEXT: vmovdqa %xmm3, (%rdx)975; AVX2-FP-NEXT: vmovdqa %xmm5, (%rcx)976; AVX2-FP-NEXT: vmovdqa %xmm6, (%r8)977; AVX2-FP-NEXT: vmovdqa %xmm0, (%r9)978; AVX2-FP-NEXT: vzeroupper979; AVX2-FP-NEXT: retq980;981; AVX2-FCP-LABEL: load_i16_stride5_vf8:982; AVX2-FCP: # %bb.0:983; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm0984; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %ymm1985; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]986; AVX2-FCP-NEXT: vextracti128 $1, %ymm2, %xmm3987; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1,2,3],xmm2[4,5],xmm3[6,7]988; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[0,1,10,11,4,5,14,15,8,9,2,3,12,13,u,u]989; AVX2-FCP-NEXT: vpbroadcastw 70(%rdi), %xmm3990; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6],xmm3[7]991; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]992; AVX2-FCP-NEXT: vextracti128 $1, %ymm3, %xmm4993; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3],xmm3[4,5,6],xmm4[7]994; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[2,3,12,13,6,7,0,1,10,11,4,5,14,15,u,u]995; AVX2-FCP-NEXT: vmovdqa 64(%rdi), %xmm4996; AVX2-FCP-NEXT: vpsllq $48, %xmm4, %xmm5997; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,6],xmm5[7]998; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm5 = [4,5,14,15,8,9,2,3,12,13,6,7,0,1,10,11]999; AVX2-FCP-NEXT: vpshufb %xmm5, %xmm4, %xmm61000; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]1001; AVX2-FCP-NEXT: vextracti128 $1, %ymm7, %xmm81002; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm8[3,4],xmm7[5,6,7]1003; AVX2-FCP-NEXT: vpshufb %xmm5, %xmm7, %xmm51004; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm5 = xmm5[0,1,2],xmm6[3]1005; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm6 = [6,7,0,1,10,11,4,5,14,15,8,9,2,3,12,13]1006; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm4, %xmm71007; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]1008; AVX2-FCP-NEXT: vextracti128 $1, %ymm8, %xmm91009; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm8 = xmm9[0],xmm8[1],xmm9[2],xmm8[3]1010; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm8, %xmm61011; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm6 = xmm6[0,1,2],xmm7[3]1012; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm7 = [8,9,2,3,12,13,6,7,0,1,10,11,4,5,14,15]1013; AVX2-FCP-NEXT: vpshufb %xmm7, %xmm4, %xmm41014; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]1015; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm11016; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]1017; AVX2-FCP-NEXT: vpshufb %xmm7, %xmm0, %xmm01018; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1,2],xmm4[3]1019; AVX2-FCP-NEXT: vmovdqa %xmm2, (%rsi)1020; AVX2-FCP-NEXT: vmovdqa %xmm3, (%rdx)1021; AVX2-FCP-NEXT: vmovdqa %xmm5, (%rcx)1022; AVX2-FCP-NEXT: vmovdqa %xmm6, (%r8)1023; AVX2-FCP-NEXT: vmovdqa %xmm0, (%r9)1024; AVX2-FCP-NEXT: vzeroupper1025; AVX2-FCP-NEXT: retq1026;1027; AVX512-LABEL: load_i16_stride5_vf8:1028; AVX512: # %bb.0:1029; AVX512-NEXT: vmovdqa (%rdi), %ymm01030; AVX512-NEXT: vmovdqa 32(%rdi), %ymm21031; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]1032; AVX512-NEXT: vextracti128 $1, %ymm1, %xmm31033; AVX512-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm3[1,2,3],xmm1[4,5],xmm3[6,7]1034; AVX512-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,10,11,4,5,14,15,8,9,2,3,12,13,u,u]1035; AVX512-NEXT: vpbroadcastw 70(%rdi), %xmm31036; AVX512-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6],xmm3[7]1037; AVX512-NEXT: vmovdqa 64(%rdi), %xmm31038; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm2[0],ymm0[1],ymm2[2],ymm0[3],ymm2[4,5],ymm0[6],ymm2[7,8],ymm0[9],ymm2[10],ymm0[11],ymm2[12,13],ymm0[14],ymm2[15]1039; AVX512-NEXT: vextracti128 $1, %ymm4, %xmm51040; AVX512-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2,3],xmm4[4,5,6],xmm5[7]1041; AVX512-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[2,3,12,13,6,7,0,1,10,11,4,5,14,15,u,u]1042; AVX512-NEXT: vpsllq $48, %xmm3, %xmm51043; AVX512-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6],xmm5[7]1044; AVX512-NEXT: vpblendw {{.*#+}} ymm5 = ymm2[0,1],ymm0[2],ymm2[3],ymm0[4],ymm2[5,6],ymm0[7],ymm2[8,9],ymm0[10],ymm2[11],ymm0[12],ymm2[13,14],ymm0[15]1045; AVX512-NEXT: vextracti128 $1, %ymm5, %xmm61046; AVX512-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2],xmm6[3,4],xmm5[5,6,7]1047; AVX512-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]1048; AVX512-NEXT: vpshufd {{.*#+}} xmm6 = xmm3[0,1,2,0]1049; AVX512-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,6,5]1050; AVX512-NEXT: vpblendd {{.*#+}} xmm5 = xmm5[0,1,2],xmm6[3]1051; AVX512-NEXT: vpblendw {{.*#+}} ymm6 = ymm0[0],ymm2[1,2],ymm0[3],ymm2[4],ymm0[5],ymm2[6,7],ymm0[8],ymm2[9,10],ymm0[11],ymm2[12],ymm0[13],ymm2[14,15]1052; AVX512-NEXT: vextracti128 $1, %ymm6, %xmm71053; AVX512-NEXT: vpblendd {{.*#+}} xmm6 = xmm7[0],xmm6[1],xmm7[2],xmm6[3]1054; AVX512-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]1055; AVX512-NEXT: vpshufd {{.*#+}} xmm7 = xmm3[0,1,0,3]1056; AVX512-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,5,6]1057; AVX512-NEXT: vpblendd {{.*#+}} xmm6 = xmm6[0,1,2],xmm7[3]1058; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0],ymm0[1],ymm2[2,3],ymm0[4],ymm2[5],ymm0[6],ymm2[7,8],ymm0[9],ymm2[10,11],ymm0[12],ymm2[13],ymm0[14],ymm2[15]1059; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm21060; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm2[0,1,2],xmm0[3,4],xmm2[5,6,7]1061; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]1062; AVX512-NEXT: vpshufd {{.*#+}} xmm2 = xmm3[0,1,1,3]1063; AVX512-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]1064; AVX512-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3]1065; AVX512-NEXT: vmovdqa %xmm1, (%rsi)1066; AVX512-NEXT: vmovdqa %xmm4, (%rdx)1067; AVX512-NEXT: vmovdqa %xmm5, (%rcx)1068; AVX512-NEXT: vmovdqa %xmm6, (%r8)1069; AVX512-NEXT: vmovdqa %xmm0, (%r9)1070; AVX512-NEXT: vzeroupper1071; AVX512-NEXT: retq1072;1073; AVX512-FCP-LABEL: load_i16_stride5_vf8:1074; AVX512-FCP: # %bb.0:1075; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm01076; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %ymm11077; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]1078; AVX512-FCP-NEXT: vextracti128 $1, %ymm2, %xmm31079; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1,2,3],xmm2[4,5],xmm3[6,7]1080; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[0,1,10,11,4,5,14,15,8,9,2,3,12,13,u,u]1081; AVX512-FCP-NEXT: vpbroadcastw 70(%rdi), %xmm31082; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6],xmm3[7]1083; AVX512-FCP-NEXT: vmovdqa 64(%rdi), %xmm31084; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]1085; AVX512-FCP-NEXT: vextracti128 $1, %ymm4, %xmm51086; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2,3],xmm4[4,5,6],xmm5[7]1087; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[2,3,12,13,6,7,0,1,10,11,4,5,14,15,u,u]1088; AVX512-FCP-NEXT: vpsllq $48, %xmm3, %xmm51089; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6],xmm5[7]1090; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm5 = [4,5,14,15,8,9,2,3,12,13,6,7,0,1,10,11]1091; AVX512-FCP-NEXT: vpshufb %xmm5, %xmm3, %xmm61092; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]1093; AVX512-FCP-NEXT: vextracti128 $1, %ymm7, %xmm81094; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm8[3,4],xmm7[5,6,7]1095; AVX512-FCP-NEXT: vpshufb %xmm5, %xmm7, %xmm51096; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm5 = xmm5[0,1,2],xmm6[3]1097; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm6 = [6,7,0,1,10,11,4,5,14,15,8,9,2,3,12,13]1098; AVX512-FCP-NEXT: vpshufb %xmm6, %xmm3, %xmm71099; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]1100; AVX512-FCP-NEXT: vextracti128 $1, %ymm8, %xmm91101; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm8 = xmm9[0],xmm8[1],xmm9[2],xmm8[3]1102; AVX512-FCP-NEXT: vpshufb %xmm6, %xmm8, %xmm61103; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm6 = xmm6[0,1,2],xmm7[3]1104; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm7 = [8,9,2,3,12,13,6,7,0,1,10,11,4,5,14,15]1105; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm3, %xmm31106; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]1107; AVX512-FCP-NEXT: vextracti128 $1, %ymm0, %xmm11108; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]1109; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm0, %xmm01110; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3]1111; AVX512-FCP-NEXT: vmovdqa %xmm2, (%rsi)1112; AVX512-FCP-NEXT: vmovdqa %xmm4, (%rdx)1113; AVX512-FCP-NEXT: vmovdqa %xmm5, (%rcx)1114; AVX512-FCP-NEXT: vmovdqa %xmm6, (%r8)1115; AVX512-FCP-NEXT: vmovdqa %xmm0, (%r9)1116; AVX512-FCP-NEXT: vzeroupper1117; AVX512-FCP-NEXT: retq1118;1119; AVX512DQ-LABEL: load_i16_stride5_vf8:1120; AVX512DQ: # %bb.0:1121; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm01122; AVX512DQ-NEXT: vmovdqa 32(%rdi), %ymm21123; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]1124; AVX512DQ-NEXT: vextracti128 $1, %ymm1, %xmm31125; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm3[1,2,3],xmm1[4,5],xmm3[6,7]1126; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,10,11,4,5,14,15,8,9,2,3,12,13,u,u]1127; AVX512DQ-NEXT: vpbroadcastw 70(%rdi), %xmm31128; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6],xmm3[7]1129; AVX512DQ-NEXT: vmovdqa 64(%rdi), %xmm31130; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm2[0],ymm0[1],ymm2[2],ymm0[3],ymm2[4,5],ymm0[6],ymm2[7,8],ymm0[9],ymm2[10],ymm0[11],ymm2[12,13],ymm0[14],ymm2[15]1131; AVX512DQ-NEXT: vextracti128 $1, %ymm4, %xmm51132; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2,3],xmm4[4,5,6],xmm5[7]1133; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[2,3,12,13,6,7,0,1,10,11,4,5,14,15,u,u]1134; AVX512DQ-NEXT: vpsllq $48, %xmm3, %xmm51135; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6],xmm5[7]1136; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm5 = ymm2[0,1],ymm0[2],ymm2[3],ymm0[4],ymm2[5,6],ymm0[7],ymm2[8,9],ymm0[10],ymm2[11],ymm0[12],ymm2[13,14],ymm0[15]1137; AVX512DQ-NEXT: vextracti128 $1, %ymm5, %xmm61138; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2],xmm6[3,4],xmm5[5,6,7]1139; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]1140; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm6 = xmm3[0,1,2,0]1141; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,6,5]1142; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm5 = xmm5[0,1,2],xmm6[3]1143; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm6 = ymm0[0],ymm2[1,2],ymm0[3],ymm2[4],ymm0[5],ymm2[6,7],ymm0[8],ymm2[9,10],ymm0[11],ymm2[12],ymm0[13],ymm2[14,15]1144; AVX512DQ-NEXT: vextracti128 $1, %ymm6, %xmm71145; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm6 = xmm7[0],xmm6[1],xmm7[2],xmm6[3]1146; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]1147; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm7 = xmm3[0,1,0,3]1148; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,5,6]1149; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm6 = xmm6[0,1,2],xmm7[3]1150; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0],ymm0[1],ymm2[2,3],ymm0[4],ymm2[5],ymm0[6],ymm2[7,8],ymm0[9],ymm2[10,11],ymm0[12],ymm2[13],ymm0[14],ymm2[15]1151; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm21152; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm2[0,1,2],xmm0[3,4],xmm2[5,6,7]1153; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]1154; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm2 = xmm3[0,1,1,3]1155; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]1156; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3]1157; AVX512DQ-NEXT: vmovdqa %xmm1, (%rsi)1158; AVX512DQ-NEXT: vmovdqa %xmm4, (%rdx)1159; AVX512DQ-NEXT: vmovdqa %xmm5, (%rcx)1160; AVX512DQ-NEXT: vmovdqa %xmm6, (%r8)1161; AVX512DQ-NEXT: vmovdqa %xmm0, (%r9)1162; AVX512DQ-NEXT: vzeroupper1163; AVX512DQ-NEXT: retq1164;1165; AVX512DQ-FCP-LABEL: load_i16_stride5_vf8:1166; AVX512DQ-FCP: # %bb.0:1167; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm01168; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %ymm11169; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]1170; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm2, %xmm31171; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1,2,3],xmm2[4,5],xmm3[6,7]1172; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[0,1,10,11,4,5,14,15,8,9,2,3,12,13,u,u]1173; AVX512DQ-FCP-NEXT: vpbroadcastw 70(%rdi), %xmm31174; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6],xmm3[7]1175; AVX512DQ-FCP-NEXT: vmovdqa 64(%rdi), %xmm31176; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]1177; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm4, %xmm51178; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2,3],xmm4[4,5,6],xmm5[7]1179; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[2,3,12,13,6,7,0,1,10,11,4,5,14,15,u,u]1180; AVX512DQ-FCP-NEXT: vpsllq $48, %xmm3, %xmm51181; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6],xmm5[7]1182; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm5 = [4,5,14,15,8,9,2,3,12,13,6,7,0,1,10,11]1183; AVX512DQ-FCP-NEXT: vpshufb %xmm5, %xmm3, %xmm61184; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]1185; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm7, %xmm81186; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm8[3,4],xmm7[5,6,7]1187; AVX512DQ-FCP-NEXT: vpshufb %xmm5, %xmm7, %xmm51188; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm5 = xmm5[0,1,2],xmm6[3]1189; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm6 = [6,7,0,1,10,11,4,5,14,15,8,9,2,3,12,13]1190; AVX512DQ-FCP-NEXT: vpshufb %xmm6, %xmm3, %xmm71191; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]1192; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm8, %xmm91193; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm8 = xmm9[0],xmm8[1],xmm9[2],xmm8[3]1194; AVX512DQ-FCP-NEXT: vpshufb %xmm6, %xmm8, %xmm61195; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm6 = xmm6[0,1,2],xmm7[3]1196; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm7 = [8,9,2,3,12,13,6,7,0,1,10,11,4,5,14,15]1197; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm3, %xmm31198; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]1199; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm0, %xmm11200; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]1201; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm0, %xmm01202; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3]1203; AVX512DQ-FCP-NEXT: vmovdqa %xmm2, (%rsi)1204; AVX512DQ-FCP-NEXT: vmovdqa %xmm4, (%rdx)1205; AVX512DQ-FCP-NEXT: vmovdqa %xmm5, (%rcx)1206; AVX512DQ-FCP-NEXT: vmovdqa %xmm6, (%r8)1207; AVX512DQ-FCP-NEXT: vmovdqa %xmm0, (%r9)1208; AVX512DQ-FCP-NEXT: vzeroupper1209; AVX512DQ-FCP-NEXT: retq1210;1211; AVX512BW-LABEL: load_i16_stride5_vf8:1212; AVX512BW: # %bb.0:1213; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm01214; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm11215; AVX512BW-NEXT: vpmovsxbw {{.*#+}} xmm2 = [0,5,10,15,20,25,30,35]1216; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm21217; AVX512BW-NEXT: vpmovsxbw {{.*#+}} xmm3 = [1,6,11,16,21,26,31,36]1218; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm31219; AVX512BW-NEXT: vpmovsxbw {{.*#+}} xmm4 = [2,7,12,17,22,27,32,37]1220; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm41221; AVX512BW-NEXT: vpmovsxbw {{.*#+}} xmm5 = [3,8,13,18,23,28,33,38]1222; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm51223; AVX512BW-NEXT: vpmovsxbw {{.*#+}} xmm6 = [4,9,14,19,24,29,34,39]1224; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm61225; AVX512BW-NEXT: vmovdqa %xmm2, (%rsi)1226; AVX512BW-NEXT: vmovdqa %xmm3, (%rdx)1227; AVX512BW-NEXT: vmovdqa %xmm4, (%rcx)1228; AVX512BW-NEXT: vmovdqa %xmm5, (%r8)1229; AVX512BW-NEXT: vmovdqa %xmm6, (%r9)1230; AVX512BW-NEXT: vzeroupper1231; AVX512BW-NEXT: retq1232;1233; AVX512BW-FCP-LABEL: load_i16_stride5_vf8:1234; AVX512BW-FCP: # %bb.0:1235; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm01236; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm11237; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm2 = [0,5,10,15,20,25,30,35]1238; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm21239; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm3 = [1,6,11,16,21,26,31,36]1240; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm31241; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm4 = [2,7,12,17,22,27,32,37]1242; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm41243; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm5 = [3,8,13,18,23,28,33,38]1244; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm51245; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm6 = [4,9,14,19,24,29,34,39]1246; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm61247; AVX512BW-FCP-NEXT: vmovdqa %xmm2, (%rsi)1248; AVX512BW-FCP-NEXT: vmovdqa %xmm3, (%rdx)1249; AVX512BW-FCP-NEXT: vmovdqa %xmm4, (%rcx)1250; AVX512BW-FCP-NEXT: vmovdqa %xmm5, (%r8)1251; AVX512BW-FCP-NEXT: vmovdqa %xmm6, (%r9)1252; AVX512BW-FCP-NEXT: vzeroupper1253; AVX512BW-FCP-NEXT: retq1254;1255; AVX512DQ-BW-LABEL: load_i16_stride5_vf8:1256; AVX512DQ-BW: # %bb.0:1257; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm01258; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm11259; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} xmm2 = [0,5,10,15,20,25,30,35]1260; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm21261; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} xmm3 = [1,6,11,16,21,26,31,36]1262; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm31263; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} xmm4 = [2,7,12,17,22,27,32,37]1264; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm41265; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} xmm5 = [3,8,13,18,23,28,33,38]1266; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm51267; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} xmm6 = [4,9,14,19,24,29,34,39]1268; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm61269; AVX512DQ-BW-NEXT: vmovdqa %xmm2, (%rsi)1270; AVX512DQ-BW-NEXT: vmovdqa %xmm3, (%rdx)1271; AVX512DQ-BW-NEXT: vmovdqa %xmm4, (%rcx)1272; AVX512DQ-BW-NEXT: vmovdqa %xmm5, (%r8)1273; AVX512DQ-BW-NEXT: vmovdqa %xmm6, (%r9)1274; AVX512DQ-BW-NEXT: vzeroupper1275; AVX512DQ-BW-NEXT: retq1276;1277; AVX512DQ-BW-FCP-LABEL: load_i16_stride5_vf8:1278; AVX512DQ-BW-FCP: # %bb.0:1279; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm01280; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm11281; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm2 = [0,5,10,15,20,25,30,35]1282; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm21283; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm3 = [1,6,11,16,21,26,31,36]1284; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm31285; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm4 = [2,7,12,17,22,27,32,37]1286; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm41287; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm5 = [3,8,13,18,23,28,33,38]1288; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm51289; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} xmm6 = [4,9,14,19,24,29,34,39]1290; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm61291; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm2, (%rsi)1292; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm3, (%rdx)1293; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm4, (%rcx)1294; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm5, (%r8)1295; AVX512DQ-BW-FCP-NEXT: vmovdqa %xmm6, (%r9)1296; AVX512DQ-BW-FCP-NEXT: vzeroupper1297; AVX512DQ-BW-FCP-NEXT: retq1298 %wide.vec = load <40 x i16>, ptr %in.vec, align 641299 %strided.vec0 = shufflevector <40 x i16> %wide.vec, <40 x i16> poison, <8 x i32> <i32 0, i32 5, i32 10, i32 15, i32 20, i32 25, i32 30, i32 35>1300 %strided.vec1 = shufflevector <40 x i16> %wide.vec, <40 x i16> poison, <8 x i32> <i32 1, i32 6, i32 11, i32 16, i32 21, i32 26, i32 31, i32 36>1301 %strided.vec2 = shufflevector <40 x i16> %wide.vec, <40 x i16> poison, <8 x i32> <i32 2, i32 7, i32 12, i32 17, i32 22, i32 27, i32 32, i32 37>1302 %strided.vec3 = shufflevector <40 x i16> %wide.vec, <40 x i16> poison, <8 x i32> <i32 3, i32 8, i32 13, i32 18, i32 23, i32 28, i32 33, i32 38>1303 %strided.vec4 = shufflevector <40 x i16> %wide.vec, <40 x i16> poison, <8 x i32> <i32 4, i32 9, i32 14, i32 19, i32 24, i32 29, i32 34, i32 39>1304 store <8 x i16> %strided.vec0, ptr %out.vec0, align 641305 store <8 x i16> %strided.vec1, ptr %out.vec1, align 641306 store <8 x i16> %strided.vec2, ptr %out.vec2, align 641307 store <8 x i16> %strided.vec3, ptr %out.vec3, align 641308 store <8 x i16> %strided.vec4, ptr %out.vec4, align 641309 ret void1310}1311 1312define void @load_i16_stride5_vf16(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4) nounwind {1313; SSE-LABEL: load_i16_stride5_vf16:1314; SSE: # %bb.0:1315; SSE-NEXT: movdqa 144(%rdi), %xmm141316; SSE-NEXT: movdqa 80(%rdi), %xmm81317; SSE-NEXT: movdqa 96(%rdi), %xmm71318; SSE-NEXT: movdqa 128(%rdi), %xmm151319; SSE-NEXT: movdqa 112(%rdi), %xmm121320; SSE-NEXT: movdqa 64(%rdi), %xmm101321; SSE-NEXT: movdqa (%rdi), %xmm111322; SSE-NEXT: movdqa 16(%rdi), %xmm91323; SSE-NEXT: movdqa 32(%rdi), %xmm131324; SSE-NEXT: movdqa 48(%rdi), %xmm51325; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,0,65535,65535,65535]1326; SSE-NEXT: movdqa %xmm0, %xmm11327; SSE-NEXT: pandn %xmm13, %xmm11328; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm5[0,1,0,3]1329; SSE-NEXT: pand %xmm0, %xmm21330; SSE-NEXT: por %xmm1, %xmm21331; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm9[3,1,2,3]1332; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]1333; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm11[0,2,2,3]1334; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm3[0,3,2,3,4,5,6,7]1335; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]1336; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm2[2,3]1337; SSE-NEXT: movaps {{.*#+}} xmm6 = [65535,65535,65535,65535,65535,65535,65535,0]1338; SSE-NEXT: andps %xmm6, %xmm41339; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm10[0,1,0,1]1340; SSE-NEXT: movaps %xmm6, %xmm21341; SSE-NEXT: pandn %xmm1, %xmm21342; SSE-NEXT: por %xmm4, %xmm21343; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1344; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm15[0,1,0,3]1345; SSE-NEXT: pand %xmm0, %xmm11346; SSE-NEXT: pandn %xmm12, %xmm01347; SSE-NEXT: por %xmm1, %xmm01348; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm7[3,1,2,3]1349; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]1350; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm8[0,2,2,3]1351; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]1352; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1353; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm0[2,3]1354; SSE-NEXT: andps %xmm6, %xmm21355; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm14[0,1,0,1]1356; SSE-NEXT: movaps %xmm6, %xmm11357; SSE-NEXT: andnps %xmm0, %xmm11358; SSE-NEXT: orps %xmm2, %xmm11359; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1360; SSE-NEXT: movdqa %xmm9, %xmm01361; SSE-NEXT: psrlq $48, %xmm01362; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm11[0,3,2,3]1363; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[1,2,2,3,4,5,6,7]1364; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]1365; SSE-NEXT: movdqa {{.*#+}} xmm0 = [0,0,0,65535,65535,65535,65535,65535]1366; SSE-NEXT: movdqa %xmm0, %xmm21367; SSE-NEXT: pandn %xmm1, %xmm21368; SSE-NEXT: movdqa %xmm5, %xmm31369; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[1,3,2,3]1370; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm13[0,2,2,3]1371; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]1372; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm4[0,1,2,3,7,5,6,7]1373; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]1374; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]1375; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,6,4,7]1376; SSE-NEXT: pand %xmm0, %xmm11377; SSE-NEXT: por %xmm2, %xmm11378; SSE-NEXT: movdqa %xmm10, %xmm51379; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1380; SSE-NEXT: movdqa %xmm10, %xmm21381; SSE-NEXT: psllq $48, %xmm21382; SSE-NEXT: movaps %xmm6, %xmm41383; SSE-NEXT: andnps %xmm2, %xmm41384; SSE-NEXT: pand %xmm6, %xmm11385; SSE-NEXT: orps %xmm1, %xmm41386; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1387; SSE-NEXT: movdqa %xmm7, %xmm11388; SSE-NEXT: psrlq $48, %xmm11389; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm8[0,3,2,3]1390; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[1,2,2,3,4,5,6,7]1391; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1392; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm15[1,3,2,3]1393; SSE-NEXT: movdqa %xmm15, %xmm101394; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm12[0,2,2,3]1395; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]1396; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm4[0,1,2,3,7,5,6,7]1397; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]1398; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]1399; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,6,4,7]1400; SSE-NEXT: pand %xmm0, %xmm11401; SSE-NEXT: pandn %xmm2, %xmm01402; SSE-NEXT: por %xmm1, %xmm01403; SSE-NEXT: pand %xmm6, %xmm01404; SSE-NEXT: movdqa %xmm14, %xmm41405; SSE-NEXT: movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1406; SSE-NEXT: movdqa %xmm14, %xmm11407; SSE-NEXT: psllq $48, %xmm11408; SSE-NEXT: pandn %xmm1, %xmm61409; SSE-NEXT: por %xmm0, %xmm61410; SSE-NEXT: movdqa %xmm3, %xmm01411; SSE-NEXT: movdqa %xmm3, %xmm141412; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1413; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,0],xmm13[0,0]1414; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0],xmm13[2,3]1415; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0,1,3]1416; SSE-NEXT: movaps {{.*#+}} xmm3 = [65535,65535,65535,0,0,0,65535,65535]1417; SSE-NEXT: movaps %xmm3, %xmm11418; SSE-NEXT: andnps %xmm0, %xmm11419; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm11[0,1,1,3]1420; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm2[0,1,2,3,4,7,6,7]1421; SSE-NEXT: punpckhdq {{.*#+}} xmm15 = xmm15[2],xmm9[2],xmm15[3],xmm9[3]1422; SSE-NEXT: pand %xmm3, %xmm151423; SSE-NEXT: por %xmm1, %xmm151424; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]1425; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[0,1,2,0]1426; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,5]1427; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,1],xmm0[2,3]1428; SSE-NEXT: shufps {{.*#+}} xmm15 = xmm15[0,1],xmm1[2,0]1429; SSE-NEXT: movdqa %xmm10, %xmm51430; SSE-NEXT: movdqa %xmm10, %xmm11431; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,0],xmm12[0,0]1432; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm12[2,3]1433; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,1,3]1434; SSE-NEXT: movaps %xmm3, %xmm21435; SSE-NEXT: andnps %xmm1, %xmm21436; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm8[0,1,1,3]1437; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]1438; SSE-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm7[2],xmm0[3],xmm7[3]1439; SSE-NEXT: pand %xmm3, %xmm01440; SSE-NEXT: por %xmm2, %xmm01441; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]1442; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[0,1,2,0]1443; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6,5]1444; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[3,1],xmm1[2,3]1445; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm2[2,0]1446; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm13[2,2,2,2,4,5,6,7]1447; SSE-NEXT: movdqa %xmm3, %xmm21448; SSE-NEXT: pandn %xmm1, %xmm21449; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm11[1,1,1,1]1450; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm9[0,2,2,3]1451; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]1452; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm4[0,3,2,3,4,5,6,7]1453; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]1454; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,3,4,5,6,7]1455; SSE-NEXT: pand %xmm3, %xmm11456; SSE-NEXT: por %xmm2, %xmm11457; SSE-NEXT: movdqa %xmm14, %xmm41458; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[2,0],xmm13[3,0]1459; SSE-NEXT: movdqa %xmm3, %xmm21460; SSE-NEXT: pandn %xmm13, %xmm21461; SSE-NEXT: shufps {{.*#+}} xmm13 = xmm13[0,1],xmm4[0,2]1462; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm13[0,1,2,3,7,4,6,7]1463; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload1464; SSE-NEXT: pshufd {{.*#+}} xmm13 = xmm10[0,1,0,3]1465; SSE-NEXT: pshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,5,5,6]1466; SSE-NEXT: shufps {{.*#+}} xmm13 = xmm13[3,1],xmm4[2,3]1467; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm13[2,0]1468; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm12[2,2,2,2,4,5,6,7]1469; SSE-NEXT: movdqa %xmm3, %xmm141470; SSE-NEXT: pandn %xmm4, %xmm141471; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm8[1,1,1,1]1472; SSE-NEXT: pshufd {{.*#+}} xmm13 = xmm7[0,2,2,3]1473; SSE-NEXT: punpckldq {{.*#+}} xmm13 = xmm13[0],xmm4[0],xmm13[1],xmm4[1]1474; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm13[0,3,2,3,4,5,6,7]1475; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]1476; SSE-NEXT: pshuflw {{.*#+}} xmm13 = xmm4[1,0,3,3,4,5,6,7]1477; SSE-NEXT: pand %xmm3, %xmm131478; SSE-NEXT: por %xmm14, %xmm131479; SSE-NEXT: shufps {{.*#+}} xmm11 = xmm11[2,0],xmm9[3,0]1480; SSE-NEXT: shufps {{.*#+}} xmm9 = xmm9[0,1],xmm11[0,2]1481; SSE-NEXT: shufps {{.*#+}} xmm8 = xmm8[2,0],xmm7[3,0]1482; SSE-NEXT: shufps {{.*#+}} xmm7 = xmm7[0,1],xmm8[0,2]1483; SSE-NEXT: movdqa %xmm5, %xmm111484; SSE-NEXT: movdqa %xmm5, %xmm41485; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[2,0],xmm12[3,0]1486; SSE-NEXT: pshufhw {{.*#+}} xmm8 = xmm9[0,1,2,3,4,6,6,7]1487; SSE-NEXT: pshufd {{.*#+}} xmm8 = xmm8[0,2,2,3]1488; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm8[2,1,3,3,4,5,6,7]1489; SSE-NEXT: pand %xmm3, %xmm81490; SSE-NEXT: pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,6,6,7]1491; SSE-NEXT: pshufd {{.*#+}} xmm7 = xmm7[0,2,2,3]1492; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm7[2,1,3,3,4,5,6,7]1493; SSE-NEXT: pand %xmm3, %xmm71494; SSE-NEXT: pandn %xmm12, %xmm31495; SSE-NEXT: shufps {{.*#+}} xmm12 = xmm12[0,1],xmm4[0,2]1496; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm12[0,1,2,3,7,4,6,7]1497; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload1498; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm9[0,1,0,3]1499; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,5,6]1500; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,1],xmm4[2,3]1501; SSE-NEXT: shufps {{.*#+}} xmm13 = xmm13[0,1],xmm5[2,0]1502; SSE-NEXT: por %xmm2, %xmm81503; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload1504; SSE-NEXT: # xmm2 = mem[0,2,2,3]1505; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm10[0,1,1,3]1506; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,1,0,3,4,5,6,7]1507; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,4,7]1508; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,1],xmm2[1,3]1509; SSE-NEXT: shufps {{.*#+}} xmm8 = xmm8[0,1],xmm4[2,0]1510; SSE-NEXT: por %xmm7, %xmm31511; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm11[0,2,2,3]1512; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm9[0,1,1,3]1513; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,1,0,3,4,5,6,7]1514; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,4,7]1515; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,1],xmm2[1,3]1516; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,0]1517; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload1518; SSE-NEXT: movaps %xmm2, 16(%rsi)1519; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload1520; SSE-NEXT: movaps %xmm2, (%rsi)1521; SSE-NEXT: movdqa %xmm6, 16(%rdx)1522; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload1523; SSE-NEXT: movaps %xmm2, (%rdx)1524; SSE-NEXT: movaps %xmm0, 16(%rcx)1525; SSE-NEXT: movaps %xmm15, (%rcx)1526; SSE-NEXT: movaps %xmm13, 16(%r8)1527; SSE-NEXT: movaps %xmm1, (%r8)1528; SSE-NEXT: movaps %xmm3, 16(%r9)1529; SSE-NEXT: movaps %xmm8, (%r9)1530; SSE-NEXT: retq1531;1532; AVX-LABEL: load_i16_stride5_vf16:1533; AVX: # %bb.0:1534; AVX-NEXT: vmovdqa 96(%rdi), %xmm01535; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[0,1,1,3]1536; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm1[0,1,2,3,4,5,4,7]1537; AVX-NEXT: vmovdqa 112(%rdi), %xmm11538; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm3 = xmm2[1],xmm1[1]1539; AVX-NEXT: vmovdqa 80(%rdi), %xmm21540; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm2[0,2,2,3]1541; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]1542; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm4[0,1],xmm3[2,3,4,5,6,7]1543; AVX-NEXT: vmovdqa 144(%rdi), %xmm81544; AVX-NEXT: vmovdqa 128(%rdi), %xmm71545; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm7[0,1],xmm8[2,3],xmm7[4,5,6,7]1546; AVX-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u,u,u,u,u,u,2,3,12,13,6,7]1547; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm3[0,1,2,3,4],xmm4[5,6,7]1548; AVX-NEXT: vmovdqa (%rdi), %xmm31549; AVX-NEXT: vmovdqa 16(%rdi), %xmm41550; AVX-NEXT: vmovdqa 32(%rdi), %xmm51551; AVX-NEXT: vmovdqa 48(%rdi), %xmm61552; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm6[0,1,0,3]1553; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0,1,2,3],xmm5[4],xmm9[5,6,7]1554; AVX-NEXT: vpshufd {{.*#+}} xmm11 = xmm4[3,1,2,3]1555; AVX-NEXT: vpshuflw {{.*#+}} xmm11 = xmm11[2,1,2,3,4,5,6,7]1556; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm3[0,2,2,3]1557; AVX-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[0,3,2,3,4,5,6,7]1558; AVX-NEXT: vpunpckldq {{.*#+}} xmm11 = xmm12[0],xmm11[0],xmm12[1],xmm11[1]1559; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm11[0,1,2,3],xmm9[4,5,6,7]1560; AVX-NEXT: vmovaps {{.*#+}} ymm11 = [65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,65535,65535,65535]1561; AVX-NEXT: vandps %ymm11, %ymm9, %ymm121562; AVX-NEXT: vmovaps 64(%rdi), %xmm91563; AVX-NEXT: vshufps {{.*#+}} xmm13 = xmm9[0,1,0,1]1564; AVX-NEXT: vandnps %ymm13, %ymm11, %ymm131565; AVX-NEXT: vorps %ymm13, %ymm12, %ymm121566; AVX-NEXT: vinsertf128 $1, %xmm10, %ymm12, %ymm101567; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm1[0,1],xmm0[2,3],xmm1[4,5,6,7]1568; AVX-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[0,1,3,0,4,5,6,7]1569; AVX-NEXT: vpshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,5,5,5,5]1570; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm2[0,3,2,3]1571; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[1,2,2,3,4,5,6,7]1572; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm13[0,1],xmm12[2,3,4,5,6,7]1573; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm7[0,1,2,3],xmm8[4,5],xmm7[6,7]1574; AVX-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[u,u,u,u,u,u,u,u,u,u,4,5,14,15,8,9]1575; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2,3,4],xmm13[5,6,7]1576; AVX-NEXT: vpsllq $48, %xmm9, %xmm131577; AVX-NEXT: vandnps %ymm13, %ymm11, %ymm131578; AVX-NEXT: vpsrlq $48, %xmm4, %xmm141579; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm3[0,3,2,3]1580; AVX-NEXT: vpshuflw {{.*#+}} xmm15 = xmm15[1,2,2,3,4,5,6,7]1581; AVX-NEXT: vpunpckldq {{.*#+}} xmm14 = xmm15[0],xmm14[0],xmm15[1],xmm14[1]1582; AVX-NEXT: vpblendw {{.*#+}} xmm15 = xmm5[0,1],xmm6[2,3],xmm5[4,5],xmm6[6,7]1583; AVX-NEXT: vpshufb {{.*#+}} xmm15 = xmm15[u,u,u,u,u,u,0,1,10,11,4,5,14,15,6,7]1584; AVX-NEXT: vpblendw {{.*#+}} xmm14 = xmm14[0,1,2],xmm15[3,4,5,6,7]1585; AVX-NEXT: vandps %ymm11, %ymm14, %ymm111586; AVX-NEXT: vorps %ymm13, %ymm11, %ymm111587; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm11, %ymm111588; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm1[0,1,2,3],xmm0[4,5],xmm1[6,7]1589; AVX-NEXT: vpshufb {{.*#+}} xmm12 = xmm12[u,u,u,u,8,9,2,3,12,13,12,13,u,u,u,u]1590; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm2[3,1,2,3]1591; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[2,1,2,3,4,5,6,7]1592; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm13[0,1],xmm12[2,3,4,5,6,7]1593; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm8[0,1],xmm7[2,3],xmm8[4,5,6,7]1594; AVX-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[u,u,u,u,u,u,u,u,u,u,6,7,0,1,10,11]1595; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2,3,4],xmm13[5,6,7]1596; AVX-NEXT: vpshufd {{.*#+}} xmm13 = xmm3[0,1,1,3]1597; AVX-NEXT: vpshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,7,6,7]1598; AVX-NEXT: vpunpckhdq {{.*#+}} xmm13 = xmm13[2],xmm4[2],xmm13[3],xmm4[3]1599; AVX-NEXT: vpblendw {{.*#+}} xmm14 = xmm5[0,1],xmm6[2,3],xmm5[4,5,6,7]1600; AVX-NEXT: vpshufb {{.*#+}} xmm14 = xmm14[u,u,u,u,u,u,2,3,12,13,6,7,u,u,u,u]1601; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1,2],xmm14[3,4,5],xmm13[6,7]1602; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm9[0,1,2,0]1603; AVX-NEXT: vpshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,5,6,5]1604; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,5],xmm14[6,7]1605; AVX-NEXT: vinsertf128 $1, %xmm12, %ymm13, %ymm121606; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm0[0,1],xmm1[2,3],xmm0[4,5],xmm1[6,7]1607; AVX-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[u,u,0,1,10,11,4,5,14,15,u,u,u,u,u,u]1608; AVX-NEXT: vpsrlq $48, %xmm2, %xmm141609; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm14[0],xmm13[1,2,3,4,5,6,7]1610; AVX-NEXT: vpblendw {{.*#+}} xmm14 = xmm8[0,1,2,3],xmm7[4,5],xmm8[6,7]1611; AVX-NEXT: vpshufb {{.*#+}} xmm14 = xmm14[u,u,u,u,u,u,u,u,u,u,8,9,2,3,12,13]1612; AVX-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1,2,3,4],xmm14[5,6,7]1613; AVX-NEXT: vpblendw {{.*#+}} xmm14 = xmm4[0,1],xmm3[2,3],xmm4[4,5,6,7]1614; AVX-NEXT: vpshufb {{.*#+}} xmm14 = xmm14[6,7,0,1,10,11,u,u,u,u,u,u,u,u,u,u]1615; AVX-NEXT: vpblendw {{.*#+}} xmm15 = xmm5[0,1,2,3],xmm6[4,5],xmm5[6,7]1616; AVX-NEXT: vpshuflw {{.*#+}} xmm15 = xmm15[2,2,2,2,4,5,6,7]1617; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,7,4,6,7]1618; AVX-NEXT: vpblendw {{.*#+}} xmm14 = xmm14[0,1,2],xmm15[3,4,5],xmm14[6,7]1619; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm9[0,1,0,3]1620; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,5,6]1621; AVX-NEXT: vpblendw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,5],xmm15[6,7]1622; AVX-NEXT: vinsertf128 $1, %xmm13, %ymm14, %ymm131623; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm8[3,1,2,3]1624; AVX-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[0,1,2,1,4,5,6,7]1625; AVX-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[0,2,2,3]1626; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[0,1,0,3,4,5,6,7]1627; AVX-NEXT: vpunpckldq {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1]1628; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]1629; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]1630; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm2[2,3,2,3]1631; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4,5,6,7]1632; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm7[4,5,6,7]1633; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm5[1,1,1,1]1634; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm6[0,2,2,3]1635; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,0,3,4,5,6,7]1636; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1637; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0,1,2,3],xmm3[4,5],xmm4[6,7]1638; AVX-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]1639; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2],xmm1[3,4,5],xmm2[6,7]1640; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm9[0,1,1,3]1641; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]1642; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm2[6,7]1643; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm01644; AVX-NEXT: vmovaps %ymm10, (%rsi)1645; AVX-NEXT: vmovaps %ymm11, (%rdx)1646; AVX-NEXT: vmovaps %ymm12, (%rcx)1647; AVX-NEXT: vmovaps %ymm13, (%r8)1648; AVX-NEXT: vmovaps %ymm0, (%r9)1649; AVX-NEXT: vzeroupper1650; AVX-NEXT: retq1651;1652; AVX2-LABEL: load_i16_stride5_vf16:1653; AVX2: # %bb.0:1654; AVX2-NEXT: vmovdqa (%rdi), %ymm21655; AVX2-NEXT: vmovdqa 32(%rdi), %ymm31656; AVX2-NEXT: vmovdqa 64(%rdi), %ymm01657; AVX2-NEXT: vmovdqa 96(%rdi), %ymm11658; AVX2-NEXT: vpblendw {{.*#+}} ymm4 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]1659; AVX2-NEXT: vextracti128 $1, %ymm4, %xmm51660; AVX2-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1,2,3],xmm4[4,5],xmm5[6,7]1661; AVX2-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[0,1,10,11,4,5,14,15,8,9,2,3,12,13,6,7]1662; AVX2-NEXT: vpblendw {{.*#+}} ymm5 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]1663; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm5[2,3,0,1]1664; AVX2-NEXT: vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3,4],ymm6[5],ymm5[6],ymm6[7]1665; AVX2-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[0,1,10,11,4,5,14,15,8,9,10,11,4,5,6,7,16,17,26,27,20,21,30,31,24,25,26,27,20,21,22,23]1666; AVX2-NEXT: vpmovsxbw {{.*#+}} xmm7 = [65535,65535,65535,65535,65535,65535,65535,0]1667; AVX2-NEXT: vpblendvb %ymm7, %ymm4, %ymm5, %ymm51668; AVX2-NEXT: vmovdqa 144(%rdi), %xmm61669; AVX2-NEXT: vmovdqa 128(%rdi), %xmm41670; AVX2-NEXT: vpblendd {{.*#+}} xmm8 = xmm4[0],xmm6[1],xmm4[2,3]1671; AVX2-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u,u,u,u,2,3,12,13,6,7]1672; AVX2-NEXT: vinserti128 $1, %xmm8, %ymm0, %ymm81673; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm5[0,1,2,3,4],ymm8[5,6,7],ymm5[8,9,10,11,12],ymm8[13,14,15]1674; AVX2-NEXT: vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm8[4,5,6,7]1675; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm3[0],ymm2[1],ymm3[2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]1676; AVX2-NEXT: vextracti128 $1, %ymm8, %xmm91677; AVX2-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1],xmm9[2,3],xmm8[4,5,6],xmm9[7]1678; AVX2-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[2,3,12,13,6,7,0,1,10,11,4,5,14,15,10,11]1679; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]1680; AVX2-NEXT: vpermq {{.*#+}} ymm10 = ymm9[2,3,0,1]1681; AVX2-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3,4],ymm10[5],ymm9[6,7]1682; AVX2-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[2,3,12,13,6,7,0,1,10,11,6,7,8,9,8,9,18,19,28,29,22,23,16,17,26,27,22,23,24,25,24,25]1683; AVX2-NEXT: vpblendvb %ymm7, %ymm8, %ymm9, %ymm71684; AVX2-NEXT: vpblendd {{.*#+}} xmm8 = xmm4[0,1],xmm6[2],xmm4[3]1685; AVX2-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u,u,u,u,4,5,14,15,8,9]1686; AVX2-NEXT: vinserti128 $1, %xmm8, %ymm0, %ymm81687; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm7[0,1,2,3,4],ymm8[5,6,7],ymm7[8,9,10,11,12],ymm8[13,14,15]1688; AVX2-NEXT: vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm8[4,5,6,7]1689; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm3[0,1],ymm2[2],ymm3[3],ymm2[4],ymm3[5,6],ymm2[7],ymm3[8,9],ymm2[10],ymm3[11],ymm2[12],ymm3[13,14],ymm2[15]1690; AVX2-NEXT: vextracti128 $1, %ymm8, %xmm91691; AVX2-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1,2],xmm9[3,4],xmm8[5,6,7]1692; AVX2-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]1693; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]1694; AVX2-NEXT: vpermq {{.*#+}} ymm10 = ymm9[2,3,0,1]1695; AVX2-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3,4,5],ymm10[6],ymm9[7]1696; AVX2-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]1697; AVX2-NEXT: vpblendd {{.*#+}} ymm8 = ymm8[0,1,2],ymm9[3,4,5,6,7]1698; AVX2-NEXT: vpblendd {{.*#+}} xmm9 = xmm6[0],xmm4[1],xmm6[2,3]1699; AVX2-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[u,u,u,u,u,u,u,u,u,u,6,7,0,1,10,11]1700; AVX2-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm91701; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm8[0,1,2,3,4],ymm9[5,6,7],ymm8[8,9,10,11,12],ymm9[13,14,15]1702; AVX2-NEXT: vpblendd {{.*#+}} ymm8 = ymm8[0,1,2,3],ymm9[4,5,6,7]1703; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0],ymm3[1,2],ymm2[3],ymm3[4],ymm2[5],ymm3[6,7],ymm2[8],ymm3[9,10],ymm2[11],ymm3[12],ymm2[13],ymm3[14,15]1704; AVX2-NEXT: vextracti128 $1, %ymm9, %xmm101705; AVX2-NEXT: vpblendd {{.*#+}} xmm9 = xmm10[0],xmm9[1],xmm10[2],xmm9[3]1706; AVX2-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]1707; AVX2-NEXT: vpblendw {{.*#+}} ymm10 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]1708; AVX2-NEXT: vpermq {{.*#+}} ymm11 = ymm10[2,3,0,1]1709; AVX2-NEXT: vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3],ymm11[4],ymm10[5],ymm11[6],ymm10[7]1710; AVX2-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]1711; AVX2-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2],ymm10[3,4,5,6,7]1712; AVX2-NEXT: vpblendd {{.*#+}} xmm10 = xmm6[0,1],xmm4[2],xmm6[3]1713; AVX2-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[u,u,u,u,u,u,u,u,u,u,8,9,2,3,12,13]1714; AVX2-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm101715; AVX2-NEXT: vpblendw {{.*#+}} ymm10 = ymm9[0,1,2,3,4],ymm10[5,6,7],ymm9[8,9,10,11,12],ymm10[13,14,15]1716; AVX2-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3],ymm10[4,5,6,7]1717; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13],ymm2[14],ymm3[15]1718; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm31719; AVX2-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2],xmm2[3,4],xmm3[5,6,7]1720; AVX2-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]1721; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]1722; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]1723; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4],ymm0[5,6],ymm1[7]1724; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,4,5,14,15,24,25,18,19,28,29,22,23,u,u,u,u,u,u,u,u]1725; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2],ymm0[3,4,5,6,7]1726; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm6[3,1,2,3]1727; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,1,4,5,6,7]1728; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm4[0,2,2,3]1729; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,0,3,4,5,6,7]1730; AVX2-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1731; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm11732; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6,7]1733; AVX2-NEXT: vmovdqa %ymm5, (%rsi)1734; AVX2-NEXT: vmovdqa %ymm7, (%rdx)1735; AVX2-NEXT: vmovdqa %ymm8, (%rcx)1736; AVX2-NEXT: vmovdqa %ymm9, (%r8)1737; AVX2-NEXT: vmovdqa %ymm0, (%r9)1738; AVX2-NEXT: vzeroupper1739; AVX2-NEXT: retq1740;1741; AVX2-FP-LABEL: load_i16_stride5_vf16:1742; AVX2-FP: # %bb.0:1743; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm21744; AVX2-FP-NEXT: vmovdqa 32(%rdi), %ymm31745; AVX2-FP-NEXT: vmovdqa 64(%rdi), %ymm01746; AVX2-FP-NEXT: vmovdqa 96(%rdi), %ymm11747; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm4 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]1748; AVX2-FP-NEXT: vextracti128 $1, %ymm4, %xmm51749; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1,2,3],xmm4[4,5],xmm5[6,7]1750; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm4 = xmm4[0,1,10,11,4,5,14,15,8,9,2,3,12,13,6,7]1751; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm5 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]1752; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm5[2,3,0,1]1753; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3,4],ymm6[5],ymm5[6],ymm6[7]1754; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[0,1,10,11,4,5,14,15,8,9,10,11,4,5,6,7,16,17,26,27,20,21,30,31,24,25,26,27,20,21,22,23]1755; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} xmm7 = [65535,65535,65535,65535,65535,65535,65535,0]1756; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm4, %ymm5, %ymm61757; AVX2-FP-NEXT: vmovdqa 144(%rdi), %xmm41758; AVX2-FP-NEXT: vmovdqa 128(%rdi), %xmm51759; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm8 = xmm5[0],xmm4[1],xmm5[2,3]1760; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u,u,u,u,2,3,12,13,6,7]1761; AVX2-FP-NEXT: vinserti128 $1, %xmm8, %ymm0, %ymm81762; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm6[0,1,2,3,4],ymm8[5,6,7],ymm6[8,9,10,11,12],ymm8[13,14,15]1763; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm8[4,5,6,7]1764; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm3[0],ymm2[1],ymm3[2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]1765; AVX2-FP-NEXT: vextracti128 $1, %ymm8, %xmm91766; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1],xmm9[2,3],xmm8[4,5,6],xmm9[7]1767; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[2,3,12,13,6,7,0,1,10,11,4,5,14,15,10,11]1768; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]1769; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm9[2,3,0,1]1770; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3,4],ymm10[5],ymm9[6,7]1771; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[2,3,12,13,6,7,0,1,10,11,6,7,8,9,8,9,18,19,28,29,22,23,16,17,26,27,22,23,24,25,24,25]1772; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm8, %ymm9, %ymm71773; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm8 = xmm5[0,1],xmm4[2],xmm5[3]1774; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u,u,u,u,4,5,14,15,8,9]1775; AVX2-FP-NEXT: vinserti128 $1, %xmm8, %ymm0, %ymm81776; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm7[0,1,2,3,4],ymm8[5,6,7],ymm7[8,9,10,11,12],ymm8[13,14,15]1777; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm8[4,5,6,7]1778; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm3[0,1],ymm2[2],ymm3[3],ymm2[4],ymm3[5,6],ymm2[7],ymm3[8,9],ymm2[10],ymm3[11],ymm2[12],ymm3[13,14],ymm2[15]1779; AVX2-FP-NEXT: vextracti128 $1, %ymm8, %xmm91780; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1,2],xmm9[3,4],xmm8[5,6,7]1781; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]1782; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]1783; AVX2-FP-NEXT: vpermq {{.*#+}} ymm10 = ymm9[2,3,0,1]1784; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3,4,5],ymm10[6],ymm9[7]1785; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]1786; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm8 = ymm8[0,1,2],ymm9[3,4,5,6,7]1787; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm9 = xmm4[0],xmm5[1],xmm4[2,3]1788; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[u,u,u,u,u,u,u,u,u,u,6,7,0,1,10,11]1789; AVX2-FP-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm91790; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm8[0,1,2,3,4],ymm9[5,6,7],ymm8[8,9,10,11,12],ymm9[13,14,15]1791; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm8 = ymm8[0,1,2,3],ymm9[4,5,6,7]1792; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0],ymm3[1,2],ymm2[3],ymm3[4],ymm2[5],ymm3[6,7],ymm2[8],ymm3[9,10],ymm2[11],ymm3[12],ymm2[13],ymm3[14,15]1793; AVX2-FP-NEXT: vextracti128 $1, %ymm9, %xmm101794; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm9 = xmm10[0],xmm9[1],xmm10[2],xmm9[3]1795; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]1796; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm10 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]1797; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm10[2,3,0,1]1798; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3],ymm11[4],ymm10[5],ymm11[6],ymm10[7]1799; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]1800; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2],ymm10[3,4,5,6,7]1801; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm10 = xmm4[0,1],xmm5[2],xmm4[3]1802; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[u,u,u,u,u,u,u,u,u,u,8,9,2,3,12,13]1803; AVX2-FP-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm101804; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm10 = ymm9[0,1,2,3,4],ymm10[5,6,7],ymm9[8,9,10,11,12],ymm10[13,14,15]1805; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3],ymm10[4,5,6,7]1806; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13],ymm2[14],ymm3[15]1807; AVX2-FP-NEXT: vextracti128 $1, %ymm2, %xmm31808; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2],xmm2[3,4],xmm3[5,6,7]1809; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]1810; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]1811; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]1812; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4],ymm0[5,6],ymm1[7]1813; AVX2-FP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,4,5,14,15,24,25,18,19,28,29,22,23,u,u,u,u,u,u,u,u]1814; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2],ymm0[3,4,5,6,7]1815; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm1 = xmm4[12,13,14,15,4,5,14,15,u,u,u,u,u,u,u,u]1816; AVX2-FP-NEXT: vpshufb {{.*#+}} xmm2 = xmm5[0,1,2,3,0,1,10,11,u,u,u,u,u,u,u,u]1817; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1818; AVX2-FP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm11819; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6,7]1820; AVX2-FP-NEXT: vmovdqa %ymm6, (%rsi)1821; AVX2-FP-NEXT: vmovdqa %ymm7, (%rdx)1822; AVX2-FP-NEXT: vmovdqa %ymm8, (%rcx)1823; AVX2-FP-NEXT: vmovdqa %ymm9, (%r8)1824; AVX2-FP-NEXT: vmovdqa %ymm0, (%r9)1825; AVX2-FP-NEXT: vzeroupper1826; AVX2-FP-NEXT: retq1827;1828; AVX2-FCP-LABEL: load_i16_stride5_vf16:1829; AVX2-FCP: # %bb.0:1830; AVX2-FCP-NEXT: vmovdqa 128(%rdi), %ymm01831; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm31832; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %ymm41833; AVX2-FCP-NEXT: vmovdqa 64(%rdi), %ymm11834; AVX2-FCP-NEXT: vmovdqa 96(%rdi), %ymm21835; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm3[0],ymm4[1],ymm3[2,3],ymm4[4],ymm3[5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10,11],ymm4[12],ymm3[13],ymm4[14],ymm3[15]1836; AVX2-FCP-NEXT: vextracti128 $1, %ymm5, %xmm61837; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm6[1,2,3],xmm5[4,5],xmm6[6,7]1838; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[0,1,10,11,4,5,14,15,8,9,2,3,12,13,6,7]1839; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm1[0],ymm2[1,2],ymm1[3],ymm2[4],ymm1[5],ymm2[6,7],ymm1[8],ymm2[9,10],ymm1[11],ymm2[12],ymm1[13],ymm2[14,15]1840; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm7 = [1,3,0,2,4,6,1,3]1841; AVX2-FCP-NEXT: vpermd %ymm6, %ymm7, %ymm61842; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm6 = ymm6[0,1,6,7,8,9,14,15,4,5,14,15,4,5,2,3,16,17,22,23,24,25,30,31,20,21,30,31,20,21,18,19]1843; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} xmm8 = [65535,65535,65535,65535,65535,65535,65535,0]1844; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm5, %ymm6, %ymm51845; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm6 = [0,0,0,0,0,3,5,0]1846; AVX2-FCP-NEXT: vpermd %ymm0, %ymm6, %ymm61847; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm7 = [0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27]1848; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm6, %ymm61849; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm5[0,1,2,3,4],ymm6[5,6,7],ymm5[8,9,10,11,12],ymm6[13,14,15]1850; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm6[4,5,6,7]1851; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm4[0],ymm3[1],ymm4[2],ymm3[3],ymm4[4,5],ymm3[6],ymm4[7,8],ymm3[9],ymm4[10],ymm3[11],ymm4[12,13],ymm3[14],ymm4[15]1852; AVX2-FCP-NEXT: vextracti128 $1, %ymm6, %xmm91853; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1],xmm9[2,3],xmm6[4,5,6],xmm9[7]1854; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[2,3,12,13,6,7,0,1,10,11,4,5,14,15,10,11]1855; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13],ymm1[14],ymm2[15]1856; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm10 = [2,0,0,0,4,7,1,6]1857; AVX2-FCP-NEXT: vpermd %ymm9, %ymm10, %ymm91858; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[2,3,4,5,10,11,0,1,14,15,2,3,12,13,0,1,18,19,20,21,26,27,16,17,30,31,18,19,28,29,16,17]1859; AVX2-FCP-NEXT: vpblendvb %ymm8, %ymm6, %ymm9, %ymm61860; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [0,0,0,0,1,3,6,0]1861; AVX2-FCP-NEXT: vpermd %ymm0, %ymm8, %ymm91862; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm8 = [0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25]1863; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm9, %ymm91864; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm6[0,1,2,3,4],ymm9[5,6,7],ymm6[8,9,10,11,12],ymm9[13,14,15]1865; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm9[4,5,6,7]1866; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm4[0,1],ymm3[2],ymm4[3],ymm3[4],ymm4[5,6],ymm3[7],ymm4[8,9],ymm3[10],ymm4[11],ymm3[12],ymm4[13,14],ymm3[15]1867; AVX2-FCP-NEXT: vextracti128 $1, %ymm9, %xmm101868; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0,1,2],xmm10[3,4],xmm9[5,6,7]1869; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]1870; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]1871; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm11 = [0,2,0,0,5,7,2,4]1872; AVX2-FCP-NEXT: vpermd %ymm10, %ymm11, %ymm101873; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,0,1,6,7,16,17,22,23,24,25,30,31,20,21,22,23,16,17,22,23]1874; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2],ymm10[3,4,5,6,7]1875; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [1,4,6,0,1,4,6,0]1876; AVX2-FCP-NEXT: # ymm10 = mem[0,1,0,1]1877; AVX2-FCP-NEXT: vpermd %ymm0, %ymm10, %ymm101878; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm10, %ymm71879; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm9[0,1,2,3,4],ymm7[5,6,7],ymm9[8,9,10,11,12],ymm7[13,14,15]1880; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm7 = ymm9[0,1,2,3],ymm7[4,5,6,7]1881; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm3[0],ymm4[1,2],ymm3[3],ymm4[4],ymm3[5],ymm4[6,7],ymm3[8],ymm4[9,10],ymm3[11],ymm4[12],ymm3[13],ymm4[14,15]1882; AVX2-FCP-NEXT: vextracti128 $1, %ymm9, %xmm101883; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm9 = xmm10[0],xmm9[1],xmm10[2],xmm9[3]1884; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]1885; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm2[0],ymm1[1],ymm2[2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]1886; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm11 = [0,3,0,0,5,0,2,7]1887; AVX2-FCP-NEXT: vpermd %ymm10, %ymm11, %ymm101888; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,2,3,4,5,18,19,20,21,26,27,16,17,30,31,30,31,18,19,20,21]1889; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2],ymm10[3,4,5,6,7]1890; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [2,4,7,0,2,4,7,0]1891; AVX2-FCP-NEXT: # ymm10 = mem[0,1,0,1]1892; AVX2-FCP-NEXT: vpermd %ymm0, %ymm10, %ymm101893; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm10, %ymm81894; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1,2,3,4],ymm8[5,6,7],ymm9[8,9,10,11,12],ymm8[13,14,15]1895; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm8 = ymm9[0,1,2,3],ymm8[4,5,6,7]1896; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm3[1],ymm4[2,3],ymm3[4],ymm4[5],ymm3[6],ymm4[7,8],ymm3[9],ymm4[10,11],ymm3[12],ymm4[13],ymm3[14],ymm4[15]1897; AVX2-FCP-NEXT: vextracti128 $1, %ymm3, %xmm41898; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm4[0,1,2],xmm3[3,4],xmm4[5,6,7]1899; AVX2-FCP-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]1900; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3],ymm1[4],ymm2[5,6],ymm1[7],ymm2[8,9],ymm1[10],ymm2[11],ymm1[12],ymm2[13,14],ymm1[15]1901; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [1,3,0,0,6,0,3,5]1902; AVX2-FCP-NEXT: vpermd %ymm1, %ymm2, %ymm11903; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,0,1,6,7,16,17,22,23,24,25,30,31,u,u,u,u,u,u,u,u]1904; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm3[0,1,2],ymm1[3,4,5,6,7]1905; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [0,0,0,0,0,2,5,7]1906; AVX2-FCP-NEXT: vpermd %ymm0, %ymm2, %ymm01907; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,17,22,23,24,25,30,31]1908; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]1909; AVX2-FCP-NEXT: vmovdqa %ymm5, (%rsi)1910; AVX2-FCP-NEXT: vmovdqa %ymm6, (%rdx)1911; AVX2-FCP-NEXT: vmovdqa %ymm7, (%rcx)1912; AVX2-FCP-NEXT: vmovdqa %ymm8, (%r8)1913; AVX2-FCP-NEXT: vmovdqa %ymm0, (%r9)1914; AVX2-FCP-NEXT: vzeroupper1915; AVX2-FCP-NEXT: retq1916;1917; AVX512-LABEL: load_i16_stride5_vf16:1918; AVX512: # %bb.0:1919; AVX512-NEXT: vmovdqa (%rdi), %ymm21920; AVX512-NEXT: vmovdqa 32(%rdi), %ymm31921; AVX512-NEXT: vmovdqa 64(%rdi), %ymm01922; AVX512-NEXT: vmovdqa 96(%rdi), %ymm11923; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]1924; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm4[2,3,0,1]1925; AVX512-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3,4],ymm5[5],ymm4[6],ymm5[7]1926; AVX512-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[6,7,16,17,26,27,20,21,30,31,24,25],zero,zero,zero,zero,zero,zero1927; AVX512-NEXT: vpblendw {{.*#+}} ymm5 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]1928; AVX512-NEXT: vextracti128 $1, %ymm5, %xmm61929; AVX512-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm6[1,2,3],xmm5[4,5],xmm6[6,7]1930; AVX512-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[0,1,10,11,4,5,14,15,8,9,2,3,12,13],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[u,u,u,u,u,u]1931; AVX512-NEXT: vpor %ymm4, %ymm5, %ymm51932; AVX512-NEXT: vmovdqa 144(%rdi), %xmm61933; AVX512-NEXT: vmovdqa 128(%rdi), %xmm41934; AVX512-NEXT: vpblendd {{.*#+}} xmm7 = xmm4[0],xmm6[1],xmm4[2,3]1935; AVX512-NEXT: vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,u,u,u,u,2,3,12,13,6,7]1936; AVX512-NEXT: vinserti128 $1, %xmm7, %ymm0, %ymm71937; AVX512-NEXT: vpblendw {{.*#+}} ymm7 = ymm5[0,1,2,3,4],ymm7[5,6,7],ymm5[8,9,10,11,12],ymm7[13,14,15]1938; AVX512-NEXT: vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm7[4,5,6,7]1939; AVX512-NEXT: vpblendw {{.*#+}} ymm7 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]1940; AVX512-NEXT: vpermq {{.*#+}} ymm8 = ymm7[2,3,0,1]1941; AVX512-NEXT: vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3,4],ymm8[5],ymm7[6,7]1942; AVX512-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[8,9,18,19,28,29,22,23,16,17,26,27],zero,zero,zero,zero,zero,zero1943; AVX512-NEXT: vpblendw {{.*#+}} ymm8 = ymm3[0],ymm2[1],ymm3[2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]1944; AVX512-NEXT: vextracti128 $1, %ymm8, %xmm91945; AVX512-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1],xmm9[2,3],xmm8[4,5,6],xmm9[7]1946; AVX512-NEXT: vpshufb {{.*#+}} ymm8 = ymm8[2,3,12,13,6,7,0,1,10,11,4,5,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm8[u,u,u,u,u,u]1947; AVX512-NEXT: vpor %ymm7, %ymm8, %ymm71948; AVX512-NEXT: vpblendd {{.*#+}} xmm8 = xmm4[0,1],xmm6[2],xmm4[3]1949; AVX512-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u,u,u,u,4,5,14,15,8,9]1950; AVX512-NEXT: vinserti128 $1, %xmm8, %ymm0, %ymm81951; AVX512-NEXT: vpblendw {{.*#+}} ymm8 = ymm7[0,1,2,3,4],ymm8[5,6,7],ymm7[8,9,10,11,12],ymm8[13,14,15]1952; AVX512-NEXT: vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm8[4,5,6,7]1953; AVX512-NEXT: vpblendw {{.*#+}} ymm8 = ymm3[0,1],ymm2[2],ymm3[3],ymm2[4],ymm3[5,6],ymm2[7],ymm3[8,9],ymm2[10],ymm3[11],ymm2[12],ymm3[13,14],ymm2[15]1954; AVX512-NEXT: vextracti128 $1, %ymm8, %xmm91955; AVX512-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1,2],xmm9[3,4],xmm8[5,6,7]1956; AVX512-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]1957; AVX512-NEXT: vpblendw {{.*#+}} ymm9 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]1958; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm9[2,3,0,1]1959; AVX512-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3,4,5],ymm10[6],ymm9[7]1960; AVX512-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]1961; AVX512-NEXT: vpblendd {{.*#+}} ymm8 = ymm8[0,1,2],ymm9[3,4,5,6,7]1962; AVX512-NEXT: vpblendd {{.*#+}} xmm9 = xmm6[0],xmm4[1],xmm6[2,3]1963; AVX512-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[u,u,u,u,u,u,u,u,u,u,6,7,0,1,10,11]1964; AVX512-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm91965; AVX512-NEXT: vpblendw {{.*#+}} ymm9 = ymm8[0,1,2,3,4],ymm9[5,6,7],ymm8[8,9,10,11,12],ymm9[13,14,15]1966; AVX512-NEXT: vpblendd {{.*#+}} ymm8 = ymm8[0,1,2,3],ymm9[4,5,6,7]1967; AVX512-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0],ymm3[1,2],ymm2[3],ymm3[4],ymm2[5],ymm3[6,7],ymm2[8],ymm3[9,10],ymm2[11],ymm3[12],ymm2[13],ymm3[14,15]1968; AVX512-NEXT: vextracti128 $1, %ymm9, %xmm101969; AVX512-NEXT: vpblendd {{.*#+}} xmm9 = xmm10[0],xmm9[1],xmm10[2],xmm9[3]1970; AVX512-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]1971; AVX512-NEXT: vpblendw {{.*#+}} ymm10 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]1972; AVX512-NEXT: vpermq {{.*#+}} ymm11 = ymm10[2,3,0,1]1973; AVX512-NEXT: vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3],ymm11[4],ymm10[5],ymm11[6],ymm10[7]1974; AVX512-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]1975; AVX512-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2],ymm10[3,4,5,6,7]1976; AVX512-NEXT: vpblendd {{.*#+}} xmm10 = xmm6[0,1],xmm4[2],xmm6[3]1977; AVX512-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[u,u,u,u,u,u,u,u,u,u,8,9,2,3,12,13]1978; AVX512-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm101979; AVX512-NEXT: vpblendw {{.*#+}} ymm10 = ymm9[0,1,2,3,4],ymm10[5,6,7],ymm9[8,9,10,11,12],ymm10[13,14,15]1980; AVX512-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3],ymm10[4,5,6,7]1981; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13],ymm2[14],ymm3[15]1982; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm31983; AVX512-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2],xmm2[3,4],xmm3[5,6,7]1984; AVX512-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]1985; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]1986; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]1987; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4],ymm0[5,6],ymm1[7]1988; AVX512-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,4,5,14,15,24,25,18,19,28,29,22,23,u,u,u,u,u,u,u,u]1989; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2],ymm0[3,4,5,6,7]1990; AVX512-NEXT: vpshufd {{.*#+}} xmm1 = xmm6[3,1,2,3]1991; AVX512-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,1,4,5,6,7]1992; AVX512-NEXT: vpshufd {{.*#+}} xmm2 = xmm4[0,2,2,3]1993; AVX512-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,0,3,4,5,6,7]1994; AVX512-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]1995; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm11996; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6,7]1997; AVX512-NEXT: vmovdqa %ymm5, (%rsi)1998; AVX512-NEXT: vmovdqa %ymm7, (%rdx)1999; AVX512-NEXT: vmovdqa %ymm8, (%rcx)2000; AVX512-NEXT: vmovdqa %ymm9, (%r8)2001; AVX512-NEXT: vmovdqa %ymm0, (%r9)2002; AVX512-NEXT: vzeroupper2003; AVX512-NEXT: retq2004;2005; AVX512-FCP-LABEL: load_i16_stride5_vf16:2006; AVX512-FCP: # %bb.0:2007; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm22008; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %ymm32009; AVX512-FCP-NEXT: vmovdqa 64(%rdi), %ymm02010; AVX512-FCP-NEXT: vmovdqa 96(%rdi), %ymm12011; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]2012; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [1,0,0,0,4,6,1,3]2013; AVX512-FCP-NEXT: vpermd %ymm4, %ymm5, %ymm42014; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[2,3,16,17,22,23,24,25,30,31,20,21],zero,zero,zero,zero,zero,zero2015; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]2016; AVX512-FCP-NEXT: vextracti128 $1, %ymm5, %xmm62017; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm6[1,2,3],xmm5[4,5],xmm6[6,7]2018; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[0,1,10,11,4,5,14,15,8,9,2,3,12,13],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[u,u,u,u,u,u]2019; AVX512-FCP-NEXT: vpor %ymm4, %ymm5, %ymm52020; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm6 = [0,0,0,0,0,3,5,0]2021; AVX512-FCP-NEXT: vmovdqa 128(%rdi), %ymm42022; AVX512-FCP-NEXT: vpermd %ymm4, %ymm6, %ymm62023; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} ymm7 = [0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27]2024; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm6, %ymm62025; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm5[0,1,2,3,4],ymm6[5,6,7],ymm5[8,9,10,11,12],ymm6[13,14,15]2026; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm6[4,5,6,7]2027; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]2028; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [2,0,0,0,4,7,1,6]2029; AVX512-FCP-NEXT: vpermd %ymm6, %ymm8, %ymm62030; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[0,1,18,19,20,21,26,27,16,17,30,31],zero,zero,zero,zero,zero,zero2031; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm3[0],ymm2[1],ymm3[2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]2032; AVX512-FCP-NEXT: vextracti128 $1, %ymm8, %xmm92033; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1],xmm9[2,3],xmm8[4,5,6],xmm9[7]2034; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm8[2,3,12,13,6,7,0,1,10,11,4,5,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm8[u,u,u,u,u,u]2035; AVX512-FCP-NEXT: vpor %ymm6, %ymm8, %ymm62036; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [0,0,0,0,1,3,6,0]2037; AVX512-FCP-NEXT: vpermd %ymm4, %ymm8, %ymm92038; AVX512-FCP-NEXT: vpbroadcastq {{.*#+}} ymm8 = [0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25]2039; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm9, %ymm92040; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm6[0,1,2,3,4],ymm9[5,6,7],ymm6[8,9,10,11,12],ymm9[13,14,15]2041; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm9[4,5,6,7]2042; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm3[0,1],ymm2[2],ymm3[3],ymm2[4],ymm3[5,6],ymm2[7],ymm3[8,9],ymm2[10],ymm3[11],ymm2[12],ymm3[13,14],ymm2[15]2043; AVX512-FCP-NEXT: vextracti128 $1, %ymm9, %xmm102044; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0,1,2],xmm10[3,4],xmm9[5,6,7]2045; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]2046; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]2047; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm11 = [0,2,0,0,5,7,2,4]2048; AVX512-FCP-NEXT: vpermd %ymm10, %ymm11, %ymm102049; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,0,1,6,7,16,17,22,23,24,25,30,31,20,21,22,23,16,17,22,23]2050; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2],ymm10[3,4,5,6,7]2051; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [1,4,6,0,1,4,6,0]2052; AVX512-FCP-NEXT: # ymm10 = mem[0,1,0,1]2053; AVX512-FCP-NEXT: vpermd %ymm4, %ymm10, %ymm102054; AVX512-FCP-NEXT: vpshufb %ymm7, %ymm10, %ymm72055; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm9[0,1,2,3,4],ymm7[5,6,7],ymm9[8,9,10,11,12],ymm7[13,14,15]2056; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm7 = ymm9[0,1,2,3],ymm7[4,5,6,7]2057; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0],ymm3[1,2],ymm2[3],ymm3[4],ymm2[5],ymm3[6,7],ymm2[8],ymm3[9,10],ymm2[11],ymm3[12],ymm2[13],ymm3[14,15]2058; AVX512-FCP-NEXT: vextracti128 $1, %ymm9, %xmm102059; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm9 = xmm10[0],xmm9[1],xmm10[2],xmm9[3]2060; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]2061; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]2062; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm11 = [0,3,0,0,5,0,2,7]2063; AVX512-FCP-NEXT: vpermd %ymm10, %ymm11, %ymm102064; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,2,3,4,5,18,19,20,21,26,27,16,17,30,31,30,31,18,19,20,21]2065; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2],ymm10[3,4,5,6,7]2066; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [2,4,7,0,2,4,7,0]2067; AVX512-FCP-NEXT: # ymm10 = mem[0,1,0,1]2068; AVX512-FCP-NEXT: vpermd %ymm4, %ymm10, %ymm102069; AVX512-FCP-NEXT: vpshufb %ymm8, %ymm10, %ymm82070; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1,2,3,4],ymm8[5,6,7],ymm9[8,9,10,11,12],ymm8[13,14,15]2071; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm8 = ymm9[0,1,2,3],ymm8[4,5,6,7]2072; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13],ymm2[14],ymm3[15]2073; AVX512-FCP-NEXT: vextracti128 $1, %ymm2, %xmm32074; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2],xmm2[3,4],xmm3[5,6,7]2075; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]2076; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]2077; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [1,3,0,0,6,0,3,5]2078; AVX512-FCP-NEXT: vpermd %ymm0, %ymm1, %ymm02079; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,0,1,6,7,16,17,22,23,24,25,30,31,u,u,u,u,u,u,u,u]2080; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2],ymm0[3,4,5,6,7]2081; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [0,0,0,0,0,2,5,7]2082; AVX512-FCP-NEXT: vpermd %ymm4, %ymm1, %ymm12083; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,17,22,23,u,u,u,u,24,25,30,31,u,u,u,u]2084; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [0,1,2,3,4,5,12,14]2085; AVX512-FCP-NEXT: vpermi2d %ymm1, %ymm0, %ymm22086; AVX512-FCP-NEXT: vmovdqa %ymm5, (%rsi)2087; AVX512-FCP-NEXT: vmovdqa %ymm6, (%rdx)2088; AVX512-FCP-NEXT: vmovdqa %ymm7, (%rcx)2089; AVX512-FCP-NEXT: vmovdqa %ymm8, (%r8)2090; AVX512-FCP-NEXT: vmovdqa %ymm2, (%r9)2091; AVX512-FCP-NEXT: vzeroupper2092; AVX512-FCP-NEXT: retq2093;2094; AVX512DQ-LABEL: load_i16_stride5_vf16:2095; AVX512DQ: # %bb.0:2096; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm22097; AVX512DQ-NEXT: vmovdqa 32(%rdi), %ymm32098; AVX512DQ-NEXT: vmovdqa 64(%rdi), %ymm02099; AVX512DQ-NEXT: vmovdqa 96(%rdi), %ymm12100; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]2101; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm4[2,3,0,1]2102; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3,4],ymm5[5],ymm4[6],ymm5[7]2103; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[6,7,16,17,26,27,20,21,30,31,24,25],zero,zero,zero,zero,zero,zero2104; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm5 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]2105; AVX512DQ-NEXT: vextracti128 $1, %ymm5, %xmm62106; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm6[1,2,3],xmm5[4,5],xmm6[6,7]2107; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[0,1,10,11,4,5,14,15,8,9,2,3,12,13],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[u,u,u,u,u,u]2108; AVX512DQ-NEXT: vpor %ymm4, %ymm5, %ymm52109; AVX512DQ-NEXT: vmovdqa 144(%rdi), %xmm62110; AVX512DQ-NEXT: vmovdqa 128(%rdi), %xmm42111; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm7 = xmm4[0],xmm6[1],xmm4[2,3]2112; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,u,u,u,u,2,3,12,13,6,7]2113; AVX512DQ-NEXT: vinserti128 $1, %xmm7, %ymm0, %ymm72114; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm7 = ymm5[0,1,2,3,4],ymm7[5,6,7],ymm5[8,9,10,11,12],ymm7[13,14,15]2115; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm7[4,5,6,7]2116; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm7 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]2117; AVX512DQ-NEXT: vpermq {{.*#+}} ymm8 = ymm7[2,3,0,1]2118; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3,4],ymm8[5],ymm7[6,7]2119; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[8,9,18,19,28,29,22,23,16,17,26,27],zero,zero,zero,zero,zero,zero2120; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm8 = ymm3[0],ymm2[1],ymm3[2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]2121; AVX512DQ-NEXT: vextracti128 $1, %ymm8, %xmm92122; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1],xmm9[2,3],xmm8[4,5,6],xmm9[7]2123; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm8 = ymm8[2,3,12,13,6,7,0,1,10,11,4,5,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm8[u,u,u,u,u,u]2124; AVX512DQ-NEXT: vpor %ymm7, %ymm8, %ymm72125; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm8 = xmm4[0,1],xmm6[2],xmm4[3]2126; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u,u,u,u,4,5,14,15,8,9]2127; AVX512DQ-NEXT: vinserti128 $1, %xmm8, %ymm0, %ymm82128; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm8 = ymm7[0,1,2,3,4],ymm8[5,6,7],ymm7[8,9,10,11,12],ymm8[13,14,15]2129; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm8[4,5,6,7]2130; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm8 = ymm3[0,1],ymm2[2],ymm3[3],ymm2[4],ymm3[5,6],ymm2[7],ymm3[8,9],ymm2[10],ymm3[11],ymm2[12],ymm3[13,14],ymm2[15]2131; AVX512DQ-NEXT: vextracti128 $1, %ymm8, %xmm92132; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1,2],xmm9[3,4],xmm8[5,6,7]2133; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]2134; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm9 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]2135; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm9[2,3,0,1]2136; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3,4,5],ymm10[6],ymm9[7]2137; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm9 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]2138; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm8 = ymm8[0,1,2],ymm9[3,4,5,6,7]2139; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm9 = xmm6[0],xmm4[1],xmm6[2,3]2140; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[u,u,u,u,u,u,u,u,u,u,6,7,0,1,10,11]2141; AVX512DQ-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm92142; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm9 = ymm8[0,1,2,3,4],ymm9[5,6,7],ymm8[8,9,10,11,12],ymm9[13,14,15]2143; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm8 = ymm8[0,1,2,3],ymm9[4,5,6,7]2144; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0],ymm3[1,2],ymm2[3],ymm3[4],ymm2[5],ymm3[6,7],ymm2[8],ymm3[9,10],ymm2[11],ymm3[12],ymm2[13],ymm3[14,15]2145; AVX512DQ-NEXT: vextracti128 $1, %ymm9, %xmm102146; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm9 = xmm10[0],xmm9[1],xmm10[2],xmm9[3]2147; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]2148; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm10 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]2149; AVX512DQ-NEXT: vpermq {{.*#+}} ymm11 = ymm10[2,3,0,1]2150; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3],ymm11[4],ymm10[5],ymm11[6],ymm10[7]2151; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]2152; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2],ymm10[3,4,5,6,7]2153; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm10 = xmm6[0,1],xmm4[2],xmm6[3]2154; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[u,u,u,u,u,u,u,u,u,u,8,9,2,3,12,13]2155; AVX512DQ-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm102156; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm10 = ymm9[0,1,2,3,4],ymm10[5,6,7],ymm9[8,9,10,11,12],ymm10[13,14,15]2157; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3],ymm10[4,5,6,7]2158; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13],ymm2[14],ymm3[15]2159; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm32160; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2],xmm2[3,4],xmm3[5,6,7]2161; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]2162; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]2163; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]2164; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4],ymm0[5,6],ymm1[7]2165; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,4,5,14,15,24,25,18,19,28,29,22,23,u,u,u,u,u,u,u,u]2166; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2],ymm0[3,4,5,6,7]2167; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm1 = xmm6[3,1,2,3]2168; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,1,4,5,6,7]2169; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm2 = xmm4[0,2,2,3]2170; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,0,3,4,5,6,7]2171; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2172; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm12173; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6,7]2174; AVX512DQ-NEXT: vmovdqa %ymm5, (%rsi)2175; AVX512DQ-NEXT: vmovdqa %ymm7, (%rdx)2176; AVX512DQ-NEXT: vmovdqa %ymm8, (%rcx)2177; AVX512DQ-NEXT: vmovdqa %ymm9, (%r8)2178; AVX512DQ-NEXT: vmovdqa %ymm0, (%r9)2179; AVX512DQ-NEXT: vzeroupper2180; AVX512DQ-NEXT: retq2181;2182; AVX512DQ-FCP-LABEL: load_i16_stride5_vf16:2183; AVX512DQ-FCP: # %bb.0:2184; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm22185; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %ymm32186; AVX512DQ-FCP-NEXT: vmovdqa 64(%rdi), %ymm02187; AVX512DQ-FCP-NEXT: vmovdqa 96(%rdi), %ymm12188; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]2189; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [1,0,0,0,4,6,1,3]2190; AVX512DQ-FCP-NEXT: vpermd %ymm4, %ymm5, %ymm42191; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[2,3,16,17,22,23,24,25,30,31,20,21],zero,zero,zero,zero,zero,zero2192; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]2193; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm5, %xmm62194; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0],xmm6[1,2,3],xmm5[4,5],xmm6[6,7]2195; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm5 = ymm5[0,1,10,11,4,5,14,15,8,9,2,3,12,13],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[u,u,u,u,u,u]2196; AVX512DQ-FCP-NEXT: vpor %ymm4, %ymm5, %ymm52197; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm6 = [0,0,0,0,0,3,5,0]2198; AVX512DQ-FCP-NEXT: vmovdqa 128(%rdi), %ymm42199; AVX512DQ-FCP-NEXT: vpermd %ymm4, %ymm6, %ymm62200; AVX512DQ-FCP-NEXT: vpbroadcastq {{.*#+}} ymm7 = [0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27]2201; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm6, %ymm62202; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm5[0,1,2,3,4],ymm6[5,6,7],ymm5[8,9,10,11,12],ymm6[13,14,15]2203; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm6[4,5,6,7]2204; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]2205; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [2,0,0,0,4,7,1,6]2206; AVX512DQ-FCP-NEXT: vpermd %ymm6, %ymm8, %ymm62207; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[0,1,18,19,20,21,26,27,16,17,30,31],zero,zero,zero,zero,zero,zero2208; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm3[0],ymm2[1],ymm3[2],ymm2[3],ymm3[4,5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10],ymm2[11],ymm3[12,13],ymm2[14],ymm3[15]2209; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm8, %xmm92210; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1],xmm9[2,3],xmm8[4,5,6],xmm9[7]2211; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm8[2,3,12,13,6,7,0,1,10,11,4,5,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm8[u,u,u,u,u,u]2212; AVX512DQ-FCP-NEXT: vpor %ymm6, %ymm8, %ymm62213; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [0,0,0,0,1,3,6,0]2214; AVX512DQ-FCP-NEXT: vpermd %ymm4, %ymm8, %ymm92215; AVX512DQ-FCP-NEXT: vpbroadcastq {{.*#+}} ymm8 = [0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25]2216; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm9, %ymm92217; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm6[0,1,2,3,4],ymm9[5,6,7],ymm6[8,9,10,11,12],ymm9[13,14,15]2218; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm9[4,5,6,7]2219; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm3[0,1],ymm2[2],ymm3[3],ymm2[4],ymm3[5,6],ymm2[7],ymm3[8,9],ymm2[10],ymm3[11],ymm2[12],ymm3[13,14],ymm2[15]2220; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm9, %xmm102221; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0,1,2],xmm10[3,4],xmm9[5,6,7]2222; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]2223; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]2224; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm11 = [0,2,0,0,5,7,2,4]2225; AVX512DQ-FCP-NEXT: vpermd %ymm10, %ymm11, %ymm102226; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,0,1,6,7,16,17,22,23,24,25,30,31,20,21,22,23,16,17,22,23]2227; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2],ymm10[3,4,5,6,7]2228; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [1,4,6,0,1,4,6,0]2229; AVX512DQ-FCP-NEXT: # ymm10 = mem[0,1,0,1]2230; AVX512DQ-FCP-NEXT: vpermd %ymm4, %ymm10, %ymm102231; AVX512DQ-FCP-NEXT: vpshufb %ymm7, %ymm10, %ymm72232; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm9[0,1,2,3,4],ymm7[5,6,7],ymm9[8,9,10,11,12],ymm7[13,14,15]2233; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm7 = ymm9[0,1,2,3],ymm7[4,5,6,7]2234; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0],ymm3[1,2],ymm2[3],ymm3[4],ymm2[5],ymm3[6,7],ymm2[8],ymm3[9,10],ymm2[11],ymm3[12],ymm2[13],ymm3[14,15]2235; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm9, %xmm102236; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm9 = xmm10[0],xmm9[1],xmm10[2],xmm9[3]2237; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm9 = xmm9[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]2238; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]2239; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm11 = [0,3,0,0,5,0,2,7]2240; AVX512DQ-FCP-NEXT: vpermd %ymm10, %ymm11, %ymm102241; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,2,3,4,5,18,19,20,21,26,27,16,17,30,31,30,31,18,19,20,21]2242; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2],ymm10[3,4,5,6,7]2243; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [2,4,7,0,2,4,7,0]2244; AVX512DQ-FCP-NEXT: # ymm10 = mem[0,1,0,1]2245; AVX512DQ-FCP-NEXT: vpermd %ymm4, %ymm10, %ymm102246; AVX512DQ-FCP-NEXT: vpshufb %ymm8, %ymm10, %ymm82247; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1,2,3,4],ymm8[5,6,7],ymm9[8,9,10,11,12],ymm8[13,14,15]2248; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm8 = ymm9[0,1,2,3],ymm8[4,5,6,7]2249; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5],ymm2[6],ymm3[7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13],ymm2[14],ymm3[15]2250; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm2, %xmm32251; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2],xmm2[3,4],xmm3[5,6,7]2252; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]2253; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]2254; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [1,3,0,0,6,0,3,5]2255; AVX512DQ-FCP-NEXT: vpermd %ymm0, %ymm1, %ymm02256; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,0,1,6,7,16,17,22,23,24,25,30,31,u,u,u,u,u,u,u,u]2257; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2],ymm0[3,4,5,6,7]2258; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [0,0,0,0,0,2,5,7]2259; AVX512DQ-FCP-NEXT: vpermd %ymm4, %ymm1, %ymm12260; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,17,22,23,u,u,u,u,24,25,30,31,u,u,u,u]2261; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [0,1,2,3,4,5,12,14]2262; AVX512DQ-FCP-NEXT: vpermi2d %ymm1, %ymm0, %ymm22263; AVX512DQ-FCP-NEXT: vmovdqa %ymm5, (%rsi)2264; AVX512DQ-FCP-NEXT: vmovdqa %ymm6, (%rdx)2265; AVX512DQ-FCP-NEXT: vmovdqa %ymm7, (%rcx)2266; AVX512DQ-FCP-NEXT: vmovdqa %ymm8, (%r8)2267; AVX512DQ-FCP-NEXT: vmovdqa %ymm2, (%r9)2268; AVX512DQ-FCP-NEXT: vzeroupper2269; AVX512DQ-FCP-NEXT: retq2270;2271; AVX512BW-LABEL: load_i16_stride5_vf16:2272; AVX512BW: # %bb.0:2273; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm02274; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm12275; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0]2276; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm22277; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,1,2,3,4,5,6,7,8,9,10,11,12,17,22,27]2278; AVX512BW-NEXT: vmovdqa 128(%rdi), %ymm42279; AVX512BW-NEXT: vpermi2w %ymm4, %ymm2, %ymm32280; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm2 = [1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0]2281; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm22282; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm5 = [0,1,2,3,4,5,6,7,8,9,10,11,12,18,23,28]2283; AVX512BW-NEXT: vpermi2w %ymm4, %ymm2, %ymm52284; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm2 = [34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0]2285; AVX512BW-NEXT: vpermi2w %zmm0, %zmm1, %zmm22286; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,1,2,3,4,5,6,7,8,9,10,11,12,19,24,29]2287; AVX512BW-NEXT: vpermi2w %ymm4, %ymm2, %ymm62288; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm2 = [35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0]2289; AVX512BW-NEXT: vpermi2w %zmm0, %zmm1, %zmm22290; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm7 = [0,1,2,3,4,5,6,7,8,9,10,11,12,20,25,30]2291; AVX512BW-NEXT: vpermi2w %ymm4, %ymm2, %ymm72292; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm2 = [4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0]2293; AVX512BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm22294; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm0 = [0,1,2,3,4,5,6,7,8,9,10,11,16,21,26,31]2295; AVX512BW-NEXT: vpermi2w %ymm4, %ymm2, %ymm02296; AVX512BW-NEXT: vmovdqa %ymm3, (%rsi)2297; AVX512BW-NEXT: vmovdqa %ymm5, (%rdx)2298; AVX512BW-NEXT: vmovdqa %ymm6, (%rcx)2299; AVX512BW-NEXT: vmovdqa %ymm7, (%r8)2300; AVX512BW-NEXT: vmovdqa %ymm0, (%r9)2301; AVX512BW-NEXT: vzeroupper2302; AVX512BW-NEXT: retq2303;2304; AVX512BW-FCP-LABEL: load_i16_stride5_vf16:2305; AVX512BW-FCP: # %bb.0:2306; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm02307; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm12308; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0]2309; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm22310; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,1,2,3,4,5,6,7,8,9,10,11,12,17,22,27]2311; AVX512BW-FCP-NEXT: vmovdqa 128(%rdi), %ymm42312; AVX512BW-FCP-NEXT: vpermi2w %ymm4, %ymm2, %ymm32313; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0]2314; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm22315; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [0,1,2,3,4,5,6,7,8,9,10,11,12,18,23,28]2316; AVX512BW-FCP-NEXT: vpermi2w %ymm4, %ymm2, %ymm52317; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0]2318; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm1, %zmm22319; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,1,2,3,4,5,6,7,8,9,10,11,12,19,24,29]2320; AVX512BW-FCP-NEXT: vpermi2w %ymm4, %ymm2, %ymm62321; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0]2322; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm1, %zmm22323; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [0,1,2,3,4,5,6,7,8,9,10,11,12,20,25,30]2324; AVX512BW-FCP-NEXT: vpermi2w %ymm4, %ymm2, %ymm72325; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0]2326; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm22327; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm0 = [0,1,2,3,4,5,6,7,8,9,10,11,16,21,26,31]2328; AVX512BW-FCP-NEXT: vpermi2w %ymm4, %ymm2, %ymm02329; AVX512BW-FCP-NEXT: vmovdqa %ymm3, (%rsi)2330; AVX512BW-FCP-NEXT: vmovdqa %ymm5, (%rdx)2331; AVX512BW-FCP-NEXT: vmovdqa %ymm6, (%rcx)2332; AVX512BW-FCP-NEXT: vmovdqa %ymm7, (%r8)2333; AVX512BW-FCP-NEXT: vmovdqa %ymm0, (%r9)2334; AVX512BW-FCP-NEXT: vzeroupper2335; AVX512BW-FCP-NEXT: retq2336;2337; AVX512DQ-BW-LABEL: load_i16_stride5_vf16:2338; AVX512DQ-BW: # %bb.0:2339; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm02340; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm12341; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0]2342; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm22343; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,1,2,3,4,5,6,7,8,9,10,11,12,17,22,27]2344; AVX512DQ-BW-NEXT: vmovdqa 128(%rdi), %ymm42345; AVX512DQ-BW-NEXT: vpermi2w %ymm4, %ymm2, %ymm32346; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm2 = [1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0]2347; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm22348; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm5 = [0,1,2,3,4,5,6,7,8,9,10,11,12,18,23,28]2349; AVX512DQ-BW-NEXT: vpermi2w %ymm4, %ymm2, %ymm52350; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm2 = [34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0]2351; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm1, %zmm22352; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,1,2,3,4,5,6,7,8,9,10,11,12,19,24,29]2353; AVX512DQ-BW-NEXT: vpermi2w %ymm4, %ymm2, %ymm62354; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm2 = [35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0]2355; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm1, %zmm22356; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm7 = [0,1,2,3,4,5,6,7,8,9,10,11,12,20,25,30]2357; AVX512DQ-BW-NEXT: vpermi2w %ymm4, %ymm2, %ymm72358; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm2 = [4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0]2359; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm0, %zmm22360; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm0 = [0,1,2,3,4,5,6,7,8,9,10,11,16,21,26,31]2361; AVX512DQ-BW-NEXT: vpermi2w %ymm4, %ymm2, %ymm02362; AVX512DQ-BW-NEXT: vmovdqa %ymm3, (%rsi)2363; AVX512DQ-BW-NEXT: vmovdqa %ymm5, (%rdx)2364; AVX512DQ-BW-NEXT: vmovdqa %ymm6, (%rcx)2365; AVX512DQ-BW-NEXT: vmovdqa %ymm7, (%r8)2366; AVX512DQ-BW-NEXT: vmovdqa %ymm0, (%r9)2367; AVX512DQ-BW-NEXT: vzeroupper2368; AVX512DQ-BW-NEXT: retq2369;2370; AVX512DQ-BW-FCP-LABEL: load_i16_stride5_vf16:2371; AVX512DQ-BW-FCP: # %bb.0:2372; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm02373; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm12374; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0]2375; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm22376; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm3 = [0,1,2,3,4,5,6,7,8,9,10,11,12,17,22,27]2377; AVX512DQ-BW-FCP-NEXT: vmovdqa 128(%rdi), %ymm42378; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm4, %ymm2, %ymm32379; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0]2380; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm22381; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm5 = [0,1,2,3,4,5,6,7,8,9,10,11,12,18,23,28]2382; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm4, %ymm2, %ymm52383; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0]2384; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm1, %zmm22385; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,1,2,3,4,5,6,7,8,9,10,11,12,19,24,29]2386; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm4, %ymm2, %ymm62387; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0]2388; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm1, %zmm22389; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [0,1,2,3,4,5,6,7,8,9,10,11,12,20,25,30]2390; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm4, %ymm2, %ymm72391; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm2 = [4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0]2392; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm0, %zmm22393; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm0 = [0,1,2,3,4,5,6,7,8,9,10,11,16,21,26,31]2394; AVX512DQ-BW-FCP-NEXT: vpermi2w %ymm4, %ymm2, %ymm02395; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm3, (%rsi)2396; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm5, (%rdx)2397; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm6, (%rcx)2398; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm7, (%r8)2399; AVX512DQ-BW-FCP-NEXT: vmovdqa %ymm0, (%r9)2400; AVX512DQ-BW-FCP-NEXT: vzeroupper2401; AVX512DQ-BW-FCP-NEXT: retq2402 %wide.vec = load <80 x i16>, ptr %in.vec, align 642403 %strided.vec0 = shufflevector <80 x i16> %wide.vec, <80 x i16> poison, <16 x i32> <i32 0, i32 5, i32 10, i32 15, i32 20, i32 25, i32 30, i32 35, i32 40, i32 45, i32 50, i32 55, i32 60, i32 65, i32 70, i32 75>2404 %strided.vec1 = shufflevector <80 x i16> %wide.vec, <80 x i16> poison, <16 x i32> <i32 1, i32 6, i32 11, i32 16, i32 21, i32 26, i32 31, i32 36, i32 41, i32 46, i32 51, i32 56, i32 61, i32 66, i32 71, i32 76>2405 %strided.vec2 = shufflevector <80 x i16> %wide.vec, <80 x i16> poison, <16 x i32> <i32 2, i32 7, i32 12, i32 17, i32 22, i32 27, i32 32, i32 37, i32 42, i32 47, i32 52, i32 57, i32 62, i32 67, i32 72, i32 77>2406 %strided.vec3 = shufflevector <80 x i16> %wide.vec, <80 x i16> poison, <16 x i32> <i32 3, i32 8, i32 13, i32 18, i32 23, i32 28, i32 33, i32 38, i32 43, i32 48, i32 53, i32 58, i32 63, i32 68, i32 73, i32 78>2407 %strided.vec4 = shufflevector <80 x i16> %wide.vec, <80 x i16> poison, <16 x i32> <i32 4, i32 9, i32 14, i32 19, i32 24, i32 29, i32 34, i32 39, i32 44, i32 49, i32 54, i32 59, i32 64, i32 69, i32 74, i32 79>2408 store <16 x i16> %strided.vec0, ptr %out.vec0, align 642409 store <16 x i16> %strided.vec1, ptr %out.vec1, align 642410 store <16 x i16> %strided.vec2, ptr %out.vec2, align 642411 store <16 x i16> %strided.vec3, ptr %out.vec3, align 642412 store <16 x i16> %strided.vec4, ptr %out.vec4, align 642413 ret void2414}2415 2416define void @load_i16_stride5_vf32(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4) nounwind {2417; SSE-LABEL: load_i16_stride5_vf32:2418; SSE: # %bb.0:2419; SSE-NEXT: subq $408, %rsp # imm = 0x1982420; SSE-NEXT: movdqa 64(%rdi), %xmm42421; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2422; SSE-NEXT: movdqa (%rdi), %xmm62423; SSE-NEXT: movdqa 16(%rdi), %xmm132424; SSE-NEXT: movdqa 32(%rdi), %xmm92425; SSE-NEXT: movdqa 48(%rdi), %xmm52426; SSE-NEXT: movdqa 224(%rdi), %xmm72427; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2428; SSE-NEXT: movdqa 160(%rdi), %xmm112429; SSE-NEXT: movdqa 176(%rdi), %xmm122430; SSE-NEXT: movdqa 208(%rdi), %xmm82431; SSE-NEXT: movdqa 192(%rdi), %xmm22432; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2433; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,0,65535,65535,65535]2434; SSE-NEXT: movdqa %xmm0, %xmm12435; SSE-NEXT: pandn %xmm2, %xmm12436; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm8[0,1,0,3]2437; SSE-NEXT: pand %xmm0, %xmm22438; SSE-NEXT: por %xmm1, %xmm22439; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm12[3,1,2,3]2440; SSE-NEXT: movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2441; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]2442; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm11[0,2,2,3]2443; SSE-NEXT: movdqa %xmm11, (%rsp) # 16-byte Spill2444; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,3,2,3,4,5,6,7]2445; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]2446; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm2[2,3]2447; SSE-NEXT: movaps {{.*#+}} xmm15 = [65535,65535,65535,65535,65535,65535,65535,0]2448; SSE-NEXT: andps %xmm15, %xmm32449; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm7[0,1,0,1]2450; SSE-NEXT: movaps %xmm15, %xmm22451; SSE-NEXT: pandn %xmm1, %xmm22452; SSE-NEXT: por %xmm3, %xmm22453; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2454; SSE-NEXT: movdqa %xmm0, %xmm12455; SSE-NEXT: pandn %xmm9, %xmm12456; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2457; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm5[0,1,0,3]2458; SSE-NEXT: movdqa %xmm5, %xmm72459; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2460; SSE-NEXT: pand %xmm0, %xmm22461; SSE-NEXT: por %xmm1, %xmm22462; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm13[3,1,2,3]2463; SSE-NEXT: movdqa %xmm13, %xmm52464; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2465; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]2466; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm6[0,2,2,3]2467; SSE-NEXT: movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2468; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,3,2,3,4,5,6,7]2469; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]2470; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm2[2,3]2471; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,1,0,1]2472; SSE-NEXT: movaps %xmm15, %xmm22473; SSE-NEXT: andnps %xmm1, %xmm22474; SSE-NEXT: movdqa 272(%rdi), %xmm42475; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2476; SSE-NEXT: andps %xmm15, %xmm32477; SSE-NEXT: orps %xmm3, %xmm22478; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2479; SSE-NEXT: movdqa %xmm0, %xmm12480; SSE-NEXT: pandn %xmm4, %xmm12481; SSE-NEXT: movdqa 288(%rdi), %xmm22482; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2483; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,0,3]2484; SSE-NEXT: pand %xmm0, %xmm22485; SSE-NEXT: por %xmm1, %xmm22486; SSE-NEXT: movdqa 256(%rdi), %xmm142487; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm14[3,1,2,3]2488; SSE-NEXT: movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2489; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]2490; SSE-NEXT: movdqa 240(%rdi), %xmm132491; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm13[0,2,2,3]2492; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2493; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,3,2,3,4,5,6,7]2494; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]2495; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm2[2,3]2496; SSE-NEXT: movdqa 304(%rdi), %xmm12497; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2498; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,1]2499; SSE-NEXT: movaps %xmm15, %xmm22500; SSE-NEXT: andnps %xmm1, %xmm22501; SSE-NEXT: andps %xmm15, %xmm32502; SSE-NEXT: orps %xmm3, %xmm22503; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2504; SSE-NEXT: movdqa 128(%rdi), %xmm12505; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2506; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,3]2507; SSE-NEXT: pand %xmm0, %xmm12508; SSE-NEXT: movdqa 112(%rdi), %xmm22509; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2510; SSE-NEXT: pandn %xmm2, %xmm02511; SSE-NEXT: por %xmm1, %xmm02512; SSE-NEXT: movdqa 96(%rdi), %xmm12513; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2514; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]2515; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]2516; SSE-NEXT: movdqa 80(%rdi), %xmm42517; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[0,2,2,3]2518; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2519; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]2520; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2521; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm0[2,3]2522; SSE-NEXT: movdqa 144(%rdi), %xmm02523; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2524; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]2525; SSE-NEXT: movaps %xmm15, %xmm12526; SSE-NEXT: andnps %xmm0, %xmm12527; SSE-NEXT: andps %xmm15, %xmm22528; SSE-NEXT: orps %xmm2, %xmm12529; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2530; SSE-NEXT: psrlq $48, %xmm122531; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm11[0,3,2,3]2532; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[1,2,2,3,4,5,6,7]2533; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm12[0],xmm1[1],xmm12[1]2534; SSE-NEXT: movdqa {{.*#+}} xmm0 = [0,0,0,65535,65535,65535,65535,65535]2535; SSE-NEXT: movdqa %xmm0, %xmm22536; SSE-NEXT: pandn %xmm1, %xmm22537; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2538; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm8[1,3,2,3]2539; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload2540; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm11[0,2,2,3]2541; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]2542; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm3[0,1,2,3,7,5,6,7]2543; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]2544; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]2545; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,6,4,7]2546; SSE-NEXT: pand %xmm0, %xmm12547; SSE-NEXT: por %xmm2, %xmm12548; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload2549; SSE-NEXT: movdqa %xmm10, %xmm22550; SSE-NEXT: psllq $48, %xmm22551; SSE-NEXT: movaps %xmm15, %xmm32552; SSE-NEXT: andnps %xmm2, %xmm32553; SSE-NEXT: pand %xmm15, %xmm12554; SSE-NEXT: orps %xmm1, %xmm32555; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2556; SSE-NEXT: psrlq $48, %xmm52557; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm6[0,3,2,3]2558; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[1,2,2,3,4,5,6,7]2559; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]2560; SSE-NEXT: movdqa %xmm0, %xmm12561; SSE-NEXT: pandn %xmm2, %xmm12562; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm7[1,3,2,3]2563; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm9[0,2,2,3]2564; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]2565; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm3[0,1,2,3,7,5,6,7]2566; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]2567; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,0,0,0,4,5,6,7]2568; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,6,4,7]2569; SSE-NEXT: pand %xmm0, %xmm22570; SSE-NEXT: por %xmm1, %xmm22571; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload2572; SSE-NEXT: movdqa %xmm6, %xmm12573; SSE-NEXT: psllq $48, %xmm12574; SSE-NEXT: movdqa %xmm15, %xmm32575; SSE-NEXT: pandn %xmm1, %xmm32576; SSE-NEXT: pand %xmm15, %xmm22577; SSE-NEXT: por %xmm2, %xmm32578; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2579; SSE-NEXT: movdqa %xmm14, %xmm12580; SSE-NEXT: psrlq $48, %xmm12581; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm13[0,3,2,3]2582; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[1,2,2,3,4,5,6,7]2583; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2584; SSE-NEXT: movdqa %xmm0, %xmm12585; SSE-NEXT: pandn %xmm2, %xmm12586; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload2587; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm14[1,3,2,3]2588; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2589; SSE-NEXT: # xmm3 = mem[0,2,2,3]2590; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]2591; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm3[0,1,2,3,7,5,6,7]2592; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]2593; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,0,0,0,4,5,6,7]2594; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,6,4,7]2595; SSE-NEXT: pand %xmm0, %xmm22596; SSE-NEXT: por %xmm1, %xmm22597; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload2598; SSE-NEXT: movdqa %xmm7, %xmm12599; SSE-NEXT: psllq $48, %xmm12600; SSE-NEXT: movdqa %xmm15, %xmm32601; SSE-NEXT: pandn %xmm1, %xmm32602; SSE-NEXT: pand %xmm15, %xmm22603; SSE-NEXT: por %xmm2, %xmm32604; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2605; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload2606; SSE-NEXT: movdqa %xmm13, %xmm12607; SSE-NEXT: psrlq $48, %xmm12608; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[0,3,2,3]2609; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[1,2,2,3,4,5,6,7]2610; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2611; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload2612; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm12[1,3,2,3]2613; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2614; SSE-NEXT: # xmm3 = mem[0,2,2,3]2615; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]2616; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm3[0,1,2,3,7,5,6,7]2617; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]2618; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]2619; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,6,4,7]2620; SSE-NEXT: pand %xmm0, %xmm12621; SSE-NEXT: pandn %xmm2, %xmm02622; SSE-NEXT: por %xmm1, %xmm02623; SSE-NEXT: pand %xmm15, %xmm02624; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload2625; SSE-NEXT: movdqa %xmm5, %xmm12626; SSE-NEXT: psllq $48, %xmm12627; SSE-NEXT: pandn %xmm1, %xmm152628; SSE-NEXT: por %xmm0, %xmm152629; SSE-NEXT: movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2630; SSE-NEXT: movdqa %xmm8, %xmm02631; SSE-NEXT: movdqa %xmm11, %xmm82632; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,0],xmm11[0,0]2633; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0],xmm11[2,3]2634; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0,1,3]2635; SSE-NEXT: movaps {{.*#+}} xmm11 = [65535,65535,65535,0,0,0,65535,65535]2636; SSE-NEXT: movaps %xmm11, %xmm12637; SSE-NEXT: andnps %xmm0, %xmm12638; SSE-NEXT: movdqa (%rsp), %xmm4 # 16-byte Reload2639; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[0,1,1,3]2640; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,6,7]2641; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload2642; SSE-NEXT: punpckhdq {{.*#+}} xmm2 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]2643; SSE-NEXT: pand %xmm11, %xmm22644; SSE-NEXT: por %xmm1, %xmm22645; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]2646; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm10[0,1,2,0]2647; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,5]2648; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,1],xmm0[2,3]2649; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm1[2,0]2650; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2651; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2652; SSE-NEXT: movaps %xmm1, %xmm02653; SSE-NEXT: movaps %xmm1, %xmm152654; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload2655; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,0],xmm9[0,0]2656; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0],xmm9[2,3]2657; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0,1,3]2658; SSE-NEXT: movaps %xmm11, %xmm12659; SSE-NEXT: andnps %xmm0, %xmm12660; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload2661; SSE-NEXT: # xmm2 = mem[0,1,1,3]2662; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,6,7]2663; SSE-NEXT: punpckhdq {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload2664; SSE-NEXT: # xmm2 = xmm2[2],mem[2],xmm2[3],mem[3]2665; SSE-NEXT: pand %xmm11, %xmm22666; SSE-NEXT: por %xmm1, %xmm22667; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]2668; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm6[0,1,2,0]2669; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,5]2670; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,1],xmm0[2,3]2671; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm1[2,0]2672; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2673; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload2674; SSE-NEXT: shufps {{.*#+}} xmm14 = xmm14[1,0],xmm10[0,0]2675; SSE-NEXT: shufps {{.*#+}} xmm14 = xmm14[2,0],xmm10[2,3]2676; SSE-NEXT: shufps {{.*#+}} xmm14 = xmm14[0,0,1,3]2677; SSE-NEXT: movaps %xmm11, %xmm12678; SSE-NEXT: andnps %xmm14, %xmm12679; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload2680; SSE-NEXT: # xmm2 = mem[0,1,1,3]2681; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,6,7]2682; SSE-NEXT: punpckhdq {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload2683; SSE-NEXT: # xmm2 = xmm2[2],mem[2],xmm2[3],mem[3]2684; SSE-NEXT: pand %xmm11, %xmm22685; SSE-NEXT: por %xmm1, %xmm22686; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm14[0,1,2,3,6,5,6,7]2687; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm7[0,1,2,0]2688; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,5]2689; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,1],xmm0[2,3]2690; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm1[2,0]2691; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2692; SSE-NEXT: movdqa %xmm12, %xmm02693; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2694; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,0],xmm1[0,0]2695; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0],xmm1[2,3]2696; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0,1,3]2697; SSE-NEXT: movaps %xmm11, %xmm12698; SSE-NEXT: andnps %xmm0, %xmm12699; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload2700; SSE-NEXT: # xmm2 = mem[0,1,1,3]2701; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,6,7]2702; SSE-NEXT: punpckhdq {{.*#+}} xmm2 = xmm2[2],xmm13[2],xmm2[3],xmm13[3]2703; SSE-NEXT: pand %xmm11, %xmm22704; SSE-NEXT: por %xmm1, %xmm22705; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]2706; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[0,1,2,0]2707; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,5]2708; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,1],xmm0[2,3]2709; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm1[2,0]2710; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2711; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm8[2,2,2,2,4,5,6,7]2712; SSE-NEXT: movdqa %xmm11, %xmm12713; SSE-NEXT: pandn %xmm0, %xmm12714; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,1,1]2715; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,2,2,3]2716; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]2717; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm2[0,3,2,3,4,5,6,7]2718; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2719; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[1,0,3,3,4,5,6,7]2720; SSE-NEXT: pand %xmm11, %xmm02721; SSE-NEXT: por %xmm1, %xmm02722; SSE-NEXT: movdqa %xmm0, %xmm22723; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload2724; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[2,0],xmm8[3,0]2725; SSE-NEXT: movaps %xmm11, %xmm02726; SSE-NEXT: andnps %xmm8, %xmm02727; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2728; SSE-NEXT: shufps {{.*#+}} xmm8 = xmm8[0,1],xmm3[0,2]2729; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm8[0,1,2,3,7,4,6,7]2730; SSE-NEXT: pshufd $196, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload2731; SSE-NEXT: # xmm1 = mem[0,1,0,3]2732; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,5,6]2733; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,1],xmm0[2,3]2734; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm1[2,0]2735; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2736; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm9[2,2,2,2,4,5,6,7]2737; SSE-NEXT: movdqa %xmm11, %xmm12738; SSE-NEXT: pandn %xmm0, %xmm12739; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload2740; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm8[1,1,1,1]2741; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload2742; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm14[0,2,2,3]2743; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]2744; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm2[0,3,2,3,4,5,6,7]2745; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2746; SSE-NEXT: pshuflw {{.*#+}} xmm13 = xmm0[1,0,3,3,4,5,6,7]2747; SSE-NEXT: pand %xmm11, %xmm132748; SSE-NEXT: por %xmm1, %xmm132749; SSE-NEXT: movaps %xmm15, %xmm02750; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0],xmm9[3,0]2751; SSE-NEXT: movdqa %xmm11, %xmm122752; SSE-NEXT: pandn %xmm9, %xmm122753; SSE-NEXT: shufps {{.*#+}} xmm9 = xmm9[0,1],xmm0[0,2]2754; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm9[0,1,2,3,7,4,6,7]2755; SSE-NEXT: pshufd $196, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload2756; SSE-NEXT: # xmm1 = mem[0,1,0,3]2757; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,5,6]2758; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,1],xmm0[2,3]2759; SSE-NEXT: shufps {{.*#+}} xmm13 = xmm13[0,1],xmm1[2,0]2760; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm10[2,2,2,2,4,5,6,7]2761; SSE-NEXT: movdqa %xmm11, %xmm12762; SSE-NEXT: pandn %xmm0, %xmm12763; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload2764; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,1,1]2765; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload2766; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,2,2,3]2767; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]2768; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm2[0,3,2,3,4,5,6,7]2769; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2770; SSE-NEXT: pshuflw {{.*#+}} xmm9 = xmm0[1,0,3,3,4,5,6,7]2771; SSE-NEXT: pand %xmm11, %xmm92772; SSE-NEXT: por %xmm1, %xmm92773; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2774; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0],xmm10[3,0]2775; SSE-NEXT: movdqa %xmm11, %xmm152776; SSE-NEXT: pandn %xmm10, %xmm152777; SSE-NEXT: shufps {{.*#+}} xmm10 = xmm10[0,1],xmm0[0,2]2778; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm10[0,1,2,3,7,4,6,7]2779; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm7[0,1,0,3]2780; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,5,6]2781; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,1],xmm0[2,3]2782; SSE-NEXT: shufps {{.*#+}} xmm9 = xmm9[0,1],xmm1[2,0]2783; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload2784; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm7[2,2,2,2,4,5,6,7]2785; SSE-NEXT: movdqa %xmm11, %xmm12786; SSE-NEXT: pandn %xmm0, %xmm12787; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload2788; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm5[1,1,1,1]2789; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload2790; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[0,2,2,3]2791; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]2792; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm2[0,3,2,3,4,5,6,7]2793; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2794; SSE-NEXT: pshuflw {{.*#+}} xmm10 = xmm0[1,0,3,3,4,5,6,7]2795; SSE-NEXT: pand %xmm11, %xmm102796; SSE-NEXT: por %xmm1, %xmm102797; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload2798; SSE-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload2799; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm0[3,0]2800; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[0,2]2801; SSE-NEXT: shufps {{.*#+}} xmm8 = xmm8[2,0],xmm14[3,0]2802; SSE-NEXT: shufps {{.*#+}} xmm14 = xmm14[0,1],xmm8[0,2]2803; SSE-NEXT: movaps %xmm14, %xmm22804; SSE-NEXT: movdqa %xmm3, %xmm12805; SSE-NEXT: shufps {{.*#+}} xmm6 = xmm6[2,0],xmm3[3,0]2806; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm6[0,2]2807; SSE-NEXT: movaps %xmm1, %xmm142808; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[2,0],xmm4[3,0]2809; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm5[0,2]2810; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload2811; SSE-NEXT: movaps %xmm8, %xmm12812; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm7[3,0]2813; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7]2814; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2815; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm0[2,1,3,3,4,5,6,7]2816; SSE-NEXT: pand %xmm11, %xmm32817; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm2[0,1,2,3,4,6,6,7]2818; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2819; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm0[2,1,3,3,4,5,6,7]2820; SSE-NEXT: pand %xmm11, %xmm22821; SSE-NEXT: pshufhw {{.*#+}} xmm0 = xmm14[0,1,2,3,4,6,6,7]2822; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]2823; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[2,1,3,3,4,5,6,7]2824; SSE-NEXT: pand %xmm11, %xmm02825; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7]2826; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]2827; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[2,1,3,3,4,5,6,7]2828; SSE-NEXT: pand %xmm11, %xmm42829; SSE-NEXT: pandn %xmm7, %xmm112830; SSE-NEXT: shufps {{.*#+}} xmm7 = xmm7[0,1],xmm1[0,2]2831; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm7[0,1,2,3,7,4,6,7]2832; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload2833; SSE-NEXT: pshufd {{.*#+}} xmm14 = xmm6[0,1,0,3]2834; SSE-NEXT: pshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,5,5,6]2835; SSE-NEXT: shufps {{.*#+}} xmm14 = xmm14[3,1],xmm1[2,3]2836; SSE-NEXT: shufps {{.*#+}} xmm10 = xmm10[0,1],xmm14[2,0]2837; SSE-NEXT: por {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload2838; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload2839; SSE-NEXT: # xmm1 = mem[0,2,2,3]2840; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Folded Reload2841; SSE-NEXT: # xmm14 = mem[0,1,1,3]2842; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]2843; SSE-NEXT: pshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,5,4,7]2844; SSE-NEXT: shufps {{.*#+}} xmm14 = xmm14[3,1],xmm1[1,3]2845; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm14[2,0]2846; SSE-NEXT: por %xmm12, %xmm22847; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload2848; SSE-NEXT: # xmm1 = mem[0,2,2,3]2849; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload2850; SSE-NEXT: # xmm12 = mem[0,1,1,3]2851; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]2852; SSE-NEXT: pshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,5,4,7]2853; SSE-NEXT: shufps {{.*#+}} xmm12 = xmm12[3,1],xmm1[1,3]2854; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm12[2,0]2855; SSE-NEXT: por %xmm15, %xmm02856; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload2857; SSE-NEXT: # xmm1 = mem[0,2,2,3]2858; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload2859; SSE-NEXT: # xmm5 = mem[0,1,1,3]2860; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]2861; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,4,7]2862; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,1],xmm1[1,3]2863; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm5[2,0]2864; SSE-NEXT: por %xmm4, %xmm112865; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm8[0,2,2,3]2866; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm6[0,1,1,3]2867; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]2868; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,4,7]2869; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,1],xmm1[1,3]2870; SSE-NEXT: shufps {{.*#+}} xmm11 = xmm11[0,1],xmm4[2,0]2871; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2872; SSE-NEXT: movaps %xmm1, 16(%rsi)2873; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2874; SSE-NEXT: movaps %xmm1, 48(%rsi)2875; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2876; SSE-NEXT: movaps %xmm1, (%rsi)2877; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2878; SSE-NEXT: movaps %xmm1, 32(%rsi)2879; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2880; SSE-NEXT: movaps %xmm1, 16(%rdx)2881; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2882; SSE-NEXT: movaps %xmm1, 48(%rdx)2883; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2884; SSE-NEXT: movaps %xmm1, (%rdx)2885; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2886; SSE-NEXT: movaps %xmm1, 32(%rdx)2887; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2888; SSE-NEXT: movaps %xmm1, 16(%rcx)2889; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2890; SSE-NEXT: movaps %xmm1, 48(%rcx)2891; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2892; SSE-NEXT: movaps %xmm1, (%rcx)2893; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2894; SSE-NEXT: movaps %xmm1, 32(%rcx)2895; SSE-NEXT: movaps %xmm10, 16(%r8)2896; SSE-NEXT: movaps %xmm9, 48(%r8)2897; SSE-NEXT: movaps %xmm13, (%r8)2898; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload2899; SSE-NEXT: movaps %xmm1, 32(%r8)2900; SSE-NEXT: movaps %xmm11, 16(%r9)2901; SSE-NEXT: movaps %xmm0, 48(%r9)2902; SSE-NEXT: movaps %xmm2, (%r9)2903; SSE-NEXT: movaps %xmm3, 32(%r9)2904; SSE-NEXT: addq $408, %rsp # imm = 0x1982905; SSE-NEXT: retq2906;2907; AVX-LABEL: load_i16_stride5_vf32:2908; AVX: # %bb.0:2909; AVX-NEXT: subq $424, %rsp # imm = 0x1A82910; AVX-NEXT: vmovdqa 144(%rdi), %xmm92911; AVX-NEXT: vmovdqa 128(%rdi), %xmm72912; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm7[0,1],xmm9[2,3],xmm7[4,5,6,7]2913; AVX-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2914; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [6,7,2,3,4,5,6,7,6,7,2,3,12,13,6,7]2915; AVX-NEXT: vpshufb %xmm1, %xmm0, %xmm02916; AVX-NEXT: vmovdqa 96(%rdi), %xmm112917; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm11[0,1,1,3]2918; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]2919; AVX-NEXT: vmovdqa 112(%rdi), %xmm102920; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm10[1]2921; AVX-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2922; AVX-NEXT: vmovdqa 80(%rdi), %xmm32923; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2924; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]2925; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,3,2,3,4,5,6,7]2926; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1],xmm2[2,3,4,5,6,7]2927; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4],xmm0[5,6,7]2928; AVX-NEXT: vmovdqa (%rdi), %xmm52929; AVX-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2930; AVX-NEXT: vmovdqa 16(%rdi), %xmm122931; AVX-NEXT: vmovdqa 32(%rdi), %xmm32932; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2933; AVX-NEXT: vmovdqa 48(%rdi), %xmm152934; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm15[0,1,0,3]2935; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm3[4],xmm0[5,6,7]2936; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm12[3,1,2,3]2937; AVX-NEXT: vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2938; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,1,2,3,4,5,6,7]2939; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm5[0,2,2,3]2940; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]2941; AVX-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]2942; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3],xmm0[4,5,6,7]2943; AVX-NEXT: vmovaps {{.*#+}} ymm6 = [65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,65535,65535,65535]2944; AVX-NEXT: vandps %ymm6, %ymm3, %ymm32945; AVX-NEXT: vmovaps 64(%rdi), %xmm52946; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm5[0,1,0,1]2947; AVX-NEXT: vmovaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2948; AVX-NEXT: vandnps %ymm4, %ymm6, %ymm42949; AVX-NEXT: vorps %ymm4, %ymm3, %ymm32950; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm02951; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2952; AVX-NEXT: vmovdqa 304(%rdi), %xmm22953; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2954; AVX-NEXT: vmovdqa 288(%rdi), %xmm132955; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm13[0,1],xmm2[2,3],xmm13[4,5,6,7]2956; AVX-NEXT: vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2957; AVX-NEXT: vpshufb %xmm1, %xmm2, %xmm12958; AVX-NEXT: vmovdqa 256(%rdi), %xmm02959; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2960; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,1,1,3]2961; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]2962; AVX-NEXT: vmovdqa 272(%rdi), %xmm02963; AVX-NEXT: vmovdqa %xmm0, (%rsp) # 16-byte Spill2964; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm0[1]2965; AVX-NEXT: vmovdqa 240(%rdi), %xmm02966; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2967; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[0,2,2,3]2968; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,3,2,3,4,5,6,7]2969; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1],xmm2[2,3,4,5,6,7]2970; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm2[0,1,2,3,4],xmm1[5,6,7]2971; AVX-NEXT: vmovdqa 176(%rdi), %xmm02972; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2973; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]2974; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]2975; AVX-NEXT: vmovdqa 160(%rdi), %xmm02976; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2977; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,2,2,3]2978; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]2979; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]2980; AVX-NEXT: vmovdqa 208(%rdi), %xmm02981; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2982; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]2983; AVX-NEXT: vmovdqa 192(%rdi), %xmm142984; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm14[4],xmm0[5,6,7]2985; AVX-NEXT: vmovdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2986; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3],xmm0[4,5,6,7]2987; AVX-NEXT: vandps %ymm6, %ymm0, %ymm02988; AVX-NEXT: vmovaps 224(%rdi), %xmm12989; AVX-NEXT: vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2990; AVX-NEXT: vshufps {{.*#+}} xmm8 = xmm1[0,1,0,1]2991; AVX-NEXT: vandnps %ymm8, %ymm6, %ymm82992; AVX-NEXT: vorps %ymm0, %ymm8, %ymm02993; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm02994; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2995; AVX-NEXT: vmovdqa %xmm11, %xmm62996; AVX-NEXT: vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2997; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm10[0,1],xmm11[2,3],xmm10[4,5,6,7]2998; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,0,4,5,6,7]2999; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]3000; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload3001; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm11[0,3,2,3]3002; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]3003; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm3[0,1],xmm0[2,3,4,5,6,7]3004; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3005; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm7[0,1,2,3],xmm9[4,5],xmm7[6,7]3006; AVX-NEXT: vmovdqa {{.*#+}} xmm8 = [0,1,2,3,4,5,6,7,8,9,4,5,14,15,8,9]3007; AVX-NEXT: vpshufb %xmm8, %xmm3, %xmm33008; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm3[5,6,7]3009; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload3010; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm4[0,3,2,3]3011; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]3012; AVX-NEXT: vpsrlq $48, %xmm12, %xmm93013; AVX-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm3[0],xmm9[0],xmm3[1],xmm9[1]3014; AVX-NEXT: vmovdqa %xmm15, %xmm123015; AVX-NEXT: vmovdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3016; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload3017; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm2[0,1],xmm15[2,3],xmm2[4,5],xmm15[6,7]3018; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [0,1,0,1,0,1,0,1,10,11,4,5,14,15,6,7]3019; AVX-NEXT: vpshufb %xmm1, %xmm9, %xmm93020; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm9[3,4,5,6,7]3021; AVX-NEXT: vmovaps {{.*#+}} ymm10 = [65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,65535,65535,65535]3022; AVX-NEXT: vandps %ymm3, %ymm10, %ymm33023; AVX-NEXT: vpsllq $48, %xmm5, %xmm93024; AVX-NEXT: vandnps %ymm9, %ymm10, %ymm93025; AVX-NEXT: vorps %ymm3, %ymm9, %ymm33026; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm3, %ymm03027; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3028; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload3029; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm13[0,1,2,3],xmm5[4,5],xmm13[6,7]3030; AVX-NEXT: vpshufb %xmm8, %xmm0, %xmm03031; AVX-NEXT: vmovdqa (%rsp), %xmm15 # 16-byte Reload3032; AVX-NEXT: vpblendw $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm3 # 16-byte Folded Reload3033; AVX-NEXT: # xmm3 = xmm15[0,1],mem[2,3],xmm15[4,5,6,7]3034; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,1,3,0,4,5,6,7]3035; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,5,5,5]3036; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload3037; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm10[0,3,2,3]3038; AVX-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[1,2,2,3,4,5,6,7]3039; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm8[0,1],xmm3[2,3,4,5,6,7]3040; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm3[0,1,2,3,4],xmm0[5,6,7]3041; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload3042; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm14[0,1],xmm13[2,3],xmm14[4,5],xmm13[6,7]3043; AVX-NEXT: vpshufb %xmm1, %xmm3, %xmm13044; AVX-NEXT: vpshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload3045; AVX-NEXT: # xmm3 = mem[0,3,2,3]3046; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]3047; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload3048; AVX-NEXT: vpsrlq $48, %xmm8, %xmm83049; AVX-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1]3050; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0,1,2],xmm1[3,4,5,6,7]3051; AVX-NEXT: vmovaps {{.*#+}} ymm8 = [65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,65535,65535,65535]3052; AVX-NEXT: vandps %ymm1, %ymm8, %ymm13053; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload3054; AVX-NEXT: vpsllq $48, %xmm14, %xmm33055; AVX-NEXT: vandnps %ymm3, %ymm8, %ymm33056; AVX-NEXT: vorps %ymm3, %ymm1, %ymm13057; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm03058; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3059; AVX-NEXT: vpblendw $207, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6, %xmm0 # 16-byte Folded Reload3060; AVX-NEXT: # xmm0 = mem[0,1,2,3],xmm6[4,5],mem[6,7]3061; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [u,u,u,u,8,9,2,3,12,13,12,13,12,13,12,13]3062; AVX-NEXT: vpshufb %xmm1, %xmm0, %xmm03063; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm11[3,1,2,3]3064; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,1,2,3,4,5,6,7]3065; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm3[0,1],xmm0[2,3,4,5,6,7]3066; AVX-NEXT: vpblendw $243, {{[-0-9]+}}(%r{{[sb]}}p), %xmm7, %xmm3 # 16-byte Folded Reload3067; AVX-NEXT: # xmm3 = mem[0,1],xmm7[2,3],mem[4,5,6,7]3068; AVX-NEXT: vmovdqa {{.*#+}} xmm7 = [0,1,6,7,4,5,6,7,8,9,6,7,0,1,10,11]3069; AVX-NEXT: vpshufb %xmm7, %xmm3, %xmm33070; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm3[5,6,7]3071; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm2[0,1],xmm12[2,3],xmm2[4,5,6,7]3072; AVX-NEXT: vmovdqa {{.*#+}} xmm8 = [2,3,2,3,2,3,2,3,12,13,6,7,12,13,14,15]3073; AVX-NEXT: vpshufb %xmm8, %xmm3, %xmm33074; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm4[0,1,1,3]3075; AVX-NEXT: vpshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,7,6,7]3076; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload3077; AVX-NEXT: vpunpckhdq {{.*#+}} xmm9 = xmm9[2],xmm11[2],xmm9[3],xmm11[3]3078; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm9[0,1,2],xmm3[3,4,5],xmm9[6,7]3079; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload3080; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm12[0,1,2,0]3081; AVX-NEXT: vpshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,5,6,5]3082; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5],xmm9[6,7]3083; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm3, %ymm03084; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3085; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload3086; AVX-NEXT: vmovdqa %xmm5, %xmm93087; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm5[0,1],xmm6[2,3],xmm5[4,5,6,7]3088; AVX-NEXT: vpshufb %xmm7, %xmm0, %xmm43089; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload3090; AVX-NEXT: vmovdqa %xmm15, %xmm03091; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm15[0,1,2,3],xmm5[4,5],xmm15[6,7]3092; AVX-NEXT: vpshufb %xmm1, %xmm3, %xmm13093; AVX-NEXT: vmovdqa %xmm10, %xmm23094; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm10[3,1,2,3]3095; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,1,2,3,4,5,6,7]3096; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0,1],xmm1[2,3,4,5,6,7]3097; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm1[0,1,2,3,4],xmm4[5,6,7]3098; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload3099; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm15[0,1],xmm13[2,3],xmm15[4,5,6,7]3100; AVX-NEXT: vpshufb %xmm8, %xmm1, %xmm13101; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload3102; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm4[0,1,1,3]3103; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,7,6,7]3104; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload3105; AVX-NEXT: vpunpckhdq {{.*#+}} xmm3 = xmm3[2],xmm8[2],xmm3[3],xmm8[3]3106; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0,1,2],xmm1[3,4,5],xmm3[6,7]3107; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm14[0,1,2,0]3108; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,6,5]3109; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm3[6,7]3110; AVX-NEXT: vinsertf128 $1, %xmm10, %ymm1, %ymm13111; AVX-NEXT: vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3112; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm5[0,1],xmm0[2,3],xmm5[4,5],xmm0[6,7]3113; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [u,u,0,1,10,11,4,5,14,15,14,15,14,15,14,15]3114; AVX-NEXT: vpshufb %xmm1, %xmm3, %xmm03115; AVX-NEXT: vpsrlq $48, %xmm2, %xmm33116; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm3[0],xmm0[1,2,3,4,5,6,7]3117; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm9[0,1,2,3],xmm6[4,5],xmm9[6,7]3118; AVX-NEXT: vmovdqa {{.*#+}} xmm5 = [0,1,2,3,4,5,6,7,8,9,8,9,2,3,12,13]3119; AVX-NEXT: vpshufb %xmm5, %xmm3, %xmm33120; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm3[5,6,7]3121; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm8[0,1],xmm4[2,3],xmm8[4,5,6,7]3122; AVX-NEXT: vmovdqa {{.*#+}} xmm6 = [6,7,0,1,10,11,10,11,8,9,10,11,12,13,14,15]3123; AVX-NEXT: vpshufb %xmm6, %xmm3, %xmm33124; AVX-NEXT: vpblendw {{.*#+}} xmm9 = xmm15[0,1,2,3],xmm13[4,5],xmm15[6,7]3125; AVX-NEXT: vpshuflw {{.*#+}} xmm9 = xmm9[2,2,2,2,4,5,6,7]3126; AVX-NEXT: vpshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,7,4,6,7]3127; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm9[3,4,5],xmm3[6,7]3128; AVX-NEXT: vpshufd {{.*#+}} xmm9 = xmm14[0,1,0,3]3129; AVX-NEXT: vpshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,5,5,6]3130; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5],xmm9[6,7]3131; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm3, %ymm03132; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3133; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload3134; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload3135; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm8[0,1,2,3],xmm9[4,5],xmm8[6,7]3136; AVX-NEXT: vpshufb %xmm5, %xmm0, %xmm03137; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload3138; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload3139; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm5[0,1],xmm4[2,3],xmm5[4,5],xmm4[6,7]3140; AVX-NEXT: vpshufb %xmm1, %xmm3, %xmm13141; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload3142; AVX-NEXT: vpsrlq $48, %xmm2, %xmm33143; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0],xmm1[1,2,3,4,5,6,7]3144; AVX-NEXT: vpblendw {{.*#+}} xmm7 = xmm1[0,1,2,3,4],xmm0[5,6,7]3145; AVX-NEXT: vmovdqa %xmm11, %xmm03146; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload3147; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm11[0,1],xmm10[2,3],xmm11[4,5,6,7]3148; AVX-NEXT: vpshufb %xmm6, %xmm1, %xmm13149; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload3150; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload3151; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm6[0,1,2,3],xmm11[4,5],xmm6[6,7]3152; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,2,2,2,4,5,6,7]3153; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,7,4,6,7]3154; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm3[3,4,5],xmm1[6,7]3155; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm12[0,1,0,3]3156; AVX-NEXT: vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,6]3157; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm3[6,7]3158; AVX-NEXT: vinsertf128 $1, %xmm7, %ymm1, %ymm73159; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm8[3,1,2,3]3160; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,1,4,5,6,7]3161; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm9[0,2,2,3]3162; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,1,0,3,4,5,6,7]3163; AVX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]3164; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm5[0,3,2,3]3165; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm4[3],xmm3[4,5,6,7]3166; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm2[2,3,2,3]3167; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm5[0],xmm3[1,2,3,4,5,6,7]3168; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm3[0,1,2,3],xmm1[4,5,6,7]3169; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm0[0,1,2,3],xmm10[4,5],xmm0[6,7]3170; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm6[1,1,1,1]3171; AVX-NEXT: vpshufd {{.*#+}} xmm8 = xmm11[0,2,2,3]3172; AVX-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[0,1,0,3,4,5,6,7]3173; AVX-NEXT: vpunpckldq {{.*#+}} xmm5 = xmm8[0],xmm5[0],xmm8[1],xmm5[1]3174; AVX-NEXT: vmovdqa {{.*#+}} xmm8 = [8,9,2,3,12,13,12,13,8,9,12,13,12,13,14,15]3175; AVX-NEXT: vpshufb %xmm8, %xmm3, %xmm33176; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm5[3,4,5],xmm3[6,7]3177; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm12[0,1,1,3]3178; AVX-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,4,7]3179; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5],xmm5[6,7]3180; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm3, %ymm13181; AVX-NEXT: vpshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload3182; AVX-NEXT: # xmm3 = mem[3,1,2,3]3183; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,1,2,1,4,5,6,7]3184; AVX-NEXT: vpshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload3185; AVX-NEXT: # xmm5 = mem[0,2,2,3]3186; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,0,3,4,5,6,7]3187; AVX-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]3188; AVX-NEXT: vpshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload3189; AVX-NEXT: # xmm5 = mem[0,3,2,3]3190; AVX-NEXT: vpblendw $8, (%rsp), %xmm5, %xmm5 # 16-byte Folded Reload3191; AVX-NEXT: # xmm5 = xmm5[0,1,2],mem[3],xmm5[4,5,6,7]3192; AVX-NEXT: vpshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload3193; AVX-NEXT: # xmm9 = mem[2,3,2,3]3194; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm9[0],xmm5[1,2,3,4,5,6,7]3195; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm5[0,1,2,3],xmm3[4,5,6,7]3196; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3197; AVX-NEXT: vpblendw $48, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm5 # 16-byte Folded Reload3198; AVX-NEXT: # xmm5 = xmm0[0,1,2,3],mem[4,5],xmm0[6,7]3199; AVX-NEXT: vpshufb %xmm8, %xmm5, %xmm53200; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm15[1,1,1,1]3201; AVX-NEXT: vpshufd {{.*#+}} xmm6 = xmm13[0,2,2,3]3202; AVX-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,1,0,3,4,5,6,7]3203; AVX-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm6[0],xmm2[0],xmm6[1],xmm2[1]3204; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm5[0,1,2],xmm2[3,4,5],xmm5[6,7]3205; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm14[0,1,1,3]3206; AVX-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,4,7]3207; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5],xmm4[6,7]3208; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm23209; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload3210; AVX-NEXT: vmovaps %ymm3, 32(%rsi)3211; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload3212; AVX-NEXT: vmovaps %ymm3, (%rsi)3213; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload3214; AVX-NEXT: vmovaps %ymm3, 32(%rdx)3215; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload3216; AVX-NEXT: vmovaps %ymm3, (%rdx)3217; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3218; AVX-NEXT: vmovaps %ymm0, 32(%rcx)3219; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3220; AVX-NEXT: vmovaps %ymm0, (%rcx)3221; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3222; AVX-NEXT: vmovaps %ymm0, 32(%r8)3223; AVX-NEXT: vmovaps %ymm7, (%r8)3224; AVX-NEXT: vmovaps %ymm2, 32(%r9)3225; AVX-NEXT: vmovaps %ymm1, (%r9)3226; AVX-NEXT: addq $424, %rsp # imm = 0x1A83227; AVX-NEXT: vzeroupper3228; AVX-NEXT: retq3229;3230; AVX2-LABEL: load_i16_stride5_vf32:3231; AVX2: # %bb.0:3232; AVX2-NEXT: subq $264, %rsp # imm = 0x1083233; AVX2-NEXT: vmovdqa (%rdi), %ymm13234; AVX2-NEXT: vmovdqa 32(%rdi), %ymm23235; AVX2-NEXT: vmovdqa 64(%rdi), %ymm33236; AVX2-NEXT: vmovdqa 96(%rdi), %ymm153237; AVX2-NEXT: vmovdqa 192(%rdi), %ymm43238; AVX2-NEXT: vmovdqa 160(%rdi), %ymm53239; AVX2-NEXT: vmovdqa 224(%rdi), %ymm73240; AVX2-NEXT: vmovdqa 256(%rdi), %ymm63241; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm7[0],ymm6[1,2],ymm7[3],ymm6[4],ymm7[5],ymm6[6,7],ymm7[8],ymm6[9,10],ymm7[11],ymm6[12],ymm7[13],ymm6[14,15]3242; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm0[2,3,0,1]3243; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm8[5],ymm0[6],ymm8[7]3244; AVX2-NEXT: vmovdqa {{.*#+}} ymm10 = [0,1,10,11,4,5,14,15,8,9,10,11,4,5,6,7,16,17,26,27,20,21,30,31,24,25,26,27,20,21,22,23]3245; AVX2-NEXT: vpshufb %ymm10, %ymm0, %ymm03246; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13],ymm4[14],ymm5[15]3247; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3248; AVX2-NEXT: vextracti128 $1, %ymm8, %xmm93249; AVX2-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0],xmm9[1,2,3],xmm8[4,5],xmm9[6,7]3250; AVX2-NEXT: vmovdqa {{.*#+}} xmm11 = [0,1,10,11,4,5,14,15,8,9,2,3,12,13,6,7]3251; AVX2-NEXT: vpshufb %xmm11, %xmm8, %xmm83252; AVX2-NEXT: vpmovsxbw {{.*#+}} xmm9 = [65535,65535,65535,65535,65535,65535,65535,0]3253; AVX2-NEXT: vpblendvb %ymm9, %ymm8, %ymm0, %ymm83254; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0],ymm15[1,2],ymm3[3],ymm15[4],ymm3[5],ymm15[6,7],ymm3[8],ymm15[9,10],ymm3[11],ymm15[12],ymm3[13],ymm15[14,15]3255; AVX2-NEXT: vpermq {{.*#+}} ymm12 = ymm0[2,3,0,1]3256; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm12[5],ymm0[6],ymm12[7]3257; AVX2-NEXT: vpshufb %ymm10, %ymm0, %ymm03258; AVX2-NEXT: vpblendw {{.*#+}} ymm10 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]3259; AVX2-NEXT: vmovdqu %ymm1, (%rsp) # 32-byte Spill3260; AVX2-NEXT: vextracti128 $1, %ymm10, %xmm123261; AVX2-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0],xmm12[1,2,3],xmm10[4,5],xmm12[6,7]3262; AVX2-NEXT: vpshufb %xmm11, %xmm10, %xmm103263; AVX2-NEXT: vpblendvb %ymm9, %ymm10, %ymm0, %ymm123264; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm6[0],ymm7[1],ymm6[2,3],ymm7[4],ymm6[5],ymm7[6],ymm6[7,8],ymm7[9],ymm6[10,11],ymm7[12],ymm6[13],ymm7[14],ymm6[15]3265; AVX2-NEXT: vpermq {{.*#+}} ymm10 = ymm0[2,3,0,1]3266; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm10[5],ymm0[6,7]3267; AVX2-NEXT: vmovdqa {{.*#+}} ymm10 = [2,3,12,13,6,7,0,1,10,11,6,7,8,9,8,9,18,19,28,29,22,23,16,17,26,27,22,23,24,25,24,25]3268; AVX2-NEXT: vpshufb %ymm10, %ymm0, %ymm03269; AVX2-NEXT: vpblendw {{.*#+}} ymm11 = ymm4[0],ymm5[1],ymm4[2],ymm5[3],ymm4[4,5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10],ymm5[11],ymm4[12,13],ymm5[14],ymm4[15]3270; AVX2-NEXT: vextracti128 $1, %ymm11, %xmm133271; AVX2-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1],xmm13[2,3],xmm11[4,5,6],xmm13[7]3272; AVX2-NEXT: vmovdqa {{.*#+}} xmm14 = [2,3,12,13,6,7,0,1,10,11,4,5,14,15,10,11]3273; AVX2-NEXT: vpshufb %xmm14, %xmm11, %xmm113274; AVX2-NEXT: vpblendvb %ymm9, %ymm11, %ymm0, %ymm03275; AVX2-NEXT: vpblendw {{.*#+}} ymm11 = ymm15[0],ymm3[1],ymm15[2,3],ymm3[4],ymm15[5],ymm3[6],ymm15[7,8],ymm3[9],ymm15[10,11],ymm3[12],ymm15[13],ymm3[14],ymm15[15]3276; AVX2-NEXT: vmovdqa %ymm15, %ymm53277; AVX2-NEXT: vpermq {{.*#+}} ymm13 = ymm11[2,3,0,1]3278; AVX2-NEXT: vpblendd {{.*#+}} ymm11 = ymm11[0,1,2,3,4],ymm13[5],ymm11[6,7]3279; AVX2-NEXT: vpshufb %ymm10, %ymm11, %ymm103280; AVX2-NEXT: vpblendw {{.*#+}} ymm11 = ymm2[0],ymm1[1],ymm2[2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]3281; AVX2-NEXT: vmovdqa %ymm2, %ymm153282; AVX2-NEXT: vextracti128 $1, %ymm11, %xmm133283; AVX2-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1],xmm13[2,3],xmm11[4,5,6],xmm13[7]3284; AVX2-NEXT: vmovdqa 304(%rdi), %xmm133285; AVX2-NEXT: vpshufb %xmm14, %xmm11, %xmm113286; AVX2-NEXT: vmovdqa 288(%rdi), %xmm143287; AVX2-NEXT: vpblendvb %ymm9, %ymm11, %ymm10, %ymm93288; AVX2-NEXT: vpblendd {{.*#+}} xmm10 = xmm14[0],xmm13[1],xmm14[2,3]3289; AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [6,7,2,3,4,5,6,7,6,7,2,3,12,13,6,7]3290; AVX2-NEXT: vpshufb %xmm1, %xmm10, %xmm103291; AVX2-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm103292; AVX2-NEXT: vpblendw {{.*#+}} ymm10 = ymm8[0,1,2,3,4],ymm10[5,6,7],ymm8[8,9,10,11,12],ymm10[13,14,15]3293; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm8[0,1,2,3],ymm10[4,5,6,7]3294; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3295; AVX2-NEXT: vmovdqa 144(%rdi), %xmm113296; AVX2-NEXT: vmovdqa 128(%rdi), %xmm103297; AVX2-NEXT: vpblendd {{.*#+}} xmm8 = xmm10[0],xmm11[1],xmm10[2,3]3298; AVX2-NEXT: vpshufb %xmm1, %xmm8, %xmm13299; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm13300; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm12[0,1,2,3,4],ymm1[5,6,7],ymm12[8,9,10,11,12],ymm1[13,14,15]3301; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm12[0,1,2,3],ymm1[4,5,6,7]3302; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3303; AVX2-NEXT: vpblendd {{.*#+}} xmm1 = xmm14[0,1],xmm13[2],xmm14[3]3304; AVX2-NEXT: vmovdqa {{.*#+}} xmm8 = [0,1,2,3,4,5,6,7,8,9,4,5,14,15,8,9]3305; AVX2-NEXT: vpshufb %xmm8, %xmm1, %xmm13306; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm13307; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15]3308; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]3309; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3310; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm10[0,1],xmm11[2],xmm10[3]3311; AVX2-NEXT: vpshufb %xmm8, %xmm0, %xmm03312; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm03313; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm9[0,1,2,3,4],ymm0[5,6,7],ymm9[8,9,10,11,12],ymm0[13,14,15]3314; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm9[0,1,2,3],ymm0[4,5,6,7]3315; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3316; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm7[0],ymm6[1],ymm7[2,3],ymm6[4],ymm7[5],ymm6[6],ymm7[7,8],ymm6[9],ymm7[10,11],ymm6[12],ymm7[13],ymm6[14],ymm7[15]3317; AVX2-NEXT: vmovdqa %ymm6, %ymm93318; AVX2-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3319; AVX2-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3320; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]3321; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6],ymm0[7]3322; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload3323; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm4[0,1],ymm2[2],ymm4[3],ymm2[4],ymm4[5,6],ymm2[7],ymm4[8,9],ymm2[10],ymm4[11],ymm2[12],ymm4[13,14],ymm2[15]3324; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm83325; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm8[3,4],xmm1[5,6,7]3326; AVX2-NEXT: vmovdqa {{.*#+}} ymm8 = [u,u,u,u,u,u,u,u,u,u,u,u,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]3327; AVX2-NEXT: vpshufb %ymm8, %ymm0, %ymm03328; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]3329; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7]3330; AVX2-NEXT: vpblendd {{.*#+}} xmm1 = xmm13[0],xmm14[1],xmm13[2,3]3331; AVX2-NEXT: vmovdqa {{.*#+}} xmm12 = [0,1,6,7,4,5,6,7,8,9,6,7,0,1,10,11]3332; AVX2-NEXT: vpshufb %xmm12, %xmm1, %xmm13333; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm13334; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15]3335; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]3336; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3337; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0],ymm5[1],ymm3[2,3],ymm5[4],ymm3[5],ymm5[6],ymm3[7,8],ymm5[9],ymm3[10,11],ymm5[12],ymm3[13],ymm5[14],ymm3[15]3338; AVX2-NEXT: vmovdqa %ymm5, %ymm63339; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3340; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]3341; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6],ymm0[7]3342; AVX2-NEXT: vpshufb %ymm8, %ymm0, %ymm03343; AVX2-NEXT: vmovdqu (%rsp), %ymm5 # 32-byte Reload3344; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm15[0,1],ymm5[2],ymm15[3],ymm5[4],ymm15[5,6],ymm5[7],ymm15[8,9],ymm5[10],ymm15[11],ymm5[12],ymm15[13,14],ymm5[15]3345; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm83346; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm8[3,4],xmm1[5,6,7]3347; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]3348; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7]3349; AVX2-NEXT: vpblendd {{.*#+}} xmm1 = xmm11[0],xmm10[1],xmm11[2,3]3350; AVX2-NEXT: vpshufb %xmm12, %xmm1, %xmm13351; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm13352; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15]3353; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]3354; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3355; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm9[0],ymm7[1],ymm9[2],ymm7[3],ymm9[4,5],ymm7[6],ymm9[7,8],ymm7[9],ymm9[10],ymm7[11],ymm9[12,13],ymm7[14],ymm9[15]3356; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]3357; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7]3358; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm4[1,2],ymm2[3],ymm4[4],ymm2[5],ymm4[6,7],ymm2[8],ymm4[9,10],ymm2[11],ymm4[12],ymm2[13],ymm4[14,15]3359; AVX2-NEXT: vmovdqa %ymm4, %ymm73360; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm83361; AVX2-NEXT: vpblendd {{.*#+}} xmm1 = xmm8[0],xmm1[1],xmm8[2],xmm1[3]3362; AVX2-NEXT: vmovdqa {{.*#+}} ymm12 = [u,u,u,u,u,u,u,u,u,u,u,u,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]3363; AVX2-NEXT: vpshufb %ymm12, %ymm0, %ymm03364; AVX2-NEXT: vmovdqa {{.*#+}} xmm8 = [6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]3365; AVX2-NEXT: vpshufb %xmm8, %xmm1, %xmm13366; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7]3367; AVX2-NEXT: vpblendd {{.*#+}} xmm1 = xmm13[0,1],xmm14[2],xmm13[3]3368; AVX2-NEXT: vmovdqa {{.*#+}} xmm4 = [0,1,2,3,4,5,6,7,8,9,8,9,2,3,12,13]3369; AVX2-NEXT: vpshufb %xmm4, %xmm1, %xmm13370; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm13371; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15]3372; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]3373; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3374; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm6[0],ymm3[1],ymm6[2],ymm3[3],ymm6[4,5],ymm3[6],ymm6[7,8],ymm3[9],ymm6[10],ymm3[11],ymm6[12,13],ymm3[14],ymm6[15]3375; AVX2-NEXT: vpermq {{.*#+}} ymm9 = ymm0[2,3,0,1]3376; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm9[4],ymm0[5],ymm9[6],ymm0[7]3377; AVX2-NEXT: vpshufb %ymm12, %ymm0, %ymm03378; AVX2-NEXT: vpblendw {{.*#+}} ymm9 = ymm5[0],ymm15[1,2],ymm5[3],ymm15[4],ymm5[5],ymm15[6,7],ymm5[8],ymm15[9,10],ymm5[11],ymm15[12],ymm5[13],ymm15[14,15]3379; AVX2-NEXT: vmovdqa %ymm5, %ymm13380; AVX2-NEXT: vextracti128 $1, %ymm9, %xmm123381; AVX2-NEXT: vpblendd {{.*#+}} xmm9 = xmm12[0],xmm9[1],xmm12[2],xmm9[3]3382; AVX2-NEXT: vpshufb %xmm8, %xmm9, %xmm83383; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm8[0,1,2],ymm0[3,4,5,6,7]3384; AVX2-NEXT: vpblendd {{.*#+}} xmm8 = xmm11[0,1],xmm10[2],xmm11[3]3385; AVX2-NEXT: vpshufb %xmm4, %xmm8, %xmm23386; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm23387; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm0[0,1,2,3,4],ymm2[5,6,7],ymm0[8,9,10,11,12],ymm2[13,14,15]3388; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5,6,7]3389; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload3390; AVX2-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm2 # 32-byte Folded Reload3391; AVX2-NEXT: # ymm2 = ymm2[0,1],mem[2],ymm2[3],mem[4],ymm2[5,6],mem[7],ymm2[8,9],mem[10],ymm2[11],mem[12],ymm2[13,14],mem[15]3392; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm2[2,3,0,1]3393; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm6[4],ymm2[5,6],ymm6[7]3394; AVX2-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7, %ymm4 # 32-byte Folded Reload3395; AVX2-NEXT: # ymm4 = ymm7[0],mem[1],ymm7[2,3],mem[4],ymm7[5],mem[6],ymm7[7,8],mem[9],ymm7[10,11],mem[12],ymm7[13],mem[14],ymm7[15]3396; AVX2-NEXT: vextracti128 $1, %ymm4, %xmm53397; AVX2-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0,1,2],xmm4[3,4],xmm5[5,6,7]3398; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm5 = [24,25,18,19,28,29,22,23,0,0,0,0,4,5,14,15,24,25,18,19,28,29,22,23,0,0,0,0,4,5,14,15]3399; AVX2-NEXT: # ymm5 = mem[0,1,0,1]3400; AVX2-NEXT: vpshufb %ymm5, %ymm2, %ymm23401; AVX2-NEXT: vmovdqa {{.*#+}} xmm6 = [8,9,2,3,12,13,6,7,0,1,10,11,0,1,6,7]3402; AVX2-NEXT: vpshufb %xmm6, %xmm4, %xmm43403; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm4[0,1,2],ymm2[3,4,5,6,7]3404; AVX2-NEXT: vpshufd {{.*#+}} xmm4 = xmm13[3,1,2,3]3405; AVX2-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,1,2,1,4,5,6,7]3406; AVX2-NEXT: vpshufd {{.*#+}} xmm7 = xmm14[0,2,2,3]3407; AVX2-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[0,1,0,3,4,5,6,7]3408; AVX2-NEXT: vpunpckldq {{.*#+}} xmm4 = xmm7[0],xmm4[0],xmm7[1],xmm4[1]3409; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm43410; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6,7]3411; AVX2-NEXT: vpblendw $107, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm3 # 32-byte Folded Reload3412; AVX2-NEXT: # ymm3 = mem[0,1],ymm3[2],mem[3],ymm3[4],mem[5,6],ymm3[7],mem[8,9],ymm3[10],mem[11],ymm3[12],mem[13,14],ymm3[15]3413; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm3[2,3,0,1]3414; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4],ymm3[5,6],ymm4[7]3415; AVX2-NEXT: vpshufb %ymm5, %ymm3, %ymm33416; AVX2-NEXT: vpblendw {{.*#+}} ymm4 = ymm15[0],ymm1[1],ymm15[2,3],ymm1[4],ymm15[5],ymm1[6],ymm15[7,8],ymm1[9],ymm15[10,11],ymm1[12],ymm15[13],ymm1[14],ymm15[15]3417; AVX2-NEXT: vextracti128 $1, %ymm4, %xmm53418; AVX2-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0,1,2],xmm4[3,4],xmm5[5,6,7]3419; AVX2-NEXT: vpshufb %xmm6, %xmm4, %xmm43420; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2],ymm3[3,4,5,6,7]3421; AVX2-NEXT: vpshufd {{.*#+}} xmm4 = xmm11[3,1,2,3]3422; AVX2-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,1,2,1,4,5,6,7]3423; AVX2-NEXT: vpshufd {{.*#+}} xmm5 = xmm10[0,2,2,3]3424; AVX2-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,0,3,4,5,6,7]3425; AVX2-NEXT: vpunpckldq {{.*#+}} xmm4 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]3426; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm43427; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm4[6,7]3428; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload3429; AVX2-NEXT: vmovaps %ymm4, 32(%rsi)3430; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload3431; AVX2-NEXT: vmovaps %ymm1, (%rsi)3432; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload3433; AVX2-NEXT: vmovaps %ymm1, 32(%rdx)3434; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload3435; AVX2-NEXT: vmovaps %ymm1, (%rdx)3436; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload3437; AVX2-NEXT: vmovaps %ymm1, 32(%rcx)3438; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload3439; AVX2-NEXT: vmovaps %ymm1, (%rcx)3440; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload3441; AVX2-NEXT: vmovaps %ymm1, 32(%r8)3442; AVX2-NEXT: vmovdqa %ymm0, (%r8)3443; AVX2-NEXT: vmovdqa %ymm2, 32(%r9)3444; AVX2-NEXT: vmovdqa %ymm3, (%r9)3445; AVX2-NEXT: addq $264, %rsp # imm = 0x1083446; AVX2-NEXT: vzeroupper3447; AVX2-NEXT: retq3448;3449; AVX2-FP-LABEL: load_i16_stride5_vf32:3450; AVX2-FP: # %bb.0:3451; AVX2-FP-NEXT: subq $264, %rsp # imm = 0x1083452; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm133453; AVX2-FP-NEXT: vmovdqa 32(%rdi), %ymm63454; AVX2-FP-NEXT: vmovdqa 64(%rdi), %ymm73455; AVX2-FP-NEXT: vmovdqa 96(%rdi), %ymm103456; AVX2-FP-NEXT: vmovdqa 192(%rdi), %ymm143457; AVX2-FP-NEXT: vmovdqa 160(%rdi), %ymm33458; AVX2-FP-NEXT: vmovdqa 224(%rdi), %ymm43459; AVX2-FP-NEXT: vmovdqa 256(%rdi), %ymm53460; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm4[0],ymm5[1,2],ymm4[3],ymm5[4],ymm4[5],ymm5[6,7],ymm4[8],ymm5[9,10],ymm4[11],ymm5[12],ymm4[13],ymm5[14,15]3461; AVX2-FP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3462; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]3463; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm1[5],ymm0[6],ymm1[7]3464; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm1 = [0,1,10,11,4,5,14,15,8,9,10,11,4,5,6,7,16,17,26,27,20,21,30,31,24,25,26,27,20,21,22,23]3465; AVX2-FP-NEXT: vpshufb %ymm1, %ymm0, %ymm03466; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm3[0],ymm14[1],ymm3[2,3],ymm14[4],ymm3[5],ymm14[6],ymm3[7,8],ymm14[9],ymm3[10,11],ymm14[12],ymm3[13],ymm14[14],ymm3[15]3467; AVX2-FP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3468; AVX2-FP-NEXT: vextracti128 $1, %ymm8, %xmm93469; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0],xmm9[1,2,3],xmm8[4,5],xmm9[6,7]3470; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm9 = [0,1,10,11,4,5,14,15,8,9,2,3,12,13,6,7]3471; AVX2-FP-NEXT: vpshufb %xmm9, %xmm8, %xmm83472; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} xmm11 = [65535,65535,65535,65535,65535,65535,65535,0]3473; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm8, %ymm0, %ymm03474; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm7[0],ymm10[1,2],ymm7[3],ymm10[4],ymm7[5],ymm10[6,7],ymm7[8],ymm10[9,10],ymm7[11],ymm10[12],ymm7[13],ymm10[14,15]3475; AVX2-FP-NEXT: vpermq {{.*#+}} ymm12 = ymm8[2,3,0,1]3476; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm8 = ymm8[0,1,2,3,4],ymm12[5],ymm8[6],ymm12[7]3477; AVX2-FP-NEXT: vpshufb %ymm1, %ymm8, %ymm13478; AVX2-FP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3479; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm13[0],ymm6[1],ymm13[2,3],ymm6[4],ymm13[5],ymm6[6],ymm13[7,8],ymm6[9],ymm13[10,11],ymm6[12],ymm13[13],ymm6[14],ymm13[15]3480; AVX2-FP-NEXT: vextracti128 $1, %ymm8, %xmm123481; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0],xmm12[1,2,3],xmm8[4,5],xmm12[6,7]3482; AVX2-FP-NEXT: vpshufb %xmm9, %xmm8, %xmm83483; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm8, %ymm1, %ymm123484; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13],ymm4[14],ymm5[15]3485; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm1[2,3,0,1]3486; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4],ymm8[5],ymm1[6,7]3487; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm8 = [2,3,12,13,6,7,0,1,10,11,6,7,8,9,8,9,18,19,28,29,22,23,16,17,26,27,22,23,24,25,24,25]3488; AVX2-FP-NEXT: vpshufb %ymm8, %ymm1, %ymm13489; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm14[0],ymm3[1],ymm14[2],ymm3[3],ymm14[4,5],ymm3[6],ymm14[7,8],ymm3[9],ymm14[10],ymm3[11],ymm14[12,13],ymm3[14],ymm14[15]3490; AVX2-FP-NEXT: vmovdqa %ymm14, %ymm53491; AVX2-FP-NEXT: vextracti128 $1, %ymm9, %xmm143492; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0,1],xmm14[2,3],xmm9[4,5,6],xmm14[7]3493; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm14 = [2,3,12,13,6,7,0,1,10,11,4,5,14,15,10,11]3494; AVX2-FP-NEXT: vpshufb %xmm14, %xmm9, %xmm93495; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm9, %ymm1, %ymm13496; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0],ymm7[1],ymm10[2,3],ymm7[4],ymm10[5],ymm7[6],ymm10[7,8],ymm7[9],ymm10[10,11],ymm7[12],ymm10[13],ymm7[14],ymm10[15]3497; AVX2-FP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3498; AVX2-FP-NEXT: vpermq {{.*#+}} ymm15 = ymm9[2,3,0,1]3499; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm9 = ymm9[0,1,2,3,4],ymm15[5],ymm9[6,7]3500; AVX2-FP-NEXT: vpshufb %ymm8, %ymm9, %ymm153501; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm6[0],ymm13[1],ymm6[2],ymm13[3],ymm6[4,5],ymm13[6],ymm6[7,8],ymm13[9],ymm6[10],ymm13[11],ymm6[12,13],ymm13[14],ymm6[15]3502; AVX2-FP-NEXT: vextracti128 $1, %ymm8, %xmm93503; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm9 = xmm8[0,1],xmm9[2,3],xmm8[4,5,6],xmm9[7]3504; AVX2-FP-NEXT: vmovdqa 304(%rdi), %xmm83505; AVX2-FP-NEXT: vpshufb %xmm14, %xmm9, %xmm143506; AVX2-FP-NEXT: vmovdqa 288(%rdi), %xmm93507; AVX2-FP-NEXT: vpblendvb %ymm11, %ymm14, %ymm15, %ymm113508; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm14 = xmm9[0],xmm8[1],xmm9[2,3]3509; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm2 = [6,7,2,3,4,5,6,7,6,7,2,3,12,13,6,7]3510; AVX2-FP-NEXT: vpshufb %xmm2, %xmm14, %xmm143511; AVX2-FP-NEXT: vinserti128 $1, %xmm14, %ymm0, %ymm143512; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm14 = ymm0[0,1,2,3,4],ymm14[5,6,7],ymm0[8,9,10,11,12],ymm14[13,14,15]3513; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm14[4,5,6,7]3514; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3515; AVX2-FP-NEXT: vmovdqa 144(%rdi), %xmm63516; AVX2-FP-NEXT: vmovdqa 128(%rdi), %xmm153517; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm14 = xmm15[0],xmm6[1],xmm15[2,3]3518; AVX2-FP-NEXT: vpshufb %xmm2, %xmm14, %xmm23519; AVX2-FP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm23520; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm12[0,1,2,3,4],ymm2[5,6,7],ymm12[8,9,10,11,12],ymm2[13,14,15]3521; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm12[0,1,2,3],ymm2[4,5,6,7]3522; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3523; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm2 = xmm9[0,1],xmm8[2],xmm9[3]3524; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm12 = [0,1,2,3,4,5,6,7,8,9,4,5,14,15,8,9]3525; AVX2-FP-NEXT: vpshufb %xmm12, %xmm2, %xmm23526; AVX2-FP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm23527; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm1[0,1,2,3,4],ymm2[5,6,7],ymm1[8,9,10,11,12],ymm2[13,14,15]3528; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm2[4,5,6,7]3529; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3530; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm1 = xmm15[0,1],xmm6[2],xmm15[3]3531; AVX2-FP-NEXT: vpshufb %xmm12, %xmm1, %xmm13532; AVX2-FP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm13533; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm11[0,1,2,3,4],ymm1[5,6,7],ymm11[8,9,10,11,12],ymm1[13,14,15]3534; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm11[0,1,2,3],ymm1[4,5,6,7]3535; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3536; AVX2-FP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3537; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload3538; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm4[0],ymm3[1],ymm4[2,3],ymm3[4],ymm4[5],ymm3[6],ymm4[7,8],ymm3[9],ymm4[10,11],ymm3[12],ymm4[13],ymm3[14],ymm4[15]3539; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm1[2,3,0,1]3540; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm2[6],ymm1[7]3541; AVX2-FP-NEXT: vmovdqu %ymm5, (%rsp) # 32-byte Spill3542; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3543; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0,1],ymm0[2],ymm5[3],ymm0[4],ymm5[5,6],ymm0[7],ymm5[8,9],ymm0[10],ymm5[11],ymm0[12],ymm5[13,14],ymm0[15]3544; AVX2-FP-NEXT: vextracti128 $1, %ymm2, %xmm113545; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm11[3,4],xmm2[5,6,7]3546; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm11 = [u,u,u,u,u,u,u,u,u,u,u,u,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]3547; AVX2-FP-NEXT: vpshufb %ymm11, %ymm1, %ymm13548; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm12 = [4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]3549; AVX2-FP-NEXT: vpshufb %xmm12, %xmm2, %xmm23550; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3,4,5,6,7]3551; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm2 = xmm8[0],xmm9[1],xmm8[2,3]3552; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,6,7,4,5,6,7,8,9,6,7,0,1,10,11]3553; AVX2-FP-NEXT: vpshufb %xmm14, %xmm2, %xmm23554; AVX2-FP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm23555; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm1[0,1,2,3,4],ymm2[5,6,7],ymm1[8,9,10,11,12],ymm2[13,14,15]3556; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]3557; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3558; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm7[0],ymm10[1],ymm7[2,3],ymm10[4],ymm7[5],ymm10[6],ymm7[7,8],ymm10[9],ymm7[10,11],ymm10[12],ymm7[13],ymm10[14],ymm7[15]3559; AVX2-FP-NEXT: vmovdqa %ymm7, %ymm103560; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm1[2,3,0,1]3561; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm2[6],ymm1[7]3562; AVX2-FP-NEXT: vpshufb %ymm11, %ymm1, %ymm13563; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload3564; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm7[0,1],ymm13[2],ymm7[3],ymm13[4],ymm7[5,6],ymm13[7],ymm7[8,9],ymm13[10],ymm7[11],ymm13[12],ymm7[13,14],ymm13[15]3565; AVX2-FP-NEXT: vextracti128 $1, %ymm2, %xmm113566; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm11[3,4],xmm2[5,6,7]3567; AVX2-FP-NEXT: vpshufb %xmm12, %xmm2, %xmm23568; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3,4,5,6,7]3569; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm2 = xmm6[0],xmm15[1],xmm6[2,3]3570; AVX2-FP-NEXT: vpshufb %xmm14, %xmm2, %xmm23571; AVX2-FP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm23572; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm1[0,1,2,3,4],ymm2[5,6,7],ymm1[8,9,10,11,12],ymm2[13,14,15]3573; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]3574; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3575; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm3[0],ymm4[1],ymm3[2],ymm4[3],ymm3[4,5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10],ymm4[11],ymm3[12,13],ymm4[14],ymm3[15]3576; AVX2-FP-NEXT: vpermq {{.*#+}} ymm2 = ymm1[2,3,0,1]3577; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7]3578; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm0[0],ymm5[1,2],ymm0[3],ymm5[4],ymm0[5],ymm5[6,7],ymm0[8],ymm5[9,10],ymm0[11],ymm5[12],ymm0[13],ymm5[14,15]3579; AVX2-FP-NEXT: vextracti128 $1, %ymm2, %xmm113580; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm2 = xmm11[0],xmm2[1],xmm11[2],xmm2[3]3581; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm11 = [u,u,u,u,u,u,u,u,u,u,u,u,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]3582; AVX2-FP-NEXT: vpshufb %ymm11, %ymm1, %ymm13583; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm12 = [6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]3584; AVX2-FP-NEXT: vpshufb %xmm12, %xmm2, %xmm23585; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3,4,5,6,7]3586; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm2 = xmm8[0,1],xmm9[2],xmm8[3]3587; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,2,3,4,5,6,7,8,9,8,9,2,3,12,13]3588; AVX2-FP-NEXT: vpshufb %xmm3, %xmm2, %xmm23589; AVX2-FP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm23590; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm1[0,1,2,3,4],ymm2[5,6,7],ymm1[8,9,10,11,12],ymm2[13,14,15]3591; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm1[0,1,2,3],ymm2[4,5,6,7]3592; AVX2-FP-NEXT: vmovdqa %ymm10, %ymm53593; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload3594; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm10[0],ymm5[1],ymm10[2],ymm5[3],ymm10[4,5],ymm5[6],ymm10[7,8],ymm5[9],ymm10[10],ymm5[11],ymm10[12,13],ymm5[14],ymm10[15]3595; AVX2-FP-NEXT: vpermq {{.*#+}} ymm14 = ymm1[2,3,0,1]3596; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm14[4],ymm1[5],ymm14[6],ymm1[7]3597; AVX2-FP-NEXT: vpshufb %ymm11, %ymm1, %ymm13598; AVX2-FP-NEXT: vmovdqa %ymm7, %ymm43599; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm11 = ymm13[0],ymm7[1,2],ymm13[3],ymm7[4],ymm13[5],ymm7[6,7],ymm13[8],ymm7[9,10],ymm13[11],ymm7[12],ymm13[13],ymm7[14,15]3600; AVX2-FP-NEXT: vextracti128 $1, %ymm11, %xmm143601; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm11 = xmm14[0],xmm11[1],xmm14[2],xmm11[3]3602; AVX2-FP-NEXT: vpshufb %xmm12, %xmm11, %xmm113603; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm11[0,1,2],ymm1[3,4,5,6,7]3604; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm11 = xmm6[0,1],xmm15[2],xmm6[3]3605; AVX2-FP-NEXT: vpshufb %xmm3, %xmm11, %xmm33606; AVX2-FP-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm33607; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm1[0,1,2,3,4],ymm3[5,6,7],ymm1[8,9,10,11,12],ymm3[13,14,15]3608; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm3[4,5,6,7]3609; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm11 = [12,13,14,15,4,5,14,15,8,9,10,11,12,13,14,15]3610; AVX2-FP-NEXT: vpshufb %xmm11, %xmm6, %xmm33611; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm0 = [0,1,2,3,0,1,10,11,8,9,10,11,12,13,14,15]3612; AVX2-FP-NEXT: vpshufb %xmm0, %xmm15, %xmm123613; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm12[0],xmm3[0],xmm12[1],xmm3[1]3614; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm6 = ymm10[0,1],ymm5[2],ymm10[3],ymm5[4],ymm10[5,6],ymm5[7],ymm10[8,9],ymm5[10],ymm10[11],ymm5[12],ymm10[13,14],ymm5[15]3615; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm6[2,3,0,1]3616; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm7[4],ymm6[5,6],ymm7[7]3617; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm13[1],ymm4[2,3],ymm13[4],ymm4[5],ymm13[6],ymm4[7,8],ymm13[9],ymm4[10,11],ymm13[12],ymm4[13],ymm13[14],ymm4[15]3618; AVX2-FP-NEXT: vextracti128 $1, %ymm4, %xmm53619; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0,1,2],xmm4[3,4],xmm5[5,6,7]3620; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm5 = [24,25,18,19,28,29,22,23,0,0,0,0,4,5,14,15,24,25,18,19,28,29,22,23,0,0,0,0,4,5,14,15]3621; AVX2-FP-NEXT: # ymm5 = mem[0,1,0,1]3622; AVX2-FP-NEXT: vpshufb %ymm5, %ymm6, %ymm63623; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm7 = [8,9,2,3,12,13,6,7,0,1,10,11,0,1,6,7]3624; AVX2-FP-NEXT: vpshufb %xmm7, %xmm4, %xmm43625; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2],ymm6[3,4,5,6,7]3626; AVX2-FP-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm33627; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3,4,5],ymm3[6,7]3628; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload3629; AVX2-FP-NEXT: vpblendw $107, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4, %ymm4 # 32-byte Folded Reload3630; AVX2-FP-NEXT: # ymm4 = mem[0,1],ymm4[2],mem[3],ymm4[4],mem[5,6],ymm4[7],mem[8,9],ymm4[10],mem[11],ymm4[12],mem[13,14],ymm4[15]3631; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm4[2,3,0,1]3632; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm6[4],ymm4[5,6],ymm6[7]3633; AVX2-FP-NEXT: vpshufb %ymm5, %ymm4, %ymm43634; AVX2-FP-NEXT: vmovdqu (%rsp), %ymm5 # 32-byte Reload3635; AVX2-FP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5, %ymm5 # 32-byte Folded Reload3636; AVX2-FP-NEXT: # ymm5 = ymm5[0],mem[1],ymm5[2,3],mem[4],ymm5[5],mem[6],ymm5[7,8],mem[9],ymm5[10,11],mem[12],ymm5[13],mem[14],ymm5[15]3637; AVX2-FP-NEXT: vextracti128 $1, %ymm5, %xmm63638; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm5 = xmm6[0,1,2],xmm5[3,4],xmm6[5,6,7]3639; AVX2-FP-NEXT: vpshufb %xmm7, %xmm5, %xmm53640; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm4 = ymm5[0,1,2],ymm4[3,4,5,6,7]3641; AVX2-FP-NEXT: vpshufb %xmm11, %xmm8, %xmm53642; AVX2-FP-NEXT: vpshufb %xmm0, %xmm9, %xmm03643; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1]3644; AVX2-FP-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm03645; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm4[0,1,2,3,4,5],ymm0[6,7]3646; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload3647; AVX2-FP-NEXT: vmovaps %ymm4, 32(%rsi)3648; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload3649; AVX2-FP-NEXT: vmovaps %ymm4, (%rsi)3650; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload3651; AVX2-FP-NEXT: vmovaps %ymm4, 32(%rdx)3652; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload3653; AVX2-FP-NEXT: vmovaps %ymm4, (%rdx)3654; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload3655; AVX2-FP-NEXT: vmovaps %ymm4, 32(%rcx)3656; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload3657; AVX2-FP-NEXT: vmovaps %ymm4, (%rcx)3658; AVX2-FP-NEXT: vmovdqa %ymm2, 32(%r8)3659; AVX2-FP-NEXT: vmovdqa %ymm1, (%r8)3660; AVX2-FP-NEXT: vmovdqa %ymm0, 32(%r9)3661; AVX2-FP-NEXT: vmovdqa %ymm3, (%r9)3662; AVX2-FP-NEXT: addq $264, %rsp # imm = 0x1083663; AVX2-FP-NEXT: vzeroupper3664; AVX2-FP-NEXT: retq3665;3666; AVX2-FCP-LABEL: load_i16_stride5_vf32:3667; AVX2-FCP: # %bb.0:3668; AVX2-FCP-NEXT: subq $296, %rsp # imm = 0x1283669; AVX2-FCP-NEXT: vmovdqa 224(%rdi), %ymm153670; AVX2-FCP-NEXT: vmovdqa 256(%rdi), %ymm13671; AVX2-FCP-NEXT: vmovdqa 192(%rdi), %ymm33672; AVX2-FCP-NEXT: vmovdqa 160(%rdi), %ymm143673; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm43674; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %ymm53675; AVX2-FCP-NEXT: vmovdqa 64(%rdi), %ymm63676; AVX2-FCP-NEXT: vmovdqa 96(%rdi), %ymm73677; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm6[0],ymm7[1,2],ymm6[3],ymm7[4],ymm6[5],ymm7[6,7],ymm6[8],ymm7[9,10],ymm6[11],ymm7[12],ymm6[13],ymm7[14,15]3678; AVX2-FCP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3679; AVX2-FCP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3680; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm10 = [1,3,0,2,4,6,1,3]3681; AVX2-FCP-NEXT: vpermd %ymm8, %ymm10, %ymm83682; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm11 = [0,1,6,7,8,9,14,15,4,5,14,15,4,5,2,3,16,17,22,23,24,25,30,31,20,21,30,31,20,21,18,19]3683; AVX2-FCP-NEXT: vpshufb %ymm11, %ymm8, %ymm83684; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm4[0],ymm5[1],ymm4[2,3],ymm5[4],ymm4[5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10,11],ymm5[12],ymm4[13],ymm5[14],ymm4[15]3685; AVX2-FCP-NEXT: vextracti128 $1, %ymm9, %xmm123686; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0],xmm12[1,2,3],xmm9[4,5],xmm12[6,7]3687; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm12 = [0,1,10,11,4,5,14,15,8,9,2,3,12,13,6,7]3688; AVX2-FCP-NEXT: vpshufb %xmm12, %xmm9, %xmm133689; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} xmm9 = [65535,65535,65535,65535,65535,65535,65535,0]3690; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm13, %ymm8, %ymm83691; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm14[0],ymm3[1],ymm14[2,3],ymm3[4],ymm14[5],ymm3[6],ymm14[7,8],ymm3[9],ymm14[10,11],ymm3[12],ymm14[13],ymm3[14],ymm14[15]3692; AVX2-FCP-NEXT: vmovdqa %ymm14, %ymm03693; AVX2-FCP-NEXT: vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3694; AVX2-FCP-NEXT: vextracti128 $1, %ymm13, %xmm143695; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0],xmm14[1,2,3],xmm13[4,5],xmm14[6,7]3696; AVX2-FCP-NEXT: vpshufb %xmm12, %xmm13, %xmm123697; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm15[0],ymm1[1,2],ymm15[3],ymm1[4],ymm15[5],ymm1[6,7],ymm15[8],ymm1[9,10],ymm15[11],ymm1[12],ymm15[13],ymm1[14,15]3698; AVX2-FCP-NEXT: vmovdqu %ymm1, (%rsp) # 32-byte Spill3699; AVX2-FCP-NEXT: vmovdqa %ymm15, %ymm23700; AVX2-FCP-NEXT: vpermd %ymm13, %ymm10, %ymm103701; AVX2-FCP-NEXT: vpshufb %ymm11, %ymm10, %ymm103702; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm12, %ymm10, %ymm113703; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm7[0],ymm6[1],ymm7[2,3],ymm6[4],ymm7[5],ymm6[6],ymm7[7,8],ymm6[9],ymm7[10,11],ymm6[12],ymm7[13],ymm6[14],ymm7[15]3704; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm12 = [2,0,0,0,4,7,1,6]3705; AVX2-FCP-NEXT: vpermd %ymm10, %ymm12, %ymm103706; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm14 = [2,3,4,5,10,11,0,1,14,15,2,3,12,13,0,1,18,19,20,21,26,27,16,17,30,31,18,19,28,29,16,17]3707; AVX2-FCP-NEXT: vpshufb %ymm14, %ymm10, %ymm103708; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm5[0],ymm4[1],ymm5[2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]3709; AVX2-FCP-NEXT: vmovdqa %ymm4, %ymm73710; AVX2-FCP-NEXT: vextracti128 $1, %ymm13, %xmm153711; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1],xmm15[2,3],xmm13[4,5,6],xmm15[7]3712; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm15 = [2,3,12,13,6,7,0,1,10,11,4,5,14,15,10,11]3713; AVX2-FCP-NEXT: vpshufb %xmm15, %xmm13, %xmm133714; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm13, %ymm10, %ymm133715; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm3[0],ymm0[1],ymm3[2],ymm0[3],ymm3[4,5],ymm0[6],ymm3[7,8],ymm0[9],ymm3[10],ymm0[11],ymm3[12,13],ymm0[14],ymm3[15]3716; AVX2-FCP-NEXT: vextracti128 $1, %ymm10, %xmm03717; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm10[0,1],xmm0[2,3],xmm10[4,5,6],xmm0[7]3718; AVX2-FCP-NEXT: vpshufb %xmm15, %xmm0, %xmm03719; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]3720; AVX2-FCP-NEXT: vmovdqa %ymm2, %ymm153721; AVX2-FCP-NEXT: vpermd %ymm10, %ymm12, %ymm103722; AVX2-FCP-NEXT: vmovdqa 128(%rdi), %ymm123723; AVX2-FCP-NEXT: vpshufb %ymm14, %ymm10, %ymm103724; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm14 = [0,3,1,3,0,3,5,7]3725; AVX2-FCP-NEXT: vpblendvb %ymm9, %ymm0, %ymm10, %ymm03726; AVX2-FCP-NEXT: vpermd %ymm12, %ymm14, %ymm93727; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm6 = [0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27]3728; AVX2-FCP-NEXT: vpshufb %ymm6, %ymm9, %ymm93729; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm9 = ymm8[0,1,2,3,4],ymm9[5,6,7],ymm8[8,9,10,11,12],ymm9[13,14,15]3730; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm8[0,1,2,3],ymm9[4,5,6,7]3731; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3732; AVX2-FCP-NEXT: vmovdqa 288(%rdi), %ymm103733; AVX2-FCP-NEXT: vpermd %ymm10, %ymm14, %ymm83734; AVX2-FCP-NEXT: vpshufb %ymm6, %ymm8, %ymm83735; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm11[0,1,2,3,4],ymm8[5,6,7],ymm11[8,9,10,11,12],ymm8[13,14,15]3736; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm11[0,1,2,3],ymm8[4,5,6,7]3737; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3738; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm8 = [1,3,2,3,1,3,6,7]3739; AVX2-FCP-NEXT: vpermd %ymm12, %ymm8, %ymm113740; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm2 = [0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25]3741; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm11, %ymm113742; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm13[0,1,2,3,4],ymm11[5,6,7],ymm13[8,9,10,11,12],ymm11[13,14,15]3743; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm13[0,1,2,3],ymm11[4,5,6,7]3744; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3745; AVX2-FCP-NEXT: vpermd %ymm10, %ymm8, %ymm83746; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm8, %ymm83747; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm0[0,1,2,3,4],ymm8[5,6,7],ymm0[8,9,10,11,12],ymm8[13,14,15]3748; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm8[4,5,6,7]3749; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3750; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm5[0,1],ymm4[2],ymm5[3],ymm4[4],ymm5[5,6],ymm4[7],ymm5[8,9],ymm4[10],ymm5[11],ymm4[12],ymm5[13,14],ymm4[15]3751; AVX2-FCP-NEXT: vmovdqa %ymm5, %ymm93752; AVX2-FCP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3753; AVX2-FCP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3754; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm83755; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm8[3,4],xmm0[5,6,7]3756; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload3757; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload3758; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13],ymm4[14],ymm5[15]3759; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm14 = [0,2,0,0,5,7,2,4]3760; AVX2-FCP-NEXT: vpermd %ymm8, %ymm14, %ymm83761; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm2 = [u,u,u,u,u,u,u,u,u,u,u,u,0,1,6,7,16,17,22,23,24,25,30,31,20,21,22,23,16,17,22,23]3762; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm8, %ymm83763; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm1 = [4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]3764; AVX2-FCP-NEXT: vpshufb %xmm1, %xmm0, %xmm03765; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2],ymm8[3,4,5,6,7]3766; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm8 = [1,4,6,0,1,4,6,0]3767; AVX2-FCP-NEXT: # ymm8 = mem[0,1,0,1]3768; AVX2-FCP-NEXT: vpermd %ymm12, %ymm8, %ymm113769; AVX2-FCP-NEXT: vpshufb %ymm6, %ymm11, %ymm113770; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm0[0,1,2,3,4],ymm11[5,6,7],ymm0[8,9,10,11,12],ymm11[13,14,15]3771; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm11[4,5,6,7]3772; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3773; AVX2-FCP-NEXT: vmovdqa %ymm3, %ymm63774; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3775; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm3[0,1],ymm0[2],ymm3[3],ymm0[4],ymm3[5,6],ymm0[7],ymm3[8,9],ymm0[10],ymm3[11],ymm0[12],ymm3[13,14],ymm0[15]3776; AVX2-FCP-NEXT: vextracti128 $1, %ymm11, %xmm133777; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2],xmm13[3,4],xmm11[5,6,7]3778; AVX2-FCP-NEXT: vpshufb %xmm1, %xmm11, %xmm13779; AVX2-FCP-NEXT: vmovdqu (%rsp), %ymm3 # 32-byte Reload3780; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm15[0],ymm3[1],ymm15[2,3],ymm3[4],ymm15[5],ymm3[6],ymm15[7,8],ymm3[9],ymm15[10,11],ymm3[12],ymm15[13],ymm3[14],ymm15[15]3781; AVX2-FCP-NEXT: vpermd %ymm11, %ymm14, %ymm113782; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm11, %ymm23783; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2],ymm2[3,4,5,6,7]3784; AVX2-FCP-NEXT: vpermd %ymm10, %ymm8, %ymm23785; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,26,27]3786; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm1[0,1,2,3,4],ymm2[5,6,7],ymm1[8,9,10,11,12],ymm2[13,14,15]3787; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]3788; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3789; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm7[0],ymm9[1,2],ymm7[3],ymm9[4],ymm7[5],ymm9[6,7],ymm7[8],ymm9[9,10],ymm7[11],ymm9[12],ymm7[13],ymm9[14,15]3790; AVX2-FCP-NEXT: vextracti128 $1, %ymm1, %xmm23791; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm1 = xmm2[0],xmm1[1],xmm2[2],xmm1[3]3792; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm5[1],ymm4[2],ymm5[3],ymm4[4,5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10],ymm5[11],ymm4[12,13],ymm5[14],ymm4[15]3793; AVX2-FCP-NEXT: vmovdqa %ymm4, %ymm73794; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm11 = [0,3,0,0,5,0,2,7]3795; AVX2-FCP-NEXT: vpermd %ymm2, %ymm11, %ymm23796; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm13 = [u,u,u,u,u,u,u,u,u,u,u,u,2,3,4,5,18,19,20,21,26,27,16,17,30,31,30,31,18,19,20,21]3797; AVX2-FCP-NEXT: vpshufb %ymm13, %ymm2, %ymm23798; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm14 = [6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]3799; AVX2-FCP-NEXT: vpshufb %xmm14, %xmm1, %xmm13800; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2],ymm2[3,4,5,6,7]3801; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm2 = [2,4,7,0,2,4,7,0]3802; AVX2-FCP-NEXT: # ymm2 = mem[0,1,0,1]3803; AVX2-FCP-NEXT: vpermd %ymm12, %ymm2, %ymm83804; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm4 = [0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25]3805; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm8, %ymm83806; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm1[0,1,2,3,4],ymm8[5,6,7],ymm1[8,9,10,11,12],ymm8[13,14,15]3807; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm8[4,5,6,7]3808; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3809; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0],ymm6[1,2],ymm0[3],ymm6[4],ymm0[5],ymm6[6,7],ymm0[8],ymm6[9,10],ymm0[11],ymm6[12],ymm0[13],ymm6[14,15]3810; AVX2-FCP-NEXT: vmovdqa %ymm6, %ymm83811; AVX2-FCP-NEXT: vextracti128 $1, %ymm1, %xmm03812; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]3813; AVX2-FCP-NEXT: vpshufb %xmm14, %xmm0, %xmm03814; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm3[0],ymm15[1],ymm3[2],ymm15[3],ymm3[4,5],ymm15[6],ymm3[7,8],ymm15[9],ymm3[10],ymm15[11],ymm3[12,13],ymm15[14],ymm3[15]3815; AVX2-FCP-NEXT: vmovdqa %ymm3, %ymm93816; AVX2-FCP-NEXT: vmovdqa %ymm15, %ymm143817; AVX2-FCP-NEXT: vpermd %ymm1, %ymm11, %ymm13818; AVX2-FCP-NEXT: vpshufb %ymm13, %ymm1, %ymm13819; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3,4,5,6,7]3820; AVX2-FCP-NEXT: vpermd %ymm10, %ymm2, %ymm13821; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm1, %ymm13822; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15]3823; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm15 = ymm0[0,1,2,3],ymm1[4,5,6,7]3824; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm7[0,1],ymm5[2],ymm7[3],ymm5[4],ymm7[5,6],ymm5[7],ymm7[8,9],ymm5[10],ymm7[11],ymm5[12],ymm7[13,14],ymm5[15]3825; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload3826; AVX2-FCP-NEXT: vpblendw $173, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload3827; AVX2-FCP-NEXT: # ymm1 = mem[0],ymm1[1],mem[2,3],ymm1[4],mem[5],ymm1[6],mem[7,8],ymm1[9],mem[10,11],ymm1[12],mem[13],ymm1[14],mem[15]3828; AVX2-FCP-NEXT: vextracti128 $1, %ymm1, %xmm23829; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2],xmm1[3,4],xmm2[5,6,7]3830; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [1,3,0,0,6,0,3,5]3831; AVX2-FCP-NEXT: vpermd %ymm0, %ymm2, %ymm03832; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [16,17,22,23,24,25,30,31,0,0,0,0,0,1,6,7,16,17,22,23,24,25,30,31,0,0,0,0,0,1,6,7]3833; AVX2-FCP-NEXT: # ymm4 = mem[0,1,0,1]3834; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm0, %ymm03835; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm5 = [8,9,2,3,12,13,6,7,0,1,10,11,0,1,6,7]3836; AVX2-FCP-NEXT: vpshufb %xmm5, %xmm1, %xmm13837; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7]3838; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [0,2,1,3,0,2,5,7]3839; AVX2-FCP-NEXT: vpermd %ymm12, %ymm1, %ymm63840; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm7 = [16,17,22,23,24,25,30,31,16,17,22,23,24,25,30,31,16,17,22,23,24,25,30,31,16,17,22,23,24,25,30,31]3841; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm6, %ymm63842; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm6[6,7]3843; AVX2-FCP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8, %ymm3 # 32-byte Folded Reload3844; AVX2-FCP-NEXT: # ymm3 = ymm8[0],mem[1],ymm8[2,3],mem[4],ymm8[5],mem[6],ymm8[7,8],mem[9],ymm8[10,11],mem[12],ymm8[13],mem[14],ymm8[15]3845; AVX2-FCP-NEXT: vextracti128 $1, %ymm3, %xmm63846; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm6[0,1,2],xmm3[3,4],xmm6[5,6,7]3847; AVX2-FCP-NEXT: vpshufb %xmm5, %xmm3, %xmm33848; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm9[0,1],ymm14[2],ymm9[3],ymm14[4],ymm9[5,6],ymm14[7],ymm9[8,9],ymm14[10],ymm9[11],ymm14[12],ymm9[13,14],ymm14[15]3849; AVX2-FCP-NEXT: vpermd %ymm5, %ymm2, %ymm23850; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm23851; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2],ymm2[3,4,5,6,7]3852; AVX2-FCP-NEXT: vpermd %ymm10, %ymm1, %ymm13853; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm1, %ymm13854; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3,4,5],ymm1[6,7]3855; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload3856; AVX2-FCP-NEXT: vmovaps %ymm2, 32(%rsi)3857; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload3858; AVX2-FCP-NEXT: vmovaps %ymm2, (%rsi)3859; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload3860; AVX2-FCP-NEXT: vmovaps %ymm2, 32(%rdx)3861; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload3862; AVX2-FCP-NEXT: vmovaps %ymm2, (%rdx)3863; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload3864; AVX2-FCP-NEXT: vmovaps %ymm2, 32(%rcx)3865; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload3866; AVX2-FCP-NEXT: vmovaps %ymm2, (%rcx)3867; AVX2-FCP-NEXT: vmovdqa %ymm15, 32(%r8)3868; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload3869; AVX2-FCP-NEXT: vmovaps %ymm2, (%r8)3870; AVX2-FCP-NEXT: vmovdqa %ymm1, 32(%r9)3871; AVX2-FCP-NEXT: vmovdqa %ymm0, (%r9)3872; AVX2-FCP-NEXT: addq $296, %rsp # imm = 0x1283873; AVX2-FCP-NEXT: vzeroupper3874; AVX2-FCP-NEXT: retq3875;3876; AVX512-LABEL: load_i16_stride5_vf32:3877; AVX512: # %bb.0:3878; AVX512-NEXT: vmovdqa 256(%rdi), %ymm03879; AVX512-NEXT: vmovdqa 288(%rdi), %ymm13880; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]3881; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm33882; AVX512-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm3[3,4],xmm2[5,6,7]3883; AVX512-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,4,5,14,15,8,9,2,3,12,13,6,7]3884; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm43885; AVX512-NEXT: vmovdqa 192(%rdi), %ymm33886; AVX512-NEXT: vmovdqa 224(%rdi), %ymm93887; AVX512-NEXT: vpblendw {{.*#+}} ymm5 = ymm9[0],ymm3[1],ymm9[2,3],ymm3[4],ymm9[5],ymm3[6],ymm9[7,8],ymm3[9],ymm9[10,11],ymm3[12],ymm9[13],ymm3[14],ymm9[15]3888; AVX512-NEXT: vextracti128 $1, %ymm5, %xmm63889; AVX512-NEXT: vpblendd {{.*#+}} ymm5 = ymm6[0],ymm5[1,2],ymm6[3],ymm5[4,5,6,7]3890; AVX512-NEXT: vmovdqa {{.*#+}} ymm7 = [u,u,u,u,u,u,u,u,8,9,2,3,12,13,6,7,16,17,26,27,26,27,30,31,24,25,18,19,28,29,22,23]3891; AVX512-NEXT: vpshufb %ymm7, %ymm5, %ymm53892; AVX512-NEXT: vmovdqa64 176(%rdi), %xmm203893; AVX512-NEXT: vpshufd {{.*#+}} xmm8 = xmm20[3,1,2,3]3894; AVX512-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[2,1,2,3,4,5,6,7]3895; AVX512-NEXT: vmovdqa 160(%rdi), %xmm63896; AVX512-NEXT: vpshufd {{.*#+}} xmm10 = xmm6[0,2,2,3]3897; AVX512-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[0,3,2,3,4,5,6,7]3898; AVX512-NEXT: vpunpckldq {{.*#+}} xmm8 = xmm10[0],xmm8[0],xmm10[1],xmm8[1]3899; AVX512-NEXT: vpblendd {{.*#+}} ymm5 = ymm8[0,1],ymm5[2,3,4,5,6,7]3900; AVX512-NEXT: vpblendd {{.*#+}} ymm14 = ymm5[0,1,2,3,4],ymm4[5,6,7]3901; AVX512-NEXT: vmovdqa (%rdi), %ymm83902; AVX512-NEXT: vmovdqa 32(%rdi), %ymm103903; AVX512-NEXT: vmovdqa 64(%rdi), %ymm43904; AVX512-NEXT: vmovdqa 96(%rdi), %ymm53905; AVX512-NEXT: vpblendw {{.*#+}} ymm11 = ymm4[0],ymm5[1,2],ymm4[3],ymm5[4],ymm4[5],ymm5[6,7],ymm4[8],ymm5[9,10],ymm4[11],ymm5[12],ymm4[13],ymm5[14,15]3906; AVX512-NEXT: vpermq {{.*#+}} ymm12 = ymm11[2,3,0,1]3907; AVX512-NEXT: vpblendd {{.*#+}} ymm11 = ymm11[0,1,2,3,4],ymm12[5],ymm11[6],ymm12[7]3908; AVX512-NEXT: vpshufb {{.*#+}} ymm11 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm11[6,7,16,17,26,27,20,21,30,31,24,25],zero,zero,zero,zero,zero,zero3909; AVX512-NEXT: vpblendw {{.*#+}} ymm12 = ymm8[0],ymm10[1],ymm8[2,3],ymm10[4],ymm8[5],ymm10[6],ymm8[7,8],ymm10[9],ymm8[10,11],ymm10[12],ymm8[13],ymm10[14],ymm8[15]3910; AVX512-NEXT: vextracti128 $1, %ymm12, %xmm133911; AVX512-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0],xmm13[1,2,3],xmm12[4,5],xmm13[6,7]3912; AVX512-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[0,1,10,11,4,5,14,15,8,9,2,3,12,13],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm12[u,u,u,u,u,u]3913; AVX512-NEXT: vpor %ymm11, %ymm12, %ymm153914; AVX512-NEXT: vmovdqa 144(%rdi), %xmm113915; AVX512-NEXT: vmovdqa 128(%rdi), %xmm123916; AVX512-NEXT: vpblendd {{.*#+}} xmm13 = xmm12[0],xmm11[1],xmm12[2,3]3917; AVX512-NEXT: vpshufb %xmm7, %xmm13, %xmm73918; AVX512-NEXT: vinserti128 $1, %xmm7, %ymm0, %ymm73919; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm18 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535]3920; AVX512-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 ^ (zmm18 & (zmm7 ^ zmm15))3921; AVX512-NEXT: vinserti64x4 $1, %ymm14, %zmm7, %zmm163922; AVX512-NEXT: vpblendw {{.*#+}} ymm7 = ymm3[0],ymm9[1],ymm3[2,3],ymm9[4],ymm3[5],ymm9[6],ymm3[7,8],ymm9[9],ymm3[10,11],ymm9[12],ymm3[13],ymm9[14],ymm3[15]3923; AVX512-NEXT: vextracti128 $1, %ymm7, %xmm143924; AVX512-NEXT: vpblendd {{.*#+}} ymm7 = ymm7[0],ymm14[1],ymm7[2],ymm14[3],ymm7[4,5,6,7]3925; AVX512-NEXT: vmovdqa {{.*#+}} ymm14 = [2,3,12,13,0,1,0,1,10,11,4,5,14,15,8,9,18,19,28,29,16,17,16,17,26,27,20,21,30,31,24,25]3926; AVX512-NEXT: vpshufb %ymm14, %ymm7, %ymm73927; AVX512-NEXT: vpsrlq $48, %xmm20, %xmm153928; AVX512-NEXT: vpshufd {{.*#+}} xmm13 = xmm6[0,3,2,3]3929; AVX512-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[1,2,2,3,4,5,6,7]3930; AVX512-NEXT: vpunpckldq {{.*#+}} xmm13 = xmm13[0],xmm15[0],xmm13[1],xmm15[1]3931; AVX512-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1,2],xmm7[3,4,5,6,7]3932; AVX512-NEXT: vpblendd {{.*#+}} ymm7 = ymm13[0,1,2,3],ymm7[4,5,6,7]3933; AVX512-NEXT: vmovdqa %ymm0, %ymm23934; AVX512-NEXT: vpblendw {{.*#+}} ymm13 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]3935; AVX512-NEXT: vextracti128 $1, %ymm13, %xmm153936; AVX512-NEXT: vpblendd {{.*#+}} xmm13 = xmm15[0],xmm13[1],xmm15[2],xmm13[3]3937; AVX512-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[u,u,u,u,6,7,0,1,10,11,4,5,14,15,8,9]3938; AVX512-NEXT: vinserti128 $1, %xmm13, %ymm0, %ymm133939; AVX512-NEXT: vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3,4],ymm13[5,6,7]3940; AVX512-NEXT: vpblendw {{.*#+}} ymm13 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13],ymm4[14],ymm5[15]3941; AVX512-NEXT: vpermq {{.*#+}} ymm15 = ymm13[2,3,0,1]3942; AVX512-NEXT: vpblendd {{.*#+}} ymm13 = ymm13[0,1,2,3,4],ymm15[5],ymm13[6,7]3943; AVX512-NEXT: vpblendw {{.*#+}} ymm15 = ymm10[0],ymm8[1],ymm10[2],ymm8[3],ymm10[4,5],ymm8[6],ymm10[7,8],ymm8[9],ymm10[10],ymm8[11],ymm10[12,13],ymm8[14],ymm10[15]3944; AVX512-NEXT: vextracti128 $1, %ymm15, %xmm03945; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm15[0,1],xmm0[2,3],xmm15[4,5,6],xmm0[7]3946; AVX512-NEXT: vpshufb {{.*#+}} ymm13 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm13[8,9,18,19,28,29,22,23,16,17,26,27],zero,zero,zero,zero,zero,zero3947; AVX512-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[2,3,12,13,6,7,0,1,10,11,4,5,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[u,u,u,u,u,u]3948; AVX512-NEXT: vpor %ymm0, %ymm13, %ymm03949; AVX512-NEXT: vpblendd {{.*#+}} xmm13 = xmm12[0,1],xmm11[2],xmm12[3]3950; AVX512-NEXT: vpshufb %xmm14, %xmm13, %xmm133951; AVX512-NEXT: vinserti128 $1, %xmm13, %ymm0, %ymm133952; AVX512-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (zmm18 & (zmm13 ^ zmm0))3953; AVX512-NEXT: vinserti64x4 $1, %ymm7, %zmm13, %zmm193954; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm9[0],ymm3[1],ymm9[2],ymm3[3],ymm9[4,5],ymm3[6],ymm9[7,8],ymm3[9],ymm9[10],ymm3[11],ymm9[12,13],ymm3[14],ymm9[15]3955; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm73956; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0],ymm7[1],ymm0[2,3,4,5,6,7]3957; AVX512-NEXT: vmovdqa {{.*#+}} ymm7 = [4,5,14,15,12,13,2,3,12,13,6,7,0,1,10,11,20,21,30,31,28,29,18,19,28,29,22,23,16,17,26,27]3958; AVX512-NEXT: vpshufb %ymm7, %ymm0, %ymm03959; AVX512-NEXT: vmovdqa64 %ymm7, %ymm213960; AVX512-NEXT: vpshufd {{.*#+}} xmm7 = xmm6[0,1,1,3]3961; AVX512-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,7,6,7]3962; AVX512-NEXT: vmovdqa64 %xmm20, %xmm153963; AVX512-NEXT: vpunpckhdq {{.*#+}} xmm7 = xmm7[2],xmm20[2],xmm7[3],xmm20[3]3964; AVX512-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm0[3,4,5,6,7]3965; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm7[0,1,2,3],ymm0[4,5,6,7]3966; AVX512-NEXT: vpblendw {{.*#+}} ymm7 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]3967; AVX512-NEXT: vextracti128 $1, %ymm7, %xmm133968; AVX512-NEXT: vpblendw {{.*#+}} xmm7 = xmm13[0,1,2],xmm7[3,4],xmm13[5,6,7]3969; AVX512-NEXT: vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,8,9,2,3,12,13,6,7,0,1,10,11]3970; AVX512-NEXT: vinserti128 $1, %xmm7, %ymm0, %ymm73971; AVX512-NEXT: vpblendd {{.*#+}} ymm7 = ymm0[0,1,2,3,4],ymm7[5,6,7]3972; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm9[0,1],ymm3[2],ymm9[3],ymm3[4],ymm9[5,6],ymm3[7],ymm9[8,9],ymm3[10],ymm9[11],ymm3[12],ymm9[13,14],ymm3[15]3973; AVX512-NEXT: vmovdqa64 %ymm9, %ymm203974; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm133975; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm13[2],ymm0[3,4,5,6,7]3976; AVX512-NEXT: vmovdqa {{.*#+}} ymm13 = [6,7,6,7,8,9,4,5,14,15,8,9,2,3,12,13,22,23,22,23,24,25,20,21,30,31,24,25,18,19,28,29]3977; AVX512-NEXT: vpshufb %ymm13, %ymm0, %ymm03978; AVX512-NEXT: vpblendd {{.*#+}} xmm14 = xmm15[0],xmm6[1],xmm15[2,3]3979; AVX512-NEXT: vmovdqa64 %xmm15, %xmm223980; AVX512-NEXT: vpshufb {{.*#+}} xmm14 = xmm14[6,7,0,1,10,11,u,u,u,u,u,u,u,u,u,u]3981; AVX512-NEXT: vpblendw {{.*#+}} xmm14 = xmm14[0,1,2],xmm0[3,4,5,6,7]3982; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm14[0,1,2,3],ymm0[4,5,6,7]3983; AVX512-NEXT: vpblendd {{.*#+}} xmm14 = xmm11[0,1],xmm12[2],xmm11[3]3984; AVX512-NEXT: vpshufb %xmm13, %xmm14, %xmm133985; AVX512-NEXT: vinserti128 $1, %xmm13, %ymm0, %ymm133986; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm13, %zmm03987; AVX512-NEXT: vpblendw {{.*#+}} ymm13 = ymm8[0],ymm10[1,2],ymm8[3],ymm10[4],ymm8[5],ymm10[6,7],ymm8[8],ymm10[9,10],ymm8[11],ymm10[12],ymm8[13],ymm10[14,15]3988; AVX512-NEXT: vextracti128 $1, %ymm13, %xmm143989; AVX512-NEXT: vpblendd {{.*#+}} xmm13 = xmm14[0],xmm13[1],xmm14[2],xmm13[3]3990; AVX512-NEXT: vpblendw {{.*#+}} ymm14 = ymm5[0],ymm4[1],ymm5[2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]3991; AVX512-NEXT: vpermq {{.*#+}} ymm15 = ymm14[2,3,0,1]3992; AVX512-NEXT: vpblendd {{.*#+}} ymm14 = ymm14[0,1,2,3],ymm15[4],ymm14[5],ymm15[6],ymm14[7]3993; AVX512-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]3994; AVX512-NEXT: vpshufb {{.*#+}} ymm14 = ymm14[u,u,u,u,u,u,u,u,u,u,u,u,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]3995; AVX512-NEXT: vpblendd {{.*#+}} ymm13 = ymm13[0,1,2],ymm14[3,4,5,6,7]3996; AVX512-NEXT: vpblendw {{.*#+}} ymm14 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13],ymm1[14],ymm2[15]3997; AVX512-NEXT: vmovdqa %ymm2, %ymm93998; AVX512-NEXT: vextracti128 $1, %ymm14, %xmm153999; AVX512-NEXT: vpblendw {{.*#+}} xmm14 = xmm14[0],xmm15[1,2,3],xmm14[4,5],xmm15[6,7]4000; AVX512-NEXT: vpternlogq {{.*#+}} zmm13 = zmm0 ^ (mem & (zmm13 ^ zmm0))4001; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = xmm14[u,u,0,1,10,11,4,5,14,15,8,9,2,3,12,13]4002; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm04003; AVX512-NEXT: vextracti64x4 $1, %zmm13, %ymm144004; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm14[0],ymm0[1,2,3,4,5,6,7],ymm14[8],ymm0[9,10,11,12,13,14,15]4005; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm14[0,1,2,3],ymm0[4,5,6,7]4006; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm13, %zmm174007; AVX512-NEXT: vpshufd {{.*#+}} xmm0 = xmm11[3,1,2,3]4008; AVX512-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]4009; AVX512-NEXT: vpshufd {{.*#+}} xmm13 = xmm12[0,2,2,3]4010; AVX512-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[0,1,0,3,4,5,6,7]4011; AVX512-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm13[0],xmm0[0],xmm13[1],xmm0[1]4012; AVX512-NEXT: vpblendw {{.*#+}} ymm13 = ymm10[0,1],ymm8[2],ymm10[3],ymm8[4],ymm10[5,6],ymm8[7],ymm10[8,9],ymm8[10],ymm10[11],ymm8[12],ymm10[13,14],ymm8[15]4013; AVX512-NEXT: vextracti128 $1, %ymm13, %xmm144014; AVX512-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1,2],xmm14[3,4],xmm13[5,6,7]4015; AVX512-NEXT: vpblendw {{.*#+}} ymm14 = ymm4[0],ymm5[1],ymm4[2,3],ymm5[4],ymm4[5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10,11],ymm5[12],ymm4[13],ymm5[14],ymm4[15]4016; AVX512-NEXT: vpermq {{.*#+}} ymm15 = ymm14[2,3,0,1]4017; AVX512-NEXT: vpblendd {{.*#+}} ymm14 = ymm14[0,1,2,3,4,5],ymm15[6],ymm14[7]4018; AVX512-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]4019; AVX512-NEXT: vpshufb {{.*#+}} ymm14 = ymm14[u,u,u,u,u,u,u,u,u,u,u,u,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]4020; AVX512-NEXT: vpblendd {{.*#+}} ymm13 = ymm13[0,1,2],ymm14[3,4,5,6,7]4021; AVX512-NEXT: vpblendd {{.*#+}} xmm11 = xmm11[0],xmm12[1],xmm11[2,3]4022; AVX512-NEXT: vmovdqa64 %ymm21, %ymm24023; AVX512-NEXT: vpshufb %xmm2, %xmm11, %xmm114024; AVX512-NEXT: vinserti128 $1, %xmm11, %ymm0, %ymm114025; AVX512-NEXT: vpternlogq {{.*#+}} zmm11 = zmm11 ^ (zmm18 & (zmm11 ^ zmm13))4026; AVX512-NEXT: vinserti64x4 $1, %ymm7, %zmm11, %zmm74027; AVX512-NEXT: vmovdqa64 %ymm20, %ymm24028; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1,2],ymm3[3],ymm2[4],ymm3[5],ymm2[6,7],ymm3[8],ymm2[9,10],ymm3[11],ymm2[12],ymm3[13],ymm2[14,15]4029; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm34030; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3,4,5,6,7]4031; AVX512-NEXT: vmovdqa64 %xmm22, %xmm34032; AVX512-NEXT: vpblendd {{.*#+}} xmm3 = xmm3[0,1],xmm6[2],xmm3[3]4033; AVX512-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[8,9,14,15,4,5,6,7,0,1,10,11,4,5,14,15,24,25,30,31,20,21,22,23,16,17,26,27,20,21,30,31]4034; AVX512-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]4035; AVX512-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm2[3,4,5,6,7]4036; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]4037; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm04038; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm04039; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm10[0],ymm8[1],ymm10[2,3],ymm8[4],ymm10[5],ymm8[6],ymm10[7,8],ymm8[9],ymm10[10,11],ymm8[12],ymm10[13],ymm8[14],ymm10[15]4040; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm34041; AVX512-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2],xmm2[3,4],xmm3[5,6,7]4042; AVX512-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0,1],ymm4[2],ymm5[3],ymm4[4],ymm5[5,6],ymm4[7],ymm5[8,9],ymm4[10],ymm5[11],ymm4[12],ymm5[13,14],ymm4[15]4043; AVX512-NEXT: vpermq {{.*#+}} ymm4 = ymm3[2,3,0,1]4044; AVX512-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4],ymm3[5,6],ymm4[7]4045; AVX512-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]4046; AVX512-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,4,5,14,15,24,25,18,19,28,29,22,23,20,21,22,23,20,21,30,31]4047; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2],ymm3[3,4,5,6,7]4048; AVX512-NEXT: movb $7, %al4049; AVX512-NEXT: kmovw %eax, %k14050; AVX512-NEXT: vinserti64x4 $0, %ymm2, %zmm0, %zmm0 {%k1}4051; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm9[1],ymm1[2],ymm9[3],ymm1[4,5],ymm9[6],ymm1[7,8],ymm9[9],ymm1[10],ymm9[11],ymm1[12,13],ymm9[14],ymm1[15]4052; AVX512-NEXT: vextracti128 $1, %ymm1, %xmm24053; AVX512-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3],xmm1[4,5,6],xmm2[7]4054; AVX512-NEXT: vextracti64x4 $1, %zmm0, %ymm24055; AVX512-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,u,2,3,12,13,6,7,0,1,10,11,4,5,14,15]4056; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm14057; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1,2,3,4,5,6,7],ymm2[8],ymm1[9,10,11,12,13,14,15]4058; AVX512-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]4059; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm04060; AVX512-NEXT: vmovdqa64 %zmm16, (%rsi)4061; AVX512-NEXT: vmovdqa64 %zmm19, (%rdx)4062; AVX512-NEXT: vmovdqa64 %zmm7, (%rcx)4063; AVX512-NEXT: vmovdqa64 %zmm17, (%r8)4064; AVX512-NEXT: vmovdqa64 %zmm0, (%r9)4065; AVX512-NEXT: vzeroupper4066; AVX512-NEXT: retq4067;4068; AVX512-FCP-LABEL: load_i16_stride5_vf32:4069; AVX512-FCP: # %bb.0:4070; AVX512-FCP-NEXT: vmovdqa 176(%rdi), %xmm24071; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm2[4,5,14,15,4,5,6,7,u,u,u,u,u,u,u,u]4072; AVX512-FCP-NEXT: vmovdqa 160(%rdi), %xmm34073; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm3[0,1,10,11,8,9,10,11,u,u,u,u,u,u,u,u]4074; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4075; AVX512-FCP-NEXT: vmovdqa 192(%rdi), %ymm44076; AVX512-FCP-NEXT: vmovdqa 224(%rdi), %ymm54077; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13],ymm4[14],ymm5[15]4078; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm6 = [2,4,7,1,4,6,0,0]4079; AVX512-FCP-NEXT: vpermd %ymm1, %ymm6, %ymm14080; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,8,9,14,15,0,1,6,7,16,17,22,23,u,u,u,u,u,u,u,u,u,u,u,u]4081; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm6 = [8,9,3,2,4,0,0,0]4082; AVX512-FCP-NEXT: vpermi2d %ymm0, %ymm1, %ymm64083; AVX512-FCP-NEXT: vmovdqa 256(%rdi), %ymm04084; AVX512-FCP-NEXT: vmovdqa 288(%rdi), %ymm14085; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]4086; AVX512-FCP-NEXT: vextracti128 $1, %ymm7, %xmm84087; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm8[3,4],xmm7[5,6,7]4088; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,4,5,14,15,8,9,2,3,12,13,6,7]4089; AVX512-FCP-NEXT: vinserti128 $1, %xmm7, %ymm0, %ymm74090; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3,4],ymm7[5,6,7]4091; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm104092; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %ymm114093; AVX512-FCP-NEXT: vmovdqa 64(%rdi), %ymm84094; AVX512-FCP-NEXT: vmovdqa 96(%rdi), %ymm94095; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm8[0],ymm9[1,2],ymm8[3],ymm9[4],ymm8[5],ymm9[6,7],ymm8[8],ymm9[9,10],ymm8[11],ymm9[12],ymm8[13],ymm9[14,15]4096; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm12 = [1,0,0,0,4,6,1,3]4097; AVX512-FCP-NEXT: vpermd %ymm7, %ymm12, %ymm74098; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[2,3,16,17,22,23,24,25,30,31,20,21],zero,zero,zero,zero,zero,zero4099; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm10[0],ymm11[1],ymm10[2,3],ymm11[4],ymm10[5],ymm11[6],ymm10[7,8],ymm11[9],ymm10[10,11],ymm11[12],ymm10[13],ymm11[14],ymm10[15]4100; AVX512-FCP-NEXT: vextracti128 $1, %ymm12, %xmm134101; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0],xmm13[1,2,3],xmm12[4,5],xmm13[6,7]4102; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[0,1,10,11,4,5,14,15,8,9,2,3,12,13],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm12[u,u,u,u,u,u]4103; AVX512-FCP-NEXT: vpor %ymm7, %ymm12, %ymm124104; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm13 = [0,3,1,0,0,3,5,0]4105; AVX512-FCP-NEXT: vmovdqa 128(%rdi), %ymm74106; AVX512-FCP-NEXT: vpermd %ymm7, %ymm13, %ymm134107; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm14 = [4,5,2,3,4,5,6,7,8,9,2,3,4,5,10,11,20,21,18,19,20,21,22,23,24,25,18,19,20,21,26,27]4108; AVX512-FCP-NEXT: vpshufb %ymm14, %ymm13, %ymm134109; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm18 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535]4110; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (zmm18 & (zmm13 ^ zmm12))4111; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm13, %zmm164112; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm11[0],ymm10[1],ymm11[2],ymm10[3],ymm11[4,5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10],ymm10[11],ymm11[12,13],ymm10[14],ymm11[15]4113; AVX512-FCP-NEXT: vextracti128 $1, %ymm12, %xmm134114; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1],xmm13[2,3],xmm12[4,5,6],xmm13[7]4115; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [2,3,12,13,6,7,0,1,10,11,4,5,14,15,128,128,128,128,128,128,128,128,128,128,128,128,u,u,u,u,u,u]4116; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm12, %ymm124117; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm9[0],ymm8[1],ymm9[2,3],ymm8[4],ymm9[5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10,11],ymm8[12],ymm9[13],ymm8[14],ymm9[15]4118; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm17 = [2,0,0,0,4,7,1,6]4119; AVX512-FCP-NEXT: vpermd %ymm13, %ymm17, %ymm134120; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm13 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm13[0,1,18,19,20,21,26,27,16,17,30,31],zero,zero,zero,zero,zero,zero4121; AVX512-FCP-NEXT: vpor %ymm13, %ymm12, %ymm124122; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm13 = [1,3,2,0,1,3,6,0]4123; AVX512-FCP-NEXT: vpermd %ymm7, %ymm13, %ymm154124; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm13 = [0,1,6,7,4,5,6,7,8,9,0,1,6,7,8,9,16,17,22,23,20,21,22,23,24,25,16,17,22,23,24,25]4125; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm15, %ymm154126; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm15 = zmm15 ^ (zmm18 & (zmm15 ^ zmm12))4127; AVX512-FCP-NEXT: vpshufb %xmm6, %xmm3, %xmm64128; AVX512-FCP-NEXT: vpsrlq $48, %xmm2, %xmm124129; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm6 = xmm6[0],xmm12[0],xmm6[1],xmm12[1]4130; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm4[0],ymm5[1],ymm4[2,3],ymm5[4],ymm4[5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10,11],ymm5[12],ymm4[13],ymm5[14],ymm4[15]4131; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm17 = [0,2,5,7,4,7,0,0]4132; AVX512-FCP-NEXT: vpermd %ymm12, %ymm17, %ymm124133; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[2,3,4,5,4,5,0,1,6,7,8,9,14,15,4,5,18,19,20,21,20,21,16,17,22,23,24,25,30,31,20,21]4134; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1,2],xmm12[3,4,5,6,7]4135; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm12[4,5,6,7]4136; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]4137; AVX512-FCP-NEXT: vbroadcasti32x4 {{.*#+}} ymm17 = [1,4,6,3,1,4,6,3]4138; AVX512-FCP-NEXT: # ymm17 = mem[0,1,2,3,0,1,2,3]4139; AVX512-FCP-NEXT: vpermd %ymm12, %ymm17, %ymm124140; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,26,27,16,17,30,31,24,25]4141; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3,4],ymm12[5,6,7]4142; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm15, %zmm174143; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]4144; AVX512-FCP-NEXT: vextracti128 $1, %ymm6, %xmm154145; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm15[0,1,2],xmm6[3,4],xmm15[5,6,7]4146; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[u,u,u,u,8,9,2,3,12,13,6,7,0,1,10,11]4147; AVX512-FCP-NEXT: vinserti128 $1, %xmm6, %ymm0, %ymm64148; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm15 = xmm3[u,u,u,u,u,u,u,u,4,5,14,15,u,u,u,u]4149; AVX512-FCP-NEXT: vpunpckhdq {{.*#+}} xmm15 = xmm15[2],xmm2[2],xmm15[3],xmm2[3]4150; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm5[0],ymm4[1],ymm5[2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]4151; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm19 = [0,3,5,2,5,7,0,0]4152; AVX512-FCP-NEXT: vpermd %ymm12, %ymm19, %ymm124153; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[0,1,6,7,2,3,2,3,4,5,10,11,0,1,14,15,16,17,22,23,18,19,18,19,20,21,26,27,16,17,30,31]4154; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm15 = xmm15[0,1,2],xmm12[3,4,5,6,7]4155; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm12 = ymm15[0,1,2,3],ymm12[4,5,6,7]4156; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm12[0,1,2,3,4],ymm6[5,6,7]4157; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm11[0,1],ymm10[2],ymm11[3],ymm10[4],ymm11[5,6],ymm10[7],ymm11[8,9],ymm10[10],ymm11[11],ymm10[12],ymm11[13,14],ymm10[15]4158; AVX512-FCP-NEXT: vextracti128 $1, %ymm12, %xmm154159; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2],xmm15[3,4],xmm12[5,6,7]4160; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm12 = xmm12[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]4161; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm15 = ymm8[0],ymm9[1],ymm8[2,3],ymm9[4],ymm8[5],ymm9[6],ymm8[7,8],ymm9[9],ymm8[10,11],ymm9[12],ymm8[13],ymm9[14],ymm8[15]4162; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm19 = [0,2,0,0,5,7,2,4]4163; AVX512-FCP-NEXT: vpermd %ymm15, %ymm19, %ymm154164; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm15 = ymm15[u,u,u,u,u,u,u,u,u,u,u,u,0,1,6,7,16,17,22,23,24,25,30,31,20,21,22,23,16,17,22,23]4165; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm12 = ymm12[0,1,2],ymm15[3,4,5,6,7]4166; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm15 = [1,4,6,0,1,4,6,0]4167; AVX512-FCP-NEXT: # ymm15 = mem[0,1,0,1]4168; AVX512-FCP-NEXT: vpermd %ymm7, %ymm15, %ymm154169; AVX512-FCP-NEXT: vpshufb %ymm14, %ymm15, %ymm144170; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (zmm18 & (zmm14 ^ zmm12))4171; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm14, %zmm144172; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm10[0],ymm11[1,2],ymm10[3],ymm11[4],ymm10[5],ymm11[6,7],ymm10[8],ymm11[9,10],ymm10[11],ymm11[12],ymm10[13],ymm11[14,15]4173; AVX512-FCP-NEXT: vextracti128 $1, %ymm6, %xmm124174; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm6 = xmm12[0],xmm6[1],xmm12[2],xmm6[3]4175; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]4176; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm9[0],ymm8[1],ymm9[2],ymm8[3],ymm9[4,5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10],ymm8[11],ymm9[12,13],ymm8[14],ymm9[15]4177; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm15 = [0,3,0,0,5,0,2,7]4178; AVX512-FCP-NEXT: vpermd %ymm12, %ymm15, %ymm124179; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[u,u,u,u,u,u,u,u,u,u,u,u,2,3,4,5,18,19,20,21,26,27,16,17,30,31,30,31,18,19,20,21]4180; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2],ymm12[3,4,5,6,7]4181; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm12 = xmm2[0],xmm3[1],xmm2[2,3]4182; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm12 = xmm12[6,7,0,1,10,11,u,u,u,u,u,u,u,u,u,u]4183; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm15 = ymm5[0,1],ymm4[2],ymm5[3],ymm4[4],ymm5[5,6],ymm4[7],ymm5[8,9],ymm4[10],ymm5[11],ymm4[12],ymm5[13,14],ymm4[15]4184; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm18 = [1,3,6,0,5,0,0,0]4185; AVX512-FCP-NEXT: vpermd %ymm15, %ymm18, %ymm154186; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm15 = ymm15[2,3,2,3,4,5,0,1,6,7,8,9,14,15,4,5,18,19,18,19,20,21,16,17,22,23,24,25,30,31,20,21]4187; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2],xmm15[3,4,5,6,7]4188; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm12 = ymm12[0,1,2,3],ymm15[4,5,6,7]4189; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm15 = [2,4,7,0,2,4,7,0]4190; AVX512-FCP-NEXT: # ymm15 = mem[0,1,0,1]4191; AVX512-FCP-NEXT: vpermd %ymm7, %ymm15, %ymm154192; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm15, %ymm134193; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm12, %zmm13, %zmm124194; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm12 = zmm12 ^ (mem & (zmm12 ^ zmm6))4195; AVX512-FCP-NEXT: vextracti64x4 $1, %zmm12, %ymm64196; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]4197; AVX512-FCP-NEXT: vextracti128 $1, %ymm13, %xmm154198; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0],xmm15[1,2,3],xmm13[4,5],xmm15[6,7]4199; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[u,u,0,1,10,11,4,5,14,15,8,9,2,3,12,13]4200; AVX512-FCP-NEXT: vinserti128 $1, %xmm13, %ymm0, %ymm134201; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm6[0],ymm13[1,2,3,4,5,6,7],ymm6[8],ymm13[9,10,11,12,13,14,15]4202; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm13[4,5,6,7]4203; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm12, %zmm64204; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1],ymm11[2,3],ymm10[4],ymm11[5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10,11],ymm10[12],ymm11[13],ymm10[14],ymm11[15]4205; AVX512-FCP-NEXT: vextracti128 $1, %ymm10, %xmm114206; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm10 = xmm11[0,1,2],xmm10[3,4],xmm11[5,6,7]4207; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]4208; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2],ymm9[3],ymm8[4],ymm9[5,6],ymm8[7],ymm9[8,9],ymm8[10],ymm9[11],ymm8[12],ymm9[13,14],ymm8[15]4209; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [1,3,0,0,6,0,3,5]4210; AVX512-FCP-NEXT: vpermd %ymm8, %ymm9, %ymm84211; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm8[u,u,u,u,u,u,u,u,u,u,u,u,0,1,6,7,16,17,22,23,24,25,30,31,16,17,22,23,16,17,22,23]4212; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm8 = ymm10[0,1,2],ymm8[3,4,5,6,7]4213; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm2 = xmm2[0,1],xmm3[2],xmm2[3]4214; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]4215; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm5[1,2],ymm4[3],ymm5[4],ymm4[5],ymm5[6,7],ymm4[8],ymm5[9,10],ymm4[11],ymm5[12],ymm4[13],ymm5[14,15]4216; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [1,4,6,3,6,0,0,0]4217; AVX512-FCP-NEXT: vpermd %ymm3, %ymm4, %ymm34218; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5,2,3,4,5,10,11,0,1,14,15,16,17,18,19,20,21,18,19,20,21,26,27,16,17,30,31]4219; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm3[3,4,5,6,7]4220; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm3[4,5,6,7]4221; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm3 = [0,2,1,3,0,2,5,7]4222; AVX512-FCP-NEXT: vpermd %ymm7, %ymm3, %ymm34223; AVX512-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[0,1,6,7,4,5,6,7,0,1,6,7,8,9,14,15,16,17,22,23,20,21,22,23,16,17,22,23,24,25,30,31]4224; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm3, %zmm24225; AVX512-FCP-NEXT: movb $7, %al4226; AVX512-FCP-NEXT: kmovw %eax, %k14227; AVX512-FCP-NEXT: vinserti64x4 $0, %ymm8, %zmm0, %zmm2 {%k1}4228; AVX512-FCP-NEXT: vextracti64x4 $1, %zmm2, %ymm34229; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]4230; AVX512-FCP-NEXT: vextracti128 $1, %ymm0, %xmm14231; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5,6],xmm1[7]4232; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[u,u,2,3,12,13,6,7,0,1,10,11,4,5,14,15]4233; AVX512-FCP-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm04234; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0],ymm0[1,2,3,4,5,6,7],ymm3[8],ymm0[9,10,11,12,13,14,15]4235; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]4236; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm04237; AVX512-FCP-NEXT: vmovdqa64 %zmm16, (%rsi)4238; AVX512-FCP-NEXT: vmovdqa64 %zmm17, (%rdx)4239; AVX512-FCP-NEXT: vmovdqa64 %zmm14, (%rcx)4240; AVX512-FCP-NEXT: vmovdqa64 %zmm6, (%r8)4241; AVX512-FCP-NEXT: vmovdqa64 %zmm0, (%r9)4242; AVX512-FCP-NEXT: vzeroupper4243; AVX512-FCP-NEXT: retq4244;4245; AVX512DQ-LABEL: load_i16_stride5_vf32:4246; AVX512DQ: # %bb.0:4247; AVX512DQ-NEXT: vmovdqa 256(%rdi), %ymm04248; AVX512DQ-NEXT: vmovdqa 288(%rdi), %ymm14249; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]4250; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm34251; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm3[3,4],xmm2[5,6,7]4252; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,4,5,14,15,8,9,2,3,12,13,6,7]4253; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm44254; AVX512DQ-NEXT: vmovdqa 192(%rdi), %ymm34255; AVX512DQ-NEXT: vmovdqa 224(%rdi), %ymm94256; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm5 = ymm9[0],ymm3[1],ymm9[2,3],ymm3[4],ymm9[5],ymm3[6],ymm9[7,8],ymm3[9],ymm9[10,11],ymm3[12],ymm9[13],ymm3[14],ymm9[15]4257; AVX512DQ-NEXT: vextracti128 $1, %ymm5, %xmm64258; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm5 = ymm6[0],ymm5[1,2],ymm6[3],ymm5[4,5,6,7]4259; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm7 = [u,u,u,u,u,u,u,u,8,9,2,3,12,13,6,7,16,17,26,27,26,27,30,31,24,25,18,19,28,29,22,23]4260; AVX512DQ-NEXT: vpshufb %ymm7, %ymm5, %ymm54261; AVX512DQ-NEXT: vmovdqa64 176(%rdi), %xmm204262; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm8 = xmm20[3,1,2,3]4263; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm8 = xmm8[2,1,2,3,4,5,6,7]4264; AVX512DQ-NEXT: vmovdqa 160(%rdi), %xmm64265; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm10 = xmm6[0,2,2,3]4266; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[0,3,2,3,4,5,6,7]4267; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm8 = xmm10[0],xmm8[0],xmm10[1],xmm8[1]4268; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm5 = ymm8[0,1],ymm5[2,3,4,5,6,7]4269; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm14 = ymm5[0,1,2,3,4],ymm4[5,6,7]4270; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm84271; AVX512DQ-NEXT: vmovdqa 32(%rdi), %ymm104272; AVX512DQ-NEXT: vmovdqa 64(%rdi), %ymm44273; AVX512DQ-NEXT: vmovdqa 96(%rdi), %ymm54274; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm11 = ymm4[0],ymm5[1,2],ymm4[3],ymm5[4],ymm4[5],ymm5[6,7],ymm4[8],ymm5[9,10],ymm4[11],ymm5[12],ymm4[13],ymm5[14,15]4275; AVX512DQ-NEXT: vpermq {{.*#+}} ymm12 = ymm11[2,3,0,1]4276; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm11 = ymm11[0,1,2,3,4],ymm12[5],ymm11[6],ymm12[7]4277; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm11 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm11[6,7,16,17,26,27,20,21,30,31,24,25],zero,zero,zero,zero,zero,zero4278; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm12 = ymm8[0],ymm10[1],ymm8[2,3],ymm10[4],ymm8[5],ymm10[6],ymm8[7,8],ymm10[9],ymm8[10,11],ymm10[12],ymm8[13],ymm10[14],ymm8[15]4279; AVX512DQ-NEXT: vextracti128 $1, %ymm12, %xmm134280; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0],xmm13[1,2,3],xmm12[4,5],xmm13[6,7]4281; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[0,1,10,11,4,5,14,15,8,9,2,3,12,13],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm12[u,u,u,u,u,u]4282; AVX512DQ-NEXT: vpor %ymm11, %ymm12, %ymm154283; AVX512DQ-NEXT: vmovdqa 144(%rdi), %xmm114284; AVX512DQ-NEXT: vmovdqa 128(%rdi), %xmm124285; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm13 = xmm12[0],xmm11[1],xmm12[2,3]4286; AVX512DQ-NEXT: vpshufb %xmm7, %xmm13, %xmm74287; AVX512DQ-NEXT: vinserti128 $1, %xmm7, %ymm0, %ymm74288; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm18 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535]4289; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 ^ (zmm18 & (zmm7 ^ zmm15))4290; AVX512DQ-NEXT: vinserti64x4 $1, %ymm14, %zmm7, %zmm164291; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm7 = ymm3[0],ymm9[1],ymm3[2,3],ymm9[4],ymm3[5],ymm9[6],ymm3[7,8],ymm9[9],ymm3[10,11],ymm9[12],ymm3[13],ymm9[14],ymm3[15]4292; AVX512DQ-NEXT: vextracti128 $1, %ymm7, %xmm144293; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm7 = ymm7[0],ymm14[1],ymm7[2],ymm14[3],ymm7[4,5,6,7]4294; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm14 = [2,3,12,13,0,1,0,1,10,11,4,5,14,15,8,9,18,19,28,29,16,17,16,17,26,27,20,21,30,31,24,25]4295; AVX512DQ-NEXT: vpshufb %ymm14, %ymm7, %ymm74296; AVX512DQ-NEXT: vpsrlq $48, %xmm20, %xmm154297; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm13 = xmm6[0,3,2,3]4298; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[1,2,2,3,4,5,6,7]4299; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm13 = xmm13[0],xmm15[0],xmm13[1],xmm15[1]4300; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1,2],xmm7[3,4,5,6,7]4301; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm7 = ymm13[0,1,2,3],ymm7[4,5,6,7]4302; AVX512DQ-NEXT: vmovdqa %ymm0, %ymm24303; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm13 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]4304; AVX512DQ-NEXT: vextracti128 $1, %ymm13, %xmm154305; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm13 = xmm15[0],xmm13[1],xmm15[2],xmm13[3]4306; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[u,u,u,u,6,7,0,1,10,11,4,5,14,15,8,9]4307; AVX512DQ-NEXT: vinserti128 $1, %xmm13, %ymm0, %ymm134308; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3,4],ymm13[5,6,7]4309; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm13 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13],ymm4[14],ymm5[15]4310; AVX512DQ-NEXT: vpermq {{.*#+}} ymm15 = ymm13[2,3,0,1]4311; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm13 = ymm13[0,1,2,3,4],ymm15[5],ymm13[6,7]4312; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm15 = ymm10[0],ymm8[1],ymm10[2],ymm8[3],ymm10[4,5],ymm8[6],ymm10[7,8],ymm8[9],ymm10[10],ymm8[11],ymm10[12,13],ymm8[14],ymm10[15]4313; AVX512DQ-NEXT: vextracti128 $1, %ymm15, %xmm04314; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm15[0,1],xmm0[2,3],xmm15[4,5,6],xmm0[7]4315; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm13 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm13[8,9,18,19,28,29,22,23,16,17,26,27],zero,zero,zero,zero,zero,zero4316; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[2,3,12,13,6,7,0,1,10,11,4,5,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[u,u,u,u,u,u]4317; AVX512DQ-NEXT: vpor %ymm0, %ymm13, %ymm04318; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm13 = xmm12[0,1],xmm11[2],xmm12[3]4319; AVX512DQ-NEXT: vpshufb %xmm14, %xmm13, %xmm134320; AVX512DQ-NEXT: vinserti128 $1, %xmm13, %ymm0, %ymm134321; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (zmm18 & (zmm13 ^ zmm0))4322; AVX512DQ-NEXT: vinserti64x4 $1, %ymm7, %zmm13, %zmm194323; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm9[0],ymm3[1],ymm9[2],ymm3[3],ymm9[4,5],ymm3[6],ymm9[7,8],ymm3[9],ymm9[10],ymm3[11],ymm9[12,13],ymm3[14],ymm9[15]4324; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm74325; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0],ymm7[1],ymm0[2,3,4,5,6,7]4326; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm7 = [4,5,14,15,12,13,2,3,12,13,6,7,0,1,10,11,20,21,30,31,28,29,18,19,28,29,22,23,16,17,26,27]4327; AVX512DQ-NEXT: vpshufb %ymm7, %ymm0, %ymm04328; AVX512DQ-NEXT: vmovdqa64 %ymm7, %ymm214329; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm7 = xmm6[0,1,1,3]4330; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,7,6,7]4331; AVX512DQ-NEXT: vmovdqa64 %xmm20, %xmm154332; AVX512DQ-NEXT: vpunpckhdq {{.*#+}} xmm7 = xmm7[2],xmm20[2],xmm7[3],xmm20[3]4333; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm0[3,4,5,6,7]4334; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm7[0,1,2,3],ymm0[4,5,6,7]4335; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm7 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]4336; AVX512DQ-NEXT: vextracti128 $1, %ymm7, %xmm134337; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm7 = xmm13[0,1,2],xmm7[3,4],xmm13[5,6,7]4338; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,8,9,2,3,12,13,6,7,0,1,10,11]4339; AVX512DQ-NEXT: vinserti128 $1, %xmm7, %ymm0, %ymm74340; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm7 = ymm0[0,1,2,3,4],ymm7[5,6,7]4341; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm9[0,1],ymm3[2],ymm9[3],ymm3[4],ymm9[5,6],ymm3[7],ymm9[8,9],ymm3[10],ymm9[11],ymm3[12],ymm9[13,14],ymm3[15]4342; AVX512DQ-NEXT: vmovdqa64 %ymm9, %ymm204343; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm134344; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm13[2],ymm0[3,4,5,6,7]4345; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm13 = [6,7,6,7,8,9,4,5,14,15,8,9,2,3,12,13,22,23,22,23,24,25,20,21,30,31,24,25,18,19,28,29]4346; AVX512DQ-NEXT: vpshufb %ymm13, %ymm0, %ymm04347; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm14 = xmm15[0],xmm6[1],xmm15[2,3]4348; AVX512DQ-NEXT: vmovdqa64 %xmm15, %xmm224349; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm14 = xmm14[6,7,0,1,10,11,u,u,u,u,u,u,u,u,u,u]4350; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm14 = xmm14[0,1,2],xmm0[3,4,5,6,7]4351; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm14[0,1,2,3],ymm0[4,5,6,7]4352; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm14 = xmm11[0,1],xmm12[2],xmm11[3]4353; AVX512DQ-NEXT: vpshufb %xmm13, %xmm14, %xmm134354; AVX512DQ-NEXT: vinserti128 $1, %xmm13, %ymm0, %ymm134355; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm13, %zmm04356; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm13 = ymm8[0],ymm10[1,2],ymm8[3],ymm10[4],ymm8[5],ymm10[6,7],ymm8[8],ymm10[9,10],ymm8[11],ymm10[12],ymm8[13],ymm10[14,15]4357; AVX512DQ-NEXT: vextracti128 $1, %ymm13, %xmm144358; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm13 = xmm14[0],xmm13[1],xmm14[2],xmm13[3]4359; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm14 = ymm5[0],ymm4[1],ymm5[2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]4360; AVX512DQ-NEXT: vpermq {{.*#+}} ymm15 = ymm14[2,3,0,1]4361; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm14 = ymm14[0,1,2,3],ymm15[4],ymm14[5],ymm15[6],ymm14[7]4362; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]4363; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm14 = ymm14[u,u,u,u,u,u,u,u,u,u,u,u,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]4364; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm13 = ymm13[0,1,2],ymm14[3,4,5,6,7]4365; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm14 = ymm2[0],ymm1[1],ymm2[2,3],ymm1[4],ymm2[5],ymm1[6],ymm2[7,8],ymm1[9],ymm2[10,11],ymm1[12],ymm2[13],ymm1[14],ymm2[15]4366; AVX512DQ-NEXT: vmovdqa %ymm2, %ymm94367; AVX512DQ-NEXT: vextracti128 $1, %ymm14, %xmm154368; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm14 = xmm14[0],xmm15[1,2,3],xmm14[4,5],xmm15[6,7]4369; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm13 = zmm0 ^ (mem & (zmm13 ^ zmm0))4370; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm0 = xmm14[u,u,0,1,10,11,4,5,14,15,8,9,2,3,12,13]4371; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm04372; AVX512DQ-NEXT: vextracti64x4 $1, %zmm13, %ymm144373; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm14[0],ymm0[1,2,3,4,5,6,7],ymm14[8],ymm0[9,10,11,12,13,14,15]4374; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm14[0,1,2,3],ymm0[4,5,6,7]4375; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm13, %zmm174376; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm0 = xmm11[3,1,2,3]4377; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]4378; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm13 = xmm12[0,2,2,3]4379; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[0,1,0,3,4,5,6,7]4380; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm13[0],xmm0[0],xmm13[1],xmm0[1]4381; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm13 = ymm10[0,1],ymm8[2],ymm10[3],ymm8[4],ymm10[5,6],ymm8[7],ymm10[8,9],ymm8[10],ymm10[11],ymm8[12],ymm10[13,14],ymm8[15]4382; AVX512DQ-NEXT: vextracti128 $1, %ymm13, %xmm144383; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0,1,2],xmm14[3,4],xmm13[5,6,7]4384; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm14 = ymm4[0],ymm5[1],ymm4[2,3],ymm5[4],ymm4[5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10,11],ymm5[12],ymm4[13],ymm5[14],ymm4[15]4385; AVX512DQ-NEXT: vpermq {{.*#+}} ymm15 = ymm14[2,3,0,1]4386; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm14 = ymm14[0,1,2,3,4,5],ymm15[6],ymm14[7]4387; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]4388; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm14 = ymm14[u,u,u,u,u,u,u,u,u,u,u,u,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]4389; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm13 = ymm13[0,1,2],ymm14[3,4,5,6,7]4390; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm11 = xmm11[0],xmm12[1],xmm11[2,3]4391; AVX512DQ-NEXT: vmovdqa64 %ymm21, %ymm24392; AVX512DQ-NEXT: vpshufb %xmm2, %xmm11, %xmm114393; AVX512DQ-NEXT: vinserti128 $1, %xmm11, %ymm0, %ymm114394; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm11 = zmm11 ^ (zmm18 & (zmm11 ^ zmm13))4395; AVX512DQ-NEXT: vinserti64x4 $1, %ymm7, %zmm11, %zmm74396; AVX512DQ-NEXT: vmovdqa64 %ymm20, %ymm24397; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1,2],ymm3[3],ymm2[4],ymm3[5],ymm2[6,7],ymm3[8],ymm2[9,10],ymm3[11],ymm2[12],ymm3[13],ymm2[14,15]4398; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm34399; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3,4,5,6,7]4400; AVX512DQ-NEXT: vmovdqa64 %xmm22, %xmm34401; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm3 = xmm3[0,1],xmm6[2],xmm3[3]4402; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[8,9,14,15,4,5,6,7,0,1,10,11,4,5,14,15,24,25,30,31,20,21,22,23,16,17,26,27,20,21,30,31]4403; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm3 = xmm3[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]4404; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm2[3,4,5,6,7]4405; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]4406; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm04407; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm04408; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm10[0],ymm8[1],ymm10[2,3],ymm8[4],ymm10[5],ymm8[6],ymm10[7,8],ymm8[9],ymm10[10,11],ymm8[12],ymm10[13],ymm8[14],ymm10[15]4409; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm34410; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2],xmm2[3,4],xmm3[5,6,7]4411; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0,1],ymm4[2],ymm5[3],ymm4[4],ymm5[5,6],ymm4[7],ymm5[8,9],ymm4[10],ymm5[11],ymm4[12],ymm5[13,14],ymm4[15]4412; AVX512DQ-NEXT: vpermq {{.*#+}} ymm4 = ymm3[2,3,0,1]4413; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4],ymm3[5,6],ymm4[7]4414; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]4415; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,4,5,14,15,24,25,18,19,28,29,22,23,20,21,22,23,20,21,30,31]4416; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2],ymm3[3,4,5,6,7]4417; AVX512DQ-NEXT: movb $7, %al4418; AVX512DQ-NEXT: kmovw %eax, %k14419; AVX512DQ-NEXT: vinserti64x4 $0, %ymm2, %zmm0, %zmm0 {%k1}4420; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0],ymm9[1],ymm1[2],ymm9[3],ymm1[4,5],ymm9[6],ymm1[7,8],ymm9[9],ymm1[10],ymm9[11],ymm1[12,13],ymm9[14],ymm1[15]4421; AVX512DQ-NEXT: vextracti128 $1, %ymm1, %xmm24422; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3],xmm1[4,5,6],xmm2[7]4423; AVX512DQ-NEXT: vextracti64x4 $1, %zmm0, %ymm24424; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,u,2,3,12,13,6,7,0,1,10,11,4,5,14,15]4425; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm14426; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1,2,3,4,5,6,7],ymm2[8],ymm1[9,10,11,12,13,14,15]4427; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]4428; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm04429; AVX512DQ-NEXT: vmovdqa64 %zmm16, (%rsi)4430; AVX512DQ-NEXT: vmovdqa64 %zmm19, (%rdx)4431; AVX512DQ-NEXT: vmovdqa64 %zmm7, (%rcx)4432; AVX512DQ-NEXT: vmovdqa64 %zmm17, (%r8)4433; AVX512DQ-NEXT: vmovdqa64 %zmm0, (%r9)4434; AVX512DQ-NEXT: vzeroupper4435; AVX512DQ-NEXT: retq4436;4437; AVX512DQ-FCP-LABEL: load_i16_stride5_vf32:4438; AVX512DQ-FCP: # %bb.0:4439; AVX512DQ-FCP-NEXT: vmovdqa 176(%rdi), %xmm24440; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm2[4,5,14,15,4,5,6,7,u,u,u,u,u,u,u,u]4441; AVX512DQ-FCP-NEXT: vmovdqa 160(%rdi), %xmm34442; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm1 = xmm3[0,1,10,11,8,9,10,11,u,u,u,u,u,u,u,u]4443; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]4444; AVX512DQ-FCP-NEXT: vmovdqa 192(%rdi), %ymm44445; AVX512DQ-FCP-NEXT: vmovdqa 224(%rdi), %ymm54446; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13],ymm4[14],ymm5[15]4447; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm6 = [2,4,7,1,4,6,0,0]4448; AVX512DQ-FCP-NEXT: vpermd %ymm1, %ymm6, %ymm14449; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,8,9,14,15,0,1,6,7,16,17,22,23,u,u,u,u,u,u,u,u,u,u,u,u]4450; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm6 = [8,9,3,2,4,0,0,0]4451; AVX512DQ-FCP-NEXT: vpermi2d %ymm0, %ymm1, %ymm64452; AVX512DQ-FCP-NEXT: vmovdqa 256(%rdi), %ymm04453; AVX512DQ-FCP-NEXT: vmovdqa 288(%rdi), %ymm14454; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]4455; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm7, %xmm84456; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm8[3,4],xmm7[5,6,7]4457; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,4,5,14,15,8,9,2,3,12,13,6,7]4458; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm7, %ymm0, %ymm74459; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3,4],ymm7[5,6,7]4460; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm104461; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %ymm114462; AVX512DQ-FCP-NEXT: vmovdqa 64(%rdi), %ymm84463; AVX512DQ-FCP-NEXT: vmovdqa 96(%rdi), %ymm94464; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm8[0],ymm9[1,2],ymm8[3],ymm9[4],ymm8[5],ymm9[6,7],ymm8[8],ymm9[9,10],ymm8[11],ymm9[12],ymm8[13],ymm9[14,15]4465; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm12 = [1,0,0,0,4,6,1,3]4466; AVX512DQ-FCP-NEXT: vpermd %ymm7, %ymm12, %ymm74467; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[2,3,16,17,22,23,24,25,30,31,20,21],zero,zero,zero,zero,zero,zero4468; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm10[0],ymm11[1],ymm10[2,3],ymm11[4],ymm10[5],ymm11[6],ymm10[7,8],ymm11[9],ymm10[10,11],ymm11[12],ymm10[13],ymm11[14],ymm10[15]4469; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm12, %xmm134470; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0],xmm13[1,2,3],xmm12[4,5],xmm13[6,7]4471; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[0,1,10,11,4,5,14,15,8,9,2,3,12,13],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm12[u,u,u,u,u,u]4472; AVX512DQ-FCP-NEXT: vpor %ymm7, %ymm12, %ymm124473; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm13 = [0,3,1,0,0,3,5,0]4474; AVX512DQ-FCP-NEXT: vmovdqa 128(%rdi), %ymm74475; AVX512DQ-FCP-NEXT: vpermd %ymm7, %ymm13, %ymm134476; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm14 = [4,5,2,3,4,5,6,7,8,9,2,3,4,5,10,11,20,21,18,19,20,21,22,23,24,25,18,19,20,21,26,27]4477; AVX512DQ-FCP-NEXT: vpshufb %ymm14, %ymm13, %ymm134478; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm18 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535]4479; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (zmm18 & (zmm13 ^ zmm12))4480; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm13, %zmm164481; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm11[0],ymm10[1],ymm11[2],ymm10[3],ymm11[4,5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10],ymm10[11],ymm11[12,13],ymm10[14],ymm11[15]4482; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm12, %xmm134483; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1],xmm13[2,3],xmm12[4,5,6],xmm13[7]4484; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [2,3,12,13,6,7,0,1,10,11,4,5,14,15,128,128,128,128,128,128,128,128,128,128,128,128,u,u,u,u,u,u]4485; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm12, %ymm124486; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm9[0],ymm8[1],ymm9[2,3],ymm8[4],ymm9[5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10,11],ymm8[12],ymm9[13],ymm8[14],ymm9[15]4487; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm17 = [2,0,0,0,4,7,1,6]4488; AVX512DQ-FCP-NEXT: vpermd %ymm13, %ymm17, %ymm134489; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm13 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm13[0,1,18,19,20,21,26,27,16,17,30,31],zero,zero,zero,zero,zero,zero4490; AVX512DQ-FCP-NEXT: vpor %ymm13, %ymm12, %ymm124491; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm13 = [1,3,2,0,1,3,6,0]4492; AVX512DQ-FCP-NEXT: vpermd %ymm7, %ymm13, %ymm154493; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm13 = [0,1,6,7,4,5,6,7,8,9,0,1,6,7,8,9,16,17,22,23,20,21,22,23,24,25,16,17,22,23,24,25]4494; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm15, %ymm154495; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm15 = zmm15 ^ (zmm18 & (zmm15 ^ zmm12))4496; AVX512DQ-FCP-NEXT: vpshufb %xmm6, %xmm3, %xmm64497; AVX512DQ-FCP-NEXT: vpsrlq $48, %xmm2, %xmm124498; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm6 = xmm6[0],xmm12[0],xmm6[1],xmm12[1]4499; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm4[0],ymm5[1],ymm4[2,3],ymm5[4],ymm4[5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10,11],ymm5[12],ymm4[13],ymm5[14],ymm4[15]4500; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm17 = [0,2,5,7,4,7,0,0]4501; AVX512DQ-FCP-NEXT: vpermd %ymm12, %ymm17, %ymm124502; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[2,3,4,5,4,5,0,1,6,7,8,9,14,15,4,5,18,19,20,21,20,21,16,17,22,23,24,25,30,31,20,21]4503; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1,2],xmm12[3,4,5,6,7]4504; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm12[4,5,6,7]4505; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]4506; AVX512DQ-FCP-NEXT: vbroadcasti32x4 {{.*#+}} ymm17 = [1,4,6,3,1,4,6,3]4507; AVX512DQ-FCP-NEXT: # ymm17 = mem[0,1,2,3,0,1,2,3]4508; AVX512DQ-FCP-NEXT: vpermd %ymm12, %ymm17, %ymm124509; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,26,27,16,17,30,31,24,25]4510; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3,4],ymm12[5,6,7]4511; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm15, %zmm174512; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]4513; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm6, %xmm154514; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm15[0,1,2],xmm6[3,4],xmm15[5,6,7]4515; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[u,u,u,u,8,9,2,3,12,13,6,7,0,1,10,11]4516; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm6, %ymm0, %ymm64517; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm15 = xmm3[u,u,u,u,u,u,u,u,4,5,14,15,u,u,u,u]4518; AVX512DQ-FCP-NEXT: vpunpckhdq {{.*#+}} xmm15 = xmm15[2],xmm2[2],xmm15[3],xmm2[3]4519; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm5[0],ymm4[1],ymm5[2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]4520; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm19 = [0,3,5,2,5,7,0,0]4521; AVX512DQ-FCP-NEXT: vpermd %ymm12, %ymm19, %ymm124522; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[0,1,6,7,2,3,2,3,4,5,10,11,0,1,14,15,16,17,22,23,18,19,18,19,20,21,26,27,16,17,30,31]4523; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm15 = xmm15[0,1,2],xmm12[3,4,5,6,7]4524; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm12 = ymm15[0,1,2,3],ymm12[4,5,6,7]4525; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm12[0,1,2,3,4],ymm6[5,6,7]4526; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm11[0,1],ymm10[2],ymm11[3],ymm10[4],ymm11[5,6],ymm10[7],ymm11[8,9],ymm10[10],ymm11[11],ymm10[12],ymm11[13,14],ymm10[15]4527; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm12, %xmm154528; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2],xmm15[3,4],xmm12[5,6,7]4529; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm12 = xmm12[4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]4530; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm15 = ymm8[0],ymm9[1],ymm8[2,3],ymm9[4],ymm8[5],ymm9[6],ymm8[7,8],ymm9[9],ymm8[10,11],ymm9[12],ymm8[13],ymm9[14],ymm8[15]4531; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm19 = [0,2,0,0,5,7,2,4]4532; AVX512DQ-FCP-NEXT: vpermd %ymm15, %ymm19, %ymm154533; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm15 = ymm15[u,u,u,u,u,u,u,u,u,u,u,u,0,1,6,7,16,17,22,23,24,25,30,31,20,21,22,23,16,17,22,23]4534; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm12 = ymm12[0,1,2],ymm15[3,4,5,6,7]4535; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm15 = [1,4,6,0,1,4,6,0]4536; AVX512DQ-FCP-NEXT: # ymm15 = mem[0,1,0,1]4537; AVX512DQ-FCP-NEXT: vpermd %ymm7, %ymm15, %ymm154538; AVX512DQ-FCP-NEXT: vpshufb %ymm14, %ymm15, %ymm144539; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (zmm18 & (zmm14 ^ zmm12))4540; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm14, %zmm144541; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm10[0],ymm11[1,2],ymm10[3],ymm11[4],ymm10[5],ymm11[6,7],ymm10[8],ymm11[9,10],ymm10[11],ymm11[12],ymm10[13],ymm11[14,15]4542; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm6, %xmm124543; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm6 = xmm12[0],xmm6[1],xmm12[2],xmm6[3]4544; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm6 = xmm6[6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]4545; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm12 = ymm9[0],ymm8[1],ymm9[2],ymm8[3],ymm9[4,5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10],ymm8[11],ymm9[12,13],ymm8[14],ymm9[15]4546; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm15 = [0,3,0,0,5,0,2,7]4547; AVX512DQ-FCP-NEXT: vpermd %ymm12, %ymm15, %ymm124548; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm12 = ymm12[u,u,u,u,u,u,u,u,u,u,u,u,2,3,4,5,18,19,20,21,26,27,16,17,30,31,30,31,18,19,20,21]4549; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2],ymm12[3,4,5,6,7]4550; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm12 = xmm2[0],xmm3[1],xmm2[2,3]4551; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm12 = xmm12[6,7,0,1,10,11,u,u,u,u,u,u,u,u,u,u]4552; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm15 = ymm5[0,1],ymm4[2],ymm5[3],ymm4[4],ymm5[5,6],ymm4[7],ymm5[8,9],ymm4[10],ymm5[11],ymm4[12],ymm5[13,14],ymm4[15]4553; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm18 = [1,3,6,0,5,0,0,0]4554; AVX512DQ-FCP-NEXT: vpermd %ymm15, %ymm18, %ymm154555; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm15 = ymm15[2,3,2,3,4,5,0,1,6,7,8,9,14,15,4,5,18,19,18,19,20,21,16,17,22,23,24,25,30,31,20,21]4556; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2],xmm15[3,4,5,6,7]4557; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm12 = ymm12[0,1,2,3],ymm15[4,5,6,7]4558; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm15 = [2,4,7,0,2,4,7,0]4559; AVX512DQ-FCP-NEXT: # ymm15 = mem[0,1,0,1]4560; AVX512DQ-FCP-NEXT: vpermd %ymm7, %ymm15, %ymm154561; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm15, %ymm134562; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm12, %zmm13, %zmm124563; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm12 = zmm12 ^ (mem & (zmm12 ^ zmm6))4564; AVX512DQ-FCP-NEXT: vextracti64x4 $1, %zmm12, %ymm64565; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]4566; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm13, %xmm154567; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm13 = xmm13[0],xmm15[1,2,3],xmm13[4,5],xmm15[6,7]4568; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[u,u,0,1,10,11,4,5,14,15,8,9,2,3,12,13]4569; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm13, %ymm0, %ymm134570; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm13 = ymm6[0],ymm13[1,2,3,4,5,6,7],ymm6[8],ymm13[9,10,11,12,13,14,15]4571; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm13[4,5,6,7]4572; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm6, %zmm12, %zmm64573; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1],ymm11[2,3],ymm10[4],ymm11[5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10,11],ymm10[12],ymm11[13],ymm10[14],ymm11[15]4574; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm10, %xmm114575; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm10 = xmm11[0,1,2],xmm10[3,4],xmm11[5,6,7]4576; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[8,9,2,3,12,13,6,7,0,1,10,11,u,u,u,u]4577; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2],ymm9[3],ymm8[4],ymm9[5,6],ymm8[7],ymm9[8,9],ymm8[10],ymm9[11],ymm8[12],ymm9[13,14],ymm8[15]4578; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [1,3,0,0,6,0,3,5]4579; AVX512DQ-FCP-NEXT: vpermd %ymm8, %ymm9, %ymm84580; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm8 = ymm8[u,u,u,u,u,u,u,u,u,u,u,u,0,1,6,7,16,17,22,23,24,25,30,31,16,17,22,23,16,17,22,23]4581; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm8 = ymm10[0,1,2],ymm8[3,4,5,6,7]4582; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm2 = xmm2[0,1],xmm3[2],xmm2[3]4583; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[8,9,2,3,12,13,u,u,u,u,u,u,u,u,u,u]4584; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm5[1,2],ymm4[3],ymm5[4],ymm4[5],ymm5[6,7],ymm4[8],ymm5[9,10],ymm4[11],ymm5[12],ymm4[13],ymm5[14,15]4585; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [1,4,6,3,6,0,0,0]4586; AVX512DQ-FCP-NEXT: vpermd %ymm3, %ymm4, %ymm34587; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5,2,3,4,5,10,11,0,1,14,15,16,17,18,19,20,21,18,19,20,21,26,27,16,17,30,31]4588; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm3[3,4,5,6,7]4589; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm3[4,5,6,7]4590; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm3 = [0,2,1,3,0,2,5,7]4591; AVX512DQ-FCP-NEXT: vpermd %ymm7, %ymm3, %ymm34592; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} ymm3 = ymm3[0,1,6,7,4,5,6,7,0,1,6,7,8,9,14,15,16,17,22,23,20,21,22,23,16,17,22,23,24,25,30,31]4593; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm3, %zmm24594; AVX512DQ-FCP-NEXT: movb $7, %al4595; AVX512DQ-FCP-NEXT: kmovw %eax, %k14596; AVX512DQ-FCP-NEXT: vinserti64x4 $0, %ymm8, %zmm0, %zmm2 {%k1}4597; AVX512DQ-FCP-NEXT: vextracti64x4 $1, %zmm2, %ymm34598; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]4599; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm0, %xmm14600; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5,6],xmm1[7]4601; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[u,u,2,3,12,13,6,7,0,1,10,11,4,5,14,15]4602; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm04603; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0],ymm0[1,2,3,4,5,6,7],ymm3[8],ymm0[9,10,11,12,13,14,15]4604; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]4605; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm04606; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm16, (%rsi)4607; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm17, (%rdx)4608; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm14, (%rcx)4609; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm6, (%r8)4610; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, (%r9)4611; AVX512DQ-FCP-NEXT: vzeroupper4612; AVX512DQ-FCP-NEXT: retq4613;4614; AVX512BW-LABEL: load_i16_stride5_vf32:4615; AVX512BW: # %bb.0:4616; AVX512BW-NEXT: vmovdqa64 256(%rdi), %zmm04617; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm14618; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm24619; AVX512BW-NEXT: vmovdqa64 128(%rdi), %zmm34620; AVX512BW-NEXT: vmovdqa64 192(%rdi), %zmm44621; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11]4622; AVX512BW-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]4623; AVX512BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm54624; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0]4625; AVX512BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm64626; AVX512BW-NEXT: movl $67100672, %eax # imm = 0x3FFE0004627; AVX512BW-NEXT: kmovd %eax, %k14628; AVX512BW-NEXT: vmovdqu16 %zmm5, %zmm6 {%k1}4629; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,34,39,44,49,54,59]4630; AVX512BW-NEXT: vpermi2w %zmm0, %zmm6, %zmm54631; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm6 = [49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44]4632; AVX512BW-NEXT: # zmm6 = mem[0,1,2,3,0,1,2,3]4633; AVX512BW-NEXT: vpermi2w %zmm3, %zmm4, %zmm64634; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm7 = [1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0]4635; AVX512BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm74636; AVX512BW-NEXT: vmovdqu16 %zmm6, %zmm7 {%k1}4637; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,35,40,45,50,55,60]4638; AVX512BW-NEXT: vpermi2w %zmm0, %zmm7, %zmm64639; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm7 = [50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45]4640; AVX512BW-NEXT: # zmm7 = mem[0,1,2,3,0,1,2,3]4641; AVX512BW-NEXT: vpermi2w %zmm3, %zmm4, %zmm74642; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm8 = [34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0]4643; AVX512BW-NEXT: vpermi2w %zmm1, %zmm2, %zmm84644; AVX512BW-NEXT: vmovdqu16 %zmm7, %zmm8 {%k1}4645; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,36,41,46,51,56,61]4646; AVX512BW-NEXT: vpermi2w %zmm0, %zmm8, %zmm74647; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14]4648; AVX512BW-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]4649; AVX512BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm84650; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm9 = [35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0]4651; AVX512BW-NEXT: vpermi2w %zmm1, %zmm2, %zmm94652; AVX512BW-NEXT: movl $33546240, %eax # imm = 0x1FFE0004653; AVX512BW-NEXT: kmovd %eax, %k14654; AVX512BW-NEXT: vmovdqu16 %zmm8, %zmm9 {%k1}4655; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,32,37,42,47,52,57,62]4656; AVX512BW-NEXT: vpermi2w %zmm0, %zmm9, %zmm84657; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm9 = [4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0]4658; AVX512BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm94659; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm1 = [20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15]4660; AVX512BW-NEXT: # zmm1 = mem[0,1,2,3,0,1,2,3]4661; AVX512BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm14662; AVX512BW-NEXT: movb $7, %al4663; AVX512BW-NEXT: kmovd %eax, %k14664; AVX512BW-NEXT: vmovdqa64 %zmm9, %zmm1 {%k1}4665; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm2 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,33,38,43,48,53,58,63]4666; AVX512BW-NEXT: vpermi2w %zmm0, %zmm1, %zmm24667; AVX512BW-NEXT: vmovdqa64 %zmm5, (%rsi)4668; AVX512BW-NEXT: vmovdqa64 %zmm6, (%rdx)4669; AVX512BW-NEXT: vmovdqa64 %zmm7, (%rcx)4670; AVX512BW-NEXT: vmovdqa64 %zmm8, (%r8)4671; AVX512BW-NEXT: vmovdqa64 %zmm2, (%r9)4672; AVX512BW-NEXT: vzeroupper4673; AVX512BW-NEXT: retq4674;4675; AVX512BW-FCP-LABEL: load_i16_stride5_vf32:4676; AVX512BW-FCP: # %bb.0:4677; AVX512BW-FCP-NEXT: vmovdqa64 256(%rdi), %zmm04678; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm14679; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm24680; AVX512BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm34681; AVX512BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm44682; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11]4683; AVX512BW-FCP-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]4684; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm54685; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0]4686; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm64687; AVX512BW-FCP-NEXT: movl $67100672, %eax # imm = 0x3FFE0004688; AVX512BW-FCP-NEXT: kmovd %eax, %k14689; AVX512BW-FCP-NEXT: vmovdqu16 %zmm5, %zmm6 {%k1}4690; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,34,39,44,49,54,59]4691; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm6, %zmm54692; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm6 = [49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44]4693; AVX512BW-FCP-NEXT: # zmm6 = mem[0,1,2,3,0,1,2,3]4694; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm4, %zmm64695; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0]4696; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm74697; AVX512BW-FCP-NEXT: vmovdqu16 %zmm6, %zmm7 {%k1}4698; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,35,40,45,50,55,60]4699; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm7, %zmm64700; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm7 = [50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45]4701; AVX512BW-FCP-NEXT: # zmm7 = mem[0,1,2,3,0,1,2,3]4702; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm4, %zmm74703; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0]4704; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm2, %zmm84705; AVX512BW-FCP-NEXT: vmovdqu16 %zmm7, %zmm8 {%k1}4706; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,36,41,46,51,56,61]4707; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm8, %zmm74708; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14]4709; AVX512BW-FCP-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]4710; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm84711; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0]4712; AVX512BW-FCP-NEXT: vpermi2w %zmm1, %zmm2, %zmm94713; AVX512BW-FCP-NEXT: movl $33546240, %eax # imm = 0x1FFE0004714; AVX512BW-FCP-NEXT: kmovd %eax, %k14715; AVX512BW-FCP-NEXT: vmovdqu16 %zmm8, %zmm9 {%k1}4716; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,32,37,42,47,52,57,62]4717; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm9, %zmm84718; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0]4719; AVX512BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm94720; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm1 = [20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15]4721; AVX512BW-FCP-NEXT: # zmm1 = mem[0,1,2,3,0,1,2,3]4722; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm14723; AVX512BW-FCP-NEXT: movb $7, %al4724; AVX512BW-FCP-NEXT: kmovd %eax, %k14725; AVX512BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm1 {%k1}4726; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm2 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,33,38,43,48,53,58,63]4727; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm1, %zmm24728; AVX512BW-FCP-NEXT: vmovdqa64 %zmm5, (%rsi)4729; AVX512BW-FCP-NEXT: vmovdqa64 %zmm6, (%rdx)4730; AVX512BW-FCP-NEXT: vmovdqa64 %zmm7, (%rcx)4731; AVX512BW-FCP-NEXT: vmovdqa64 %zmm8, (%r8)4732; AVX512BW-FCP-NEXT: vmovdqa64 %zmm2, (%r9)4733; AVX512BW-FCP-NEXT: vzeroupper4734; AVX512BW-FCP-NEXT: retq4735;4736; AVX512DQ-BW-LABEL: load_i16_stride5_vf32:4737; AVX512DQ-BW: # %bb.0:4738; AVX512DQ-BW-NEXT: vmovdqa64 256(%rdi), %zmm04739; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm14740; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm24741; AVX512DQ-BW-NEXT: vmovdqa64 128(%rdi), %zmm34742; AVX512DQ-BW-NEXT: vmovdqa64 192(%rdi), %zmm44743; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11]4744; AVX512DQ-BW-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]4745; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm54746; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0]4747; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm64748; AVX512DQ-BW-NEXT: movl $67100672, %eax # imm = 0x3FFE0004749; AVX512DQ-BW-NEXT: kmovd %eax, %k14750; AVX512DQ-BW-NEXT: vmovdqu16 %zmm5, %zmm6 {%k1}4751; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,34,39,44,49,54,59]4752; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm6, %zmm54753; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm6 = [49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44]4754; AVX512DQ-BW-NEXT: # zmm6 = mem[0,1,2,3,0,1,2,3]4755; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm4, %zmm64756; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm7 = [1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0]4757; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm74758; AVX512DQ-BW-NEXT: vmovdqu16 %zmm6, %zmm7 {%k1}4759; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,35,40,45,50,55,60]4760; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm7, %zmm64761; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm7 = [50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45]4762; AVX512DQ-BW-NEXT: # zmm7 = mem[0,1,2,3,0,1,2,3]4763; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm4, %zmm74764; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm8 = [34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0]4765; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm2, %zmm84766; AVX512DQ-BW-NEXT: vmovdqu16 %zmm7, %zmm8 {%k1}4767; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,36,41,46,51,56,61]4768; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm8, %zmm74769; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14]4770; AVX512DQ-BW-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]4771; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm84772; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm9 = [35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0]4773; AVX512DQ-BW-NEXT: vpermi2w %zmm1, %zmm2, %zmm94774; AVX512DQ-BW-NEXT: movl $33546240, %eax # imm = 0x1FFE0004775; AVX512DQ-BW-NEXT: kmovd %eax, %k14776; AVX512DQ-BW-NEXT: vmovdqu16 %zmm8, %zmm9 {%k1}4777; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,32,37,42,47,52,57,62]4778; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm9, %zmm84779; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm9 = [4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0]4780; AVX512DQ-BW-NEXT: vpermi2w %zmm2, %zmm1, %zmm94781; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm1 = [20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15]4782; AVX512DQ-BW-NEXT: # zmm1 = mem[0,1,2,3,0,1,2,3]4783; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm14784; AVX512DQ-BW-NEXT: movb $7, %al4785; AVX512DQ-BW-NEXT: kmovd %eax, %k14786; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, %zmm1 {%k1}4787; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm2 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,33,38,43,48,53,58,63]4788; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm1, %zmm24789; AVX512DQ-BW-NEXT: vmovdqa64 %zmm5, (%rsi)4790; AVX512DQ-BW-NEXT: vmovdqa64 %zmm6, (%rdx)4791; AVX512DQ-BW-NEXT: vmovdqa64 %zmm7, (%rcx)4792; AVX512DQ-BW-NEXT: vmovdqa64 %zmm8, (%r8)4793; AVX512DQ-BW-NEXT: vmovdqa64 %zmm2, (%r9)4794; AVX512DQ-BW-NEXT: vzeroupper4795; AVX512DQ-BW-NEXT: retq4796;4797; AVX512DQ-BW-FCP-LABEL: load_i16_stride5_vf32:4798; AVX512DQ-BW-FCP: # %bb.0:4799; AVX512DQ-BW-FCP-NEXT: vmovdqa64 256(%rdi), %zmm04800; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm14801; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm24802; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm34803; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm44804; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm5 = [16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11]4805; AVX512DQ-BW-FCP-NEXT: # zmm5 = mem[0,1,2,3,0,1,2,3]4806; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm54807; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0]4808; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm64809; AVX512DQ-BW-FCP-NEXT: movl $67100672, %eax # imm = 0x3FFE0004810; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k14811; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm5, %zmm6 {%k1}4812; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm5 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,34,39,44,49,54,59]4813; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm6, %zmm54814; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm6 = [49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44]4815; AVX512DQ-BW-FCP-NEXT: # zmm6 = mem[0,1,2,3,0,1,2,3]4816; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm4, %zmm64817; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm7 = [1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0]4818; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm74819; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm6, %zmm7 {%k1}4820; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm6 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,35,40,45,50,55,60]4821; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm7, %zmm64822; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm7 = [50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45]4823; AVX512DQ-BW-FCP-NEXT: # zmm7 = mem[0,1,2,3,0,1,2,3]4824; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm4, %zmm74825; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm8 = [34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0]4826; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm2, %zmm84827; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm7, %zmm8 {%k1}4828; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm7 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,36,41,46,51,56,61]4829; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm8, %zmm74830; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm8 = [19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14]4831; AVX512DQ-BW-FCP-NEXT: # zmm8 = mem[0,1,2,3,0,1,2,3]4832; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm84833; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0]4834; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm1, %zmm2, %zmm94835; AVX512DQ-BW-FCP-NEXT: movl $33546240, %eax # imm = 0x1FFE0004836; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k14837; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm8, %zmm9 {%k1}4838; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm8 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,32,37,42,47,52,57,62]4839; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm9, %zmm84840; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm9 = [4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0]4841; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm2, %zmm1, %zmm94842; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm1 = [20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15]4843; AVX512DQ-BW-FCP-NEXT: # zmm1 = mem[0,1,2,3,0,1,2,3]4844; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm14845; AVX512DQ-BW-FCP-NEXT: movb $7, %al4846; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k14847; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm1 {%k1}4848; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm2 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,33,38,43,48,53,58,63]4849; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm1, %zmm24850; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm5, (%rsi)4851; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm6, (%rdx)4852; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm7, (%rcx)4853; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm8, (%r8)4854; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm2, (%r9)4855; AVX512DQ-BW-FCP-NEXT: vzeroupper4856; AVX512DQ-BW-FCP-NEXT: retq4857 %wide.vec = load <160 x i16>, ptr %in.vec, align 644858 %strided.vec0 = shufflevector <160 x i16> %wide.vec, <160 x i16> poison, <32 x i32> <i32 0, i32 5, i32 10, i32 15, i32 20, i32 25, i32 30, i32 35, i32 40, i32 45, i32 50, i32 55, i32 60, i32 65, i32 70, i32 75, i32 80, i32 85, i32 90, i32 95, i32 100, i32 105, i32 110, i32 115, i32 120, i32 125, i32 130, i32 135, i32 140, i32 145, i32 150, i32 155>4859 %strided.vec1 = shufflevector <160 x i16> %wide.vec, <160 x i16> poison, <32 x i32> <i32 1, i32 6, i32 11, i32 16, i32 21, i32 26, i32 31, i32 36, i32 41, i32 46, i32 51, i32 56, i32 61, i32 66, i32 71, i32 76, i32 81, i32 86, i32 91, i32 96, i32 101, i32 106, i32 111, i32 116, i32 121, i32 126, i32 131, i32 136, i32 141, i32 146, i32 151, i32 156>4860 %strided.vec2 = shufflevector <160 x i16> %wide.vec, <160 x i16> poison, <32 x i32> <i32 2, i32 7, i32 12, i32 17, i32 22, i32 27, i32 32, i32 37, i32 42, i32 47, i32 52, i32 57, i32 62, i32 67, i32 72, i32 77, i32 82, i32 87, i32 92, i32 97, i32 102, i32 107, i32 112, i32 117, i32 122, i32 127, i32 132, i32 137, i32 142, i32 147, i32 152, i32 157>4861 %strided.vec3 = shufflevector <160 x i16> %wide.vec, <160 x i16> poison, <32 x i32> <i32 3, i32 8, i32 13, i32 18, i32 23, i32 28, i32 33, i32 38, i32 43, i32 48, i32 53, i32 58, i32 63, i32 68, i32 73, i32 78, i32 83, i32 88, i32 93, i32 98, i32 103, i32 108, i32 113, i32 118, i32 123, i32 128, i32 133, i32 138, i32 143, i32 148, i32 153, i32 158>4862 %strided.vec4 = shufflevector <160 x i16> %wide.vec, <160 x i16> poison, <32 x i32> <i32 4, i32 9, i32 14, i32 19, i32 24, i32 29, i32 34, i32 39, i32 44, i32 49, i32 54, i32 59, i32 64, i32 69, i32 74, i32 79, i32 84, i32 89, i32 94, i32 99, i32 104, i32 109, i32 114, i32 119, i32 124, i32 129, i32 134, i32 139, i32 144, i32 149, i32 154, i32 159>4863 store <32 x i16> %strided.vec0, ptr %out.vec0, align 644864 store <32 x i16> %strided.vec1, ptr %out.vec1, align 644865 store <32 x i16> %strided.vec2, ptr %out.vec2, align 644866 store <32 x i16> %strided.vec3, ptr %out.vec3, align 644867 store <32 x i16> %strided.vec4, ptr %out.vec4, align 644868 ret void4869}4870 4871define void @load_i16_stride5_vf64(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4) nounwind {4872; SSE-LABEL: load_i16_stride5_vf64:4873; SSE: # %bb.0:4874; SSE-NEXT: subq $1016, %rsp # imm = 0x3F84875; SSE-NEXT: movdqa 464(%rdi), %xmm54876; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4877; SSE-NEXT: movdqa 400(%rdi), %xmm84878; SSE-NEXT: movdqa 416(%rdi), %xmm114879; SSE-NEXT: movdqa 448(%rdi), %xmm44880; SSE-NEXT: movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4881; SSE-NEXT: movdqa 432(%rdi), %xmm74882; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4883; SSE-NEXT: movdqa 144(%rdi), %xmm64884; SSE-NEXT: movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4885; SSE-NEXT: movdqa 80(%rdi), %xmm154886; SSE-NEXT: movdqa 96(%rdi), %xmm104887; SSE-NEXT: movdqa 128(%rdi), %xmm144888; SSE-NEXT: movdqa 112(%rdi), %xmm24889; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4890; SSE-NEXT: movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,0,65535,65535,65535]4891; SSE-NEXT: movdqa %xmm0, %xmm14892; SSE-NEXT: pandn %xmm2, %xmm14893; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm14[0,1,0,3]4894; SSE-NEXT: movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4895; SSE-NEXT: pand %xmm0, %xmm24896; SSE-NEXT: por %xmm1, %xmm24897; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm10[3,1,2,3]4898; SSE-NEXT: movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4899; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]4900; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm15[0,2,2,3]4901; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,3,2,3,4,5,6,7]4902; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]4903; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm2[2,3]4904; SSE-NEXT: movaps {{.*#+}} xmm13 = [65535,65535,65535,65535,65535,65535,65535,0]4905; SSE-NEXT: andps %xmm13, %xmm34906; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm6[0,1,0,1]4907; SSE-NEXT: movaps %xmm13, %xmm24908; SSE-NEXT: pandn %xmm1, %xmm24909; SSE-NEXT: por %xmm3, %xmm24910; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4911; SSE-NEXT: movdqa %xmm0, %xmm14912; SSE-NEXT: pandn %xmm7, %xmm14913; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm4[0,1,0,3]4914; SSE-NEXT: pand %xmm0, %xmm24915; SSE-NEXT: por %xmm1, %xmm24916; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm11[3,1,2,3]4917; SSE-NEXT: movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4918; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]4919; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm8[0,2,2,3]4920; SSE-NEXT: movdqa %xmm8, %xmm64921; SSE-NEXT: movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4922; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm3[0,3,2,3,4,5,6,7]4923; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]4924; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm2[2,3]4925; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm5[0,1,0,1]4926; SSE-NEXT: movaps %xmm13, %xmm24927; SSE-NEXT: andnps %xmm1, %xmm24928; SSE-NEXT: movdqa 32(%rdi), %xmm34929; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4930; SSE-NEXT: andps %xmm13, %xmm44931; SSE-NEXT: orps %xmm4, %xmm24932; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4933; SSE-NEXT: movdqa %xmm0, %xmm14934; SSE-NEXT: pandn %xmm3, %xmm14935; SSE-NEXT: movdqa 48(%rdi), %xmm24936; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4937; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,0,3]4938; SSE-NEXT: pand %xmm0, %xmm24939; SSE-NEXT: por %xmm1, %xmm24940; SSE-NEXT: movdqa 16(%rdi), %xmm14941; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4942; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]4943; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]4944; SSE-NEXT: movdqa (%rdi), %xmm94945; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm9[0,2,2,3]4946; SSE-NEXT: movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4947; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]4948; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]4949; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm2[2,3]4950; SSE-NEXT: movdqa 64(%rdi), %xmm14951; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4952; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,1]4953; SSE-NEXT: movaps %xmm13, %xmm24954; SSE-NEXT: andnps %xmm1, %xmm24955; SSE-NEXT: andps %xmm13, %xmm44956; SSE-NEXT: orps %xmm4, %xmm24957; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4958; SSE-NEXT: movdqa 352(%rdi), %xmm24959; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4960; SSE-NEXT: movdqa %xmm0, %xmm14961; SSE-NEXT: pandn %xmm2, %xmm14962; SSE-NEXT: movdqa 368(%rdi), %xmm24963; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4964; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,0,3]4965; SSE-NEXT: pand %xmm0, %xmm24966; SSE-NEXT: por %xmm1, %xmm24967; SSE-NEXT: movdqa 336(%rdi), %xmm14968; SSE-NEXT: movdqa %xmm1, (%rsp) # 16-byte Spill4969; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]4970; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]4971; SSE-NEXT: movdqa 320(%rdi), %xmm74972; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,2,2,3]4973; SSE-NEXT: movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4974; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]4975; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]4976; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm2[2,3]4977; SSE-NEXT: movdqa 384(%rdi), %xmm14978; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4979; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,1]4980; SSE-NEXT: movaps %xmm13, %xmm24981; SSE-NEXT: andnps %xmm1, %xmm24982; SSE-NEXT: andps %xmm13, %xmm44983; SSE-NEXT: orps %xmm4, %xmm24984; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4985; SSE-NEXT: movdqa 272(%rdi), %xmm24986; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4987; SSE-NEXT: movdqa %xmm0, %xmm14988; SSE-NEXT: pandn %xmm2, %xmm14989; SSE-NEXT: movdqa 288(%rdi), %xmm24990; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4991; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,0,3]4992; SSE-NEXT: pand %xmm0, %xmm24993; SSE-NEXT: por %xmm1, %xmm24994; SSE-NEXT: movdqa 256(%rdi), %xmm124995; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm12[3,1,2,3]4996; SSE-NEXT: movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4997; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]4998; SSE-NEXT: movdqa 240(%rdi), %xmm34999; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5000; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,2,2,3]5001; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]5002; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]5003; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm2[2,3]5004; SSE-NEXT: movdqa 304(%rdi), %xmm15005; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5006; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,1]5007; SSE-NEXT: movaps %xmm13, %xmm25008; SSE-NEXT: andnps %xmm1, %xmm25009; SSE-NEXT: andps %xmm13, %xmm45010; SSE-NEXT: orps %xmm4, %xmm25011; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5012; SSE-NEXT: movdqa 592(%rdi), %xmm25013; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5014; SSE-NEXT: movdqa %xmm0, %xmm15015; SSE-NEXT: pandn %xmm2, %xmm15016; SSE-NEXT: movdqa 608(%rdi), %xmm25017; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5018; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,0,3]5019; SSE-NEXT: pand %xmm0, %xmm25020; SSE-NEXT: por %xmm1, %xmm25021; SSE-NEXT: movdqa 576(%rdi), %xmm15022; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5023; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]5024; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]5025; SSE-NEXT: movdqa 560(%rdi), %xmm35026; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,2,2,3]5027; SSE-NEXT: movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5028; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]5029; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]5030; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm2[2,3]5031; SSE-NEXT: movdqa 624(%rdi), %xmm15032; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5033; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,1]5034; SSE-NEXT: movaps %xmm13, %xmm25035; SSE-NEXT: andnps %xmm1, %xmm25036; SSE-NEXT: andps %xmm13, %xmm45037; SSE-NEXT: orps %xmm4, %xmm25038; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5039; SSE-NEXT: movdqa 192(%rdi), %xmm25040; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5041; SSE-NEXT: movdqa %xmm0, %xmm15042; SSE-NEXT: pandn %xmm2, %xmm15043; SSE-NEXT: movdqa 208(%rdi), %xmm25044; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5045; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,1,0,3]5046; SSE-NEXT: pand %xmm0, %xmm45047; SSE-NEXT: por %xmm1, %xmm45048; SSE-NEXT: movdqa 176(%rdi), %xmm15049; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5050; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]5051; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]5052; SSE-NEXT: movdqa 160(%rdi), %xmm25053; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5054; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm2[0,2,2,3]5055; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[0,3,2,3,4,5,6,7]5056; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1]5057; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,1],xmm4[2,3]5058; SSE-NEXT: movdqa 224(%rdi), %xmm15059; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5060; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,1]5061; SSE-NEXT: movaps %xmm13, %xmm45062; SSE-NEXT: andnps %xmm1, %xmm45063; SSE-NEXT: andps %xmm13, %xmm55064; SSE-NEXT: orps %xmm5, %xmm45065; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5066; SSE-NEXT: movdqa 528(%rdi), %xmm15067; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5068; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,3]5069; SSE-NEXT: pand %xmm0, %xmm15070; SSE-NEXT: movdqa 512(%rdi), %xmm25071; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5072; SSE-NEXT: pandn %xmm2, %xmm05073; SSE-NEXT: por %xmm1, %xmm05074; SSE-NEXT: movdqa 496(%rdi), %xmm15075; SSE-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5076; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]5077; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]5078; SSE-NEXT: movdqa 480(%rdi), %xmm25079; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5080; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,2,2,3]5081; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]5082; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]5083; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm0[2,3]5084; SSE-NEXT: movdqa 544(%rdi), %xmm05085; SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5086; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]5087; SSE-NEXT: movaps %xmm13, %xmm15088; SSE-NEXT: andnps %xmm0, %xmm15089; SSE-NEXT: andps %xmm13, %xmm45090; SSE-NEXT: orps %xmm4, %xmm15091; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5092; SSE-NEXT: psrlq $48, %xmm105093; SSE-NEXT: movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5094; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm15[0,3,2,3]5095; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[1,2,2,3,4,5,6,7]5096; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm10[0],xmm1[1],xmm10[1]5097; SSE-NEXT: movdqa {{.*#+}} xmm0 = [0,0,0,65535,65535,65535,65535,65535]5098; SSE-NEXT: movdqa %xmm0, %xmm45099; SSE-NEXT: pandn %xmm1, %xmm45100; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm14[1,3,2,3]5101; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5102; SSE-NEXT: # xmm5 = mem[0,2,2,3]5103; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1]5104; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm5[0,1,2,3,7,5,6,7]5105; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]5106; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]5107; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,6,4,7]5108; SSE-NEXT: pand %xmm0, %xmm15109; SSE-NEXT: por %xmm4, %xmm15110; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload5111; SSE-NEXT: movdqa %xmm8, %xmm45112; SSE-NEXT: psllq $48, %xmm45113; SSE-NEXT: movaps %xmm13, %xmm25114; SSE-NEXT: andnps %xmm4, %xmm25115; SSE-NEXT: pand %xmm13, %xmm15116; SSE-NEXT: orps %xmm1, %xmm25117; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5118; SSE-NEXT: psrlq $48, %xmm115119; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm6[0,3,2,3]5120; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[1,2,2,3,4,5,6,7]5121; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm11[0],xmm4[1],xmm11[1]5122; SSE-NEXT: movdqa %xmm0, %xmm15123; SSE-NEXT: pandn %xmm4, %xmm15124; SSE-NEXT: pshufd $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload5125; SSE-NEXT: # xmm4 = mem[1,3,2,3]5126; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5127; SSE-NEXT: # xmm5 = mem[0,2,2,3]5128; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]5129; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm5[0,1,2,3,7,5,6,7]5130; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,1,2,1]5131; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,0,0,0,4,5,6,7]5132; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,6,4,7]5133; SSE-NEXT: pand %xmm0, %xmm45134; SSE-NEXT: por %xmm1, %xmm45135; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5136; SSE-NEXT: psllq $48, %xmm15137; SSE-NEXT: movdqa %xmm13, %xmm25138; SSE-NEXT: pandn %xmm1, %xmm25139; SSE-NEXT: pand %xmm13, %xmm45140; SSE-NEXT: por %xmm4, %xmm25141; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5142; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5143; SSE-NEXT: psrlq $48, %xmm15144; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm9[0,3,2,3]5145; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[1,2,2,3,4,5,6,7]5146; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]5147; SSE-NEXT: movdqa %xmm0, %xmm15148; SSE-NEXT: pandn %xmm4, %xmm15149; SSE-NEXT: pshufd $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload5150; SSE-NEXT: # xmm4 = mem[1,3,2,3]5151; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5152; SSE-NEXT: # xmm5 = mem[0,2,2,3]5153; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]5154; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm5[0,1,2,3,7,5,6,7]5155; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,1,2,1]5156; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,0,0,0,4,5,6,7]5157; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,6,4,7]5158; SSE-NEXT: pand %xmm0, %xmm45159; SSE-NEXT: por %xmm1, %xmm45160; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5161; SSE-NEXT: psllq $48, %xmm15162; SSE-NEXT: movdqa %xmm13, %xmm25163; SSE-NEXT: pandn %xmm1, %xmm25164; SSE-NEXT: pand %xmm13, %xmm45165; SSE-NEXT: por %xmm4, %xmm25166; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5167; SSE-NEXT: movdqa (%rsp), %xmm1 # 16-byte Reload5168; SSE-NEXT: psrlq $48, %xmm15169; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,3,2,3]5170; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[1,2,2,3,4,5,6,7]5171; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]5172; SSE-NEXT: movdqa %xmm0, %xmm15173; SSE-NEXT: pandn %xmm4, %xmm15174; SSE-NEXT: pshufd $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload5175; SSE-NEXT: # xmm4 = mem[1,3,2,3]5176; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5177; SSE-NEXT: # xmm5 = mem[0,2,2,3]5178; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]5179; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm5[0,1,2,3,7,5,6,7]5180; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,1,2,1]5181; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,0,0,0,4,5,6,7]5182; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,6,4,7]5183; SSE-NEXT: pand %xmm0, %xmm45184; SSE-NEXT: por %xmm1, %xmm45185; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5186; SSE-NEXT: psllq $48, %xmm15187; SSE-NEXT: movdqa %xmm13, %xmm25188; SSE-NEXT: pandn %xmm1, %xmm25189; SSE-NEXT: pand %xmm13, %xmm45190; SSE-NEXT: por %xmm4, %xmm25191; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5192; SSE-NEXT: psrlq $48, %xmm125193; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload5194; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm14[0,3,2,3]5195; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[1,2,2,3,4,5,6,7]5196; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm12[0],xmm4[1],xmm12[1]5197; SSE-NEXT: movdqa %xmm0, %xmm15198; SSE-NEXT: pandn %xmm4, %xmm15199; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload5200; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm10[1,3,2,3]5201; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5202; SSE-NEXT: # xmm5 = mem[0,2,2,3]5203; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]5204; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm5[0,1,2,3,7,5,6,7]5205; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,1,2,1]5206; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,0,0,0,4,5,6,7]5207; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,6,4,7]5208; SSE-NEXT: pand %xmm0, %xmm45209; SSE-NEXT: por %xmm1, %xmm45210; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload5211; SSE-NEXT: movdqa %xmm12, %xmm15212; SSE-NEXT: psllq $48, %xmm15213; SSE-NEXT: movdqa %xmm13, %xmm25214; SSE-NEXT: pandn %xmm1, %xmm25215; SSE-NEXT: pand %xmm13, %xmm45216; SSE-NEXT: por %xmm4, %xmm25217; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5218; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5219; SSE-NEXT: psrlq $48, %xmm15220; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,3,2,3]5221; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[1,2,2,3,4,5,6,7]5222; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]5223; SSE-NEXT: movdqa %xmm0, %xmm15224; SSE-NEXT: pandn %xmm4, %xmm15225; SSE-NEXT: pshufd $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload5226; SSE-NEXT: # xmm4 = mem[1,3,2,3]5227; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5228; SSE-NEXT: # xmm5 = mem[0,2,2,3]5229; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]5230; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm5[0,1,2,3,7,5,6,7]5231; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,1,2,1]5232; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,0,0,0,4,5,6,7]5233; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,6,4,7]5234; SSE-NEXT: pand %xmm0, %xmm45235; SSE-NEXT: por %xmm1, %xmm45236; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5237; SSE-NEXT: psllq $48, %xmm15238; SSE-NEXT: movdqa %xmm13, %xmm25239; SSE-NEXT: pandn %xmm1, %xmm25240; SSE-NEXT: pand %xmm13, %xmm45241; SSE-NEXT: por %xmm4, %xmm25242; SSE-NEXT: movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5243; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload5244; SSE-NEXT: movdqa %xmm7, %xmm15245; SSE-NEXT: psrlq $48, %xmm15246; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload5247; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm11[0,3,2,3]5248; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[1,2,2,3,4,5,6,7]5249; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]5250; SSE-NEXT: movdqa %xmm0, %xmm15251; SSE-NEXT: pandn %xmm4, %xmm15252; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload5253; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,3,2,3]5254; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload5255; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm9[0,2,2,3]5256; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]5257; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm5[0,1,2,3,7,5,6,7]5258; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,1,2,1]5259; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,0,0,0,4,5,6,7]5260; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,6,4,7]5261; SSE-NEXT: pand %xmm0, %xmm45262; SSE-NEXT: por %xmm1, %xmm45263; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload5264; SSE-NEXT: movdqa %xmm3, %xmm15265; SSE-NEXT: psllq $48, %xmm15266; SSE-NEXT: movdqa %xmm13, %xmm55267; SSE-NEXT: pandn %xmm1, %xmm55268; SSE-NEXT: pand %xmm13, %xmm45269; SSE-NEXT: por %xmm4, %xmm55270; SSE-NEXT: movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5271; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5272; SSE-NEXT: psrlq $48, %xmm15273; SSE-NEXT: pshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload5274; SSE-NEXT: # xmm4 = mem[0,3,2,3]5275; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[1,2,2,3,4,5,6,7]5276; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]5277; SSE-NEXT: pshufd $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload5278; SSE-NEXT: # xmm1 = mem[1,3,2,3]5279; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5280; SSE-NEXT: # xmm5 = mem[0,2,2,3]5281; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1]5282; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm5[0,1,2,3,7,5,6,7]5283; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]5284; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,0,0,0,4,5,6,7]5285; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,6,4,7]5286; SSE-NEXT: pand %xmm0, %xmm15287; SSE-NEXT: pandn %xmm4, %xmm05288; SSE-NEXT: por %xmm1, %xmm05289; SSE-NEXT: pand %xmm13, %xmm05290; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5291; SSE-NEXT: psllq $48, %xmm15292; SSE-NEXT: pandn %xmm1, %xmm135293; SSE-NEXT: por %xmm0, %xmm135294; SSE-NEXT: movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5295; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5296; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5297; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,0],xmm0[0,0]5298; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm0[2,3]5299; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,1,3]5300; SSE-NEXT: movaps {{.*#+}} xmm6 = [65535,65535,65535,0,0,0,65535,65535]5301; SSE-NEXT: movaps %xmm6, %xmm45302; SSE-NEXT: andnps %xmm1, %xmm45303; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm15[0,1,1,3]5304; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,7,6,7]5305; SSE-NEXT: punpckhdq {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5306; SSE-NEXT: # xmm5 = xmm5[2],mem[2],xmm5[3],mem[3]5307; SSE-NEXT: pand %xmm6, %xmm55308; SSE-NEXT: por %xmm4, %xmm55309; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]5310; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm8[0,1,2,0]5311; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,5]5312; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,1],xmm1[2,3]5313; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,1],xmm4[2,0]5314; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5315; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5316; SSE-NEXT: movaps %xmm0, %xmm15317; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload5318; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,0],xmm13[0,0]5319; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm13[2,3]5320; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,1,3]5321; SSE-NEXT: movaps %xmm6, %xmm45322; SSE-NEXT: andnps %xmm1, %xmm45323; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload5324; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm8[0,1,1,3]5325; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,7,6,7]5326; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload5327; SSE-NEXT: punpckhdq {{.*#+}} xmm5 = xmm5[2],xmm15[2],xmm5[3],xmm15[3]5328; SSE-NEXT: pand %xmm6, %xmm55329; SSE-NEXT: por %xmm4, %xmm55330; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]5331; SSE-NEXT: pshufd $36, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload5332; SSE-NEXT: # xmm4 = mem[0,1,2,0]5333; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,5]5334; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,1],xmm1[2,3]5335; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,1],xmm4[2,0]5336; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5337; SSE-NEXT: movdqa %xmm10, %xmm15338; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload5339; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,0],xmm4[0,0]5340; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm4[2,3]5341; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,1,3]5342; SSE-NEXT: movaps %xmm6, %xmm45343; SSE-NEXT: andnps %xmm1, %xmm45344; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm14[0,1,1,3]5345; SSE-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,7,6,7]5346; SSE-NEXT: punpckhdq {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5347; SSE-NEXT: # xmm5 = xmm5[2],mem[2],xmm5[3],mem[3]5348; SSE-NEXT: pand %xmm6, %xmm55349; SSE-NEXT: por %xmm4, %xmm55350; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]5351; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm12[0,1,2,0]5352; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,5]5353; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,1],xmm1[2,3]5354; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,1],xmm4[2,0]5355; SSE-NEXT: movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5356; SSE-NEXT: movdqa %xmm2, %xmm15357; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,0],xmm9[0,0]5358; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm9[2,3]5359; SSE-NEXT: movdqa %xmm9, %xmm125360; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,1,3]5361; SSE-NEXT: movaps %xmm6, %xmm45362; SSE-NEXT: andnps %xmm1, %xmm45363; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm11[0,1,1,3]5364; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm5[0,1,2,3,4,7,6,7]5365; SSE-NEXT: punpckhdq {{.*#+}} xmm2 = xmm2[2],xmm7[2],xmm2[3],xmm7[3]5366; SSE-NEXT: pand %xmm6, %xmm25367; SSE-NEXT: por %xmm4, %xmm25368; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]5369; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,1,2,0]5370; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,5]5371; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,1],xmm1[2,3]5372; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm4[2,0]5373; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5374; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5375; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload5376; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,0],xmm2[0,0]5377; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm2[2,3]5378; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,1,3]5379; SSE-NEXT: movaps %xmm6, %xmm45380; SSE-NEXT: andnps %xmm1, %xmm45381; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5382; SSE-NEXT: # xmm5 = mem[0,1,1,3]5383; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm5[0,1,2,3,4,7,6,7]5384; SSE-NEXT: punpckhdq {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload5385; SSE-NEXT: # xmm2 = xmm2[2],mem[2],xmm2[3],mem[3]5386; SSE-NEXT: pand %xmm6, %xmm25387; SSE-NEXT: por %xmm4, %xmm25388; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]5389; SSE-NEXT: pshufd $36, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload5390; SSE-NEXT: # xmm4 = mem[0,1,2,0]5391; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,5]5392; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,1],xmm1[2,3]5393; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm4[2,0]5394; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5395; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5396; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload5397; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,0],xmm7[0,0]5398; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm7[2,3]5399; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,1,3]5400; SSE-NEXT: movaps %xmm6, %xmm45401; SSE-NEXT: andnps %xmm1, %xmm45402; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5403; SSE-NEXT: # xmm5 = mem[0,1,1,3]5404; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm5[0,1,2,3,4,7,6,7]5405; SSE-NEXT: movdqa (%rsp), %xmm9 # 16-byte Reload5406; SSE-NEXT: punpckhdq {{.*#+}} xmm2 = xmm2[2],xmm9[2],xmm2[3],xmm9[3]5407; SSE-NEXT: pand %xmm6, %xmm25408; SSE-NEXT: por %xmm4, %xmm25409; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]5410; SSE-NEXT: pshufd $36, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload5411; SSE-NEXT: # xmm4 = mem[0,1,2,0]5412; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,5]5413; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,1],xmm1[2,3]5414; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm4[2,0]5415; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5416; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5417; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload5418; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,0],xmm2[0,0]5419; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm2[2,3]5420; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,1,3]5421; SSE-NEXT: movaps %xmm6, %xmm45422; SSE-NEXT: andnps %xmm1, %xmm45423; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5424; SSE-NEXT: # xmm5 = mem[0,1,1,3]5425; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm5[0,1,2,3,4,7,6,7]5426; SSE-NEXT: punpckhdq {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload5427; SSE-NEXT: # xmm2 = xmm2[2],mem[2],xmm2[3],mem[3]5428; SSE-NEXT: pand %xmm6, %xmm25429; SSE-NEXT: por %xmm4, %xmm25430; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]5431; SSE-NEXT: pshufd $36, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload5432; SSE-NEXT: # xmm4 = mem[0,1,2,0]5433; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,5]5434; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,1],xmm1[2,3]5435; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm4[2,0]5436; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5437; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5438; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload5439; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,0],xmm10[0,0]5440; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm10[2,3]5441; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,1,3]5442; SSE-NEXT: movaps %xmm6, %xmm45443; SSE-NEXT: andnps %xmm1, %xmm45444; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5445; SSE-NEXT: # xmm5 = mem[0,1,1,3]5446; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm5[0,1,2,3,4,7,6,7]5447; SSE-NEXT: punpckhdq {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload5448; SSE-NEXT: # xmm2 = xmm2[2],mem[2],xmm2[3],mem[3]5449; SSE-NEXT: pand %xmm6, %xmm25450; SSE-NEXT: por %xmm4, %xmm25451; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]5452; SSE-NEXT: pshufd $36, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload5453; SSE-NEXT: # xmm4 = mem[0,1,2,0]5454; SSE-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,5]5455; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,1],xmm1[2,3]5456; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm4[2,0]5457; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5458; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm13[2,2,2,2,4,5,6,7]5459; SSE-NEXT: movdqa %xmm6, %xmm45460; SSE-NEXT: pandn %xmm1, %xmm45461; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm8[1,1,1,1]5462; SSE-NEXT: pshufd {{.*#+}} xmm5 = xmm15[0,2,2,3]5463; SSE-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1]5464; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm5[0,3,2,3,4,5,6,7]5465; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]5466; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,3,4,5,6,7]5467; SSE-NEXT: pand %xmm6, %xmm15468; SSE-NEXT: por %xmm4, %xmm15469; SSE-NEXT: movdqa %xmm1, %xmm25470; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0],xmm13[3,0]5471; SSE-NEXT: movaps %xmm6, %xmm35472; SSE-NEXT: andnps %xmm13, %xmm35473; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5474; SSE-NEXT: shufps {{.*#+}} xmm13 = xmm13[0,1],xmm0[0,2]5475; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm13[0,1,2,3,7,4,6,7]5476; SSE-NEXT: pshufd $196, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload5477; SSE-NEXT: # xmm3 = mem[0,1,0,3]5478; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,6]5479; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[3,1],xmm1[2,3]5480; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm3[2,0]5481; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5482; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload5483; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm14[2,2,2,2,4,5,6,7]5484; SSE-NEXT: movdqa %xmm6, %xmm35485; SSE-NEXT: pandn %xmm1, %xmm35486; SSE-NEXT: pshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload5487; SSE-NEXT: # xmm1 = mem[1,1,1,1]5488; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload5489; SSE-NEXT: # xmm4 = mem[0,2,2,3]5490; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]5491; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm4[0,3,2,3,4,5,6,7]5492; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]5493; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,3,4,5,6,7]5494; SSE-NEXT: pand %xmm6, %xmm15495; SSE-NEXT: por %xmm3, %xmm15496; SSE-NEXT: movdqa %xmm1, %xmm45497; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5498; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm14[3,0]5499; SSE-NEXT: movaps %xmm6, %xmm25500; SSE-NEXT: andnps %xmm14, %xmm25501; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5502; SSE-NEXT: shufps {{.*#+}} xmm14 = xmm14[0,1],xmm1[0,2]5503; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm14[0,1,2,3,7,4,6,7]5504; SSE-NEXT: pshufd $196, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload5505; SSE-NEXT: # xmm3 = mem[0,1,0,3]5506; SSE-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,5,6]5507; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[3,1],xmm1[2,3]5508; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[2,0]5509; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5510; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm12[2,2,2,2,4,5,6,7]5511; SSE-NEXT: movdqa %xmm6, %xmm35512; SSE-NEXT: pandn %xmm1, %xmm35513; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm11[1,1,1,1]5514; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload5515; SSE-NEXT: pshufd {{.*#+}} xmm4 = xmm13[0,2,2,3]5516; SSE-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]5517; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm4[0,3,2,3,4,5,6,7]5518; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]5519; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,3,4,5,6,7]5520; SSE-NEXT: pand %xmm6, %xmm15521; SSE-NEXT: por %xmm3, %xmm15522; SSE-NEXT: movdqa %xmm1, %xmm35523; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5524; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm12[3,0]5525; SSE-NEXT: movaps %xmm6, %xmm25526; SSE-NEXT: andnps %xmm12, %xmm25527; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5528; SSE-NEXT: shufps {{.*#+}} xmm12 = xmm12[0,1],xmm1[0,2]5529; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm12[0,1,2,3,7,4,6,7]5530; SSE-NEXT: pshufd $196, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload5531; SSE-NEXT: # xmm2 = mem[0,1,0,3]5532; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,6]5533; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[3,1],xmm1[2,3]5534; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm2[2,0]5535; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5536; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload5537; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm4[2,2,2,2,4,5,6,7]5538; SSE-NEXT: movdqa %xmm6, %xmm25539; SSE-NEXT: pandn %xmm1, %xmm25540; SSE-NEXT: pshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload5541; SSE-NEXT: # xmm1 = mem[1,1,1,1]5542; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload5543; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm5[0,2,2,3]5544; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]5545; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm3[0,3,2,3,4,5,6,7]5546; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]5547; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,3,4,5,6,7]5548; SSE-NEXT: pand %xmm6, %xmm15549; SSE-NEXT: por %xmm2, %xmm15550; SSE-NEXT: movdqa %xmm1, %xmm35551; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5552; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm4[3,0]5553; SSE-NEXT: movaps %xmm4, %xmm25554; SSE-NEXT: movaps %xmm6, %xmm45555; SSE-NEXT: andnps %xmm2, %xmm45556; SSE-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5557; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm1[0,2]5558; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm2[0,1,2,3,7,4,6,7]5559; SSE-NEXT: pshufd $196, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload5560; SSE-NEXT: # xmm2 = mem[0,1,0,3]5561; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,6]5562; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[3,1],xmm1[2,3]5563; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm2[2,0]5564; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5565; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm7[2,2,2,2,4,5,6,7]5566; SSE-NEXT: movdqa %xmm6, %xmm25567; SSE-NEXT: pandn %xmm1, %xmm25568; SSE-NEXT: pshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload5569; SSE-NEXT: # xmm1 = mem[1,1,1,1]5570; SSE-NEXT: movdqa %xmm9, %xmm115571; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm9[0,2,2,3]5572; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]5573; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm3[0,3,2,3,4,5,6,7]5574; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]5575; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[1,0,3,3,4,5,6,7]5576; SSE-NEXT: pand %xmm6, %xmm05577; SSE-NEXT: por %xmm2, %xmm05578; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5579; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm7[3,0]5580; SSE-NEXT: movaps %xmm6, %xmm25581; SSE-NEXT: andnps %xmm7, %xmm25582; SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5583; SSE-NEXT: shufps {{.*#+}} xmm7 = xmm7[0,1],xmm1[0,2]5584; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm7[0,1,2,3,7,4,6,7]5585; SSE-NEXT: pshufd $196, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload5586; SSE-NEXT: # xmm2 = mem[0,1,0,3]5587; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,6]5588; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[3,1],xmm1[2,3]5589; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm2[2,0]5590; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5591; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload5592; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm4[2,2,2,2,4,5,6,7]5593; SSE-NEXT: movdqa %xmm6, %xmm25594; SSE-NEXT: pandn %xmm1, %xmm25595; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload5596; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm15[1,1,1,1]5597; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload5598; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm9[0,2,2,3]5599; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]5600; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm3[0,3,2,3,4,5,6,7]5601; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]5602; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[1,0,3,3,4,5,6,7]5603; SSE-NEXT: pand %xmm6, %xmm05604; SSE-NEXT: por %xmm2, %xmm05605; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5606; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm4[3,0]5607; SSE-NEXT: movaps %xmm4, %xmm25608; SSE-NEXT: movaps %xmm6, %xmm35609; SSE-NEXT: andnps %xmm4, %xmm35610; SSE-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5611; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm1[0,2]5612; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm2[0,1,2,3,7,4,6,7]5613; SSE-NEXT: pshufd $196, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload5614; SSE-NEXT: # xmm2 = mem[0,1,0,3]5615; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,6]5616; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[3,1],xmm1[2,3]5617; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm2[2,0]5618; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5619; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm10[2,2,2,2,4,5,6,7]5620; SSE-NEXT: movdqa %xmm6, %xmm25621; SSE-NEXT: pandn %xmm1, %xmm25622; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload5623; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm12[1,1,1,1]5624; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload5625; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm7[0,2,2,3]5626; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]5627; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm3[0,3,2,3,4,5,6,7]5628; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]5629; SSE-NEXT: pshuflw {{.*#+}} xmm14 = xmm1[1,0,3,3,4,5,6,7]5630; SSE-NEXT: pand %xmm6, %xmm145631; SSE-NEXT: por %xmm2, %xmm145632; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5633; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm10[3,0]5634; SSE-NEXT: movaps %xmm6, %xmm05635; SSE-NEXT: andnps %xmm10, %xmm05636; SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5637; SSE-NEXT: shufps {{.*#+}} xmm10 = xmm10[0,1],xmm1[0,2]5638; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm10[0,1,2,3,7,4,6,7]5639; SSE-NEXT: pshufd $196, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload5640; SSE-NEXT: # xmm2 = mem[0,1,0,3]5641; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,6]5642; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[3,1],xmm1[2,3]5643; SSE-NEXT: shufps {{.*#+}} xmm14 = xmm14[0,1],xmm2[2,0]5644; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5645; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm0[2,2,2,2,4,5,6,7]5646; SSE-NEXT: movdqa %xmm6, %xmm25647; SSE-NEXT: pandn %xmm1, %xmm25648; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload5649; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm8[1,1,1,1]5650; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload5651; SSE-NEXT: pshufd {{.*#+}} xmm3 = xmm4[0,2,2,3]5652; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]5653; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm3[0,3,2,3,4,5,6,7]5654; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]5655; SSE-NEXT: pshuflw {{.*#+}} xmm10 = xmm1[1,0,3,3,4,5,6,7]5656; SSE-NEXT: pand %xmm6, %xmm105657; SSE-NEXT: por %xmm2, %xmm105658; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload5659; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5660; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm2[3,0]5661; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm1[0,2]5662; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload5663; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5664; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm3[3,0]5665; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm1[0,2]5666; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5667; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm13[3,0]5668; SSE-NEXT: shufps {{.*#+}} xmm13 = xmm13[0,1],xmm1[0,2]5669; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5670; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm5[3,0]5671; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,1],xmm1[0,2]5672; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5673; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm11[3,0]5674; SSE-NEXT: shufps {{.*#+}} xmm11 = xmm11[0,1],xmm1[0,2]5675; SSE-NEXT: movaps %xmm11, (%rsp) # 16-byte Spill5676; SSE-NEXT: shufps {{.*#+}} xmm15 = xmm15[2,0],xmm9[3,0]5677; SSE-NEXT: shufps {{.*#+}} xmm9 = xmm9[0,1],xmm15[0,2]5678; SSE-NEXT: movdqa %xmm7, %xmm15679; SSE-NEXT: shufps {{.*#+}} xmm12 = xmm12[2,0],xmm7[3,0]5680; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm12[0,2]5681; SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5682; SSE-NEXT: movdqa %xmm4, %xmm15683; SSE-NEXT: shufps {{.*#+}} xmm8 = xmm8[2,0],xmm4[3,0]5684; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm8[0,2]5685; SSE-NEXT: movaps %xmm1, %xmm155686; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload5687; SSE-NEXT: movaps %xmm4, %xmm15688; SSE-NEXT: movaps %xmm4, %xmm125689; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm0[3,0]5690; SSE-NEXT: movaps %xmm0, %xmm115691; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7]5692; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]5693; SSE-NEXT: pshuflw {{.*#+}} xmm8 = xmm2[2,1,3,3,4,5,6,7]5694; SSE-NEXT: pand %xmm6, %xmm85695; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm3[0,1,2,3,4,6,6,7]5696; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]5697; SSE-NEXT: pshuflw {{.*#+}} xmm7 = xmm2[2,1,3,3,4,5,6,7]5698; SSE-NEXT: pand %xmm6, %xmm75699; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm13[0,1,2,3,4,6,6,7]5700; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]5701; SSE-NEXT: pshuflw {{.*#+}} xmm0 = xmm2[2,1,3,3,4,5,6,7]5702; SSE-NEXT: pand %xmm6, %xmm05703; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm5[0,1,2,3,4,6,6,7]5704; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]5705; SSE-NEXT: pshuflw {{.*#+}} xmm5 = xmm2[2,1,3,3,4,5,6,7]5706; SSE-NEXT: pand %xmm6, %xmm55707; SSE-NEXT: pshufhw $232, (%rsp), %xmm2 # 16-byte Folded Reload5708; SSE-NEXT: # xmm2 = mem[0,1,2,3,4,6,6,7]5709; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]5710; SSE-NEXT: pshuflw {{.*#+}} xmm4 = xmm2[2,1,3,3,4,5,6,7]5711; SSE-NEXT: pand %xmm6, %xmm45712; SSE-NEXT: pshufhw {{.*#+}} xmm2 = xmm9[0,1,2,3,4,6,6,7]5713; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]5714; SSE-NEXT: pshuflw {{.*#+}} xmm3 = xmm2[2,1,3,3,4,5,6,7]5715; SSE-NEXT: pand %xmm6, %xmm35716; SSE-NEXT: pshufhw $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload5717; SSE-NEXT: # xmm2 = mem[0,1,2,3,4,6,6,7]5718; SSE-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]5719; SSE-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[2,1,3,3,4,5,6,7]5720; SSE-NEXT: pand %xmm6, %xmm25721; SSE-NEXT: pshufhw {{.*#+}} xmm9 = xmm15[0,1,2,3,4,6,6,7]5722; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm9[0,2,2,3]5723; SSE-NEXT: pshuflw {{.*#+}} xmm9 = xmm9[2,1,3,3,4,5,6,7]5724; SSE-NEXT: pand %xmm6, %xmm95725; SSE-NEXT: andnps %xmm11, %xmm65726; SSE-NEXT: shufps {{.*#+}} xmm11 = xmm11[0,1],xmm1[0,2]5727; SSE-NEXT: pshufhw {{.*#+}} xmm1 = xmm11[0,1,2,3,7,4,6,7]5728; SSE-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload5729; SSE-NEXT: pshufd {{.*#+}} xmm15 = xmm11[0,1,0,3]5730; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,5,6]5731; SSE-NEXT: shufps {{.*#+}} xmm15 = xmm15[3,1],xmm1[2,3]5732; SSE-NEXT: shufps {{.*#+}} xmm10 = xmm10[0,1],xmm15[2,0]5733; SSE-NEXT: por {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload5734; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload5735; SSE-NEXT: # xmm1 = mem[0,2,2,3]5736; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload5737; SSE-NEXT: # xmm15 = mem[0,1,1,3]5738; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]5739; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,4,7]5740; SSE-NEXT: shufps {{.*#+}} xmm15 = xmm15[3,1],xmm1[1,3]5741; SSE-NEXT: shufps {{.*#+}} xmm8 = xmm8[0,1],xmm15[2,0]5742; SSE-NEXT: por {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload5743; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload5744; SSE-NEXT: # xmm1 = mem[0,2,2,3]5745; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload5746; SSE-NEXT: # xmm15 = mem[0,1,1,3]5747; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]5748; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,4,7]5749; SSE-NEXT: shufps {{.*#+}} xmm15 = xmm15[3,1],xmm1[1,3]5750; SSE-NEXT: shufps {{.*#+}} xmm7 = xmm7[0,1],xmm15[2,0]5751; SSE-NEXT: por {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload5752; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload5753; SSE-NEXT: # xmm1 = mem[0,2,2,3]5754; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload5755; SSE-NEXT: # xmm15 = mem[0,1,1,3]5756; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]5757; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,4,7]5758; SSE-NEXT: shufps {{.*#+}} xmm15 = xmm15[3,1],xmm1[1,3]5759; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm15[2,0]5760; SSE-NEXT: por {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload5761; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload5762; SSE-NEXT: # xmm1 = mem[0,2,2,3]5763; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload5764; SSE-NEXT: # xmm15 = mem[0,1,1,3]5765; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]5766; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,4,7]5767; SSE-NEXT: shufps {{.*#+}} xmm15 = xmm15[3,1],xmm1[1,3]5768; SSE-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,1],xmm15[2,0]5769; SSE-NEXT: por {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload5770; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload5771; SSE-NEXT: # xmm1 = mem[0,2,2,3]5772; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload5773; SSE-NEXT: # xmm15 = mem[0,1,1,3]5774; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]5775; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,4,7]5776; SSE-NEXT: shufps {{.*#+}} xmm15 = xmm15[3,1],xmm1[1,3]5777; SSE-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm15[2,0]5778; SSE-NEXT: por {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload5779; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload5780; SSE-NEXT: # xmm1 = mem[0,2,2,3]5781; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload5782; SSE-NEXT: # xmm15 = mem[0,1,1,3]5783; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]5784; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,4,7]5785; SSE-NEXT: shufps {{.*#+}} xmm15 = xmm15[3,1],xmm1[1,3]5786; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm15[2,0]5787; SSE-NEXT: por {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload5788; SSE-NEXT: pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload5789; SSE-NEXT: # xmm1 = mem[0,2,2,3]5790; SSE-NEXT: pshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload5791; SSE-NEXT: # xmm15 = mem[0,1,1,3]5792; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]5793; SSE-NEXT: pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,4,7]5794; SSE-NEXT: shufps {{.*#+}} xmm15 = xmm15[3,1],xmm1[1,3]5795; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1],xmm15[2,0]5796; SSE-NEXT: orps %xmm9, %xmm65797; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm12[0,2,2,3]5798; SSE-NEXT: pshufd {{.*#+}} xmm9 = xmm11[0,1,1,3]5799; SSE-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]5800; SSE-NEXT: pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,5,4,7]5801; SSE-NEXT: shufps {{.*#+}} xmm9 = xmm9[3,1],xmm1[1,3]5802; SSE-NEXT: shufps {{.*#+}} xmm6 = xmm6[0,1],xmm9[2,0]5803; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5804; SSE-NEXT: movaps %xmm1, 96(%rsi)5805; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5806; SSE-NEXT: movaps %xmm1, 32(%rsi)5807; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5808; SSE-NEXT: movaps %xmm1, 112(%rsi)5809; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5810; SSE-NEXT: movaps %xmm1, 48(%rsi)5811; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5812; SSE-NEXT: movaps %xmm1, 64(%rsi)5813; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5814; SSE-NEXT: movaps %xmm1, (%rsi)5815; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5816; SSE-NEXT: movaps %xmm1, 80(%rsi)5817; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5818; SSE-NEXT: movaps %xmm1, 16(%rsi)5819; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5820; SSE-NEXT: movaps %xmm1, 96(%rdx)5821; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5822; SSE-NEXT: movaps %xmm1, 32(%rdx)5823; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5824; SSE-NEXT: movaps %xmm1, 112(%rdx)5825; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5826; SSE-NEXT: movaps %xmm1, 48(%rdx)5827; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5828; SSE-NEXT: movaps %xmm1, 64(%rdx)5829; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5830; SSE-NEXT: movaps %xmm1, (%rdx)5831; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5832; SSE-NEXT: movaps %xmm1, 80(%rdx)5833; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5834; SSE-NEXT: movaps %xmm1, 16(%rdx)5835; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5836; SSE-NEXT: movaps %xmm1, 96(%rcx)5837; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5838; SSE-NEXT: movaps %xmm1, 112(%rcx)5839; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5840; SSE-NEXT: movaps %xmm1, 64(%rcx)5841; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5842; SSE-NEXT: movaps %xmm1, 80(%rcx)5843; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5844; SSE-NEXT: movaps %xmm1, 32(%rcx)5845; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5846; SSE-NEXT: movaps %xmm1, 48(%rcx)5847; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5848; SSE-NEXT: movaps %xmm1, (%rcx)5849; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5850; SSE-NEXT: movaps %xmm1, 16(%rcx)5851; SSE-NEXT: movaps %xmm10, 112(%r8)5852; SSE-NEXT: movaps %xmm14, 96(%r8)5853; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5854; SSE-NEXT: movaps %xmm1, 80(%r8)5855; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5856; SSE-NEXT: movaps %xmm1, 64(%r8)5857; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5858; SSE-NEXT: movaps %xmm1, 48(%r8)5859; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5860; SSE-NEXT: movaps %xmm1, 32(%r8)5861; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5862; SSE-NEXT: movaps %xmm1, 16(%r8)5863; SSE-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload5864; SSE-NEXT: movaps %xmm1, (%r8)5865; SSE-NEXT: movaps %xmm6, 112(%r9)5866; SSE-NEXT: movaps %xmm2, 96(%r9)5867; SSE-NEXT: movaps %xmm3, 80(%r9)5868; SSE-NEXT: movaps %xmm4, 64(%r9)5869; SSE-NEXT: movaps %xmm5, 48(%r9)5870; SSE-NEXT: movaps %xmm0, 32(%r9)5871; SSE-NEXT: movaps %xmm7, 16(%r9)5872; SSE-NEXT: movaps %xmm8, (%r9)5873; SSE-NEXT: addq $1016, %rsp # imm = 0x3F85874; SSE-NEXT: retq5875;5876; AVX-LABEL: load_i16_stride5_vf64:5877; AVX: # %bb.0:5878; AVX-NEXT: subq $1032, %rsp # imm = 0x4085879; AVX-NEXT: vmovdqa 304(%rdi), %xmm05880; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5881; AVX-NEXT: vmovdqa 288(%rdi), %xmm15882; AVX-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5883; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3],xmm1[4,5,6,7]5884; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [6,7,2,3,4,5,6,7,6,7,2,3,12,13,6,7]5885; AVX-NEXT: vpshufb %xmm1, %xmm0, %xmm05886; AVX-NEXT: vmovdqa 256(%rdi), %xmm25887; AVX-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5888; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,1,1,3]5889; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]5890; AVX-NEXT: vmovdqa 272(%rdi), %xmm155891; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm15[1]5892; AVX-NEXT: vmovdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5893; AVX-NEXT: vmovdqa 240(%rdi), %xmm35894; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5895; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]5896; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,3,2,3,4,5,6,7]5897; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1],xmm2[2,3,4,5,6,7]5898; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4],xmm0[5,6,7]5899; AVX-NEXT: vmovdqa 208(%rdi), %xmm05900; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5901; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]5902; AVX-NEXT: vmovdqa 192(%rdi), %xmm35903; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5904; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm3[4],xmm0[5,6,7]5905; AVX-NEXT: vmovdqa 176(%rdi), %xmm35906; AVX-NEXT: vmovdqa %xmm3, (%rsp) # 16-byte Spill5907; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[3,1,2,3]5908; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,1,2,3,4,5,6,7]5909; AVX-NEXT: vmovdqa 160(%rdi), %xmm45910; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5911; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]5912; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]5913; AVX-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]5914; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3],xmm0[4,5,6,7]5915; AVX-NEXT: vmovaps {{.*#+}} ymm5 = [65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,65535,65535,65535]5916; AVX-NEXT: vandps %ymm5, %ymm3, %ymm35917; AVX-NEXT: vmovaps 224(%rdi), %xmm05918; AVX-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5919; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm0[0,1,0,1]5920; AVX-NEXT: vandnps %ymm4, %ymm5, %ymm45921; AVX-NEXT: vorps %ymm4, %ymm3, %ymm35922; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm05923; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5924; AVX-NEXT: vmovdqa 576(%rdi), %xmm05925; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5926; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,1,1,3]5927; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]5928; AVX-NEXT: vmovdqa 592(%rdi), %xmm125929; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm12[1]5930; AVX-NEXT: vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5931; AVX-NEXT: vmovdqa 560(%rdi), %xmm05932; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5933; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[0,2,2,3]5934; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,3,2,3,4,5,6,7]5935; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1],xmm2[2,3,4,5,6,7]5936; AVX-NEXT: vmovdqa 624(%rdi), %xmm35937; AVX-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5938; AVX-NEXT: vmovdqa 608(%rdi), %xmm05939; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5940; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm0[0,1],xmm3[2,3],xmm0[4,5,6,7]5941; AVX-NEXT: vpshufb %xmm1, %xmm3, %xmm35942; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4],xmm3[5,6,7]5943; AVX-NEXT: vmovdqa 496(%rdi), %xmm05944; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5945; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[3,1,2,3]5946; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,1,2,3,4,5,6,7]5947; AVX-NEXT: vmovdqa 480(%rdi), %xmm95948; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm9[0,2,2,3]5949; AVX-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5950; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]5951; AVX-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]5952; AVX-NEXT: vmovdqa 528(%rdi), %xmm05953; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5954; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm0[0,1,0,3]5955; AVX-NEXT: vmovdqa 512(%rdi), %xmm135956; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3],xmm13[4],xmm4[5,6,7]5957; AVX-NEXT: vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5958; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3],xmm4[4,5,6,7]5959; AVX-NEXT: vandps %ymm5, %ymm3, %ymm35960; AVX-NEXT: vmovaps 544(%rdi), %xmm115961; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm11[0,1,0,1]5962; AVX-NEXT: vmovaps %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5963; AVX-NEXT: vandnps %ymm4, %ymm5, %ymm45964; AVX-NEXT: vorps %ymm4, %ymm3, %ymm35965; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm05966; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5967; AVX-NEXT: vmovdqa 96(%rdi), %xmm105968; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm10[0,1,1,3]5969; AVX-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5970; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]5971; AVX-NEXT: vmovdqa 112(%rdi), %xmm05972; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5973; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm0[1]5974; AVX-NEXT: vmovdqa 80(%rdi), %xmm05975; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5976; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[0,2,2,3]5977; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,3,2,3,4,5,6,7]5978; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1],xmm2[2,3,4,5,6,7]5979; AVX-NEXT: vmovdqa 144(%rdi), %xmm75980; AVX-NEXT: vmovdqa 128(%rdi), %xmm65981; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm6[0,1],xmm7[2,3],xmm6[4,5,6,7]5982; AVX-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5983; AVX-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5984; AVX-NEXT: vpshufb %xmm1, %xmm3, %xmm35985; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4],xmm3[5,6,7]5986; AVX-NEXT: vmovdqa 16(%rdi), %xmm05987; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5988; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[3,1,2,3]5989; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,1,2,3,4,5,6,7]5990; AVX-NEXT: vmovdqa (%rdi), %xmm05991; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5992; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm0[0,2,2,3]5993; AVX-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]5994; AVX-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]5995; AVX-NEXT: vmovdqa 32(%rdi), %xmm05996; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5997; AVX-NEXT: vmovdqa 48(%rdi), %xmm45998; AVX-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5999; AVX-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[0,1,0,3]6000; AVX-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3],xmm0[4],xmm4[5,6,7]6001; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3],xmm4[4,5,6,7]6002; AVX-NEXT: vandps %ymm5, %ymm3, %ymm36003; AVX-NEXT: vmovaps 64(%rdi), %xmm06004; AVX-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6005; AVX-NEXT: vshufps {{.*#+}} xmm4 = xmm0[0,1,0,1]6006; AVX-NEXT: vandnps %ymm4, %ymm5, %ymm46007; AVX-NEXT: vorps %ymm4, %ymm3, %ymm36008; AVX-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm06009; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6010; AVX-NEXT: vmovdqa 464(%rdi), %xmm86011; AVX-NEXT: vmovdqa 448(%rdi), %xmm06012; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6013; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm0[0,1],xmm8[2,3],xmm0[4,5,6,7]6014; AVX-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6015; AVX-NEXT: vpshufb %xmm1, %xmm2, %xmm16016; AVX-NEXT: vmovdqa 416(%rdi), %xmm06017; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6018; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[0,1,1,3]6019; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]6020; AVX-NEXT: vmovdqa 432(%rdi), %xmm06021; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6022; AVX-NEXT: vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm0[1]6023; AVX-NEXT: vmovdqa 400(%rdi), %xmm06024; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6025; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[0,2,2,3]6026; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,3,2,3,4,5,6,7]6027; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1],xmm2[2,3,4,5,6,7]6028; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4],xmm1[5,6,7]6029; AVX-NEXT: vmovdqa 336(%rdi), %xmm06030; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6031; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[3,1,2,3]6032; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[2,1,2,3,4,5,6,7]6033; AVX-NEXT: vmovdqa 320(%rdi), %xmm06034; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6035; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[0,2,2,3]6036; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[0,3,2,3,4,5,6,7]6037; AVX-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]6038; AVX-NEXT: vmovdqa 368(%rdi), %xmm06039; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6040; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[0,1,0,3]6041; AVX-NEXT: vmovdqa 352(%rdi), %xmm06042; AVX-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6043; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3],xmm0[4],xmm3[5,6,7]6044; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3],xmm3[4,5,6,7]6045; AVX-NEXT: vandps %ymm5, %ymm2, %ymm26046; AVX-NEXT: vmovaps 384(%rdi), %xmm06047; AVX-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6048; AVX-NEXT: vshufps {{.*#+}} xmm3 = xmm0[0,1,0,1]6049; AVX-NEXT: vandnps %ymm3, %ymm5, %ymm36050; AVX-NEXT: vorps %ymm3, %ymm2, %ymm26051; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm06052; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6053; AVX-NEXT: vpblendw $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm1 # 16-byte Folded Reload6054; AVX-NEXT: # xmm1 = xmm15[0,1],mem[2,3],xmm15[4,5,6,7]6055; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,3,0,4,5,6,7]6056; AVX-NEXT: vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]6057; AVX-NEXT: vpshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload6058; AVX-NEXT: # xmm2 = mem[0,3,2,3]6059; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[1,2,2,3,4,5,6,7]6060; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,3,4,5,6,7]6061; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload6062; AVX-NEXT: vpblendw $207, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm3 # 16-byte Folded Reload6063; AVX-NEXT: # xmm3 = mem[0,1,2,3],xmm0[4,5],mem[6,7]6064; AVX-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,2,3,4,5,6,7,8,9,4,5,14,15,8,9]6065; AVX-NEXT: vpshufb %xmm2, %xmm3, %xmm36066; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm1[0,1,2,3,4],xmm3[5,6,7]6067; AVX-NEXT: vpshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload6068; AVX-NEXT: # xmm1 = mem[0,3,2,3]6069; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[1,2,2,3,4,5,6,7]6070; AVX-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload6071; AVX-NEXT: vpsrlq $48, %xmm0, %xmm156072; AVX-NEXT: vpunpckldq {{.*#+}} xmm15 = xmm1[0],xmm15[0],xmm1[1],xmm15[1]6073; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload6074; AVX-NEXT: vpblendw $204, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload6075; AVX-NEXT: # xmm0 = xmm0[0,1],mem[2,3],xmm0[4,5],mem[6,7]6076; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [0,1,0,1,0,1,0,1,10,11,4,5,14,15,6,7]6077; AVX-NEXT: vpshufb %xmm1, %xmm0, %xmm06078; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm15[0,1,2],xmm0[3,4,5,6,7]6079; AVX-NEXT: vandps %ymm5, %ymm0, %ymm06080; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload6081; AVX-NEXT: vpsllq $48, %xmm4, %xmm156082; AVX-NEXT: vandnps %ymm15, %ymm5, %ymm156083; AVX-NEXT: vorps %ymm0, %ymm15, %ymm06084; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm06085; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6086; AVX-NEXT: vpblendw $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12, %xmm0 # 16-byte Folded Reload6087; AVX-NEXT: # xmm0 = xmm12[0,1],mem[2,3],xmm12[4,5,6,7]6088; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,0,4,5,6,7]6089; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]6090; AVX-NEXT: vpshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload6091; AVX-NEXT: # xmm3 = mem[0,3,2,3]6092; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]6093; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm3[0,1],xmm0[2,3,4,5,6,7]6094; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload6095; AVX-NEXT: vpblendw $207, {{[-0-9]+}}(%r{{[sb]}}p), %xmm14, %xmm3 # 16-byte Folded Reload6096; AVX-NEXT: # xmm3 = mem[0,1,2,3],xmm14[4,5],mem[6,7]6097; AVX-NEXT: vpshufb %xmm2, %xmm3, %xmm36098; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm3[5,6,7]6099; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm9[0,3,2,3]6100; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]6101; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload6102; AVX-NEXT: vpsrlq $48, %xmm4, %xmm156103; AVX-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm3[0],xmm15[0],xmm3[1],xmm15[1]6104; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload6105; AVX-NEXT: vpblendw {{.*#+}} xmm15 = xmm13[0,1],xmm9[2,3],xmm13[4,5],xmm9[6,7]6106; AVX-NEXT: vpshufb %xmm1, %xmm15, %xmm156107; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm15[3,4,5,6,7]6108; AVX-NEXT: vandps %ymm5, %ymm3, %ymm36109; AVX-NEXT: vpsllq $48, %xmm11, %xmm156110; AVX-NEXT: vandnps %ymm15, %ymm5, %ymm156111; AVX-NEXT: vorps %ymm3, %ymm15, %ymm36112; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm3, %ymm06113; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6114; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload6115; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm13[0,1],xmm10[2,3],xmm13[4,5,6,7]6116; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,0,4,5,6,7]6117; AVX-NEXT: vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]6118; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload6119; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm12[0,3,2,3]6120; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]6121; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm3[0,1],xmm0[2,3,4,5,6,7]6122; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm6[0,1,2,3],xmm7[4,5],xmm6[6,7]6123; AVX-NEXT: vpshufb %xmm2, %xmm3, %xmm36124; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm3[5,6,7]6125; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload6126; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm11[0,3,2,3]6127; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]6128; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload6129; AVX-NEXT: vpsrlq $48, %xmm10, %xmm156130; AVX-NEXT: vpunpckldq {{.*#+}} xmm3 = xmm3[0],xmm15[0],xmm3[1],xmm15[1]6131; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload6132; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload6133; AVX-NEXT: vpblendw {{.*#+}} xmm15 = xmm4[0,1],xmm6[2,3],xmm4[4,5],xmm6[6,7]6134; AVX-NEXT: vpshufb %xmm1, %xmm15, %xmm156135; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm15[3,4,5,6,7]6136; AVX-NEXT: vandps %ymm5, %ymm3, %ymm36137; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload6138; AVX-NEXT: vpsllq $48, %xmm7, %xmm156139; AVX-NEXT: vandnps %ymm15, %ymm5, %ymm156140; AVX-NEXT: vorps %ymm3, %ymm15, %ymm36141; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm3, %ymm06142; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6143; AVX-NEXT: vpblendw $207, {{[-0-9]+}}(%r{{[sb]}}p), %xmm8, %xmm0 # 16-byte Folded Reload6144; AVX-NEXT: # xmm0 = mem[0,1,2,3],xmm8[4,5],mem[6,7]6145; AVX-NEXT: vpshufb %xmm2, %xmm0, %xmm06146; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload6147; AVX-NEXT: vpblendw $243, {{[-0-9]+}}(%r{{[sb]}}p), %xmm8, %xmm2 # 16-byte Folded Reload6148; AVX-NEXT: # xmm2 = mem[0,1],xmm8[2,3],mem[4,5,6,7]6149; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,3,0,4,5,6,7]6150; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,5,5,5]6151; AVX-NEXT: vpshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload6152; AVX-NEXT: # xmm3 = mem[0,3,2,3]6153; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[1,2,2,3,4,5,6,7]6154; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1],xmm2[2,3,4,5,6,7]6155; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm2[0,1,2,3,4],xmm0[5,6,7]6156; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload6157; AVX-NEXT: vpblendw $204, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload6158; AVX-NEXT: # xmm2 = xmm2[0,1],mem[2,3],xmm2[4,5],mem[6,7]6159; AVX-NEXT: vpshufb %xmm1, %xmm2, %xmm16160; AVX-NEXT: vpshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload6161; AVX-NEXT: # xmm2 = mem[0,3,2,3]6162; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[1,2,2,3,4,5,6,7]6163; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload6164; AVX-NEXT: vpsrlq $48, %xmm3, %xmm36165; AVX-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]6166; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2],xmm1[3,4,5,6,7]6167; AVX-NEXT: vandps %ymm5, %ymm1, %ymm16168; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload6169; AVX-NEXT: vpsllq $48, %xmm2, %xmm26170; AVX-NEXT: vandnps %ymm2, %ymm5, %ymm26171; AVX-NEXT: vorps %ymm2, %ymm1, %ymm16172; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm06173; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6174; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload6175; AVX-NEXT: vpblendw $207, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm1 # 16-byte Folded Reload6176; AVX-NEXT: # xmm1 = mem[0,1,2,3],xmm0[4,5],mem[6,7]6177; AVX-NEXT: vmovdqa {{.*#+}} xmm0 = [u,u,u,u,8,9,2,3,12,13,12,13,12,13,12,13]6178; AVX-NEXT: vpshufb %xmm0, %xmm1, %xmm16179; AVX-NEXT: vpshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload6180; AVX-NEXT: # xmm2 = mem[3,1,2,3]6181; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[2,1,2,3,4,5,6,7]6182; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1],xmm1[2,3,4,5,6,7]6183; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload6184; AVX-NEXT: vpblendw $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm3 # 16-byte Folded Reload6185; AVX-NEXT: # xmm3 = xmm2[0,1],mem[2,3],xmm2[4,5,6,7]6186; AVX-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,6,7,4,5,6,7,8,9,6,7,0,1,10,11]6187; AVX-NEXT: vpshufb %xmm2, %xmm3, %xmm36188; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm1[0,1,2,3,4],xmm3[5,6,7]6189; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload6190; AVX-NEXT: vpblendw $243, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm5 # 16-byte Folded Reload6191; AVX-NEXT: # xmm5 = mem[0,1],xmm1[2,3],mem[4,5,6,7]6192; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [2,3,2,3,2,3,2,3,12,13,6,7,12,13,14,15]6193; AVX-NEXT: vpshufb %xmm1, %xmm5, %xmm56194; AVX-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload6195; AVX-NEXT: # xmm15 = mem[0,1,1,3]6196; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,7,6,7]6197; AVX-NEXT: vpunpckhdq (%rsp), %xmm15, %xmm15 # 16-byte Folded Reload6198; AVX-NEXT: # xmm15 = xmm15[2],mem[2],xmm15[3],mem[3]6199; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm15[0,1,2],xmm5[3,4,5],xmm15[6,7]6200; AVX-NEXT: vpshufd $36, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload6201; AVX-NEXT: # xmm15 = mem[0,1,2,0]6202; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,6,5]6203; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5],xmm15[6,7]6204; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm5, %ymm36205; AVX-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6206; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload6207; AVX-NEXT: vpblendw $207, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload6208; AVX-NEXT: # xmm3 = mem[0,1,2,3],xmm3[4,5],mem[6,7]6209; AVX-NEXT: vpshufb %xmm0, %xmm3, %xmm36210; AVX-NEXT: vpshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload6211; AVX-NEXT: # xmm5 = mem[3,1,2,3]6212; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[2,1,2,3,4,5,6,7]6213; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm5[0,1],xmm3[2,3,4,5,6,7]6214; AVX-NEXT: vpblendw $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm14, %xmm5 # 16-byte Folded Reload6215; AVX-NEXT: # xmm5 = xmm14[0,1],mem[2,3],xmm14[4,5,6,7]6216; AVX-NEXT: vpshufb %xmm2, %xmm5, %xmm56217; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4],xmm5[5,6,7]6218; AVX-NEXT: vpblendw $243, {{[-0-9]+}}(%r{{[sb]}}p), %xmm9, %xmm5 # 16-byte Folded Reload6219; AVX-NEXT: # xmm5 = mem[0,1],xmm9[2,3],mem[4,5,6,7]6220; AVX-NEXT: vpshufb %xmm1, %xmm5, %xmm56221; AVX-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload6222; AVX-NEXT: # xmm15 = mem[0,1,1,3]6223; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,7,6,7]6224; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload6225; AVX-NEXT: vpunpckhdq {{.*#+}} xmm15 = xmm15[2],xmm14[2],xmm15[3],xmm14[3]6226; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm15[0,1,2],xmm5[3,4,5],xmm15[6,7]6227; AVX-NEXT: vpshufd $36, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload6228; AVX-NEXT: # xmm15 = mem[0,1,2,0]6229; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,6,5]6230; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5],xmm15[6,7]6231; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm5, %ymm36232; AVX-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6233; AVX-NEXT: vpblendw $48, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13, %xmm3 # 16-byte Folded Reload6234; AVX-NEXT: # xmm3 = xmm13[0,1,2,3],mem[4,5],xmm13[6,7]6235; AVX-NEXT: vpshufb %xmm0, %xmm3, %xmm36236; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm12[3,1,2,3]6237; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[2,1,2,3,4,5,6,7]6238; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm5[0,1],xmm3[2,3,4,5,6,7]6239; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload6240; AVX-NEXT: vpblendw $243, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload6241; AVX-NEXT: # xmm5 = mem[0,1],xmm5[2,3],mem[4,5,6,7]6242; AVX-NEXT: vpshufb %xmm2, %xmm5, %xmm56243; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4],xmm5[5,6,7]6244; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm4[0,1],xmm6[2,3],xmm4[4,5,6,7]6245; AVX-NEXT: vpshufb %xmm1, %xmm5, %xmm56246; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm11[0,1,1,3]6247; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,7,6,7]6248; AVX-NEXT: vpunpckhdq {{.*#+}} xmm15 = xmm15[2],xmm10[2],xmm15[3],xmm10[3]6249; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm15[0,1,2],xmm5[3,4,5],xmm15[6,7]6250; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm7[0,1,2,0]6251; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,6,5]6252; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5],xmm15[6,7]6253; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm5, %ymm36254; AVX-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6255; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload6256; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload6257; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm12[0,1],xmm13[2,3],xmm12[4,5,6,7]6258; AVX-NEXT: vpshufb %xmm2, %xmm3, %xmm26259; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload6260; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm7[0,1,2,3],xmm8[4,5],xmm7[6,7]6261; AVX-NEXT: vpshufb %xmm0, %xmm3, %xmm06262; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload6263; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm8[3,1,2,3]6264; AVX-NEXT: vpshuflw {{.*#+}} xmm3 = xmm3[2,1,2,3,4,5,6,7]6265; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm3[0,1],xmm0[2,3,4,5,6,7]6266; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm2[5,6,7]6267; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload6268; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload6269; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm10[0,1],xmm11[2,3],xmm10[4,5,6,7]6270; AVX-NEXT: vpshufb %xmm1, %xmm2, %xmm16271; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload6272; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm6[0,1,1,3]6273; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,6,7]6274; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload6275; AVX-NEXT: vpunpckhdq {{.*#+}} xmm2 = xmm2[2],xmm4[2],xmm2[3],xmm4[3]6276; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2],xmm1[3,4,5],xmm2[6,7]6277; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload6278; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm9[0,1,2,0]6279; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6,5]6280; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm2[6,7]6281; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm06282; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6283; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload6284; AVX-NEXT: vpblendw $204, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm1 # 16-byte Folded Reload6285; AVX-NEXT: # xmm1 = xmm0[0,1],mem[2,3],xmm0[4,5],mem[6,7]6286; AVX-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,u,0,1,10,11,4,5,14,15,14,15,14,15,14,15]6287; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload6288; AVX-NEXT: vpsrlq $48, %xmm2, %xmm26289; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0],xmm1[1,2,3,4,5,6,7]6290; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload6291; AVX-NEXT: vpblendw $48, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm3 # 16-byte Folded Reload6292; AVX-NEXT: # xmm3 = xmm2[0,1,2,3],mem[4,5],xmm2[6,7]6293; AVX-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,2,3,4,5,6,7,8,9,8,9,2,3,12,13]6294; AVX-NEXT: vpshufb %xmm2, %xmm3, %xmm36295; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm1[0,1,2,3,4],xmm3[5,6,7]6296; AVX-NEXT: vmovdqa (%rsp), %xmm1 # 16-byte Reload6297; AVX-NEXT: vpblendw $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm5 # 16-byte Folded Reload6298; AVX-NEXT: # xmm5 = xmm1[0,1],mem[2,3],xmm1[4,5,6,7]6299; AVX-NEXT: vpshufb {{.*#+}} xmm5 = xmm5[6,7,0,1,10,11,10,11,8,9,10,11,12,13,14,15]6300; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload6301; AVX-NEXT: vpblendw $48, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm15 # 16-byte Folded Reload6302; AVX-NEXT: # xmm15 = xmm0[0,1,2,3],mem[4,5],xmm0[6,7]6303; AVX-NEXT: vpshuflw {{.*#+}} xmm15 = xmm15[2,2,2,2,4,5,6,7]6304; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,7,4,6,7]6305; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2],xmm15[3,4,5],xmm5[6,7]6306; AVX-NEXT: vpshufd $196, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload6307; AVX-NEXT: # xmm15 = mem[0,1,0,3]6308; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,5,6]6309; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5],xmm15[6,7]6310; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm5, %ymm36311; AVX-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6312; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload6313; AVX-NEXT: vpblendw $204, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm3 # 16-byte Folded Reload6314; AVX-NEXT: # xmm3 = xmm0[0,1],mem[2,3],xmm0[4,5],mem[6,7]6315; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [u,u,0,1,10,11,4,5,14,15,14,15,14,15,14,15]6316; AVX-NEXT: vpshufb %xmm1, %xmm3, %xmm36317; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload6318; AVX-NEXT: vpsrlq $48, %xmm0, %xmm56319; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm5[0],xmm3[1,2,3,4,5,6,7]6320; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload6321; AVX-NEXT: vpblendw $48, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm5 # 16-byte Folded Reload6322; AVX-NEXT: # xmm5 = xmm0[0,1,2,3],mem[4,5],xmm0[6,7]6323; AVX-NEXT: vpshufb %xmm2, %xmm5, %xmm56324; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4],xmm5[5,6,7]6325; AVX-NEXT: vpblendw $12, {{[-0-9]+}}(%r{{[sb]}}p), %xmm14, %xmm5 # 16-byte Folded Reload6326; AVX-NEXT: # xmm5 = xmm14[0,1],mem[2,3],xmm14[4,5,6,7]6327; AVX-NEXT: vmovdqa {{.*#+}} xmm0 = [6,7,0,1,10,11,10,11,8,9,10,11,12,13,14,15]6328; AVX-NEXT: vpshufb %xmm0, %xmm5, %xmm56329; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload6330; AVX-NEXT: vpblendw $207, {{[-0-9]+}}(%r{{[sb]}}p), %xmm14, %xmm15 # 16-byte Folded Reload6331; AVX-NEXT: # xmm15 = mem[0,1,2,3],xmm14[4,5],mem[6,7]6332; AVX-NEXT: vpshuflw {{.*#+}} xmm15 = xmm15[2,2,2,2,4,5,6,7]6333; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,7,4,6,7]6334; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2],xmm15[3,4,5],xmm5[6,7]6335; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload6336; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm14[0,1,0,3]6337; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,5,6]6338; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5],xmm15[6,7]6339; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm5, %ymm36340; AVX-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6341; AVX-NEXT: vpblendw $51, {{[-0-9]+}}(%r{{[sb]}}p), %xmm7, %xmm3 # 16-byte Folded Reload6342; AVX-NEXT: # xmm3 = mem[0,1],xmm7[2,3],mem[4,5],xmm7[6,7]6343; AVX-NEXT: vpshufb %xmm1, %xmm3, %xmm36344; AVX-NEXT: vpsrlq $48, %xmm8, %xmm56345; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm5[0],xmm3[1,2,3,4,5,6,7]6346; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm12[0,1,2,3],xmm13[4,5],xmm12[6,7]6347; AVX-NEXT: vpshufb %xmm2, %xmm5, %xmm56348; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4],xmm5[5,6,7]6349; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm4[0,1],xmm6[2,3],xmm4[4,5,6,7]6350; AVX-NEXT: vpshufb %xmm0, %xmm5, %xmm56351; AVX-NEXT: vmovdqa %xmm0, %xmm46352; AVX-NEXT: vpblendw {{.*#+}} xmm15 = xmm10[0,1,2,3],xmm11[4,5],xmm10[6,7]6353; AVX-NEXT: vpshuflw {{.*#+}} xmm15 = xmm15[2,2,2,2,4,5,6,7]6354; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,7,4,6,7]6355; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2],xmm15[3,4,5],xmm5[6,7]6356; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm9[0,1,0,3]6357; AVX-NEXT: vpshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,4,5,5,6]6358; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5],xmm15[6,7]6359; AVX-NEXT: vinsertf128 $1, %xmm3, %ymm5, %ymm36360; AVX-NEXT: vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6361; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload6362; AVX-NEXT: vpblendw $48, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13, %xmm3 # 16-byte Folded Reload6363; AVX-NEXT: # xmm3 = xmm13[0,1,2,3],mem[4,5],xmm13[6,7]6364; AVX-NEXT: vpshufb %xmm2, %xmm3, %xmm26365; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload6366; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload6367; AVX-NEXT: vpblendw {{.*#+}} xmm3 = xmm10[0,1],xmm11[2,3],xmm10[4,5],xmm11[6,7]6368; AVX-NEXT: vpshufb %xmm1, %xmm3, %xmm06369; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload6370; AVX-NEXT: vpsrlq $48, %xmm7, %xmm36371; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm3[0],xmm0[1,2,3,4,5,6,7]6372; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm2[5,6,7]6373; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload6374; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload6375; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm6[0,1],xmm3[2,3],xmm6[4,5,6,7]6376; AVX-NEXT: vpshufb %xmm4, %xmm2, %xmm16377; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload6378; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload6379; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm4[0,1,2,3],xmm8[4,5],xmm4[6,7]6380; AVX-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[2,2,2,2,4,5,6,7]6381; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,4,6,7]6382; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm2[3,4,5],xmm1[6,7]6383; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload6384; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm9[0,1,0,3]6385; AVX-NEXT: vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,5,6]6386; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm2[6,7]6387; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm06388; AVX-NEXT: vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6389; AVX-NEXT: vpshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload6390; AVX-NEXT: # xmm0 = mem[3,1,2,3]6391; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]6392; AVX-NEXT: vpshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload6393; AVX-NEXT: # xmm1 = mem[0,2,2,3]6394; AVX-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]6395; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]6396; AVX-NEXT: vpshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload6397; AVX-NEXT: # xmm1 = mem[0,3,2,3]6398; AVX-NEXT: vpblendw $8, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload6399; AVX-NEXT: # xmm1 = xmm1[0,1,2],mem[3],xmm1[4,5,6,7]6400; AVX-NEXT: vpshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload6401; AVX-NEXT: # xmm2 = mem[2,3,2,3]6402; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0],xmm1[1,2,3,4,5,6,7]6403; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3],xmm0[4,5,6,7]6404; AVX-NEXT: vmovdqa (%rsp), %xmm1 # 16-byte Reload6405; AVX-NEXT: vpblendw $48, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload6406; AVX-NEXT: # xmm1 = xmm1[0,1,2,3],mem[4,5],xmm1[6,7]6407; AVX-NEXT: vpshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload6408; AVX-NEXT: # xmm2 = mem[1,1,1,1]6409; AVX-NEXT: vpshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload6410; AVX-NEXT: # xmm5 = mem[0,2,2,3]6411; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,0,3,4,5,6,7]6412; AVX-NEXT: vpunpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]6413; AVX-NEXT: vmovdqa {{.*#+}} xmm2 = [8,9,2,3,12,13,12,13,8,9,12,13,12,13,14,15]6414; AVX-NEXT: vpshufb %xmm2, %xmm1, %xmm16415; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm5[3,4,5],xmm1[6,7]6416; AVX-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload6417; AVX-NEXT: # xmm5 = mem[0,1,1,3]6418; AVX-NEXT: vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,4,7]6419; AVX-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5],xmm5[6,7]6420; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm16421; AVX-NEXT: vpshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload6422; AVX-NEXT: # xmm0 = mem[3,1,2,3]6423; AVX-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]6424; AVX-NEXT: vpshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload6425; AVX-NEXT: # xmm5 = mem[0,2,2,3]6426; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,0,3,4,5,6,7]6427; AVX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]6428; AVX-NEXT: vpshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload6429; AVX-NEXT: # xmm5 = mem[0,3,2,3]6430; AVX-NEXT: vpblendw $8, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload6431; AVX-NEXT: # xmm5 = xmm5[0,1,2],mem[3],xmm5[4,5,6,7]6432; AVX-NEXT: vpshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload6433; AVX-NEXT: # xmm15 = mem[2,3,2,3]6434; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm15[0],xmm5[1,2,3,4,5,6,7]6435; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm5[0,1,2,3],xmm0[4,5,6,7]6436; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload6437; AVX-NEXT: vpblendw $48, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5, %xmm5 # 16-byte Folded Reload6438; AVX-NEXT: # xmm5 = xmm5[0,1,2,3],mem[4,5],xmm5[6,7]6439; AVX-NEXT: vpshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload6440; AVX-NEXT: # xmm15 = mem[1,1,1,1]6441; AVX-NEXT: vpshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload6442; AVX-NEXT: # xmm12 = mem[0,2,2,3]6443; AVX-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[0,1,0,3,4,5,6,7]6444; AVX-NEXT: vpunpckldq {{.*#+}} xmm12 = xmm12[0],xmm15[0],xmm12[1],xmm15[1]6445; AVX-NEXT: vpshufb %xmm2, %xmm5, %xmm56446; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2],xmm12[3,4,5],xmm5[6,7]6447; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm14[0,1,1,3]6448; AVX-NEXT: vpshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,5,4,7]6449; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5],xmm12[6,7]6450; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm5, %ymm06451; AVX-NEXT: vpshufd {{.*#+}} xmm5 = xmm13[3,1,2,3]6452; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,2,1,4,5,6,7]6453; AVX-NEXT: vpshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload6454; AVX-NEXT: # xmm12 = mem[0,2,2,3]6455; AVX-NEXT: vpshuflw {{.*#+}} xmm12 = xmm12[0,1,0,3,4,5,6,7]6456; AVX-NEXT: vpunpckldq {{.*#+}} xmm5 = xmm12[0],xmm5[0],xmm12[1],xmm5[1]6457; AVX-NEXT: vpshufd {{.*#+}} xmm12 = xmm10[0,3,2,3]6458; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2],xmm11[3],xmm12[4,5,6,7]6459; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm7[2,3,2,3]6460; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm15[0],xmm12[1,2,3,4,5,6,7]6461; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm12[0,1,2,3],xmm5[4,5,6,7]6462; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm6[0,1,2,3],xmm3[4,5],xmm6[6,7]6463; AVX-NEXT: vpshufd {{.*#+}} xmm15 = xmm4[1,1,1,1]6464; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm8[0,2,2,3]6465; AVX-NEXT: vpshuflw {{.*#+}} xmm14 = xmm14[0,1,0,3,4,5,6,7]6466; AVX-NEXT: vpunpckldq {{.*#+}} xmm14 = xmm14[0],xmm15[0],xmm14[1],xmm15[1]6467; AVX-NEXT: vpshufb %xmm2, %xmm12, %xmm126468; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2],xmm14[3,4,5],xmm12[6,7]6469; AVX-NEXT: vpshufd {{.*#+}} xmm14 = xmm9[0,1,1,3]6470; AVX-NEXT: vpshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,5,4,7]6471; AVX-NEXT: vpblendw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,5],xmm14[6,7]6472; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm12, %ymm126473; AVX-NEXT: vpshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload6474; AVX-NEXT: # xmm5 = mem[3,1,2,3]6475; AVX-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,2,1,4,5,6,7]6476; AVX-NEXT: vpshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload6477; AVX-NEXT: # xmm13 = mem[0,2,2,3]6478; AVX-NEXT: vpshuflw {{.*#+}} xmm13 = xmm13[0,1,0,3,4,5,6,7]6479; AVX-NEXT: vpunpckldq {{.*#+}} xmm5 = xmm13[0],xmm5[0],xmm13[1],xmm5[1]6480; AVX-NEXT: vpshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload6481; AVX-NEXT: # xmm13 = mem[0,3,2,3]6482; AVX-NEXT: vpblendw $8, {{[-0-9]+}}(%r{{[sb]}}p), %xmm13, %xmm11 # 16-byte Folded Reload6483; AVX-NEXT: # xmm11 = xmm13[0,1,2],mem[3],xmm13[4,5,6,7]6484; AVX-NEXT: vpshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload6485; AVX-NEXT: # xmm10 = mem[2,3,2,3]6486; AVX-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0],xmm11[1,2,3,4,5,6,7]6487; AVX-NEXT: vpblendw {{.*#+}} xmm5 = xmm10[0,1,2,3],xmm5[4,5,6,7]6488; AVX-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload6489; AVX-NEXT: vpblendw $48, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm8 # 16-byte Folded Reload6490; AVX-NEXT: # xmm8 = xmm3[0,1,2,3],mem[4,5],xmm3[6,7]6491; AVX-NEXT: vpshufb %xmm2, %xmm8, %xmm26492; AVX-NEXT: vpshufd $85, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload6493; AVX-NEXT: # xmm4 = mem[1,1,1,1]6494; AVX-NEXT: vpshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload6495; AVX-NEXT: # xmm7 = mem[0,2,2,3]6496; AVX-NEXT: vpshuflw {{.*#+}} xmm7 = xmm7[0,1,0,3,4,5,6,7]6497; AVX-NEXT: vpunpckldq {{.*#+}} xmm4 = xmm7[0],xmm4[0],xmm7[1],xmm4[1]6498; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm4[3,4,5],xmm2[6,7]6499; AVX-NEXT: vpshufd $212, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload6500; AVX-NEXT: # xmm4 = mem[0,1,1,3]6501; AVX-NEXT: vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,4,7]6502; AVX-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5],xmm4[6,7]6503; AVX-NEXT: vinsertf128 $1, %xmm5, %ymm2, %ymm26504; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6505; AVX-NEXT: vmovaps %ymm3, 64(%rsi)6506; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload6507; AVX-NEXT: vmovaps %ymm4, (%rsi)6508; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload6509; AVX-NEXT: vmovaps %ymm4, 96(%rsi)6510; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload6511; AVX-NEXT: vmovaps %ymm4, 32(%rsi)6512; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6513; AVX-NEXT: vmovaps %ymm3, 64(%rdx)6514; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6515; AVX-NEXT: vmovaps %ymm3, (%rdx)6516; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6517; AVX-NEXT: vmovaps %ymm3, 96(%rdx)6518; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6519; AVX-NEXT: vmovaps %ymm3, 32(%rdx)6520; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6521; AVX-NEXT: vmovaps %ymm3, 64(%rcx)6522; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6523; AVX-NEXT: vmovaps %ymm3, (%rcx)6524; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6525; AVX-NEXT: vmovaps %ymm3, 96(%rcx)6526; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6527; AVX-NEXT: vmovaps %ymm3, 32(%rcx)6528; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6529; AVX-NEXT: vmovaps %ymm3, 64(%r8)6530; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6531; AVX-NEXT: vmovaps %ymm3, (%r8)6532; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6533; AVX-NEXT: vmovaps %ymm3, 96(%r8)6534; AVX-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6535; AVX-NEXT: vmovaps %ymm3, 32(%r8)6536; AVX-NEXT: vmovaps %ymm2, 64(%r9)6537; AVX-NEXT: vmovaps %ymm12, (%r9)6538; AVX-NEXT: vmovaps %ymm0, 96(%r9)6539; AVX-NEXT: vmovaps %ymm1, 32(%r9)6540; AVX-NEXT: addq $1032, %rsp # imm = 0x4086541; AVX-NEXT: vzeroupper6542; AVX-NEXT: retq6543;6544; AVX2-LABEL: load_i16_stride5_vf64:6545; AVX2: # %bb.0:6546; AVX2-NEXT: subq $1048, %rsp # imm = 0x4186547; AVX2-NEXT: vmovdqa 384(%rdi), %ymm106548; AVX2-NEXT: vmovdqa 512(%rdi), %ymm46549; AVX2-NEXT: vmovdqa 480(%rdi), %ymm146550; AVX2-NEXT: vmovdqa 544(%rdi), %ymm116551; AVX2-NEXT: vmovdqa 576(%rdi), %ymm86552; AVX2-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6553; AVX2-NEXT: vmovdqa 192(%rdi), %ymm36554; AVX2-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6555; AVX2-NEXT: vmovdqa 160(%rdi), %ymm56556; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6557; AVX2-NEXT: vmovdqa 224(%rdi), %ymm06558; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6559; AVX2-NEXT: vmovdqa 256(%rdi), %ymm16560; AVX2-NEXT: vmovdqu %ymm1, (%rsp) # 32-byte Spill6561; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1,2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7],ymm0[8],ymm1[9,10],ymm0[11],ymm1[12],ymm0[13],ymm1[14,15]6562; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]6563; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm1[5],ymm0[6],ymm1[7]6564; AVX2-NEXT: vmovdqa {{.*#+}} ymm1 = [0,1,10,11,4,5,14,15,8,9,10,11,4,5,6,7,16,17,26,27,20,21,30,31,24,25,26,27,20,21,22,23]6565; AVX2-NEXT: vpshufb %ymm1, %ymm0, %ymm26566; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm5[0],ymm3[1],ymm5[2,3],ymm3[4],ymm5[5],ymm3[6],ymm5[7,8],ymm3[9],ymm5[10,11],ymm3[12],ymm5[13],ymm3[14],ymm5[15]6567; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm36568; AVX2-NEXT: vpblendw {{.*#+}} xmm3 = xmm0[0],xmm3[1,2,3],xmm0[4,5],xmm3[6,7]6569; AVX2-NEXT: vmovdqa {{.*#+}} xmm0 = [0,1,10,11,4,5,14,15,8,9,2,3,12,13,6,7]6570; AVX2-NEXT: vpshufb %xmm0, %xmm3, %xmm36571; AVX2-NEXT: vpmovsxbw {{.*#+}} xmm5 = [65535,65535,65535,65535,65535,65535,65535,0]6572; AVX2-NEXT: vpblendvb %ymm5, %ymm3, %ymm2, %ymm26573; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6574; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm11[0],ymm8[1,2],ymm11[3],ymm8[4],ymm11[5],ymm8[6,7],ymm11[8],ymm8[9,10],ymm11[11],ymm8[12],ymm11[13],ymm8[14,15]6575; AVX2-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6576; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm2[2,3,0,1]6577; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm3[5],ymm2[6],ymm3[7]6578; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm14[0],ymm4[1],ymm14[2,3],ymm4[4],ymm14[5],ymm4[6],ymm14[7,8],ymm4[9],ymm14[10,11],ymm4[12],ymm14[13],ymm4[14],ymm14[15]6579; AVX2-NEXT: vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6580; AVX2-NEXT: vmovdqa %ymm4, %ymm86581; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6582; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm46583; AVX2-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1,2,3],xmm3[4,5],xmm4[6,7]6584; AVX2-NEXT: vmovdqa 416(%rdi), %ymm136585; AVX2-NEXT: vpshufb %ymm1, %ymm2, %ymm26586; AVX2-NEXT: vpshufb %xmm0, %xmm3, %xmm36587; AVX2-NEXT: vpblendvb %ymm5, %ymm3, %ymm2, %ymm26588; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6589; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm10[0],ymm13[1,2],ymm10[3],ymm13[4],ymm10[5],ymm13[6,7],ymm10[8],ymm13[9,10],ymm10[11],ymm13[12],ymm10[13],ymm13[14,15]6590; AVX2-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6591; AVX2-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6592; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm2[2,3,0,1]6593; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm3[5],ymm2[6],ymm3[7]6594; AVX2-NEXT: vmovdqa 352(%rdi), %ymm46595; AVX2-NEXT: vmovdqa 320(%rdi), %ymm156596; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm15[0],ymm4[1],ymm15[2,3],ymm4[4],ymm15[5],ymm4[6],ymm15[7,8],ymm4[9],ymm15[10,11],ymm4[12],ymm15[13],ymm4[14],ymm15[15]6597; AVX2-NEXT: vmovdqu %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6598; AVX2-NEXT: vmovdqa %ymm4, %ymm66599; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6600; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm46601; AVX2-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1,2,3],xmm3[4,5],xmm4[6,7]6602; AVX2-NEXT: vpshufb %ymm1, %ymm2, %ymm26603; AVX2-NEXT: vpshufb %xmm0, %xmm3, %xmm36604; AVX2-NEXT: vpblendvb %ymm5, %ymm3, %ymm2, %ymm26605; AVX2-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6606; AVX2-NEXT: vmovdqa 64(%rdi), %ymm96607; AVX2-NEXT: vmovdqa 96(%rdi), %ymm126608; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm9[0],ymm12[1,2],ymm9[3],ymm12[4],ymm9[5],ymm12[6,7],ymm9[8],ymm12[9,10],ymm9[11],ymm12[12],ymm9[13],ymm12[14,15]6609; AVX2-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6610; AVX2-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6611; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm2[2,3,0,1]6612; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm3[5],ymm2[6],ymm3[7]6613; AVX2-NEXT: vpshufb %ymm1, %ymm2, %ymm16614; AVX2-NEXT: vmovdqa (%rdi), %ymm56615; AVX2-NEXT: vmovdqa 32(%rdi), %ymm76616; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0],ymm7[1],ymm5[2,3],ymm7[4],ymm5[5],ymm7[6],ymm5[7,8],ymm7[9],ymm5[10,11],ymm7[12],ymm5[13],ymm7[14],ymm5[15]6617; AVX2-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6618; AVX2-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6619; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm36620; AVX2-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1,2,3],xmm2[4,5],xmm3[6,7]6621; AVX2-NEXT: vpshufb %xmm0, %xmm2, %xmm06622; AVX2-NEXT: vpmovsxbw {{.*#+}} xmm3 = [65535,65535,65535,65535,65535,65535,65535,0]6623; AVX2-NEXT: vpblendvb %ymm3, %ymm0, %ymm1, %ymm06624; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6625; AVX2-NEXT: vmovdqu (%rsp), %ymm0 # 32-byte Reload6626; AVX2-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload6627; AVX2-NEXT: # ymm0 = ymm0[0],mem[1],ymm0[2,3],mem[4],ymm0[5],mem[6],ymm0[7,8],mem[9],ymm0[10,11],mem[12],ymm0[13],mem[14],ymm0[15]6628; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]6629; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5],ymm0[6,7]6630; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6631; AVX2-NEXT: vpblendw $74, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload6632; AVX2-NEXT: # ymm0 = ymm0[0],mem[1],ymm0[2],mem[3],ymm0[4,5],mem[6],ymm0[7,8],mem[9],ymm0[10],mem[11],ymm0[12,13],mem[14],ymm0[15]6633; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm26634; AVX2-NEXT: vpblendw {{.*#+}} xmm2 = xmm0[0,1],xmm2[2,3],xmm0[4,5,6],xmm2[7]6635; AVX2-NEXT: vmovdqa {{.*#+}} ymm0 = [2,3,12,13,6,7,0,1,10,11,6,7,8,9,8,9,18,19,28,29,22,23,16,17,26,27,22,23,24,25,24,25]6636; AVX2-NEXT: vpshufb %ymm0, %ymm1, %ymm16637; AVX2-NEXT: vmovdqa {{.*#+}} xmm4 = [2,3,12,13,6,7,0,1,10,11,4,5,14,15,10,11]6638; AVX2-NEXT: vpshufb %xmm4, %xmm2, %xmm26639; AVX2-NEXT: vpblendvb %ymm3, %ymm2, %ymm1, %ymm16640; AVX2-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6641; AVX2-NEXT: vpblendw $173, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm1 # 32-byte Folded Reload6642; AVX2-NEXT: # ymm1 = mem[0],ymm11[1],mem[2,3],ymm11[4],mem[5],ymm11[6],mem[7,8],ymm11[9],mem[10,11],ymm11[12],mem[13],ymm11[14],mem[15]6643; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm1[2,3,0,1]6644; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4],ymm2[5],ymm1[6,7]6645; AVX2-NEXT: vpblendw {{.*#+}} ymm2 = ymm8[0],ymm14[1],ymm8[2],ymm14[3],ymm8[4,5],ymm14[6],ymm8[7,8],ymm14[9],ymm8[10],ymm14[11],ymm8[12,13],ymm14[14],ymm8[15]6646; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm86647; AVX2-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm8[2,3],xmm2[4,5,6],xmm8[7]6648; AVX2-NEXT: vpshufb %ymm0, %ymm1, %ymm16649; AVX2-NEXT: vpshufb %xmm4, %xmm2, %xmm26650; AVX2-NEXT: vpblendvb %ymm3, %ymm2, %ymm1, %ymm116651; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm13[0],ymm10[1],ymm13[2,3],ymm10[4],ymm13[5],ymm10[6],ymm13[7,8],ymm10[9],ymm13[10,11],ymm10[12],ymm13[13],ymm10[14],ymm13[15]6652; AVX2-NEXT: vpermq {{.*#+}} ymm8 = ymm1[2,3,0,1]6653; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4],ymm8[5],ymm1[6,7]6654; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm6[0],ymm15[1],ymm6[2],ymm15[3],ymm6[4,5],ymm15[6],ymm6[7,8],ymm15[9],ymm6[10],ymm15[11],ymm6[12,13],ymm15[14],ymm6[15]6655; AVX2-NEXT: vextracti128 $1, %ymm8, %xmm106656; AVX2-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1],xmm10[2,3],xmm8[4,5,6],xmm10[7]6657; AVX2-NEXT: vpshufb %ymm0, %ymm1, %ymm16658; AVX2-NEXT: vpshufb %xmm4, %xmm8, %xmm86659; AVX2-NEXT: vpblendvb %ymm3, %ymm8, %ymm1, %ymm66660; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm12[0],ymm9[1],ymm12[2,3],ymm9[4],ymm12[5],ymm9[6],ymm12[7,8],ymm9[9],ymm12[10,11],ymm9[12],ymm12[13],ymm9[14],ymm12[15]6661; AVX2-NEXT: vpermq {{.*#+}} ymm10 = ymm8[2,3,0,1]6662; AVX2-NEXT: vpblendd {{.*#+}} ymm8 = ymm8[0,1,2,3,4],ymm10[5],ymm8[6,7]6663; AVX2-NEXT: vpshufb %ymm0, %ymm8, %ymm06664; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm7[0],ymm5[1],ymm7[2],ymm5[3],ymm7[4,5],ymm5[6],ymm7[7,8],ymm5[9],ymm7[10],ymm5[11],ymm7[12,13],ymm5[14],ymm7[15]6665; AVX2-NEXT: vextracti128 $1, %ymm8, %xmm106666; AVX2-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1],xmm10[2,3],xmm8[4,5,6],xmm10[7]6667; AVX2-NEXT: vpshufb %xmm4, %xmm8, %xmm46668; AVX2-NEXT: vpblendvb %ymm3, %ymm4, %ymm0, %ymm26669; AVX2-NEXT: vmovdqa 304(%rdi), %xmm96670; AVX2-NEXT: vmovdqa 288(%rdi), %xmm36671; AVX2-NEXT: vpblendd {{.*#+}} xmm8 = xmm3[0],xmm9[1],xmm3[2,3]6672; AVX2-NEXT: vmovdqa {{.*#+}} xmm0 = [6,7,2,3,4,5,6,7,6,7,2,3,12,13,6,7]6673; AVX2-NEXT: vpshufb %xmm0, %xmm8, %xmm86674; AVX2-NEXT: vinserti128 $1, %xmm8, %ymm0, %ymm86675; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload6676; AVX2-NEXT: vpblendw {{.*#+}} ymm8 = ymm4[0,1,2,3,4],ymm8[5,6,7],ymm4[8,9,10,11,12],ymm8[13,14,15]6677; AVX2-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm8[4,5,6,7]6678; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6679; AVX2-NEXT: vmovdqa 624(%rdi), %xmm156680; AVX2-NEXT: vmovdqa 608(%rdi), %xmm126681; AVX2-NEXT: vpblendd {{.*#+}} xmm10 = xmm12[0],xmm15[1],xmm12[2,3]6682; AVX2-NEXT: vmovdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6683; AVX2-NEXT: vpshufb %xmm0, %xmm10, %xmm106684; AVX2-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm106685; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload6686; AVX2-NEXT: vpblendw {{.*#+}} ymm10 = ymm4[0,1,2,3,4],ymm10[5,6,7],ymm4[8,9,10,11,12],ymm10[13,14,15]6687; AVX2-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm10[4,5,6,7]6688; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6689; AVX2-NEXT: vmovdqa 464(%rdi), %xmm106690; AVX2-NEXT: vmovdqa 448(%rdi), %xmm86691; AVX2-NEXT: vpblendd {{.*#+}} xmm13 = xmm8[0],xmm10[1],xmm8[2,3]6692; AVX2-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6693; AVX2-NEXT: vpshufb %xmm0, %xmm13, %xmm136694; AVX2-NEXT: vinserti128 $1, %xmm13, %ymm0, %ymm136695; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload6696; AVX2-NEXT: vpblendw {{.*#+}} ymm13 = ymm4[0,1,2,3,4],ymm13[5,6,7],ymm4[8,9,10,11,12],ymm13[13,14,15]6697; AVX2-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm13[4,5,6,7]6698; AVX2-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6699; AVX2-NEXT: vmovdqa 144(%rdi), %xmm56700; AVX2-NEXT: vmovdqa 128(%rdi), %xmm46701; AVX2-NEXT: vpblendd {{.*#+}} xmm14 = xmm4[0],xmm5[1],xmm4[2,3]6702; AVX2-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6703; AVX2-NEXT: vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6704; AVX2-NEXT: vpshufb %xmm0, %xmm14, %xmm06705; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm06706; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload6707; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm7[0,1,2,3,4],ymm0[5,6,7],ymm7[8,9,10,11,12],ymm0[13,14,15]6708; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm7[0,1,2,3],ymm0[4,5,6,7]6709; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6710; AVX2-NEXT: vmovdqa %xmm3, %xmm146711; AVX2-NEXT: vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6712; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm3[0,1],xmm9[2],xmm3[3]6713; AVX2-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6714; AVX2-NEXT: vmovdqa {{.*#+}} xmm7 = [0,1,2,3,4,5,6,7,8,9,4,5,14,15,8,9]6715; AVX2-NEXT: vpshufb %xmm7, %xmm0, %xmm06716; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm06717; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload6718; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2,3,4],ymm0[5,6,7],ymm1[8,9,10,11,12],ymm0[13,14,15]6719; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]6720; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6721; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm12[0,1],xmm15[2],xmm12[3]6722; AVX2-NEXT: vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6723; AVX2-NEXT: vpshufb %xmm7, %xmm0, %xmm06724; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm06725; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm11[0,1,2,3,4],ymm0[5,6,7],ymm11[8,9,10,11,12],ymm0[13,14,15]6726; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm11[0,1,2,3],ymm0[4,5,6,7]6727; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6728; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm8[0,1],xmm10[2],xmm8[3]6729; AVX2-NEXT: vmovdqa %xmm8, %xmm106730; AVX2-NEXT: vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6731; AVX2-NEXT: vpshufb %xmm7, %xmm0, %xmm06732; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm06733; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm6[0,1,2,3,4],ymm0[5,6,7],ymm6[8,9,10,11,12],ymm0[13,14,15]6734; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]6735; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6736; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm4[0,1],xmm5[2],xmm4[3]6737; AVX2-NEXT: vpshufb %xmm7, %xmm0, %xmm06738; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm06739; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0,1,2,3,4],ymm0[5,6,7],ymm2[8,9,10,11,12],ymm0[13,14,15]6740; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]6741; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6742; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload6743; AVX2-NEXT: vpblendw $82, (%rsp), %ymm13, %ymm0 # 32-byte Folded Reload6744; AVX2-NEXT: # ymm0 = ymm13[0],mem[1],ymm13[2,3],mem[4],ymm13[5],mem[6],ymm13[7,8],mem[9],ymm13[10,11],mem[12],ymm13[13],mem[14],ymm13[15]6745; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]6746; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6],ymm0[7]6747; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Reload6748; AVX2-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm1 # 32-byte Folded Reload6749; AVX2-NEXT: # ymm1 = ymm15[0,1],mem[2],ymm15[3],mem[4],ymm15[5,6],mem[7],ymm15[8,9],mem[10],ymm15[11],mem[12],ymm15[13,14],mem[15]6750; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm26751; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm2[3,4],xmm1[5,6,7]6752; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [u,u,u,u,u,u,u,u,u,u,u,u,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]6753; AVX2-NEXT: vpshufb %ymm2, %ymm0, %ymm36754; AVX2-NEXT: vmovdqa {{.*#+}} xmm0 = [4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]6755; AVX2-NEXT: vpshufb %xmm0, %xmm1, %xmm16756; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm1[0,1,2],ymm3[3,4,5,6,7]6757; AVX2-NEXT: vpblendd {{.*#+}} xmm6 = xmm9[0],xmm14[1],xmm9[2,3]6758; AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [0,1,6,7,4,5,6,7,8,9,6,7,0,1,10,11]6759; AVX2-NEXT: vpshufb %xmm1, %xmm6, %xmm66760; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm0, %ymm66761; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm3[0,1,2,3,4],ymm6[5,6,7],ymm3[8,9,10,11,12],ymm6[13,14,15]6762; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm6[4,5,6,7]6763; AVX2-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6764; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload6765; AVX2-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm3 # 32-byte Folded Reload6766; AVX2-NEXT: # ymm3 = ymm3[0],mem[1],ymm3[2,3],mem[4],ymm3[5],mem[6],ymm3[7,8],mem[9],ymm3[10,11],mem[12],ymm3[13],mem[14],ymm3[15]6767; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm3[2,3,0,1]6768; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm6[6],ymm3[7]6769; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload6770; AVX2-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm6 # 32-byte Folded Reload6771; AVX2-NEXT: # ymm6 = ymm11[0,1],mem[2],ymm11[3],mem[4],ymm11[5,6],mem[7],ymm11[8,9],mem[10],ymm11[11],mem[12],ymm11[13,14],mem[15]6772; AVX2-NEXT: vextracti128 $1, %ymm6, %xmm76773; AVX2-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1,2],xmm7[3,4],xmm6[5,6,7]6774; AVX2-NEXT: vpshufb %ymm2, %ymm3, %ymm36775; AVX2-NEXT: vpshufb %xmm0, %xmm6, %xmm66776; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm6[0,1,2],ymm3[3,4,5,6,7]6777; AVX2-NEXT: vpblendd $13, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12, %xmm6 # 16-byte Folded Reload6778; AVX2-NEXT: # xmm6 = mem[0],xmm12[1],mem[2,3]6779; AVX2-NEXT: vpshufb %xmm1, %xmm6, %xmm66780; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm0, %ymm66781; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm3[0,1,2,3,4],ymm6[5,6,7],ymm3[8,9,10,11,12],ymm6[13,14,15]6782; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm6[4,5,6,7]6783; AVX2-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6784; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload6785; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload6786; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm14[0],ymm4[1],ymm14[2,3],ymm4[4],ymm14[5],ymm4[6],ymm14[7,8],ymm4[9],ymm14[10,11],ymm4[12],ymm14[13],ymm4[14],ymm14[15]6787; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm3[2,3,0,1]6788; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm6[6],ymm3[7]6789; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload6790; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload6791; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm9[0,1],ymm8[2],ymm9[3],ymm8[4],ymm9[5,6],ymm8[7],ymm9[8,9],ymm8[10],ymm9[11],ymm8[12],ymm9[13,14],ymm8[15]6792; AVX2-NEXT: vextracti128 $1, %ymm6, %xmm76793; AVX2-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1,2],xmm7[3,4],xmm6[5,6,7]6794; AVX2-NEXT: vpshufb %ymm2, %ymm3, %ymm36795; AVX2-NEXT: vpshufb %xmm0, %xmm6, %xmm66796; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm6[0,1,2],ymm3[3,4,5,6,7]6797; AVX2-NEXT: vpblendd $13, {{[-0-9]+}}(%r{{[sb]}}p), %xmm10, %xmm6 # 16-byte Folded Reload6798; AVX2-NEXT: # xmm6 = mem[0],xmm10[1],mem[2,3]6799; AVX2-NEXT: vpshufb %xmm1, %xmm6, %xmm66800; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm0, %ymm66801; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm3[0,1,2,3,4],ymm6[5,6,7],ymm3[8,9,10,11,12],ymm6[13,14,15]6802; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm6[4,5,6,7]6803; AVX2-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6804; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload6805; AVX2-NEXT: vpblendw $173, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12, %ymm3 # 32-byte Folded Reload6806; AVX2-NEXT: # ymm3 = mem[0],ymm12[1],mem[2,3],ymm12[4],mem[5],ymm12[6],mem[7,8],ymm12[9],mem[10,11],ymm12[12],mem[13],ymm12[14],mem[15]6807; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm3[2,3,0,1]6808; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm6[6],ymm3[7]6809; AVX2-NEXT: vpshufb %ymm2, %ymm3, %ymm26810; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload6811; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6812; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm10[0,1],ymm5[2],ymm10[3],ymm5[4],ymm10[5,6],ymm5[7],ymm10[8,9],ymm5[10],ymm10[11],ymm5[12],ymm10[13,14],ymm5[15]6813; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm66814; AVX2-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm6[3,4],xmm3[5,6,7]6815; AVX2-NEXT: vpshufb %xmm0, %xmm3, %xmm06816; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2],ymm2[3,4,5,6,7]6817; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload6818; AVX2-NEXT: vpblendd $13, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload6819; AVX2-NEXT: # xmm2 = mem[0],xmm2[1],mem[2,3]6820; AVX2-NEXT: vpshufb %xmm1, %xmm2, %xmm16821; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm16822; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15]6823; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]6824; AVX2-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6825; AVX2-NEXT: vpblendw $181, (%rsp), %ymm13, %ymm0 # 32-byte Folded Reload6826; AVX2-NEXT: # ymm0 = mem[0],ymm13[1],mem[2],ymm13[3],mem[4,5],ymm13[6],mem[7,8],ymm13[9],mem[10],ymm13[11],mem[12,13],ymm13[14],mem[15]6827; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]6828; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7]6829; AVX2-NEXT: vpblendw $41, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm1 # 32-byte Folded Reload6830; AVX2-NEXT: # ymm1 = mem[0],ymm15[1,2],mem[3],ymm15[4],mem[5],ymm15[6,7],mem[8],ymm15[9,10],mem[11],ymm15[12],mem[13],ymm15[14,15]6831; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm26832; AVX2-NEXT: vpblendd {{.*#+}} xmm1 = xmm2[0],xmm1[1],xmm2[2],xmm1[3]6833; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [u,u,u,u,u,u,u,u,u,u,u,u,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]6834; AVX2-NEXT: vpshufb %ymm2, %ymm0, %ymm36835; AVX2-NEXT: vmovdqa {{.*#+}} xmm0 = [6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]6836; AVX2-NEXT: vpshufb %xmm0, %xmm1, %xmm16837; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm1[0,1,2],ymm3[3,4,5,6,7]6838; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload6839; AVX2-NEXT: vpblendd $11, {{[-0-9]+}}(%r{{[sb]}}p), %xmm15, %xmm6 # 16-byte Folded Reload6840; AVX2-NEXT: # xmm6 = mem[0,1],xmm15[2],mem[3]6841; AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [0,1,2,3,4,5,6,7,8,9,8,9,2,3,12,13]6842; AVX2-NEXT: vpshufb %xmm1, %xmm6, %xmm66843; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm0, %ymm66844; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm3[0,1,2,3,4],ymm6[5,6,7],ymm3[8,9,10,11,12],ymm6[13,14,15]6845; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm6[4,5,6,7]6846; AVX2-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6847; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload6848; AVX2-NEXT: vpblendw $74, {{[-0-9]+}}(%r{{[sb]}}p), %ymm13, %ymm3 # 32-byte Folded Reload6849; AVX2-NEXT: # ymm3 = ymm13[0],mem[1],ymm13[2],mem[3],ymm13[4,5],mem[6],ymm13[7,8],mem[9],ymm13[10],mem[11],ymm13[12,13],mem[14],ymm13[15]6850; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm3[2,3,0,1]6851; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm6[4],ymm3[5],ymm6[6],ymm3[7]6852; AVX2-NEXT: vpblendw $41, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm6 # 32-byte Folded Reload6853; AVX2-NEXT: # ymm6 = mem[0],ymm11[1,2],mem[3],ymm11[4],mem[5],ymm11[6,7],mem[8],ymm11[9,10],mem[11],ymm11[12],mem[13],ymm11[14,15]6854; AVX2-NEXT: vextracti128 $1, %ymm6, %xmm76855; AVX2-NEXT: vpblendd {{.*#+}} xmm6 = xmm7[0],xmm6[1],xmm7[2],xmm6[3]6856; AVX2-NEXT: vpshufb %ymm2, %ymm3, %ymm36857; AVX2-NEXT: vpshufb %xmm0, %xmm6, %xmm66858; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm6[0,1,2],ymm3[3,4,5,6,7]6859; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload6860; AVX2-NEXT: vpblendd $11, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11, %xmm6 # 16-byte Folded Reload6861; AVX2-NEXT: # xmm6 = mem[0,1],xmm11[2],mem[3]6862; AVX2-NEXT: vpshufb %xmm1, %xmm6, %xmm66863; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm0, %ymm66864; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm3[0,1,2,3,4],ymm6[5,6,7],ymm3[8,9,10,11,12],ymm6[13,14,15]6865; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm6[4,5,6,7]6866; AVX2-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6867; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm14[1],ymm4[2],ymm14[3],ymm4[4,5],ymm14[6],ymm4[7,8],ymm14[9],ymm4[10],ymm14[11],ymm4[12,13],ymm14[14],ymm4[15]6868; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm3[2,3,0,1]6869; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm6[4],ymm3[5],ymm6[6],ymm3[7]6870; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm8[0],ymm9[1,2],ymm8[3],ymm9[4],ymm8[5],ymm9[6,7],ymm8[8],ymm9[9,10],ymm8[11],ymm9[12],ymm8[13],ymm9[14,15]6871; AVX2-NEXT: vextracti128 $1, %ymm6, %xmm76872; AVX2-NEXT: vpblendd {{.*#+}} xmm6 = xmm7[0],xmm6[1],xmm7[2],xmm6[3]6873; AVX2-NEXT: vpshufb %ymm2, %ymm3, %ymm36874; AVX2-NEXT: vpshufb %xmm0, %xmm6, %xmm66875; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm6[0,1,2],ymm3[3,4,5,6,7]6876; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload6877; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload6878; AVX2-NEXT: vpblendd {{.*#+}} xmm6 = xmm8[0,1],xmm14[2],xmm8[3]6879; AVX2-NEXT: vpshufb %xmm1, %xmm6, %xmm66880; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm0, %ymm66881; AVX2-NEXT: vpblendw {{.*#+}} ymm6 = ymm3[0,1,2,3,4],ymm6[5,6,7],ymm3[8,9,10,11,12],ymm6[13,14,15]6882; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm6[4,5,6,7]6883; AVX2-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill6884; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload6885; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm12[0],ymm9[1],ymm12[2],ymm9[3],ymm12[4,5],ymm9[6],ymm12[7,8],ymm9[9],ymm12[10],ymm9[11],ymm12[12,13],ymm9[14],ymm12[15]6886; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm3[2,3,0,1]6887; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm6[4],ymm3[5],ymm6[6],ymm3[7]6888; AVX2-NEXT: vpshufb %ymm2, %ymm3, %ymm26889; AVX2-NEXT: vpblendw {{.*#+}} ymm3 = ymm5[0],ymm10[1,2],ymm5[3],ymm10[4],ymm5[5],ymm10[6,7],ymm5[8],ymm10[9,10],ymm5[11],ymm10[12],ymm5[13],ymm10[14,15]6890; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm66891; AVX2-NEXT: vpblendd {{.*#+}} xmm3 = xmm6[0],xmm3[1],xmm6[2],xmm3[3]6892; AVX2-NEXT: vpshufb %xmm0, %xmm3, %xmm06893; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2],ymm2[3,4,5,6,7]6894; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload6895; AVX2-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload6896; AVX2-NEXT: vpblendd {{.*#+}} xmm2 = xmm10[0,1],xmm12[2],xmm10[3]6897; AVX2-NEXT: vpshufb %xmm1, %xmm2, %xmm16898; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm16899; AVX2-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15]6900; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]6901; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload6902; AVX2-NEXT: vpblendw $107, (%rsp), %ymm0, %ymm0 # 32-byte Folded Reload6903; AVX2-NEXT: # ymm0 = mem[0,1],ymm0[2],mem[3],ymm0[4],mem[5,6],ymm0[7],mem[8,9],ymm0[10],mem[11],ymm0[12],mem[13,14],ymm0[15]6904; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm0[2,3,0,1]6905; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4],ymm0[5,6],ymm2[7]6906; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload6907; AVX2-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm2 # 32-byte Folded Reload6908; AVX2-NEXT: # ymm2 = ymm2[0],mem[1],ymm2[2,3],mem[4],ymm2[5],mem[6],ymm2[7,8],mem[9],ymm2[10,11],mem[12],ymm2[13],mem[14],ymm2[15]6909; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm36910; AVX2-NEXT: vpblendw {{.*#+}} xmm2 = xmm3[0,1,2],xmm2[3,4],xmm3[5,6,7]6911; AVX2-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [24,25,18,19,28,29,22,23,0,0,0,0,4,5,14,15,24,25,18,19,28,29,22,23,0,0,0,0,4,5,14,15]6912; AVX2-NEXT: # ymm7 = mem[0,1,0,1]6913; AVX2-NEXT: vpshufb %ymm7, %ymm0, %ymm06914; AVX2-NEXT: vmovdqa {{.*#+}} xmm3 = [8,9,2,3,12,13,6,7,0,1,10,11,0,1,6,7]6915; AVX2-NEXT: vpshufb %xmm3, %xmm2, %xmm26916; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2],ymm0[3,4,5,6,7]6917; AVX2-NEXT: vpshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload6918; AVX2-NEXT: # xmm2 = mem[3,1,2,3]6919; AVX2-NEXT: vpshuflw {{.*#+}} xmm2 = xmm2[0,1,2,1,4,5,6,7]6920; AVX2-NEXT: vpshufd {{.*#+}} xmm4 = xmm15[0,2,2,3]6921; AVX2-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,1,0,3,4,5,6,7]6922; AVX2-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]6923; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm26924; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm2[6,7]6925; AVX2-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm13, %ymm2 # 32-byte Folded Reload6926; AVX2-NEXT: # ymm2 = ymm13[0,1],mem[2],ymm13[3],mem[4],ymm13[5,6],mem[7],ymm13[8,9],mem[10],ymm13[11],mem[12],ymm13[13,14],mem[15]6927; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm2[2,3,0,1]6928; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4],ymm2[5,6],ymm4[7]6929; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload6930; AVX2-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4, %ymm4 # 32-byte Folded Reload6931; AVX2-NEXT: # ymm4 = ymm4[0],mem[1],ymm4[2,3],mem[4],ymm4[5],mem[6],ymm4[7,8],mem[9],ymm4[10,11],mem[12],ymm4[13],mem[14],ymm4[15]6932; AVX2-NEXT: vextracti128 $1, %ymm4, %xmm56933; AVX2-NEXT: vpblendw {{.*#+}} xmm4 = xmm5[0,1,2],xmm4[3,4],xmm5[5,6,7]6934; AVX2-NEXT: vpshufb %ymm7, %ymm2, %ymm26935; AVX2-NEXT: vpshufb %xmm3, %xmm4, %xmm46936; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm4[0,1,2],ymm2[3,4,5,6,7]6937; AVX2-NEXT: vpshufd $231, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload6938; AVX2-NEXT: # xmm4 = mem[3,1,2,3]6939; AVX2-NEXT: vpshuflw {{.*#+}} xmm4 = xmm4[0,1,2,1,4,5,6,7]6940; AVX2-NEXT: vpshufd {{.*#+}} xmm5 = xmm11[0,2,2,3]6941; AVX2-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,0,3,4,5,6,7]6942; AVX2-NEXT: vpunpckldq {{.*#+}} xmm4 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]6943; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm46944; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6,7]6945; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload6946; AVX2-NEXT: vpblendw $107, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4, %ymm4 # 32-byte Folded Reload6947; AVX2-NEXT: # ymm4 = mem[0,1],ymm4[2],mem[3],ymm4[4],mem[5,6],ymm4[7],mem[8,9],ymm4[10],mem[11],ymm4[12],mem[13,14],ymm4[15]6948; AVX2-NEXT: vpermq {{.*#+}} ymm5 = ymm4[2,3,0,1]6949; AVX2-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm5[4],ymm4[5,6],ymm5[7]6950; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6951; AVX2-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5, %ymm5 # 32-byte Folded Reload6952; AVX2-NEXT: # ymm5 = ymm5[0],mem[1],ymm5[2,3],mem[4],ymm5[5],mem[6],ymm5[7,8],mem[9],ymm5[10,11],mem[12],ymm5[13],mem[14],ymm5[15]6953; AVX2-NEXT: vextracti128 $1, %ymm5, %xmm66954; AVX2-NEXT: vpblendw {{.*#+}} xmm5 = xmm6[0,1,2],xmm5[3,4],xmm6[5,6,7]6955; AVX2-NEXT: vpshufb %ymm7, %ymm4, %ymm46956; AVX2-NEXT: vpshufb %xmm3, %xmm5, %xmm56957; AVX2-NEXT: vpblendd {{.*#+}} ymm4 = ymm5[0,1,2],ymm4[3,4,5,6,7]6958; AVX2-NEXT: vpshufd {{.*#+}} xmm5 = xmm8[3,1,2,3]6959; AVX2-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,2,1,4,5,6,7]6960; AVX2-NEXT: vpshufd {{.*#+}} xmm6 = xmm14[0,2,2,3]6961; AVX2-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,1,0,3,4,5,6,7]6962; AVX2-NEXT: vpunpckldq {{.*#+}} xmm5 = xmm6[0],xmm5[0],xmm6[1],xmm5[1]6963; AVX2-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm56964; AVX2-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3,4,5],ymm5[6,7]6965; AVX2-NEXT: vpblendw $107, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9, %ymm5 # 32-byte Folded Reload6966; AVX2-NEXT: # ymm5 = mem[0,1],ymm9[2],mem[3],ymm9[4],mem[5,6],ymm9[7],mem[8,9],ymm9[10],mem[11],ymm9[12],mem[13,14],ymm9[15]6967; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm5[2,3,0,1]6968; AVX2-NEXT: vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm6[4],ymm5[5,6],ymm6[7]6969; AVX2-NEXT: vpshufb %ymm7, %ymm5, %ymm56970; AVX2-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload6971; AVX2-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm6 # 32-byte Folded Reload6972; AVX2-NEXT: # ymm6 = ymm6[0],mem[1],ymm6[2,3],mem[4],ymm6[5],mem[6],ymm6[7,8],mem[9],ymm6[10,11],mem[12],ymm6[13],mem[14],ymm6[15]6973; AVX2-NEXT: vextracti128 $1, %ymm6, %xmm76974; AVX2-NEXT: vpblendw {{.*#+}} xmm6 = xmm7[0,1,2],xmm6[3,4],xmm7[5,6,7]6975; AVX2-NEXT: vpshufb %xmm3, %xmm6, %xmm36976; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2],ymm5[3,4,5,6,7]6977; AVX2-NEXT: vpshufd {{.*#+}} xmm5 = xmm10[3,1,2,3]6978; AVX2-NEXT: vpshuflw {{.*#+}} xmm5 = xmm5[0,1,2,1,4,5,6,7]6979; AVX2-NEXT: vpshufd {{.*#+}} xmm6 = xmm12[0,2,2,3]6980; AVX2-NEXT: vpshuflw {{.*#+}} xmm6 = xmm6[0,1,0,3,4,5,6,7]6981; AVX2-NEXT: vpunpckldq {{.*#+}} xmm5 = xmm6[0],xmm5[0],xmm6[1],xmm5[1]6982; AVX2-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm56983; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm5[6,7]6984; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6985; AVX2-NEXT: vmovaps %ymm5, 64(%rsi)6986; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6987; AVX2-NEXT: vmovaps %ymm5, (%rsi)6988; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6989; AVX2-NEXT: vmovaps %ymm5, 96(%rsi)6990; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6991; AVX2-NEXT: vmovaps %ymm5, 32(%rsi)6992; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6993; AVX2-NEXT: vmovaps %ymm5, 64(%rdx)6994; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6995; AVX2-NEXT: vmovaps %ymm5, (%rdx)6996; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6997; AVX2-NEXT: vmovaps %ymm5, 96(%rdx)6998; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload6999; AVX2-NEXT: vmovaps %ymm5, 32(%rdx)7000; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload7001; AVX2-NEXT: vmovaps %ymm5, 64(%rcx)7002; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload7003; AVX2-NEXT: vmovaps %ymm5, (%rcx)7004; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload7005; AVX2-NEXT: vmovaps %ymm5, 96(%rcx)7006; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload7007; AVX2-NEXT: vmovaps %ymm5, 32(%rcx)7008; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload7009; AVX2-NEXT: vmovaps %ymm5, 64(%r8)7010; AVX2-NEXT: vmovdqa %ymm1, (%r8)7011; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7012; AVX2-NEXT: vmovaps %ymm1, 96(%r8)7013; AVX2-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7014; AVX2-NEXT: vmovaps %ymm1, 32(%r8)7015; AVX2-NEXT: vmovdqa %ymm4, 64(%r9)7016; AVX2-NEXT: vmovdqa %ymm3, (%r9)7017; AVX2-NEXT: vmovdqa %ymm2, 96(%r9)7018; AVX2-NEXT: vmovdqa %ymm0, 32(%r9)7019; AVX2-NEXT: addq $1048, %rsp # imm = 0x4187020; AVX2-NEXT: vzeroupper7021; AVX2-NEXT: retq7022;7023; AVX2-FP-LABEL: load_i16_stride5_vf64:7024; AVX2-FP: # %bb.0:7025; AVX2-FP-NEXT: subq $1080, %rsp # imm = 0x4387026; AVX2-FP-NEXT: vmovdqa 384(%rdi), %ymm137027; AVX2-FP-NEXT: vmovdqa 512(%rdi), %ymm57028; AVX2-FP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7029; AVX2-FP-NEXT: vmovdqa 480(%rdi), %ymm67030; AVX2-FP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7031; AVX2-FP-NEXT: vmovdqa 544(%rdi), %ymm77032; AVX2-FP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7033; AVX2-FP-NEXT: vmovdqa 576(%rdi), %ymm87034; AVX2-FP-NEXT: vmovdqa 192(%rdi), %ymm27035; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7036; AVX2-FP-NEXT: vmovdqa 160(%rdi), %ymm157037; AVX2-FP-NEXT: vmovdqa 224(%rdi), %ymm17038; AVX2-FP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7039; AVX2-FP-NEXT: vmovdqa 256(%rdi), %ymm07040; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7041; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1,2],ymm1[3],ymm0[4],ymm1[5],ymm0[6,7],ymm1[8],ymm0[9,10],ymm1[11],ymm0[12],ymm1[13],ymm0[14,15]7042; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]7043; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm1[5],ymm0[6],ymm1[7]7044; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm1 = [0,1,10,11,4,5,14,15,8,9,10,11,4,5,6,7,16,17,26,27,20,21,30,31,24,25,26,27,20,21,22,23]7045; AVX2-FP-NEXT: vpshufb %ymm1, %ymm0, %ymm37046; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm15[0],ymm2[1],ymm15[2,3],ymm2[4],ymm15[5],ymm2[6],ymm15[7,8],ymm2[9],ymm15[10,11],ymm2[12],ymm15[13],ymm2[14],ymm15[15]7047; AVX2-FP-NEXT: vmovdqu %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7048; AVX2-FP-NEXT: vextracti128 $1, %ymm0, %xmm27049; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm2 = xmm0[0],xmm2[1,2,3],xmm0[4,5],xmm2[6,7]7050; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm0 = [0,1,10,11,4,5,14,15,8,9,2,3,12,13,6,7]7051; AVX2-FP-NEXT: vpshufb %xmm0, %xmm2, %xmm47052; AVX2-FP-NEXT: vpmovsxbw {{.*#+}} xmm10 = [65535,65535,65535,65535,65535,65535,65535,0]7053; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm4, %ymm3, %ymm27054; AVX2-FP-NEXT: vmovdqu %ymm2, (%rsp) # 32-byte Spill7055; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm7[0],ymm8[1,2],ymm7[3],ymm8[4],ymm7[5],ymm8[6,7],ymm7[8],ymm8[9,10],ymm7[11],ymm8[12],ymm7[13],ymm8[14,15]7056; AVX2-FP-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7057; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm3[2,3,0,1]7058; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4],ymm4[5],ymm3[6],ymm4[7]7059; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm4 = ymm6[0],ymm5[1],ymm6[2,3],ymm5[4],ymm6[5],ymm5[6],ymm6[7,8],ymm5[9],ymm6[10,11],ymm5[12],ymm6[13],ymm5[14],ymm6[15]7060; AVX2-FP-NEXT: vextracti128 $1, %ymm4, %xmm67061; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm6[1,2,3],xmm4[4,5],xmm6[6,7]7062; AVX2-FP-NEXT: vmovdqa 416(%rdi), %ymm147063; AVX2-FP-NEXT: vpshufb %ymm1, %ymm3, %ymm37064; AVX2-FP-NEXT: vpshufb %xmm0, %xmm4, %xmm47065; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm4, %ymm3, %ymm37066; AVX2-FP-NEXT: vmovdqa %ymm10, %ymm77067; AVX2-FP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7068; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm13[0],ymm14[1,2],ymm13[3],ymm14[4],ymm13[5],ymm14[6,7],ymm13[8],ymm14[9,10],ymm13[11],ymm14[12],ymm13[13],ymm14[14,15]7069; AVX2-FP-NEXT: vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7070; AVX2-FP-NEXT: vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7071; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm3[2,3,0,1]7072; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4],ymm4[5],ymm3[6],ymm4[7]7073; AVX2-FP-NEXT: vmovdqa 352(%rdi), %ymm127074; AVX2-FP-NEXT: vmovdqa 320(%rdi), %ymm117075; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm4 = ymm11[0],ymm12[1],ymm11[2,3],ymm12[4],ymm11[5],ymm12[6],ymm11[7,8],ymm12[9],ymm11[10,11],ymm12[12],ymm11[13],ymm12[14],ymm11[15]7076; AVX2-FP-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7077; AVX2-FP-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7078; AVX2-FP-NEXT: vextracti128 $1, %ymm4, %xmm67079; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm6[1,2,3],xmm4[4,5],xmm6[6,7]7080; AVX2-FP-NEXT: vpshufb %ymm1, %ymm3, %ymm37081; AVX2-FP-NEXT: vpshufb %xmm0, %xmm4, %xmm47082; AVX2-FP-NEXT: vpblendvb %ymm10, %ymm4, %ymm3, %ymm27083; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7084; AVX2-FP-NEXT: vmovdqa 64(%rdi), %ymm97085; AVX2-FP-NEXT: vmovdqa 96(%rdi), %ymm107086; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm9[0],ymm10[1,2],ymm9[3],ymm10[4],ymm9[5],ymm10[6,7],ymm9[8],ymm10[9,10],ymm9[11],ymm10[12],ymm9[13],ymm10[14,15]7087; AVX2-FP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7088; AVX2-FP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7089; AVX2-FP-NEXT: vpermq {{.*#+}} ymm6 = ymm3[2,3,0,1]7090; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4],ymm6[5],ymm3[6],ymm6[7]7091; AVX2-FP-NEXT: vpshufb %ymm1, %ymm3, %ymm17092; AVX2-FP-NEXT: vmovdqa (%rdi), %ymm47093; AVX2-FP-NEXT: vmovdqa 32(%rdi), %ymm57094; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm5[1],ymm4[2,3],ymm5[4],ymm4[5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10,11],ymm5[12],ymm4[13],ymm5[14],ymm4[15]7095; AVX2-FP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7096; AVX2-FP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7097; AVX2-FP-NEXT: vextracti128 $1, %ymm3, %xmm67098; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm6[1,2,3],xmm3[4,5],xmm6[6,7]7099; AVX2-FP-NEXT: vpshufb %xmm0, %xmm3, %xmm07100; AVX2-FP-NEXT: vmovdqa %ymm7, %ymm27101; AVX2-FP-NEXT: vpblendvb %ymm7, %ymm0, %ymm1, %ymm07102; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7103; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload7104; AVX2-FP-NEXT: vpblendw $173, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload7105; AVX2-FP-NEXT: # ymm0 = mem[0],ymm0[1],mem[2,3],ymm0[4],mem[5],ymm0[6],mem[7,8],ymm0[9],mem[10,11],ymm0[12],mem[13],ymm0[14],mem[15]7106; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]7107; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm1[5],ymm0[6,7]7108; AVX2-FP-NEXT: vpblendw $181, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm1 # 32-byte Folded Reload7109; AVX2-FP-NEXT: # ymm1 = mem[0],ymm15[1],mem[2],ymm15[3],mem[4,5],ymm15[6],mem[7,8],ymm15[9],mem[10],ymm15[11],mem[12,13],ymm15[14],mem[15]7110; AVX2-FP-NEXT: vextracti128 $1, %ymm1, %xmm37111; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3],xmm1[4,5,6],xmm3[7]7112; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm7 = [2,3,12,13,6,7,0,1,10,11,6,7,8,9,8,9,18,19,28,29,22,23,16,17,26,27,22,23,24,25,24,25]7113; AVX2-FP-NEXT: vpshufb %ymm7, %ymm0, %ymm07114; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm6 = [2,3,12,13,6,7,0,1,10,11,4,5,14,15,10,11]7115; AVX2-FP-NEXT: vpshufb %xmm6, %xmm1, %xmm17116; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm07117; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7118; AVX2-FP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8, %ymm0 # 32-byte Folded Reload7119; AVX2-FP-NEXT: # ymm0 = ymm8[0],mem[1],ymm8[2,3],mem[4],ymm8[5],mem[6],ymm8[7,8],mem[9],ymm8[10,11],mem[12],ymm8[13],mem[14],ymm8[15]7120; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]7121; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm1[5],ymm0[6,7]7122; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Reload7123; AVX2-FP-NEXT: vpblendw $181, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm1 # 32-byte Folded Reload7124; AVX2-FP-NEXT: # ymm1 = mem[0],ymm15[1],mem[2],ymm15[3],mem[4,5],ymm15[6],mem[7,8],ymm15[9],mem[10],ymm15[11],mem[12,13],ymm15[14],mem[15]7125; AVX2-FP-NEXT: vextracti128 $1, %ymm1, %xmm87126; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm8[2,3],xmm1[4,5,6],xmm8[7]7127; AVX2-FP-NEXT: vpshufb %ymm7, %ymm0, %ymm07128; AVX2-FP-NEXT: vpshufb %xmm6, %xmm1, %xmm17129; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm37130; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm14[0],ymm13[1],ymm14[2,3],ymm13[4],ymm14[5],ymm13[6],ymm14[7,8],ymm13[9],ymm14[10,11],ymm13[12],ymm14[13],ymm13[14],ymm14[15]7131; AVX2-FP-NEXT: vpermq {{.*#+}} ymm8 = ymm0[2,3,0,1]7132; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm8[5],ymm0[6,7]7133; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm12[0],ymm11[1],ymm12[2],ymm11[3],ymm12[4,5],ymm11[6],ymm12[7,8],ymm11[9],ymm12[10],ymm11[11],ymm12[12,13],ymm11[14],ymm12[15]7134; AVX2-FP-NEXT: vextracti128 $1, %ymm8, %xmm117135; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1],xmm11[2,3],xmm8[4,5,6],xmm11[7]7136; AVX2-FP-NEXT: vpshufb %ymm7, %ymm0, %ymm07137; AVX2-FP-NEXT: vpshufb %xmm6, %xmm8, %xmm87138; AVX2-FP-NEXT: vmovdqa %ymm2, %ymm17139; AVX2-FP-NEXT: vpblendvb %ymm2, %ymm8, %ymm0, %ymm27140; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm10[0],ymm9[1],ymm10[2,3],ymm9[4],ymm10[5],ymm9[6],ymm10[7,8],ymm9[9],ymm10[10,11],ymm9[12],ymm10[13],ymm9[14],ymm10[15]7141; AVX2-FP-NEXT: vpermq {{.*#+}} ymm11 = ymm8[2,3,0,1]7142; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm8 = ymm8[0,1,2,3,4],ymm11[5],ymm8[6,7]7143; AVX2-FP-NEXT: vpshufb %ymm7, %ymm8, %ymm77144; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm8 = ymm5[0],ymm4[1],ymm5[2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]7145; AVX2-FP-NEXT: vextracti128 $1, %ymm8, %xmm117146; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm8 = xmm8[0,1],xmm11[2,3],xmm8[4,5,6],xmm11[7]7147; AVX2-FP-NEXT: vpshufb %xmm6, %xmm8, %xmm67148; AVX2-FP-NEXT: vpblendvb %ymm1, %ymm6, %ymm7, %ymm127149; AVX2-FP-NEXT: vmovdqa 304(%rdi), %xmm17150; AVX2-FP-NEXT: vmovdqa 288(%rdi), %xmm97151; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm7 = xmm9[0],xmm1[1],xmm9[2,3]7152; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm0 = [6,7,2,3,4,5,6,7,6,7,2,3,12,13,6,7]7153; AVX2-FP-NEXT: vpshufb %xmm0, %xmm7, %xmm77154; AVX2-FP-NEXT: vinserti128 $1, %xmm7, %ymm0, %ymm77155; AVX2-FP-NEXT: vmovdqu (%rsp), %ymm4 # 32-byte Reload7156; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm7 = ymm4[0,1,2,3,4],ymm7[5,6,7],ymm4[8,9,10,11,12],ymm7[13,14,15]7157; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm7[4,5,6,7]7158; AVX2-FP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7159; AVX2-FP-NEXT: vmovdqa 624(%rdi), %xmm107160; AVX2-FP-NEXT: vmovdqa 608(%rdi), %xmm87161; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm7 = xmm8[0],xmm10[1],xmm8[2,3]7162; AVX2-FP-NEXT: vpshufb %xmm0, %xmm7, %xmm77163; AVX2-FP-NEXT: vinserti128 $1, %xmm7, %ymm0, %ymm77164; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7165; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm7 = ymm4[0,1,2,3,4],ymm7[5,6,7],ymm4[8,9,10,11,12],ymm7[13,14,15]7166; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm7[4,5,6,7]7167; AVX2-FP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7168; AVX2-FP-NEXT: vmovdqa 464(%rdi), %xmm67169; AVX2-FP-NEXT: vmovdqa 448(%rdi), %xmm57170; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm7 = xmm5[0],xmm6[1],xmm5[2,3]7171; AVX2-FP-NEXT: vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7172; AVX2-FP-NEXT: vpshufb %xmm0, %xmm7, %xmm77173; AVX2-FP-NEXT: vinserti128 $1, %xmm7, %ymm0, %ymm77174; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7175; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm7 = ymm4[0,1,2,3,4],ymm7[5,6,7],ymm4[8,9,10,11,12],ymm7[13,14,15]7176; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm7[4,5,6,7]7177; AVX2-FP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7178; AVX2-FP-NEXT: vmovdqa 144(%rdi), %xmm117179; AVX2-FP-NEXT: vmovdqa 128(%rdi), %xmm77180; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm14 = xmm7[0],xmm11[1],xmm7[2,3]7181; AVX2-FP-NEXT: vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7182; AVX2-FP-NEXT: vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7183; AVX2-FP-NEXT: vpshufb %xmm0, %xmm14, %xmm07184; AVX2-FP-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm07185; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7186; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm4[0,1,2,3,4],ymm0[5,6,7],ymm4[8,9,10,11,12],ymm0[13,14,15]7187; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]7188; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7189; AVX2-FP-NEXT: vmovdqa %xmm9, %xmm47190; AVX2-FP-NEXT: vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7191; AVX2-FP-NEXT: vmovdqa %xmm1, %xmm147192; AVX2-FP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7193; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm0 = xmm9[0,1],xmm1[2],xmm9[3]7194; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm9 = [0,1,2,3,4,5,6,7,8,9,4,5,14,15,8,9]7195; AVX2-FP-NEXT: vpshufb %xmm9, %xmm0, %xmm07196; AVX2-FP-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm07197; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7198; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2,3,4],ymm0[5,6,7],ymm1[8,9,10,11,12],ymm0[13,14,15]7199; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]7200; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7201; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm0 = xmm8[0,1],xmm10[2],xmm8[3]7202; AVX2-FP-NEXT: vmovdqa %xmm10, %xmm137203; AVX2-FP-NEXT: vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7204; AVX2-FP-NEXT: vmovdqa %xmm8, %xmm107205; AVX2-FP-NEXT: vmovdqa %xmm8, (%rsp) # 16-byte Spill7206; AVX2-FP-NEXT: vpshufb %xmm9, %xmm0, %xmm07207; AVX2-FP-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm07208; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm3[0,1,2,3,4],ymm0[5,6,7],ymm3[8,9,10,11,12],ymm0[13,14,15]7209; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]7210; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7211; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm0 = xmm5[0,1],xmm6[2],xmm5[3]7212; AVX2-FP-NEXT: vmovdqa %xmm6, %xmm37213; AVX2-FP-NEXT: vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill7214; AVX2-FP-NEXT: vpshufb %xmm9, %xmm0, %xmm07215; AVX2-FP-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm07216; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0,1,2,3,4],ymm0[5,6,7],ymm2[8,9,10,11,12],ymm0[13,14,15]7217; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]7218; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7219; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm0 = xmm7[0,1],xmm11[2],xmm7[3]7220; AVX2-FP-NEXT: vpshufb %xmm9, %xmm0, %xmm07221; AVX2-FP-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm07222; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm0 = ymm12[0,1,2,3,4],ymm0[5,6,7],ymm12[8,9,10,11,12],ymm0[13,14,15]7223; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm12[0,1,2,3],ymm0[4,5,6,7]7224; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7225; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload7226; AVX2-FP-NEXT: vpblendw $173, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8, %ymm0 # 32-byte Folded Reload7227; AVX2-FP-NEXT: # ymm0 = mem[0],ymm8[1],mem[2,3],ymm8[4],mem[5],ymm8[6],mem[7,8],ymm8[9],mem[10,11],ymm8[12],mem[13],ymm8[14],mem[15]7228; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]7229; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6],ymm0[7]7230; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload7231; AVX2-FP-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5, %ymm1 # 32-byte Folded Reload7232; AVX2-FP-NEXT: # ymm1 = ymm5[0,1],mem[2],ymm5[3],mem[4],ymm5[5,6],mem[7],ymm5[8,9],mem[10],ymm5[11],mem[12],ymm5[13,14],mem[15]7233; AVX2-FP-NEXT: vextracti128 $1, %ymm1, %xmm27234; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm2[3,4],xmm1[5,6,7]7235; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm11 = [u,u,u,u,u,u,u,u,u,u,u,u,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]7236; AVX2-FP-NEXT: vpshufb %ymm11, %ymm0, %ymm27237; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm0 = [4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]7238; AVX2-FP-NEXT: vpshufb %xmm0, %xmm1, %xmm17239; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm1[0,1,2],ymm2[3,4,5,6,7]7240; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm9 = xmm14[0],xmm4[1],xmm14[2,3]7241; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm1 = [0,1,6,7,4,5,6,7,8,9,6,7,0,1,10,11]7242; AVX2-FP-NEXT: vpshufb %xmm1, %xmm9, %xmm97243; AVX2-FP-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm97244; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0,1,2,3,4],ymm9[5,6,7],ymm2[8,9,10,11,12],ymm9[13,14,15]7245; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm9[4,5,6,7]7246; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7247; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload7248; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7249; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm6[1],ymm4[2,3],ymm6[4],ymm4[5],ymm6[6],ymm4[7,8],ymm6[9],ymm4[10,11],ymm6[12],ymm4[13],ymm6[14],ymm4[15]7250; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm2[2,3,0,1]7251; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm9[6],ymm2[7]7252; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload7253; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm7[0,1],ymm15[2],ymm7[3],ymm15[4],ymm7[5,6],ymm15[7],ymm7[8,9],ymm15[10],ymm7[11],ymm15[12],ymm7[13,14],ymm15[15]7254; AVX2-FP-NEXT: vextracti128 $1, %ymm9, %xmm127255; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0,1,2],xmm12[3,4],xmm9[5,6,7]7256; AVX2-FP-NEXT: vpshufb %ymm11, %ymm2, %ymm27257; AVX2-FP-NEXT: vpshufb %xmm0, %xmm9, %xmm97258; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm9[0,1,2],ymm2[3,4,5,6,7]7259; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm9 = xmm13[0],xmm10[1],xmm13[2,3]7260; AVX2-FP-NEXT: vpshufb %xmm1, %xmm9, %xmm97261; AVX2-FP-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm97262; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0,1,2,3,4],ymm9[5,6,7],ymm2[8,9,10,11,12],ymm9[13,14,15]7263; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm9[4,5,6,7]7264; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7265; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Reload7266; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload7267; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm15[0],ymm14[1],ymm15[2,3],ymm14[4],ymm15[5],ymm14[6],ymm15[7,8],ymm14[9],ymm15[10,11],ymm14[12],ymm15[13],ymm14[14],ymm15[15]7268; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm2[2,3,0,1]7269; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm9[6],ymm2[7]7270; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload7271; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload7272; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm10[0,1],ymm11[2],ymm10[3],ymm11[4],ymm10[5,6],ymm11[7],ymm10[8,9],ymm11[10],ymm10[11],ymm11[12],ymm10[13,14],ymm11[15]7273; AVX2-FP-NEXT: vextracti128 $1, %ymm9, %xmm127274; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm9 = xmm9[0,1,2],xmm12[3,4],xmm9[5,6,7]7275; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm12 = [u,u,u,u,u,u,u,u,u,u,u,u,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]7276; AVX2-FP-NEXT: vpshufb %ymm12, %ymm2, %ymm27277; AVX2-FP-NEXT: vpshufb %xmm0, %xmm9, %xmm97278; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm9[0,1,2],ymm2[3,4,5,6,7]7279; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload7280; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm9 = xmm3[0],xmm13[1],xmm3[2,3]7281; AVX2-FP-NEXT: vpshufb %xmm1, %xmm9, %xmm97282; AVX2-FP-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm97283; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0,1,2,3,4],ymm9[5,6,7],ymm2[8,9,10,11,12],ymm9[13,14,15]7284; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm9[4,5,6,7]7285; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7286; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload7287; AVX2-FP-NEXT: vpblendw $173, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm2 # 32-byte Folded Reload7288; AVX2-FP-NEXT: # ymm2 = mem[0],ymm2[1],mem[2,3],ymm2[4],mem[5],ymm2[6],mem[7,8],ymm2[9],mem[10,11],ymm2[12],mem[13],ymm2[14],mem[15]7289; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm2[2,3,0,1]7290; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm9[6],ymm2[7]7291; AVX2-FP-NEXT: vpshufb %ymm12, %ymm2, %ymm27292; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload7293; AVX2-FP-NEXT: vpblendw $107, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm3 # 32-byte Folded Reload7294; AVX2-FP-NEXT: # ymm3 = mem[0,1],ymm3[2],mem[3],ymm3[4],mem[5,6],ymm3[7],mem[8,9],ymm3[10],mem[11],ymm3[12],mem[13,14],ymm3[15]7295; AVX2-FP-NEXT: vextracti128 $1, %ymm3, %xmm97296; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm9[3,4],xmm3[5,6,7]7297; AVX2-FP-NEXT: vpshufb %xmm0, %xmm3, %xmm07298; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2],ymm2[3,4,5,6,7]7299; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload7300; AVX2-FP-NEXT: vpblendd $13, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload7301; AVX2-FP-NEXT: # xmm2 = mem[0],xmm2[1],mem[2,3]7302; AVX2-FP-NEXT: vpshufb %xmm1, %xmm2, %xmm17303; AVX2-FP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm17304; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15]7305; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]7306; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7307; AVX2-FP-NEXT: vpblendw $74, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8, %ymm0 # 32-byte Folded Reload7308; AVX2-FP-NEXT: # ymm0 = ymm8[0],mem[1],ymm8[2],mem[3],ymm8[4,5],mem[6],ymm8[7,8],mem[9],ymm8[10],mem[11],ymm8[12,13],mem[14],ymm8[15]7309; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]7310; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7]7311; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload7312; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm8[0],ymm5[1,2],ymm8[3],ymm5[4],ymm8[5],ymm5[6,7],ymm8[8],ymm5[9,10],ymm8[11],ymm5[12],ymm8[13],ymm5[14,15]7313; AVX2-FP-NEXT: vextracti128 $1, %ymm1, %xmm27314; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm1 = xmm2[0],xmm1[1],xmm2[2],xmm1[3]7315; AVX2-FP-NEXT: vmovdqa {{.*#+}} ymm3 = [u,u,u,u,u,u,u,u,u,u,u,u,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]7316; AVX2-FP-NEXT: vpshufb %ymm3, %ymm0, %ymm27317; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm0 = [6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]7318; AVX2-FP-NEXT: vpshufb %xmm0, %xmm1, %xmm17319; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm1[0,1,2],ymm2[3,4,5,6,7]7320; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload7321; AVX2-FP-NEXT: vpblendd $4, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm9 # 16-byte Folded Reload7322; AVX2-FP-NEXT: # xmm9 = xmm1[0,1],mem[2],xmm1[3]7323; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm1 = [0,1,2,3,4,5,6,7,8,9,8,9,2,3,12,13]7324; AVX2-FP-NEXT: vpshufb %xmm1, %xmm9, %xmm97325; AVX2-FP-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm97326; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0,1,2,3,4],ymm9[5,6,7],ymm2[8,9,10,11,12],ymm9[13,14,15]7327; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm9[4,5,6,7]7328; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7329; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm6[0],ymm4[1],ymm6[2],ymm4[3],ymm6[4,5],ymm4[6],ymm6[7,8],ymm4[9],ymm6[10],ymm4[11],ymm6[12,13],ymm4[14],ymm6[15]7330; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm2[2,3,0,1]7331; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm9[4],ymm2[5],ymm9[6],ymm2[7]7332; AVX2-FP-NEXT: vpblendw $41, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7, %ymm9 # 32-byte Folded Reload7333; AVX2-FP-NEXT: # ymm9 = mem[0],ymm7[1,2],mem[3],ymm7[4],mem[5],ymm7[6,7],mem[8],ymm7[9,10],mem[11],ymm7[12],mem[13],ymm7[14,15]7334; AVX2-FP-NEXT: vextracti128 $1, %ymm9, %xmm127335; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm9 = xmm12[0],xmm9[1],xmm12[2],xmm9[3]7336; AVX2-FP-NEXT: vpshufb %ymm3, %ymm2, %ymm27337; AVX2-FP-NEXT: vpshufb %xmm0, %xmm9, %xmm97338; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm9[0,1,2],ymm2[3,4,5,6,7]7339; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload7340; AVX2-FP-NEXT: vpblendd $4, (%rsp), %xmm4, %xmm9 # 16-byte Folded Reload7341; AVX2-FP-NEXT: # xmm9 = xmm4[0,1],mem[2],xmm4[3]7342; AVX2-FP-NEXT: vpshufb %xmm1, %xmm9, %xmm97343; AVX2-FP-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm97344; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0,1,2,3,4],ymm9[5,6,7],ymm2[8,9,10,11,12],ymm9[13,14,15]7345; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm9[4,5,6,7]7346; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7347; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm14[0],ymm15[1],ymm14[2],ymm15[3],ymm14[4,5],ymm15[6],ymm14[7,8],ymm15[9],ymm14[10],ymm15[11],ymm14[12,13],ymm15[14],ymm14[15]7348; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm2[2,3,0,1]7349; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm9[4],ymm2[5],ymm9[6],ymm2[7]7350; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm11[0],ymm10[1,2],ymm11[3],ymm10[4],ymm11[5],ymm10[6,7],ymm11[8],ymm10[9,10],ymm11[11],ymm10[12],ymm11[13],ymm10[14,15]7351; AVX2-FP-NEXT: vextracti128 $1, %ymm9, %xmm127352; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm9 = xmm12[0],xmm9[1],xmm12[2],xmm9[3]7353; AVX2-FP-NEXT: vpshufb %ymm3, %ymm2, %ymm27354; AVX2-FP-NEXT: vpshufb %xmm0, %xmm9, %xmm97355; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm9[0,1,2],ymm2[3,4,5,6,7]7356; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload7357; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm9 = xmm15[0,1],xmm13[2],xmm15[3]7358; AVX2-FP-NEXT: vpshufb %xmm1, %xmm9, %xmm97359; AVX2-FP-NEXT: vinserti128 $1, %xmm9, %ymm0, %ymm97360; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm9 = ymm2[0,1,2,3,4],ymm9[5,6,7],ymm2[8,9,10,11,12],ymm9[13,14,15]7361; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm9[4,5,6,7]7362; AVX2-FP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7363; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload7364; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload7365; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm2 = ymm12[0],ymm7[1],ymm12[2],ymm7[3],ymm12[4,5],ymm7[6],ymm12[7,8],ymm7[9],ymm12[10],ymm7[11],ymm12[12,13],ymm7[14],ymm12[15]7366; AVX2-FP-NEXT: vpermq {{.*#+}} ymm9 = ymm2[2,3,0,1]7367; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm9[4],ymm2[5],ymm9[6],ymm2[7]7368; AVX2-FP-NEXT: vpshufb %ymm3, %ymm2, %ymm27369; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload7370; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload7371; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm3 = ymm10[0],ymm11[1,2],ymm10[3],ymm11[4],ymm10[5],ymm11[6,7],ymm10[8],ymm11[9,10],ymm10[11],ymm11[12],ymm10[13],ymm11[14,15]7372; AVX2-FP-NEXT: vextracti128 $1, %ymm3, %xmm97373; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm3 = xmm9[0],xmm3[1],xmm9[2],xmm3[3]7374; AVX2-FP-NEXT: vpshufb %xmm0, %xmm3, %xmm07375; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2],ymm2[3,4,5,6,7]7376; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload7377; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload7378; AVX2-FP-NEXT: vpblendd {{.*#+}} xmm2 = xmm3[0,1],xmm5[2],xmm3[3]7379; AVX2-FP-NEXT: vpshufb %xmm1, %xmm2, %xmm17380; AVX2-FP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm17381; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15]7382; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]7383; AVX2-FP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7384; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload7385; AVX2-FP-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload7386; AVX2-FP-NEXT: # ymm0 = ymm0[0,1],mem[2],ymm0[3],mem[4],ymm0[5,6],mem[7],ymm0[8,9],mem[10],ymm0[11],mem[12],ymm0[13,14],mem[15]7387; AVX2-FP-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]7388; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4],ymm0[5,6],ymm1[7]7389; AVX2-FP-NEXT: vpblendw $173, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8, %ymm0 # 32-byte Folded Reload7390; AVX2-FP-NEXT: # ymm0 = mem[0],ymm8[1],mem[2,3],ymm8[4],mem[5],ymm8[6],mem[7,8],ymm8[9],mem[10,11],ymm8[12],mem[13],ymm8[14],mem[15]7391; AVX2-FP-NEXT: vextracti128 $1, %ymm0, %xmm27392; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm0[3,4],xmm2[5,6,7]7393; AVX2-FP-NEXT: vbroadcasti128 {{.*#+}} ymm0 = [24,25,18,19,28,29,22,23,0,0,0,0,4,5,14,15,24,25,18,19,28,29,22,23,0,0,0,0,4,5,14,15]7394; AVX2-FP-NEXT: # ymm0 = mem[0,1,0,1]7395; AVX2-FP-NEXT: vpshufb %ymm0, %ymm1, %ymm17396; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm13 = [8,9,2,3,12,13,6,7,0,1,10,11,0,1,6,7]7397; AVX2-FP-NEXT: vpshufb %xmm13, %xmm2, %xmm27398; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2],ymm1[3,4,5,6,7]7399; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm9 = [12,13,14,15,4,5,14,15,8,9,10,11,12,13,14,15]7400; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload7401; AVX2-FP-NEXT: vpshufb %xmm9, %xmm1, %xmm47402; AVX2-FP-NEXT: vmovdqa {{.*#+}} xmm1 = [0,1,2,3,0,1,10,11,8,9,10,11,12,13,14,15]7403; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload7404; AVX2-FP-NEXT: vpshufb %xmm1, %xmm6, %xmm67405; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm4 = xmm6[0],xmm4[0],xmm6[1],xmm4[1]7406; AVX2-FP-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm47407; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm6 = ymm2[0,1,2,3,4,5],ymm4[6,7]7408; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload7409; AVX2-FP-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm2 # 32-byte Folded Reload7410; AVX2-FP-NEXT: # ymm2 = ymm2[0,1],mem[2],ymm2[3],mem[4],ymm2[5,6],mem[7],ymm2[8,9],mem[10],ymm2[11],mem[12],ymm2[13,14],mem[15]7411; AVX2-FP-NEXT: vpermq {{.*#+}} ymm4 = ymm2[2,3,0,1]7412; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4],ymm2[5,6],ymm4[7]7413; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7414; AVX2-FP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4, %ymm4 # 32-byte Folded Reload7415; AVX2-FP-NEXT: # ymm4 = ymm4[0],mem[1],ymm4[2,3],mem[4],ymm4[5],mem[6],ymm4[7,8],mem[9],ymm4[10,11],mem[12],ymm4[13],mem[14],ymm4[15]7416; AVX2-FP-NEXT: vextracti128 $1, %ymm4, %xmm147417; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm4 = xmm14[0,1,2],xmm4[3,4],xmm14[5,6,7]7418; AVX2-FP-NEXT: vpshufb %ymm0, %ymm2, %ymm27419; AVX2-FP-NEXT: vpshufb %xmm13, %xmm4, %xmm47420; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm4[0,1,2],ymm2[3,4,5,6,7]7421; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload7422; AVX2-FP-NEXT: vpshufb %xmm9, %xmm4, %xmm47423; AVX2-FP-NEXT: vmovdqa (%rsp), %xmm8 # 16-byte Reload7424; AVX2-FP-NEXT: vpshufb %xmm1, %xmm8, %xmm87425; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm4 = xmm8[0],xmm4[0],xmm8[1],xmm4[1]7426; AVX2-FP-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm47427; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6,7]7428; AVX2-FP-NEXT: vpshufb %xmm9, %xmm3, %xmm47429; AVX2-FP-NEXT: vpshufb %xmm1, %xmm5, %xmm57430; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm4 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]7431; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm5 = ymm12[0,1],ymm7[2],ymm12[3],ymm7[4],ymm12[5,6],ymm7[7],ymm12[8,9],ymm7[10],ymm12[11],ymm7[12],ymm12[13,14],ymm7[15]7432; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm5[2,3,0,1]7433; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm7[4],ymm5[5,6],ymm7[7]7434; AVX2-FP-NEXT: vpblendw {{.*#+}} ymm7 = ymm11[0],ymm10[1],ymm11[2,3],ymm10[4],ymm11[5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10,11],ymm10[12],ymm11[13],ymm10[14],ymm11[15]7435; AVX2-FP-NEXT: vextracti128 $1, %ymm7, %xmm87436; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm7 = xmm8[0,1,2],xmm7[3,4],xmm8[5,6,7]7437; AVX2-FP-NEXT: vpshufb %ymm0, %ymm5, %ymm57438; AVX2-FP-NEXT: vpshufb %xmm13, %xmm7, %xmm77439; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm5 = ymm7[0,1,2],ymm5[3,4,5,6,7]7440; AVX2-FP-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm47441; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm4 = ymm5[0,1,2,3,4,5],ymm4[6,7]7442; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload7443; AVX2-FP-NEXT: vpblendw $107, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm5 # 32-byte Folded Reload7444; AVX2-FP-NEXT: # ymm5 = mem[0,1],ymm3[2],mem[3],ymm3[4],mem[5,6],ymm3[7],mem[8,9],ymm3[10],mem[11],ymm3[12],mem[13,14],ymm3[15]7445; AVX2-FP-NEXT: vpermq {{.*#+}} ymm7 = ymm5[2,3,0,1]7446; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm7[4],ymm5[5,6],ymm7[7]7447; AVX2-FP-NEXT: vpshufb %ymm0, %ymm5, %ymm07448; AVX2-FP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload7449; AVX2-FP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm5 # 32-byte Folded Reload7450; AVX2-FP-NEXT: # ymm5 = ymm3[0],mem[1],ymm3[2,3],mem[4],ymm3[5],mem[6],ymm3[7,8],mem[9],ymm3[10,11],mem[12],ymm3[13],mem[14],ymm3[15]7451; AVX2-FP-NEXT: vextracti128 $1, %ymm5, %xmm77452; AVX2-FP-NEXT: vpblendw {{.*#+}} xmm5 = xmm7[0,1,2],xmm5[3,4],xmm7[5,6,7]7453; AVX2-FP-NEXT: vpshufb %xmm13, %xmm5, %xmm37454; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2],ymm0[3,4,5,6,7]7455; AVX2-FP-NEXT: vpshufb %xmm9, %xmm15, %xmm37456; AVX2-FP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload7457; AVX2-FP-NEXT: vpshufb %xmm1, %xmm5, %xmm17458; AVX2-FP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]7459; AVX2-FP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm17460; AVX2-FP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6,7]7461; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7462; AVX2-FP-NEXT: vmovaps %ymm1, 64(%rsi)7463; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7464; AVX2-FP-NEXT: vmovaps %ymm1, (%rsi)7465; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7466; AVX2-FP-NEXT: vmovaps %ymm1, 96(%rsi)7467; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7468; AVX2-FP-NEXT: vmovaps %ymm1, 32(%rsi)7469; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7470; AVX2-FP-NEXT: vmovaps %ymm1, 64(%rdx)7471; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7472; AVX2-FP-NEXT: vmovaps %ymm1, (%rdx)7473; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7474; AVX2-FP-NEXT: vmovaps %ymm1, 96(%rdx)7475; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7476; AVX2-FP-NEXT: vmovaps %ymm1, 32(%rdx)7477; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7478; AVX2-FP-NEXT: vmovaps %ymm1, 64(%rcx)7479; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7480; AVX2-FP-NEXT: vmovaps %ymm1, (%rcx)7481; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7482; AVX2-FP-NEXT: vmovaps %ymm1, 96(%rcx)7483; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7484; AVX2-FP-NEXT: vmovaps %ymm1, 32(%rcx)7485; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7486; AVX2-FP-NEXT: vmovaps %ymm1, 64(%r8)7487; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7488; AVX2-FP-NEXT: vmovaps %ymm1, (%r8)7489; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7490; AVX2-FP-NEXT: vmovaps %ymm1, 96(%r8)7491; AVX2-FP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7492; AVX2-FP-NEXT: vmovaps %ymm1, 32(%r8)7493; AVX2-FP-NEXT: vmovdqa %ymm0, 64(%r9)7494; AVX2-FP-NEXT: vmovdqa %ymm4, (%r9)7495; AVX2-FP-NEXT: vmovdqa %ymm2, 96(%r9)7496; AVX2-FP-NEXT: vmovdqa %ymm6, 32(%r9)7497; AVX2-FP-NEXT: addq $1080, %rsp # imm = 0x4387498; AVX2-FP-NEXT: vzeroupper7499; AVX2-FP-NEXT: retq7500;7501; AVX2-FCP-LABEL: load_i16_stride5_vf64:7502; AVX2-FCP: # %bb.0:7503; AVX2-FCP-NEXT: subq $1000, %rsp # imm = 0x3E87504; AVX2-FCP-NEXT: vmovdqa (%rdi), %ymm97505; AVX2-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7506; AVX2-FCP-NEXT: vmovdqa 544(%rdi), %ymm147507; AVX2-FCP-NEXT: vmovdqa 576(%rdi), %ymm117508; AVX2-FCP-NEXT: vmovdqa 512(%rdi), %ymm87509; AVX2-FCP-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7510; AVX2-FCP-NEXT: vmovdqa 480(%rdi), %ymm107511; AVX2-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7512; AVX2-FCP-NEXT: vmovdqa 224(%rdi), %ymm47513; AVX2-FCP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7514; AVX2-FCP-NEXT: vmovdqa 256(%rdi), %ymm37515; AVX2-FCP-NEXT: vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7516; AVX2-FCP-NEXT: vmovdqa 192(%rdi), %ymm07517; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7518; AVX2-FCP-NEXT: vmovdqa 160(%rdi), %ymm17519; AVX2-FCP-NEXT: vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7520; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]7521; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm17522; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0],xmm1[1,2,3],xmm0[4,5],xmm1[6,7]7523; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [0,1,10,11,4,5,14,15,8,9,2,3,12,13,6,7]7524; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm1, %xmm27525; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm3[1,2],ymm4[3],ymm3[4],ymm4[5],ymm3[6,7],ymm4[8],ymm3[9,10],ymm4[11],ymm3[12],ymm4[13],ymm3[14,15]7526; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [1,3,0,2,4,6,1,3]7527; AVX2-FCP-NEXT: vpermd %ymm3, %ymm1, %ymm47528; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm3 = [0,1,6,7,8,9,14,15,4,5,14,15,4,5,2,3,16,17,22,23,24,25,30,31,20,21,30,31,20,21,18,19]7529; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm4, %ymm47530; AVX2-FCP-NEXT: vpmovsxbw {{.*#+}} xmm13 = [65535,65535,65535,65535,65535,65535,65535,0]7531; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm2, %ymm4, %ymm27532; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7533; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm10[0],ymm8[1],ymm10[2,3],ymm8[4],ymm10[5],ymm8[6],ymm10[7,8],ymm8[9],ymm10[10,11],ymm8[12],ymm10[13],ymm8[14],ymm10[15]7534; AVX2-FCP-NEXT: vextracti128 $1, %ymm2, %xmm47535; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1,2,3],xmm2[4,5],xmm4[6,7]7536; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm27537; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm14[0],ymm11[1,2],ymm14[3],ymm11[4],ymm14[5],ymm11[6,7],ymm14[8],ymm11[9,10],ymm14[11],ymm11[12],ymm14[13],ymm11[14,15]7538; AVX2-FCP-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7539; AVX2-FCP-NEXT: vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7540; AVX2-FCP-NEXT: vpermd %ymm4, %ymm1, %ymm47541; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm4, %ymm47542; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm2, %ymm4, %ymm27543; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7544; AVX2-FCP-NEXT: vmovdqa 32(%rdi), %ymm157545; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm9[0],ymm15[1],ymm9[2,3],ymm15[4],ymm9[5],ymm15[6],ymm9[7,8],ymm15[9],ymm9[10,11],ymm15[12],ymm9[13],ymm15[14],ymm9[15]7546; AVX2-FCP-NEXT: vmovdqu %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7547; AVX2-FCP-NEXT: vextracti128 $1, %ymm2, %xmm47548; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1,2,3],xmm2[4,5],xmm4[6,7]7549; AVX2-FCP-NEXT: vmovdqa 64(%rdi), %ymm87550; AVX2-FCP-NEXT: vmovdqa 96(%rdi), %ymm127551; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm8[0],ymm12[1,2],ymm8[3],ymm12[4],ymm8[5],ymm12[6,7],ymm8[8],ymm12[9,10],ymm8[11],ymm12[12],ymm8[13],ymm12[14,15]7552; AVX2-FCP-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7553; AVX2-FCP-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7554; AVX2-FCP-NEXT: vpermd %ymm4, %ymm1, %ymm47555; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm4, %ymm47556; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm27557; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm2, %ymm4, %ymm27558; AVX2-FCP-NEXT: vmovdqu %ymm2, (%rsp) # 32-byte Spill7559; AVX2-FCP-NEXT: vmovdqa 352(%rdi), %ymm97560; AVX2-FCP-NEXT: vmovdqa 320(%rdi), %ymm77561; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm7[0],ymm9[1],ymm7[2,3],ymm9[4],ymm7[5],ymm9[6],ymm7[7,8],ymm9[9],ymm7[10,11],ymm9[12],ymm7[13],ymm9[14],ymm7[15]7562; AVX2-FCP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7563; AVX2-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7564; AVX2-FCP-NEXT: vextracti128 $1, %ymm2, %xmm47565; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1,2,3],xmm2[4,5],xmm4[6,7]7566; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm07567; AVX2-FCP-NEXT: vmovdqa 384(%rdi), %ymm57568; AVX2-FCP-NEXT: vmovdqa 416(%rdi), %ymm107569; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0],ymm10[1,2],ymm5[3],ymm10[4],ymm5[5],ymm10[6,7],ymm5[8],ymm10[9,10],ymm5[11],ymm10[12],ymm5[13],ymm10[14,15]7570; AVX2-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7571; AVX2-FCP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7572; AVX2-FCP-NEXT: vpermd %ymm2, %ymm1, %ymm17573; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm1, %ymm17574; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm0, %ymm1, %ymm07575; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7576; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload7577; AVX2-FCP-NEXT: vpblendw $181, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload7578; AVX2-FCP-NEXT: # ymm0 = mem[0],ymm0[1],mem[2],ymm0[3],mem[4,5],ymm0[6],mem[7,8],ymm0[9],mem[10],ymm0[11],mem[12,13],ymm0[14],mem[15]7579; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm17580; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5,6],xmm1[7]7581; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm4 = [2,3,12,13,6,7,0,1,10,11,4,5,14,15,10,11]7582; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm0, %xmm07583; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7584; AVX2-FCP-NEXT: vpblendw $173, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm1 # 32-byte Folded Reload7585; AVX2-FCP-NEXT: # ymm1 = mem[0],ymm1[1],mem[2,3],ymm1[4],mem[5],ymm1[6],mem[7,8],ymm1[9],mem[10,11],ymm1[12],mem[13],ymm1[14],mem[15]7586; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm2 = [2,0,0,0,4,7,1,6]7587; AVX2-FCP-NEXT: vpermd %ymm1, %ymm2, %ymm37588; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [2,3,4,5,10,11,0,1,14,15,2,3,12,13,0,1,18,19,20,21,26,27,16,17,30,31,18,19,28,29,16,17]7589; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm3, %ymm37590; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm0, %ymm3, %ymm67591; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload7592; AVX2-FCP-NEXT: vpblendw $74, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload7593; AVX2-FCP-NEXT: # ymm0 = ymm0[0],mem[1],ymm0[2],mem[3],ymm0[4,5],mem[6],ymm0[7,8],mem[9],ymm0[10],mem[11],ymm0[12,13],mem[14],ymm0[15]7594; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm37595; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm3[2,3],xmm0[4,5,6],xmm3[7]7596; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm0, %xmm07597; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm11[0],ymm14[1],ymm11[2,3],ymm14[4],ymm11[5],ymm14[6],ymm11[7,8],ymm14[9],ymm11[10,11],ymm14[12],ymm11[13],ymm14[14],ymm11[15]7598; AVX2-FCP-NEXT: vpermd %ymm3, %ymm2, %ymm37599; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm3, %ymm37600; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm0, %ymm3, %ymm37601; AVX2-FCP-NEXT: vpblendw $74, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm0 # 32-byte Folded Reload7602; AVX2-FCP-NEXT: # ymm0 = ymm15[0],mem[1],ymm15[2],mem[3],ymm15[4,5],mem[6],ymm15[7,8],mem[9],ymm15[10],mem[11],ymm15[12,13],mem[14],ymm15[15]7603; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm117604; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm11[2,3],xmm0[4,5,6],xmm11[7]7605; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm12[0],ymm8[1],ymm12[2,3],ymm8[4],ymm12[5],ymm8[6],ymm12[7,8],ymm8[9],ymm12[10,11],ymm8[12],ymm12[13],ymm8[14],ymm12[15]7606; AVX2-FCP-NEXT: vpermd %ymm11, %ymm2, %ymm117607; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm11, %ymm117608; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm0, %xmm07609; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm0, %ymm11, %ymm07610; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm9[0],ymm7[1],ymm9[2],ymm7[3],ymm9[4,5],ymm7[6],ymm9[7,8],ymm7[9],ymm9[10],ymm7[11],ymm9[12,13],ymm7[14],ymm9[15]7611; AVX2-FCP-NEXT: vextracti128 $1, %ymm11, %xmm127612; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1],xmm12[2,3],xmm11[4,5,6],xmm12[7]7613; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm11, %xmm47614; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm10[0],ymm5[1],ymm10[2,3],ymm5[4],ymm10[5],ymm5[6],ymm10[7,8],ymm5[9],ymm10[10,11],ymm5[12],ymm10[13],ymm5[14],ymm10[15]7615; AVX2-FCP-NEXT: vpermd %ymm11, %ymm2, %ymm27616; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm2, %ymm17617; AVX2-FCP-NEXT: vpblendvb %ymm13, %ymm4, %ymm1, %ymm17618; AVX2-FCP-NEXT: vmovdqa 288(%rdi), %ymm127619; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [0,3,1,3,0,3,5,7]7620; AVX2-FCP-NEXT: vpermd %ymm12, %ymm5, %ymm117621; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm14 = [0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27,0,0,18,19,20,21,26,27]7622; AVX2-FCP-NEXT: vpshufb %ymm14, %ymm11, %ymm117623; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload7624; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm2[0,1,2,3,4],ymm11[5,6,7],ymm2[8,9,10,11,12],ymm11[13,14,15]7625; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm11[4,5,6,7]7626; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7627; AVX2-FCP-NEXT: vmovdqa 608(%rdi), %ymm107628; AVX2-FCP-NEXT: vpermd %ymm10, %ymm5, %ymm117629; AVX2-FCP-NEXT: vpshufb %ymm14, %ymm11, %ymm117630; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload7631; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm2[0,1,2,3,4],ymm11[5,6,7],ymm2[8,9,10,11,12],ymm11[13,14,15]7632; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm11[4,5,6,7]7633; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7634; AVX2-FCP-NEXT: vmovdqa 128(%rdi), %ymm97635; AVX2-FCP-NEXT: vpermd %ymm9, %ymm5, %ymm117636; AVX2-FCP-NEXT: vpshufb %ymm14, %ymm11, %ymm117637; AVX2-FCP-NEXT: vmovdqu (%rsp), %ymm2 # 32-byte Reload7638; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm2[0,1,2,3,4],ymm11[5,6,7],ymm2[8,9,10,11,12],ymm11[13,14,15]7639; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm11[4,5,6,7]7640; AVX2-FCP-NEXT: vmovdqu %ymm2, (%rsp) # 32-byte Spill7641; AVX2-FCP-NEXT: vmovdqa 448(%rdi), %ymm47642; AVX2-FCP-NEXT: vpermd %ymm4, %ymm5, %ymm57643; AVX2-FCP-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7644; AVX2-FCP-NEXT: vpshufb %ymm14, %ymm5, %ymm57645; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload7646; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm2[0,1,2,3,4],ymm5[5,6,7],ymm2[8,9,10,11,12],ymm5[13,14,15]7647; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm5[4,5,6,7]7648; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7649; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm7 = [1,3,2,3,1,3,6,7]7650; AVX2-FCP-NEXT: vpermd %ymm12, %ymm7, %ymm117651; AVX2-FCP-NEXT: vmovdqa %ymm12, %ymm87652; AVX2-FCP-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7653; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm13 = [0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25]7654; AVX2-FCP-NEXT: vpshufb %ymm13, %ymm11, %ymm117655; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm6[0,1,2,3,4],ymm11[5,6,7],ymm6[8,9,10,11,12],ymm11[13,14,15]7656; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm6[0,1,2,3],ymm11[4,5,6,7]7657; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7658; AVX2-FCP-NEXT: vpermd %ymm10, %ymm7, %ymm67659; AVX2-FCP-NEXT: vmovdqa %ymm10, %ymm127660; AVX2-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7661; AVX2-FCP-NEXT: vpshufb %ymm13, %ymm6, %ymm67662; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm3[0,1,2,3,4],ymm6[5,6,7],ymm3[8,9,10,11,12],ymm6[13,14,15]7663; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm6[4,5,6,7]7664; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7665; AVX2-FCP-NEXT: vpermd %ymm9, %ymm7, %ymm37666; AVX2-FCP-NEXT: vmovdqa %ymm9, %ymm57667; AVX2-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7668; AVX2-FCP-NEXT: vpshufb %ymm13, %ymm3, %ymm37669; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm0[0,1,2,3,4],ymm3[5,6,7],ymm0[8,9,10,11,12],ymm3[13,14,15]7670; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm3[4,5,6,7]7671; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7672; AVX2-FCP-NEXT: vpermd %ymm4, %ymm7, %ymm07673; AVX2-FCP-NEXT: vpshufb %ymm13, %ymm0, %ymm07674; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2,3,4],ymm0[5,6,7],ymm1[8,9,10,11,12],ymm0[13,14,15]7675; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]7676; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7677; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload7678; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7679; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm9[0,1],ymm4[2],ymm9[3],ymm4[4],ymm9[5,6],ymm4[7],ymm9[8,9],ymm4[10],ymm9[11],ymm4[12],ymm9[13,14],ymm4[15]7680; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm17681; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm0[0,1,2],xmm1[3,4],xmm0[5,6,7]7682; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [4,5,14,15,8,9,2,3,12,13,6,7,u,u,u,u]7683; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm1, %xmm67684; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7685; AVX2-FCP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm3 # 32-byte Folded Reload7686; AVX2-FCP-NEXT: # ymm3 = ymm1[0],mem[1],ymm1[2,3],mem[4],ymm1[5],mem[6],ymm1[7,8],mem[9],ymm1[10,11],mem[12],ymm1[13],mem[14],ymm1[15]7687; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm1 = [0,2,0,0,5,7,2,4]7688; AVX2-FCP-NEXT: vpermd %ymm3, %ymm1, %ymm77689; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm3 = [u,u,u,u,u,u,u,u,u,u,u,u,0,1,6,7,16,17,22,23,24,25,30,31,20,21,22,23,16,17,22,23]7690; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm7, %ymm77691; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm7 = ymm6[0,1,2],ymm7[3,4,5,6,7]7692; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm6 = [1,4,6,0,1,4,6,0]7693; AVX2-FCP-NEXT: # ymm6 = mem[0,1,0,1]7694; AVX2-FCP-NEXT: vpermd %ymm8, %ymm6, %ymm117695; AVX2-FCP-NEXT: vmovdqa %ymm14, %ymm87696; AVX2-FCP-NEXT: vpshufb %ymm14, %ymm11, %ymm117697; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm7[0,1,2,3,4],ymm11[5,6,7],ymm7[8,9,10,11,12],ymm11[13,14,15]7698; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm7[0,1,2,3],ymm11[4,5,6,7]7699; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7700; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload7701; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Reload7702; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm15[0,1],ymm14[2],ymm15[3],ymm14[4],ymm15[5,6],ymm14[7],ymm15[8,9],ymm14[10],ymm15[11],ymm14[12],ymm15[13,14],ymm14[15]7703; AVX2-FCP-NEXT: vextracti128 $1, %ymm7, %xmm117704; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm11[3,4],xmm7[5,6,7]7705; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm7, %xmm77706; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload7707; AVX2-FCP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm11 # 32-byte Folded Reload7708; AVX2-FCP-NEXT: # ymm11 = ymm10[0],mem[1],ymm10[2,3],mem[4],ymm10[5],mem[6],ymm10[7,8],mem[9],ymm10[10,11],mem[12],ymm10[13],mem[14],ymm10[15]7709; AVX2-FCP-NEXT: vpermd %ymm11, %ymm1, %ymm117710; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm11, %ymm117711; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm7 = ymm7[0,1,2],ymm11[3,4,5,6,7]7712; AVX2-FCP-NEXT: vpermd %ymm12, %ymm6, %ymm117713; AVX2-FCP-NEXT: vpshufb %ymm8, %ymm11, %ymm117714; AVX2-FCP-NEXT: vmovdqa %ymm8, %ymm137715; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm7[0,1,2,3,4],ymm11[5,6,7],ymm7[8,9,10,11,12],ymm11[13,14,15]7716; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm7[0,1,2,3],ymm11[4,5,6,7]7717; AVX2-FCP-NEXT: vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7718; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload7719; AVX2-FCP-NEXT: vpblendw $107, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12, %ymm7 # 32-byte Folded Reload7720; AVX2-FCP-NEXT: # ymm7 = mem[0,1],ymm12[2],mem[3],ymm12[4],mem[5,6],ymm12[7],mem[8,9],ymm12[10],mem[11],ymm12[12],mem[13,14],ymm12[15]7721; AVX2-FCP-NEXT: vextracti128 $1, %ymm7, %xmm117722; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm11[3,4],xmm7[5,6,7]7723; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload7724; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload7725; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm2[0],ymm8[1],ymm2[2,3],ymm8[4],ymm2[5],ymm8[6],ymm2[7,8],ymm8[9],ymm2[10,11],ymm8[12],ymm2[13],ymm8[14],ymm2[15]7726; AVX2-FCP-NEXT: vpermd %ymm11, %ymm1, %ymm117727; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm11, %ymm117728; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm7, %xmm77729; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm7 = ymm7[0,1,2],ymm11[3,4,5,6,7]7730; AVX2-FCP-NEXT: vpermd %ymm5, %ymm6, %ymm117731; AVX2-FCP-NEXT: vpshufb %ymm13, %ymm11, %ymm117732; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm11 = ymm7[0,1,2,3,4],ymm11[5,6,7],ymm7[8,9,10,11,12],ymm11[13,14,15]7733; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm5 = ymm7[0,1,2,3],ymm11[4,5,6,7]7734; AVX2-FCP-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7735; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload7736; AVX2-FCP-NEXT: vpblendw $107, {{[-0-9]+}}(%r{{[sb]}}p), %ymm13, %ymm7 # 32-byte Folded Reload7737; AVX2-FCP-NEXT: # ymm7 = mem[0,1],ymm13[2],mem[3],ymm13[4],mem[5,6],ymm13[7],mem[8,9],ymm13[10],mem[11],ymm13[12],mem[13,14],ymm13[15]7738; AVX2-FCP-NEXT: vextracti128 $1, %ymm7, %xmm117739; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1,2],xmm11[3,4],xmm7[5,6,7]7740; AVX2-FCP-NEXT: vpshufb %xmm0, %xmm7, %xmm07741; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload7742; AVX2-FCP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5, %ymm7 # 32-byte Folded Reload7743; AVX2-FCP-NEXT: # ymm7 = ymm5[0],mem[1],ymm5[2,3],mem[4],ymm5[5],mem[6],ymm5[7,8],mem[9],ymm5[10,11],mem[12],ymm5[13],mem[14],ymm5[15]7744; AVX2-FCP-NEXT: vpermd %ymm7, %ymm1, %ymm17745; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm1, %ymm17746; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3,4,5,6,7]7747; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm1 # 32-byte Folded Reload7748; AVX2-FCP-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,20,21,26,27]7749; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15]7750; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]7751; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7752; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm4[0],ymm9[1,2],ymm4[3],ymm9[4],ymm4[5],ymm9[6,7],ymm4[8],ymm9[9,10],ymm4[11],ymm9[12],ymm4[13],ymm9[14,15]7753; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm17754; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm1[0],xmm0[1],xmm1[2],xmm0[3]7755; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm4 = [6,7,0,1,10,11,4,5,14,15,8,9,u,u,u,u]7756; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm0, %xmm07757; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload7758; AVX2-FCP-NEXT: vpblendw $74, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm3 # 32-byte Folded Reload7759; AVX2-FCP-NEXT: # ymm3 = ymm11[0],mem[1],ymm11[2],mem[3],ymm11[4,5],mem[6],ymm11[7,8],mem[9],ymm11[10],mem[11],ymm11[12,13],mem[14],ymm11[15]7760; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm9 = [0,3,0,0,5,0,2,7]7761; AVX2-FCP-NEXT: vpermd %ymm3, %ymm9, %ymm67762; AVX2-FCP-NEXT: vmovdqa {{.*#+}} ymm3 = [u,u,u,u,u,u,u,u,u,u,u,u,2,3,4,5,18,19,20,21,26,27,16,17,30,31,30,31,18,19,20,21]7763; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm6, %ymm67764; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2],ymm6[3,4,5,6,7]7765; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm6 = [2,4,7,0,2,4,7,0]7766; AVX2-FCP-NEXT: # ymm6 = mem[0,1,0,1]7767; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm7 # 32-byte Folded Reload7768; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm1 = [0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25,0,0,16,17,22,23,24,25]7769; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm7, %ymm77770; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm0[0,1,2,3,4],ymm7[5,6,7],ymm0[8,9,10,11,12],ymm7[13,14,15]7771; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm7[4,5,6,7]7772; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7773; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm14[0],ymm15[1,2],ymm14[3],ymm15[4],ymm14[5],ymm15[6,7],ymm14[8],ymm15[9,10],ymm14[11],ymm15[12],ymm14[13],ymm15[14,15]7774; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm77775; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm7[0],xmm0[1],xmm7[2],xmm0[3]7776; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm0, %xmm07777; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Reload7778; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm15[0],ymm10[1],ymm15[2],ymm10[3],ymm15[4,5],ymm10[6],ymm15[7,8],ymm10[9],ymm15[10],ymm10[11],ymm15[12,13],ymm10[14],ymm15[15]7779; AVX2-FCP-NEXT: vpermd %ymm7, %ymm9, %ymm77780; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm7, %ymm77781; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2],ymm7[3,4,5,6,7]7782; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm7 # 32-byte Folded Reload7783; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm7, %ymm77784; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm0[0,1,2,3,4],ymm7[5,6,7],ymm0[8,9,10,11,12],ymm7[13,14,15]7785; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm7[4,5,6,7]7786; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7787; AVX2-FCP-NEXT: vpblendw $214, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12, %ymm0 # 32-byte Folded Reload7788; AVX2-FCP-NEXT: # ymm0 = ymm12[0],mem[1,2],ymm12[3],mem[4],ymm12[5],mem[6,7],ymm12[8],mem[9,10],ymm12[11],mem[12],ymm12[13],mem[14,15]7789; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm77790; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm7[0],xmm0[1],xmm7[2],xmm0[3]7791; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm8[0],ymm2[1],ymm8[2],ymm2[3],ymm8[4,5],ymm2[6],ymm8[7,8],ymm2[9],ymm8[10],ymm2[11],ymm8[12,13],ymm2[14],ymm8[15]7792; AVX2-FCP-NEXT: vmovdqa %ymm8, %ymm127793; AVX2-FCP-NEXT: vpermd %ymm7, %ymm9, %ymm77794; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm7, %ymm77795; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm0, %xmm07796; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2],ymm7[3,4,5,6,7]7797; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload7798; AVX2-FCP-NEXT: vpermd %ymm8, %ymm6, %ymm77799; AVX2-FCP-NEXT: vpshufb %ymm1, %ymm7, %ymm77800; AVX2-FCP-NEXT: vmovdqa %ymm1, %ymm27801; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm0[0,1,2,3,4],ymm7[5,6,7],ymm0[8,9,10,11,12],ymm7[13,14,15]7802; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm7[4,5,6,7]7803; AVX2-FCP-NEXT: vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7804; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload7805; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm13[0],ymm10[1,2],ymm13[3],ymm10[4],ymm13[5],ymm10[6,7],ymm13[8],ymm10[9,10],ymm13[11],ymm10[12],ymm13[13],ymm10[14,15]7806; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm77807; AVX2-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm7[0],xmm0[1],xmm7[2],xmm0[3]7808; AVX2-FCP-NEXT: vpshufb %xmm4, %xmm0, %xmm07809; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload7810; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm13[0],ymm5[1],ymm13[2],ymm5[3],ymm13[4,5],ymm5[6],ymm13[7,8],ymm5[9],ymm13[10],ymm5[11],ymm13[12,13],ymm5[14],ymm13[15]7811; AVX2-FCP-NEXT: vpermd %ymm1, %ymm9, %ymm17812; AVX2-FCP-NEXT: vpshufb %ymm3, %ymm1, %ymm17813; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3,4,5,6,7]7814; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload7815; AVX2-FCP-NEXT: vpermd %ymm14, %ymm6, %ymm17816; AVX2-FCP-NEXT: vpshufb %ymm2, %ymm1, %ymm17817; AVX2-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5,6,7],ymm0[8,9,10,11,12],ymm1[13,14,15]7818; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]7819; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload7820; AVX2-FCP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload7821; AVX2-FCP-NEXT: # ymm0 = ymm0[0],mem[1],ymm0[2,3],mem[4],ymm0[5],mem[6],ymm0[7,8],mem[9],ymm0[10,11],mem[12],ymm0[13],mem[14],ymm0[15]7822; AVX2-FCP-NEXT: vextracti128 $1, %ymm0, %xmm27823; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm2[0,1,2],xmm0[3,4],xmm2[5,6,7]7824; AVX2-FCP-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm2 # 32-byte Folded Reload7825; AVX2-FCP-NEXT: # ymm2 = ymm11[0,1],mem[2],ymm11[3],mem[4],ymm11[5,6],mem[7],ymm11[8,9],mem[10],ymm11[11],mem[12],ymm11[13,14],mem[15]7826; AVX2-FCP-NEXT: vmovdqa {{.*#+}} xmm6 = [8,9,2,3,12,13,6,7,0,1,10,11,0,1,6,7]7827; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm0, %xmm07828; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm5 = [1,3,0,0,6,0,3,5]7829; AVX2-FCP-NEXT: vpermd %ymm2, %ymm5, %ymm27830; AVX2-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm7 = [16,17,22,23,24,25,30,31,0,0,0,0,0,1,6,7,16,17,22,23,24,25,30,31,0,0,0,0,0,1,6,7]7831; AVX2-FCP-NEXT: # ymm7 = mem[0,1,0,1]7832; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm2, %ymm27833; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm0[0,1,2],ymm2[3,4,5,6,7]7834; AVX2-FCP-NEXT: vpmovsxbd {{.*#+}} ymm0 = [0,2,1,3,0,2,5,7]7835; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm3 # 32-byte Folded Reload7836; AVX2-FCP-NEXT: vpbroadcastq {{.*#+}} ymm4 = [16,17,22,23,24,25,30,31,16,17,22,23,24,25,30,31,16,17,22,23,24,25,30,31,16,17,22,23,24,25,30,31]7837; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm37838; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm3[6,7]7839; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload7840; AVX2-FCP-NEXT: vpblendw $173, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm3 # 32-byte Folded Reload7841; AVX2-FCP-NEXT: # ymm3 = mem[0],ymm3[1],mem[2,3],ymm3[4],mem[5],ymm3[6],mem[7,8],ymm3[9],mem[10,11],ymm3[12],mem[13],ymm3[14],mem[15]7842; AVX2-FCP-NEXT: vextracti128 $1, %ymm3, %xmm117843; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm11[0,1,2],xmm3[3,4],xmm11[5,6,7]7844; AVX2-FCP-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm11 # 32-byte Folded Reload7845; AVX2-FCP-NEXT: # ymm11 = ymm15[0,1],mem[2],ymm15[3],mem[4],ymm15[5,6],mem[7],ymm15[8,9],mem[10],ymm15[11],mem[12],ymm15[13,14],mem[15]7846; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm3, %xmm37847; AVX2-FCP-NEXT: vpermd %ymm11, %ymm5, %ymm117848; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm11, %ymm117849; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2],ymm11[3,4,5,6,7]7850; AVX2-FCP-NEXT: vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm9 # 32-byte Folded Reload7851; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm9, %ymm97852; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm9[6,7]7853; AVX2-FCP-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12, %ymm9 # 32-byte Folded Reload7854; AVX2-FCP-NEXT: # ymm9 = ymm12[0,1],mem[2],ymm12[3],mem[4],ymm12[5,6],mem[7],ymm12[8,9],mem[10],ymm12[11],mem[12],ymm12[13,14],mem[15]7855; AVX2-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload7856; AVX2-FCP-NEXT: vpblendw $173, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11, %ymm11 # 32-byte Folded Reload7857; AVX2-FCP-NEXT: # ymm11 = mem[0],ymm11[1],mem[2,3],ymm11[4],mem[5],ymm11[6],mem[7,8],ymm11[9],mem[10,11],ymm11[12],mem[13],ymm11[14],mem[15]7858; AVX2-FCP-NEXT: vextracti128 $1, %ymm11, %xmm127859; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm11 = xmm12[0,1,2],xmm11[3,4],xmm12[5,6,7]7860; AVX2-FCP-NEXT: vpermd %ymm9, %ymm5, %ymm97861; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm9, %ymm97862; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm11, %xmm117863; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm9 = ymm11[0,1,2],ymm9[3,4,5,6,7]7864; AVX2-FCP-NEXT: vpermd %ymm8, %ymm0, %ymm87865; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm8, %ymm87866; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm8 = ymm9[0,1,2,3,4,5],ymm8[6,7]7867; AVX2-FCP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm9 # 32-byte Folded Reload7868; AVX2-FCP-NEXT: # ymm9 = ymm10[0],mem[1],ymm10[2,3],mem[4],ymm10[5],mem[6],ymm10[7,8],mem[9],ymm10[10,11],mem[12],ymm10[13],mem[14],ymm10[15]7869; AVX2-FCP-NEXT: vextracti128 $1, %ymm9, %xmm117870; AVX2-FCP-NEXT: vpblendw {{.*#+}} xmm9 = xmm11[0,1,2],xmm9[3,4],xmm11[5,6,7]7871; AVX2-FCP-NEXT: vpshufb %xmm6, %xmm9, %xmm67872; AVX2-FCP-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm13, %ymm9 # 32-byte Folded Reload7873; AVX2-FCP-NEXT: # ymm9 = ymm13[0,1],mem[2],ymm13[3],mem[4],ymm13[5,6],mem[7],ymm13[8,9],mem[10],ymm13[11],mem[12],ymm13[13,14],mem[15]7874; AVX2-FCP-NEXT: vpermd %ymm9, %ymm5, %ymm57875; AVX2-FCP-NEXT: vpshufb %ymm7, %ymm5, %ymm57876; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm5 = ymm6[0,1,2],ymm5[3,4,5,6,7]7877; AVX2-FCP-NEXT: vpermd %ymm14, %ymm0, %ymm07878; AVX2-FCP-NEXT: vpshufb %ymm4, %ymm0, %ymm07879; AVX2-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm5[0,1,2,3,4,5],ymm0[6,7]7880; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7881; AVX2-FCP-NEXT: vmovaps %ymm4, 64(%rsi)7882; AVX2-FCP-NEXT: vmovups (%rsp), %ymm4 # 32-byte Reload7883; AVX2-FCP-NEXT: vmovaps %ymm4, (%rsi)7884; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7885; AVX2-FCP-NEXT: vmovaps %ymm4, 96(%rsi)7886; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7887; AVX2-FCP-NEXT: vmovaps %ymm4, 32(%rsi)7888; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7889; AVX2-FCP-NEXT: vmovaps %ymm4, 64(%rdx)7890; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7891; AVX2-FCP-NEXT: vmovaps %ymm4, (%rdx)7892; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7893; AVX2-FCP-NEXT: vmovaps %ymm4, 96(%rdx)7894; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7895; AVX2-FCP-NEXT: vmovaps %ymm4, 32(%rdx)7896; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7897; AVX2-FCP-NEXT: vmovaps %ymm4, 64(%rcx)7898; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7899; AVX2-FCP-NEXT: vmovaps %ymm4, (%rcx)7900; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7901; AVX2-FCP-NEXT: vmovaps %ymm4, 96(%rcx)7902; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload7903; AVX2-FCP-NEXT: vmovaps %ymm4, 32(%rcx)7904; AVX2-FCP-NEXT: vmovdqa %ymm1, 64(%r8)7905; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7906; AVX2-FCP-NEXT: vmovaps %ymm1, (%r8)7907; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7908; AVX2-FCP-NEXT: vmovaps %ymm1, 96(%r8)7909; AVX2-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload7910; AVX2-FCP-NEXT: vmovaps %ymm1, 32(%r8)7911; AVX2-FCP-NEXT: vmovdqa %ymm0, 64(%r9)7912; AVX2-FCP-NEXT: vmovdqa %ymm8, (%r9)7913; AVX2-FCP-NEXT: vmovdqa %ymm3, 96(%r9)7914; AVX2-FCP-NEXT: vmovdqa %ymm2, 32(%r9)7915; AVX2-FCP-NEXT: addq $1000, %rsp # imm = 0x3E87916; AVX2-FCP-NEXT: vzeroupper7917; AVX2-FCP-NEXT: retq7918;7919; AVX512-LABEL: load_i16_stride5_vf64:7920; AVX512: # %bb.0:7921; AVX512-NEXT: subq $552, %rsp # imm = 0x2287922; AVX512-NEXT: vmovdqa 384(%rdi), %ymm67923; AVX512-NEXT: vmovdqa 416(%rdi), %ymm117924; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm6[0],ymm11[1,2],ymm6[3],ymm11[4],ymm6[5],ymm11[6,7],ymm6[8],ymm11[9,10],ymm6[11],ymm11[12],ymm6[13],ymm11[14,15]7925; AVX512-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7926; AVX512-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7927; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]7928; AVX512-NEXT: vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5],ymm0[6],ymm1[7]7929; AVX512-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,6,7,16,17,26,27,20,21,30,31,24,25,128,128,128,128,128,128]7930; AVX512-NEXT: vpshufb %ymm0, %ymm1, %ymm27931; AVX512-NEXT: vmovdqa 352(%rdi), %ymm87932; AVX512-NEXT: vmovdqa 320(%rdi), %ymm77933; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm7[0],ymm8[1],ymm7[2,3],ymm8[4],ymm7[5],ymm8[6],ymm7[7,8],ymm8[9],ymm7[10,11],ymm8[12],ymm7[13],ymm8[14],ymm7[15]7934; AVX512-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7935; AVX512-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7936; AVX512-NEXT: vextracti128 $1, %ymm1, %xmm37937; AVX512-NEXT: vpblendw {{.*#+}} xmm3 = xmm1[0],xmm3[1,2,3],xmm1[4,5],xmm3[6,7]7938; AVX512-NEXT: vmovdqa {{.*#+}} ymm1 = [0,1,10,11,4,5,14,15,8,9,2,3,12,13,128,128,128,128,128,128,128,128,128,128,128,128,u,u,u,u,u,u]7939; AVX512-NEXT: vpshufb %ymm1, %ymm3, %ymm37940; AVX512-NEXT: vporq %ymm2, %ymm3, %ymm197941; AVX512-NEXT: vmovdqa 192(%rdi), %ymm157942; AVX512-NEXT: vmovdqa 224(%rdi), %ymm137943; AVX512-NEXT: vmovdqa 176(%rdi), %xmm127944; AVX512-NEXT: vmovdqa 160(%rdi), %xmm147945; AVX512-NEXT: vmovdqa (%rdi), %ymm47946; AVX512-NEXT: vmovdqa 32(%rdi), %ymm57947; AVX512-NEXT: vmovdqa 64(%rdi), %ymm107948; AVX512-NEXT: vmovdqa 96(%rdi), %ymm97949; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm10[0],ymm9[1,2],ymm10[3],ymm9[4],ymm10[5],ymm9[6,7],ymm10[8],ymm9[9,10],ymm10[11],ymm9[12],ymm10[13],ymm9[14,15]7950; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm2[2,3,0,1]7951; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm3[5],ymm2[6],ymm3[7]7952; AVX512-NEXT: vpshufb %ymm0, %ymm2, %ymm07953; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm5[1],ymm4[2,3],ymm5[4],ymm4[5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10,11],ymm5[12],ymm4[13],ymm5[14],ymm4[15]7954; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm37955; AVX512-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1,2,3],xmm2[4,5],xmm3[6,7]7956; AVX512-NEXT: vpshufb %ymm1, %ymm2, %ymm17957; AVX512-NEXT: vpor %ymm0, %ymm1, %ymm07958; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7959; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm11[0],ymm6[1],ymm11[2,3],ymm6[4],ymm11[5],ymm6[6],ymm11[7,8],ymm6[9],ymm11[10,11],ymm6[12],ymm11[13],ymm6[14],ymm11[15]7960; AVX512-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]7961; AVX512-NEXT: vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5],ymm0[6,7]7962; AVX512-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,8,9,18,19,28,29,22,23,16,17,26,27,128,128,128,128,128,128]7963; AVX512-NEXT: vpshufb %ymm0, %ymm1, %ymm27964; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm8[0],ymm7[1],ymm8[2],ymm7[3],ymm8[4,5],ymm7[6],ymm8[7,8],ymm7[9],ymm8[10],ymm7[11],ymm8[12,13],ymm7[14],ymm8[15]7965; AVX512-NEXT: vextracti128 $1, %ymm1, %xmm37966; AVX512-NEXT: vpblendw {{.*#+}} xmm3 = xmm1[0,1],xmm3[2,3],xmm1[4,5,6],xmm3[7]7967; AVX512-NEXT: vmovdqa {{.*#+}} ymm1 = [2,3,12,13,6,7,0,1,10,11,4,5,14,15,128,128,128,128,128,128,128,128,128,128,128,128,u,u,u,u,u,u]7968; AVX512-NEXT: vpshufb %ymm1, %ymm3, %ymm37969; AVX512-NEXT: vpor %ymm2, %ymm3, %ymm27970; AVX512-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7971; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm9[0],ymm10[1],ymm9[2,3],ymm10[4],ymm9[5],ymm10[6],ymm9[7,8],ymm10[9],ymm9[10,11],ymm10[12],ymm9[13],ymm10[14],ymm9[15]7972; AVX512-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7973; AVX512-NEXT: vmovdqu %ymm9, (%rsp) # 32-byte Spill7974; AVX512-NEXT: vpermq {{.*#+}} ymm3 = ymm2[2,3,0,1]7975; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm3[5],ymm2[6,7]7976; AVX512-NEXT: vpshufb %ymm0, %ymm2, %ymm07977; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0],ymm4[1],ymm5[2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]7978; AVX512-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7979; AVX512-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill7980; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm37981; AVX512-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm3[2,3],xmm2[4,5,6],xmm3[7]7982; AVX512-NEXT: vpshufb %ymm1, %ymm2, %ymm17983; AVX512-NEXT: vporq %ymm0, %ymm1, %ymm287984; AVX512-NEXT: vmovdqa {{.*#+}} ymm6 = [6,7,0,1,10,11,4,5,14,15,14,15,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]7985; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm13[0,1],ymm15[2],ymm13[3],ymm15[4],ymm13[5,6],ymm15[7],ymm13[8,9],ymm15[10],ymm13[11],ymm15[12],ymm13[13,14],ymm15[15]7986; AVX512-NEXT: vmovdqa64 %ymm15, %ymm187987; AVX512-NEXT: vmovdqa64 %ymm13, %ymm247988; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm17989; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4,5,6,7]7990; AVX512-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[6,7,6,7,8,9,4,5,14,15,8,9,2,3,12,13,22,23,22,23,24,25,20,21,30,31,24,25,18,19,28,29]7991; AVX512-NEXT: vpblendd {{.*#+}} xmm1 = xmm12[0],xmm14[1],xmm12[2,3]7992; AVX512-NEXT: vmovdqa64 %xmm12, %xmm167993; AVX512-NEXT: vmovdqa64 %xmm14, %xmm307994; AVX512-NEXT: vpshufb %xmm6, %xmm1, %xmm17995; AVX512-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm0[3,4,5,6,7]7996; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]7997; AVX512-NEXT: vmovdqa 144(%rdi), %xmm117998; AVX512-NEXT: vmovdqa 128(%rdi), %xmm77999; AVX512-NEXT: vpblendd {{.*#+}} xmm1 = xmm11[0,1],xmm7[2],xmm11[3]8000; AVX512-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,7,8,9,8,9,2,3,12,13]8001; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm18002; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm08003; AVX512-NEXT: vpblendw {{.*#+}} ymm1 = ymm9[0],ymm10[1],ymm9[2],ymm10[3],ymm9[4,5],ymm10[6],ymm9[7,8],ymm10[9],ymm9[10],ymm10[11],ymm9[12,13],ymm10[14],ymm9[15]8004; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm1[2,3,0,1]8005; AVX512-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7]8006; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm5[1,2],ymm4[3],ymm5[4],ymm4[5],ymm5[6,7],ymm4[8],ymm5[9,10],ymm4[11],ymm5[12],ymm4[13],ymm5[14,15]8007; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm38008; AVX512-NEXT: vpblendd {{.*#+}} xmm2 = xmm3[0],xmm2[1],xmm3[2],xmm2[3]8009; AVX512-NEXT: vpshufb %ymm6, %ymm1, %ymm18010; AVX512-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[6,7,0,1,10,11,4,5,14,15,8,9,12,13,14,15]8011; AVX512-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3,4,5,6,7]8012; AVX512-NEXT: vmovdqa 256(%rdi), %ymm128013; AVX512-NEXT: vmovdqa 288(%rdi), %ymm158014; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm12[0],ymm15[1],ymm12[2,3],ymm15[4],ymm12[5],ymm15[6],ymm12[7,8],ymm15[9],ymm12[10,11],ymm15[12],ymm12[13],ymm15[14],ymm12[15]8015; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm38016; AVX512-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1,2,3],xmm2[4,5],xmm3[6,7]8017; AVX512-NEXT: vpternlogq {{.*#+}} zmm1 = zmm0 ^ (mem & (zmm1 ^ zmm0))8018; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = xmm2[0,1,0,1,10,11,4,5,14,15,8,9,2,3,12,13]8019; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm08020; AVX512-NEXT: vextracti64x4 $1, %zmm1, %ymm28021; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0],ymm0[1,2,3,4,5,6,7],ymm2[8],ymm0[9,10,11,12,13,14,15]8022; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]8023; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm08024; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8025; AVX512-NEXT: vmovdqa 464(%rdi), %xmm88026; AVX512-NEXT: vpshufd {{.*#+}} xmm0 = xmm8[3,1,2,3]8027; AVX512-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]8028; AVX512-NEXT: vmovdqa 448(%rdi), %xmm38029; AVX512-NEXT: vpshufd {{.*#+}} xmm1 = xmm3[0,2,2,3]8030; AVX512-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]8031; AVX512-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]8032; AVX512-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8033; AVX512-NEXT: vmovdqa %xmm11, %xmm68034; AVX512-NEXT: vpshufd {{.*#+}} xmm0 = xmm11[3,1,2,3]8035; AVX512-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]8036; AVX512-NEXT: vmovdqa %xmm7, %xmm98037; AVX512-NEXT: vpshufd {{.*#+}} xmm1 = xmm7[0,2,2,3]8038; AVX512-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]8039; AVX512-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]8040; AVX512-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8041; AVX512-NEXT: vpblendd {{.*#+}} xmm0 = xmm3[0],xmm8[1],xmm3[2,3]8042; AVX512-NEXT: vmovdqa64 %xmm3, %xmm228043; AVX512-NEXT: vmovdqa {{.*#+}} xmm1 = [6,7,2,3,4,5,6,7,6,7,2,3,12,13,6,7]8044; AVX512-NEXT: vpshufb %xmm1, %xmm0, %xmm08045; AVX512-NEXT: vmovdqa64 %xmm1, %xmm238046; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm108047; AVX512-NEXT: vmovdqa 576(%rdi), %ymm18048; AVX512-NEXT: vmovdqa 608(%rdi), %ymm28049; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0,1],ymm1[2],ymm2[3],ymm1[4],ymm2[5,6],ymm1[7],ymm2[8,9],ymm1[10],ymm2[11],ymm1[12],ymm2[13,14],ymm1[15]8050; AVX512-NEXT: vmovdqa64 %ymm2, %ymm208051; AVX512-NEXT: vmovdqa64 %ymm1, %ymm178052; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm18053; AVX512-NEXT: vpblendw {{.*#+}} xmm11 = xmm0[0,1,2],xmm1[3,4],xmm0[5,6,7]8054; AVX512-NEXT: vmovdqa 512(%rdi), %ymm58055; AVX512-NEXT: vmovdqa 544(%rdi), %ymm138056; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm13[0],ymm5[1],ymm13[2,3],ymm5[4],ymm13[5],ymm5[6],ymm13[7,8],ymm5[9],ymm13[10,11],ymm5[12],ymm13[13],ymm5[14],ymm13[15]8057; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm18058; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm1[0],ymm0[1,2],ymm1[3],ymm0[4,5,6,7]8059; AVX512-NEXT: vmovdqa64 496(%rdi), %xmm218060; AVX512-NEXT: vpshufd {{.*#+}} xmm1 = xmm21[3,1,2,3]8061; AVX512-NEXT: vpshuflw {{.*#+}} xmm0 = xmm1[2,1,2,3,4,5,6,7]8062; AVX512-NEXT: vmovdqa 480(%rdi), %xmm78063; AVX512-NEXT: vpshufd {{.*#+}} xmm14 = xmm7[0,2,2,3]8064; AVX512-NEXT: vpshuflw {{.*#+}} xmm14 = xmm14[0,3,2,3,4,5,6,7]8065; AVX512-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm14[0],xmm0[0],xmm14[1],xmm0[1]8066; AVX512-NEXT: vmovdqa {{.*#+}} ymm14 = [u,u,u,u,u,u,u,u,8,9,2,3,12,13,6,7,16,17,26,27,26,27,30,31,24,25,18,19,28,29,22,23]8067; AVX512-NEXT: vpshufb %ymm14, %ymm2, %ymm28068; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3,4,5,6,7]8069; AVX512-NEXT: vmovdqa {{.*#+}} xmm2 = [12,13,14,15,4,5,14,15,8,9,2,3,12,13,6,7]8070; AVX512-NEXT: vpshufb %xmm2, %xmm11, %xmm118071; AVX512-NEXT: vinserti128 $1, %xmm11, %ymm0, %ymm118072; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm11[5,6,7]8073; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm27 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535]8074; AVX512-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm27 & (zmm10 ^ zmm19))8075; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm10, %zmm08076; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8077; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm15[0,1],ymm12[2],ymm15[3],ymm12[4],ymm15[5,6],ymm12[7],ymm15[8,9],ymm12[10],ymm15[11],ymm12[12],ymm15[13,14],ymm12[15]8078; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm108079; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm10[3,4],xmm0[5,6,7]8080; AVX512-NEXT: vpshufb %xmm2, %xmm0, %xmm08081; AVX512-NEXT: vmovdqa64 %ymm18, %ymm38082; AVX512-NEXT: vmovdqa64 %ymm24, %ymm18083; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm1[0],ymm3[1],ymm1[2,3],ymm3[4],ymm1[5],ymm3[6],ymm1[7,8],ymm3[9],ymm1[10,11],ymm3[12],ymm1[13],ymm3[14],ymm1[15]8084; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm108085; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm10[0],ymm2[1,2],ymm10[3],ymm2[4,5,6,7]8086; AVX512-NEXT: vpshufb %ymm14, %ymm2, %ymm28087; AVX512-NEXT: vpshufd {{.*#+}} xmm10 = xmm16[3,1,2,3]8088; AVX512-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[2,1,2,3,4,5,6,7]8089; AVX512-NEXT: vmovdqa64 %xmm30, %xmm248090; AVX512-NEXT: vpshufd {{.*#+}} xmm11 = xmm30[0,2,2,3]8091; AVX512-NEXT: vpshuflw {{.*#+}} xmm11 = xmm11[0,3,2,3,4,5,6,7]8092; AVX512-NEXT: vpunpckldq {{.*#+}} xmm10 = xmm11[0],xmm10[0],xmm11[1],xmm10[1]8093; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm10[0,1],ymm2[2,3,4,5,6,7]8094; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm08095; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3,4],ymm0[5,6,7]8096; AVX512-NEXT: vpblendd {{.*#+}} xmm2 = xmm9[0],xmm6[1],xmm9[2,3]8097; AVX512-NEXT: vmovdqa64 %xmm9, %xmm258098; AVX512-NEXT: vmovdqa64 %xmm23, %xmm48099; AVX512-NEXT: vpshufb %xmm4, %xmm2, %xmm28100; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm28101; AVX512-NEXT: vpternlogq $184, {{[-0-9]+}}(%r{{[sb]}}p), %zmm27, %zmm2 # 64-byte Folded Reload8102; AVX512-NEXT: # zmm2 = zmm2 ^ (zmm27 & (zmm2 ^ mem))8103; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm08104; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8105; AVX512-NEXT: vmovdqa64 %xmm22, %xmm48106; AVX512-NEXT: vpblendd {{.*#+}} xmm2 = xmm4[0,1],xmm8[2],xmm4[3]8107; AVX512-NEXT: vmovdqa {{.*#+}} xmm0 = [0,1,2,3,4,5,6,7,8,9,4,5,14,15,8,9]8108; AVX512-NEXT: vpshufb %xmm0, %xmm2, %xmm28109; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm28110; AVX512-NEXT: vpblendw {{.*#+}} ymm10 = ymm5[0],ymm13[1],ymm5[2,3],ymm13[4],ymm5[5],ymm13[6],ymm5[7,8],ymm13[9],ymm5[10,11],ymm13[12],ymm5[13],ymm13[14],ymm5[15]8111; AVX512-NEXT: vmovdqa64 %ymm13, %ymm268112; AVX512-NEXT: vmovdqa64 %ymm5, %ymm228113; AVX512-NEXT: vextracti128 $1, %ymm10, %xmm118114; AVX512-NEXT: vpblendd {{.*#+}} ymm10 = ymm10[0],ymm11[1],ymm10[2],ymm11[3],ymm10[4,5,6,7]8115; AVX512-NEXT: vpshufd {{.*#+}} xmm11 = xmm7[0,3,2,3]8116; AVX512-NEXT: vmovdqa64 %xmm7, %xmm308117; AVX512-NEXT: vpshuflw {{.*#+}} xmm11 = xmm11[1,2,2,3,4,5,6,7]8118; AVX512-NEXT: vpsrlq $48, %xmm21, %xmm138119; AVX512-NEXT: vpunpckldq {{.*#+}} xmm11 = xmm11[0],xmm13[0],xmm11[1],xmm13[1]8120; AVX512-NEXT: vmovdqa {{.*#+}} ymm13 = [2,3,12,13,0,1,0,1,10,11,4,5,14,15,8,9,18,19,28,29,16,17,16,17,26,27,20,21,30,31,24,25]8121; AVX512-NEXT: vpshufb %ymm13, %ymm10, %ymm108122; AVX512-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2],xmm10[3,4,5,6,7]8123; AVX512-NEXT: vpblendd {{.*#+}} ymm10 = ymm11[0,1,2,3],ymm10[4,5,6,7]8124; AVX512-NEXT: vmovdqa64 %ymm20, %ymm98125; AVX512-NEXT: vmovdqa64 %ymm17, %ymm78126; AVX512-NEXT: vpblendw {{.*#+}} ymm11 = ymm7[0],ymm9[1,2],ymm7[3],ymm9[4],ymm7[5],ymm9[6,7],ymm7[8],ymm9[9,10],ymm7[11],ymm9[12],ymm7[13],ymm9[14,15]8127; AVX512-NEXT: vextracti128 $1, %ymm11, %xmm148128; AVX512-NEXT: vpblendd {{.*#+}} xmm11 = xmm14[0],xmm11[1],xmm14[2],xmm11[3]8129; AVX512-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,2,3,6,7,0,1,10,11,4,5,14,15,8,9]8130; AVX512-NEXT: vpshufb %xmm14, %xmm11, %xmm118131; AVX512-NEXT: vinserti128 $1, %xmm11, %ymm0, %ymm118132; AVX512-NEXT: vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3,4],ymm11[5,6,7]8133; AVX512-NEXT: vpternlogq $184, {{[-0-9]+}}(%r{{[sb]}}p), %zmm27, %zmm2 # 64-byte Folded Reload8134; AVX512-NEXT: # zmm2 = zmm2 ^ (zmm27 & (zmm2 ^ mem))8135; AVX512-NEXT: vinserti64x4 $1, %ymm10, %zmm2, %zmm28136; AVX512-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8137; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm1[1],ymm3[2,3],ymm1[4],ymm3[5],ymm1[6],ymm3[7,8],ymm1[9],ymm3[10,11],ymm1[12],ymm3[13],ymm1[14],ymm3[15]8138; AVX512-NEXT: vmovdqa64 %ymm1, %ymm178139; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm108140; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0],ymm10[1],ymm2[2],ymm10[3],ymm2[4,5,6,7]8141; AVX512-NEXT: vpshufb %ymm13, %ymm2, %ymm28142; AVX512-NEXT: vpshufd {{.*#+}} xmm10 = xmm24[0,3,2,3]8143; AVX512-NEXT: vmovdqa64 %xmm24, %xmm208144; AVX512-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[1,2,2,3,4,5,6,7]8145; AVX512-NEXT: vmovdqa64 %xmm16, %xmm18146; AVX512-NEXT: vpsrlq $48, %xmm16, %xmm118147; AVX512-NEXT: vpunpckldq {{.*#+}} xmm10 = xmm10[0],xmm11[0],xmm10[1],xmm11[1]8148; AVX512-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0,1,2],xmm2[3,4,5,6,7]8149; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm10[0,1,2,3],ymm2[4,5,6,7]8150; AVX512-NEXT: vpblendw {{.*#+}} ymm10 = ymm12[0],ymm15[1,2],ymm12[3],ymm15[4],ymm12[5],ymm15[6,7],ymm12[8],ymm15[9,10],ymm12[11],ymm15[12],ymm12[13],ymm15[14,15]8151; AVX512-NEXT: vmovdqa64 %ymm12, %ymm198152; AVX512-NEXT: vextracti128 $1, %ymm10, %xmm118153; AVX512-NEXT: vpblendd {{.*#+}} xmm10 = xmm11[0],xmm10[1],xmm11[2],xmm10[3]8154; AVX512-NEXT: vpshufb %xmm14, %xmm10, %xmm108155; AVX512-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm108156; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm10[5,6,7]8157; AVX512-NEXT: vmovdqa64 %xmm25, %xmm58158; AVX512-NEXT: vpblendd {{.*#+}} xmm10 = xmm5[0,1],xmm6[2],xmm5[3]8159; AVX512-NEXT: vmovdqa64 %xmm6, %xmm238160; AVX512-NEXT: vpshufb %xmm0, %xmm10, %xmm08161; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm08162; AVX512-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm27 & (zmm0 ^ zmm28))8163; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm08164; AVX512-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8165; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload8166; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm18 # 32-byte Reload8167; AVX512-NEXT: vmovdqa64 %ymm18, %ymm08168; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm12[1],ymm0[2,3],ymm12[4],ymm0[5],ymm12[6],ymm0[7,8],ymm12[9],ymm0[10,11],ymm12[12],ymm0[13],ymm12[14],ymm0[15]8169; AVX512-NEXT: vpermq {{.*#+}} ymm2 = ymm0[2,3,0,1]8170; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm0[0,1,2,3,4,5],ymm2[6],ymm0[7]8171; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm24 # 32-byte Reload8172; AVX512-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm16 # 32-byte Reload8173; AVX512-NEXT: vmovdqa64 %ymm24, %ymm08174; AVX512-NEXT: vmovdqa64 %ymm16, %ymm58175; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm5[2],ymm0[3],ymm5[4],ymm0[5,6],ymm5[7],ymm0[8,9],ymm5[10],ymm0[11],ymm5[12],ymm0[13,14],ymm5[15]8176; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm108177; AVX512-NEXT: vpblendw {{.*#+}} xmm10 = xmm0[0,1,2],xmm10[3,4],xmm0[5,6,7]8178; AVX512-NEXT: vmovdqa {{.*#+}} ymm0 = [4,5,14,15,8,9,2,3,12,13,10,11,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]8179; AVX512-NEXT: vpshufb %ymm0, %ymm2, %ymm28180; AVX512-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[4,5,14,15,8,9,2,3,12,13,6,7,12,13,14,15]8181; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm10[0,1,2],ymm2[3,4,5,6,7]8182; AVX512-NEXT: vpblendd {{.*#+}} xmm13 = xmm8[0],xmm4[1],xmm8[2,3]8183; AVX512-NEXT: vmovdqa64 %xmm4, %xmm298184; AVX512-NEXT: vmovdqa64 %xmm8, %xmm288185; AVX512-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[0,1,6,7,4,5,6,7,8,9,6,7,0,1,10,11]8186; AVX512-NEXT: vinserti128 $1, %xmm13, %ymm0, %ymm138187; AVX512-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (zmm27 & (zmm13 ^ zmm2))8188; AVX512-NEXT: vmovdqa64 %ymm26, %ymm88189; AVX512-NEXT: vmovdqa64 %ymm22, %ymm48190; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm8[0],ymm4[1],ymm8[2],ymm4[3],ymm8[4,5],ymm4[6],ymm8[7,8],ymm4[9],ymm8[10],ymm4[11],ymm8[12,13],ymm4[14],ymm8[15]8191; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm148192; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0],ymm14[1],ymm2[2,3,4,5,6,7]8193; AVX512-NEXT: vmovdqa {{.*#+}} ymm14 = [4,5,14,15,12,13,2,3,12,13,6,7,0,1,10,11,20,21,30,31,28,29,18,19,28,29,22,23,16,17,26,27]8194; AVX512-NEXT: vpshufb %ymm14, %ymm2, %ymm28195; AVX512-NEXT: vmovdqa64 %xmm30, %xmm68196; AVX512-NEXT: vpshufd {{.*#+}} xmm11 = xmm30[0,1,1,3]8197; AVX512-NEXT: vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,7,6,7]8198; AVX512-NEXT: vmovdqa64 %xmm21, %xmm58199; AVX512-NEXT: vpunpckhdq {{.*#+}} xmm11 = xmm11[2],xmm21[2],xmm11[3],xmm21[3]8200; AVX512-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2],xmm2[3,4,5,6,7]8201; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm11[0,1,2,3],ymm2[4,5,6,7]8202; AVX512-NEXT: vpblendw {{.*#+}} ymm11 = ymm9[0],ymm7[1],ymm9[2,3],ymm7[4],ymm9[5],ymm7[6],ymm9[7,8],ymm7[9],ymm9[10,11],ymm7[12],ymm9[13],ymm7[14],ymm9[15]8203; AVX512-NEXT: vmovdqa64 %ymm7, %ymm218204; AVX512-NEXT: vextracti128 $1, %ymm11, %xmm108205; AVX512-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0,1,2],xmm11[3,4],xmm10[5,6,7]8206; AVX512-NEXT: vmovdqa {{.*#+}} xmm11 = [0,1,2,3,8,9,2,3,12,13,6,7,0,1,10,11]8207; AVX512-NEXT: vpshufb %xmm11, %xmm10, %xmm108208; AVX512-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm108209; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm10[5,6,7]8210; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm13, %zmm28211; AVX512-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8212; AVX512-NEXT: vmovdqa64 %ymm17, %ymm28213; AVX512-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2],ymm3[3],ymm2[4,5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10],ymm3[11],ymm2[12,13],ymm3[14],ymm2[15]8214; AVX512-NEXT: vmovdqa64 %ymm3, %ymm228215; AVX512-NEXT: vmovdqa64 %ymm17, %ymm268216; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm108217; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0],ymm10[1],ymm2[2,3,4,5,6,7]8218; AVX512-NEXT: vpshufb %ymm14, %ymm2, %ymm28219; AVX512-NEXT: vpshufd {{.*#+}} xmm10 = xmm20[0,1,1,3]8220; AVX512-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,7,6,7]8221; AVX512-NEXT: vpunpckhdq {{.*#+}} xmm10 = xmm10[2],xmm1[2],xmm10[3],xmm1[3]8222; AVX512-NEXT: vmovdqa64 %xmm1, %xmm178223; AVX512-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0,1,2],xmm2[3,4,5,6,7]8224; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm10[0,1,2,3],ymm2[4,5,6,7]8225; AVX512-NEXT: vmovdqa64 %ymm19, %ymm18226; AVX512-NEXT: vpblendw {{.*#+}} ymm10 = ymm15[0],ymm1[1],ymm15[2,3],ymm1[4],ymm15[5],ymm1[6],ymm15[7,8],ymm1[9],ymm15[10,11],ymm1[12],ymm15[13],ymm1[14],ymm15[15]8227; AVX512-NEXT: vmovdqa64 %ymm15, %ymm318228; AVX512-NEXT: vextracti128 $1, %ymm10, %xmm138229; AVX512-NEXT: vpblendw {{.*#+}} xmm10 = xmm13[0,1,2],xmm10[3,4],xmm13[5,6,7]8230; AVX512-NEXT: vpshufb %xmm11, %xmm10, %xmm108231; AVX512-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm108232; AVX512-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm10[5,6,7]8233; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload8234; AVX512-NEXT: vpblendw $82, (%rsp), %ymm1, %ymm10 # 32-byte Folded Reload8235; AVX512-NEXT: # ymm10 = ymm1[0],mem[1],ymm1[2,3],mem[4],ymm1[5],mem[6],ymm1[7,8],mem[9],ymm1[10,11],mem[12],ymm1[13],mem[14],ymm1[15]8236; AVX512-NEXT: vpermq {{.*#+}} ymm11 = ymm10[2,3,0,1]8237; AVX512-NEXT: vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3,4,5],ymm11[6],ymm10[7]8238; AVX512-NEXT: vpshufb %ymm0, %ymm10, %ymm08239; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload8240; AVX512-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload8241; AVX512-NEXT: # ymm10 = ymm1[0,1],mem[2],ymm1[3],mem[4],ymm1[5,6],mem[7],ymm1[8,9],mem[10],ymm1[11],mem[12],ymm1[13,14],mem[15]8242; AVX512-NEXT: vextracti128 $1, %ymm10, %xmm118243; AVX512-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0,1,2],xmm11[3,4],xmm10[5,6,7]8244; AVX512-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[4,5,14,15,8,9,2,3,12,13,6,7,12,13,14,15]8245; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm10[0,1,2],ymm0[3,4,5,6,7]8246; AVX512-NEXT: vmovdqa64 %xmm25, %xmm18247; AVX512-NEXT: vmovdqa64 %xmm23, %xmm38248; AVX512-NEXT: vpblendd {{.*#+}} xmm10 = xmm3[0],xmm1[1],xmm3[2,3]8249; AVX512-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[0,1,6,7,4,5,6,7,8,9,6,7,0,1,10,11]8250; AVX512-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm108251; AVX512-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm27 & (zmm10 ^ zmm0))8252; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm10, %zmm238253; AVX512-NEXT: vmovdqa64 %ymm18, %ymm138254; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm12[0],ymm13[1],ymm12[2],ymm13[3],ymm12[4,5],ymm13[6],ymm12[7,8],ymm13[9],ymm12[10],ymm13[11],ymm12[12,13],ymm13[14],ymm12[15]8255; AVX512-NEXT: vpermq {{.*#+}} ymm10 = ymm0[2,3,0,1]8256; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm10[4],ymm0[5],ymm10[6],ymm0[7]8257; AVX512-NEXT: vmovdqa64 %ymm16, %ymm148258; AVX512-NEXT: vmovdqa64 %ymm24, %ymm158259; AVX512-NEXT: vpblendw {{.*#+}} ymm10 = ymm14[0],ymm15[1,2],ymm14[3],ymm15[4],ymm14[5],ymm15[6,7],ymm14[8],ymm15[9,10],ymm14[11],ymm15[12],ymm14[13],ymm15[14,15]8260; AVX512-NEXT: vextracti128 $1, %ymm10, %xmm118261; AVX512-NEXT: vpblendd {{.*#+}} xmm10 = xmm11[0],xmm10[1],xmm11[2],xmm10[3]8262; AVX512-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[6,7,0,1,10,11,4,5,14,15,8,9,12,13,14,15]8263; AVX512-NEXT: vmovdqa {{.*#+}} ymm1 = [6,7,0,1,10,11,4,5,14,15,14,15,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]8264; AVX512-NEXT: vpshufb %ymm1, %ymm0, %ymm08265; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm10[0,1,2],ymm0[3,4,5,6,7]8266; AVX512-NEXT: vmovdqa %ymm4, %ymm38267; AVX512-NEXT: vmovdqa %ymm8, %ymm48268; AVX512-NEXT: vpblendw {{.*#+}} ymm10 = ymm8[0,1],ymm3[2],ymm8[3],ymm3[4],ymm8[5,6],ymm3[7],ymm8[8,9],ymm3[10],ymm8[11],ymm3[12],ymm8[13,14],ymm3[15]8269; AVX512-NEXT: vextracti128 $1, %ymm10, %xmm118270; AVX512-NEXT: vpblendd {{.*#+}} ymm10 = ymm10[0,1],ymm11[2],ymm10[3,4,5,6,7]8271; AVX512-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[6,7,6,7,8,9,4,5,14,15,8,9,2,3,12,13,22,23,22,23,24,25,20,21,30,31,24,25,18,19,28,29]8272; AVX512-NEXT: vpblendd {{.*#+}} xmm11 = xmm5[0],xmm6[1],xmm5[2,3]8273; AVX512-NEXT: vmovdqa64 %xmm30, %xmm78274; AVX512-NEXT: vmovdqa %xmm5, %xmm68275; AVX512-NEXT: vpshufb %xmm1, %xmm11, %xmm118276; AVX512-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2],xmm10[3,4,5,6,7]8277; AVX512-NEXT: vpblendd {{.*#+}} ymm10 = ymm11[0,1,2,3],ymm10[4,5,6,7]8278; AVX512-NEXT: vmovdqa64 %xmm29, %xmm18279; AVX512-NEXT: vmovdqa64 %xmm28, %xmm28280; AVX512-NEXT: vpblendd {{.*#+}} xmm8 = xmm2[0,1],xmm1[2],xmm2[3]8281; AVX512-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,6,7,8,9,8,9,2,3,12,13]8282; AVX512-NEXT: vinserti128 $1, %xmm8, %ymm0, %ymm88283; AVX512-NEXT: vinserti64x4 $1, %ymm10, %zmm8, %zmm88284; AVX512-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 ^ (mem & (zmm8 ^ zmm0))8285; AVX512-NEXT: vmovdqa %ymm9, %ymm28286; AVX512-NEXT: vmovdqa64 %ymm21, %ymm108287; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm10[0],ymm9[1],ymm10[2,3],ymm9[4],ymm10[5],ymm9[6],ymm10[7,8],ymm9[9],ymm10[10,11],ymm9[12],ymm10[13],ymm9[14],ymm10[15]8288; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm98289; AVX512-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm9[1,2,3],xmm0[4,5],xmm9[6,7]8290; AVX512-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,10,11,4,5,14,15,8,9,2,3,12,13]8291; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm08292; AVX512-NEXT: vextracti64x4 $1, %zmm8, %ymm98293; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm9[0],ymm0[1,2,3,4,5,6,7],ymm9[8],ymm0[9,10,11,12,13,14,15]8294; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm9[0,1,2,3],ymm0[4,5,6,7]8295; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm258296; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm12[0,1],ymm13[2],ymm12[3],ymm13[4],ymm12[5,6],ymm13[7],ymm12[8,9],ymm13[10],ymm12[11],ymm13[12],ymm12[13,14],ymm13[15]8297; AVX512-NEXT: vpermq {{.*#+}} ymm8 = ymm0[2,3,0,1]8298; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm8[4],ymm0[5,6],ymm8[7]8299; AVX512-NEXT: vpblendw {{.*#+}} ymm8 = ymm15[0],ymm14[1],ymm15[2,3],ymm14[4],ymm15[5],ymm14[6],ymm15[7,8],ymm14[9],ymm15[10,11],ymm14[12],ymm15[13],ymm14[14],ymm15[15]8300; AVX512-NEXT: vextracti128 $1, %ymm8, %xmm98301; AVX512-NEXT: vpblendw {{.*#+}} xmm11 = xmm9[0,1,2],xmm8[3,4],xmm9[5,6,7]8302; AVX512-NEXT: vmovdqa {{.*#+}} ymm9 = [8,9,2,3,12,13,6,7,4,5,6,7,4,5,14,15,24,25,18,19,28,29,22,23,20,21,22,23,20,21,30,31]8303; AVX512-NEXT: vpshufb %ymm9, %ymm0, %ymm08304; AVX512-NEXT: vmovdqa {{.*#+}} xmm8 = [8,9,2,3,12,13,6,7,0,1,10,11,0,1,6,7]8305; AVX512-NEXT: vpshufb %xmm8, %xmm11, %xmm118306; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm11[0,1,2],ymm0[3,4,5,6,7]8307; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm3[0],ymm4[1,2],ymm3[3],ymm4[4],ymm3[5],ymm4[6,7],ymm3[8],ymm4[9,10],ymm3[11],ymm4[12],ymm3[13],ymm4[14,15]8308; AVX512-NEXT: vextracti128 $1, %ymm4, %xmm58309; AVX512-NEXT: vpblendd {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2],ymm4[3,4,5,6,7]8310; AVX512-NEXT: vpblendd {{.*#+}} xmm1 = xmm6[0,1],xmm7[2],xmm6[3]8311; AVX512-NEXT: vmovdqa {{.*#+}} ymm3 = [8,9,14,15,4,5,6,7,0,1,10,11,4,5,14,15,24,25,30,31,20,21,22,23,16,17,26,27,20,21,30,31]8312; AVX512-NEXT: vpshufb %ymm3, %ymm4, %ymm48313; AVX512-NEXT: vpshufb %xmm9, %xmm1, %xmm18314; AVX512-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm4[3,4,5,6,7]8315; AVX512-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm4[4,5,6,7]8316; AVX512-NEXT: vinserti128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm4 # 16-byte Folded Reload8317; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm4, %zmm18318; AVX512-NEXT: movb $7, %al8319; AVX512-NEXT: kmovw %eax, %k18320; AVX512-NEXT: vinserti64x4 $0, %ymm0, %zmm0, %zmm1 {%k1}8321; AVX512-NEXT: vextracti64x4 $1, %zmm1, %ymm48322; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0],ymm10[1],ymm2[2],ymm10[3],ymm2[4,5],ymm10[6],ymm2[7,8],ymm10[9],ymm2[10],ymm10[11],ymm2[12,13],ymm10[14],ymm2[15]8323; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm58324; AVX512-NEXT: vpblendw {{.*#+}} xmm5 = xmm0[0,1],xmm5[2,3],xmm0[4,5,6],xmm5[7]8325; AVX512-NEXT: vmovdqa {{.*#+}} xmm0 = [6,7,2,3,12,13,6,7,0,1,10,11,4,5,14,15]8326; AVX512-NEXT: vpshufb %xmm0, %xmm5, %xmm58327; AVX512-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm58328; AVX512-NEXT: vpblendw {{.*#+}} ymm5 = ymm4[0],ymm5[1,2,3,4,5,6,7],ymm4[8],ymm5[9,10,11,12,13,14,15]8329; AVX512-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm5[4,5,6,7]8330; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm1, %zmm18331; AVX512-NEXT: vmovdqa64 %ymm22, %ymm28332; AVX512-NEXT: vmovdqa64 %ymm26, %ymm48333; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm2[0],ymm4[1,2],ymm2[3],ymm4[4],ymm2[5],ymm4[6,7],ymm2[8],ymm4[9,10],ymm2[11],ymm4[12],ymm2[13],ymm4[14,15]8334; AVX512-NEXT: vextracti128 $1, %ymm4, %xmm58335; AVX512-NEXT: vpblendd {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2],ymm4[3,4,5,6,7]8336; AVX512-NEXT: vpshufb %ymm3, %ymm4, %ymm38337; AVX512-NEXT: vmovdqa64 %xmm20, %xmm28338; AVX512-NEXT: vmovdqa64 %xmm17, %xmm48339; AVX512-NEXT: vpblendd {{.*#+}} xmm4 = xmm4[0,1],xmm2[2],xmm4[3]8340; AVX512-NEXT: vpshufb %xmm9, %xmm4, %xmm48341; AVX512-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2],xmm3[3,4,5,6,7]8342; AVX512-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]8343; AVX512-NEXT: vinserti128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm4 # 16-byte Folded Reload8344; AVX512-NEXT: vinserti64x4 $1, %ymm3, %zmm4, %zmm38345; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload8346; AVX512-NEXT: vpblendw $107, (%rsp), %ymm2, %ymm4 # 32-byte Folded Reload8347; AVX512-NEXT: # ymm4 = mem[0,1],ymm2[2],mem[3],ymm2[4],mem[5,6],ymm2[7],mem[8,9],ymm2[10],mem[11],ymm2[12],mem[13,14],ymm2[15]8348; AVX512-NEXT: vpermq {{.*#+}} ymm5 = ymm4[2,3,0,1]8349; AVX512-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm5[4],ymm4[5,6],ymm5[7]8350; AVX512-NEXT: vpshufb %ymm9, %ymm4, %ymm48351; AVX512-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload8352; AVX512-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm5 # 32-byte Folded Reload8353; AVX512-NEXT: # ymm5 = ymm2[0],mem[1],ymm2[2,3],mem[4],ymm2[5],mem[6],ymm2[7,8],mem[9],ymm2[10,11],mem[12],ymm2[13],mem[14],ymm2[15]8354; AVX512-NEXT: vextracti128 $1, %ymm5, %xmm68355; AVX512-NEXT: vpblendw {{.*#+}} xmm5 = xmm6[0,1,2],xmm5[3,4],xmm6[5,6,7]8356; AVX512-NEXT: vpshufb %xmm8, %xmm5, %xmm58357; AVX512-NEXT: vpblendd {{.*#+}} ymm4 = ymm5[0,1,2],ymm4[3,4,5,6,7]8358; AVX512-NEXT: vinserti64x4 $0, %ymm4, %zmm0, %zmm3 {%k1}8359; AVX512-NEXT: vmovdqa64 %ymm19, %ymm28360; AVX512-NEXT: vmovdqa64 %ymm31, %ymm48361; AVX512-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm2[1],ymm4[2],ymm2[3],ymm4[4,5],ymm2[6],ymm4[7,8],ymm2[9],ymm4[10],ymm2[11],ymm4[12,13],ymm2[14],ymm4[15]8362; AVX512-NEXT: vextracti128 $1, %ymm4, %xmm58363; AVX512-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2,3],xmm4[4,5,6],xmm5[7]8364; AVX512-NEXT: vpshufb %xmm0, %xmm4, %xmm08365; AVX512-NEXT: vextracti64x4 $1, %zmm3, %ymm48366; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm08367; AVX512-NEXT: vpblendw {{.*#+}} ymm0 = ymm4[0],ymm0[1,2,3,4,5,6,7],ymm4[8],ymm0[9,10,11,12,13,14,15]8368; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]8369; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm3, %zmm08370; AVX512-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload8371; AVX512-NEXT: vmovaps %zmm2, (%rsi)8372; AVX512-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload8373; AVX512-NEXT: vmovaps %zmm2, 64(%rsi)8374; AVX512-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload8375; AVX512-NEXT: vmovaps %zmm2, 64(%rdx)8376; AVX512-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload8377; AVX512-NEXT: vmovaps %zmm2, (%rdx)8378; AVX512-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload8379; AVX512-NEXT: vmovaps %zmm2, 64(%rcx)8380; AVX512-NEXT: vmovdqa64 %zmm23, (%rcx)8381; AVX512-NEXT: vmovdqa64 %zmm25, 64(%r8)8382; AVX512-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload8383; AVX512-NEXT: vmovaps %zmm2, (%r8)8384; AVX512-NEXT: vmovdqa64 %zmm1, 64(%r9)8385; AVX512-NEXT: vmovdqa64 %zmm0, (%r9)8386; AVX512-NEXT: addq $552, %rsp # imm = 0x2288387; AVX512-NEXT: vzeroupper8388; AVX512-NEXT: retq8389;8390; AVX512-FCP-LABEL: load_i16_stride5_vf64:8391; AVX512-FCP: # %bb.0:8392; AVX512-FCP-NEXT: subq $552, %rsp # imm = 0x2288393; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [4,5,14,15,4,5,6,7,8,9,10,11,12,13,14,15]8394; AVX512-FCP-NEXT: vmovdqa 496(%rdi), %xmm18395; AVX512-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8396; AVX512-FCP-NEXT: vpshufb %xmm0, %xmm1, %xmm18397; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,10,11,8,9,10,11,8,9,10,11,12,13,14,15]8398; AVX512-FCP-NEXT: vmovdqa 480(%rdi), %xmm28399; AVX512-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8400; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm28401; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]8402; AVX512-FCP-NEXT: vmovdqa 512(%rdi), %ymm108403; AVX512-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8404; AVX512-FCP-NEXT: vmovdqa 544(%rdi), %ymm118405; AVX512-FCP-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8406; AVX512-FCP-NEXT: vmovdqa 576(%rdi), %ymm78407; AVX512-FCP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8408; AVX512-FCP-NEXT: vmovdqa 608(%rdi), %ymm88409; AVX512-FCP-NEXT: vmovdqu %ymm8, (%rsp) # 32-byte Spill8410; AVX512-FCP-NEXT: vmovdqa 352(%rdi), %ymm48411; AVX512-FCP-NEXT: vmovdqa 320(%rdi), %ymm58412; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13],ymm4[14],ymm5[15]8413; AVX512-FCP-NEXT: vmovdqa64 %ymm5, %ymm288414; AVX512-FCP-NEXT: vmovdqa64 %ymm4, %ymm308415; AVX512-FCP-NEXT: vextracti128 $1, %ymm1, %xmm48416; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm1[0],xmm4[1,2,3],xmm1[4,5],xmm4[6,7]8417; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [0,1,10,11,4,5,14,15,8,9,2,3,12,13,128,128,128,128,128,128,128,128,128,128,128,128,u,u,u,u,u,u]8418; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm48419; AVX512-FCP-NEXT: vmovdqa 384(%rdi), %ymm68420; AVX512-FCP-NEXT: vmovdqa 416(%rdi), %ymm98421; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm6[0],ymm9[1,2],ymm6[3],ymm9[4],ymm6[5],ymm9[6,7],ymm6[8],ymm9[9,10],ymm6[11],ymm9[12],ymm6[13],ymm9[14,15]8422; AVX512-FCP-NEXT: vmovdqa64 %ymm9, %ymm268423; AVX512-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8424; AVX512-FCP-NEXT: vmovdqa64 %ymm6, %ymm278425; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm6 = [1,3,0,2,4,6,1,3]8426; AVX512-FCP-NEXT: vpermd %ymm5, %ymm6, %ymm58427; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm13 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,2,3,16,17,22,23,24,25,30,31,20,21,128,128,128,128,128,128]8428; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm5, %ymm58429; AVX512-FCP-NEXT: vpor %ymm5, %ymm4, %ymm48430; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm8[0,1],ymm7[2],ymm8[3],ymm7[4],ymm8[5,6],ymm7[7],ymm8[8,9],ymm7[10],ymm8[11],ymm7[12],ymm8[13,14],ymm7[15]8431; AVX512-FCP-NEXT: vextracti128 $1, %ymm5, %xmm78432; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2],xmm7[3,4],xmm5[5,6,7]8433; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm11[0],ymm10[1],ymm11[2,3],ymm10[4],ymm11[5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10,11],ymm10[12],ymm11[13],ymm10[14],ymm11[15]8434; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm10 = [2,4,7,1,4,6,0,0]8435; AVX512-FCP-NEXT: vpermd %ymm7, %ymm10, %ymm78436; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm9 = [u,u,u,u,u,u,u,u,8,9,14,15,0,1,6,7,16,17,22,23,20,21,22,23,24,25,30,31,16,17,22,23]8437; AVX512-FCP-NEXT: vpshufb %ymm9, %ymm7, %ymm78438; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm17 = [8,9,3,2,4,5,7,6]8439; AVX512-FCP-NEXT: vpermt2d %ymm2, %ymm17, %ymm78440; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm2 = [12,13,14,15,4,5,14,15,8,9,2,3,12,13,6,7]8441; AVX512-FCP-NEXT: vpshufb %xmm2, %xmm5, %xmm58442; AVX512-FCP-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm58443; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm5 = ymm7[0,1,2,3,4],ymm5[5,6,7]8444; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm18 = [0,3,1,3,0,3,5,7]8445; AVX512-FCP-NEXT: vmovdqa 448(%rdi), %ymm78446; AVX512-FCP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8447; AVX512-FCP-NEXT: vpermd %ymm7, %ymm18, %ymm78448; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm14 = [4,5,2,3,4,5,6,7,8,9,2,3,4,5,10,11,20,21,18,19,20,21,22,23,24,25,18,19,20,21,26,27]8449; AVX512-FCP-NEXT: vpshufb %ymm14, %ymm7, %ymm78450; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm16 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535]8451; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 ^ (zmm16 & (zmm7 ^ zmm4))8452; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm7, %zmm48453; AVX512-FCP-NEXT: vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8454; AVX512-FCP-NEXT: vmovdqa 176(%rdi), %xmm48455; AVX512-FCP-NEXT: vpshufb %xmm0, %xmm4, %xmm08456; AVX512-FCP-NEXT: vmovdqa64 %xmm4, %xmm318457; AVX512-FCP-NEXT: vmovdqa 160(%rdi), %xmm158458; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm15, %xmm38459; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]8460; AVX512-FCP-NEXT: vmovdqa 64(%rdi), %ymm118461; AVX512-FCP-NEXT: vmovdqa 96(%rdi), %ymm78462; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm11[0],ymm7[1,2],ymm11[3],ymm7[4],ymm11[5],ymm7[6,7],ymm11[8],ymm7[9,10],ymm11[11],ymm7[12],ymm11[13],ymm7[14,15]8463; AVX512-FCP-NEXT: vpermd %ymm3, %ymm6, %ymm38464; AVX512-FCP-NEXT: vpshufb %ymm13, %ymm3, %ymm38465; AVX512-FCP-NEXT: vmovdqa (%rdi), %ymm128466; AVX512-FCP-NEXT: vmovdqa 32(%rdi), %ymm68467; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm12[0],ymm6[1],ymm12[2,3],ymm6[4],ymm12[5],ymm6[6],ymm12[7,8],ymm6[9],ymm12[10,11],ymm6[12],ymm12[13],ymm6[14],ymm12[15]8468; AVX512-FCP-NEXT: vextracti128 $1, %ymm4, %xmm58469; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1,2,3],xmm4[4,5],xmm5[6,7]8470; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm18471; AVX512-FCP-NEXT: vpor %ymm3, %ymm1, %ymm18472; AVX512-FCP-NEXT: vmovdqa 192(%rdi), %ymm88473; AVX512-FCP-NEXT: vmovdqa 224(%rdi), %ymm138474; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm13[0],ymm8[1],ymm13[2,3],ymm8[4],ymm13[5],ymm8[6],ymm13[7,8],ymm8[9],ymm13[10,11],ymm8[12],ymm13[13],ymm8[14],ymm13[15]8475; AVX512-FCP-NEXT: vpermd %ymm3, %ymm10, %ymm38476; AVX512-FCP-NEXT: vpshufb %ymm9, %ymm3, %ymm38477; AVX512-FCP-NEXT: vmovdqa 256(%rdi), %ymm58478; AVX512-FCP-NEXT: vmovdqa 288(%rdi), %ymm98479; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm9[0,1],ymm5[2],ymm9[3],ymm5[4],ymm9[5,6],ymm5[7],ymm9[8,9],ymm5[10],ymm9[11],ymm5[12],ymm9[13,14],ymm5[15]8480; AVX512-FCP-NEXT: vmovdqa64 %ymm5, %ymm258481; AVX512-FCP-NEXT: vextracti128 $1, %ymm4, %xmm108482; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2],xmm10[3,4],xmm4[5,6,7]8483; AVX512-FCP-NEXT: vpshufb %xmm2, %xmm4, %xmm28484; AVX512-FCP-NEXT: vpermt2d %ymm0, %ymm17, %ymm38485; AVX512-FCP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm08486; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3,4],ymm0[5,6,7]8487; AVX512-FCP-NEXT: vmovdqa64 128(%rdi), %ymm238488; AVX512-FCP-NEXT: vpermd %ymm23, %ymm18, %ymm28489; AVX512-FCP-NEXT: vpshufb %ymm14, %ymm2, %ymm28490; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm16 & (zmm2 ^ zmm1))8491; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm08492; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8493; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm6[0],ymm12[1],ymm6[2],ymm12[3],ymm6[4,5],ymm12[6],ymm6[7,8],ymm12[9],ymm6[10],ymm12[11],ymm6[12,13],ymm12[14],ymm6[15]8494; AVX512-FCP-NEXT: vmovdqa64 %ymm12, %ymm218495; AVX512-FCP-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8496; AVX512-FCP-NEXT: vmovdqa64 %ymm6, %ymm298497; AVX512-FCP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8498; AVX512-FCP-NEXT: vextracti128 $1, %ymm0, %xmm18499; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5,6],xmm1[7]8500; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm17 = [2,0,0,0,4,7,1,6]8501; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm7[0],ymm11[1],ymm7[2,3],ymm11[4],ymm7[5],ymm11[6],ymm7[7,8],ymm11[9],ymm7[10,11],ymm11[12],ymm7[13],ymm11[14],ymm7[15]8502; AVX512-FCP-NEXT: vmovdqa64 %ymm11, %ymm198503; AVX512-FCP-NEXT: vmovdqa64 %ymm7, %ymm228504; AVX512-FCP-NEXT: vpermd %ymm1, %ymm17, %ymm18505; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,1,18,19,20,21,26,27,16,17,30,31,128,128,128,128,128,128]8506; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm1, %ymm18507; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm2 = [2,3,12,13,6,7,0,1,10,11,4,5,14,15,128,128,128,128,128,128,128,128,128,128,128,128,u,u,u,u,u,u]8508; AVX512-FCP-NEXT: vpshufb %ymm2, %ymm0, %ymm08509; AVX512-FCP-NEXT: vpor %ymm1, %ymm0, %ymm108510; AVX512-FCP-NEXT: vpsrlq $48, %xmm31, %xmm08511; AVX512-FCP-NEXT: vpshufb %xmm2, %xmm15, %xmm18512; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]8513; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm20 = [0,2,5,7,4,7,0,0]8514; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm8[0],ymm13[1],ymm8[2,3],ymm13[4],ymm8[5],ymm13[6],ymm8[7,8],ymm13[9],ymm8[10,11],ymm13[12],ymm8[13],ymm13[14],ymm8[15]8515; AVX512-FCP-NEXT: vmovdqa %ymm8, %ymm58516; AVX512-FCP-NEXT: vpermd %ymm0, %ymm20, %ymm48517; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm3 = [2,3,4,5,4,5,0,1,6,7,8,9,14,15,4,5,18,19,20,21,20,21,16,17,22,23,24,25,30,31,20,21]8518; AVX512-FCP-NEXT: vpshufb %ymm3, %ymm4, %ymm48519; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm4[3,4,5,6,7]8520; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm4 = ymm1[0,1,2,3],ymm4[4,5,6,7]8521; AVX512-FCP-NEXT: vbroadcasti32x4 {{.*#+}} ymm24 = [1,4,6,3,1,4,6,3]8522; AVX512-FCP-NEXT: # ymm24 = mem[0,1,2,3,0,1,2,3]8523; AVX512-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8524; AVX512-FCP-NEXT: vmovdqa64 %ymm25, %ymm128525; AVX512-FCP-NEXT: vmovdqu64 %ymm25, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8526; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm12[0],ymm9[1,2],ymm12[3],ymm9[4],ymm12[5],ymm9[6,7],ymm12[8],ymm9[9,10],ymm12[11],ymm9[12],ymm12[13],ymm9[14,15]8527; AVX512-FCP-NEXT: vpermd %ymm1, %ymm24, %ymm08528; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [0,1,2,3,2,3,4,5,10,11,0,1,14,15,8,9,16,17,18,19,18,19,20,21,26,27,16,17,30,31,24,25]8529; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm0, %ymm08530; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm4[0,1,2,3,4],ymm0[5,6,7]8531; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm25 = [1,3,2,3,1,3,6,7]8532; AVX512-FCP-NEXT: vpermd %ymm23, %ymm25, %ymm48533; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm14 = [0,1,6,7,4,5,6,7,8,9,0,1,6,7,8,9,16,17,22,23,20,21,22,23,24,25,16,17,22,23,24,25]8534; AVX512-FCP-NEXT: vpshufb %ymm14, %ymm4, %ymm48535; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (zmm16 & (zmm4 ^ zmm10))8536; AVX512-FCP-NEXT: vmovdqa64 %zmm16, %zmm108537; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm4, %zmm08538; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8539; AVX512-FCP-NEXT: vmovdqa64 %ymm28, %ymm188540; AVX512-FCP-NEXT: vmovdqa64 %ymm30, %ymm288541; AVX512-FCP-NEXT: vmovdqa64 %ymm18, %ymm08542; AVX512-FCP-NEXT: vmovdqa64 %ymm30, %ymm48543; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm4[0],ymm0[1],ymm4[2],ymm0[3],ymm4[4,5],ymm0[6],ymm4[7,8],ymm0[9],ymm4[10],ymm0[11],ymm4[12,13],ymm0[14],ymm4[15]8544; AVX512-FCP-NEXT: vextracti128 $1, %ymm0, %xmm48545; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm4[2,3],xmm0[4,5,6],xmm4[7]8546; AVX512-FCP-NEXT: vmovdqa64 %ymm27, %ymm78547; AVX512-FCP-NEXT: vmovdqa64 %ymm26, %ymm48548; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm7[1],ymm4[2,3],ymm7[4],ymm4[5],ymm7[6],ymm4[7,8],ymm7[9],ymm4[10,11],ymm7[12],ymm4[13],ymm7[14],ymm4[15]8549; AVX512-FCP-NEXT: vpermd %ymm4, %ymm17, %ymm48550; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm4, %ymm48551; AVX512-FCP-NEXT: vpshufb %ymm2, %ymm0, %ymm08552; AVX512-FCP-NEXT: vpor %ymm4, %ymm0, %ymm08553; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload8554; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm16 # 32-byte Reload8555; AVX512-FCP-NEXT: vmovdqa64 %ymm16, %ymm48556; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm11[0],ymm4[1],ymm11[2,3],ymm4[4],ymm11[5],ymm4[6],ymm11[7,8],ymm4[9],ymm11[10,11],ymm4[12],ymm11[13],ymm4[14],ymm11[15]8557; AVX512-FCP-NEXT: vpermd %ymm4, %ymm20, %ymm48558; AVX512-FCP-NEXT: vpshufb %ymm3, %ymm4, %ymm38559; AVX512-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload8560; AVX512-FCP-NEXT: vpshufb %xmm2, %xmm6, %xmm28561; AVX512-FCP-NEXT: vmovdqa64 {{[-0-9]+}}(%r{{[sb]}}p), %xmm27 # 16-byte Reload8562; AVX512-FCP-NEXT: vpsrlq $48, %xmm27, %xmm48563; AVX512-FCP-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]8564; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm3[3,4,5,6,7]8565; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm3[4,5,6,7]8566; AVX512-FCP-NEXT: vmovdqu (%rsp), %ymm8 # 32-byte Reload8567; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload8568; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm8[1,2],ymm4[3],ymm8[4],ymm4[5],ymm8[6,7],ymm4[8],ymm8[9,10],ymm4[11],ymm8[12],ymm4[13],ymm8[14,15]8569; AVX512-FCP-NEXT: vpermd %ymm3, %ymm24, %ymm38570; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm3, %ymm18571; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3,4],ymm1[5,6,7]8572; AVX512-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm17 # 32-byte Reload8573; AVX512-FCP-NEXT: vpermd %ymm17, %ymm25, %ymm28574; AVX512-FCP-NEXT: vpshufb %ymm14, %ymm2, %ymm28575; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm10 & (zmm2 ^ zmm0))8576; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm08577; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8578; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm9[0],ymm12[1],ymm9[2,3],ymm12[4],ymm9[5],ymm12[6],ymm9[7,8],ymm12[9],ymm9[10,11],ymm12[12],ymm9[13],ymm12[14],ymm9[15]8579; AVX512-FCP-NEXT: vextracti128 $1, %ymm0, %xmm18580; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]8581; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm15[u,u,u,u,u,u,u,u,4,5,14,15,u,u,u,u]8582; AVX512-FCP-NEXT: vmovdqa64 %xmm15, %xmm208583; AVX512-FCP-NEXT: vpunpckhdq {{.*#+}} xmm0 = xmm0[2],xmm31[2],xmm0[3],xmm31[3]8584; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm24 = [0,3,5,2,5,7,0,0]8585; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm13[0],ymm5[1],ymm13[2],ymm5[3],ymm13[4,5],ymm5[6],ymm13[7,8],ymm5[9],ymm13[10],ymm5[11],ymm13[12,13],ymm5[14],ymm13[15]8586; AVX512-FCP-NEXT: vmovdqa64 %ymm5, %ymm308587; AVX512-FCP-NEXT: vmovdqa64 %ymm13, %ymm268588; AVX512-FCP-NEXT: vpermd %ymm2, %ymm24, %ymm38589; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm12 = [0,1,6,7,2,3,2,3,4,5,10,11,0,1,14,15,16,17,22,23,18,19,18,19,20,21,26,27,16,17,30,31]8590; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm3, %ymm38591; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3,4,5,6,7]8592; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm0[0,1,2,3],ymm3[4,5,6,7]8593; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,2,3,8,9,2,3,12,13,6,7,0,1,10,11]8594; AVX512-FCP-NEXT: vpshufb %xmm2, %xmm1, %xmm18595; AVX512-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm18596; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm10 = ymm3[0,1,2,3,4],ymm1[5,6,7]8597; AVX512-FCP-NEXT: vmovdqa64 %ymm21, %ymm08598; AVX512-FCP-NEXT: vmovdqa64 %ymm29, %ymm18599; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]8600; AVX512-FCP-NEXT: vextracti128 $1, %ymm1, %xmm38601; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm5 = xmm1[0,1,2],xmm3[3,4],xmm1[5,6,7]8602; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm25 = [0,2,0,0,5,7,2,4]8603; AVX512-FCP-NEXT: vmovdqa64 %ymm19, %ymm08604; AVX512-FCP-NEXT: vmovdqa64 %ymm22, %ymm18605; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]8606; AVX512-FCP-NEXT: vmovdqa64 %ymm22, %ymm298607; AVX512-FCP-NEXT: vmovdqa64 %ymm19, %ymm218608; AVX512-FCP-NEXT: vpermd %ymm1, %ymm25, %ymm38609; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [0,1,6,7,8,9,14,15,4,5,6,7,0,1,6,7,16,17,22,23,24,25,30,31,20,21,22,23,16,17,22,23]8610; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm3, %ymm08611; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [4,5,14,15,8,9,2,3,12,13,6,7,12,13,14,15]8612; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm5, %xmm58613; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm5[0,1,2],ymm0[3,4,5,6,7]8614; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm5 = [1,4,6,0,1,4,6,0]8615; AVX512-FCP-NEXT: # ymm5 = mem[0,1,0,1]8616; AVX512-FCP-NEXT: vpermd %ymm23, %ymm5, %ymm148617; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm9 = [4,5,2,3,4,5,6,7,8,9,2,3,4,5,10,11,20,21,18,19,20,21,22,23,24,25,18,19,20,21,26,27]8618; AVX512-FCP-NEXT: vpshufb %ymm9, %ymm14, %ymm148619; AVX512-FCP-NEXT: vmovdqa64 {{.*#+}} zmm15 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535]8620; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (zmm15 & (zmm14 ^ zmm0))8621; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm10, %zmm14, %zmm08622; AVX512-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8623; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm8[0],ymm4[1],ymm8[2,3],ymm4[4],ymm8[5],ymm4[6],ymm8[7,8],ymm4[9],ymm8[10,11],ymm4[12],ymm8[13],ymm4[14],ymm8[15]8624; AVX512-FCP-NEXT: vextracti128 $1, %ymm0, %xmm108625; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm10[0,1,2],xmm0[3,4],xmm10[5,6,7]8626; AVX512-FCP-NEXT: vpshufb %xmm2, %xmm0, %xmm08627; AVX512-FCP-NEXT: vmovdqa64 %ymm16, %ymm88628; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm8[0],ymm11[1],ymm8[2],ymm11[3],ymm8[4,5],ymm11[6],ymm8[7,8],ymm11[9],ymm8[10],ymm11[11],ymm8[12,13],ymm11[14],ymm8[15]8629; AVX512-FCP-NEXT: vmovdqa %ymm11, %ymm138630; AVX512-FCP-NEXT: vpermd %ymm2, %ymm24, %ymm28631; AVX512-FCP-NEXT: vpshufb %ymm12, %ymm2, %ymm28632; AVX512-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm6[u,u,u,u,u,u,u,u,4,5,14,15,u,u,u,u]8633; AVX512-FCP-NEXT: vmovdqa %xmm6, %xmm148634; AVX512-FCP-NEXT: vpunpckhdq {{.*#+}} xmm4 = xmm4[2],xmm27[2],xmm4[3],xmm27[3]8635; AVX512-FCP-NEXT: vmovdqa64 %xmm27, %xmm68636; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2],xmm2[3,4,5,6,7]8637; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]8638; AVX512-FCP-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm08639; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3,4],ymm0[5,6,7]8640; AVX512-FCP-NEXT: vmovdqa64 %ymm18, %ymm118641; AVX512-FCP-NEXT: vmovdqa64 %ymm28, %ymm128642; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm12[0,1],ymm11[2],ymm12[3],ymm11[4],ymm12[5,6],ymm11[7],ymm12[8,9],ymm11[10],ymm12[11],ymm11[12],ymm12[13,14],ymm11[15]8643; AVX512-FCP-NEXT: vextracti128 $1, %ymm2, %xmm48644; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm4[3,4],xmm2[5,6,7]8645; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm28646; AVX512-FCP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7, %ymm3 # 32-byte Folded Reload8647; AVX512-FCP-NEXT: # ymm3 = ymm7[0],mem[1],ymm7[2,3],mem[4],ymm7[5],mem[6],ymm7[7,8],mem[9],ymm7[10,11],mem[12],ymm7[13],mem[14],ymm7[15]8648; AVX512-FCP-NEXT: vmovdqa64 %ymm7, %ymm168649; AVX512-FCP-NEXT: vpermd %ymm3, %ymm25, %ymm38650; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm3, %ymm18651; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3,4,5,6,7]8652; AVX512-FCP-NEXT: vpermd %ymm17, %ymm5, %ymm28653; AVX512-FCP-NEXT: vpshufb %ymm9, %ymm2, %ymm28654; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm15 & (zmm2 ^ zmm1))8655; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm288656; AVX512-FCP-NEXT: vmovdqa64 %xmm31, %xmm158657; AVX512-FCP-NEXT: vmovdqa64 %xmm20, %xmm78658; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm1 = xmm15[0],xmm7[1],xmm15[2,3]8659; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm0 = [6,7,0,1,10,11,0,0,0,0,0,0,0,0,0,0]8660; AVX512-FCP-NEXT: vpshufb %xmm0, %xmm1, %xmm28661; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm18 = [1,3,6,0,5,0,0,0]8662; AVX512-FCP-NEXT: vmovdqa64 %ymm30, %ymm98663; AVX512-FCP-NEXT: vmovdqa64 %ymm26, %ymm108664; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm10[0,1],ymm9[2],ymm10[3],ymm9[4],ymm10[5,6],ymm9[7],ymm10[8,9],ymm9[10],ymm10[11],ymm9[12],ymm10[13,14],ymm9[15]8665; AVX512-FCP-NEXT: vpermd %ymm1, %ymm18, %ymm48666; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [2,3,2,3,4,5,0,1,6,7,8,9,14,15,4,5,18,19,18,19,20,21,16,17,22,23,24,25,30,31,20,21]8667; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm48668; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm4[3,4,5,6,7]8669; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4,5,6,7]8670; AVX512-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [2,4,7,0,2,4,7,0]8671; AVX512-FCP-NEXT: # ymm4 = mem[0,1,0,1]8672; AVX512-FCP-NEXT: vpermd %ymm23, %ymm4, %ymm58673; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm3 = [0,1,6,7,4,5,6,7,8,9,0,1,6,7,8,9,16,17,22,23,20,21,22,23,24,25,16,17,22,23,24,25]8674; AVX512-FCP-NEXT: vpshufb %ymm3, %ymm5, %ymm58675; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm5, %zmm258676; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm2 = xmm6[0],xmm14[1],xmm6[2,3]8677; AVX512-FCP-NEXT: vmovdqa64 %xmm27, %xmm228678; AVX512-FCP-NEXT: vmovdqa64 %xmm14, %xmm318679; AVX512-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm08680; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm8[0,1],ymm13[2],ymm8[3],ymm13[4],ymm8[5,6],ymm13[7],ymm8[8,9],ymm13[10],ymm8[11],ymm13[12],ymm8[13,14],ymm13[15]8681; AVX512-FCP-NEXT: vmovdqa64 %ymm13, %ymm208682; AVX512-FCP-NEXT: vmovdqa64 %ymm8, %ymm308683; AVX512-FCP-NEXT: vpermd %ymm2, %ymm18, %ymm28684; AVX512-FCP-NEXT: vpshufb %ymm1, %ymm2, %ymm18685; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3,4,5,6,7]8686; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]8687; AVX512-FCP-NEXT: vpermd %ymm17, %ymm4, %ymm18688; AVX512-FCP-NEXT: vpshufb %ymm3, %ymm1, %ymm18689; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm248690; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm15[0,1],xmm7[2],xmm15[3]8691; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm9[0],ymm10[1,2],ymm9[3],ymm10[4],ymm9[5],ymm10[6,7],ymm9[8],ymm10[9,10],ymm9[11],ymm10[12],ymm9[13],ymm10[14,15]8692; AVX512-FCP-NEXT: vmovq {{.*#+}} xmm2 = [8,9,2,3,12,13,0,0,0,0,0,0,0,0,0,0]8693; AVX512-FCP-NEXT: vpshufb %xmm2, %xmm0, %xmm38694; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm27 = [1,4,6,3,6,0,0,0]8695; AVX512-FCP-NEXT: vpermd %ymm1, %ymm27, %ymm18696; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [0,1,2,3,4,5,2,3,4,5,10,11,0,1,14,15,16,17,18,19,20,21,18,19,20,21,26,27,16,17,30,31]8697; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm1, %ymm18698; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm1[3,4,5,6,7]8699; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]8700; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm26 = [0,2,1,3,0,2,5,7]8701; AVX512-FCP-NEXT: vpermd %ymm23, %ymm26, %ymm38702; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,1,6,7,4,5,6,7,0,1,6,7,8,9,14,15,16,17,22,23,20,21,22,23,16,17,22,23,24,25,30,31]8703; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm38704; AVX512-FCP-NEXT: vmovdqa64 %ymm4, %ymm198705; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm3, %zmm18706; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload8707; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload8708; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm14[1,2],ymm4[3],ymm14[4],ymm4[5],ymm14[6,7],ymm4[8],ymm14[9,10],ymm4[11],ymm14[12],ymm4[13],ymm14[14,15]8709; AVX512-FCP-NEXT: vmovdqa64 %ymm4, %ymm188710; AVX512-FCP-NEXT: vextracti128 $1, %ymm3, %xmm48711; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm3 = xmm4[0],xmm3[1],xmm4[2],xmm3[3]8712; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [0,3,0,0,5,0,2,7]8713; AVX512-FCP-NEXT: vmovdqa64 %ymm21, %ymm158714; AVX512-FCP-NEXT: vmovdqa64 %ymm29, %ymm108715; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm10[0],ymm15[1],ymm10[2],ymm15[3],ymm10[4,5],ymm15[6],ymm10[7,8],ymm15[9],ymm10[10],ymm15[11],ymm10[12,13],ymm15[14],ymm10[15]8716; AVX512-FCP-NEXT: vpermd %ymm5, %ymm4, %ymm58717; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [2,3,4,5,10,11,0,1,14,15,14,15,2,3,4,5,18,19,20,21,26,27,16,17,30,31,30,31,18,19,20,21]8718; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm5, %ymm58719; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm7 = [6,7,0,1,10,11,4,5,14,15,8,9,12,13,14,15]8720; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm3, %xmm38721; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2],ymm5[3,4,5,6,7]8722; AVX512-FCP-NEXT: vpmovsxdq {{.*#+}} zmm5 = [18446744073709551615,18446744073709551615,18446744073709551615,65535,0,0,18446744073709486080,18446744073709551615]8723; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm25 = zmm25 ^ (zmm5 & (zmm25 ^ zmm3))8724; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload8725; AVX512-FCP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm3 # 32-byte Folded Reload8726; AVX512-FCP-NEXT: # ymm3 = ymm3[0],mem[1],ymm3[2,3],mem[4],ymm3[5],mem[6],ymm3[7,8],mem[9],ymm3[10,11],mem[12],ymm3[13],mem[14],ymm3[15]8727; AVX512-FCP-NEXT: vextracti128 $1, %ymm3, %xmm88728; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm8 = xmm3[0],xmm8[1,2,3],xmm3[4,5],xmm8[6,7]8729; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,0,1,10,11,4,5,14,15,8,9,2,3,12,13]8730; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm8, %xmm88731; AVX512-FCP-NEXT: vinserti128 $1, %xmm8, %ymm0, %ymm88732; AVX512-FCP-NEXT: vextracti64x4 $1, %zmm25, %ymm98733; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1,2,3,4,5,6,7],ymm9[8],ymm8[9,10,11,12,13,14,15]8734; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm8 = ymm9[0,1,2,3],ymm8[4,5,6,7]8735; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm25, %zmm218736; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm11[0],ymm12[1,2],ymm11[3],ymm12[4],ymm11[5],ymm12[6,7],ymm11[8],ymm12[9,10],ymm11[11],ymm12[12],ymm11[13],ymm12[14,15]8737; AVX512-FCP-NEXT: vmovdqa64 %ymm12, %ymm238738; AVX512-FCP-NEXT: vmovdqa64 %ymm11, %ymm258739; AVX512-FCP-NEXT: vextracti128 $1, %ymm8, %xmm98740; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm8 = xmm9[0],xmm8[1],xmm9[2],xmm8[3]8741; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm8, %xmm78742; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload8743; AVX512-FCP-NEXT: vmovdqa64 %ymm16, %ymm128744; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm13[0],ymm12[1],ymm13[2],ymm12[3],ymm13[4,5],ymm12[6],ymm13[7,8],ymm12[9],ymm13[10],ymm12[11],ymm13[12,13],ymm12[14],ymm13[15]8745; AVX512-FCP-NEXT: vpermd %ymm8, %ymm4, %ymm48746; AVX512-FCP-NEXT: vpshufb %ymm6, %ymm4, %ymm48747; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm4 = ymm7[0,1,2],ymm4[3,4,5,6,7]8748; AVX512-FCP-NEXT: vpternlogq {{.*#+}} zmm24 = zmm24 ^ (zmm5 & (zmm24 ^ zmm4))8749; AVX512-FCP-NEXT: vmovdqa64 %xmm22, %xmm48750; AVX512-FCP-NEXT: vmovdqa64 %xmm31, %xmm58751; AVX512-FCP-NEXT: vpblendd {{.*#+}} xmm4 = xmm4[0,1],xmm5[2],xmm4[3]8752; AVX512-FCP-NEXT: vpshufb %xmm2, %xmm4, %xmm28753; AVX512-FCP-NEXT: vmovdqa64 %ymm20, %ymm48754; AVX512-FCP-NEXT: vmovdqa64 %ymm30, %ymm58755; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm5[1,2],ymm4[3],ymm5[4],ymm4[5],ymm5[6,7],ymm4[8],ymm5[9,10],ymm4[11],ymm5[12],ymm4[13],ymm5[14,15]8756; AVX512-FCP-NEXT: vpermd %ymm4, %ymm27, %ymm48757; AVX512-FCP-NEXT: vpshufb %ymm0, %ymm4, %ymm08758; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm0[3,4,5,6,7]8759; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]8760; AVX512-FCP-NEXT: vpermd %ymm17, %ymm26, %ymm28761; AVX512-FCP-NEXT: vmovdqa64 %ymm19, %ymm48762; AVX512-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm28763; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm08764; AVX512-FCP-NEXT: vmovdqu (%rsp), %ymm9 # 32-byte Reload8765; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload8766; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm11[0],ymm9[1],ymm11[2,3],ymm9[4],ymm11[5],ymm9[6],ymm11[7,8],ymm9[9],ymm11[10,11],ymm9[12],ymm11[13],ymm9[14],ymm11[15]8767; AVX512-FCP-NEXT: vextracti128 $1, %ymm2, %xmm48768; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1,2,3],xmm2[4,5],xmm4[6,7]8769; AVX512-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm28770; AVX512-FCP-NEXT: vextracti64x4 $1, %zmm24, %ymm38771; AVX512-FCP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm28772; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1,2,3,4,5,6,7],ymm3[8],ymm2[9,10,11,12,13,14,15]8773; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]8774; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm24, %zmm28775; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm10[0,1],ymm15[2],ymm10[3],ymm15[4],ymm10[5,6],ymm15[7],ymm10[8,9],ymm15[10],ymm10[11],ymm15[12],ymm10[13,14],ymm15[15]8776; AVX512-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [1,3,0,0,6,0,3,5]8777; AVX512-FCP-NEXT: vpermd %ymm3, %ymm4, %ymm38778; AVX512-FCP-NEXT: vmovdqa {{.*#+}} ymm5 = [0,1,6,7,8,9,14,15,0,1,6,7,0,1,6,7,16,17,22,23,24,25,30,31,16,17,22,23,16,17,22,23]8779; AVX512-FCP-NEXT: vpshufb %ymm5, %ymm3, %ymm38780; AVX512-FCP-NEXT: vmovdqa64 %ymm18, %ymm68781; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm14[0],ymm6[1],ymm14[2,3],ymm6[4],ymm14[5],ymm6[6],ymm14[7,8],ymm6[9],ymm14[10,11],ymm6[12],ymm14[13],ymm6[14],ymm14[15]8782; AVX512-FCP-NEXT: vextracti128 $1, %ymm6, %xmm78783; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm7[0,1,2],xmm6[3,4],xmm7[5,6,7]8784; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm7 = [8,9,2,3,12,13,6,7,0,1,10,11,0,1,6,7]8785; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm6, %xmm68786; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm6[0,1,2],ymm3[3,4,5,6,7]8787; AVX512-FCP-NEXT: movb $7, %al8788; AVX512-FCP-NEXT: kmovw %eax, %k18789; AVX512-FCP-NEXT: vinserti64x4 $0, %ymm3, %zmm0, %zmm1 {%k1}8790; AVX512-FCP-NEXT: vextracti64x4 $1, %zmm1, %ymm38791; AVX512-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload8792; AVX512-FCP-NEXT: vpblendw $181, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm6 # 32-byte Folded Reload8793; AVX512-FCP-NEXT: # ymm6 = mem[0],ymm6[1],mem[2],ymm6[3],mem[4,5],ymm6[6],mem[7,8],ymm6[9],mem[10],ymm6[11],mem[12,13],ymm6[14],mem[15]8794; AVX512-FCP-NEXT: vextracti128 $1, %ymm6, %xmm88795; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1],xmm8[2,3],xmm6[4,5,6],xmm8[7]8796; AVX512-FCP-NEXT: vmovdqa {{.*#+}} xmm8 = [6,7,2,3,12,13,6,7,0,1,10,11,4,5,14,15]8797; AVX512-FCP-NEXT: vpshufb %xmm8, %xmm6, %xmm68798; AVX512-FCP-NEXT: vinserti128 $1, %xmm6, %ymm0, %ymm68799; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm3[0],ymm6[1,2,3,4,5,6,7],ymm3[8],ymm6[9,10,11,12,13,14,15]8800; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm6[4,5,6,7]8801; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm1, %zmm18802; AVX512-FCP-NEXT: vmovdqa64 %ymm23, %ymm38803; AVX512-FCP-NEXT: vmovdqa64 %ymm25, %ymm68804; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm6[1],ymm3[2,3],ymm6[4],ymm3[5],ymm6[6],ymm3[7,8],ymm6[9],ymm3[10,11],ymm6[12],ymm3[13],ymm6[14],ymm3[15]8805; AVX512-FCP-NEXT: vextracti128 $1, %ymm3, %xmm68806; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm6[0,1,2],xmm3[3,4],xmm6[5,6,7]8807; AVX512-FCP-NEXT: vpshufb %xmm7, %xmm3, %xmm38808; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm13[0,1],ymm12[2],ymm13[3],ymm12[4],ymm13[5,6],ymm12[7],ymm13[8,9],ymm12[10],ymm13[11],ymm12[12],ymm13[13,14],ymm12[15]8809; AVX512-FCP-NEXT: vpermd %ymm6, %ymm4, %ymm48810; AVX512-FCP-NEXT: vpshufb %ymm5, %ymm4, %ymm48811; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2],ymm4[3,4,5,6,7]8812; AVX512-FCP-NEXT: vinserti64x4 $0, %ymm3, %zmm0, %zmm0 {%k1}8813; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm9[0],ymm11[1],ymm9[2],ymm11[3],ymm9[4,5],ymm11[6],ymm9[7,8],ymm11[9],ymm9[10],ymm11[11],ymm9[12,13],ymm11[14],ymm9[15]8814; AVX512-FCP-NEXT: vextracti128 $1, %ymm3, %xmm48815; AVX512-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3],xmm3[4,5,6],xmm4[7]8816; AVX512-FCP-NEXT: vpshufb %xmm8, %xmm3, %xmm38817; AVX512-FCP-NEXT: vextracti64x4 $1, %zmm0, %ymm48818; AVX512-FCP-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm38819; AVX512-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm3[1,2,3,4,5,6,7],ymm4[8],ymm3[9,10,11,12,13,14,15]8820; AVX512-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]8821; AVX512-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm0, %zmm08822; AVX512-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload8823; AVX512-FCP-NEXT: vmovaps %zmm3, (%rsi)8824; AVX512-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload8825; AVX512-FCP-NEXT: vmovaps %zmm3, 64(%rsi)8826; AVX512-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload8827; AVX512-FCP-NEXT: vmovaps %zmm3, 64(%rdx)8828; AVX512-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload8829; AVX512-FCP-NEXT: vmovaps %zmm3, (%rdx)8830; AVX512-FCP-NEXT: vmovdqa64 %zmm28, 64(%rcx)8831; AVX512-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload8832; AVX512-FCP-NEXT: vmovaps %zmm3, (%rcx)8833; AVX512-FCP-NEXT: vmovdqa64 %zmm2, 64(%r8)8834; AVX512-FCP-NEXT: vmovdqa64 %zmm21, (%r8)8835; AVX512-FCP-NEXT: vmovdqa64 %zmm0, 64(%r9)8836; AVX512-FCP-NEXT: vmovdqa64 %zmm1, (%r9)8837; AVX512-FCP-NEXT: addq $552, %rsp # imm = 0x2288838; AVX512-FCP-NEXT: vzeroupper8839; AVX512-FCP-NEXT: retq8840;8841; AVX512DQ-LABEL: load_i16_stride5_vf64:8842; AVX512DQ: # %bb.0:8843; AVX512DQ-NEXT: subq $552, %rsp # imm = 0x2288844; AVX512DQ-NEXT: vmovdqa 384(%rdi), %ymm68845; AVX512DQ-NEXT: vmovdqa 416(%rdi), %ymm118846; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm6[0],ymm11[1,2],ymm6[3],ymm11[4],ymm6[5],ymm11[6,7],ymm6[8],ymm11[9,10],ymm6[11],ymm11[12],ymm6[13],ymm11[14,15]8847; AVX512DQ-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8848; AVX512DQ-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8849; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]8850; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5],ymm0[6],ymm1[7]8851; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,6,7,16,17,26,27,20,21,30,31,24,25,128,128,128,128,128,128]8852; AVX512DQ-NEXT: vpshufb %ymm0, %ymm1, %ymm28853; AVX512DQ-NEXT: vmovdqa 352(%rdi), %ymm88854; AVX512DQ-NEXT: vmovdqa 320(%rdi), %ymm78855; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm7[0],ymm8[1],ymm7[2,3],ymm8[4],ymm7[5],ymm8[6],ymm7[7,8],ymm8[9],ymm7[10,11],ymm8[12],ymm7[13],ymm8[14],ymm7[15]8856; AVX512DQ-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8857; AVX512DQ-NEXT: vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8858; AVX512DQ-NEXT: vextracti128 $1, %ymm1, %xmm38859; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm3 = xmm1[0],xmm3[1,2,3],xmm1[4,5],xmm3[6,7]8860; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm1 = [0,1,10,11,4,5,14,15,8,9,2,3,12,13,128,128,128,128,128,128,128,128,128,128,128,128,u,u,u,u,u,u]8861; AVX512DQ-NEXT: vpshufb %ymm1, %ymm3, %ymm38862; AVX512DQ-NEXT: vporq %ymm2, %ymm3, %ymm198863; AVX512DQ-NEXT: vmovdqa 192(%rdi), %ymm158864; AVX512DQ-NEXT: vmovdqa 224(%rdi), %ymm138865; AVX512DQ-NEXT: vmovdqa 176(%rdi), %xmm128866; AVX512DQ-NEXT: vmovdqa 160(%rdi), %xmm148867; AVX512DQ-NEXT: vmovdqa (%rdi), %ymm48868; AVX512DQ-NEXT: vmovdqa 32(%rdi), %ymm58869; AVX512DQ-NEXT: vmovdqa 64(%rdi), %ymm108870; AVX512DQ-NEXT: vmovdqa 96(%rdi), %ymm98871; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm10[0],ymm9[1,2],ymm10[3],ymm9[4],ymm10[5],ymm9[6,7],ymm10[8],ymm9[9,10],ymm10[11],ymm9[12],ymm10[13],ymm9[14,15]8872; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm2[2,3,0,1]8873; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm3[5],ymm2[6],ymm3[7]8874; AVX512DQ-NEXT: vpshufb %ymm0, %ymm2, %ymm08875; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm5[1],ymm4[2,3],ymm5[4],ymm4[5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10,11],ymm5[12],ymm4[13],ymm5[14],ymm4[15]8876; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm38877; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1,2,3],xmm2[4,5],xmm3[6,7]8878; AVX512DQ-NEXT: vpshufb %ymm1, %ymm2, %ymm18879; AVX512DQ-NEXT: vpor %ymm0, %ymm1, %ymm08880; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8881; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm11[0],ymm6[1],ymm11[2,3],ymm6[4],ymm11[5],ymm6[6],ymm11[7,8],ymm6[9],ymm11[10,11],ymm6[12],ymm11[13],ymm6[14],ymm11[15]8882; AVX512DQ-NEXT: vpermq {{.*#+}} ymm1 = ymm0[2,3,0,1]8883; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5],ymm0[6,7]8884; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,8,9,18,19,28,29,22,23,16,17,26,27,128,128,128,128,128,128]8885; AVX512DQ-NEXT: vpshufb %ymm0, %ymm1, %ymm28886; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm8[0],ymm7[1],ymm8[2],ymm7[3],ymm8[4,5],ymm7[6],ymm8[7,8],ymm7[9],ymm8[10],ymm7[11],ymm8[12,13],ymm7[14],ymm8[15]8887; AVX512DQ-NEXT: vextracti128 $1, %ymm1, %xmm38888; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm3 = xmm1[0,1],xmm3[2,3],xmm1[4,5,6],xmm3[7]8889; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm1 = [2,3,12,13,6,7,0,1,10,11,4,5,14,15,128,128,128,128,128,128,128,128,128,128,128,128,u,u,u,u,u,u]8890; AVX512DQ-NEXT: vpshufb %ymm1, %ymm3, %ymm38891; AVX512DQ-NEXT: vpor %ymm2, %ymm3, %ymm28892; AVX512DQ-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8893; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm9[0],ymm10[1],ymm9[2,3],ymm10[4],ymm9[5],ymm10[6],ymm9[7,8],ymm10[9],ymm9[10,11],ymm10[12],ymm9[13],ymm10[14],ymm9[15]8894; AVX512DQ-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8895; AVX512DQ-NEXT: vmovdqu %ymm9, (%rsp) # 32-byte Spill8896; AVX512DQ-NEXT: vpermq {{.*#+}} ymm3 = ymm2[2,3,0,1]8897; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm3[5],ymm2[6,7]8898; AVX512DQ-NEXT: vpshufb %ymm0, %ymm2, %ymm08899; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm5[0],ymm4[1],ymm5[2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]8900; AVX512DQ-NEXT: vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8901; AVX512DQ-NEXT: vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill8902; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm38903; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm3[2,3],xmm2[4,5,6],xmm3[7]8904; AVX512DQ-NEXT: vpshufb %ymm1, %ymm2, %ymm18905; AVX512DQ-NEXT: vporq %ymm0, %ymm1, %ymm288906; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm6 = [6,7,0,1,10,11,4,5,14,15,14,15,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]8907; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm13[0,1],ymm15[2],ymm13[3],ymm15[4],ymm13[5,6],ymm15[7],ymm13[8,9],ymm15[10],ymm13[11],ymm15[12],ymm13[13,14],ymm15[15]8908; AVX512DQ-NEXT: vmovdqa64 %ymm15, %ymm188909; AVX512DQ-NEXT: vmovdqa64 %ymm13, %ymm248910; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm18911; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3,4,5,6,7]8912; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[6,7,6,7,8,9,4,5,14,15,8,9,2,3,12,13,22,23,22,23,24,25,20,21,30,31,24,25,18,19,28,29]8913; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm1 = xmm12[0],xmm14[1],xmm12[2,3]8914; AVX512DQ-NEXT: vmovdqa64 %xmm12, %xmm168915; AVX512DQ-NEXT: vmovdqa64 %xmm14, %xmm308916; AVX512DQ-NEXT: vpshufb %xmm6, %xmm1, %xmm18917; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm0[3,4,5,6,7]8918; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]8919; AVX512DQ-NEXT: vmovdqa 144(%rdi), %xmm118920; AVX512DQ-NEXT: vmovdqa 128(%rdi), %xmm78921; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm1 = xmm11[0,1],xmm7[2],xmm11[3]8922; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,7,8,9,8,9,2,3,12,13]8923; AVX512DQ-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm18924; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm08925; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm1 = ymm9[0],ymm10[1],ymm9[2],ymm10[3],ymm9[4,5],ymm10[6],ymm9[7,8],ymm10[9],ymm9[10],ymm10[11],ymm9[12,13],ymm10[14],ymm9[15]8926; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm1[2,3,0,1]8927; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7]8928; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm4[0],ymm5[1,2],ymm4[3],ymm5[4],ymm4[5],ymm5[6,7],ymm4[8],ymm5[9,10],ymm4[11],ymm5[12],ymm4[13],ymm5[14,15]8929; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm38930; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm2 = xmm3[0],xmm2[1],xmm3[2],xmm2[3]8931; AVX512DQ-NEXT: vpshufb %ymm6, %ymm1, %ymm18932; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[6,7,0,1,10,11,4,5,14,15,8,9,12,13,14,15]8933; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3,4,5,6,7]8934; AVX512DQ-NEXT: vmovdqa 256(%rdi), %ymm128935; AVX512DQ-NEXT: vmovdqa 288(%rdi), %ymm158936; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm12[0],ymm15[1],ymm12[2,3],ymm15[4],ymm12[5],ymm15[6],ymm12[7,8],ymm15[9],ymm12[10,11],ymm15[12],ymm12[13],ymm15[14],ymm12[15]8937; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm38938; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1,2,3],xmm2[4,5],xmm3[6,7]8939; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm1 = zmm0 ^ (mem & (zmm1 ^ zmm0))8940; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm0 = xmm2[0,1,0,1,10,11,4,5,14,15,8,9,2,3,12,13]8941; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm08942; AVX512DQ-NEXT: vextracti64x4 $1, %zmm1, %ymm28943; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0],ymm0[1,2,3,4,5,6,7],ymm2[8],ymm0[9,10,11,12,13,14,15]8944; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]8945; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm08946; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8947; AVX512DQ-NEXT: vmovdqa 464(%rdi), %xmm88948; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm0 = xmm8[3,1,2,3]8949; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]8950; AVX512DQ-NEXT: vmovdqa 448(%rdi), %xmm38951; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm1 = xmm3[0,2,2,3]8952; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]8953; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]8954; AVX512DQ-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8955; AVX512DQ-NEXT: vmovdqa %xmm11, %xmm68956; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm0 = xmm11[3,1,2,3]8957; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]8958; AVX512DQ-NEXT: vmovdqa %xmm7, %xmm98959; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm1 = xmm7[0,2,2,3]8960; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]8961; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]8962; AVX512DQ-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill8963; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm0 = xmm3[0],xmm8[1],xmm3[2,3]8964; AVX512DQ-NEXT: vmovdqa64 %xmm3, %xmm228965; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm1 = [6,7,2,3,4,5,6,7,6,7,2,3,12,13,6,7]8966; AVX512DQ-NEXT: vpshufb %xmm1, %xmm0, %xmm08967; AVX512DQ-NEXT: vmovdqa64 %xmm1, %xmm238968; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm108969; AVX512DQ-NEXT: vmovdqa 576(%rdi), %ymm18970; AVX512DQ-NEXT: vmovdqa 608(%rdi), %ymm28971; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0,1],ymm1[2],ymm2[3],ymm1[4],ymm2[5,6],ymm1[7],ymm2[8,9],ymm1[10],ymm2[11],ymm1[12],ymm2[13,14],ymm1[15]8972; AVX512DQ-NEXT: vmovdqa64 %ymm2, %ymm208973; AVX512DQ-NEXT: vmovdqa64 %ymm1, %ymm178974; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm18975; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm11 = xmm0[0,1,2],xmm1[3,4],xmm0[5,6,7]8976; AVX512DQ-NEXT: vmovdqa 512(%rdi), %ymm58977; AVX512DQ-NEXT: vmovdqa 544(%rdi), %ymm138978; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm13[0],ymm5[1],ymm13[2,3],ymm5[4],ymm13[5],ymm5[6],ymm13[7,8],ymm5[9],ymm13[10,11],ymm5[12],ymm13[13],ymm5[14],ymm13[15]8979; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm18980; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm1[0],ymm0[1,2],ymm1[3],ymm0[4,5,6,7]8981; AVX512DQ-NEXT: vmovdqa64 496(%rdi), %xmm218982; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm1 = xmm21[3,1,2,3]8983; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm0 = xmm1[2,1,2,3,4,5,6,7]8984; AVX512DQ-NEXT: vmovdqa 480(%rdi), %xmm78985; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm14 = xmm7[0,2,2,3]8986; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm14 = xmm14[0,3,2,3,4,5,6,7]8987; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm14[0],xmm0[0],xmm14[1],xmm0[1]8988; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm14 = [u,u,u,u,u,u,u,u,8,9,2,3,12,13,6,7,16,17,26,27,26,27,30,31,24,25,18,19,28,29,22,23]8989; AVX512DQ-NEXT: vpshufb %ymm14, %ymm2, %ymm28990; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm2[2,3,4,5,6,7]8991; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm2 = [12,13,14,15,4,5,14,15,8,9,2,3,12,13,6,7]8992; AVX512DQ-NEXT: vpshufb %xmm2, %xmm11, %xmm118993; AVX512DQ-NEXT: vinserti128 $1, %xmm11, %ymm0, %ymm118994; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm11[5,6,7]8995; AVX512DQ-NEXT: vmovdqa64 {{.*#+}} zmm27 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535]8996; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm27 & (zmm10 ^ zmm19))8997; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm10, %zmm08998; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill8999; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm15[0,1],ymm12[2],ymm15[3],ymm12[4],ymm15[5,6],ymm12[7],ymm15[8,9],ymm12[10],ymm15[11],ymm12[12],ymm15[13,14],ymm12[15]9000; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm109001; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm10[3,4],xmm0[5,6,7]9002; AVX512DQ-NEXT: vpshufb %xmm2, %xmm0, %xmm09003; AVX512DQ-NEXT: vmovdqa64 %ymm18, %ymm39004; AVX512DQ-NEXT: vmovdqa64 %ymm24, %ymm19005; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm1[0],ymm3[1],ymm1[2,3],ymm3[4],ymm1[5],ymm3[6],ymm1[7,8],ymm3[9],ymm1[10,11],ymm3[12],ymm1[13],ymm3[14],ymm1[15]9006; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm109007; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm10[0],ymm2[1,2],ymm10[3],ymm2[4,5,6,7]9008; AVX512DQ-NEXT: vpshufb %ymm14, %ymm2, %ymm29009; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm10 = xmm16[3,1,2,3]9010; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[2,1,2,3,4,5,6,7]9011; AVX512DQ-NEXT: vmovdqa64 %xmm30, %xmm249012; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm11 = xmm30[0,2,2,3]9013; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm11 = xmm11[0,3,2,3,4,5,6,7]9014; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm10 = xmm11[0],xmm10[0],xmm11[1],xmm10[1]9015; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm10[0,1],ymm2[2,3,4,5,6,7]9016; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm09017; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3,4],ymm0[5,6,7]9018; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm2 = xmm9[0],xmm6[1],xmm9[2,3]9019; AVX512DQ-NEXT: vmovdqa64 %xmm9, %xmm259020; AVX512DQ-NEXT: vmovdqa64 %xmm23, %xmm49021; AVX512DQ-NEXT: vpshufb %xmm4, %xmm2, %xmm29022; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm29023; AVX512DQ-NEXT: vpternlogq $184, {{[-0-9]+}}(%r{{[sb]}}p), %zmm27, %zmm2 # 64-byte Folded Reload9024; AVX512DQ-NEXT: # zmm2 = zmm2 ^ (zmm27 & (zmm2 ^ mem))9025; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm09026; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill9027; AVX512DQ-NEXT: vmovdqa64 %xmm22, %xmm49028; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm2 = xmm4[0,1],xmm8[2],xmm4[3]9029; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm0 = [0,1,2,3,4,5,6,7,8,9,4,5,14,15,8,9]9030; AVX512DQ-NEXT: vpshufb %xmm0, %xmm2, %xmm29031; AVX512DQ-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm29032; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm10 = ymm5[0],ymm13[1],ymm5[2,3],ymm13[4],ymm5[5],ymm13[6],ymm5[7,8],ymm13[9],ymm5[10,11],ymm13[12],ymm5[13],ymm13[14],ymm5[15]9033; AVX512DQ-NEXT: vmovdqa64 %ymm13, %ymm269034; AVX512DQ-NEXT: vmovdqa64 %ymm5, %ymm229035; AVX512DQ-NEXT: vextracti128 $1, %ymm10, %xmm119036; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm10 = ymm10[0],ymm11[1],ymm10[2],ymm11[3],ymm10[4,5,6,7]9037; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm11 = xmm7[0,3,2,3]9038; AVX512DQ-NEXT: vmovdqa64 %xmm7, %xmm309039; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm11 = xmm11[1,2,2,3,4,5,6,7]9040; AVX512DQ-NEXT: vpsrlq $48, %xmm21, %xmm139041; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm11 = xmm11[0],xmm13[0],xmm11[1],xmm13[1]9042; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm13 = [2,3,12,13,0,1,0,1,10,11,4,5,14,15,8,9,18,19,28,29,16,17,16,17,26,27,20,21,30,31,24,25]9043; AVX512DQ-NEXT: vpshufb %ymm13, %ymm10, %ymm109044; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2],xmm10[3,4,5,6,7]9045; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm10 = ymm11[0,1,2,3],ymm10[4,5,6,7]9046; AVX512DQ-NEXT: vmovdqa64 %ymm20, %ymm99047; AVX512DQ-NEXT: vmovdqa64 %ymm17, %ymm79048; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm11 = ymm7[0],ymm9[1,2],ymm7[3],ymm9[4],ymm7[5],ymm9[6,7],ymm7[8],ymm9[9,10],ymm7[11],ymm9[12],ymm7[13],ymm9[14,15]9049; AVX512DQ-NEXT: vextracti128 $1, %ymm11, %xmm149050; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm11 = xmm14[0],xmm11[1],xmm14[2],xmm11[3]9051; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm14 = [0,1,2,3,6,7,0,1,10,11,4,5,14,15,8,9]9052; AVX512DQ-NEXT: vpshufb %xmm14, %xmm11, %xmm119053; AVX512DQ-NEXT: vinserti128 $1, %xmm11, %ymm0, %ymm119054; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3,4],ymm11[5,6,7]9055; AVX512DQ-NEXT: vpternlogq $184, {{[-0-9]+}}(%r{{[sb]}}p), %zmm27, %zmm2 # 64-byte Folded Reload9056; AVX512DQ-NEXT: # zmm2 = zmm2 ^ (zmm27 & (zmm2 ^ mem))9057; AVX512DQ-NEXT: vinserti64x4 $1, %ymm10, %zmm2, %zmm29058; AVX512DQ-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill9059; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm1[1],ymm3[2,3],ymm1[4],ymm3[5],ymm1[6],ymm3[7,8],ymm1[9],ymm3[10,11],ymm1[12],ymm3[13],ymm1[14],ymm3[15]9060; AVX512DQ-NEXT: vmovdqa64 %ymm1, %ymm179061; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm109062; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0],ymm10[1],ymm2[2],ymm10[3],ymm2[4,5,6,7]9063; AVX512DQ-NEXT: vpshufb %ymm13, %ymm2, %ymm29064; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm10 = xmm24[0,3,2,3]9065; AVX512DQ-NEXT: vmovdqa64 %xmm24, %xmm209066; AVX512DQ-NEXT: vpshuflw {{.*#+}} xmm10 = xmm10[1,2,2,3,4,5,6,7]9067; AVX512DQ-NEXT: vmovdqa64 %xmm16, %xmm19068; AVX512DQ-NEXT: vpsrlq $48, %xmm16, %xmm119069; AVX512DQ-NEXT: vpunpckldq {{.*#+}} xmm10 = xmm10[0],xmm11[0],xmm10[1],xmm11[1]9070; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0,1,2],xmm2[3,4,5,6,7]9071; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm10[0,1,2,3],ymm2[4,5,6,7]9072; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm10 = ymm12[0],ymm15[1,2],ymm12[3],ymm15[4],ymm12[5],ymm15[6,7],ymm12[8],ymm15[9,10],ymm12[11],ymm15[12],ymm12[13],ymm15[14,15]9073; AVX512DQ-NEXT: vmovdqa64 %ymm12, %ymm199074; AVX512DQ-NEXT: vextracti128 $1, %ymm10, %xmm119075; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm10 = xmm11[0],xmm10[1],xmm11[2],xmm10[3]9076; AVX512DQ-NEXT: vpshufb %xmm14, %xmm10, %xmm109077; AVX512DQ-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm109078; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm10[5,6,7]9079; AVX512DQ-NEXT: vmovdqa64 %xmm25, %xmm59080; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm10 = xmm5[0,1],xmm6[2],xmm5[3]9081; AVX512DQ-NEXT: vmovdqa64 %xmm6, %xmm239082; AVX512DQ-NEXT: vpshufb %xmm0, %xmm10, %xmm09083; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm09084; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm0 = zmm0 ^ (zmm27 & (zmm0 ^ zmm28))9085; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm09086; AVX512DQ-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill9087; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload9088; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm18 # 32-byte Reload9089; AVX512DQ-NEXT: vmovdqa64 %ymm18, %ymm09090; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm12[1],ymm0[2,3],ymm12[4],ymm0[5],ymm12[6],ymm0[7,8],ymm12[9],ymm0[10,11],ymm12[12],ymm0[13],ymm12[14],ymm0[15]9091; AVX512DQ-NEXT: vpermq {{.*#+}} ymm2 = ymm0[2,3,0,1]9092; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm0[0,1,2,3,4,5],ymm2[6],ymm0[7]9093; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm24 # 32-byte Reload9094; AVX512DQ-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm16 # 32-byte Reload9095; AVX512DQ-NEXT: vmovdqa64 %ymm24, %ymm09096; AVX512DQ-NEXT: vmovdqa64 %ymm16, %ymm59097; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm5[2],ymm0[3],ymm5[4],ymm0[5,6],ymm5[7],ymm0[8,9],ymm5[10],ymm0[11],ymm5[12],ymm0[13,14],ymm5[15]9098; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm109099; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm10 = xmm0[0,1,2],xmm10[3,4],xmm0[5,6,7]9100; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm0 = [4,5,14,15,8,9,2,3,12,13,10,11,0,1,10,11,20,21,30,31,24,25,18,19,28,29,26,27,16,17,26,27]9101; AVX512DQ-NEXT: vpshufb %ymm0, %ymm2, %ymm29102; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[4,5,14,15,8,9,2,3,12,13,6,7,12,13,14,15]9103; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm10[0,1,2],ymm2[3,4,5,6,7]9104; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm13 = xmm8[0],xmm4[1],xmm8[2,3]9105; AVX512DQ-NEXT: vmovdqa64 %xmm4, %xmm299106; AVX512DQ-NEXT: vmovdqa64 %xmm8, %xmm289107; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm13 = xmm13[0,1,6,7,4,5,6,7,8,9,6,7,0,1,10,11]9108; AVX512DQ-NEXT: vinserti128 $1, %xmm13, %ymm0, %ymm139109; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm13 = zmm13 ^ (zmm27 & (zmm13 ^ zmm2))9110; AVX512DQ-NEXT: vmovdqa64 %ymm26, %ymm89111; AVX512DQ-NEXT: vmovdqa64 %ymm22, %ymm49112; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm8[0],ymm4[1],ymm8[2],ymm4[3],ymm8[4,5],ymm4[6],ymm8[7,8],ymm4[9],ymm8[10],ymm4[11],ymm8[12,13],ymm4[14],ymm8[15]9113; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm149114; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0],ymm14[1],ymm2[2,3,4,5,6,7]9115; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm14 = [4,5,14,15,12,13,2,3,12,13,6,7,0,1,10,11,20,21,30,31,28,29,18,19,28,29,22,23,16,17,26,27]9116; AVX512DQ-NEXT: vpshufb %ymm14, %ymm2, %ymm29117; AVX512DQ-NEXT: vmovdqa64 %xmm30, %xmm69118; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm11 = xmm30[0,1,1,3]9119; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,7,6,7]9120; AVX512DQ-NEXT: vmovdqa64 %xmm21, %xmm59121; AVX512DQ-NEXT: vpunpckhdq {{.*#+}} xmm11 = xmm11[2],xmm21[2],xmm11[3],xmm21[3]9122; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2],xmm2[3,4,5,6,7]9123; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm11[0,1,2,3],ymm2[4,5,6,7]9124; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm11 = ymm9[0],ymm7[1],ymm9[2,3],ymm7[4],ymm9[5],ymm7[6],ymm9[7,8],ymm7[9],ymm9[10,11],ymm7[12],ymm9[13],ymm7[14],ymm9[15]9125; AVX512DQ-NEXT: vmovdqa64 %ymm7, %ymm219126; AVX512DQ-NEXT: vextracti128 $1, %ymm11, %xmm109127; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0,1,2],xmm11[3,4],xmm10[5,6,7]9128; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm11 = [0,1,2,3,8,9,2,3,12,13,6,7,0,1,10,11]9129; AVX512DQ-NEXT: vpshufb %xmm11, %xmm10, %xmm109130; AVX512DQ-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm109131; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm10[5,6,7]9132; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm13, %zmm29133; AVX512DQ-NEXT: vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill9134; AVX512DQ-NEXT: vmovdqa64 %ymm17, %ymm29135; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2],ymm3[3],ymm2[4,5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10],ymm3[11],ymm2[12,13],ymm3[14],ymm2[15]9136; AVX512DQ-NEXT: vmovdqa64 %ymm3, %ymm229137; AVX512DQ-NEXT: vmovdqa64 %ymm17, %ymm269138; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm109139; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0],ymm10[1],ymm2[2,3,4,5,6,7]9140; AVX512DQ-NEXT: vpshufb %ymm14, %ymm2, %ymm29141; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm10 = xmm20[0,1,1,3]9142; AVX512DQ-NEXT: vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,7,6,7]9143; AVX512DQ-NEXT: vpunpckhdq {{.*#+}} xmm10 = xmm10[2],xmm1[2],xmm10[3],xmm1[3]9144; AVX512DQ-NEXT: vmovdqa64 %xmm1, %xmm179145; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0,1,2],xmm2[3,4,5,6,7]9146; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm10[0,1,2,3],ymm2[4,5,6,7]9147; AVX512DQ-NEXT: vmovdqa64 %ymm19, %ymm19148; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm10 = ymm15[0],ymm1[1],ymm15[2,3],ymm1[4],ymm15[5],ymm1[6],ymm15[7,8],ymm1[9],ymm15[10,11],ymm1[12],ymm15[13],ymm1[14],ymm15[15]9149; AVX512DQ-NEXT: vmovdqa64 %ymm15, %ymm319150; AVX512DQ-NEXT: vextracti128 $1, %ymm10, %xmm139151; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm10 = xmm13[0,1,2],xmm10[3,4],xmm13[5,6,7]9152; AVX512DQ-NEXT: vpshufb %xmm11, %xmm10, %xmm109153; AVX512DQ-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm109154; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm10[5,6,7]9155; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload9156; AVX512DQ-NEXT: vpblendw $82, (%rsp), %ymm1, %ymm10 # 32-byte Folded Reload9157; AVX512DQ-NEXT: # ymm10 = ymm1[0],mem[1],ymm1[2,3],mem[4],ymm1[5],mem[6],ymm1[7,8],mem[9],ymm1[10,11],mem[12],ymm1[13],mem[14],ymm1[15]9158; AVX512DQ-NEXT: vpermq {{.*#+}} ymm11 = ymm10[2,3,0,1]9159; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3,4,5],ymm11[6],ymm10[7]9160; AVX512DQ-NEXT: vpshufb %ymm0, %ymm10, %ymm09161; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload9162; AVX512DQ-NEXT: vpblendw $148, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload9163; AVX512DQ-NEXT: # ymm10 = ymm1[0,1],mem[2],ymm1[3],mem[4],ymm1[5,6],mem[7],ymm1[8,9],mem[10],ymm1[11],mem[12],ymm1[13,14],mem[15]9164; AVX512DQ-NEXT: vextracti128 $1, %ymm10, %xmm119165; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm10 = xmm10[0,1,2],xmm11[3,4],xmm10[5,6,7]9166; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[4,5,14,15,8,9,2,3,12,13,6,7,12,13,14,15]9167; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm10[0,1,2],ymm0[3,4,5,6,7]9168; AVX512DQ-NEXT: vmovdqa64 %xmm25, %xmm19169; AVX512DQ-NEXT: vmovdqa64 %xmm23, %xmm39170; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm10 = xmm3[0],xmm1[1],xmm3[2,3]9171; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[0,1,6,7,4,5,6,7,8,9,6,7,0,1,10,11]9172; AVX512DQ-NEXT: vinserti128 $1, %xmm10, %ymm0, %ymm109173; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm10 = zmm10 ^ (zmm27 & (zmm10 ^ zmm0))9174; AVX512DQ-NEXT: vinserti64x4 $1, %ymm2, %zmm10, %zmm239175; AVX512DQ-NEXT: vmovdqa64 %ymm18, %ymm139176; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm12[0],ymm13[1],ymm12[2],ymm13[3],ymm12[4,5],ymm13[6],ymm12[7,8],ymm13[9],ymm12[10],ymm13[11],ymm12[12,13],ymm13[14],ymm12[15]9177; AVX512DQ-NEXT: vpermq {{.*#+}} ymm10 = ymm0[2,3,0,1]9178; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm10[4],ymm0[5],ymm10[6],ymm0[7]9179; AVX512DQ-NEXT: vmovdqa64 %ymm16, %ymm149180; AVX512DQ-NEXT: vmovdqa64 %ymm24, %ymm159181; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm10 = ymm14[0],ymm15[1,2],ymm14[3],ymm15[4],ymm14[5],ymm15[6,7],ymm14[8],ymm15[9,10],ymm14[11],ymm15[12],ymm14[13],ymm15[14,15]9182; AVX512DQ-NEXT: vextracti128 $1, %ymm10, %xmm119183; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm10 = xmm11[0],xmm10[1],xmm11[2],xmm10[3]9184; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm10 = xmm10[6,7,0,1,10,11,4,5,14,15,8,9,12,13,14,15]9185; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm1 = [6,7,0,1,10,11,4,5,14,15,14,15,2,3,12,13,22,23,16,17,26,27,20,21,30,31,30,31,18,19,28,29]9186; AVX512DQ-NEXT: vpshufb %ymm1, %ymm0, %ymm09187; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm10[0,1,2],ymm0[3,4,5,6,7]9188; AVX512DQ-NEXT: vmovdqa %ymm4, %ymm39189; AVX512DQ-NEXT: vmovdqa %ymm8, %ymm49190; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm10 = ymm8[0,1],ymm3[2],ymm8[3],ymm3[4],ymm8[5,6],ymm3[7],ymm8[8,9],ymm3[10],ymm8[11],ymm3[12],ymm8[13,14],ymm3[15]9191; AVX512DQ-NEXT: vextracti128 $1, %ymm10, %xmm119192; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm10 = ymm10[0,1],ymm11[2],ymm10[3,4,5,6,7]9193; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm10 = ymm10[6,7,6,7,8,9,4,5,14,15,8,9,2,3,12,13,22,23,22,23,24,25,20,21,30,31,24,25,18,19,28,29]9194; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm11 = xmm5[0],xmm6[1],xmm5[2,3]9195; AVX512DQ-NEXT: vmovdqa64 %xmm30, %xmm79196; AVX512DQ-NEXT: vmovdqa %xmm5, %xmm69197; AVX512DQ-NEXT: vpshufb %xmm1, %xmm11, %xmm119198; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm11 = xmm11[0,1,2],xmm10[3,4,5,6,7]9199; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm10 = ymm11[0,1,2,3],ymm10[4,5,6,7]9200; AVX512DQ-NEXT: vmovdqa64 %xmm29, %xmm19201; AVX512DQ-NEXT: vmovdqa64 %xmm28, %xmm29202; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm8 = xmm2[0,1],xmm1[2],xmm2[3]9203; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,6,7,8,9,8,9,2,3,12,13]9204; AVX512DQ-NEXT: vinserti128 $1, %xmm8, %ymm0, %ymm89205; AVX512DQ-NEXT: vinserti64x4 $1, %ymm10, %zmm8, %zmm89206; AVX512DQ-NEXT: vpternlogq {{.*#+}} zmm8 = zmm8 ^ (mem & (zmm8 ^ zmm0))9207; AVX512DQ-NEXT: vmovdqa %ymm9, %ymm29208; AVX512DQ-NEXT: vmovdqa64 %ymm21, %ymm109209; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm10[0],ymm9[1],ymm10[2,3],ymm9[4],ymm10[5],ymm9[6],ymm10[7,8],ymm9[9],ymm10[10,11],ymm9[12],ymm10[13],ymm9[14],ymm10[15]9210; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm99211; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm9[1,2,3],xmm0[4,5],xmm9[6,7]9212; AVX512DQ-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,10,11,4,5,14,15,8,9,2,3,12,13]9213; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm09214; AVX512DQ-NEXT: vextracti64x4 $1, %zmm8, %ymm99215; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm9[0],ymm0[1,2,3,4,5,6,7],ymm9[8],ymm0[9,10,11,12,13,14,15]9216; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm9[0,1,2,3],ymm0[4,5,6,7]9217; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm8, %zmm259218; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm12[0,1],ymm13[2],ymm12[3],ymm13[4],ymm12[5,6],ymm13[7],ymm12[8,9],ymm13[10],ymm12[11],ymm13[12],ymm12[13,14],ymm13[15]9219; AVX512DQ-NEXT: vpermq {{.*#+}} ymm8 = ymm0[2,3,0,1]9220; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm8[4],ymm0[5,6],ymm8[7]9221; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm8 = ymm15[0],ymm14[1],ymm15[2,3],ymm14[4],ymm15[5],ymm14[6],ymm15[7,8],ymm14[9],ymm15[10,11],ymm14[12],ymm15[13],ymm14[14],ymm15[15]9222; AVX512DQ-NEXT: vextracti128 $1, %ymm8, %xmm99223; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm11 = xmm9[0,1,2],xmm8[3,4],xmm9[5,6,7]9224; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm9 = [8,9,2,3,12,13,6,7,4,5,6,7,4,5,14,15,24,25,18,19,28,29,22,23,20,21,22,23,20,21,30,31]9225; AVX512DQ-NEXT: vpshufb %ymm9, %ymm0, %ymm09226; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm8 = [8,9,2,3,12,13,6,7,0,1,10,11,0,1,6,7]9227; AVX512DQ-NEXT: vpshufb %xmm8, %xmm11, %xmm119228; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm11[0,1,2],ymm0[3,4,5,6,7]9229; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm3[0],ymm4[1,2],ymm3[3],ymm4[4],ymm3[5],ymm4[6,7],ymm3[8],ymm4[9,10],ymm3[11],ymm4[12],ymm3[13],ymm4[14,15]9230; AVX512DQ-NEXT: vextracti128 $1, %ymm4, %xmm59231; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2],ymm4[3,4,5,6,7]9232; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm1 = xmm6[0,1],xmm7[2],xmm6[3]9233; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm3 = [8,9,14,15,4,5,6,7,0,1,10,11,4,5,14,15,24,25,30,31,20,21,22,23,16,17,26,27,20,21,30,31]9234; AVX512DQ-NEXT: vpshufb %ymm3, %ymm4, %ymm49235; AVX512DQ-NEXT: vpshufb %xmm9, %xmm1, %xmm19236; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm4[3,4,5,6,7]9237; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm4[4,5,6,7]9238; AVX512DQ-NEXT: vinserti128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm4 # 16-byte Folded Reload9239; AVX512DQ-NEXT: vinserti64x4 $1, %ymm1, %zmm4, %zmm19240; AVX512DQ-NEXT: movb $7, %al9241; AVX512DQ-NEXT: kmovw %eax, %k19242; AVX512DQ-NEXT: vinserti64x4 $0, %ymm0, %zmm0, %zmm1 {%k1}9243; AVX512DQ-NEXT: vextracti64x4 $1, %zmm1, %ymm49244; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm2[0],ymm10[1],ymm2[2],ymm10[3],ymm2[4,5],ymm10[6],ymm2[7,8],ymm10[9],ymm2[10],ymm10[11],ymm2[12,13],ymm10[14],ymm2[15]9245; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm59246; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm5 = xmm0[0,1],xmm5[2,3],xmm0[4,5,6],xmm5[7]9247; AVX512DQ-NEXT: vmovdqa {{.*#+}} xmm0 = [6,7,2,3,12,13,6,7,0,1,10,11,4,5,14,15]9248; AVX512DQ-NEXT: vpshufb %xmm0, %xmm5, %xmm59249; AVX512DQ-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm59250; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm5 = ymm4[0],ymm5[1,2,3,4,5,6,7],ymm4[8],ymm5[9,10,11,12,13,14,15]9251; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm5[4,5,6,7]9252; AVX512DQ-NEXT: vinserti64x4 $1, %ymm4, %zmm1, %zmm19253; AVX512DQ-NEXT: vmovdqa64 %ymm22, %ymm29254; AVX512DQ-NEXT: vmovdqa64 %ymm26, %ymm49255; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm2[0],ymm4[1,2],ymm2[3],ymm4[4],ymm2[5],ymm4[6,7],ymm2[8],ymm4[9,10],ymm2[11],ymm4[12],ymm2[13],ymm4[14,15]9256; AVX512DQ-NEXT: vextracti128 $1, %ymm4, %xmm59257; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2],ymm4[3,4,5,6,7]9258; AVX512DQ-NEXT: vpshufb %ymm3, %ymm4, %ymm39259; AVX512DQ-NEXT: vmovdqa64 %xmm20, %xmm29260; AVX512DQ-NEXT: vmovdqa64 %xmm17, %xmm49261; AVX512DQ-NEXT: vpblendd {{.*#+}} xmm4 = xmm4[0,1],xmm2[2],xmm4[3]9262; AVX512DQ-NEXT: vpshufb %xmm9, %xmm4, %xmm49263; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2],xmm3[3,4,5,6,7]9264; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]9265; AVX512DQ-NEXT: vinserti128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm4 # 16-byte Folded Reload9266; AVX512DQ-NEXT: vinserti64x4 $1, %ymm3, %zmm4, %zmm39267; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload9268; AVX512DQ-NEXT: vpblendw $107, (%rsp), %ymm2, %ymm4 # 32-byte Folded Reload9269; AVX512DQ-NEXT: # ymm4 = mem[0,1],ymm2[2],mem[3],ymm2[4],mem[5,6],ymm2[7],mem[8,9],ymm2[10],mem[11],ymm2[12],mem[13,14],ymm2[15]9270; AVX512DQ-NEXT: vpermq {{.*#+}} ymm5 = ymm4[2,3,0,1]9271; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm5[4],ymm4[5,6],ymm5[7]9272; AVX512DQ-NEXT: vpshufb %ymm9, %ymm4, %ymm49273; AVX512DQ-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload9274; AVX512DQ-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm5 # 32-byte Folded Reload9275; AVX512DQ-NEXT: # ymm5 = ymm2[0],mem[1],ymm2[2,3],mem[4],ymm2[5],mem[6],ymm2[7,8],mem[9],ymm2[10,11],mem[12],ymm2[13],mem[14],ymm2[15]9276; AVX512DQ-NEXT: vextracti128 $1, %ymm5, %xmm69277; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm5 = xmm6[0,1,2],xmm5[3,4],xmm6[5,6,7]9278; AVX512DQ-NEXT: vpshufb %xmm8, %xmm5, %xmm59279; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm4 = ymm5[0,1,2],ymm4[3,4,5,6,7]9280; AVX512DQ-NEXT: vinserti64x4 $0, %ymm4, %zmm0, %zmm3 {%k1}9281; AVX512DQ-NEXT: vmovdqa64 %ymm19, %ymm29282; AVX512DQ-NEXT: vmovdqa64 %ymm31, %ymm49283; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm2[1],ymm4[2],ymm2[3],ymm4[4,5],ymm2[6],ymm4[7,8],ymm2[9],ymm4[10],ymm2[11],ymm4[12,13],ymm2[14],ymm4[15]9284; AVX512DQ-NEXT: vextracti128 $1, %ymm4, %xmm59285; AVX512DQ-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2,3],xmm4[4,5,6],xmm5[7]9286; AVX512DQ-NEXT: vpshufb %xmm0, %xmm4, %xmm09287; AVX512DQ-NEXT: vextracti64x4 $1, %zmm3, %ymm49288; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm09289; AVX512DQ-NEXT: vpblendw {{.*#+}} ymm0 = ymm4[0],ymm0[1,2,3,4,5,6,7],ymm4[8],ymm0[9,10,11,12,13,14,15]9290; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]9291; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm3, %zmm09292; AVX512DQ-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload9293; AVX512DQ-NEXT: vmovaps %zmm2, (%rsi)9294; AVX512DQ-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload9295; AVX512DQ-NEXT: vmovaps %zmm2, 64(%rsi)9296; AVX512DQ-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload9297; AVX512DQ-NEXT: vmovaps %zmm2, 64(%rdx)9298; AVX512DQ-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload9299; AVX512DQ-NEXT: vmovaps %zmm2, (%rdx)9300; AVX512DQ-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload9301; AVX512DQ-NEXT: vmovaps %zmm2, 64(%rcx)9302; AVX512DQ-NEXT: vmovdqa64 %zmm23, (%rcx)9303; AVX512DQ-NEXT: vmovdqa64 %zmm25, 64(%r8)9304; AVX512DQ-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 # 64-byte Reload9305; AVX512DQ-NEXT: vmovaps %zmm2, (%r8)9306; AVX512DQ-NEXT: vmovdqa64 %zmm1, 64(%r9)9307; AVX512DQ-NEXT: vmovdqa64 %zmm0, (%r9)9308; AVX512DQ-NEXT: addq $552, %rsp # imm = 0x2289309; AVX512DQ-NEXT: vzeroupper9310; AVX512DQ-NEXT: retq9311;9312; AVX512DQ-FCP-LABEL: load_i16_stride5_vf64:9313; AVX512DQ-FCP: # %bb.0:9314; AVX512DQ-FCP-NEXT: subq $552, %rsp # imm = 0x2289315; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm0 = [4,5,14,15,4,5,6,7,8,9,10,11,12,13,14,15]9316; AVX512DQ-FCP-NEXT: vmovdqa 496(%rdi), %xmm19317; AVX512DQ-FCP-NEXT: vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9318; AVX512DQ-FCP-NEXT: vpshufb %xmm0, %xmm1, %xmm19319; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,10,11,8,9,10,11,8,9,10,11,12,13,14,15]9320; AVX512DQ-FCP-NEXT: vmovdqa 480(%rdi), %xmm29321; AVX512DQ-FCP-NEXT: vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill9322; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm29323; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]9324; AVX512DQ-FCP-NEXT: vmovdqa 512(%rdi), %ymm109325; AVX512DQ-FCP-NEXT: vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9326; AVX512DQ-FCP-NEXT: vmovdqa 544(%rdi), %ymm119327; AVX512DQ-FCP-NEXT: vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9328; AVX512DQ-FCP-NEXT: vmovdqa 576(%rdi), %ymm79329; AVX512DQ-FCP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9330; AVX512DQ-FCP-NEXT: vmovdqa 608(%rdi), %ymm89331; AVX512DQ-FCP-NEXT: vmovdqu %ymm8, (%rsp) # 32-byte Spill9332; AVX512DQ-FCP-NEXT: vmovdqa 352(%rdi), %ymm49333; AVX512DQ-FCP-NEXT: vmovdqa 320(%rdi), %ymm59334; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm5[0],ymm4[1],ymm5[2,3],ymm4[4],ymm5[5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10,11],ymm4[12],ymm5[13],ymm4[14],ymm5[15]9335; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm5, %ymm289336; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm4, %ymm309337; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm1, %xmm49338; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm1[0],xmm4[1,2,3],xmm1[4,5],xmm4[6,7]9339; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [0,1,10,11,4,5,14,15,8,9,2,3,12,13,128,128,128,128,128,128,128,128,128,128,128,128,u,u,u,u,u,u]9340; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm49341; AVX512DQ-FCP-NEXT: vmovdqa 384(%rdi), %ymm69342; AVX512DQ-FCP-NEXT: vmovdqa 416(%rdi), %ymm99343; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm6[0],ymm9[1,2],ymm6[3],ymm9[4],ymm6[5],ymm9[6,7],ymm6[8],ymm9[9,10],ymm6[11],ymm9[12],ymm6[13],ymm9[14,15]9344; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm9, %ymm269345; AVX512DQ-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9346; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm6, %ymm279347; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm6 = [1,3,0,2,4,6,1,3]9348; AVX512DQ-FCP-NEXT: vpermd %ymm5, %ymm6, %ymm59349; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm13 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,2,3,16,17,22,23,24,25,30,31,20,21,128,128,128,128,128,128]9350; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm5, %ymm59351; AVX512DQ-FCP-NEXT: vpor %ymm5, %ymm4, %ymm49352; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm8[0,1],ymm7[2],ymm8[3],ymm7[4],ymm8[5,6],ymm7[7],ymm8[8,9],ymm7[10],ymm8[11],ymm7[12],ymm8[13,14],ymm7[15]9353; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm5, %xmm79354; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm5 = xmm5[0,1,2],xmm7[3,4],xmm5[5,6,7]9355; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm7 = ymm11[0],ymm10[1],ymm11[2,3],ymm10[4],ymm11[5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10,11],ymm10[12],ymm11[13],ymm10[14],ymm11[15]9356; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm10 = [2,4,7,1,4,6,0,0]9357; AVX512DQ-FCP-NEXT: vpermd %ymm7, %ymm10, %ymm79358; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm9 = [u,u,u,u,u,u,u,u,8,9,14,15,0,1,6,7,16,17,22,23,20,21,22,23,24,25,30,31,16,17,22,23]9359; AVX512DQ-FCP-NEXT: vpshufb %ymm9, %ymm7, %ymm79360; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm17 = [8,9,3,2,4,5,7,6]9361; AVX512DQ-FCP-NEXT: vpermt2d %ymm2, %ymm17, %ymm79362; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm2 = [12,13,14,15,4,5,14,15,8,9,2,3,12,13,6,7]9363; AVX512DQ-FCP-NEXT: vpshufb %xmm2, %xmm5, %xmm59364; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm59365; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm5 = ymm7[0,1,2,3,4],ymm5[5,6,7]9366; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm18 = [0,3,1,3,0,3,5,7]9367; AVX512DQ-FCP-NEXT: vmovdqa 448(%rdi), %ymm79368; AVX512DQ-FCP-NEXT: vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9369; AVX512DQ-FCP-NEXT: vpermd %ymm7, %ymm18, %ymm79370; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm14 = [4,5,2,3,4,5,6,7,8,9,2,3,4,5,10,11,20,21,18,19,20,21,22,23,24,25,18,19,20,21,26,27]9371; AVX512DQ-FCP-NEXT: vpshufb %ymm14, %ymm7, %ymm79372; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm16 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535]9373; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm7 = zmm7 ^ (zmm16 & (zmm7 ^ zmm4))9374; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm5, %zmm7, %zmm49375; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill9376; AVX512DQ-FCP-NEXT: vmovdqa 176(%rdi), %xmm49377; AVX512DQ-FCP-NEXT: vpshufb %xmm0, %xmm4, %xmm09378; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm4, %xmm319379; AVX512DQ-FCP-NEXT: vmovdqa 160(%rdi), %xmm159380; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm15, %xmm39381; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]9382; AVX512DQ-FCP-NEXT: vmovdqa 64(%rdi), %ymm119383; AVX512DQ-FCP-NEXT: vmovdqa 96(%rdi), %ymm79384; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm11[0],ymm7[1,2],ymm11[3],ymm7[4],ymm11[5],ymm7[6,7],ymm11[8],ymm7[9,10],ymm11[11],ymm7[12],ymm11[13],ymm7[14,15]9385; AVX512DQ-FCP-NEXT: vpermd %ymm3, %ymm6, %ymm39386; AVX512DQ-FCP-NEXT: vpshufb %ymm13, %ymm3, %ymm39387; AVX512DQ-FCP-NEXT: vmovdqa (%rdi), %ymm129388; AVX512DQ-FCP-NEXT: vmovdqa 32(%rdi), %ymm69389; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm12[0],ymm6[1],ymm12[2,3],ymm6[4],ymm12[5],ymm6[6],ymm12[7,8],ymm6[9],ymm12[10,11],ymm6[12],ymm12[13],ymm6[14],ymm12[15]9390; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm4, %xmm59391; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1,2,3],xmm4[4,5],xmm5[6,7]9392; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm19393; AVX512DQ-FCP-NEXT: vpor %ymm3, %ymm1, %ymm19394; AVX512DQ-FCP-NEXT: vmovdqa 192(%rdi), %ymm89395; AVX512DQ-FCP-NEXT: vmovdqa 224(%rdi), %ymm139396; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm13[0],ymm8[1],ymm13[2,3],ymm8[4],ymm13[5],ymm8[6],ymm13[7,8],ymm8[9],ymm13[10,11],ymm8[12],ymm13[13],ymm8[14],ymm13[15]9397; AVX512DQ-FCP-NEXT: vpermd %ymm3, %ymm10, %ymm39398; AVX512DQ-FCP-NEXT: vpshufb %ymm9, %ymm3, %ymm39399; AVX512DQ-FCP-NEXT: vmovdqa 256(%rdi), %ymm59400; AVX512DQ-FCP-NEXT: vmovdqa 288(%rdi), %ymm99401; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm9[0,1],ymm5[2],ymm9[3],ymm5[4],ymm9[5,6],ymm5[7],ymm9[8,9],ymm5[10],ymm9[11],ymm5[12],ymm9[13,14],ymm5[15]9402; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm5, %ymm259403; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm4, %xmm109404; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2],xmm10[3,4],xmm4[5,6,7]9405; AVX512DQ-FCP-NEXT: vpshufb %xmm2, %xmm4, %xmm29406; AVX512DQ-FCP-NEXT: vpermt2d %ymm0, %ymm17, %ymm39407; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm09408; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3,4],ymm0[5,6,7]9409; AVX512DQ-FCP-NEXT: vmovdqa64 128(%rdi), %ymm239410; AVX512DQ-FCP-NEXT: vpermd %ymm23, %ymm18, %ymm29411; AVX512DQ-FCP-NEXT: vpshufb %ymm14, %ymm2, %ymm29412; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm16 & (zmm2 ^ zmm1))9413; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm09414; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill9415; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm6[0],ymm12[1],ymm6[2],ymm12[3],ymm6[4,5],ymm12[6],ymm6[7,8],ymm12[9],ymm6[10],ymm12[11],ymm6[12,13],ymm12[14],ymm6[15]9416; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm12, %ymm219417; AVX512DQ-FCP-NEXT: vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9418; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm6, %ymm299419; AVX512DQ-FCP-NEXT: vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9420; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm0, %xmm19421; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5,6],xmm1[7]9422; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm17 = [2,0,0,0,4,7,1,6]9423; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm7[0],ymm11[1],ymm7[2,3],ymm11[4],ymm7[5],ymm11[6],ymm7[7,8],ymm11[9],ymm7[10,11],ymm11[12],ymm7[13],ymm11[14],ymm7[15]9424; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm11, %ymm199425; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm7, %ymm229426; AVX512DQ-FCP-NEXT: vpermd %ymm1, %ymm17, %ymm19427; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,1,18,19,20,21,26,27,16,17,30,31,128,128,128,128,128,128]9428; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm1, %ymm19429; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm2 = [2,3,12,13,6,7,0,1,10,11,4,5,14,15,128,128,128,128,128,128,128,128,128,128,128,128,u,u,u,u,u,u]9430; AVX512DQ-FCP-NEXT: vpshufb %ymm2, %ymm0, %ymm09431; AVX512DQ-FCP-NEXT: vpor %ymm1, %ymm0, %ymm109432; AVX512DQ-FCP-NEXT: vpsrlq $48, %xmm31, %xmm09433; AVX512DQ-FCP-NEXT: vpshufb %xmm2, %xmm15, %xmm19434; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]9435; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm20 = [0,2,5,7,4,7,0,0]9436; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm8[0],ymm13[1],ymm8[2,3],ymm13[4],ymm8[5],ymm13[6],ymm8[7,8],ymm13[9],ymm8[10,11],ymm13[12],ymm8[13],ymm13[14],ymm8[15]9437; AVX512DQ-FCP-NEXT: vmovdqa %ymm8, %ymm59438; AVX512DQ-FCP-NEXT: vpermd %ymm0, %ymm20, %ymm49439; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm3 = [2,3,4,5,4,5,0,1,6,7,8,9,14,15,4,5,18,19,20,21,20,21,16,17,22,23,24,25,30,31,20,21]9440; AVX512DQ-FCP-NEXT: vpshufb %ymm3, %ymm4, %ymm49441; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm4[3,4,5,6,7]9442; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm4 = ymm1[0,1,2,3],ymm4[4,5,6,7]9443; AVX512DQ-FCP-NEXT: vbroadcasti32x4 {{.*#+}} ymm24 = [1,4,6,3,1,4,6,3]9444; AVX512DQ-FCP-NEXT: # ymm24 = mem[0,1,2,3,0,1,2,3]9445; AVX512DQ-FCP-NEXT: vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9446; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm25, %ymm129447; AVX512DQ-FCP-NEXT: vmovdqu64 %ymm25, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill9448; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm12[0],ymm9[1,2],ymm12[3],ymm9[4],ymm12[5],ymm9[6,7],ymm12[8],ymm9[9,10],ymm12[11],ymm9[12],ymm12[13],ymm9[14,15]9449; AVX512DQ-FCP-NEXT: vpermd %ymm1, %ymm24, %ymm09450; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [0,1,2,3,2,3,4,5,10,11,0,1,14,15,8,9,16,17,18,19,18,19,20,21,26,27,16,17,30,31,24,25]9451; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm0, %ymm09452; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm4[0,1,2,3,4],ymm0[5,6,7]9453; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm25 = [1,3,2,3,1,3,6,7]9454; AVX512DQ-FCP-NEXT: vpermd %ymm23, %ymm25, %ymm49455; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm14 = [0,1,6,7,4,5,6,7,8,9,0,1,6,7,8,9,16,17,22,23,20,21,22,23,24,25,16,17,22,23,24,25]9456; AVX512DQ-FCP-NEXT: vpshufb %ymm14, %ymm4, %ymm49457; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm4 = zmm4 ^ (zmm16 & (zmm4 ^ zmm10))9458; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm16, %zmm109459; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm4, %zmm09460; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill9461; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm28, %ymm189462; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm30, %ymm289463; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm18, %ymm09464; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm30, %ymm49465; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm4[0],ymm0[1],ymm4[2],ymm0[3],ymm4[4,5],ymm0[6],ymm4[7,8],ymm0[9],ymm4[10],ymm0[11],ymm4[12,13],ymm0[14],ymm4[15]9466; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm0, %xmm49467; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm4[2,3],xmm0[4,5,6],xmm4[7]9468; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm27, %ymm79469; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm26, %ymm49470; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm7[1],ymm4[2,3],ymm7[4],ymm4[5],ymm7[6],ymm4[7,8],ymm7[9],ymm4[10,11],ymm7[12],ymm4[13],ymm7[14],ymm4[15]9471; AVX512DQ-FCP-NEXT: vpermd %ymm4, %ymm17, %ymm49472; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm4, %ymm49473; AVX512DQ-FCP-NEXT: vpshufb %ymm2, %ymm0, %ymm09474; AVX512DQ-FCP-NEXT: vpor %ymm4, %ymm0, %ymm09475; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload9476; AVX512DQ-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm16 # 32-byte Reload9477; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm16, %ymm49478; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm11[0],ymm4[1],ymm11[2,3],ymm4[4],ymm11[5],ymm4[6],ymm11[7,8],ymm4[9],ymm11[10,11],ymm4[12],ymm11[13],ymm4[14],ymm11[15]9479; AVX512DQ-FCP-NEXT: vpermd %ymm4, %ymm20, %ymm49480; AVX512DQ-FCP-NEXT: vpshufb %ymm3, %ymm4, %ymm39481; AVX512DQ-FCP-NEXT: vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload9482; AVX512DQ-FCP-NEXT: vpshufb %xmm2, %xmm6, %xmm29483; AVX512DQ-FCP-NEXT: vmovdqa64 {{[-0-9]+}}(%r{{[sb]}}p), %xmm27 # 16-byte Reload9484; AVX512DQ-FCP-NEXT: vpsrlq $48, %xmm27, %xmm49485; AVX512DQ-FCP-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]9486; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm3[3,4,5,6,7]9487; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm3[4,5,6,7]9488; AVX512DQ-FCP-NEXT: vmovdqu (%rsp), %ymm8 # 32-byte Reload9489; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload9490; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm8[1,2],ymm4[3],ymm8[4],ymm4[5],ymm8[6,7],ymm4[8],ymm8[9,10],ymm4[11],ymm8[12],ymm4[13],ymm8[14,15]9491; AVX512DQ-FCP-NEXT: vpermd %ymm3, %ymm24, %ymm39492; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm3, %ymm19493; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3,4],ymm1[5,6,7]9494; AVX512DQ-FCP-NEXT: vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %ymm17 # 32-byte Reload9495; AVX512DQ-FCP-NEXT: vpermd %ymm17, %ymm25, %ymm29496; AVX512DQ-FCP-NEXT: vpshufb %ymm14, %ymm2, %ymm29497; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm10 & (zmm2 ^ zmm0))9498; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm2, %zmm09499; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill9500; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm9[0],ymm12[1],ymm9[2,3],ymm12[4],ymm9[5],ymm12[6],ymm9[7,8],ymm12[9],ymm9[10,11],ymm12[12],ymm9[13],ymm12[14],ymm9[15]9501; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm0, %xmm19502; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]9503; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm0 = xmm15[u,u,u,u,u,u,u,u,4,5,14,15,u,u,u,u]9504; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm15, %xmm209505; AVX512DQ-FCP-NEXT: vpunpckhdq {{.*#+}} xmm0 = xmm0[2],xmm31[2],xmm0[3],xmm31[3]9506; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm24 = [0,3,5,2,5,7,0,0]9507; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm13[0],ymm5[1],ymm13[2],ymm5[3],ymm13[4,5],ymm5[6],ymm13[7,8],ymm5[9],ymm13[10],ymm5[11],ymm13[12,13],ymm5[14],ymm13[15]9508; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm5, %ymm309509; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm13, %ymm269510; AVX512DQ-FCP-NEXT: vpermd %ymm2, %ymm24, %ymm39511; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm12 = [0,1,6,7,2,3,2,3,4,5,10,11,0,1,14,15,16,17,22,23,18,19,18,19,20,21,26,27,16,17,30,31]9512; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm3, %ymm39513; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3,4,5,6,7]9514; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm0[0,1,2,3],ymm3[4,5,6,7]9515; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,2,3,8,9,2,3,12,13,6,7,0,1,10,11]9516; AVX512DQ-FCP-NEXT: vpshufb %xmm2, %xmm1, %xmm19517; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm19518; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm10 = ymm3[0,1,2,3,4],ymm1[5,6,7]9519; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm21, %ymm09520; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm29, %ymm19521; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm0[2],ymm1[3],ymm0[4],ymm1[5,6],ymm0[7],ymm1[8,9],ymm0[10],ymm1[11],ymm0[12],ymm1[13,14],ymm0[15]9522; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm1, %xmm39523; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm5 = xmm1[0,1,2],xmm3[3,4],xmm1[5,6,7]9524; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm25 = [0,2,0,0,5,7,2,4]9525; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm19, %ymm09526; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm22, %ymm19527; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13],ymm1[14],ymm0[15]9528; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm22, %ymm299529; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm19, %ymm219530; AVX512DQ-FCP-NEXT: vpermd %ymm1, %ymm25, %ymm39531; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [0,1,6,7,8,9,14,15,4,5,6,7,0,1,6,7,16,17,22,23,24,25,30,31,20,21,22,23,16,17,22,23]9532; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm3, %ymm09533; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [4,5,14,15,8,9,2,3,12,13,6,7,12,13,14,15]9534; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm5, %xmm59535; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm5[0,1,2],ymm0[3,4,5,6,7]9536; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm5 = [1,4,6,0,1,4,6,0]9537; AVX512DQ-FCP-NEXT: # ymm5 = mem[0,1,0,1]9538; AVX512DQ-FCP-NEXT: vpermd %ymm23, %ymm5, %ymm149539; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm9 = [4,5,2,3,4,5,6,7,8,9,2,3,4,5,10,11,20,21,18,19,20,21,22,23,24,25,18,19,20,21,26,27]9540; AVX512DQ-FCP-NEXT: vpshufb %ymm9, %ymm14, %ymm149541; AVX512DQ-FCP-NEXT: vmovdqa64 {{.*#+}} zmm15 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535]9542; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm14 = zmm14 ^ (zmm15 & (zmm14 ^ zmm0))9543; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm10, %zmm14, %zmm09544; AVX512DQ-FCP-NEXT: vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill9545; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm0 = ymm8[0],ymm4[1],ymm8[2,3],ymm4[4],ymm8[5],ymm4[6],ymm8[7,8],ymm4[9],ymm8[10,11],ymm4[12],ymm8[13],ymm4[14],ymm8[15]9546; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm0, %xmm109547; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm10[0,1,2],xmm0[3,4],xmm10[5,6,7]9548; AVX512DQ-FCP-NEXT: vpshufb %xmm2, %xmm0, %xmm09549; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm16, %ymm89550; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm8[0],ymm11[1],ymm8[2],ymm11[3],ymm8[4,5],ymm11[6],ymm8[7,8],ymm11[9],ymm8[10],ymm11[11],ymm8[12,13],ymm11[14],ymm8[15]9551; AVX512DQ-FCP-NEXT: vmovdqa %ymm11, %ymm139552; AVX512DQ-FCP-NEXT: vpermd %ymm2, %ymm24, %ymm29553; AVX512DQ-FCP-NEXT: vpshufb %ymm12, %ymm2, %ymm29554; AVX512DQ-FCP-NEXT: vpshufb {{.*#+}} xmm4 = xmm6[u,u,u,u,u,u,u,u,4,5,14,15,u,u,u,u]9555; AVX512DQ-FCP-NEXT: vmovdqa %xmm6, %xmm149556; AVX512DQ-FCP-NEXT: vpunpckhdq {{.*#+}} xmm4 = xmm4[2],xmm27[2],xmm4[3],xmm27[3]9557; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm27, %xmm69558; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0,1,2],xmm2[3,4,5,6,7]9559; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]9560; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm09561; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3,4],ymm0[5,6,7]9562; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm18, %ymm119563; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm28, %ymm129564; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm12[0,1],ymm11[2],ymm12[3],ymm11[4],ymm12[5,6],ymm11[7],ymm12[8,9],ymm11[10],ymm12[11],ymm11[12],ymm12[13,14],ymm11[15]9565; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm2, %xmm49566; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm4[3,4],xmm2[5,6,7]9567; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm29568; AVX512DQ-FCP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7, %ymm3 # 32-byte Folded Reload9569; AVX512DQ-FCP-NEXT: # ymm3 = ymm7[0],mem[1],ymm7[2,3],mem[4],ymm7[5],mem[6],ymm7[7,8],mem[9],ymm7[10,11],mem[12],ymm7[13],mem[14],ymm7[15]9570; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm7, %ymm169571; AVX512DQ-FCP-NEXT: vpermd %ymm3, %ymm25, %ymm39572; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm3, %ymm19573; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3,4,5,6,7]9574; AVX512DQ-FCP-NEXT: vpermd %ymm17, %ymm5, %ymm29575; AVX512DQ-FCP-NEXT: vpshufb %ymm9, %ymm2, %ymm29576; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm2 = zmm2 ^ (zmm15 & (zmm2 ^ zmm1))9577; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm289578; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm31, %xmm159579; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm20, %xmm79580; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm1 = xmm15[0],xmm7[1],xmm15[2,3]9581; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm0 = [6,7,0,1,10,11,0,0,0,0,0,0,0,0,0,0]9582; AVX512DQ-FCP-NEXT: vpshufb %xmm0, %xmm1, %xmm29583; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm18 = [1,3,6,0,5,0,0,0]9584; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm30, %ymm99585; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm26, %ymm109586; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm10[0,1],ymm9[2],ymm10[3],ymm9[4],ymm10[5,6],ymm9[7],ymm10[8,9],ymm9[10],ymm10[11],ymm9[12],ymm10[13,14],ymm9[15]9587; AVX512DQ-FCP-NEXT: vpermd %ymm1, %ymm18, %ymm49588; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm1 = [2,3,2,3,4,5,0,1,6,7,8,9,14,15,4,5,18,19,18,19,20,21,16,17,22,23,24,25,30,31,20,21]9589; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm4, %ymm49590; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm4[3,4,5,6,7]9591; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4,5,6,7]9592; AVX512DQ-FCP-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [2,4,7,0,2,4,7,0]9593; AVX512DQ-FCP-NEXT: # ymm4 = mem[0,1,0,1]9594; AVX512DQ-FCP-NEXT: vpermd %ymm23, %ymm4, %ymm59595; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm3 = [0,1,6,7,4,5,6,7,8,9,0,1,6,7,8,9,16,17,22,23,20,21,22,23,24,25,16,17,22,23,24,25]9596; AVX512DQ-FCP-NEXT: vpshufb %ymm3, %ymm5, %ymm59597; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm5, %zmm259598; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm2 = xmm6[0],xmm14[1],xmm6[2,3]9599; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm27, %xmm229600; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm14, %xmm319601; AVX512DQ-FCP-NEXT: vpshufb %xmm0, %xmm2, %xmm09602; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm8[0,1],ymm13[2],ymm8[3],ymm13[4],ymm8[5,6],ymm13[7],ymm8[8,9],ymm13[10],ymm8[11],ymm13[12],ymm8[13,14],ymm13[15]9603; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm13, %ymm209604; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm8, %ymm309605; AVX512DQ-FCP-NEXT: vpermd %ymm2, %ymm18, %ymm29606; AVX512DQ-FCP-NEXT: vpshufb %ymm1, %ymm2, %ymm19607; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm1[3,4,5,6,7]9608; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]9609; AVX512DQ-FCP-NEXT: vpermd %ymm17, %ymm4, %ymm19610; AVX512DQ-FCP-NEXT: vpshufb %ymm3, %ymm1, %ymm19611; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm249612; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm0 = xmm15[0,1],xmm7[2],xmm15[3]9613; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm1 = ymm9[0],ymm10[1,2],ymm9[3],ymm10[4],ymm9[5],ymm10[6,7],ymm9[8],ymm10[9,10],ymm9[11],ymm10[12],ymm9[13],ymm10[14,15]9614; AVX512DQ-FCP-NEXT: vmovq {{.*#+}} xmm2 = [8,9,2,3,12,13,0,0,0,0,0,0,0,0,0,0]9615; AVX512DQ-FCP-NEXT: vpshufb %xmm2, %xmm0, %xmm39616; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm27 = [1,4,6,3,6,0,0,0]9617; AVX512DQ-FCP-NEXT: vpermd %ymm1, %ymm27, %ymm19618; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm0 = [0,1,2,3,4,5,2,3,4,5,10,11,0,1,14,15,16,17,18,19,20,21,18,19,20,21,26,27,16,17,30,31]9619; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm1, %ymm19620; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm1[3,4,5,6,7]9621; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm1 = ymm3[0,1,2,3],ymm1[4,5,6,7]9622; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm26 = [0,2,1,3,0,2,5,7]9623; AVX512DQ-FCP-NEXT: vpermd %ymm23, %ymm26, %ymm39624; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm4 = [0,1,6,7,4,5,6,7,0,1,6,7,8,9,14,15,16,17,22,23,20,21,22,23,16,17,22,23,24,25,30,31]9625; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm3, %ymm39626; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm4, %ymm199627; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm1, %zmm3, %zmm19628; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload9629; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Reload9630; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm14[1,2],ymm4[3],ymm14[4],ymm4[5],ymm14[6,7],ymm4[8],ymm14[9,10],ymm4[11],ymm14[12],ymm4[13],ymm14[14,15]9631; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm4, %ymm189632; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm3, %xmm49633; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm3 = xmm4[0],xmm3[1],xmm4[2],xmm3[3]9634; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [0,3,0,0,5,0,2,7]9635; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm21, %ymm159636; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm29, %ymm109637; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm5 = ymm10[0],ymm15[1],ymm10[2],ymm15[3],ymm10[4,5],ymm15[6],ymm10[7,8],ymm15[9],ymm10[10],ymm15[11],ymm10[12,13],ymm15[14],ymm10[15]9638; AVX512DQ-FCP-NEXT: vpermd %ymm5, %ymm4, %ymm59639; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm6 = [2,3,4,5,10,11,0,1,14,15,14,15,2,3,4,5,18,19,20,21,26,27,16,17,30,31,30,31,18,19,20,21]9640; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm5, %ymm59641; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm7 = [6,7,0,1,10,11,4,5,14,15,8,9,12,13,14,15]9642; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm3, %xmm39643; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2],ymm5[3,4,5,6,7]9644; AVX512DQ-FCP-NEXT: vpmovsxdq {{.*#+}} zmm5 = [18446744073709551615,18446744073709551615,18446744073709551615,65535,0,0,18446744073709486080,18446744073709551615]9645; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm25 = zmm25 ^ (zmm5 & (zmm25 ^ zmm3))9646; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload9647; AVX512DQ-FCP-NEXT: vpblendw $82, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm3 # 32-byte Folded Reload9648; AVX512DQ-FCP-NEXT: # ymm3 = ymm3[0],mem[1],ymm3[2,3],mem[4],ymm3[5],mem[6],ymm3[7,8],mem[9],ymm3[10,11],mem[12],ymm3[13],mem[14],ymm3[15]9649; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm3, %xmm89650; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm8 = xmm3[0],xmm8[1,2,3],xmm3[4,5],xmm8[6,7]9651; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,0,1,10,11,4,5,14,15,8,9,2,3,12,13]9652; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm8, %xmm89653; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm8, %ymm0, %ymm89654; AVX512DQ-FCP-NEXT: vextracti64x4 $1, %zmm25, %ymm99655; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1,2,3,4,5,6,7],ymm9[8],ymm8[9,10,11,12,13,14,15]9656; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm8 = ymm9[0,1,2,3],ymm8[4,5,6,7]9657; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm8, %zmm25, %zmm219658; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm11[0],ymm12[1,2],ymm11[3],ymm12[4],ymm11[5],ymm12[6,7],ymm11[8],ymm12[9,10],ymm11[11],ymm12[12],ymm11[13],ymm12[14,15]9659; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm12, %ymm239660; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm11, %ymm259661; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm8, %xmm99662; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm8 = xmm9[0],xmm8[1],xmm9[2],xmm8[3]9663; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm8, %xmm79664; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Reload9665; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm16, %ymm129666; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm8 = ymm13[0],ymm12[1],ymm13[2],ymm12[3],ymm13[4,5],ymm12[6],ymm13[7,8],ymm12[9],ymm13[10],ymm12[11],ymm13[12,13],ymm12[14],ymm13[15]9667; AVX512DQ-FCP-NEXT: vpermd %ymm8, %ymm4, %ymm49668; AVX512DQ-FCP-NEXT: vpshufb %ymm6, %ymm4, %ymm49669; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm4 = ymm7[0,1,2],ymm4[3,4,5,6,7]9670; AVX512DQ-FCP-NEXT: vpternlogq {{.*#+}} zmm24 = zmm24 ^ (zmm5 & (zmm24 ^ zmm4))9671; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm22, %xmm49672; AVX512DQ-FCP-NEXT: vmovdqa64 %xmm31, %xmm59673; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} xmm4 = xmm4[0,1],xmm5[2],xmm4[3]9674; AVX512DQ-FCP-NEXT: vpshufb %xmm2, %xmm4, %xmm29675; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm20, %ymm49676; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm30, %ymm59677; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm4 = ymm4[0],ymm5[1,2],ymm4[3],ymm5[4],ymm4[5],ymm5[6,7],ymm4[8],ymm5[9,10],ymm4[11],ymm5[12],ymm4[13],ymm5[14,15]9678; AVX512DQ-FCP-NEXT: vpermd %ymm4, %ymm27, %ymm49679; AVX512DQ-FCP-NEXT: vpshufb %ymm0, %ymm4, %ymm09680; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm0[3,4,5,6,7]9681; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]9682; AVX512DQ-FCP-NEXT: vpermd %ymm17, %ymm26, %ymm29683; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm19, %ymm49684; AVX512DQ-FCP-NEXT: vpshufb %ymm4, %ymm2, %ymm29685; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm09686; AVX512DQ-FCP-NEXT: vmovdqu (%rsp), %ymm9 # 32-byte Reload9687; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload9688; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm11[0],ymm9[1],ymm11[2,3],ymm9[4],ymm11[5],ymm9[6],ymm11[7,8],ymm9[9],ymm11[10,11],ymm9[12],ymm11[13],ymm9[14],ymm11[15]9689; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm2, %xmm49690; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1,2,3],xmm2[4,5],xmm4[6,7]9691; AVX512DQ-FCP-NEXT: vpshufb %xmm3, %xmm2, %xmm29692; AVX512DQ-FCP-NEXT: vextracti64x4 $1, %zmm24, %ymm39693; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm29694; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1,2,3,4,5,6,7],ymm3[8],ymm2[9,10,11,12,13,14,15]9695; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]9696; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm2, %zmm24, %zmm29697; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm10[0,1],ymm15[2],ymm10[3],ymm15[4],ymm10[5,6],ymm15[7],ymm10[8,9],ymm15[10],ymm10[11],ymm15[12],ymm10[13,14],ymm15[15]9698; AVX512DQ-FCP-NEXT: vpmovsxbd {{.*#+}} ymm4 = [1,3,0,0,6,0,3,5]9699; AVX512DQ-FCP-NEXT: vpermd %ymm3, %ymm4, %ymm39700; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} ymm5 = [0,1,6,7,8,9,14,15,0,1,6,7,0,1,6,7,16,17,22,23,24,25,30,31,16,17,22,23,16,17,22,23]9701; AVX512DQ-FCP-NEXT: vpshufb %ymm5, %ymm3, %ymm39702; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm18, %ymm69703; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm14[0],ymm6[1],ymm14[2,3],ymm6[4],ymm14[5],ymm6[6],ymm14[7,8],ymm6[9],ymm14[10,11],ymm6[12],ymm14[13],ymm6[14],ymm14[15]9704; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm6, %xmm79705; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm7[0,1,2],xmm6[3,4],xmm7[5,6,7]9706; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm7 = [8,9,2,3,12,13,6,7,0,1,10,11,0,1,6,7]9707; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm6, %xmm69708; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm6[0,1,2],ymm3[3,4,5,6,7]9709; AVX512DQ-FCP-NEXT: movb $7, %al9710; AVX512DQ-FCP-NEXT: kmovw %eax, %k19711; AVX512DQ-FCP-NEXT: vinserti64x4 $0, %ymm3, %zmm0, %zmm1 {%k1}9712; AVX512DQ-FCP-NEXT: vextracti64x4 $1, %zmm1, %ymm39713; AVX512DQ-FCP-NEXT: vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload9714; AVX512DQ-FCP-NEXT: vpblendw $181, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm6 # 32-byte Folded Reload9715; AVX512DQ-FCP-NEXT: # ymm6 = mem[0],ymm6[1],mem[2],ymm6[3],mem[4,5],ymm6[6],mem[7,8],ymm6[9],mem[10],ymm6[11],mem[12,13],ymm6[14],mem[15]9716; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm6, %xmm89717; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm6 = xmm6[0,1],xmm8[2,3],xmm6[4,5,6],xmm8[7]9718; AVX512DQ-FCP-NEXT: vmovdqa {{.*#+}} xmm8 = [6,7,2,3,12,13,6,7,0,1,10,11,4,5,14,15]9719; AVX512DQ-FCP-NEXT: vpshufb %xmm8, %xmm6, %xmm69720; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm6, %ymm0, %ymm69721; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm3[0],ymm6[1,2,3,4,5,6,7],ymm3[8],ymm6[9,10,11,12,13,14,15]9722; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm6[4,5,6,7]9723; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm1, %zmm19724; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm23, %ymm39725; AVX512DQ-FCP-NEXT: vmovdqa64 %ymm25, %ymm69726; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm3[0],ymm6[1],ymm3[2,3],ymm6[4],ymm3[5],ymm6[6],ymm3[7,8],ymm6[9],ymm3[10,11],ymm6[12],ymm3[13],ymm6[14],ymm3[15]9727; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm3, %xmm69728; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm6[0,1,2],xmm3[3,4],xmm6[5,6,7]9729; AVX512DQ-FCP-NEXT: vpshufb %xmm7, %xmm3, %xmm39730; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm6 = ymm13[0,1],ymm12[2],ymm13[3],ymm12[4],ymm13[5,6],ymm12[7],ymm13[8,9],ymm12[10],ymm13[11],ymm12[12],ymm13[13,14],ymm12[15]9731; AVX512DQ-FCP-NEXT: vpermd %ymm6, %ymm4, %ymm49732; AVX512DQ-FCP-NEXT: vpshufb %ymm5, %ymm4, %ymm49733; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2],ymm4[3,4,5,6,7]9734; AVX512DQ-FCP-NEXT: vinserti64x4 $0, %ymm3, %zmm0, %zmm0 {%k1}9735; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm9[0],ymm11[1],ymm9[2],ymm11[3],ymm9[4,5],ymm11[6],ymm9[7,8],ymm11[9],ymm9[10],ymm11[11],ymm9[12,13],ymm11[14],ymm9[15]9736; AVX512DQ-FCP-NEXT: vextracti128 $1, %ymm3, %xmm49737; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3],xmm3[4,5,6],xmm4[7]9738; AVX512DQ-FCP-NEXT: vpshufb %xmm8, %xmm3, %xmm39739; AVX512DQ-FCP-NEXT: vextracti64x4 $1, %zmm0, %ymm49740; AVX512DQ-FCP-NEXT: vinserti128 $1, %xmm3, %ymm0, %ymm39741; AVX512DQ-FCP-NEXT: vpblendw {{.*#+}} ymm3 = ymm4[0],ymm3[1,2,3,4,5,6,7],ymm4[8],ymm3[9,10,11,12,13,14,15]9742; AVX512DQ-FCP-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]9743; AVX512DQ-FCP-NEXT: vinserti64x4 $1, %ymm3, %zmm0, %zmm09744; AVX512DQ-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload9745; AVX512DQ-FCP-NEXT: vmovaps %zmm3, (%rsi)9746; AVX512DQ-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload9747; AVX512DQ-FCP-NEXT: vmovaps %zmm3, 64(%rsi)9748; AVX512DQ-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload9749; AVX512DQ-FCP-NEXT: vmovaps %zmm3, 64(%rdx)9750; AVX512DQ-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload9751; AVX512DQ-FCP-NEXT: vmovaps %zmm3, (%rdx)9752; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm28, 64(%rcx)9753; AVX512DQ-FCP-NEXT: vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload9754; AVX512DQ-FCP-NEXT: vmovaps %zmm3, (%rcx)9755; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm2, 64(%r8)9756; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm21, (%r8)9757; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm0, 64(%r9)9758; AVX512DQ-FCP-NEXT: vmovdqa64 %zmm1, (%r9)9759; AVX512DQ-FCP-NEXT: addq $552, %rsp # imm = 0x2289760; AVX512DQ-FCP-NEXT: vzeroupper9761; AVX512DQ-FCP-NEXT: retq9762;9763; AVX512BW-LABEL: load_i16_stride5_vf64:9764; AVX512BW: # %bb.0:9765; AVX512BW-NEXT: vmovdqa64 576(%rdi), %zmm29766; AVX512BW-NEXT: vmovdqa64 384(%rdi), %zmm49767; AVX512BW-NEXT: vmovdqa64 320(%rdi), %zmm39768; AVX512BW-NEXT: vmovdqa64 512(%rdi), %zmm59769; AVX512BW-NEXT: vmovdqa64 448(%rdi), %zmm09770; AVX512BW-NEXT: vmovdqa64 256(%rdi), %zmm79771; AVX512BW-NEXT: vmovdqa64 (%rdi), %zmm99772; AVX512BW-NEXT: vmovdqa64 64(%rdi), %zmm119773; AVX512BW-NEXT: vmovdqa64 128(%rdi), %zmm19774; AVX512BW-NEXT: vmovdqa64 192(%rdi), %zmm109775; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm12 = [16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11]9776; AVX512BW-NEXT: # zmm12 = mem[0,1,2,3,0,1,2,3]9777; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm139778; AVX512BW-NEXT: vpermt2w %zmm10, %zmm12, %zmm139779; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0]9780; AVX512BW-NEXT: vmovdqa64 %zmm9, %zmm89781; AVX512BW-NEXT: vpermt2w %zmm11, %zmm6, %zmm89782; AVX512BW-NEXT: movl $67100672, %eax # imm = 0x3FFE0009783; AVX512BW-NEXT: kmovd %eax, %k19784; AVX512BW-NEXT: vmovdqu16 %zmm13, %zmm8 {%k1}9785; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm13 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,34,39,44,49,54,59]9786; AVX512BW-NEXT: vpermt2w %zmm7, %zmm13, %zmm89787; AVX512BW-NEXT: vpermi2w %zmm5, %zmm0, %zmm129788; AVX512BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm69789; AVX512BW-NEXT: vmovdqu16 %zmm12, %zmm6 {%k1}9790; AVX512BW-NEXT: vpermt2w %zmm2, %zmm13, %zmm69791; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm14 = [49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44]9792; AVX512BW-NEXT: # zmm14 = mem[0,1,2,3,0,1,2,3]9793; AVX512BW-NEXT: vmovdqa64 %zmm10, %zmm159794; AVX512BW-NEXT: vpermt2w %zmm1, %zmm14, %zmm159795; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm12 = [1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0]9796; AVX512BW-NEXT: vmovdqa64 %zmm9, %zmm139797; AVX512BW-NEXT: vpermt2w %zmm11, %zmm12, %zmm139798; AVX512BW-NEXT: vmovdqu16 %zmm15, %zmm13 {%k1}9799; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm15 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,35,40,45,50,55,60]9800; AVX512BW-NEXT: vpermt2w %zmm7, %zmm15, %zmm139801; AVX512BW-NEXT: vpermi2w %zmm0, %zmm5, %zmm149802; AVX512BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm129803; AVX512BW-NEXT: vmovdqu16 %zmm14, %zmm12 {%k1}9804; AVX512BW-NEXT: vpermt2w %zmm2, %zmm15, %zmm129805; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm16 = [50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45]9806; AVX512BW-NEXT: # zmm16 = mem[0,1,2,3,0,1,2,3]9807; AVX512BW-NEXT: vmovdqa64 %zmm10, %zmm179808; AVX512BW-NEXT: vpermt2w %zmm1, %zmm16, %zmm179809; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm14 = [34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0]9810; AVX512BW-NEXT: vmovdqa64 %zmm11, %zmm159811; AVX512BW-NEXT: vpermt2w %zmm9, %zmm14, %zmm159812; AVX512BW-NEXT: vmovdqu16 %zmm17, %zmm15 {%k1}9813; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm17 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,36,41,46,51,56,61]9814; AVX512BW-NEXT: vpermt2w %zmm7, %zmm17, %zmm159815; AVX512BW-NEXT: vpermi2w %zmm0, %zmm5, %zmm169816; AVX512BW-NEXT: vpermi2w %zmm3, %zmm4, %zmm149817; AVX512BW-NEXT: vmovdqu16 %zmm16, %zmm14 {%k1}9818; AVX512BW-NEXT: vpermt2w %zmm2, %zmm17, %zmm149819; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm16 = [19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14]9820; AVX512BW-NEXT: # zmm16 = mem[0,1,2,3,0,1,2,3]9821; AVX512BW-NEXT: vmovdqa64 %zmm1, %zmm179822; AVX512BW-NEXT: vpermt2w %zmm10, %zmm16, %zmm179823; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm18 = [35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0]9824; AVX512BW-NEXT: vmovdqa64 %zmm11, %zmm199825; AVX512BW-NEXT: vpermt2w %zmm9, %zmm18, %zmm199826; AVX512BW-NEXT: movl $33546240, %eax # imm = 0x1FFE0009827; AVX512BW-NEXT: kmovd %eax, %k19828; AVX512BW-NEXT: vmovdqu16 %zmm17, %zmm19 {%k1}9829; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm17 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,32,37,42,47,52,57,62]9830; AVX512BW-NEXT: vpermt2w %zmm7, %zmm17, %zmm199831; AVX512BW-NEXT: vpermi2w %zmm5, %zmm0, %zmm169832; AVX512BW-NEXT: vpermi2w %zmm3, %zmm4, %zmm189833; AVX512BW-NEXT: vmovdqu16 %zmm16, %zmm18 {%k1}9834; AVX512BW-NEXT: vpermt2w %zmm2, %zmm17, %zmm189835; AVX512BW-NEXT: vpmovsxbw {{.*#+}} ymm16 = [4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0]9836; AVX512BW-NEXT: vpermt2w %zmm11, %zmm16, %zmm99837; AVX512BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15]9838; AVX512BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]9839; AVX512BW-NEXT: vpermt2w %zmm10, %zmm11, %zmm19840; AVX512BW-NEXT: movb $7, %al9841; AVX512BW-NEXT: kmovd %eax, %k19842; AVX512BW-NEXT: vmovdqa64 %zmm9, %zmm1 {%k1}9843; AVX512BW-NEXT: vpmovsxbw {{.*#+}} zmm9 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,33,38,43,48,53,58,63]9844; AVX512BW-NEXT: vpermt2w %zmm7, %zmm9, %zmm19845; AVX512BW-NEXT: vpermt2w %zmm5, %zmm11, %zmm09846; AVX512BW-NEXT: vpermt2w %zmm4, %zmm16, %zmm39847; AVX512BW-NEXT: vmovdqa64 %zmm3, %zmm0 {%k1}9848; AVX512BW-NEXT: vpermt2w %zmm2, %zmm9, %zmm09849; AVX512BW-NEXT: vmovdqa64 %zmm6, 64(%rsi)9850; AVX512BW-NEXT: vmovdqa64 %zmm8, (%rsi)9851; AVX512BW-NEXT: vmovdqa64 %zmm12, 64(%rdx)9852; AVX512BW-NEXT: vmovdqa64 %zmm13, (%rdx)9853; AVX512BW-NEXT: vmovdqa64 %zmm14, 64(%rcx)9854; AVX512BW-NEXT: vmovdqa64 %zmm15, (%rcx)9855; AVX512BW-NEXT: vmovdqa64 %zmm18, 64(%r8)9856; AVX512BW-NEXT: vmovdqa64 %zmm19, (%r8)9857; AVX512BW-NEXT: vmovdqa64 %zmm0, 64(%r9)9858; AVX512BW-NEXT: vmovdqa64 %zmm1, (%r9)9859; AVX512BW-NEXT: vzeroupper9860; AVX512BW-NEXT: retq9861;9862; AVX512BW-FCP-LABEL: load_i16_stride5_vf64:9863; AVX512BW-FCP: # %bb.0:9864; AVX512BW-FCP-NEXT: vmovdqa64 576(%rdi), %zmm29865; AVX512BW-FCP-NEXT: vmovdqa64 384(%rdi), %zmm49866; AVX512BW-FCP-NEXT: vmovdqa64 320(%rdi), %zmm39867; AVX512BW-FCP-NEXT: vmovdqa64 512(%rdi), %zmm59868; AVX512BW-FCP-NEXT: vmovdqa64 448(%rdi), %zmm09869; AVX512BW-FCP-NEXT: vmovdqa64 256(%rdi), %zmm79870; AVX512BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm99871; AVX512BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm119872; AVX512BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm19873; AVX512BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm109874; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm12 = [16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11]9875; AVX512BW-FCP-NEXT: # zmm12 = mem[0,1,2,3,0,1,2,3]9876; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm139877; AVX512BW-FCP-NEXT: vpermt2w %zmm10, %zmm12, %zmm139878; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0]9879; AVX512BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm89880; AVX512BW-FCP-NEXT: vpermt2w %zmm11, %zmm6, %zmm89881; AVX512BW-FCP-NEXT: movl $67100672, %eax # imm = 0x3FFE0009882; AVX512BW-FCP-NEXT: kmovd %eax, %k19883; AVX512BW-FCP-NEXT: vmovdqu16 %zmm13, %zmm8 {%k1}9884; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm13 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,34,39,44,49,54,59]9885; AVX512BW-FCP-NEXT: vpermt2w %zmm7, %zmm13, %zmm89886; AVX512BW-FCP-NEXT: vpermi2w %zmm5, %zmm0, %zmm129887; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm69888; AVX512BW-FCP-NEXT: vmovdqu16 %zmm12, %zmm6 {%k1}9889; AVX512BW-FCP-NEXT: vpermt2w %zmm2, %zmm13, %zmm69890; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm14 = [49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44]9891; AVX512BW-FCP-NEXT: # zmm14 = mem[0,1,2,3,0,1,2,3]9892; AVX512BW-FCP-NEXT: vmovdqa64 %zmm10, %zmm159893; AVX512BW-FCP-NEXT: vpermt2w %zmm1, %zmm14, %zmm159894; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0]9895; AVX512BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm139896; AVX512BW-FCP-NEXT: vpermt2w %zmm11, %zmm12, %zmm139897; AVX512BW-FCP-NEXT: vmovdqu16 %zmm15, %zmm13 {%k1}9898; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm15 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,35,40,45,50,55,60]9899; AVX512BW-FCP-NEXT: vpermt2w %zmm7, %zmm15, %zmm139900; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm5, %zmm149901; AVX512BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm129902; AVX512BW-FCP-NEXT: vmovdqu16 %zmm14, %zmm12 {%k1}9903; AVX512BW-FCP-NEXT: vpermt2w %zmm2, %zmm15, %zmm129904; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm16 = [50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45]9905; AVX512BW-FCP-NEXT: # zmm16 = mem[0,1,2,3,0,1,2,3]9906; AVX512BW-FCP-NEXT: vmovdqa64 %zmm10, %zmm179907; AVX512BW-FCP-NEXT: vpermt2w %zmm1, %zmm16, %zmm179908; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0]9909; AVX512BW-FCP-NEXT: vmovdqa64 %zmm11, %zmm159910; AVX512BW-FCP-NEXT: vpermt2w %zmm9, %zmm14, %zmm159911; AVX512BW-FCP-NEXT: vmovdqu16 %zmm17, %zmm15 {%k1}9912; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm17 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,36,41,46,51,56,61]9913; AVX512BW-FCP-NEXT: vpermt2w %zmm7, %zmm17, %zmm159914; AVX512BW-FCP-NEXT: vpermi2w %zmm0, %zmm5, %zmm169915; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm4, %zmm149916; AVX512BW-FCP-NEXT: vmovdqu16 %zmm16, %zmm14 {%k1}9917; AVX512BW-FCP-NEXT: vpermt2w %zmm2, %zmm17, %zmm149918; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm16 = [19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14]9919; AVX512BW-FCP-NEXT: # zmm16 = mem[0,1,2,3,0,1,2,3]9920; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm179921; AVX512BW-FCP-NEXT: vpermt2w %zmm10, %zmm16, %zmm179922; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm18 = [35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0]9923; AVX512BW-FCP-NEXT: vmovdqa64 %zmm11, %zmm199924; AVX512BW-FCP-NEXT: vpermt2w %zmm9, %zmm18, %zmm199925; AVX512BW-FCP-NEXT: movl $33546240, %eax # imm = 0x1FFE0009926; AVX512BW-FCP-NEXT: kmovd %eax, %k19927; AVX512BW-FCP-NEXT: vmovdqu16 %zmm17, %zmm19 {%k1}9928; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm17 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,32,37,42,47,52,57,62]9929; AVX512BW-FCP-NEXT: vpermt2w %zmm7, %zmm17, %zmm199930; AVX512BW-FCP-NEXT: vpermi2w %zmm5, %zmm0, %zmm169931; AVX512BW-FCP-NEXT: vpermi2w %zmm3, %zmm4, %zmm189932; AVX512BW-FCP-NEXT: vmovdqu16 %zmm16, %zmm18 {%k1}9933; AVX512BW-FCP-NEXT: vpermt2w %zmm2, %zmm17, %zmm189934; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm16 = [4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0]9935; AVX512BW-FCP-NEXT: vpermt2w %zmm11, %zmm16, %zmm99936; AVX512BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15]9937; AVX512BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]9938; AVX512BW-FCP-NEXT: vpermt2w %zmm10, %zmm11, %zmm19939; AVX512BW-FCP-NEXT: movb $7, %al9940; AVX512BW-FCP-NEXT: kmovd %eax, %k19941; AVX512BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm1 {%k1}9942; AVX512BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm9 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,33,38,43,48,53,58,63]9943; AVX512BW-FCP-NEXT: vpermt2w %zmm7, %zmm9, %zmm19944; AVX512BW-FCP-NEXT: vpermt2w %zmm5, %zmm11, %zmm09945; AVX512BW-FCP-NEXT: vpermt2w %zmm4, %zmm16, %zmm39946; AVX512BW-FCP-NEXT: vmovdqa64 %zmm3, %zmm0 {%k1}9947; AVX512BW-FCP-NEXT: vpermt2w %zmm2, %zmm9, %zmm09948; AVX512BW-FCP-NEXT: vmovdqa64 %zmm6, 64(%rsi)9949; AVX512BW-FCP-NEXT: vmovdqa64 %zmm8, (%rsi)9950; AVX512BW-FCP-NEXT: vmovdqa64 %zmm12, 64(%rdx)9951; AVX512BW-FCP-NEXT: vmovdqa64 %zmm13, (%rdx)9952; AVX512BW-FCP-NEXT: vmovdqa64 %zmm14, 64(%rcx)9953; AVX512BW-FCP-NEXT: vmovdqa64 %zmm15, (%rcx)9954; AVX512BW-FCP-NEXT: vmovdqa64 %zmm18, 64(%r8)9955; AVX512BW-FCP-NEXT: vmovdqa64 %zmm19, (%r8)9956; AVX512BW-FCP-NEXT: vmovdqa64 %zmm0, 64(%r9)9957; AVX512BW-FCP-NEXT: vmovdqa64 %zmm1, (%r9)9958; AVX512BW-FCP-NEXT: vzeroupper9959; AVX512BW-FCP-NEXT: retq9960;9961; AVX512DQ-BW-LABEL: load_i16_stride5_vf64:9962; AVX512DQ-BW: # %bb.0:9963; AVX512DQ-BW-NEXT: vmovdqa64 576(%rdi), %zmm29964; AVX512DQ-BW-NEXT: vmovdqa64 384(%rdi), %zmm49965; AVX512DQ-BW-NEXT: vmovdqa64 320(%rdi), %zmm39966; AVX512DQ-BW-NEXT: vmovdqa64 512(%rdi), %zmm59967; AVX512DQ-BW-NEXT: vmovdqa64 448(%rdi), %zmm09968; AVX512DQ-BW-NEXT: vmovdqa64 256(%rdi), %zmm79969; AVX512DQ-BW-NEXT: vmovdqa64 (%rdi), %zmm99970; AVX512DQ-BW-NEXT: vmovdqa64 64(%rdi), %zmm119971; AVX512DQ-BW-NEXT: vmovdqa64 128(%rdi), %zmm19972; AVX512DQ-BW-NEXT: vmovdqa64 192(%rdi), %zmm109973; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm12 = [16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11]9974; AVX512DQ-BW-NEXT: # zmm12 = mem[0,1,2,3,0,1,2,3]9975; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, %zmm139976; AVX512DQ-BW-NEXT: vpermt2w %zmm10, %zmm12, %zmm139977; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0]9978; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, %zmm89979; AVX512DQ-BW-NEXT: vpermt2w %zmm11, %zmm6, %zmm89980; AVX512DQ-BW-NEXT: movl $67100672, %eax # imm = 0x3FFE0009981; AVX512DQ-BW-NEXT: kmovd %eax, %k19982; AVX512DQ-BW-NEXT: vmovdqu16 %zmm13, %zmm8 {%k1}9983; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm13 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,34,39,44,49,54,59]9984; AVX512DQ-BW-NEXT: vpermt2w %zmm7, %zmm13, %zmm89985; AVX512DQ-BW-NEXT: vpermi2w %zmm5, %zmm0, %zmm129986; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm69987; AVX512DQ-BW-NEXT: vmovdqu16 %zmm12, %zmm6 {%k1}9988; AVX512DQ-BW-NEXT: vpermt2w %zmm2, %zmm13, %zmm69989; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm14 = [49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44]9990; AVX512DQ-BW-NEXT: # zmm14 = mem[0,1,2,3,0,1,2,3]9991; AVX512DQ-BW-NEXT: vmovdqa64 %zmm10, %zmm159992; AVX512DQ-BW-NEXT: vpermt2w %zmm1, %zmm14, %zmm159993; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm12 = [1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0]9994; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, %zmm139995; AVX512DQ-BW-NEXT: vpermt2w %zmm11, %zmm12, %zmm139996; AVX512DQ-BW-NEXT: vmovdqu16 %zmm15, %zmm13 {%k1}9997; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm15 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,35,40,45,50,55,60]9998; AVX512DQ-BW-NEXT: vpermt2w %zmm7, %zmm15, %zmm139999; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm5, %zmm1410000; AVX512DQ-BW-NEXT: vpermi2w %zmm4, %zmm3, %zmm1210001; AVX512DQ-BW-NEXT: vmovdqu16 %zmm14, %zmm12 {%k1}10002; AVX512DQ-BW-NEXT: vpermt2w %zmm2, %zmm15, %zmm1210003; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm16 = [50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45]10004; AVX512DQ-BW-NEXT: # zmm16 = mem[0,1,2,3,0,1,2,3]10005; AVX512DQ-BW-NEXT: vmovdqa64 %zmm10, %zmm1710006; AVX512DQ-BW-NEXT: vpermt2w %zmm1, %zmm16, %zmm1710007; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm14 = [34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0]10008; AVX512DQ-BW-NEXT: vmovdqa64 %zmm11, %zmm1510009; AVX512DQ-BW-NEXT: vpermt2w %zmm9, %zmm14, %zmm1510010; AVX512DQ-BW-NEXT: vmovdqu16 %zmm17, %zmm15 {%k1}10011; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm17 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,36,41,46,51,56,61]10012; AVX512DQ-BW-NEXT: vpermt2w %zmm7, %zmm17, %zmm1510013; AVX512DQ-BW-NEXT: vpermi2w %zmm0, %zmm5, %zmm1610014; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm4, %zmm1410015; AVX512DQ-BW-NEXT: vmovdqu16 %zmm16, %zmm14 {%k1}10016; AVX512DQ-BW-NEXT: vpermt2w %zmm2, %zmm17, %zmm1410017; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm16 = [19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14]10018; AVX512DQ-BW-NEXT: # zmm16 = mem[0,1,2,3,0,1,2,3]10019; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, %zmm1710020; AVX512DQ-BW-NEXT: vpermt2w %zmm10, %zmm16, %zmm1710021; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm18 = [35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0]10022; AVX512DQ-BW-NEXT: vmovdqa64 %zmm11, %zmm1910023; AVX512DQ-BW-NEXT: vpermt2w %zmm9, %zmm18, %zmm1910024; AVX512DQ-BW-NEXT: movl $33546240, %eax # imm = 0x1FFE00010025; AVX512DQ-BW-NEXT: kmovd %eax, %k110026; AVX512DQ-BW-NEXT: vmovdqu16 %zmm17, %zmm19 {%k1}10027; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm17 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,32,37,42,47,52,57,62]10028; AVX512DQ-BW-NEXT: vpermt2w %zmm7, %zmm17, %zmm1910029; AVX512DQ-BW-NEXT: vpermi2w %zmm5, %zmm0, %zmm1610030; AVX512DQ-BW-NEXT: vpermi2w %zmm3, %zmm4, %zmm1810031; AVX512DQ-BW-NEXT: vmovdqu16 %zmm16, %zmm18 {%k1}10032; AVX512DQ-BW-NEXT: vpermt2w %zmm2, %zmm17, %zmm1810033; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} ymm16 = [4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0]10034; AVX512DQ-BW-NEXT: vpermt2w %zmm11, %zmm16, %zmm910035; AVX512DQ-BW-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15]10036; AVX512DQ-BW-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]10037; AVX512DQ-BW-NEXT: vpermt2w %zmm10, %zmm11, %zmm110038; AVX512DQ-BW-NEXT: movb $7, %al10039; AVX512DQ-BW-NEXT: kmovd %eax, %k110040; AVX512DQ-BW-NEXT: vmovdqa64 %zmm9, %zmm1 {%k1}10041; AVX512DQ-BW-NEXT: vpmovsxbw {{.*#+}} zmm9 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,33,38,43,48,53,58,63]10042; AVX512DQ-BW-NEXT: vpermt2w %zmm7, %zmm9, %zmm110043; AVX512DQ-BW-NEXT: vpermt2w %zmm5, %zmm11, %zmm010044; AVX512DQ-BW-NEXT: vpermt2w %zmm4, %zmm16, %zmm310045; AVX512DQ-BW-NEXT: vmovdqa64 %zmm3, %zmm0 {%k1}10046; AVX512DQ-BW-NEXT: vpermt2w %zmm2, %zmm9, %zmm010047; AVX512DQ-BW-NEXT: vmovdqa64 %zmm6, 64(%rsi)10048; AVX512DQ-BW-NEXT: vmovdqa64 %zmm8, (%rsi)10049; AVX512DQ-BW-NEXT: vmovdqa64 %zmm12, 64(%rdx)10050; AVX512DQ-BW-NEXT: vmovdqa64 %zmm13, (%rdx)10051; AVX512DQ-BW-NEXT: vmovdqa64 %zmm14, 64(%rcx)10052; AVX512DQ-BW-NEXT: vmovdqa64 %zmm15, (%rcx)10053; AVX512DQ-BW-NEXT: vmovdqa64 %zmm18, 64(%r8)10054; AVX512DQ-BW-NEXT: vmovdqa64 %zmm19, (%r8)10055; AVX512DQ-BW-NEXT: vmovdqa64 %zmm0, 64(%r9)10056; AVX512DQ-BW-NEXT: vmovdqa64 %zmm1, (%r9)10057; AVX512DQ-BW-NEXT: vzeroupper10058; AVX512DQ-BW-NEXT: retq10059;10060; AVX512DQ-BW-FCP-LABEL: load_i16_stride5_vf64:10061; AVX512DQ-BW-FCP: # %bb.0:10062; AVX512DQ-BW-FCP-NEXT: vmovdqa64 576(%rdi), %zmm210063; AVX512DQ-BW-FCP-NEXT: vmovdqa64 384(%rdi), %zmm410064; AVX512DQ-BW-FCP-NEXT: vmovdqa64 320(%rdi), %zmm310065; AVX512DQ-BW-FCP-NEXT: vmovdqa64 512(%rdi), %zmm510066; AVX512DQ-BW-FCP-NEXT: vmovdqa64 448(%rdi), %zmm010067; AVX512DQ-BW-FCP-NEXT: vmovdqa64 256(%rdi), %zmm710068; AVX512DQ-BW-FCP-NEXT: vmovdqa64 (%rdi), %zmm910069; AVX512DQ-BW-FCP-NEXT: vmovdqa64 64(%rdi), %zmm1110070; AVX512DQ-BW-FCP-NEXT: vmovdqa64 128(%rdi), %zmm110071; AVX512DQ-BW-FCP-NEXT: vmovdqa64 192(%rdi), %zmm1010072; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm12 = [16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0,1,6,11]10073; AVX512DQ-BW-FCP-NEXT: # zmm12 = mem[0,1,2,3,0,1,2,3]10074; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm1310075; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm10, %zmm12, %zmm1310076; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm6 = [0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0]10077; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm810078; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm11, %zmm6, %zmm810079; AVX512DQ-BW-FCP-NEXT: movl $67100672, %eax # imm = 0x3FFE00010080; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k110081; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm13, %zmm8 {%k1}10082; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm13 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,34,39,44,49,54,59]10083; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm7, %zmm13, %zmm810084; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm5, %zmm0, %zmm1210085; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm610086; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm12, %zmm6 {%k1}10087; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm2, %zmm13, %zmm610088; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm14 = [49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0,34,39,44]10089; AVX512DQ-BW-FCP-NEXT: # zmm14 = mem[0,1,2,3,0,1,2,3]10090; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm10, %zmm1510091; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm1, %zmm14, %zmm1510092; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm12 = [1,6,11,16,21,26,31,36,41,46,51,56,61,0,0,0]10093; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm1310094; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm11, %zmm12, %zmm1310095; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm15, %zmm13 {%k1}10096; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm15 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,35,40,45,50,55,60]10097; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm7, %zmm15, %zmm1310098; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm5, %zmm1410099; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm4, %zmm3, %zmm1210100; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm14, %zmm12 {%k1}10101; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm2, %zmm15, %zmm1210102; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm16 = [50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0,35,40,45]10103; AVX512DQ-BW-FCP-NEXT: # zmm16 = mem[0,1,2,3,0,1,2,3]10104; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm10, %zmm1710105; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm1, %zmm16, %zmm1710106; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm14 = [34,39,44,49,54,59,0,5,10,15,20,25,30,0,0,0]10107; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm11, %zmm1510108; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm9, %zmm14, %zmm1510109; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm17, %zmm15 {%k1}10110; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm17 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,36,41,46,51,56,61]10111; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm7, %zmm17, %zmm1510112; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm0, %zmm5, %zmm1610113; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm4, %zmm1410114; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm16, %zmm14 {%k1}10115; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm2, %zmm17, %zmm1410116; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm16 = [19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0,4,9,14]10117; AVX512DQ-BW-FCP-NEXT: # zmm16 = mem[0,1,2,3,0,1,2,3]10118; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, %zmm1710119; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm10, %zmm16, %zmm1710120; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm18 = [35,40,45,50,55,60,1,6,11,16,21,26,31,0,0,0]10121; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm11, %zmm1910122; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm9, %zmm18, %zmm1910123; AVX512DQ-BW-FCP-NEXT: movl $33546240, %eax # imm = 0x1FFE00010124; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k110125; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm17, %zmm19 {%k1}10126; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm17 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,32,37,42,47,52,57,62]10127; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm7, %zmm17, %zmm1910128; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm5, %zmm0, %zmm1610129; AVX512DQ-BW-FCP-NEXT: vpermi2w %zmm3, %zmm4, %zmm1810130; AVX512DQ-BW-FCP-NEXT: vmovdqu16 %zmm16, %zmm18 {%k1}10131; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm2, %zmm17, %zmm1810132; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} ymm16 = [4,9,14,19,24,29,34,39,44,49,54,59,0,0,0,0]10133; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm11, %zmm16, %zmm910134; AVX512DQ-BW-FCP-NEXT: vbroadcasti64x4 {{.*#+}} zmm11 = [20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15,20,25,30,35,40,45,50,55,60,0,0,0,0,5,10,15]10135; AVX512DQ-BW-FCP-NEXT: # zmm11 = mem[0,1,2,3,0,1,2,3]10136; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm10, %zmm11, %zmm110137; AVX512DQ-BW-FCP-NEXT: movb $7, %al10138; AVX512DQ-BW-FCP-NEXT: kmovd %eax, %k110139; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm9, %zmm1 {%k1}10140; AVX512DQ-BW-FCP-NEXT: vpmovsxbw {{.*#+}} zmm9 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,33,38,43,48,53,58,63]10141; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm7, %zmm9, %zmm110142; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm5, %zmm11, %zmm010143; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm4, %zmm16, %zmm310144; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm3, %zmm0 {%k1}10145; AVX512DQ-BW-FCP-NEXT: vpermt2w %zmm2, %zmm9, %zmm010146; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm6, 64(%rsi)10147; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm8, (%rsi)10148; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm12, 64(%rdx)10149; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm13, (%rdx)10150; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm14, 64(%rcx)10151; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm15, (%rcx)10152; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm18, 64(%r8)10153; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm19, (%r8)10154; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm0, 64(%r9)10155; AVX512DQ-BW-FCP-NEXT: vmovdqa64 %zmm1, (%r9)10156; AVX512DQ-BW-FCP-NEXT: vzeroupper10157; AVX512DQ-BW-FCP-NEXT: retq10158 %wide.vec = load <320 x i16>, ptr %in.vec, align 6410159 %strided.vec0 = shufflevector <320 x i16> %wide.vec, <320 x i16> poison, <64 x i32> <i32 0, i32 5, i32 10, i32 15, i32 20, i32 25, i32 30, i32 35, i32 40, i32 45, i32 50, i32 55, i32 60, i32 65, i32 70, i32 75, i32 80, i32 85, i32 90, i32 95, i32 100, i32 105, i32 110, i32 115, i32 120, i32 125, i32 130, i32 135, i32 140, i32 145, i32 150, i32 155, i32 160, i32 165, i32 170, i32 175, i32 180, i32 185, i32 190, i32 195, i32 200, i32 205, i32 210, i32 215, i32 220, i32 225, i32 230, i32 235, i32 240, i32 245, i32 250, i32 255, i32 260, i32 265, i32 270, i32 275, i32 280, i32 285, i32 290, i32 295, i32 300, i32 305, i32 310, i32 315>10160 %strided.vec1 = shufflevector <320 x i16> %wide.vec, <320 x i16> poison, <64 x i32> <i32 1, i32 6, i32 11, i32 16, i32 21, i32 26, i32 31, i32 36, i32 41, i32 46, i32 51, i32 56, i32 61, i32 66, i32 71, i32 76, i32 81, i32 86, i32 91, i32 96, i32 101, i32 106, i32 111, i32 116, i32 121, i32 126, i32 131, i32 136, i32 141, i32 146, i32 151, i32 156, i32 161, i32 166, i32 171, i32 176, i32 181, i32 186, i32 191, i32 196, i32 201, i32 206, i32 211, i32 216, i32 221, i32 226, i32 231, i32 236, i32 241, i32 246, i32 251, i32 256, i32 261, i32 266, i32 271, i32 276, i32 281, i32 286, i32 291, i32 296, i32 301, i32 306, i32 311, i32 316>10161 %strided.vec2 = shufflevector <320 x i16> %wide.vec, <320 x i16> poison, <64 x i32> <i32 2, i32 7, i32 12, i32 17, i32 22, i32 27, i32 32, i32 37, i32 42, i32 47, i32 52, i32 57, i32 62, i32 67, i32 72, i32 77, i32 82, i32 87, i32 92, i32 97, i32 102, i32 107, i32 112, i32 117, i32 122, i32 127, i32 132, i32 137, i32 142, i32 147, i32 152, i32 157, i32 162, i32 167, i32 172, i32 177, i32 182, i32 187, i32 192, i32 197, i32 202, i32 207, i32 212, i32 217, i32 222, i32 227, i32 232, i32 237, i32 242, i32 247, i32 252, i32 257, i32 262, i32 267, i32 272, i32 277, i32 282, i32 287, i32 292, i32 297, i32 302, i32 307, i32 312, i32 317>10162 %strided.vec3 = shufflevector <320 x i16> %wide.vec, <320 x i16> poison, <64 x i32> <i32 3, i32 8, i32 13, i32 18, i32 23, i32 28, i32 33, i32 38, i32 43, i32 48, i32 53, i32 58, i32 63, i32 68, i32 73, i32 78, i32 83, i32 88, i32 93, i32 98, i32 103, i32 108, i32 113, i32 118, i32 123, i32 128, i32 133, i32 138, i32 143, i32 148, i32 153, i32 158, i32 163, i32 168, i32 173, i32 178, i32 183, i32 188, i32 193, i32 198, i32 203, i32 208, i32 213, i32 218, i32 223, i32 228, i32 233, i32 238, i32 243, i32 248, i32 253, i32 258, i32 263, i32 268, i32 273, i32 278, i32 283, i32 288, i32 293, i32 298, i32 303, i32 308, i32 313, i32 318>10163 %strided.vec4 = shufflevector <320 x i16> %wide.vec, <320 x i16> poison, <64 x i32> <i32 4, i32 9, i32 14, i32 19, i32 24, i32 29, i32 34, i32 39, i32 44, i32 49, i32 54, i32 59, i32 64, i32 69, i32 74, i32 79, i32 84, i32 89, i32 94, i32 99, i32 104, i32 109, i32 114, i32 119, i32 124, i32 129, i32 134, i32 139, i32 144, i32 149, i32 154, i32 159, i32 164, i32 169, i32 174, i32 179, i32 184, i32 189, i32 194, i32 199, i32 204, i32 209, i32 214, i32 219, i32 224, i32 229, i32 234, i32 239, i32 244, i32 249, i32 254, i32 259, i32 264, i32 269, i32 274, i32 279, i32 284, i32 289, i32 294, i32 299, i32 304, i32 309, i32 314, i32 319>10164 store <64 x i16> %strided.vec0, ptr %out.vec0, align 6410165 store <64 x i16> %strided.vec1, ptr %out.vec1, align 6410166 store <64 x i16> %strided.vec2, ptr %out.vec2, align 6410167 store <64 x i16> %strided.vec3, ptr %out.vec3, align 6410168 store <64 x i16> %strided.vec4, ptr %out.vec4, align 6410169 ret void10170}10171