brintos

brintos / llvm-project-archived public Read only

0
0
Text · 316.8 KiB · 18d394e Raw
8474 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=sse2    | FileCheck %s --check-prefixes=SSE23; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=sse4.2  | FileCheck %s --check-prefixes=SSE44; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx     | FileCheck %s --check-prefixes=AVX,AVX15; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx2    | FileCheck %s --check-prefixes=AVX,AVX26; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx512f | FileCheck %s --check-prefixes=AVX512,AVX512F7; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx512vl | FileCheck %s --check-prefixes=AVX512VL,AVX512FVL8; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx512bw | FileCheck %s --check-prefixes=AVX512,AVX512BW9; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx512vl,avx512bw | FileCheck %s --check-prefixes=AVX512VL,AVX512BWVL10 11define void @truncstore_v8i64_v8i32(<8 x i64> %x, ptr %p, <8 x i32> %mask) {12; SSE2-LABEL: truncstore_v8i64_v8i32:13; SSE2:       # %bb.0:14; SSE2-NEXT:    pxor %xmm7, %xmm715; SSE2-NEXT:    movdqa {{.*#+}} xmm9 = [2147483647,2147483647]16; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648]17; SSE2-NEXT:    movdqa %xmm2, %xmm618; SSE2-NEXT:    pxor %xmm8, %xmm619; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm6[1,1,3,3]20; SSE2-NEXT:    pcmpeqd %xmm7, %xmm1121; SSE2-NEXT:    movdqa {{.*#+}} xmm10 = [4294967295,4294967295]22; SSE2-NEXT:    movdqa %xmm10, %xmm1223; SSE2-NEXT:    pcmpgtd %xmm6, %xmm1224; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm12[0,0,2,2]25; SSE2-NEXT:    pand %xmm11, %xmm1326; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm12[1,1,3,3]27; SSE2-NEXT:    por %xmm13, %xmm628; SSE2-NEXT:    pand %xmm6, %xmm229; SSE2-NEXT:    pandn %xmm9, %xmm630; SSE2-NEXT:    por %xmm2, %xmm631; SSE2-NEXT:    movdqa %xmm3, %xmm232; SSE2-NEXT:    pxor %xmm8, %xmm233; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm2[1,1,3,3]34; SSE2-NEXT:    pcmpeqd %xmm7, %xmm1135; SSE2-NEXT:    movdqa %xmm10, %xmm1236; SSE2-NEXT:    pcmpgtd %xmm2, %xmm1237; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm12[0,0,2,2]38; SSE2-NEXT:    pand %xmm11, %xmm1339; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm12[1,1,3,3]40; SSE2-NEXT:    por %xmm13, %xmm241; SSE2-NEXT:    pand %xmm2, %xmm342; SSE2-NEXT:    pandn %xmm9, %xmm243; SSE2-NEXT:    por %xmm3, %xmm244; SSE2-NEXT:    movdqa %xmm0, %xmm345; SSE2-NEXT:    pxor %xmm8, %xmm346; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm3[1,1,3,3]47; SSE2-NEXT:    pcmpeqd %xmm7, %xmm1148; SSE2-NEXT:    movdqa %xmm10, %xmm1249; SSE2-NEXT:    pcmpgtd %xmm3, %xmm1250; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm12[0,0,2,2]51; SSE2-NEXT:    pand %xmm11, %xmm1352; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm12[1,1,3,3]53; SSE2-NEXT:    por %xmm13, %xmm354; SSE2-NEXT:    pand %xmm3, %xmm055; SSE2-NEXT:    pandn %xmm9, %xmm356; SSE2-NEXT:    por %xmm0, %xmm357; SSE2-NEXT:    movdqa %xmm1, %xmm058; SSE2-NEXT:    pxor %xmm8, %xmm059; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm0[1,1,3,3]60; SSE2-NEXT:    pcmpeqd %xmm7, %xmm1161; SSE2-NEXT:    pcmpgtd %xmm0, %xmm1062; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm10[0,0,2,2]63; SSE2-NEXT:    pand %xmm11, %xmm064; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[1,1,3,3]65; SSE2-NEXT:    por %xmm0, %xmm1166; SSE2-NEXT:    pand %xmm11, %xmm167; SSE2-NEXT:    pandn %xmm9, %xmm1168; SSE2-NEXT:    por %xmm1, %xmm1169; SSE2-NEXT:    movdqa {{.*#+}} xmm0 = [18446744071562067968,18446744071562067968]70; SSE2-NEXT:    movdqa %xmm11, %xmm171; SSE2-NEXT:    pxor %xmm8, %xmm172; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm1[1,1,3,3]73; SSE2-NEXT:    pcmpeqd %xmm9, %xmm974; SSE2-NEXT:    pcmpeqd %xmm9, %xmm1275; SSE2-NEXT:    movdqa {{.*#+}} xmm10 = [18446744069414584320,18446744069414584320]76; SSE2-NEXT:    pcmpgtd %xmm10, %xmm177; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm1[0,0,2,2]78; SSE2-NEXT:    pand %xmm12, %xmm1379; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm1[1,1,3,3]80; SSE2-NEXT:    por %xmm13, %xmm1281; SSE2-NEXT:    pand %xmm12, %xmm1182; SSE2-NEXT:    pandn %xmm0, %xmm1283; SSE2-NEXT:    por %xmm11, %xmm1284; SSE2-NEXT:    movdqa %xmm3, %xmm185; SSE2-NEXT:    pxor %xmm8, %xmm186; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm1[1,1,3,3]87; SSE2-NEXT:    pcmpeqd %xmm9, %xmm1188; SSE2-NEXT:    pcmpgtd %xmm10, %xmm189; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm1[0,0,2,2]90; SSE2-NEXT:    pand %xmm11, %xmm1391; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]92; SSE2-NEXT:    por %xmm13, %xmm193; SSE2-NEXT:    pand %xmm1, %xmm394; SSE2-NEXT:    pandn %xmm0, %xmm195; SSE2-NEXT:    por %xmm3, %xmm196; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,2],xmm12[0,2]97; SSE2-NEXT:    movdqa %xmm2, %xmm1198; SSE2-NEXT:    pxor %xmm8, %xmm1199; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[1,1,3,3]100; SSE2-NEXT:    pcmpeqd %xmm9, %xmm12101; SSE2-NEXT:    pcmpgtd %xmm10, %xmm11102; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm11[0,0,2,2]103; SSE2-NEXT:    pand %xmm12, %xmm3104; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm11[1,1,3,3]105; SSE2-NEXT:    pxor %xmm6, %xmm8106; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm8[1,1,3,3]107; SSE2-NEXT:    pcmpeqd %xmm9, %xmm12108; SSE2-NEXT:    pcmpgtd %xmm10, %xmm8109; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm8[0,0,2,2]110; SSE2-NEXT:    pand %xmm12, %xmm9111; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[1,1,3,3]112; SSE2-NEXT:    pcmpeqd %xmm7, %xmm5113; SSE2-NEXT:    pcmpeqd %xmm7, %xmm4114; SSE2-NEXT:    packssdw %xmm5, %xmm4115; SSE2-NEXT:    packsswb %xmm4, %xmm4116; SSE2-NEXT:    pmovmskb %xmm4, %eax117; SSE2-NEXT:    notl %eax118; SSE2-NEXT:    testb $1, %al119; SSE2-NEXT:    je .LBB0_2120; SSE2-NEXT:  # %bb.1: # %cond.store121; SSE2-NEXT:    movss %xmm1, (%rdi)122; SSE2-NEXT:  .LBB0_2: # %else123; SSE2-NEXT:    por %xmm11, %xmm3124; SSE2-NEXT:    por %xmm8, %xmm9125; SSE2-NEXT:    testb $2, %al126; SSE2-NEXT:    je .LBB0_4127; SSE2-NEXT:  # %bb.3: # %cond.store1128; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm1[1,1,1,1]129; SSE2-NEXT:    movd %xmm4, 4(%rdi)130; SSE2-NEXT:  .LBB0_4: # %else2131; SSE2-NEXT:    pand %xmm3, %xmm2132; SSE2-NEXT:    pandn %xmm0, %xmm3133; SSE2-NEXT:    pand %xmm9, %xmm6134; SSE2-NEXT:    pandn %xmm0, %xmm9135; SSE2-NEXT:    testb $4, %al136; SSE2-NEXT:    je .LBB0_6137; SSE2-NEXT:  # %bb.5: # %cond.store3138; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]139; SSE2-NEXT:    movd %xmm0, 8(%rdi)140; SSE2-NEXT:  .LBB0_6: # %else4141; SSE2-NEXT:    por %xmm3, %xmm2142; SSE2-NEXT:    por %xmm9, %xmm6143; SSE2-NEXT:    testb $8, %al144; SSE2-NEXT:    je .LBB0_8145; SSE2-NEXT:  # %bb.7: # %cond.store5146; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]147; SSE2-NEXT:    movd %xmm0, 12(%rdi)148; SSE2-NEXT:  .LBB0_8: # %else6149; SSE2-NEXT:    shufps {{.*#+}} xmm6 = xmm6[0,2],xmm2[0,2]150; SSE2-NEXT:    testb $16, %al151; SSE2-NEXT:    jne .LBB0_9152; SSE2-NEXT:  # %bb.10: # %else8153; SSE2-NEXT:    testb $32, %al154; SSE2-NEXT:    jne .LBB0_11155; SSE2-NEXT:  .LBB0_12: # %else10156; SSE2-NEXT:    testb $64, %al157; SSE2-NEXT:    jne .LBB0_13158; SSE2-NEXT:  .LBB0_14: # %else12159; SSE2-NEXT:    testb $-128, %al160; SSE2-NEXT:    jne .LBB0_15161; SSE2-NEXT:  .LBB0_16: # %else14162; SSE2-NEXT:    retq163; SSE2-NEXT:  .LBB0_9: # %cond.store7164; SSE2-NEXT:    movss %xmm6, 16(%rdi)165; SSE2-NEXT:    testb $32, %al166; SSE2-NEXT:    je .LBB0_12167; SSE2-NEXT:  .LBB0_11: # %cond.store9168; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm6[1,1,1,1]169; SSE2-NEXT:    movd %xmm0, 20(%rdi)170; SSE2-NEXT:    testb $64, %al171; SSE2-NEXT:    je .LBB0_14172; SSE2-NEXT:  .LBB0_13: # %cond.store11173; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm6[2,3,2,3]174; SSE2-NEXT:    movd %xmm0, 24(%rdi)175; SSE2-NEXT:    testb $-128, %al176; SSE2-NEXT:    je .LBB0_16177; SSE2-NEXT:  .LBB0_15: # %cond.store13178; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm6[3,3,3,3]179; SSE2-NEXT:    movd %xmm0, 28(%rdi)180; SSE2-NEXT:    retq181;182; SSE4-LABEL: truncstore_v8i64_v8i32:183; SSE4:       # %bb.0:184; SSE4-NEXT:    movdqa %xmm0, %xmm6185; SSE4-NEXT:    pxor %xmm7, %xmm7186; SSE4-NEXT:    pmovsxdq {{.*#+}} xmm10 = [2147483647,2147483647]187; SSE4-NEXT:    movdqa %xmm10, %xmm0188; SSE4-NEXT:    pcmpgtq %xmm2, %xmm0189; SSE4-NEXT:    movdqa %xmm10, %xmm8190; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm8191; SSE4-NEXT:    movdqa %xmm10, %xmm0192; SSE4-NEXT:    pcmpgtq %xmm3, %xmm0193; SSE4-NEXT:    movdqa %xmm10, %xmm9194; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm9195; SSE4-NEXT:    movdqa %xmm10, %xmm0196; SSE4-NEXT:    pcmpgtq %xmm6, %xmm0197; SSE4-NEXT:    movdqa %xmm10, %xmm3198; SSE4-NEXT:    blendvpd %xmm0, %xmm6, %xmm3199; SSE4-NEXT:    movdqa %xmm10, %xmm0200; SSE4-NEXT:    pcmpgtq %xmm1, %xmm0201; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm10202; SSE4-NEXT:    pmovsxdq {{.*#+}} xmm1 = [18446744071562067968,18446744071562067968]203; SSE4-NEXT:    movapd %xmm10, %xmm0204; SSE4-NEXT:    pcmpgtq %xmm1, %xmm0205; SSE4-NEXT:    movdqa %xmm1, %xmm6206; SSE4-NEXT:    blendvpd %xmm0, %xmm10, %xmm6207; SSE4-NEXT:    movapd %xmm3, %xmm0208; SSE4-NEXT:    pcmpgtq %xmm1, %xmm0209; SSE4-NEXT:    movdqa %xmm1, %xmm2210; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm2211; SSE4-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,2],xmm6[0,2]212; SSE4-NEXT:    movapd %xmm9, %xmm0213; SSE4-NEXT:    pcmpgtq %xmm1, %xmm0214; SSE4-NEXT:    movdqa %xmm1, %xmm3215; SSE4-NEXT:    blendvpd %xmm0, %xmm9, %xmm3216; SSE4-NEXT:    movapd %xmm8, %xmm0217; SSE4-NEXT:    pcmpgtq %xmm1, %xmm0218; SSE4-NEXT:    blendvpd %xmm0, %xmm8, %xmm1219; SSE4-NEXT:    pcmpeqd %xmm7, %xmm5220; SSE4-NEXT:    pcmpeqd %xmm7, %xmm4221; SSE4-NEXT:    packssdw %xmm5, %xmm4222; SSE4-NEXT:    packsswb %xmm4, %xmm4223; SSE4-NEXT:    pmovmskb %xmm4, %eax224; SSE4-NEXT:    notl %eax225; SSE4-NEXT:    testb $1, %al226; SSE4-NEXT:    jne .LBB0_1227; SSE4-NEXT:  # %bb.2: # %else228; SSE4-NEXT:    testb $2, %al229; SSE4-NEXT:    jne .LBB0_3230; SSE4-NEXT:  .LBB0_4: # %else2231; SSE4-NEXT:    testb $4, %al232; SSE4-NEXT:    jne .LBB0_5233; SSE4-NEXT:  .LBB0_6: # %else4234; SSE4-NEXT:    testb $8, %al235; SSE4-NEXT:    je .LBB0_8236; SSE4-NEXT:  .LBB0_7: # %cond.store5237; SSE4-NEXT:    extractps $3, %xmm2, 12(%rdi)238; SSE4-NEXT:  .LBB0_8: # %else6239; SSE4-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,2],xmm3[0,2]240; SSE4-NEXT:    testb $16, %al241; SSE4-NEXT:    jne .LBB0_9242; SSE4-NEXT:  # %bb.10: # %else8243; SSE4-NEXT:    testb $32, %al244; SSE4-NEXT:    jne .LBB0_11245; SSE4-NEXT:  .LBB0_12: # %else10246; SSE4-NEXT:    testb $64, %al247; SSE4-NEXT:    jne .LBB0_13248; SSE4-NEXT:  .LBB0_14: # %else12249; SSE4-NEXT:    testb $-128, %al250; SSE4-NEXT:    jne .LBB0_15251; SSE4-NEXT:  .LBB0_16: # %else14252; SSE4-NEXT:    retq253; SSE4-NEXT:  .LBB0_1: # %cond.store254; SSE4-NEXT:    movss %xmm2, (%rdi)255; SSE4-NEXT:    testb $2, %al256; SSE4-NEXT:    je .LBB0_4257; SSE4-NEXT:  .LBB0_3: # %cond.store1258; SSE4-NEXT:    extractps $1, %xmm2, 4(%rdi)259; SSE4-NEXT:    testb $4, %al260; SSE4-NEXT:    je .LBB0_6261; SSE4-NEXT:  .LBB0_5: # %cond.store3262; SSE4-NEXT:    extractps $2, %xmm2, 8(%rdi)263; SSE4-NEXT:    testb $8, %al264; SSE4-NEXT:    jne .LBB0_7265; SSE4-NEXT:    jmp .LBB0_8266; SSE4-NEXT:  .LBB0_9: # %cond.store7267; SSE4-NEXT:    movss %xmm1, 16(%rdi)268; SSE4-NEXT:    testb $32, %al269; SSE4-NEXT:    je .LBB0_12270; SSE4-NEXT:  .LBB0_11: # %cond.store9271; SSE4-NEXT:    extractps $1, %xmm1, 20(%rdi)272; SSE4-NEXT:    testb $64, %al273; SSE4-NEXT:    je .LBB0_14274; SSE4-NEXT:  .LBB0_13: # %cond.store11275; SSE4-NEXT:    extractps $2, %xmm1, 24(%rdi)276; SSE4-NEXT:    testb $-128, %al277; SSE4-NEXT:    je .LBB0_16278; SSE4-NEXT:  .LBB0_15: # %cond.store13279; SSE4-NEXT:    extractps $3, %xmm1, 28(%rdi)280; SSE4-NEXT:    retq281;282; AVX1-LABEL: truncstore_v8i64_v8i32:283; AVX1:       # %bb.0:284; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm3285; AVX1-NEXT:    vpxor %xmm4, %xmm4, %xmm4286; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm3, %xmm3287; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm5, %xmm5288; AVX1-NEXT:    vpxor %xmm5, %xmm3, %xmm3289; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm2, %xmm2290; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm2291; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm2, %ymm2292; AVX1-NEXT:    vmovddup {{.*#+}} xmm3 = [2147483647,2147483647]293; AVX1-NEXT:    # xmm3 = mem[0,0]294; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm3, %xmm4295; AVX1-NEXT:    vblendvpd %xmm4, %xmm1, %xmm3, %xmm4296; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm1297; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm3, %xmm5298; AVX1-NEXT:    vblendvpd %xmm5, %xmm1, %xmm3, %xmm1299; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm3, %xmm5300; AVX1-NEXT:    vblendvpd %xmm5, %xmm0, %xmm3, %xmm5301; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0302; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm3, %xmm6303; AVX1-NEXT:    vblendvpd %xmm6, %xmm0, %xmm3, %xmm0304; AVX1-NEXT:    vmovddup {{.*#+}} xmm3 = [18446744071562067968,18446744071562067968]305; AVX1-NEXT:    # xmm3 = mem[0,0]306; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm0, %xmm6307; AVX1-NEXT:    vblendvpd %xmm6, %xmm0, %xmm3, %xmm0308; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm5, %xmm6309; AVX1-NEXT:    vblendvpd %xmm6, %xmm5, %xmm3, %xmm5310; AVX1-NEXT:    vshufps {{.*#+}} xmm0 = xmm5[0,2],xmm0[0,2]311; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm1, %xmm5312; AVX1-NEXT:    vblendvpd %xmm5, %xmm1, %xmm3, %xmm1313; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm4, %xmm5314; AVX1-NEXT:    vblendvpd %xmm5, %xmm4, %xmm3, %xmm3315; AVX1-NEXT:    vshufps {{.*#+}} xmm1 = xmm3[0,2],xmm1[0,2]316; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0317; AVX1-NEXT:    vmaskmovps %ymm0, %ymm2, (%rdi)318; AVX1-NEXT:    vzeroupper319; AVX1-NEXT:    retq320;321; AVX2-LABEL: truncstore_v8i64_v8i32:322; AVX2:       # %bb.0:323; AVX2-NEXT:    vpxor %xmm3, %xmm3, %xmm3324; AVX2-NEXT:    vpcmpeqd %ymm3, %ymm2, %ymm2325; AVX2-NEXT:    vpcmpeqd %ymm3, %ymm3, %ymm3326; AVX2-NEXT:    vpxor %ymm3, %ymm2, %ymm2327; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm3 = [2147483647,2147483647,2147483647,2147483647]328; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm3, %ymm4329; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm3, %ymm0330; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm3, %ymm4331; AVX2-NEXT:    vblendvpd %ymm4, %ymm1, %ymm3, %ymm1332; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm3 = [18446744071562067968,18446744071562067968,18446744071562067968,18446744071562067968]333; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm1, %ymm4334; AVX2-NEXT:    vblendvpd %ymm4, %ymm1, %ymm3, %ymm1335; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm0, %ymm4336; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm3, %ymm0337; AVX2-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[0,2],ymm1[0,2],ymm0[4,6],ymm1[4,6]338; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,2,1,3]339; AVX2-NEXT:    vpmaskmovd %ymm0, %ymm2, (%rdi)340; AVX2-NEXT:    vzeroupper341; AVX2-NEXT:    retq342;343; AVX512-LABEL: truncstore_v8i64_v8i32:344; AVX512:       # %bb.0:345; AVX512-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1346; AVX512-NEXT:    vptestmd %zmm1, %zmm1, %k1347; AVX512-NEXT:    vpminsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm0348; AVX512-NEXT:    vpmaxsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm0349; AVX512-NEXT:    vpmovqd %zmm0, (%rdi) {%k1}350; AVX512-NEXT:    vzeroupper351; AVX512-NEXT:    retq352;353; AVX512VL-LABEL: truncstore_v8i64_v8i32:354; AVX512VL:       # %bb.0:355; AVX512VL-NEXT:    vptestmd %ymm1, %ymm1, %k1356; AVX512VL-NEXT:    vpminsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm0357; AVX512VL-NEXT:    vpmaxsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm0358; AVX512VL-NEXT:    vpmovqd %zmm0, (%rdi) {%k1}359; AVX512VL-NEXT:    vzeroupper360; AVX512VL-NEXT:    retq361  %a = icmp ne <8 x i32> %mask, zeroinitializer362  %b = icmp slt <8 x i64> %x, <i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647>363  %c = select <8 x i1> %b, <8 x i64> %x, <8 x i64> <i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647>364  %d = icmp sgt <8 x i64> %c, <i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648>365  %e = select <8 x i1> %d, <8 x i64> %c, <8 x i64> <i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648>366  %f = trunc <8 x i64> %e to <8 x i32>367  call void @llvm.masked.store.v8i32.p0(<8 x i32> %f, ptr %p, i32 1, <8 x i1> %a)368  ret void369}370 371define void @truncstore_v8i64_v8i16(<8 x i64> %x, ptr %p, <8 x i32> %mask) {372; SSE2-LABEL: truncstore_v8i64_v8i16:373; SSE2:       # %bb.0:374; SSE2-NEXT:    pxor %xmm6, %xmm6375; SSE2-NEXT:    movdqa {{.*#+}} xmm9 = [32767,32767]376; SSE2-NEXT:    movdqa {{.*#+}} xmm7 = [2147483648,2147483648]377; SSE2-NEXT:    movdqa %xmm2, %xmm8378; SSE2-NEXT:    pxor %xmm7, %xmm8379; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm8[1,1,3,3]380; SSE2-NEXT:    pcmpeqd %xmm6, %xmm11381; SSE2-NEXT:    movdqa {{.*#+}} xmm10 = [2147516415,2147516415]382; SSE2-NEXT:    movdqa %xmm10, %xmm12383; SSE2-NEXT:    pcmpgtd %xmm8, %xmm12384; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm12[0,0,2,2]385; SSE2-NEXT:    pand %xmm11, %xmm13386; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm12[1,1,3,3]387; SSE2-NEXT:    por %xmm13, %xmm8388; SSE2-NEXT:    pand %xmm8, %xmm2389; SSE2-NEXT:    pandn %xmm9, %xmm8390; SSE2-NEXT:    por %xmm2, %xmm8391; SSE2-NEXT:    movdqa %xmm3, %xmm2392; SSE2-NEXT:    pxor %xmm7, %xmm2393; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm2[1,1,3,3]394; SSE2-NEXT:    pcmpeqd %xmm6, %xmm11395; SSE2-NEXT:    movdqa %xmm10, %xmm12396; SSE2-NEXT:    pcmpgtd %xmm2, %xmm12397; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm12[0,0,2,2]398; SSE2-NEXT:    pand %xmm11, %xmm13399; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm12[1,1,3,3]400; SSE2-NEXT:    por %xmm13, %xmm2401; SSE2-NEXT:    pand %xmm2, %xmm3402; SSE2-NEXT:    pandn %xmm9, %xmm2403; SSE2-NEXT:    por %xmm3, %xmm2404; SSE2-NEXT:    movdqa %xmm0, %xmm3405; SSE2-NEXT:    pxor %xmm7, %xmm3406; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm3[1,1,3,3]407; SSE2-NEXT:    pcmpeqd %xmm6, %xmm11408; SSE2-NEXT:    movdqa %xmm10, %xmm12409; SSE2-NEXT:    pcmpgtd %xmm3, %xmm12410; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm12[0,0,2,2]411; SSE2-NEXT:    pand %xmm11, %xmm13412; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm12[1,1,3,3]413; SSE2-NEXT:    por %xmm13, %xmm3414; SSE2-NEXT:    pand %xmm3, %xmm0415; SSE2-NEXT:    pandn %xmm9, %xmm3416; SSE2-NEXT:    por %xmm0, %xmm3417; SSE2-NEXT:    movdqa %xmm1, %xmm0418; SSE2-NEXT:    pxor %xmm7, %xmm0419; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm0[1,1,3,3]420; SSE2-NEXT:    pcmpeqd %xmm6, %xmm11421; SSE2-NEXT:    pcmpgtd %xmm0, %xmm10422; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm10[0,0,2,2]423; SSE2-NEXT:    pand %xmm11, %xmm0424; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[1,1,3,3]425; SSE2-NEXT:    por %xmm0, %xmm11426; SSE2-NEXT:    pand %xmm11, %xmm1427; SSE2-NEXT:    pandn %xmm9, %xmm11428; SSE2-NEXT:    por %xmm1, %xmm11429; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [18446744073709518848,18446744073709518848]430; SSE2-NEXT:    movdqa %xmm11, %xmm0431; SSE2-NEXT:    pxor %xmm7, %xmm0432; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm0[1,1,3,3]433; SSE2-NEXT:    pcmpeqd %xmm9, %xmm9434; SSE2-NEXT:    pcmpeqd %xmm9, %xmm12435; SSE2-NEXT:    movdqa {{.*#+}} xmm10 = [18446744071562035200,18446744071562035200]436; SSE2-NEXT:    pcmpgtd %xmm10, %xmm0437; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm0[0,0,2,2]438; SSE2-NEXT:    pand %xmm12, %xmm13439; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm0[1,1,3,3]440; SSE2-NEXT:    por %xmm13, %xmm12441; SSE2-NEXT:    pand %xmm12, %xmm11442; SSE2-NEXT:    pandn %xmm1, %xmm12443; SSE2-NEXT:    por %xmm11, %xmm12444; SSE2-NEXT:    movdqa %xmm3, %xmm0445; SSE2-NEXT:    pxor %xmm7, %xmm0446; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm0[1,1,3,3]447; SSE2-NEXT:    pcmpeqd %xmm9, %xmm11448; SSE2-NEXT:    pcmpgtd %xmm10, %xmm0449; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm0[0,0,2,2]450; SSE2-NEXT:    pand %xmm11, %xmm13451; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]452; SSE2-NEXT:    por %xmm13, %xmm0453; SSE2-NEXT:    pand %xmm0, %xmm3454; SSE2-NEXT:    pandn %xmm1, %xmm0455; SSE2-NEXT:    por %xmm3, %xmm0456; SSE2-NEXT:    packssdw %xmm12, %xmm0457; SSE2-NEXT:    movdqa %xmm2, %xmm3458; SSE2-NEXT:    pxor %xmm7, %xmm3459; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm3[1,1,3,3]460; SSE2-NEXT:    pcmpeqd %xmm9, %xmm11461; SSE2-NEXT:    pcmpgtd %xmm10, %xmm3462; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm3[0,0,2,2]463; SSE2-NEXT:    pand %xmm11, %xmm12464; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]465; SSE2-NEXT:    por %xmm12, %xmm3466; SSE2-NEXT:    pand %xmm3, %xmm2467; SSE2-NEXT:    pandn %xmm1, %xmm3468; SSE2-NEXT:    por %xmm2, %xmm3469; SSE2-NEXT:    pxor %xmm8, %xmm7470; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm7[1,1,3,3]471; SSE2-NEXT:    pcmpeqd %xmm9, %xmm2472; SSE2-NEXT:    pcmpgtd %xmm10, %xmm7473; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm7[0,0,2,2]474; SSE2-NEXT:    pand %xmm2, %xmm9475; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm7[1,1,3,3]476; SSE2-NEXT:    por %xmm9, %xmm2477; SSE2-NEXT:    pand %xmm2, %xmm8478; SSE2-NEXT:    pandn %xmm1, %xmm2479; SSE2-NEXT:    por %xmm8, %xmm2480; SSE2-NEXT:    packssdw %xmm3, %xmm2481; SSE2-NEXT:    packssdw %xmm2, %xmm0482; SSE2-NEXT:    pcmpeqd %xmm6, %xmm5483; SSE2-NEXT:    pcmpeqd %xmm6, %xmm4484; SSE2-NEXT:    packssdw %xmm5, %xmm4485; SSE2-NEXT:    packsswb %xmm4, %xmm4486; SSE2-NEXT:    pmovmskb %xmm4, %eax487; SSE2-NEXT:    notl %eax488; SSE2-NEXT:    testb $1, %al489; SSE2-NEXT:    jne .LBB1_1490; SSE2-NEXT:  # %bb.2: # %else491; SSE2-NEXT:    testb $2, %al492; SSE2-NEXT:    jne .LBB1_3493; SSE2-NEXT:  .LBB1_4: # %else2494; SSE2-NEXT:    testb $4, %al495; SSE2-NEXT:    jne .LBB1_5496; SSE2-NEXT:  .LBB1_6: # %else4497; SSE2-NEXT:    testb $8, %al498; SSE2-NEXT:    jne .LBB1_7499; SSE2-NEXT:  .LBB1_8: # %else6500; SSE2-NEXT:    testb $16, %al501; SSE2-NEXT:    jne .LBB1_9502; SSE2-NEXT:  .LBB1_10: # %else8503; SSE2-NEXT:    testb $32, %al504; SSE2-NEXT:    jne .LBB1_11505; SSE2-NEXT:  .LBB1_12: # %else10506; SSE2-NEXT:    testb $64, %al507; SSE2-NEXT:    jne .LBB1_13508; SSE2-NEXT:  .LBB1_14: # %else12509; SSE2-NEXT:    testb $-128, %al510; SSE2-NEXT:    jne .LBB1_15511; SSE2-NEXT:  .LBB1_16: # %else14512; SSE2-NEXT:    retq513; SSE2-NEXT:  .LBB1_1: # %cond.store514; SSE2-NEXT:    movd %xmm0, %ecx515; SSE2-NEXT:    movw %cx, (%rdi)516; SSE2-NEXT:    testb $2, %al517; SSE2-NEXT:    je .LBB1_4518; SSE2-NEXT:  .LBB1_3: # %cond.store1519; SSE2-NEXT:    pextrw $1, %xmm0, %ecx520; SSE2-NEXT:    movw %cx, 2(%rdi)521; SSE2-NEXT:    testb $4, %al522; SSE2-NEXT:    je .LBB1_6523; SSE2-NEXT:  .LBB1_5: # %cond.store3524; SSE2-NEXT:    pextrw $2, %xmm0, %ecx525; SSE2-NEXT:    movw %cx, 4(%rdi)526; SSE2-NEXT:    testb $8, %al527; SSE2-NEXT:    je .LBB1_8528; SSE2-NEXT:  .LBB1_7: # %cond.store5529; SSE2-NEXT:    pextrw $3, %xmm0, %ecx530; SSE2-NEXT:    movw %cx, 6(%rdi)531; SSE2-NEXT:    testb $16, %al532; SSE2-NEXT:    je .LBB1_10533; SSE2-NEXT:  .LBB1_9: # %cond.store7534; SSE2-NEXT:    pextrw $4, %xmm0, %ecx535; SSE2-NEXT:    movw %cx, 8(%rdi)536; SSE2-NEXT:    testb $32, %al537; SSE2-NEXT:    je .LBB1_12538; SSE2-NEXT:  .LBB1_11: # %cond.store9539; SSE2-NEXT:    pextrw $5, %xmm0, %ecx540; SSE2-NEXT:    movw %cx, 10(%rdi)541; SSE2-NEXT:    testb $64, %al542; SSE2-NEXT:    je .LBB1_14543; SSE2-NEXT:  .LBB1_13: # %cond.store11544; SSE2-NEXT:    pextrw $6, %xmm0, %ecx545; SSE2-NEXT:    movw %cx, 12(%rdi)546; SSE2-NEXT:    testb $-128, %al547; SSE2-NEXT:    je .LBB1_16548; SSE2-NEXT:  .LBB1_15: # %cond.store13549; SSE2-NEXT:    pextrw $7, %xmm0, %eax550; SSE2-NEXT:    movw %ax, 14(%rdi)551; SSE2-NEXT:    retq552;553; SSE4-LABEL: truncstore_v8i64_v8i16:554; SSE4:       # %bb.0:555; SSE4-NEXT:    movdqa %xmm0, %xmm6556; SSE4-NEXT:    pxor %xmm7, %xmm7557; SSE4-NEXT:    pmovsxwq {{.*#+}} xmm9 = [32767,32767]558; SSE4-NEXT:    movdqa %xmm9, %xmm0559; SSE4-NEXT:    pcmpgtq %xmm2, %xmm0560; SSE4-NEXT:    movdqa %xmm9, %xmm8561; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm8562; SSE4-NEXT:    movdqa %xmm9, %xmm0563; SSE4-NEXT:    pcmpgtq %xmm3, %xmm0564; SSE4-NEXT:    movdqa %xmm9, %xmm2565; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm2566; SSE4-NEXT:    movdqa %xmm9, %xmm0567; SSE4-NEXT:    pcmpgtq %xmm6, %xmm0568; SSE4-NEXT:    movdqa %xmm9, %xmm3569; SSE4-NEXT:    blendvpd %xmm0, %xmm6, %xmm3570; SSE4-NEXT:    movdqa %xmm9, %xmm0571; SSE4-NEXT:    pcmpgtq %xmm1, %xmm0572; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm9573; SSE4-NEXT:    pmovsxwq {{.*#+}} xmm6 = [18446744073709518848,18446744073709518848]574; SSE4-NEXT:    movapd %xmm9, %xmm0575; SSE4-NEXT:    pcmpgtq %xmm6, %xmm0576; SSE4-NEXT:    movdqa %xmm6, %xmm10577; SSE4-NEXT:    blendvpd %xmm0, %xmm9, %xmm10578; SSE4-NEXT:    movapd %xmm3, %xmm0579; SSE4-NEXT:    pcmpgtq %xmm6, %xmm0580; SSE4-NEXT:    movdqa %xmm6, %xmm1581; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm1582; SSE4-NEXT:    packssdw %xmm10, %xmm1583; SSE4-NEXT:    movapd %xmm2, %xmm0584; SSE4-NEXT:    pcmpgtq %xmm6, %xmm0585; SSE4-NEXT:    movdqa %xmm6, %xmm3586; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm3587; SSE4-NEXT:    movapd %xmm8, %xmm0588; SSE4-NEXT:    pcmpgtq %xmm6, %xmm0589; SSE4-NEXT:    blendvpd %xmm0, %xmm8, %xmm6590; SSE4-NEXT:    packssdw %xmm3, %xmm6591; SSE4-NEXT:    packssdw %xmm6, %xmm1592; SSE4-NEXT:    pcmpeqd %xmm7, %xmm5593; SSE4-NEXT:    pcmpeqd %xmm7, %xmm4594; SSE4-NEXT:    packssdw %xmm5, %xmm4595; SSE4-NEXT:    packsswb %xmm4, %xmm4596; SSE4-NEXT:    pmovmskb %xmm4, %eax597; SSE4-NEXT:    notl %eax598; SSE4-NEXT:    testb $1, %al599; SSE4-NEXT:    jne .LBB1_1600; SSE4-NEXT:  # %bb.2: # %else601; SSE4-NEXT:    testb $2, %al602; SSE4-NEXT:    jne .LBB1_3603; SSE4-NEXT:  .LBB1_4: # %else2604; SSE4-NEXT:    testb $4, %al605; SSE4-NEXT:    jne .LBB1_5606; SSE4-NEXT:  .LBB1_6: # %else4607; SSE4-NEXT:    testb $8, %al608; SSE4-NEXT:    jne .LBB1_7609; SSE4-NEXT:  .LBB1_8: # %else6610; SSE4-NEXT:    testb $16, %al611; SSE4-NEXT:    jne .LBB1_9612; SSE4-NEXT:  .LBB1_10: # %else8613; SSE4-NEXT:    testb $32, %al614; SSE4-NEXT:    jne .LBB1_11615; SSE4-NEXT:  .LBB1_12: # %else10616; SSE4-NEXT:    testb $64, %al617; SSE4-NEXT:    jne .LBB1_13618; SSE4-NEXT:  .LBB1_14: # %else12619; SSE4-NEXT:    testb $-128, %al620; SSE4-NEXT:    jne .LBB1_15621; SSE4-NEXT:  .LBB1_16: # %else14622; SSE4-NEXT:    retq623; SSE4-NEXT:  .LBB1_1: # %cond.store624; SSE4-NEXT:    pextrw $0, %xmm1, (%rdi)625; SSE4-NEXT:    testb $2, %al626; SSE4-NEXT:    je .LBB1_4627; SSE4-NEXT:  .LBB1_3: # %cond.store1628; SSE4-NEXT:    pextrw $1, %xmm1, 2(%rdi)629; SSE4-NEXT:    testb $4, %al630; SSE4-NEXT:    je .LBB1_6631; SSE4-NEXT:  .LBB1_5: # %cond.store3632; SSE4-NEXT:    pextrw $2, %xmm1, 4(%rdi)633; SSE4-NEXT:    testb $8, %al634; SSE4-NEXT:    je .LBB1_8635; SSE4-NEXT:  .LBB1_7: # %cond.store5636; SSE4-NEXT:    pextrw $3, %xmm1, 6(%rdi)637; SSE4-NEXT:    testb $16, %al638; SSE4-NEXT:    je .LBB1_10639; SSE4-NEXT:  .LBB1_9: # %cond.store7640; SSE4-NEXT:    pextrw $4, %xmm1, 8(%rdi)641; SSE4-NEXT:    testb $32, %al642; SSE4-NEXT:    je .LBB1_12643; SSE4-NEXT:  .LBB1_11: # %cond.store9644; SSE4-NEXT:    pextrw $5, %xmm1, 10(%rdi)645; SSE4-NEXT:    testb $64, %al646; SSE4-NEXT:    je .LBB1_14647; SSE4-NEXT:  .LBB1_13: # %cond.store11648; SSE4-NEXT:    pextrw $6, %xmm1, 12(%rdi)649; SSE4-NEXT:    testb $-128, %al650; SSE4-NEXT:    je .LBB1_16651; SSE4-NEXT:  .LBB1_15: # %cond.store13652; SSE4-NEXT:    pextrw $7, %xmm1, 14(%rdi)653; SSE4-NEXT:    retq654;655; AVX1-LABEL: truncstore_v8i64_v8i16:656; AVX1:       # %bb.0:657; AVX1-NEXT:    vpmovsxwq {{.*#+}} xmm3 = [32767,32767]658; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm3, %xmm4659; AVX1-NEXT:    vblendvpd %xmm4, %xmm1, %xmm3, %xmm4660; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm1661; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm3, %xmm5662; AVX1-NEXT:    vblendvpd %xmm5, %xmm1, %xmm3, %xmm1663; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm3, %xmm5664; AVX1-NEXT:    vblendvpd %xmm5, %xmm0, %xmm3, %xmm5665; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0666; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm3, %xmm6667; AVX1-NEXT:    vblendvpd %xmm6, %xmm0, %xmm3, %xmm0668; AVX1-NEXT:    vpmovsxwq {{.*#+}} xmm3 = [18446744073709518848,18446744073709518848]669; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm0, %xmm6670; AVX1-NEXT:    vblendvpd %xmm6, %xmm0, %xmm3, %xmm0671; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm5, %xmm6672; AVX1-NEXT:    vblendvpd %xmm6, %xmm5, %xmm3, %xmm5673; AVX1-NEXT:    vpackssdw %xmm0, %xmm5, %xmm0674; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm1, %xmm5675; AVX1-NEXT:    vblendvpd %xmm5, %xmm1, %xmm3, %xmm1676; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm4, %xmm5677; AVX1-NEXT:    vblendvpd %xmm5, %xmm4, %xmm3, %xmm3678; AVX1-NEXT:    vpackssdw %xmm1, %xmm3, %xmm1679; AVX1-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0680; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm1681; AVX1-NEXT:    vpxor %xmm3, %xmm3, %xmm3682; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm1, %xmm1683; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm2, %xmm2684; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1685; AVX1-NEXT:    vmovmskps %ymm1, %eax686; AVX1-NEXT:    notl %eax687; AVX1-NEXT:    testb $1, %al688; AVX1-NEXT:    jne .LBB1_1689; AVX1-NEXT:  # %bb.2: # %else690; AVX1-NEXT:    testb $2, %al691; AVX1-NEXT:    jne .LBB1_3692; AVX1-NEXT:  .LBB1_4: # %else2693; AVX1-NEXT:    testb $4, %al694; AVX1-NEXT:    jne .LBB1_5695; AVX1-NEXT:  .LBB1_6: # %else4696; AVX1-NEXT:    testb $8, %al697; AVX1-NEXT:    jne .LBB1_7698; AVX1-NEXT:  .LBB1_8: # %else6699; AVX1-NEXT:    testb $16, %al700; AVX1-NEXT:    jne .LBB1_9701; AVX1-NEXT:  .LBB1_10: # %else8702; AVX1-NEXT:    testb $32, %al703; AVX1-NEXT:    jne .LBB1_11704; AVX1-NEXT:  .LBB1_12: # %else10705; AVX1-NEXT:    testb $64, %al706; AVX1-NEXT:    jne .LBB1_13707; AVX1-NEXT:  .LBB1_14: # %else12708; AVX1-NEXT:    testb $-128, %al709; AVX1-NEXT:    jne .LBB1_15710; AVX1-NEXT:  .LBB1_16: # %else14711; AVX1-NEXT:    vzeroupper712; AVX1-NEXT:    retq713; AVX1-NEXT:  .LBB1_1: # %cond.store714; AVX1-NEXT:    vpextrw $0, %xmm0, (%rdi)715; AVX1-NEXT:    testb $2, %al716; AVX1-NEXT:    je .LBB1_4717; AVX1-NEXT:  .LBB1_3: # %cond.store1718; AVX1-NEXT:    vpextrw $1, %xmm0, 2(%rdi)719; AVX1-NEXT:    testb $4, %al720; AVX1-NEXT:    je .LBB1_6721; AVX1-NEXT:  .LBB1_5: # %cond.store3722; AVX1-NEXT:    vpextrw $2, %xmm0, 4(%rdi)723; AVX1-NEXT:    testb $8, %al724; AVX1-NEXT:    je .LBB1_8725; AVX1-NEXT:  .LBB1_7: # %cond.store5726; AVX1-NEXT:    vpextrw $3, %xmm0, 6(%rdi)727; AVX1-NEXT:    testb $16, %al728; AVX1-NEXT:    je .LBB1_10729; AVX1-NEXT:  .LBB1_9: # %cond.store7730; AVX1-NEXT:    vpextrw $4, %xmm0, 8(%rdi)731; AVX1-NEXT:    testb $32, %al732; AVX1-NEXT:    je .LBB1_12733; AVX1-NEXT:  .LBB1_11: # %cond.store9734; AVX1-NEXT:    vpextrw $5, %xmm0, 10(%rdi)735; AVX1-NEXT:    testb $64, %al736; AVX1-NEXT:    je .LBB1_14737; AVX1-NEXT:  .LBB1_13: # %cond.store11738; AVX1-NEXT:    vpextrw $6, %xmm0, 12(%rdi)739; AVX1-NEXT:    testb $-128, %al740; AVX1-NEXT:    je .LBB1_16741; AVX1-NEXT:  .LBB1_15: # %cond.store13742; AVX1-NEXT:    vpextrw $7, %xmm0, 14(%rdi)743; AVX1-NEXT:    vzeroupper744; AVX1-NEXT:    retq745;746; AVX2-LABEL: truncstore_v8i64_v8i16:747; AVX2:       # %bb.0:748; AVX2-NEXT:    vpxor %xmm3, %xmm3, %xmm3749; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm4 = [32767,32767,32767,32767]750; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm4, %ymm5751; AVX2-NEXT:    vblendvpd %ymm5, %ymm0, %ymm4, %ymm0752; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm4, %ymm5753; AVX2-NEXT:    vblendvpd %ymm5, %ymm1, %ymm4, %ymm1754; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm4 = [18446744073709518848,18446744073709518848,18446744073709518848,18446744073709518848]755; AVX2-NEXT:    vpcmpgtq %ymm4, %ymm1, %ymm5756; AVX2-NEXT:    vblendvpd %ymm5, %ymm1, %ymm4, %ymm1757; AVX2-NEXT:    vpcmpgtq %ymm4, %ymm0, %ymm5758; AVX2-NEXT:    vblendvpd %ymm5, %ymm0, %ymm4, %ymm0759; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0760; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1761; AVX2-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0762; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]763; AVX2-NEXT:    vpcmpeqd %ymm3, %ymm2, %ymm1764; AVX2-NEXT:    vmovmskps %ymm1, %eax765; AVX2-NEXT:    notl %eax766; AVX2-NEXT:    testb $1, %al767; AVX2-NEXT:    jne .LBB1_1768; AVX2-NEXT:  # %bb.2: # %else769; AVX2-NEXT:    testb $2, %al770; AVX2-NEXT:    jne .LBB1_3771; AVX2-NEXT:  .LBB1_4: # %else2772; AVX2-NEXT:    testb $4, %al773; AVX2-NEXT:    jne .LBB1_5774; AVX2-NEXT:  .LBB1_6: # %else4775; AVX2-NEXT:    testb $8, %al776; AVX2-NEXT:    jne .LBB1_7777; AVX2-NEXT:  .LBB1_8: # %else6778; AVX2-NEXT:    testb $16, %al779; AVX2-NEXT:    jne .LBB1_9780; AVX2-NEXT:  .LBB1_10: # %else8781; AVX2-NEXT:    testb $32, %al782; AVX2-NEXT:    jne .LBB1_11783; AVX2-NEXT:  .LBB1_12: # %else10784; AVX2-NEXT:    testb $64, %al785; AVX2-NEXT:    jne .LBB1_13786; AVX2-NEXT:  .LBB1_14: # %else12787; AVX2-NEXT:    testb $-128, %al788; AVX2-NEXT:    jne .LBB1_15789; AVX2-NEXT:  .LBB1_16: # %else14790; AVX2-NEXT:    vzeroupper791; AVX2-NEXT:    retq792; AVX2-NEXT:  .LBB1_1: # %cond.store793; AVX2-NEXT:    vpextrw $0, %xmm0, (%rdi)794; AVX2-NEXT:    testb $2, %al795; AVX2-NEXT:    je .LBB1_4796; AVX2-NEXT:  .LBB1_3: # %cond.store1797; AVX2-NEXT:    vpextrw $1, %xmm0, 2(%rdi)798; AVX2-NEXT:    testb $4, %al799; AVX2-NEXT:    je .LBB1_6800; AVX2-NEXT:  .LBB1_5: # %cond.store3801; AVX2-NEXT:    vpextrw $2, %xmm0, 4(%rdi)802; AVX2-NEXT:    testb $8, %al803; AVX2-NEXT:    je .LBB1_8804; AVX2-NEXT:  .LBB1_7: # %cond.store5805; AVX2-NEXT:    vpextrw $3, %xmm0, 6(%rdi)806; AVX2-NEXT:    testb $16, %al807; AVX2-NEXT:    je .LBB1_10808; AVX2-NEXT:  .LBB1_9: # %cond.store7809; AVX2-NEXT:    vpextrw $4, %xmm0, 8(%rdi)810; AVX2-NEXT:    testb $32, %al811; AVX2-NEXT:    je .LBB1_12812; AVX2-NEXT:  .LBB1_11: # %cond.store9813; AVX2-NEXT:    vpextrw $5, %xmm0, 10(%rdi)814; AVX2-NEXT:    testb $64, %al815; AVX2-NEXT:    je .LBB1_14816; AVX2-NEXT:  .LBB1_13: # %cond.store11817; AVX2-NEXT:    vpextrw $6, %xmm0, 12(%rdi)818; AVX2-NEXT:    testb $-128, %al819; AVX2-NEXT:    je .LBB1_16820; AVX2-NEXT:  .LBB1_15: # %cond.store13821; AVX2-NEXT:    vpextrw $7, %xmm0, 14(%rdi)822; AVX2-NEXT:    vzeroupper823; AVX2-NEXT:    retq824;825; AVX512F-LABEL: truncstore_v8i64_v8i16:826; AVX512F:       # %bb.0:827; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1828; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k0829; AVX512F-NEXT:    vpmovsqw %zmm0, %xmm0830; AVX512F-NEXT:    kmovw %k0, %eax831; AVX512F-NEXT:    testb $1, %al832; AVX512F-NEXT:    jne .LBB1_1833; AVX512F-NEXT:  # %bb.2: # %else834; AVX512F-NEXT:    testb $2, %al835; AVX512F-NEXT:    jne .LBB1_3836; AVX512F-NEXT:  .LBB1_4: # %else2837; AVX512F-NEXT:    testb $4, %al838; AVX512F-NEXT:    jne .LBB1_5839; AVX512F-NEXT:  .LBB1_6: # %else4840; AVX512F-NEXT:    testb $8, %al841; AVX512F-NEXT:    jne .LBB1_7842; AVX512F-NEXT:  .LBB1_8: # %else6843; AVX512F-NEXT:    testb $16, %al844; AVX512F-NEXT:    jne .LBB1_9845; AVX512F-NEXT:  .LBB1_10: # %else8846; AVX512F-NEXT:    testb $32, %al847; AVX512F-NEXT:    jne .LBB1_11848; AVX512F-NEXT:  .LBB1_12: # %else10849; AVX512F-NEXT:    testb $64, %al850; AVX512F-NEXT:    jne .LBB1_13851; AVX512F-NEXT:  .LBB1_14: # %else12852; AVX512F-NEXT:    testb $-128, %al853; AVX512F-NEXT:    jne .LBB1_15854; AVX512F-NEXT:  .LBB1_16: # %else14855; AVX512F-NEXT:    vzeroupper856; AVX512F-NEXT:    retq857; AVX512F-NEXT:  .LBB1_1: # %cond.store858; AVX512F-NEXT:    vpextrw $0, %xmm0, (%rdi)859; AVX512F-NEXT:    testb $2, %al860; AVX512F-NEXT:    je .LBB1_4861; AVX512F-NEXT:  .LBB1_3: # %cond.store1862; AVX512F-NEXT:    vpextrw $1, %xmm0, 2(%rdi)863; AVX512F-NEXT:    testb $4, %al864; AVX512F-NEXT:    je .LBB1_6865; AVX512F-NEXT:  .LBB1_5: # %cond.store3866; AVX512F-NEXT:    vpextrw $2, %xmm0, 4(%rdi)867; AVX512F-NEXT:    testb $8, %al868; AVX512F-NEXT:    je .LBB1_8869; AVX512F-NEXT:  .LBB1_7: # %cond.store5870; AVX512F-NEXT:    vpextrw $3, %xmm0, 6(%rdi)871; AVX512F-NEXT:    testb $16, %al872; AVX512F-NEXT:    je .LBB1_10873; AVX512F-NEXT:  .LBB1_9: # %cond.store7874; AVX512F-NEXT:    vpextrw $4, %xmm0, 8(%rdi)875; AVX512F-NEXT:    testb $32, %al876; AVX512F-NEXT:    je .LBB1_12877; AVX512F-NEXT:  .LBB1_11: # %cond.store9878; AVX512F-NEXT:    vpextrw $5, %xmm0, 10(%rdi)879; AVX512F-NEXT:    testb $64, %al880; AVX512F-NEXT:    je .LBB1_14881; AVX512F-NEXT:  .LBB1_13: # %cond.store11882; AVX512F-NEXT:    vpextrw $6, %xmm0, 12(%rdi)883; AVX512F-NEXT:    testb $-128, %al884; AVX512F-NEXT:    je .LBB1_16885; AVX512F-NEXT:  .LBB1_15: # %cond.store13886; AVX512F-NEXT:    vpextrw $7, %xmm0, 14(%rdi)887; AVX512F-NEXT:    vzeroupper888; AVX512F-NEXT:    retq889;890; AVX512FVL-LABEL: truncstore_v8i64_v8i16:891; AVX512FVL:       # %bb.0:892; AVX512FVL-NEXT:    vptestmd %ymm1, %ymm1, %k0893; AVX512FVL-NEXT:    vpmovsqw %zmm0, %xmm0894; AVX512FVL-NEXT:    kmovw %k0, %eax895; AVX512FVL-NEXT:    testb $1, %al896; AVX512FVL-NEXT:    jne .LBB1_1897; AVX512FVL-NEXT:  # %bb.2: # %else898; AVX512FVL-NEXT:    testb $2, %al899; AVX512FVL-NEXT:    jne .LBB1_3900; AVX512FVL-NEXT:  .LBB1_4: # %else2901; AVX512FVL-NEXT:    testb $4, %al902; AVX512FVL-NEXT:    jne .LBB1_5903; AVX512FVL-NEXT:  .LBB1_6: # %else4904; AVX512FVL-NEXT:    testb $8, %al905; AVX512FVL-NEXT:    jne .LBB1_7906; AVX512FVL-NEXT:  .LBB1_8: # %else6907; AVX512FVL-NEXT:    testb $16, %al908; AVX512FVL-NEXT:    jne .LBB1_9909; AVX512FVL-NEXT:  .LBB1_10: # %else8910; AVX512FVL-NEXT:    testb $32, %al911; AVX512FVL-NEXT:    jne .LBB1_11912; AVX512FVL-NEXT:  .LBB1_12: # %else10913; AVX512FVL-NEXT:    testb $64, %al914; AVX512FVL-NEXT:    jne .LBB1_13915; AVX512FVL-NEXT:  .LBB1_14: # %else12916; AVX512FVL-NEXT:    testb $-128, %al917; AVX512FVL-NEXT:    jne .LBB1_15918; AVX512FVL-NEXT:  .LBB1_16: # %else14919; AVX512FVL-NEXT:    vzeroupper920; AVX512FVL-NEXT:    retq921; AVX512FVL-NEXT:  .LBB1_1: # %cond.store922; AVX512FVL-NEXT:    vpextrw $0, %xmm0, (%rdi)923; AVX512FVL-NEXT:    testb $2, %al924; AVX512FVL-NEXT:    je .LBB1_4925; AVX512FVL-NEXT:  .LBB1_3: # %cond.store1926; AVX512FVL-NEXT:    vpextrw $1, %xmm0, 2(%rdi)927; AVX512FVL-NEXT:    testb $4, %al928; AVX512FVL-NEXT:    je .LBB1_6929; AVX512FVL-NEXT:  .LBB1_5: # %cond.store3930; AVX512FVL-NEXT:    vpextrw $2, %xmm0, 4(%rdi)931; AVX512FVL-NEXT:    testb $8, %al932; AVX512FVL-NEXT:    je .LBB1_8933; AVX512FVL-NEXT:  .LBB1_7: # %cond.store5934; AVX512FVL-NEXT:    vpextrw $3, %xmm0, 6(%rdi)935; AVX512FVL-NEXT:    testb $16, %al936; AVX512FVL-NEXT:    je .LBB1_10937; AVX512FVL-NEXT:  .LBB1_9: # %cond.store7938; AVX512FVL-NEXT:    vpextrw $4, %xmm0, 8(%rdi)939; AVX512FVL-NEXT:    testb $32, %al940; AVX512FVL-NEXT:    je .LBB1_12941; AVX512FVL-NEXT:  .LBB1_11: # %cond.store9942; AVX512FVL-NEXT:    vpextrw $5, %xmm0, 10(%rdi)943; AVX512FVL-NEXT:    testb $64, %al944; AVX512FVL-NEXT:    je .LBB1_14945; AVX512FVL-NEXT:  .LBB1_13: # %cond.store11946; AVX512FVL-NEXT:    vpextrw $6, %xmm0, 12(%rdi)947; AVX512FVL-NEXT:    testb $-128, %al948; AVX512FVL-NEXT:    je .LBB1_16949; AVX512FVL-NEXT:  .LBB1_15: # %cond.store13950; AVX512FVL-NEXT:    vpextrw $7, %xmm0, 14(%rdi)951; AVX512FVL-NEXT:    vzeroupper952; AVX512FVL-NEXT:    retq953;954; AVX512BW-LABEL: truncstore_v8i64_v8i16:955; AVX512BW:       # %bb.0:956; AVX512BW-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1957; AVX512BW-NEXT:    vptestmd %zmm1, %zmm1, %k1958; AVX512BW-NEXT:    vpminsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm0959; AVX512BW-NEXT:    vpmaxsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm0960; AVX512BW-NEXT:    vpmovqw %zmm0, (%rdi) {%k1}961; AVX512BW-NEXT:    vzeroupper962; AVX512BW-NEXT:    retq963;964; AVX512BWVL-LABEL: truncstore_v8i64_v8i16:965; AVX512BWVL:       # %bb.0:966; AVX512BWVL-NEXT:    vptestmd %ymm1, %ymm1, %k1967; AVX512BWVL-NEXT:    vpminsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm0968; AVX512BWVL-NEXT:    vpmaxsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm0969; AVX512BWVL-NEXT:    vpmovqw %zmm0, (%rdi) {%k1}970; AVX512BWVL-NEXT:    vzeroupper971; AVX512BWVL-NEXT:    retq972  %a = icmp ne <8 x i32> %mask, zeroinitializer973  %b = icmp slt <8 x i64> %x, <i64 32767, i64 32767, i64 32767, i64 32767, i64 32767, i64 32767, i64 32767, i64 32767>974  %c = select <8 x i1> %b, <8 x i64> %x, <8 x i64> <i64 32767, i64 32767, i64 32767, i64 32767, i64 32767, i64 32767, i64 32767, i64 32767>975  %d = icmp sgt <8 x i64> %c, <i64 -32768, i64 -32768, i64 -32768, i64 -32768, i64 -32768, i64 -32768, i64 -32768, i64 -32768>976  %e = select <8 x i1> %d, <8 x i64> %c, <8 x i64> <i64 -32768, i64 -32768, i64 -32768, i64 -32768, i64 -32768, i64 -32768, i64 -32768, i64 -32768>977  %f = trunc <8 x i64> %e to <8 x i16>978  call void @llvm.masked.store.v8i16.p0(<8 x i16> %f, ptr %p, i32 1, <8 x i1> %a)979  ret void980}981 982define void @truncstore_v8i64_v8i8(<8 x i64> %x, ptr %p, <8 x i32> %mask) {983; SSE2-LABEL: truncstore_v8i64_v8i8:984; SSE2:       # %bb.0:985; SSE2-NEXT:    pxor %xmm6, %xmm6986; SSE2-NEXT:    movdqa {{.*#+}} xmm9 = [127,127]987; SSE2-NEXT:    movdqa {{.*#+}} xmm7 = [2147483648,2147483648]988; SSE2-NEXT:    movdqa %xmm2, %xmm8989; SSE2-NEXT:    pxor %xmm7, %xmm8990; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm8[1,1,3,3]991; SSE2-NEXT:    pcmpeqd %xmm6, %xmm11992; SSE2-NEXT:    movdqa {{.*#+}} xmm10 = [2147483775,2147483775]993; SSE2-NEXT:    movdqa %xmm10, %xmm12994; SSE2-NEXT:    pcmpgtd %xmm8, %xmm12995; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm12[0,0,2,2]996; SSE2-NEXT:    pand %xmm11, %xmm13997; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm12[1,1,3,3]998; SSE2-NEXT:    por %xmm13, %xmm8999; SSE2-NEXT:    pand %xmm8, %xmm21000; SSE2-NEXT:    pandn %xmm9, %xmm81001; SSE2-NEXT:    por %xmm2, %xmm81002; SSE2-NEXT:    movdqa %xmm3, %xmm21003; SSE2-NEXT:    pxor %xmm7, %xmm21004; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm2[1,1,3,3]1005; SSE2-NEXT:    pcmpeqd %xmm6, %xmm111006; SSE2-NEXT:    movdqa %xmm10, %xmm121007; SSE2-NEXT:    pcmpgtd %xmm2, %xmm121008; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm12[0,0,2,2]1009; SSE2-NEXT:    pand %xmm11, %xmm131010; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm12[1,1,3,3]1011; SSE2-NEXT:    por %xmm13, %xmm21012; SSE2-NEXT:    pand %xmm2, %xmm31013; SSE2-NEXT:    pandn %xmm9, %xmm21014; SSE2-NEXT:    por %xmm3, %xmm21015; SSE2-NEXT:    movdqa %xmm0, %xmm31016; SSE2-NEXT:    pxor %xmm7, %xmm31017; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm3[1,1,3,3]1018; SSE2-NEXT:    pcmpeqd %xmm6, %xmm111019; SSE2-NEXT:    movdqa %xmm10, %xmm121020; SSE2-NEXT:    pcmpgtd %xmm3, %xmm121021; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm12[0,0,2,2]1022; SSE2-NEXT:    pand %xmm11, %xmm131023; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm12[1,1,3,3]1024; SSE2-NEXT:    por %xmm13, %xmm31025; SSE2-NEXT:    pand %xmm3, %xmm01026; SSE2-NEXT:    pandn %xmm9, %xmm31027; SSE2-NEXT:    por %xmm0, %xmm31028; SSE2-NEXT:    movdqa %xmm1, %xmm01029; SSE2-NEXT:    pxor %xmm7, %xmm01030; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm0[1,1,3,3]1031; SSE2-NEXT:    pcmpeqd %xmm6, %xmm111032; SSE2-NEXT:    pcmpgtd %xmm0, %xmm101033; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm10[0,0,2,2]1034; SSE2-NEXT:    pand %xmm11, %xmm01035; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[1,1,3,3]1036; SSE2-NEXT:    por %xmm0, %xmm111037; SSE2-NEXT:    pand %xmm11, %xmm11038; SSE2-NEXT:    pandn %xmm9, %xmm111039; SSE2-NEXT:    por %xmm1, %xmm111040; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [18446744073709551488,18446744073709551488]1041; SSE2-NEXT:    movdqa %xmm11, %xmm01042; SSE2-NEXT:    pxor %xmm7, %xmm01043; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm0[1,1,3,3]1044; SSE2-NEXT:    pcmpeqd %xmm9, %xmm91045; SSE2-NEXT:    pcmpeqd %xmm9, %xmm121046; SSE2-NEXT:    movdqa {{.*#+}} xmm10 = [18446744071562067840,18446744071562067840]1047; SSE2-NEXT:    pcmpgtd %xmm10, %xmm01048; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm0[0,0,2,2]1049; SSE2-NEXT:    pand %xmm12, %xmm131050; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm0[1,1,3,3]1051; SSE2-NEXT:    por %xmm13, %xmm121052; SSE2-NEXT:    pand %xmm12, %xmm111053; SSE2-NEXT:    pandn %xmm1, %xmm121054; SSE2-NEXT:    por %xmm11, %xmm121055; SSE2-NEXT:    movdqa %xmm3, %xmm01056; SSE2-NEXT:    pxor %xmm7, %xmm01057; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm0[1,1,3,3]1058; SSE2-NEXT:    pcmpeqd %xmm9, %xmm111059; SSE2-NEXT:    pcmpgtd %xmm10, %xmm01060; SSE2-NEXT:    pshufd {{.*#+}} xmm13 = xmm0[0,0,2,2]1061; SSE2-NEXT:    pand %xmm11, %xmm131062; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]1063; SSE2-NEXT:    por %xmm13, %xmm01064; SSE2-NEXT:    pand %xmm0, %xmm31065; SSE2-NEXT:    pandn %xmm1, %xmm01066; SSE2-NEXT:    por %xmm3, %xmm01067; SSE2-NEXT:    packssdw %xmm12, %xmm01068; SSE2-NEXT:    movdqa %xmm2, %xmm31069; SSE2-NEXT:    pxor %xmm7, %xmm31070; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm3[1,1,3,3]1071; SSE2-NEXT:    pcmpeqd %xmm9, %xmm111072; SSE2-NEXT:    pcmpgtd %xmm10, %xmm31073; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm3[0,0,2,2]1074; SSE2-NEXT:    pand %xmm11, %xmm121075; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]1076; SSE2-NEXT:    por %xmm12, %xmm31077; SSE2-NEXT:    pand %xmm3, %xmm21078; SSE2-NEXT:    pandn %xmm1, %xmm31079; SSE2-NEXT:    por %xmm2, %xmm31080; SSE2-NEXT:    pxor %xmm8, %xmm71081; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm7[1,1,3,3]1082; SSE2-NEXT:    pcmpeqd %xmm9, %xmm21083; SSE2-NEXT:    pcmpgtd %xmm10, %xmm71084; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm7[0,0,2,2]1085; SSE2-NEXT:    pand %xmm2, %xmm91086; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm7[1,1,3,3]1087; SSE2-NEXT:    por %xmm9, %xmm21088; SSE2-NEXT:    pand %xmm2, %xmm81089; SSE2-NEXT:    pandn %xmm1, %xmm21090; SSE2-NEXT:    por %xmm8, %xmm21091; SSE2-NEXT:    packssdw %xmm3, %xmm21092; SSE2-NEXT:    packssdw %xmm2, %xmm01093; SSE2-NEXT:    packsswb %xmm0, %xmm01094; SSE2-NEXT:    pcmpeqd %xmm6, %xmm51095; SSE2-NEXT:    pcmpeqd %xmm6, %xmm41096; SSE2-NEXT:    packssdw %xmm5, %xmm41097; SSE2-NEXT:    packsswb %xmm4, %xmm41098; SSE2-NEXT:    pmovmskb %xmm4, %eax1099; SSE2-NEXT:    notl %eax1100; SSE2-NEXT:    testb $1, %al1101; SSE2-NEXT:    movd %xmm0, %ecx1102; SSE2-NEXT:    jne .LBB2_11103; SSE2-NEXT:  # %bb.2: # %else1104; SSE2-NEXT:    testb $2, %al1105; SSE2-NEXT:    jne .LBB2_31106; SSE2-NEXT:  .LBB2_4: # %else21107; SSE2-NEXT:    testb $4, %al1108; SSE2-NEXT:    jne .LBB2_51109; SSE2-NEXT:  .LBB2_6: # %else41110; SSE2-NEXT:    testb $8, %al1111; SSE2-NEXT:    je .LBB2_81112; SSE2-NEXT:  .LBB2_7: # %cond.store51113; SSE2-NEXT:    shrl $24, %ecx1114; SSE2-NEXT:    movb %cl, 3(%rdi)1115; SSE2-NEXT:  .LBB2_8: # %else61116; SSE2-NEXT:    testb $16, %al1117; SSE2-NEXT:    pextrw $2, %xmm0, %ecx1118; SSE2-NEXT:    je .LBB2_101119; SSE2-NEXT:  # %bb.9: # %cond.store71120; SSE2-NEXT:    movb %cl, 4(%rdi)1121; SSE2-NEXT:  .LBB2_10: # %else81122; SSE2-NEXT:    testb $32, %al1123; SSE2-NEXT:    je .LBB2_121124; SSE2-NEXT:  # %bb.11: # %cond.store91125; SSE2-NEXT:    movb %ch, 5(%rdi)1126; SSE2-NEXT:  .LBB2_12: # %else101127; SSE2-NEXT:    testb $64, %al1128; SSE2-NEXT:    pextrw $3, %xmm0, %ecx1129; SSE2-NEXT:    jne .LBB2_131130; SSE2-NEXT:  # %bb.14: # %else121131; SSE2-NEXT:    testb $-128, %al1132; SSE2-NEXT:    jne .LBB2_151133; SSE2-NEXT:  .LBB2_16: # %else141134; SSE2-NEXT:    retq1135; SSE2-NEXT:  .LBB2_1: # %cond.store1136; SSE2-NEXT:    movb %cl, (%rdi)1137; SSE2-NEXT:    testb $2, %al1138; SSE2-NEXT:    je .LBB2_41139; SSE2-NEXT:  .LBB2_3: # %cond.store11140; SSE2-NEXT:    movb %ch, 1(%rdi)1141; SSE2-NEXT:    testb $4, %al1142; SSE2-NEXT:    je .LBB2_61143; SSE2-NEXT:  .LBB2_5: # %cond.store31144; SSE2-NEXT:    movl %ecx, %edx1145; SSE2-NEXT:    shrl $16, %edx1146; SSE2-NEXT:    movb %dl, 2(%rdi)1147; SSE2-NEXT:    testb $8, %al1148; SSE2-NEXT:    jne .LBB2_71149; SSE2-NEXT:    jmp .LBB2_81150; SSE2-NEXT:  .LBB2_13: # %cond.store111151; SSE2-NEXT:    movb %cl, 6(%rdi)1152; SSE2-NEXT:    testb $-128, %al1153; SSE2-NEXT:    je .LBB2_161154; SSE2-NEXT:  .LBB2_15: # %cond.store131155; SSE2-NEXT:    movb %ch, 7(%rdi)1156; SSE2-NEXT:    retq1157;1158; SSE4-LABEL: truncstore_v8i64_v8i8:1159; SSE4:       # %bb.0:1160; SSE4-NEXT:    movdqa %xmm0, %xmm61161; SSE4-NEXT:    pxor %xmm7, %xmm71162; SSE4-NEXT:    pmovsxbq {{.*#+}} xmm9 = [127,127]1163; SSE4-NEXT:    movdqa %xmm9, %xmm01164; SSE4-NEXT:    pcmpgtq %xmm2, %xmm01165; SSE4-NEXT:    movdqa %xmm9, %xmm81166; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm81167; SSE4-NEXT:    movdqa %xmm9, %xmm01168; SSE4-NEXT:    pcmpgtq %xmm3, %xmm01169; SSE4-NEXT:    movdqa %xmm9, %xmm21170; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm21171; SSE4-NEXT:    movdqa %xmm9, %xmm01172; SSE4-NEXT:    pcmpgtq %xmm6, %xmm01173; SSE4-NEXT:    movdqa %xmm9, %xmm31174; SSE4-NEXT:    blendvpd %xmm0, %xmm6, %xmm31175; SSE4-NEXT:    movdqa %xmm9, %xmm01176; SSE4-NEXT:    pcmpgtq %xmm1, %xmm01177; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm91178; SSE4-NEXT:    pmovsxbq {{.*#+}} xmm6 = [18446744073709551488,18446744073709551488]1179; SSE4-NEXT:    movapd %xmm9, %xmm01180; SSE4-NEXT:    pcmpgtq %xmm6, %xmm01181; SSE4-NEXT:    movdqa %xmm6, %xmm101182; SSE4-NEXT:    blendvpd %xmm0, %xmm9, %xmm101183; SSE4-NEXT:    movapd %xmm3, %xmm01184; SSE4-NEXT:    pcmpgtq %xmm6, %xmm01185; SSE4-NEXT:    movdqa %xmm6, %xmm11186; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm11187; SSE4-NEXT:    packssdw %xmm10, %xmm11188; SSE4-NEXT:    movapd %xmm2, %xmm01189; SSE4-NEXT:    pcmpgtq %xmm6, %xmm01190; SSE4-NEXT:    movdqa %xmm6, %xmm31191; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm31192; SSE4-NEXT:    movapd %xmm8, %xmm01193; SSE4-NEXT:    pcmpgtq %xmm6, %xmm01194; SSE4-NEXT:    blendvpd %xmm0, %xmm8, %xmm61195; SSE4-NEXT:    packssdw %xmm3, %xmm61196; SSE4-NEXT:    packssdw %xmm6, %xmm11197; SSE4-NEXT:    packsswb %xmm1, %xmm11198; SSE4-NEXT:    pcmpeqd %xmm7, %xmm51199; SSE4-NEXT:    pcmpeqd %xmm7, %xmm41200; SSE4-NEXT:    packssdw %xmm5, %xmm41201; SSE4-NEXT:    packsswb %xmm4, %xmm41202; SSE4-NEXT:    pmovmskb %xmm4, %eax1203; SSE4-NEXT:    notl %eax1204; SSE4-NEXT:    testb $1, %al1205; SSE4-NEXT:    jne .LBB2_11206; SSE4-NEXT:  # %bb.2: # %else1207; SSE4-NEXT:    testb $2, %al1208; SSE4-NEXT:    jne .LBB2_31209; SSE4-NEXT:  .LBB2_4: # %else21210; SSE4-NEXT:    testb $4, %al1211; SSE4-NEXT:    jne .LBB2_51212; SSE4-NEXT:  .LBB2_6: # %else41213; SSE4-NEXT:    testb $8, %al1214; SSE4-NEXT:    jne .LBB2_71215; SSE4-NEXT:  .LBB2_8: # %else61216; SSE4-NEXT:    testb $16, %al1217; SSE4-NEXT:    jne .LBB2_91218; SSE4-NEXT:  .LBB2_10: # %else81219; SSE4-NEXT:    testb $32, %al1220; SSE4-NEXT:    jne .LBB2_111221; SSE4-NEXT:  .LBB2_12: # %else101222; SSE4-NEXT:    testb $64, %al1223; SSE4-NEXT:    jne .LBB2_131224; SSE4-NEXT:  .LBB2_14: # %else121225; SSE4-NEXT:    testb $-128, %al1226; SSE4-NEXT:    jne .LBB2_151227; SSE4-NEXT:  .LBB2_16: # %else141228; SSE4-NEXT:    retq1229; SSE4-NEXT:  .LBB2_1: # %cond.store1230; SSE4-NEXT:    pextrb $0, %xmm1, (%rdi)1231; SSE4-NEXT:    testb $2, %al1232; SSE4-NEXT:    je .LBB2_41233; SSE4-NEXT:  .LBB2_3: # %cond.store11234; SSE4-NEXT:    pextrb $1, %xmm1, 1(%rdi)1235; SSE4-NEXT:    testb $4, %al1236; SSE4-NEXT:    je .LBB2_61237; SSE4-NEXT:  .LBB2_5: # %cond.store31238; SSE4-NEXT:    pextrb $2, %xmm1, 2(%rdi)1239; SSE4-NEXT:    testb $8, %al1240; SSE4-NEXT:    je .LBB2_81241; SSE4-NEXT:  .LBB2_7: # %cond.store51242; SSE4-NEXT:    pextrb $3, %xmm1, 3(%rdi)1243; SSE4-NEXT:    testb $16, %al1244; SSE4-NEXT:    je .LBB2_101245; SSE4-NEXT:  .LBB2_9: # %cond.store71246; SSE4-NEXT:    pextrb $4, %xmm1, 4(%rdi)1247; SSE4-NEXT:    testb $32, %al1248; SSE4-NEXT:    je .LBB2_121249; SSE4-NEXT:  .LBB2_11: # %cond.store91250; SSE4-NEXT:    pextrb $5, %xmm1, 5(%rdi)1251; SSE4-NEXT:    testb $64, %al1252; SSE4-NEXT:    je .LBB2_141253; SSE4-NEXT:  .LBB2_13: # %cond.store111254; SSE4-NEXT:    pextrb $6, %xmm1, 6(%rdi)1255; SSE4-NEXT:    testb $-128, %al1256; SSE4-NEXT:    je .LBB2_161257; SSE4-NEXT:  .LBB2_15: # %cond.store131258; SSE4-NEXT:    pextrb $7, %xmm1, 7(%rdi)1259; SSE4-NEXT:    retq1260;1261; AVX1-LABEL: truncstore_v8i64_v8i8:1262; AVX1:       # %bb.0:1263; AVX1-NEXT:    vpmovsxbq {{.*#+}} xmm3 = [127,127]1264; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm3, %xmm41265; AVX1-NEXT:    vblendvpd %xmm4, %xmm1, %xmm3, %xmm41266; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm11267; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm3, %xmm51268; AVX1-NEXT:    vblendvpd %xmm5, %xmm1, %xmm3, %xmm11269; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm3, %xmm51270; AVX1-NEXT:    vblendvpd %xmm5, %xmm0, %xmm3, %xmm51271; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm01272; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm3, %xmm61273; AVX1-NEXT:    vblendvpd %xmm6, %xmm0, %xmm3, %xmm01274; AVX1-NEXT:    vpmovsxbq {{.*#+}} xmm3 = [18446744073709551488,18446744073709551488]1275; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm0, %xmm61276; AVX1-NEXT:    vblendvpd %xmm6, %xmm0, %xmm3, %xmm01277; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm5, %xmm61278; AVX1-NEXT:    vblendvpd %xmm6, %xmm5, %xmm3, %xmm51279; AVX1-NEXT:    vpackssdw %xmm0, %xmm5, %xmm01280; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm1, %xmm51281; AVX1-NEXT:    vblendvpd %xmm5, %xmm1, %xmm3, %xmm11282; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm4, %xmm51283; AVX1-NEXT:    vblendvpd %xmm5, %xmm4, %xmm3, %xmm31284; AVX1-NEXT:    vpackssdw %xmm1, %xmm3, %xmm11285; AVX1-NEXT:    vpackssdw %xmm1, %xmm0, %xmm01286; AVX1-NEXT:    vpacksswb %xmm0, %xmm0, %xmm01287; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm11288; AVX1-NEXT:    vpxor %xmm3, %xmm3, %xmm31289; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm1, %xmm11290; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm2, %xmm21291; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm11292; AVX1-NEXT:    vmovmskps %ymm1, %eax1293; AVX1-NEXT:    notl %eax1294; AVX1-NEXT:    testb $1, %al1295; AVX1-NEXT:    jne .LBB2_11296; AVX1-NEXT:  # %bb.2: # %else1297; AVX1-NEXT:    testb $2, %al1298; AVX1-NEXT:    jne .LBB2_31299; AVX1-NEXT:  .LBB2_4: # %else21300; AVX1-NEXT:    testb $4, %al1301; AVX1-NEXT:    jne .LBB2_51302; AVX1-NEXT:  .LBB2_6: # %else41303; AVX1-NEXT:    testb $8, %al1304; AVX1-NEXT:    jne .LBB2_71305; AVX1-NEXT:  .LBB2_8: # %else61306; AVX1-NEXT:    testb $16, %al1307; AVX1-NEXT:    jne .LBB2_91308; AVX1-NEXT:  .LBB2_10: # %else81309; AVX1-NEXT:    testb $32, %al1310; AVX1-NEXT:    jne .LBB2_111311; AVX1-NEXT:  .LBB2_12: # %else101312; AVX1-NEXT:    testb $64, %al1313; AVX1-NEXT:    jne .LBB2_131314; AVX1-NEXT:  .LBB2_14: # %else121315; AVX1-NEXT:    testb $-128, %al1316; AVX1-NEXT:    jne .LBB2_151317; AVX1-NEXT:  .LBB2_16: # %else141318; AVX1-NEXT:    vzeroupper1319; AVX1-NEXT:    retq1320; AVX1-NEXT:  .LBB2_1: # %cond.store1321; AVX1-NEXT:    vpextrb $0, %xmm0, (%rdi)1322; AVX1-NEXT:    testb $2, %al1323; AVX1-NEXT:    je .LBB2_41324; AVX1-NEXT:  .LBB2_3: # %cond.store11325; AVX1-NEXT:    vpextrb $1, %xmm0, 1(%rdi)1326; AVX1-NEXT:    testb $4, %al1327; AVX1-NEXT:    je .LBB2_61328; AVX1-NEXT:  .LBB2_5: # %cond.store31329; AVX1-NEXT:    vpextrb $2, %xmm0, 2(%rdi)1330; AVX1-NEXT:    testb $8, %al1331; AVX1-NEXT:    je .LBB2_81332; AVX1-NEXT:  .LBB2_7: # %cond.store51333; AVX1-NEXT:    vpextrb $3, %xmm0, 3(%rdi)1334; AVX1-NEXT:    testb $16, %al1335; AVX1-NEXT:    je .LBB2_101336; AVX1-NEXT:  .LBB2_9: # %cond.store71337; AVX1-NEXT:    vpextrb $4, %xmm0, 4(%rdi)1338; AVX1-NEXT:    testb $32, %al1339; AVX1-NEXT:    je .LBB2_121340; AVX1-NEXT:  .LBB2_11: # %cond.store91341; AVX1-NEXT:    vpextrb $5, %xmm0, 5(%rdi)1342; AVX1-NEXT:    testb $64, %al1343; AVX1-NEXT:    je .LBB2_141344; AVX1-NEXT:  .LBB2_13: # %cond.store111345; AVX1-NEXT:    vpextrb $6, %xmm0, 6(%rdi)1346; AVX1-NEXT:    testb $-128, %al1347; AVX1-NEXT:    je .LBB2_161348; AVX1-NEXT:  .LBB2_15: # %cond.store131349; AVX1-NEXT:    vpextrb $7, %xmm0, 7(%rdi)1350; AVX1-NEXT:    vzeroupper1351; AVX1-NEXT:    retq1352;1353; AVX2-LABEL: truncstore_v8i64_v8i8:1354; AVX2:       # %bb.0:1355; AVX2-NEXT:    vpxor %xmm3, %xmm3, %xmm31356; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm4 = [127,127,127,127]1357; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm4, %ymm51358; AVX2-NEXT:    vblendvpd %ymm5, %ymm0, %ymm4, %ymm01359; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm4, %ymm51360; AVX2-NEXT:    vblendvpd %ymm5, %ymm1, %ymm4, %ymm11361; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm4 = [18446744073709551488,18446744073709551488,18446744073709551488,18446744073709551488]1362; AVX2-NEXT:    vpcmpgtq %ymm4, %ymm1, %ymm51363; AVX2-NEXT:    vblendvpd %ymm5, %ymm1, %ymm4, %ymm11364; AVX2-NEXT:    vpcmpgtq %ymm4, %ymm0, %ymm51365; AVX2-NEXT:    vblendvpd %ymm5, %ymm0, %ymm4, %ymm01366; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm01367; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm11368; AVX2-NEXT:    vpackssdw %xmm1, %xmm0, %xmm01369; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]1370; AVX2-NEXT:    vpacksswb %xmm0, %xmm0, %xmm01371; AVX2-NEXT:    vpcmpeqd %ymm3, %ymm2, %ymm11372; AVX2-NEXT:    vmovmskps %ymm1, %eax1373; AVX2-NEXT:    notl %eax1374; AVX2-NEXT:    testb $1, %al1375; AVX2-NEXT:    jne .LBB2_11376; AVX2-NEXT:  # %bb.2: # %else1377; AVX2-NEXT:    testb $2, %al1378; AVX2-NEXT:    jne .LBB2_31379; AVX2-NEXT:  .LBB2_4: # %else21380; AVX2-NEXT:    testb $4, %al1381; AVX2-NEXT:    jne .LBB2_51382; AVX2-NEXT:  .LBB2_6: # %else41383; AVX2-NEXT:    testb $8, %al1384; AVX2-NEXT:    jne .LBB2_71385; AVX2-NEXT:  .LBB2_8: # %else61386; AVX2-NEXT:    testb $16, %al1387; AVX2-NEXT:    jne .LBB2_91388; AVX2-NEXT:  .LBB2_10: # %else81389; AVX2-NEXT:    testb $32, %al1390; AVX2-NEXT:    jne .LBB2_111391; AVX2-NEXT:  .LBB2_12: # %else101392; AVX2-NEXT:    testb $64, %al1393; AVX2-NEXT:    jne .LBB2_131394; AVX2-NEXT:  .LBB2_14: # %else121395; AVX2-NEXT:    testb $-128, %al1396; AVX2-NEXT:    jne .LBB2_151397; AVX2-NEXT:  .LBB2_16: # %else141398; AVX2-NEXT:    vzeroupper1399; AVX2-NEXT:    retq1400; AVX2-NEXT:  .LBB2_1: # %cond.store1401; AVX2-NEXT:    vpextrb $0, %xmm0, (%rdi)1402; AVX2-NEXT:    testb $2, %al1403; AVX2-NEXT:    je .LBB2_41404; AVX2-NEXT:  .LBB2_3: # %cond.store11405; AVX2-NEXT:    vpextrb $1, %xmm0, 1(%rdi)1406; AVX2-NEXT:    testb $4, %al1407; AVX2-NEXT:    je .LBB2_61408; AVX2-NEXT:  .LBB2_5: # %cond.store31409; AVX2-NEXT:    vpextrb $2, %xmm0, 2(%rdi)1410; AVX2-NEXT:    testb $8, %al1411; AVX2-NEXT:    je .LBB2_81412; AVX2-NEXT:  .LBB2_7: # %cond.store51413; AVX2-NEXT:    vpextrb $3, %xmm0, 3(%rdi)1414; AVX2-NEXT:    testb $16, %al1415; AVX2-NEXT:    je .LBB2_101416; AVX2-NEXT:  .LBB2_9: # %cond.store71417; AVX2-NEXT:    vpextrb $4, %xmm0, 4(%rdi)1418; AVX2-NEXT:    testb $32, %al1419; AVX2-NEXT:    je .LBB2_121420; AVX2-NEXT:  .LBB2_11: # %cond.store91421; AVX2-NEXT:    vpextrb $5, %xmm0, 5(%rdi)1422; AVX2-NEXT:    testb $64, %al1423; AVX2-NEXT:    je .LBB2_141424; AVX2-NEXT:  .LBB2_13: # %cond.store111425; AVX2-NEXT:    vpextrb $6, %xmm0, 6(%rdi)1426; AVX2-NEXT:    testb $-128, %al1427; AVX2-NEXT:    je .LBB2_161428; AVX2-NEXT:  .LBB2_15: # %cond.store131429; AVX2-NEXT:    vpextrb $7, %xmm0, 7(%rdi)1430; AVX2-NEXT:    vzeroupper1431; AVX2-NEXT:    retq1432;1433; AVX512F-LABEL: truncstore_v8i64_v8i8:1434; AVX512F:       # %bb.0:1435; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11436; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k01437; AVX512F-NEXT:    vpmovsqb %zmm0, %xmm01438; AVX512F-NEXT:    kmovw %k0, %eax1439; AVX512F-NEXT:    testb $1, %al1440; AVX512F-NEXT:    jne .LBB2_11441; AVX512F-NEXT:  # %bb.2: # %else1442; AVX512F-NEXT:    testb $2, %al1443; AVX512F-NEXT:    jne .LBB2_31444; AVX512F-NEXT:  .LBB2_4: # %else21445; AVX512F-NEXT:    testb $4, %al1446; AVX512F-NEXT:    jne .LBB2_51447; AVX512F-NEXT:  .LBB2_6: # %else41448; AVX512F-NEXT:    testb $8, %al1449; AVX512F-NEXT:    jne .LBB2_71450; AVX512F-NEXT:  .LBB2_8: # %else61451; AVX512F-NEXT:    testb $16, %al1452; AVX512F-NEXT:    jne .LBB2_91453; AVX512F-NEXT:  .LBB2_10: # %else81454; AVX512F-NEXT:    testb $32, %al1455; AVX512F-NEXT:    jne .LBB2_111456; AVX512F-NEXT:  .LBB2_12: # %else101457; AVX512F-NEXT:    testb $64, %al1458; AVX512F-NEXT:    jne .LBB2_131459; AVX512F-NEXT:  .LBB2_14: # %else121460; AVX512F-NEXT:    testb $-128, %al1461; AVX512F-NEXT:    jne .LBB2_151462; AVX512F-NEXT:  .LBB2_16: # %else141463; AVX512F-NEXT:    vzeroupper1464; AVX512F-NEXT:    retq1465; AVX512F-NEXT:  .LBB2_1: # %cond.store1466; AVX512F-NEXT:    vpextrb $0, %xmm0, (%rdi)1467; AVX512F-NEXT:    testb $2, %al1468; AVX512F-NEXT:    je .LBB2_41469; AVX512F-NEXT:  .LBB2_3: # %cond.store11470; AVX512F-NEXT:    vpextrb $1, %xmm0, 1(%rdi)1471; AVX512F-NEXT:    testb $4, %al1472; AVX512F-NEXT:    je .LBB2_61473; AVX512F-NEXT:  .LBB2_5: # %cond.store31474; AVX512F-NEXT:    vpextrb $2, %xmm0, 2(%rdi)1475; AVX512F-NEXT:    testb $8, %al1476; AVX512F-NEXT:    je .LBB2_81477; AVX512F-NEXT:  .LBB2_7: # %cond.store51478; AVX512F-NEXT:    vpextrb $3, %xmm0, 3(%rdi)1479; AVX512F-NEXT:    testb $16, %al1480; AVX512F-NEXT:    je .LBB2_101481; AVX512F-NEXT:  .LBB2_9: # %cond.store71482; AVX512F-NEXT:    vpextrb $4, %xmm0, 4(%rdi)1483; AVX512F-NEXT:    testb $32, %al1484; AVX512F-NEXT:    je .LBB2_121485; AVX512F-NEXT:  .LBB2_11: # %cond.store91486; AVX512F-NEXT:    vpextrb $5, %xmm0, 5(%rdi)1487; AVX512F-NEXT:    testb $64, %al1488; AVX512F-NEXT:    je .LBB2_141489; AVX512F-NEXT:  .LBB2_13: # %cond.store111490; AVX512F-NEXT:    vpextrb $6, %xmm0, 6(%rdi)1491; AVX512F-NEXT:    testb $-128, %al1492; AVX512F-NEXT:    je .LBB2_161493; AVX512F-NEXT:  .LBB2_15: # %cond.store131494; AVX512F-NEXT:    vpextrb $7, %xmm0, 7(%rdi)1495; AVX512F-NEXT:    vzeroupper1496; AVX512F-NEXT:    retq1497;1498; AVX512FVL-LABEL: truncstore_v8i64_v8i8:1499; AVX512FVL:       # %bb.0:1500; AVX512FVL-NEXT:    vptestmd %ymm1, %ymm1, %k01501; AVX512FVL-NEXT:    vpmovsqb %zmm0, %xmm01502; AVX512FVL-NEXT:    kmovw %k0, %eax1503; AVX512FVL-NEXT:    testb $1, %al1504; AVX512FVL-NEXT:    jne .LBB2_11505; AVX512FVL-NEXT:  # %bb.2: # %else1506; AVX512FVL-NEXT:    testb $2, %al1507; AVX512FVL-NEXT:    jne .LBB2_31508; AVX512FVL-NEXT:  .LBB2_4: # %else21509; AVX512FVL-NEXT:    testb $4, %al1510; AVX512FVL-NEXT:    jne .LBB2_51511; AVX512FVL-NEXT:  .LBB2_6: # %else41512; AVX512FVL-NEXT:    testb $8, %al1513; AVX512FVL-NEXT:    jne .LBB2_71514; AVX512FVL-NEXT:  .LBB2_8: # %else61515; AVX512FVL-NEXT:    testb $16, %al1516; AVX512FVL-NEXT:    jne .LBB2_91517; AVX512FVL-NEXT:  .LBB2_10: # %else81518; AVX512FVL-NEXT:    testb $32, %al1519; AVX512FVL-NEXT:    jne .LBB2_111520; AVX512FVL-NEXT:  .LBB2_12: # %else101521; AVX512FVL-NEXT:    testb $64, %al1522; AVX512FVL-NEXT:    jne .LBB2_131523; AVX512FVL-NEXT:  .LBB2_14: # %else121524; AVX512FVL-NEXT:    testb $-128, %al1525; AVX512FVL-NEXT:    jne .LBB2_151526; AVX512FVL-NEXT:  .LBB2_16: # %else141527; AVX512FVL-NEXT:    vzeroupper1528; AVX512FVL-NEXT:    retq1529; AVX512FVL-NEXT:  .LBB2_1: # %cond.store1530; AVX512FVL-NEXT:    vpextrb $0, %xmm0, (%rdi)1531; AVX512FVL-NEXT:    testb $2, %al1532; AVX512FVL-NEXT:    je .LBB2_41533; AVX512FVL-NEXT:  .LBB2_3: # %cond.store11534; AVX512FVL-NEXT:    vpextrb $1, %xmm0, 1(%rdi)1535; AVX512FVL-NEXT:    testb $4, %al1536; AVX512FVL-NEXT:    je .LBB2_61537; AVX512FVL-NEXT:  .LBB2_5: # %cond.store31538; AVX512FVL-NEXT:    vpextrb $2, %xmm0, 2(%rdi)1539; AVX512FVL-NEXT:    testb $8, %al1540; AVX512FVL-NEXT:    je .LBB2_81541; AVX512FVL-NEXT:  .LBB2_7: # %cond.store51542; AVX512FVL-NEXT:    vpextrb $3, %xmm0, 3(%rdi)1543; AVX512FVL-NEXT:    testb $16, %al1544; AVX512FVL-NEXT:    je .LBB2_101545; AVX512FVL-NEXT:  .LBB2_9: # %cond.store71546; AVX512FVL-NEXT:    vpextrb $4, %xmm0, 4(%rdi)1547; AVX512FVL-NEXT:    testb $32, %al1548; AVX512FVL-NEXT:    je .LBB2_121549; AVX512FVL-NEXT:  .LBB2_11: # %cond.store91550; AVX512FVL-NEXT:    vpextrb $5, %xmm0, 5(%rdi)1551; AVX512FVL-NEXT:    testb $64, %al1552; AVX512FVL-NEXT:    je .LBB2_141553; AVX512FVL-NEXT:  .LBB2_13: # %cond.store111554; AVX512FVL-NEXT:    vpextrb $6, %xmm0, 6(%rdi)1555; AVX512FVL-NEXT:    testb $-128, %al1556; AVX512FVL-NEXT:    je .LBB2_161557; AVX512FVL-NEXT:  .LBB2_15: # %cond.store131558; AVX512FVL-NEXT:    vpextrb $7, %xmm0, 7(%rdi)1559; AVX512FVL-NEXT:    vzeroupper1560; AVX512FVL-NEXT:    retq1561;1562; AVX512BW-LABEL: truncstore_v8i64_v8i8:1563; AVX512BW:       # %bb.0:1564; AVX512BW-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11565; AVX512BW-NEXT:    vptestmd %zmm1, %zmm1, %k11566; AVX512BW-NEXT:    vpminsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm01567; AVX512BW-NEXT:    vpmaxsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm01568; AVX512BW-NEXT:    vpmovqb %zmm0, (%rdi) {%k1}1569; AVX512BW-NEXT:    vzeroupper1570; AVX512BW-NEXT:    retq1571;1572; AVX512BWVL-LABEL: truncstore_v8i64_v8i8:1573; AVX512BWVL:       # %bb.0:1574; AVX512BWVL-NEXT:    vptestmd %ymm1, %ymm1, %k11575; AVX512BWVL-NEXT:    vpminsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm01576; AVX512BWVL-NEXT:    vpmaxsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm01577; AVX512BWVL-NEXT:    vpmovqb %zmm0, (%rdi) {%k1}1578; AVX512BWVL-NEXT:    vzeroupper1579; AVX512BWVL-NEXT:    retq1580  %a = icmp ne <8 x i32> %mask, zeroinitializer1581  %b = icmp slt <8 x i64> %x, <i64 127, i64 127, i64 127, i64 127, i64 127, i64 127, i64 127, i64 127>1582  %c = select <8 x i1> %b, <8 x i64> %x, <8 x i64> <i64 127, i64 127, i64 127, i64 127, i64 127, i64 127, i64 127, i64 127>1583  %d = icmp sgt <8 x i64> %c, <i64 -128, i64 -128, i64 -128, i64 -128, i64 -128, i64 -128, i64 -128, i64 -128>1584  %e = select <8 x i1> %d, <8 x i64> %c, <8 x i64> <i64 -128, i64 -128, i64 -128, i64 -128, i64 -128, i64 -128, i64 -128, i64 -128>1585  %f = trunc <8 x i64> %e to <8 x i8>1586  call void @llvm.masked.store.v8i8.p0(<8 x i8> %f, ptr %p, i32 1, <8 x i1> %a)1587  ret void1588}1589 1590define void @truncstore_v4i64_v4i32(<4 x i64> %x, ptr %p, <4 x i32> %mask) {1591; SSE2-LABEL: truncstore_v4i64_v4i32:1592; SSE2:       # %bb.0:1593; SSE2-NEXT:    pxor %xmm3, %xmm31594; SSE2-NEXT:    movdqa {{.*#+}} xmm6 = [2147483647,2147483647]1595; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]1596; SSE2-NEXT:    movdqa %xmm0, %xmm51597; SSE2-NEXT:    pxor %xmm4, %xmm51598; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm5[1,1,3,3]1599; SSE2-NEXT:    pcmpeqd %xmm3, %xmm71600; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [4294967295,4294967295]1601; SSE2-NEXT:    movdqa %xmm8, %xmm91602; SSE2-NEXT:    pcmpgtd %xmm5, %xmm91603; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]1604; SSE2-NEXT:    pand %xmm7, %xmm101605; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]1606; SSE2-NEXT:    por %xmm10, %xmm51607; SSE2-NEXT:    pand %xmm5, %xmm01608; SSE2-NEXT:    pandn %xmm6, %xmm51609; SSE2-NEXT:    por %xmm0, %xmm51610; SSE2-NEXT:    movdqa %xmm1, %xmm01611; SSE2-NEXT:    pxor %xmm4, %xmm01612; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm0[1,1,3,3]1613; SSE2-NEXT:    pcmpeqd %xmm3, %xmm71614; SSE2-NEXT:    pcmpgtd %xmm0, %xmm81615; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm8[0,0,2,2]1616; SSE2-NEXT:    pand %xmm7, %xmm01617; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm8[1,1,3,3]1618; SSE2-NEXT:    por %xmm0, %xmm71619; SSE2-NEXT:    pand %xmm7, %xmm11620; SSE2-NEXT:    pandn %xmm6, %xmm71621; SSE2-NEXT:    por %xmm1, %xmm71622; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [18446744071562067968,18446744071562067968]1623; SSE2-NEXT:    movdqa %xmm7, %xmm01624; SSE2-NEXT:    pxor %xmm4, %xmm01625; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]1626; SSE2-NEXT:    pcmpeqd %xmm8, %xmm81627; SSE2-NEXT:    pcmpeqd %xmm8, %xmm61628; SSE2-NEXT:    movdqa {{.*#+}} xmm9 = [18446744069414584320,18446744069414584320]1629; SSE2-NEXT:    pcmpgtd %xmm9, %xmm01630; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm0[0,0,2,2]1631; SSE2-NEXT:    pand %xmm6, %xmm101632; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]1633; SSE2-NEXT:    por %xmm10, %xmm61634; SSE2-NEXT:    pand %xmm6, %xmm71635; SSE2-NEXT:    pandn %xmm1, %xmm61636; SSE2-NEXT:    por %xmm7, %xmm61637; SSE2-NEXT:    pxor %xmm5, %xmm41638; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]1639; SSE2-NEXT:    pcmpeqd %xmm8, %xmm01640; SSE2-NEXT:    pcmpgtd %xmm9, %xmm41641; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm4[0,0,2,2]1642; SSE2-NEXT:    pand %xmm0, %xmm71643; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]1644; SSE2-NEXT:    por %xmm7, %xmm01645; SSE2-NEXT:    pand %xmm0, %xmm51646; SSE2-NEXT:    pandn %xmm1, %xmm01647; SSE2-NEXT:    por %xmm5, %xmm01648; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,2],xmm6[0,2]1649; SSE2-NEXT:    pcmpeqd %xmm3, %xmm21650; SSE2-NEXT:    movmskps %xmm2, %eax1651; SSE2-NEXT:    xorl $15, %eax1652; SSE2-NEXT:    testb $1, %al1653; SSE2-NEXT:    jne .LBB3_11654; SSE2-NEXT:  # %bb.2: # %else1655; SSE2-NEXT:    testb $2, %al1656; SSE2-NEXT:    jne .LBB3_31657; SSE2-NEXT:  .LBB3_4: # %else21658; SSE2-NEXT:    testb $4, %al1659; SSE2-NEXT:    jne .LBB3_51660; SSE2-NEXT:  .LBB3_6: # %else41661; SSE2-NEXT:    testb $8, %al1662; SSE2-NEXT:    jne .LBB3_71663; SSE2-NEXT:  .LBB3_8: # %else61664; SSE2-NEXT:    retq1665; SSE2-NEXT:  .LBB3_1: # %cond.store1666; SSE2-NEXT:    movss %xmm0, (%rdi)1667; SSE2-NEXT:    testb $2, %al1668; SSE2-NEXT:    je .LBB3_41669; SSE2-NEXT:  .LBB3_3: # %cond.store11670; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]1671; SSE2-NEXT:    movd %xmm1, 4(%rdi)1672; SSE2-NEXT:    testb $4, %al1673; SSE2-NEXT:    je .LBB3_61674; SSE2-NEXT:  .LBB3_5: # %cond.store31675; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]1676; SSE2-NEXT:    movd %xmm1, 8(%rdi)1677; SSE2-NEXT:    testb $8, %al1678; SSE2-NEXT:    je .LBB3_81679; SSE2-NEXT:  .LBB3_7: # %cond.store51680; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]1681; SSE2-NEXT:    movd %xmm0, 12(%rdi)1682; SSE2-NEXT:    retq1683;1684; SSE4-LABEL: truncstore_v4i64_v4i32:1685; SSE4:       # %bb.0:1686; SSE4-NEXT:    movdqa %xmm0, %xmm31687; SSE4-NEXT:    pxor %xmm4, %xmm41688; SSE4-NEXT:    pmovsxdq {{.*#+}} xmm5 = [2147483647,2147483647]1689; SSE4-NEXT:    movdqa %xmm5, %xmm01690; SSE4-NEXT:    pcmpgtq %xmm3, %xmm01691; SSE4-NEXT:    movdqa %xmm5, %xmm61692; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm61693; SSE4-NEXT:    movdqa %xmm5, %xmm01694; SSE4-NEXT:    pcmpgtq %xmm1, %xmm01695; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm51696; SSE4-NEXT:    pmovsxdq {{.*#+}} xmm1 = [18446744071562067968,18446744071562067968]1697; SSE4-NEXT:    movapd %xmm5, %xmm01698; SSE4-NEXT:    pcmpgtq %xmm1, %xmm01699; SSE4-NEXT:    movdqa %xmm1, %xmm31700; SSE4-NEXT:    blendvpd %xmm0, %xmm5, %xmm31701; SSE4-NEXT:    movapd %xmm6, %xmm01702; SSE4-NEXT:    pcmpgtq %xmm1, %xmm01703; SSE4-NEXT:    blendvpd %xmm0, %xmm6, %xmm11704; SSE4-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,2],xmm3[0,2]1705; SSE4-NEXT:    pcmpeqd %xmm2, %xmm41706; SSE4-NEXT:    movmskps %xmm4, %eax1707; SSE4-NEXT:    xorl $15, %eax1708; SSE4-NEXT:    testb $1, %al1709; SSE4-NEXT:    jne .LBB3_11710; SSE4-NEXT:  # %bb.2: # %else1711; SSE4-NEXT:    testb $2, %al1712; SSE4-NEXT:    jne .LBB3_31713; SSE4-NEXT:  .LBB3_4: # %else21714; SSE4-NEXT:    testb $4, %al1715; SSE4-NEXT:    jne .LBB3_51716; SSE4-NEXT:  .LBB3_6: # %else41717; SSE4-NEXT:    testb $8, %al1718; SSE4-NEXT:    jne .LBB3_71719; SSE4-NEXT:  .LBB3_8: # %else61720; SSE4-NEXT:    retq1721; SSE4-NEXT:  .LBB3_1: # %cond.store1722; SSE4-NEXT:    movss %xmm1, (%rdi)1723; SSE4-NEXT:    testb $2, %al1724; SSE4-NEXT:    je .LBB3_41725; SSE4-NEXT:  .LBB3_3: # %cond.store11726; SSE4-NEXT:    extractps $1, %xmm1, 4(%rdi)1727; SSE4-NEXT:    testb $4, %al1728; SSE4-NEXT:    je .LBB3_61729; SSE4-NEXT:  .LBB3_5: # %cond.store31730; SSE4-NEXT:    extractps $2, %xmm1, 8(%rdi)1731; SSE4-NEXT:    testb $8, %al1732; SSE4-NEXT:    je .LBB3_81733; SSE4-NEXT:  .LBB3_7: # %cond.store51734; SSE4-NEXT:    extractps $3, %xmm1, 12(%rdi)1735; SSE4-NEXT:    retq1736;1737; AVX1-LABEL: truncstore_v4i64_v4i32:1738; AVX1:       # %bb.0:1739; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm21740; AVX1-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm11741; AVX1-NEXT:    vpcmpeqd %xmm2, %xmm2, %xmm21742; AVX1-NEXT:    vpxor %xmm2, %xmm1, %xmm11743; AVX1-NEXT:    vmovddup {{.*#+}} xmm2 = [2147483647,2147483647]1744; AVX1-NEXT:    # xmm2 = mem[0,0]1745; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm2, %xmm31746; AVX1-NEXT:    vblendvpd %xmm3, %xmm0, %xmm2, %xmm31747; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm01748; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm2, %xmm41749; AVX1-NEXT:    vblendvpd %xmm4, %xmm0, %xmm2, %xmm01750; AVX1-NEXT:    vmovddup {{.*#+}} xmm2 = [18446744071562067968,18446744071562067968]1751; AVX1-NEXT:    # xmm2 = mem[0,0]1752; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm0, %xmm41753; AVX1-NEXT:    vblendvpd %xmm4, %xmm0, %xmm2, %xmm01754; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm41755; AVX1-NEXT:    vblendvpd %xmm4, %xmm3, %xmm2, %xmm21756; AVX1-NEXT:    vshufps {{.*#+}} xmm0 = xmm2[0,2],xmm0[0,2]1757; AVX1-NEXT:    vmaskmovps %xmm0, %xmm1, (%rdi)1758; AVX1-NEXT:    vzeroupper1759; AVX1-NEXT:    retq1760;1761; AVX2-LABEL: truncstore_v4i64_v4i32:1762; AVX2:       # %bb.0:1763; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm21764; AVX2-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm11765; AVX2-NEXT:    vpcmpeqd %xmm2, %xmm2, %xmm21766; AVX2-NEXT:    vpxor %xmm2, %xmm1, %xmm11767; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [2147483647,2147483647,2147483647,2147483647]1768; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm2, %ymm31769; AVX2-NEXT:    vblendvpd %ymm3, %ymm0, %ymm2, %ymm01770; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [18446744071562067968,18446744071562067968,18446744071562067968,18446744071562067968]1771; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm0, %ymm31772; AVX2-NEXT:    vblendvpd %ymm3, %ymm0, %ymm2, %ymm01773; AVX2-NEXT:    vextractf128 $1, %ymm0, %xmm21774; AVX2-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[0,2],xmm2[0,2]1775; AVX2-NEXT:    vpmaskmovd %xmm0, %xmm1, (%rdi)1776; AVX2-NEXT:    vzeroupper1777; AVX2-NEXT:    retq1778;1779; AVX512-LABEL: truncstore_v4i64_v4i32:1780; AVX512:       # %bb.0:1781; AVX512-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11782; AVX512-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01783; AVX512-NEXT:    vptestmd %zmm1, %zmm1, %k01784; AVX512-NEXT:    kshiftlw $12, %k0, %k01785; AVX512-NEXT:    kshiftrw $12, %k0, %k11786; AVX512-NEXT:    vpmovsqd %zmm0, %ymm01787; AVX512-NEXT:    vmovdqu32 %zmm0, (%rdi) {%k1}1788; AVX512-NEXT:    vzeroupper1789; AVX512-NEXT:    retq1790;1791; AVX512VL-LABEL: truncstore_v4i64_v4i32:1792; AVX512VL:       # %bb.0:1793; AVX512VL-NEXT:    vptestmd %xmm1, %xmm1, %k11794; AVX512VL-NEXT:    vpminsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %ymm0, %ymm01795; AVX512VL-NEXT:    vpmaxsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %ymm0, %ymm01796; AVX512VL-NEXT:    vpmovqd %ymm0, (%rdi) {%k1}1797; AVX512VL-NEXT:    vzeroupper1798; AVX512VL-NEXT:    retq1799  %a = icmp ne <4 x i32> %mask, zeroinitializer1800  %b = icmp slt <4 x i64> %x, <i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647>1801  %c = select <4 x i1> %b, <4 x i64> %x, <4 x i64> <i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647>1802  %d = icmp sgt <4 x i64> %c, <i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648>1803  %e = select <4 x i1> %d, <4 x i64> %c, <4 x i64> <i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648>1804  %f = trunc <4 x i64> %e to <4 x i32>1805  call void @llvm.masked.store.v4i32.p0(<4 x i32> %f, ptr %p, i32 1, <4 x i1> %a)1806  ret void1807}1808 1809define void @truncstore_v4i64_v4i16(<4 x i64> %x, ptr %p, <4 x i32> %mask) {1810; SSE2-LABEL: truncstore_v4i64_v4i16:1811; SSE2:       # %bb.0:1812; SSE2-NEXT:    pxor %xmm3, %xmm31813; SSE2-NEXT:    movdqa {{.*#+}} xmm6 = [32767,32767]1814; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]1815; SSE2-NEXT:    movdqa %xmm0, %xmm51816; SSE2-NEXT:    pxor %xmm4, %xmm51817; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm5[1,1,3,3]1818; SSE2-NEXT:    pcmpeqd %xmm3, %xmm71819; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147516415,2147516415]1820; SSE2-NEXT:    movdqa %xmm8, %xmm91821; SSE2-NEXT:    pcmpgtd %xmm5, %xmm91822; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]1823; SSE2-NEXT:    pand %xmm7, %xmm101824; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]1825; SSE2-NEXT:    por %xmm10, %xmm51826; SSE2-NEXT:    pand %xmm5, %xmm01827; SSE2-NEXT:    pandn %xmm6, %xmm51828; SSE2-NEXT:    por %xmm0, %xmm51829; SSE2-NEXT:    movdqa %xmm1, %xmm01830; SSE2-NEXT:    pxor %xmm4, %xmm01831; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm0[1,1,3,3]1832; SSE2-NEXT:    pcmpeqd %xmm3, %xmm71833; SSE2-NEXT:    pcmpgtd %xmm0, %xmm81834; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm8[0,0,2,2]1835; SSE2-NEXT:    pand %xmm7, %xmm01836; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm8[1,1,3,3]1837; SSE2-NEXT:    por %xmm0, %xmm71838; SSE2-NEXT:    pand %xmm7, %xmm11839; SSE2-NEXT:    pandn %xmm6, %xmm71840; SSE2-NEXT:    por %xmm1, %xmm71841; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [18446744073709518848,18446744073709518848]1842; SSE2-NEXT:    movdqa %xmm7, %xmm01843; SSE2-NEXT:    pxor %xmm4, %xmm01844; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]1845; SSE2-NEXT:    pcmpeqd %xmm8, %xmm81846; SSE2-NEXT:    pcmpeqd %xmm8, %xmm61847; SSE2-NEXT:    movdqa {{.*#+}} xmm9 = [18446744071562035200,18446744071562035200]1848; SSE2-NEXT:    pcmpgtd %xmm9, %xmm01849; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm0[0,0,2,2]1850; SSE2-NEXT:    pand %xmm6, %xmm101851; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]1852; SSE2-NEXT:    por %xmm10, %xmm61853; SSE2-NEXT:    pand %xmm6, %xmm71854; SSE2-NEXT:    pandn %xmm1, %xmm61855; SSE2-NEXT:    por %xmm7, %xmm61856; SSE2-NEXT:    pxor %xmm5, %xmm41857; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]1858; SSE2-NEXT:    pcmpeqd %xmm8, %xmm01859; SSE2-NEXT:    pcmpgtd %xmm9, %xmm41860; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm4[0,0,2,2]1861; SSE2-NEXT:    pand %xmm0, %xmm71862; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]1863; SSE2-NEXT:    por %xmm7, %xmm01864; SSE2-NEXT:    pand %xmm0, %xmm51865; SSE2-NEXT:    pandn %xmm1, %xmm01866; SSE2-NEXT:    por %xmm5, %xmm01867; SSE2-NEXT:    packssdw %xmm6, %xmm01868; SSE2-NEXT:    packssdw %xmm0, %xmm01869; SSE2-NEXT:    pcmpeqd %xmm3, %xmm21870; SSE2-NEXT:    movmskps %xmm2, %eax1871; SSE2-NEXT:    xorl $15, %eax1872; SSE2-NEXT:    testb $1, %al1873; SSE2-NEXT:    jne .LBB4_11874; SSE2-NEXT:  # %bb.2: # %else1875; SSE2-NEXT:    testb $2, %al1876; SSE2-NEXT:    jne .LBB4_31877; SSE2-NEXT:  .LBB4_4: # %else21878; SSE2-NEXT:    testb $4, %al1879; SSE2-NEXT:    jne .LBB4_51880; SSE2-NEXT:  .LBB4_6: # %else41881; SSE2-NEXT:    testb $8, %al1882; SSE2-NEXT:    jne .LBB4_71883; SSE2-NEXT:  .LBB4_8: # %else61884; SSE2-NEXT:    retq1885; SSE2-NEXT:  .LBB4_1: # %cond.store1886; SSE2-NEXT:    movd %xmm0, %ecx1887; SSE2-NEXT:    movw %cx, (%rdi)1888; SSE2-NEXT:    testb $2, %al1889; SSE2-NEXT:    je .LBB4_41890; SSE2-NEXT:  .LBB4_3: # %cond.store11891; SSE2-NEXT:    pextrw $1, %xmm0, %ecx1892; SSE2-NEXT:    movw %cx, 2(%rdi)1893; SSE2-NEXT:    testb $4, %al1894; SSE2-NEXT:    je .LBB4_61895; SSE2-NEXT:  .LBB4_5: # %cond.store31896; SSE2-NEXT:    pextrw $2, %xmm0, %ecx1897; SSE2-NEXT:    movw %cx, 4(%rdi)1898; SSE2-NEXT:    testb $8, %al1899; SSE2-NEXT:    je .LBB4_81900; SSE2-NEXT:  .LBB4_7: # %cond.store51901; SSE2-NEXT:    pextrw $3, %xmm0, %eax1902; SSE2-NEXT:    movw %ax, 6(%rdi)1903; SSE2-NEXT:    retq1904;1905; SSE4-LABEL: truncstore_v4i64_v4i16:1906; SSE4:       # %bb.0:1907; SSE4-NEXT:    movdqa %xmm0, %xmm31908; SSE4-NEXT:    pxor %xmm4, %xmm41909; SSE4-NEXT:    pmovsxwq {{.*#+}} xmm5 = [32767,32767]1910; SSE4-NEXT:    movdqa %xmm5, %xmm01911; SSE4-NEXT:    pcmpgtq %xmm3, %xmm01912; SSE4-NEXT:    movdqa %xmm5, %xmm61913; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm61914; SSE4-NEXT:    movdqa %xmm5, %xmm01915; SSE4-NEXT:    pcmpgtq %xmm1, %xmm01916; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm51917; SSE4-NEXT:    pmovsxwq {{.*#+}} xmm1 = [18446744073709518848,18446744073709518848]1918; SSE4-NEXT:    movapd %xmm5, %xmm01919; SSE4-NEXT:    pcmpgtq %xmm1, %xmm01920; SSE4-NEXT:    movdqa %xmm1, %xmm31921; SSE4-NEXT:    blendvpd %xmm0, %xmm5, %xmm31922; SSE4-NEXT:    movapd %xmm6, %xmm01923; SSE4-NEXT:    pcmpgtq %xmm1, %xmm01924; SSE4-NEXT:    blendvpd %xmm0, %xmm6, %xmm11925; SSE4-NEXT:    packssdw %xmm3, %xmm11926; SSE4-NEXT:    packssdw %xmm1, %xmm11927; SSE4-NEXT:    pcmpeqd %xmm2, %xmm41928; SSE4-NEXT:    movmskps %xmm4, %eax1929; SSE4-NEXT:    xorl $15, %eax1930; SSE4-NEXT:    testb $1, %al1931; SSE4-NEXT:    jne .LBB4_11932; SSE4-NEXT:  # %bb.2: # %else1933; SSE4-NEXT:    testb $2, %al1934; SSE4-NEXT:    jne .LBB4_31935; SSE4-NEXT:  .LBB4_4: # %else21936; SSE4-NEXT:    testb $4, %al1937; SSE4-NEXT:    jne .LBB4_51938; SSE4-NEXT:  .LBB4_6: # %else41939; SSE4-NEXT:    testb $8, %al1940; SSE4-NEXT:    jne .LBB4_71941; SSE4-NEXT:  .LBB4_8: # %else61942; SSE4-NEXT:    retq1943; SSE4-NEXT:  .LBB4_1: # %cond.store1944; SSE4-NEXT:    pextrw $0, %xmm1, (%rdi)1945; SSE4-NEXT:    testb $2, %al1946; SSE4-NEXT:    je .LBB4_41947; SSE4-NEXT:  .LBB4_3: # %cond.store11948; SSE4-NEXT:    pextrw $1, %xmm1, 2(%rdi)1949; SSE4-NEXT:    testb $4, %al1950; SSE4-NEXT:    je .LBB4_61951; SSE4-NEXT:  .LBB4_5: # %cond.store31952; SSE4-NEXT:    pextrw $2, %xmm1, 4(%rdi)1953; SSE4-NEXT:    testb $8, %al1954; SSE4-NEXT:    je .LBB4_81955; SSE4-NEXT:  .LBB4_7: # %cond.store51956; SSE4-NEXT:    pextrw $3, %xmm1, 6(%rdi)1957; SSE4-NEXT:    retq1958;1959; AVX1-LABEL: truncstore_v4i64_v4i16:1960; AVX1:       # %bb.0:1961; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm21962; AVX1-NEXT:    vpmovsxwq {{.*#+}} xmm3 = [32767,32767]1963; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm3, %xmm41964; AVX1-NEXT:    vblendvpd %xmm4, %xmm0, %xmm3, %xmm41965; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm01966; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm3, %xmm51967; AVX1-NEXT:    vblendvpd %xmm5, %xmm0, %xmm3, %xmm01968; AVX1-NEXT:    vpmovsxwq {{.*#+}} xmm3 = [18446744073709518848,18446744073709518848]1969; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm0, %xmm51970; AVX1-NEXT:    vblendvpd %xmm5, %xmm0, %xmm3, %xmm01971; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm4, %xmm51972; AVX1-NEXT:    vblendvpd %xmm5, %xmm4, %xmm3, %xmm31973; AVX1-NEXT:    vpackssdw %xmm0, %xmm3, %xmm01974; AVX1-NEXT:    vpackssdw %xmm0, %xmm0, %xmm01975; AVX1-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm11976; AVX1-NEXT:    vmovmskps %xmm1, %eax1977; AVX1-NEXT:    xorl $15, %eax1978; AVX1-NEXT:    testb $1, %al1979; AVX1-NEXT:    jne .LBB4_11980; AVX1-NEXT:  # %bb.2: # %else1981; AVX1-NEXT:    testb $2, %al1982; AVX1-NEXT:    jne .LBB4_31983; AVX1-NEXT:  .LBB4_4: # %else21984; AVX1-NEXT:    testb $4, %al1985; AVX1-NEXT:    jne .LBB4_51986; AVX1-NEXT:  .LBB4_6: # %else41987; AVX1-NEXT:    testb $8, %al1988; AVX1-NEXT:    jne .LBB4_71989; AVX1-NEXT:  .LBB4_8: # %else61990; AVX1-NEXT:    vzeroupper1991; AVX1-NEXT:    retq1992; AVX1-NEXT:  .LBB4_1: # %cond.store1993; AVX1-NEXT:    vpextrw $0, %xmm0, (%rdi)1994; AVX1-NEXT:    testb $2, %al1995; AVX1-NEXT:    je .LBB4_41996; AVX1-NEXT:  .LBB4_3: # %cond.store11997; AVX1-NEXT:    vpextrw $1, %xmm0, 2(%rdi)1998; AVX1-NEXT:    testb $4, %al1999; AVX1-NEXT:    je .LBB4_62000; AVX1-NEXT:  .LBB4_5: # %cond.store32001; AVX1-NEXT:    vpextrw $2, %xmm0, 4(%rdi)2002; AVX1-NEXT:    testb $8, %al2003; AVX1-NEXT:    je .LBB4_82004; AVX1-NEXT:  .LBB4_7: # %cond.store52005; AVX1-NEXT:    vpextrw $3, %xmm0, 6(%rdi)2006; AVX1-NEXT:    vzeroupper2007; AVX1-NEXT:    retq2008;2009; AVX2-LABEL: truncstore_v4i64_v4i16:2010; AVX2:       # %bb.0:2011; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm22012; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm3 = [32767,32767,32767,32767]2013; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm3, %ymm42014; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm3, %ymm02015; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm3 = [18446744073709518848,18446744073709518848,18446744073709518848,18446744073709518848]2016; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm0, %ymm42017; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm3, %ymm02018; AVX2-NEXT:    vextractf128 $1, %ymm0, %xmm32019; AVX2-NEXT:    vpackssdw %xmm3, %xmm0, %xmm02020; AVX2-NEXT:    vpackssdw %xmm0, %xmm0, %xmm02021; AVX2-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm12022; AVX2-NEXT:    vmovmskps %xmm1, %eax2023; AVX2-NEXT:    xorl $15, %eax2024; AVX2-NEXT:    testb $1, %al2025; AVX2-NEXT:    jne .LBB4_12026; AVX2-NEXT:  # %bb.2: # %else2027; AVX2-NEXT:    testb $2, %al2028; AVX2-NEXT:    jne .LBB4_32029; AVX2-NEXT:  .LBB4_4: # %else22030; AVX2-NEXT:    testb $4, %al2031; AVX2-NEXT:    jne .LBB4_52032; AVX2-NEXT:  .LBB4_6: # %else42033; AVX2-NEXT:    testb $8, %al2034; AVX2-NEXT:    jne .LBB4_72035; AVX2-NEXT:  .LBB4_8: # %else62036; AVX2-NEXT:    vzeroupper2037; AVX2-NEXT:    retq2038; AVX2-NEXT:  .LBB4_1: # %cond.store2039; AVX2-NEXT:    vpextrw $0, %xmm0, (%rdi)2040; AVX2-NEXT:    testb $2, %al2041; AVX2-NEXT:    je .LBB4_42042; AVX2-NEXT:  .LBB4_3: # %cond.store12043; AVX2-NEXT:    vpextrw $1, %xmm0, 2(%rdi)2044; AVX2-NEXT:    testb $4, %al2045; AVX2-NEXT:    je .LBB4_62046; AVX2-NEXT:  .LBB4_5: # %cond.store32047; AVX2-NEXT:    vpextrw $2, %xmm0, 4(%rdi)2048; AVX2-NEXT:    testb $8, %al2049; AVX2-NEXT:    je .LBB4_82050; AVX2-NEXT:  .LBB4_7: # %cond.store52051; AVX2-NEXT:    vpextrw $3, %xmm0, 6(%rdi)2052; AVX2-NEXT:    vzeroupper2053; AVX2-NEXT:    retq2054;2055; AVX512F-LABEL: truncstore_v4i64_v4i16:2056; AVX512F:       # %bb.0:2057; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12058; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02059; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k02060; AVX512F-NEXT:    vpmovsqw %zmm0, %xmm02061; AVX512F-NEXT:    kmovw %k0, %eax2062; AVX512F-NEXT:    testb $1, %al2063; AVX512F-NEXT:    jne .LBB4_12064; AVX512F-NEXT:  # %bb.2: # %else2065; AVX512F-NEXT:    testb $2, %al2066; AVX512F-NEXT:    jne .LBB4_32067; AVX512F-NEXT:  .LBB4_4: # %else22068; AVX512F-NEXT:    testb $4, %al2069; AVX512F-NEXT:    jne .LBB4_52070; AVX512F-NEXT:  .LBB4_6: # %else42071; AVX512F-NEXT:    testb $8, %al2072; AVX512F-NEXT:    jne .LBB4_72073; AVX512F-NEXT:  .LBB4_8: # %else62074; AVX512F-NEXT:    vzeroupper2075; AVX512F-NEXT:    retq2076; AVX512F-NEXT:  .LBB4_1: # %cond.store2077; AVX512F-NEXT:    vpextrw $0, %xmm0, (%rdi)2078; AVX512F-NEXT:    testb $2, %al2079; AVX512F-NEXT:    je .LBB4_42080; AVX512F-NEXT:  .LBB4_3: # %cond.store12081; AVX512F-NEXT:    vpextrw $1, %xmm0, 2(%rdi)2082; AVX512F-NEXT:    testb $4, %al2083; AVX512F-NEXT:    je .LBB4_62084; AVX512F-NEXT:  .LBB4_5: # %cond.store32085; AVX512F-NEXT:    vpextrw $2, %xmm0, 4(%rdi)2086; AVX512F-NEXT:    testb $8, %al2087; AVX512F-NEXT:    je .LBB4_82088; AVX512F-NEXT:  .LBB4_7: # %cond.store52089; AVX512F-NEXT:    vpextrw $3, %xmm0, 6(%rdi)2090; AVX512F-NEXT:    vzeroupper2091; AVX512F-NEXT:    retq2092;2093; AVX512FVL-LABEL: truncstore_v4i64_v4i16:2094; AVX512FVL:       # %bb.0:2095; AVX512FVL-NEXT:    vptestmd %xmm1, %xmm1, %k02096; AVX512FVL-NEXT:    vpmovsqw %ymm0, %xmm02097; AVX512FVL-NEXT:    kmovw %k0, %eax2098; AVX512FVL-NEXT:    testb $1, %al2099; AVX512FVL-NEXT:    jne .LBB4_12100; AVX512FVL-NEXT:  # %bb.2: # %else2101; AVX512FVL-NEXT:    testb $2, %al2102; AVX512FVL-NEXT:    jne .LBB4_32103; AVX512FVL-NEXT:  .LBB4_4: # %else22104; AVX512FVL-NEXT:    testb $4, %al2105; AVX512FVL-NEXT:    jne .LBB4_52106; AVX512FVL-NEXT:  .LBB4_6: # %else42107; AVX512FVL-NEXT:    testb $8, %al2108; AVX512FVL-NEXT:    jne .LBB4_72109; AVX512FVL-NEXT:  .LBB4_8: # %else62110; AVX512FVL-NEXT:    vzeroupper2111; AVX512FVL-NEXT:    retq2112; AVX512FVL-NEXT:  .LBB4_1: # %cond.store2113; AVX512FVL-NEXT:    vpextrw $0, %xmm0, (%rdi)2114; AVX512FVL-NEXT:    testb $2, %al2115; AVX512FVL-NEXT:    je .LBB4_42116; AVX512FVL-NEXT:  .LBB4_3: # %cond.store12117; AVX512FVL-NEXT:    vpextrw $1, %xmm0, 2(%rdi)2118; AVX512FVL-NEXT:    testb $4, %al2119; AVX512FVL-NEXT:    je .LBB4_62120; AVX512FVL-NEXT:  .LBB4_5: # %cond.store32121; AVX512FVL-NEXT:    vpextrw $2, %xmm0, 4(%rdi)2122; AVX512FVL-NEXT:    testb $8, %al2123; AVX512FVL-NEXT:    je .LBB4_82124; AVX512FVL-NEXT:  .LBB4_7: # %cond.store52125; AVX512FVL-NEXT:    vpextrw $3, %xmm0, 6(%rdi)2126; AVX512FVL-NEXT:    vzeroupper2127; AVX512FVL-NEXT:    retq2128;2129; AVX512BW-LABEL: truncstore_v4i64_v4i16:2130; AVX512BW:       # %bb.0:2131; AVX512BW-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12132; AVX512BW-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02133; AVX512BW-NEXT:    vptestmd %zmm1, %zmm1, %k02134; AVX512BW-NEXT:    kshiftld $28, %k0, %k02135; AVX512BW-NEXT:    kshiftrd $28, %k0, %k12136; AVX512BW-NEXT:    vpmovsqw %zmm0, %xmm02137; AVX512BW-NEXT:    vmovdqu16 %zmm0, (%rdi) {%k1}2138; AVX512BW-NEXT:    vzeroupper2139; AVX512BW-NEXT:    retq2140;2141; AVX512BWVL-LABEL: truncstore_v4i64_v4i16:2142; AVX512BWVL:       # %bb.0:2143; AVX512BWVL-NEXT:    vptestmd %xmm1, %xmm1, %k12144; AVX512BWVL-NEXT:    vpminsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %ymm0, %ymm02145; AVX512BWVL-NEXT:    vpmaxsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %ymm0, %ymm02146; AVX512BWVL-NEXT:    vpmovqw %ymm0, (%rdi) {%k1}2147; AVX512BWVL-NEXT:    vzeroupper2148; AVX512BWVL-NEXT:    retq2149  %a = icmp ne <4 x i32> %mask, zeroinitializer2150  %b = icmp slt <4 x i64> %x, <i64 32767, i64 32767, i64 32767, i64 32767>2151  %c = select <4 x i1> %b, <4 x i64> %x, <4 x i64> <i64 32767, i64 32767, i64 32767, i64 32767>2152  %d = icmp sgt <4 x i64> %c, <i64 -32768, i64 -32768, i64 -32768, i64 -32768>2153  %e = select <4 x i1> %d, <4 x i64> %c, <4 x i64> <i64 -32768, i64 -32768, i64 -32768, i64 -32768>2154  %f = trunc <4 x i64> %e to <4 x i16>2155  call void @llvm.masked.store.v4i16.p0(<4 x i16> %f, ptr %p, i32 1, <4 x i1> %a)2156  ret void2157}2158 2159define void @truncstore_v4i64_v4i8(<4 x i64> %x, ptr %p, <4 x i32> %mask) {2160; SSE2-LABEL: truncstore_v4i64_v4i8:2161; SSE2:       # %bb.0:2162; SSE2-NEXT:    pxor %xmm3, %xmm32163; SSE2-NEXT:    movdqa {{.*#+}} xmm6 = [127,127]2164; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]2165; SSE2-NEXT:    movdqa %xmm0, %xmm52166; SSE2-NEXT:    pxor %xmm4, %xmm52167; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm5[1,1,3,3]2168; SSE2-NEXT:    pcmpeqd %xmm3, %xmm72169; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483775,2147483775]2170; SSE2-NEXT:    movdqa %xmm8, %xmm92171; SSE2-NEXT:    pcmpgtd %xmm5, %xmm92172; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]2173; SSE2-NEXT:    pand %xmm7, %xmm102174; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]2175; SSE2-NEXT:    por %xmm10, %xmm52176; SSE2-NEXT:    pand %xmm5, %xmm02177; SSE2-NEXT:    pandn %xmm6, %xmm52178; SSE2-NEXT:    por %xmm0, %xmm52179; SSE2-NEXT:    movdqa %xmm1, %xmm02180; SSE2-NEXT:    pxor %xmm4, %xmm02181; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm0[1,1,3,3]2182; SSE2-NEXT:    pcmpeqd %xmm3, %xmm72183; SSE2-NEXT:    pcmpgtd %xmm0, %xmm82184; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm8[0,0,2,2]2185; SSE2-NEXT:    pand %xmm7, %xmm02186; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm8[1,1,3,3]2187; SSE2-NEXT:    por %xmm0, %xmm72188; SSE2-NEXT:    pand %xmm7, %xmm12189; SSE2-NEXT:    pandn %xmm6, %xmm72190; SSE2-NEXT:    por %xmm1, %xmm72191; SSE2-NEXT:    movdqa {{.*#+}} xmm0 = [18446744073709551488,18446744073709551488]2192; SSE2-NEXT:    movdqa %xmm7, %xmm12193; SSE2-NEXT:    pxor %xmm4, %xmm12194; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm1[1,1,3,3]2195; SSE2-NEXT:    pcmpeqd %xmm8, %xmm82196; SSE2-NEXT:    pcmpeqd %xmm8, %xmm62197; SSE2-NEXT:    movdqa {{.*#+}} xmm9 = [18446744071562067840,18446744071562067840]2198; SSE2-NEXT:    pcmpgtd %xmm9, %xmm12199; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm1[0,0,2,2]2200; SSE2-NEXT:    pand %xmm6, %xmm102201; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]2202; SSE2-NEXT:    por %xmm10, %xmm12203; SSE2-NEXT:    pand %xmm1, %xmm72204; SSE2-NEXT:    pandn %xmm0, %xmm12205; SSE2-NEXT:    por %xmm7, %xmm12206; SSE2-NEXT:    pxor %xmm5, %xmm42207; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm4[1,1,3,3]2208; SSE2-NEXT:    pcmpeqd %xmm8, %xmm62209; SSE2-NEXT:    pcmpgtd %xmm9, %xmm42210; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm4[0,0,2,2]2211; SSE2-NEXT:    pand %xmm6, %xmm72212; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]2213; SSE2-NEXT:    por %xmm7, %xmm42214; SSE2-NEXT:    pand %xmm4, %xmm52215; SSE2-NEXT:    pandn %xmm0, %xmm42216; SSE2-NEXT:    por %xmm5, %xmm42217; SSE2-NEXT:    packssdw %xmm1, %xmm42218; SSE2-NEXT:    packssdw %xmm4, %xmm42219; SSE2-NEXT:    packsswb %xmm4, %xmm42220; SSE2-NEXT:    pcmpeqd %xmm3, %xmm22221; SSE2-NEXT:    movmskps %xmm2, %ecx2222; SSE2-NEXT:    xorl $15, %ecx2223; SSE2-NEXT:    testb $1, %cl2224; SSE2-NEXT:    movd %xmm4, %eax2225; SSE2-NEXT:    jne .LBB5_12226; SSE2-NEXT:  # %bb.2: # %else2227; SSE2-NEXT:    testb $2, %cl2228; SSE2-NEXT:    jne .LBB5_32229; SSE2-NEXT:  .LBB5_4: # %else22230; SSE2-NEXT:    testb $4, %cl2231; SSE2-NEXT:    jne .LBB5_52232; SSE2-NEXT:  .LBB5_6: # %else42233; SSE2-NEXT:    testb $8, %cl2234; SSE2-NEXT:    jne .LBB5_72235; SSE2-NEXT:  .LBB5_8: # %else62236; SSE2-NEXT:    retq2237; SSE2-NEXT:  .LBB5_1: # %cond.store2238; SSE2-NEXT:    movb %al, (%rdi)2239; SSE2-NEXT:    testb $2, %cl2240; SSE2-NEXT:    je .LBB5_42241; SSE2-NEXT:  .LBB5_3: # %cond.store12242; SSE2-NEXT:    movb %ah, 1(%rdi)2243; SSE2-NEXT:    testb $4, %cl2244; SSE2-NEXT:    je .LBB5_62245; SSE2-NEXT:  .LBB5_5: # %cond.store32246; SSE2-NEXT:    movl %eax, %edx2247; SSE2-NEXT:    shrl $16, %edx2248; SSE2-NEXT:    movb %dl, 2(%rdi)2249; SSE2-NEXT:    testb $8, %cl2250; SSE2-NEXT:    je .LBB5_82251; SSE2-NEXT:  .LBB5_7: # %cond.store52252; SSE2-NEXT:    shrl $24, %eax2253; SSE2-NEXT:    movb %al, 3(%rdi)2254; SSE2-NEXT:    retq2255;2256; SSE4-LABEL: truncstore_v4i64_v4i8:2257; SSE4:       # %bb.0:2258; SSE4-NEXT:    movdqa %xmm0, %xmm32259; SSE4-NEXT:    pxor %xmm4, %xmm42260; SSE4-NEXT:    pmovsxbq {{.*#+}} xmm5 = [127,127]2261; SSE4-NEXT:    movdqa %xmm5, %xmm02262; SSE4-NEXT:    pcmpgtq %xmm3, %xmm02263; SSE4-NEXT:    movdqa %xmm5, %xmm62264; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm62265; SSE4-NEXT:    movdqa %xmm5, %xmm02266; SSE4-NEXT:    pcmpgtq %xmm1, %xmm02267; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm52268; SSE4-NEXT:    pmovsxbq {{.*#+}} xmm1 = [18446744073709551488,18446744073709551488]2269; SSE4-NEXT:    movapd %xmm5, %xmm02270; SSE4-NEXT:    pcmpgtq %xmm1, %xmm02271; SSE4-NEXT:    movdqa %xmm1, %xmm32272; SSE4-NEXT:    blendvpd %xmm0, %xmm5, %xmm32273; SSE4-NEXT:    movapd %xmm6, %xmm02274; SSE4-NEXT:    pcmpgtq %xmm1, %xmm02275; SSE4-NEXT:    blendvpd %xmm0, %xmm6, %xmm12276; SSE4-NEXT:    packssdw %xmm3, %xmm12277; SSE4-NEXT:    packssdw %xmm1, %xmm12278; SSE4-NEXT:    packsswb %xmm1, %xmm12279; SSE4-NEXT:    pcmpeqd %xmm2, %xmm42280; SSE4-NEXT:    movmskps %xmm4, %eax2281; SSE4-NEXT:    xorl $15, %eax2282; SSE4-NEXT:    testb $1, %al2283; SSE4-NEXT:    jne .LBB5_12284; SSE4-NEXT:  # %bb.2: # %else2285; SSE4-NEXT:    testb $2, %al2286; SSE4-NEXT:    jne .LBB5_32287; SSE4-NEXT:  .LBB5_4: # %else22288; SSE4-NEXT:    testb $4, %al2289; SSE4-NEXT:    jne .LBB5_52290; SSE4-NEXT:  .LBB5_6: # %else42291; SSE4-NEXT:    testb $8, %al2292; SSE4-NEXT:    jne .LBB5_72293; SSE4-NEXT:  .LBB5_8: # %else62294; SSE4-NEXT:    retq2295; SSE4-NEXT:  .LBB5_1: # %cond.store2296; SSE4-NEXT:    pextrb $0, %xmm1, (%rdi)2297; SSE4-NEXT:    testb $2, %al2298; SSE4-NEXT:    je .LBB5_42299; SSE4-NEXT:  .LBB5_3: # %cond.store12300; SSE4-NEXT:    pextrb $1, %xmm1, 1(%rdi)2301; SSE4-NEXT:    testb $4, %al2302; SSE4-NEXT:    je .LBB5_62303; SSE4-NEXT:  .LBB5_5: # %cond.store32304; SSE4-NEXT:    pextrb $2, %xmm1, 2(%rdi)2305; SSE4-NEXT:    testb $8, %al2306; SSE4-NEXT:    je .LBB5_82307; SSE4-NEXT:  .LBB5_7: # %cond.store52308; SSE4-NEXT:    pextrb $3, %xmm1, 3(%rdi)2309; SSE4-NEXT:    retq2310;2311; AVX1-LABEL: truncstore_v4i64_v4i8:2312; AVX1:       # %bb.0:2313; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm22314; AVX1-NEXT:    vpmovsxbq {{.*#+}} xmm3 = [127,127]2315; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm3, %xmm42316; AVX1-NEXT:    vblendvpd %xmm4, %xmm0, %xmm3, %xmm42317; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02318; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm3, %xmm52319; AVX1-NEXT:    vblendvpd %xmm5, %xmm0, %xmm3, %xmm02320; AVX1-NEXT:    vpmovsxbq {{.*#+}} xmm3 = [18446744073709551488,18446744073709551488]2321; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm0, %xmm52322; AVX1-NEXT:    vblendvpd %xmm5, %xmm0, %xmm3, %xmm02323; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm4, %xmm52324; AVX1-NEXT:    vblendvpd %xmm5, %xmm4, %xmm3, %xmm32325; AVX1-NEXT:    vpackssdw %xmm0, %xmm3, %xmm02326; AVX1-NEXT:    vpackssdw %xmm0, %xmm0, %xmm02327; AVX1-NEXT:    vpacksswb %xmm0, %xmm0, %xmm02328; AVX1-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm12329; AVX1-NEXT:    vmovmskps %xmm1, %eax2330; AVX1-NEXT:    xorl $15, %eax2331; AVX1-NEXT:    testb $1, %al2332; AVX1-NEXT:    jne .LBB5_12333; AVX1-NEXT:  # %bb.2: # %else2334; AVX1-NEXT:    testb $2, %al2335; AVX1-NEXT:    jne .LBB5_32336; AVX1-NEXT:  .LBB5_4: # %else22337; AVX1-NEXT:    testb $4, %al2338; AVX1-NEXT:    jne .LBB5_52339; AVX1-NEXT:  .LBB5_6: # %else42340; AVX1-NEXT:    testb $8, %al2341; AVX1-NEXT:    jne .LBB5_72342; AVX1-NEXT:  .LBB5_8: # %else62343; AVX1-NEXT:    vzeroupper2344; AVX1-NEXT:    retq2345; AVX1-NEXT:  .LBB5_1: # %cond.store2346; AVX1-NEXT:    vpextrb $0, %xmm0, (%rdi)2347; AVX1-NEXT:    testb $2, %al2348; AVX1-NEXT:    je .LBB5_42349; AVX1-NEXT:  .LBB5_3: # %cond.store12350; AVX1-NEXT:    vpextrb $1, %xmm0, 1(%rdi)2351; AVX1-NEXT:    testb $4, %al2352; AVX1-NEXT:    je .LBB5_62353; AVX1-NEXT:  .LBB5_5: # %cond.store32354; AVX1-NEXT:    vpextrb $2, %xmm0, 2(%rdi)2355; AVX1-NEXT:    testb $8, %al2356; AVX1-NEXT:    je .LBB5_82357; AVX1-NEXT:  .LBB5_7: # %cond.store52358; AVX1-NEXT:    vpextrb $3, %xmm0, 3(%rdi)2359; AVX1-NEXT:    vzeroupper2360; AVX1-NEXT:    retq2361;2362; AVX2-LABEL: truncstore_v4i64_v4i8:2363; AVX2:       # %bb.0:2364; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm22365; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm3 = [127,127,127,127]2366; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm3, %ymm42367; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm3, %ymm02368; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm3 = [18446744073709551488,18446744073709551488,18446744073709551488,18446744073709551488]2369; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm0, %ymm42370; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm3, %ymm02371; AVX2-NEXT:    vextractf128 $1, %ymm0, %xmm32372; AVX2-NEXT:    vpackssdw %xmm3, %xmm0, %xmm02373; AVX2-NEXT:    vpackssdw %xmm0, %xmm0, %xmm02374; AVX2-NEXT:    vpacksswb %xmm0, %xmm0, %xmm02375; AVX2-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm12376; AVX2-NEXT:    vmovmskps %xmm1, %eax2377; AVX2-NEXT:    xorl $15, %eax2378; AVX2-NEXT:    testb $1, %al2379; AVX2-NEXT:    jne .LBB5_12380; AVX2-NEXT:  # %bb.2: # %else2381; AVX2-NEXT:    testb $2, %al2382; AVX2-NEXT:    jne .LBB5_32383; AVX2-NEXT:  .LBB5_4: # %else22384; AVX2-NEXT:    testb $4, %al2385; AVX2-NEXT:    jne .LBB5_52386; AVX2-NEXT:  .LBB5_6: # %else42387; AVX2-NEXT:    testb $8, %al2388; AVX2-NEXT:    jne .LBB5_72389; AVX2-NEXT:  .LBB5_8: # %else62390; AVX2-NEXT:    vzeroupper2391; AVX2-NEXT:    retq2392; AVX2-NEXT:  .LBB5_1: # %cond.store2393; AVX2-NEXT:    vpextrb $0, %xmm0, (%rdi)2394; AVX2-NEXT:    testb $2, %al2395; AVX2-NEXT:    je .LBB5_42396; AVX2-NEXT:  .LBB5_3: # %cond.store12397; AVX2-NEXT:    vpextrb $1, %xmm0, 1(%rdi)2398; AVX2-NEXT:    testb $4, %al2399; AVX2-NEXT:    je .LBB5_62400; AVX2-NEXT:  .LBB5_5: # %cond.store32401; AVX2-NEXT:    vpextrb $2, %xmm0, 2(%rdi)2402; AVX2-NEXT:    testb $8, %al2403; AVX2-NEXT:    je .LBB5_82404; AVX2-NEXT:  .LBB5_7: # %cond.store52405; AVX2-NEXT:    vpextrb $3, %xmm0, 3(%rdi)2406; AVX2-NEXT:    vzeroupper2407; AVX2-NEXT:    retq2408;2409; AVX512F-LABEL: truncstore_v4i64_v4i8:2410; AVX512F:       # %bb.0:2411; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12412; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02413; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k02414; AVX512F-NEXT:    vpmovsqb %zmm0, %xmm02415; AVX512F-NEXT:    kmovw %k0, %eax2416; AVX512F-NEXT:    testb $1, %al2417; AVX512F-NEXT:    jne .LBB5_12418; AVX512F-NEXT:  # %bb.2: # %else2419; AVX512F-NEXT:    testb $2, %al2420; AVX512F-NEXT:    jne .LBB5_32421; AVX512F-NEXT:  .LBB5_4: # %else22422; AVX512F-NEXT:    testb $4, %al2423; AVX512F-NEXT:    jne .LBB5_52424; AVX512F-NEXT:  .LBB5_6: # %else42425; AVX512F-NEXT:    testb $8, %al2426; AVX512F-NEXT:    jne .LBB5_72427; AVX512F-NEXT:  .LBB5_8: # %else62428; AVX512F-NEXT:    vzeroupper2429; AVX512F-NEXT:    retq2430; AVX512F-NEXT:  .LBB5_1: # %cond.store2431; AVX512F-NEXT:    vpextrb $0, %xmm0, (%rdi)2432; AVX512F-NEXT:    testb $2, %al2433; AVX512F-NEXT:    je .LBB5_42434; AVX512F-NEXT:  .LBB5_3: # %cond.store12435; AVX512F-NEXT:    vpextrb $1, %xmm0, 1(%rdi)2436; AVX512F-NEXT:    testb $4, %al2437; AVX512F-NEXT:    je .LBB5_62438; AVX512F-NEXT:  .LBB5_5: # %cond.store32439; AVX512F-NEXT:    vpextrb $2, %xmm0, 2(%rdi)2440; AVX512F-NEXT:    testb $8, %al2441; AVX512F-NEXT:    je .LBB5_82442; AVX512F-NEXT:  .LBB5_7: # %cond.store52443; AVX512F-NEXT:    vpextrb $3, %xmm0, 3(%rdi)2444; AVX512F-NEXT:    vzeroupper2445; AVX512F-NEXT:    retq2446;2447; AVX512FVL-LABEL: truncstore_v4i64_v4i8:2448; AVX512FVL:       # %bb.0:2449; AVX512FVL-NEXT:    vptestmd %xmm1, %xmm1, %k02450; AVX512FVL-NEXT:    vpmovsqb %ymm0, %xmm02451; AVX512FVL-NEXT:    kmovw %k0, %eax2452; AVX512FVL-NEXT:    testb $1, %al2453; AVX512FVL-NEXT:    jne .LBB5_12454; AVX512FVL-NEXT:  # %bb.2: # %else2455; AVX512FVL-NEXT:    testb $2, %al2456; AVX512FVL-NEXT:    jne .LBB5_32457; AVX512FVL-NEXT:  .LBB5_4: # %else22458; AVX512FVL-NEXT:    testb $4, %al2459; AVX512FVL-NEXT:    jne .LBB5_52460; AVX512FVL-NEXT:  .LBB5_6: # %else42461; AVX512FVL-NEXT:    testb $8, %al2462; AVX512FVL-NEXT:    jne .LBB5_72463; AVX512FVL-NEXT:  .LBB5_8: # %else62464; AVX512FVL-NEXT:    vzeroupper2465; AVX512FVL-NEXT:    retq2466; AVX512FVL-NEXT:  .LBB5_1: # %cond.store2467; AVX512FVL-NEXT:    vpextrb $0, %xmm0, (%rdi)2468; AVX512FVL-NEXT:    testb $2, %al2469; AVX512FVL-NEXT:    je .LBB5_42470; AVX512FVL-NEXT:  .LBB5_3: # %cond.store12471; AVX512FVL-NEXT:    vpextrb $1, %xmm0, 1(%rdi)2472; AVX512FVL-NEXT:    testb $4, %al2473; AVX512FVL-NEXT:    je .LBB5_62474; AVX512FVL-NEXT:  .LBB5_5: # %cond.store32475; AVX512FVL-NEXT:    vpextrb $2, %xmm0, 2(%rdi)2476; AVX512FVL-NEXT:    testb $8, %al2477; AVX512FVL-NEXT:    je .LBB5_82478; AVX512FVL-NEXT:  .LBB5_7: # %cond.store52479; AVX512FVL-NEXT:    vpextrb $3, %xmm0, 3(%rdi)2480; AVX512FVL-NEXT:    vzeroupper2481; AVX512FVL-NEXT:    retq2482;2483; AVX512BW-LABEL: truncstore_v4i64_v4i8:2484; AVX512BW:       # %bb.0:2485; AVX512BW-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12486; AVX512BW-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02487; AVX512BW-NEXT:    vptestmd %zmm1, %zmm1, %k02488; AVX512BW-NEXT:    kshiftlq $60, %k0, %k02489; AVX512BW-NEXT:    kshiftrq $60, %k0, %k12490; AVX512BW-NEXT:    vpmovsqb %zmm0, %xmm02491; AVX512BW-NEXT:    vmovdqu8 %zmm0, (%rdi) {%k1}2492; AVX512BW-NEXT:    vzeroupper2493; AVX512BW-NEXT:    retq2494;2495; AVX512BWVL-LABEL: truncstore_v4i64_v4i8:2496; AVX512BWVL:       # %bb.0:2497; AVX512BWVL-NEXT:    vptestmd %xmm1, %xmm1, %k12498; AVX512BWVL-NEXT:    vpminsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %ymm0, %ymm02499; AVX512BWVL-NEXT:    vpmaxsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %ymm0, %ymm02500; AVX512BWVL-NEXT:    vpmovqb %ymm0, (%rdi) {%k1}2501; AVX512BWVL-NEXT:    vzeroupper2502; AVX512BWVL-NEXT:    retq2503  %a = icmp ne <4 x i32> %mask, zeroinitializer2504  %b = icmp slt <4 x i64> %x, <i64 127, i64 127, i64 127, i64 127>2505  %c = select <4 x i1> %b, <4 x i64> %x, <4 x i64> <i64 127, i64 127, i64 127, i64 127>2506  %d = icmp sgt <4 x i64> %c, <i64 -128, i64 -128, i64 -128, i64 -128>2507  %e = select <4 x i1> %d, <4 x i64> %c, <4 x i64> <i64 -128, i64 -128, i64 -128, i64 -128>2508  %f = trunc <4 x i64> %e to <4 x i8>2509  call void @llvm.masked.store.v4i8.p0(<4 x i8> %f, ptr %p, i32 1, <4 x i1> %a)2510  ret void2511}2512 2513define void @truncstore_v2i64_v2i32(<2 x i64> %x, ptr %p, <2 x i64> %mask) {2514; SSE2-LABEL: truncstore_v2i64_v2i32:2515; SSE2:       # %bb.0:2516; SSE2-NEXT:    pxor %xmm2, %xmm22517; SSE2-NEXT:    movdqa {{.*#+}} xmm3 = [2147483648,2147483648]2518; SSE2-NEXT:    movdqa %xmm0, %xmm42519; SSE2-NEXT:    pxor %xmm3, %xmm42520; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]2521; SSE2-NEXT:    pcmpeqd %xmm2, %xmm52522; SSE2-NEXT:    movdqa {{.*#+}} xmm6 = [4294967295,4294967295]2523; SSE2-NEXT:    pcmpgtd %xmm4, %xmm62524; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm6[0,0,2,2]2525; SSE2-NEXT:    pand %xmm5, %xmm42526; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]2527; SSE2-NEXT:    por %xmm4, %xmm52528; SSE2-NEXT:    pand %xmm5, %xmm02529; SSE2-NEXT:    pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm52530; SSE2-NEXT:    por %xmm0, %xmm52531; SSE2-NEXT:    pxor %xmm5, %xmm32532; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[1,1,3,3]2533; SSE2-NEXT:    pcmpeqd %xmm4, %xmm42534; SSE2-NEXT:    pcmpeqd %xmm0, %xmm42535; SSE2-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm32536; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]2537; SSE2-NEXT:    pand %xmm4, %xmm02538; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]2539; SSE2-NEXT:    por %xmm0, %xmm32540; SSE2-NEXT:    pand %xmm3, %xmm52541; SSE2-NEXT:    pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm32542; SSE2-NEXT:    por %xmm5, %xmm32543; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,2,2,3]2544; SSE2-NEXT:    pcmpeqd %xmm2, %xmm12545; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[1,0,3,2]2546; SSE2-NEXT:    pand %xmm1, %xmm22547; SSE2-NEXT:    movmskpd %xmm2, %eax2548; SSE2-NEXT:    xorl $3, %eax2549; SSE2-NEXT:    testb $1, %al2550; SSE2-NEXT:    jne .LBB6_12551; SSE2-NEXT:  # %bb.2: # %else2552; SSE2-NEXT:    testb $2, %al2553; SSE2-NEXT:    jne .LBB6_32554; SSE2-NEXT:  .LBB6_4: # %else22555; SSE2-NEXT:    retq2556; SSE2-NEXT:  .LBB6_1: # %cond.store2557; SSE2-NEXT:    movd %xmm0, (%rdi)2558; SSE2-NEXT:    testb $2, %al2559; SSE2-NEXT:    je .LBB6_42560; SSE2-NEXT:  .LBB6_3: # %cond.store12561; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]2562; SSE2-NEXT:    movd %xmm0, 4(%rdi)2563; SSE2-NEXT:    retq2564;2565; SSE4-LABEL: truncstore_v2i64_v2i32:2566; SSE4:       # %bb.0:2567; SSE4-NEXT:    movdqa %xmm0, %xmm22568; SSE4-NEXT:    pxor %xmm3, %xmm32569; SSE4-NEXT:    pmovsxdq {{.*#+}} xmm4 = [2147483647,2147483647]2570; SSE4-NEXT:    movdqa %xmm4, %xmm02571; SSE4-NEXT:    pcmpgtq %xmm2, %xmm02572; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm42573; SSE4-NEXT:    pmovsxdq {{.*#+}} xmm2 = [18446744071562067968,18446744071562067968]2574; SSE4-NEXT:    movapd %xmm4, %xmm02575; SSE4-NEXT:    pcmpgtq %xmm2, %xmm02576; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm22577; SSE4-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]2578; SSE4-NEXT:    pcmpeqq %xmm1, %xmm32579; SSE4-NEXT:    movmskpd %xmm3, %eax2580; SSE4-NEXT:    xorl $3, %eax2581; SSE4-NEXT:    testb $1, %al2582; SSE4-NEXT:    jne .LBB6_12583; SSE4-NEXT:  # %bb.2: # %else2584; SSE4-NEXT:    testb $2, %al2585; SSE4-NEXT:    jne .LBB6_32586; SSE4-NEXT:  .LBB6_4: # %else22587; SSE4-NEXT:    retq2588; SSE4-NEXT:  .LBB6_1: # %cond.store2589; SSE4-NEXT:    movd %xmm0, (%rdi)2590; SSE4-NEXT:    testb $2, %al2591; SSE4-NEXT:    je .LBB6_42592; SSE4-NEXT:  .LBB6_3: # %cond.store12593; SSE4-NEXT:    pextrd $1, %xmm0, 4(%rdi)2594; SSE4-NEXT:    retq2595;2596; AVX1-LABEL: truncstore_v2i64_v2i32:2597; AVX1:       # %bb.0:2598; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm22599; AVX1-NEXT:    vpcmpeqq %xmm2, %xmm1, %xmm12600; AVX1-NEXT:    vpcmpeqd %xmm2, %xmm2, %xmm22601; AVX1-NEXT:    vpxor %xmm2, %xmm1, %xmm12602; AVX1-NEXT:    vinsertps {{.*#+}} xmm1 = xmm1[0,2],zero,zero2603; AVX1-NEXT:    vmovddup {{.*#+}} xmm2 = [2147483647,2147483647]2604; AVX1-NEXT:    # xmm2 = mem[0,0]2605; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm2, %xmm32606; AVX1-NEXT:    vblendvpd %xmm3, %xmm0, %xmm2, %xmm02607; AVX1-NEXT:    vmovddup {{.*#+}} xmm2 = [18446744071562067968,18446744071562067968]2608; AVX1-NEXT:    # xmm2 = mem[0,0]2609; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm0, %xmm32610; AVX1-NEXT:    vblendvpd %xmm3, %xmm0, %xmm2, %xmm02611; AVX1-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[0,2,2,3]2612; AVX1-NEXT:    vmaskmovps %xmm0, %xmm1, (%rdi)2613; AVX1-NEXT:    retq2614;2615; AVX2-LABEL: truncstore_v2i64_v2i32:2616; AVX2:       # %bb.0:2617; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm22618; AVX2-NEXT:    vpcmpeqq %xmm2, %xmm1, %xmm12619; AVX2-NEXT:    vpcmpeqd %xmm2, %xmm2, %xmm22620; AVX2-NEXT:    vpxor %xmm2, %xmm1, %xmm12621; AVX2-NEXT:    vinsertps {{.*#+}} xmm1 = xmm1[0,2],zero,zero2622; AVX2-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [2147483647,2147483647]2623; AVX2-NEXT:    vpcmpgtq %xmm0, %xmm2, %xmm32624; AVX2-NEXT:    vblendvpd %xmm3, %xmm0, %xmm2, %xmm02625; AVX2-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [18446744071562067968,18446744071562067968]2626; AVX2-NEXT:    vpcmpgtq %xmm2, %xmm0, %xmm32627; AVX2-NEXT:    vblendvpd %xmm3, %xmm0, %xmm2, %xmm02628; AVX2-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[0,2,2,3]2629; AVX2-NEXT:    vpmaskmovd %xmm0, %xmm1, (%rdi)2630; AVX2-NEXT:    retq2631;2632; AVX512-LABEL: truncstore_v2i64_v2i32:2633; AVX512:       # %bb.0:2634; AVX512-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12635; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02636; AVX512-NEXT:    vptestmq %zmm1, %zmm1, %k02637; AVX512-NEXT:    kshiftlw $14, %k0, %k02638; AVX512-NEXT:    kshiftrw $14, %k0, %k12639; AVX512-NEXT:    vpmovsqd %zmm0, %ymm02640; AVX512-NEXT:    vmovdqu32 %zmm0, (%rdi) {%k1}2641; AVX512-NEXT:    vzeroupper2642; AVX512-NEXT:    retq2643;2644; AVX512VL-LABEL: truncstore_v2i64_v2i32:2645; AVX512VL:       # %bb.0:2646; AVX512VL-NEXT:    vptestmq %xmm1, %xmm1, %k12647; AVX512VL-NEXT:    vpminsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %xmm02648; AVX512VL-NEXT:    vpmaxsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %xmm02649; AVX512VL-NEXT:    vpmovqd %xmm0, (%rdi) {%k1}2650; AVX512VL-NEXT:    retq2651  %a = icmp ne <2 x i64> %mask, zeroinitializer2652  %b = icmp slt <2 x i64> %x, <i64 2147483647, i64 2147483647>2653  %c = select <2 x i1> %b, <2 x i64> %x, <2 x i64> <i64 2147483647, i64 2147483647>2654  %d = icmp sgt <2 x i64> %c, <i64 -2147483648, i64 -2147483648>2655  %e = select <2 x i1> %d, <2 x i64> %c, <2 x i64> <i64 -2147483648, i64 -2147483648>2656  %f = trunc <2 x i64> %e to <2 x i32>2657  call void @llvm.masked.store.v2i32.p0(<2 x i32> %f, ptr %p, i32 1, <2 x i1> %a)2658  ret void2659}2660 2661define void @truncstore_v2i64_v2i16(<2 x i64> %x, ptr %p, <2 x i64> %mask) {2662; SSE2-LABEL: truncstore_v2i64_v2i16:2663; SSE2:       # %bb.0:2664; SSE2-NEXT:    pxor %xmm2, %xmm22665; SSE2-NEXT:    movdqa {{.*#+}} xmm3 = [2147483648,2147483648]2666; SSE2-NEXT:    movdqa %xmm0, %xmm42667; SSE2-NEXT:    pxor %xmm3, %xmm42668; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]2669; SSE2-NEXT:    pcmpeqd %xmm2, %xmm52670; SSE2-NEXT:    movdqa {{.*#+}} xmm6 = [2147516415,2147516415]2671; SSE2-NEXT:    pcmpgtd %xmm4, %xmm62672; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm6[0,0,2,2]2673; SSE2-NEXT:    pand %xmm5, %xmm42674; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]2675; SSE2-NEXT:    por %xmm4, %xmm52676; SSE2-NEXT:    pand %xmm5, %xmm02677; SSE2-NEXT:    pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm52678; SSE2-NEXT:    por %xmm0, %xmm52679; SSE2-NEXT:    pxor %xmm5, %xmm32680; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[1,1,3,3]2681; SSE2-NEXT:    pcmpeqd %xmm4, %xmm42682; SSE2-NEXT:    pcmpeqd %xmm0, %xmm42683; SSE2-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm32684; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]2685; SSE2-NEXT:    pand %xmm4, %xmm02686; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]2687; SSE2-NEXT:    por %xmm0, %xmm32688; SSE2-NEXT:    pand %xmm3, %xmm52689; SSE2-NEXT:    pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm32690; SSE2-NEXT:    por %xmm5, %xmm32691; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,2,2,3]2692; SSE2-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]2693; SSE2-NEXT:    pcmpeqd %xmm2, %xmm12694; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[1,0,3,2]2695; SSE2-NEXT:    pand %xmm1, %xmm22696; SSE2-NEXT:    movmskpd %xmm2, %eax2697; SSE2-NEXT:    xorl $3, %eax2698; SSE2-NEXT:    testb $1, %al2699; SSE2-NEXT:    jne .LBB7_12700; SSE2-NEXT:  # %bb.2: # %else2701; SSE2-NEXT:    testb $2, %al2702; SSE2-NEXT:    jne .LBB7_32703; SSE2-NEXT:  .LBB7_4: # %else22704; SSE2-NEXT:    retq2705; SSE2-NEXT:  .LBB7_1: # %cond.store2706; SSE2-NEXT:    movd %xmm0, %ecx2707; SSE2-NEXT:    movw %cx, (%rdi)2708; SSE2-NEXT:    testb $2, %al2709; SSE2-NEXT:    je .LBB7_42710; SSE2-NEXT:  .LBB7_3: # %cond.store12711; SSE2-NEXT:    pextrw $1, %xmm0, %eax2712; SSE2-NEXT:    movw %ax, 2(%rdi)2713; SSE2-NEXT:    retq2714;2715; SSE4-LABEL: truncstore_v2i64_v2i16:2716; SSE4:       # %bb.0:2717; SSE4-NEXT:    movdqa %xmm0, %xmm22718; SSE4-NEXT:    pxor %xmm3, %xmm32719; SSE4-NEXT:    pmovsxwq {{.*#+}} xmm4 = [32767,32767]2720; SSE4-NEXT:    movdqa %xmm4, %xmm02721; SSE4-NEXT:    pcmpgtq %xmm2, %xmm02722; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm42723; SSE4-NEXT:    pmovsxwq {{.*#+}} xmm2 = [18446744073709518848,18446744073709518848]2724; SSE4-NEXT:    movapd %xmm4, %xmm02725; SSE4-NEXT:    pcmpgtq %xmm2, %xmm02726; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm22727; SSE4-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]2728; SSE4-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]2729; SSE4-NEXT:    pcmpeqq %xmm1, %xmm32730; SSE4-NEXT:    movmskpd %xmm3, %eax2731; SSE4-NEXT:    xorl $3, %eax2732; SSE4-NEXT:    testb $1, %al2733; SSE4-NEXT:    jne .LBB7_12734; SSE4-NEXT:  # %bb.2: # %else2735; SSE4-NEXT:    testb $2, %al2736; SSE4-NEXT:    jne .LBB7_32737; SSE4-NEXT:  .LBB7_4: # %else22738; SSE4-NEXT:    retq2739; SSE4-NEXT:  .LBB7_1: # %cond.store2740; SSE4-NEXT:    pextrw $0, %xmm0, (%rdi)2741; SSE4-NEXT:    testb $2, %al2742; SSE4-NEXT:    je .LBB7_42743; SSE4-NEXT:  .LBB7_3: # %cond.store12744; SSE4-NEXT:    pextrw $1, %xmm0, 2(%rdi)2745; SSE4-NEXT:    retq2746;2747; AVX-LABEL: truncstore_v2i64_v2i16:2748; AVX:       # %bb.0:2749; AVX-NEXT:    vpxor %xmm2, %xmm2, %xmm22750; AVX-NEXT:    vpmovsxwq {{.*#+}} xmm3 = [32767,32767]2751; AVX-NEXT:    vpcmpgtq %xmm0, %xmm3, %xmm42752; AVX-NEXT:    vblendvpd %xmm4, %xmm0, %xmm3, %xmm02753; AVX-NEXT:    vpmovsxwq {{.*#+}} xmm3 = [18446744073709518848,18446744073709518848]2754; AVX-NEXT:    vpcmpgtq %xmm3, %xmm0, %xmm42755; AVX-NEXT:    vblendvpd %xmm4, %xmm0, %xmm3, %xmm02756; AVX-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[0,2,2,3]2757; AVX-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]2758; AVX-NEXT:    vpcmpeqq %xmm2, %xmm1, %xmm12759; AVX-NEXT:    vmovmskpd %xmm1, %eax2760; AVX-NEXT:    xorl $3, %eax2761; AVX-NEXT:    testb $1, %al2762; AVX-NEXT:    jne .LBB7_12763; AVX-NEXT:  # %bb.2: # %else2764; AVX-NEXT:    testb $2, %al2765; AVX-NEXT:    jne .LBB7_32766; AVX-NEXT:  .LBB7_4: # %else22767; AVX-NEXT:    retq2768; AVX-NEXT:  .LBB7_1: # %cond.store2769; AVX-NEXT:    vpextrw $0, %xmm0, (%rdi)2770; AVX-NEXT:    testb $2, %al2771; AVX-NEXT:    je .LBB7_42772; AVX-NEXT:  .LBB7_3: # %cond.store12773; AVX-NEXT:    vpextrw $1, %xmm0, 2(%rdi)2774; AVX-NEXT:    retq2775;2776; AVX512F-LABEL: truncstore_v2i64_v2i16:2777; AVX512F:       # %bb.0:2778; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12779; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02780; AVX512F-NEXT:    vptestmq %zmm1, %zmm1, %k02781; AVX512F-NEXT:    vpmovsqw %zmm0, %xmm02782; AVX512F-NEXT:    kmovw %k0, %eax2783; AVX512F-NEXT:    testb $1, %al2784; AVX512F-NEXT:    jne .LBB7_12785; AVX512F-NEXT:  # %bb.2: # %else2786; AVX512F-NEXT:    testb $2, %al2787; AVX512F-NEXT:    jne .LBB7_32788; AVX512F-NEXT:  .LBB7_4: # %else22789; AVX512F-NEXT:    vzeroupper2790; AVX512F-NEXT:    retq2791; AVX512F-NEXT:  .LBB7_1: # %cond.store2792; AVX512F-NEXT:    vpextrw $0, %xmm0, (%rdi)2793; AVX512F-NEXT:    testb $2, %al2794; AVX512F-NEXT:    je .LBB7_42795; AVX512F-NEXT:  .LBB7_3: # %cond.store12796; AVX512F-NEXT:    vpextrw $1, %xmm0, 2(%rdi)2797; AVX512F-NEXT:    vzeroupper2798; AVX512F-NEXT:    retq2799;2800; AVX512FVL-LABEL: truncstore_v2i64_v2i16:2801; AVX512FVL:       # %bb.0:2802; AVX512FVL-NEXT:    vptestmq %xmm1, %xmm1, %k02803; AVX512FVL-NEXT:    vpmovsqw %xmm0, %xmm02804; AVX512FVL-NEXT:    kmovw %k0, %eax2805; AVX512FVL-NEXT:    testb $1, %al2806; AVX512FVL-NEXT:    jne .LBB7_12807; AVX512FVL-NEXT:  # %bb.2: # %else2808; AVX512FVL-NEXT:    testb $2, %al2809; AVX512FVL-NEXT:    jne .LBB7_32810; AVX512FVL-NEXT:  .LBB7_4: # %else22811; AVX512FVL-NEXT:    retq2812; AVX512FVL-NEXT:  .LBB7_1: # %cond.store2813; AVX512FVL-NEXT:    vpextrw $0, %xmm0, (%rdi)2814; AVX512FVL-NEXT:    testb $2, %al2815; AVX512FVL-NEXT:    je .LBB7_42816; AVX512FVL-NEXT:  .LBB7_3: # %cond.store12817; AVX512FVL-NEXT:    vpextrw $1, %xmm0, 2(%rdi)2818; AVX512FVL-NEXT:    retq2819;2820; AVX512BW-LABEL: truncstore_v2i64_v2i16:2821; AVX512BW:       # %bb.0:2822; AVX512BW-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12823; AVX512BW-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02824; AVX512BW-NEXT:    vptestmq %zmm1, %zmm1, %k02825; AVX512BW-NEXT:    kshiftld $30, %k0, %k02826; AVX512BW-NEXT:    kshiftrd $30, %k0, %k12827; AVX512BW-NEXT:    vpmovsqw %zmm0, %xmm02828; AVX512BW-NEXT:    vmovdqu16 %zmm0, (%rdi) {%k1}2829; AVX512BW-NEXT:    vzeroupper2830; AVX512BW-NEXT:    retq2831;2832; AVX512BWVL-LABEL: truncstore_v2i64_v2i16:2833; AVX512BWVL:       # %bb.0:2834; AVX512BWVL-NEXT:    vptestmq %xmm1, %xmm1, %k12835; AVX512BWVL-NEXT:    vpminsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %xmm02836; AVX512BWVL-NEXT:    vpmaxsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %xmm02837; AVX512BWVL-NEXT:    vpmovqw %xmm0, (%rdi) {%k1}2838; AVX512BWVL-NEXT:    retq2839  %a = icmp ne <2 x i64> %mask, zeroinitializer2840  %b = icmp slt <2 x i64> %x, <i64 32767, i64 32767>2841  %c = select <2 x i1> %b, <2 x i64> %x, <2 x i64> <i64 32767, i64 32767>2842  %d = icmp sgt <2 x i64> %c, <i64 -32768, i64 -32768>2843  %e = select <2 x i1> %d, <2 x i64> %c, <2 x i64> <i64 -32768, i64 -32768>2844  %f = trunc <2 x i64> %e to <2 x i16>2845  call void @llvm.masked.store.v2i16.p0(<2 x i16> %f, ptr %p, i32 1, <2 x i1> %a)2846  ret void2847}2848 2849define void @truncstore_v2i64_v2i8(<2 x i64> %x, ptr %p, <2 x i64> %mask) {2850; SSE2-LABEL: truncstore_v2i64_v2i8:2851; SSE2:       # %bb.0:2852; SSE2-NEXT:    pxor %xmm2, %xmm22853; SSE2-NEXT:    movdqa {{.*#+}} xmm3 = [2147483648,2147483648]2854; SSE2-NEXT:    movdqa %xmm0, %xmm42855; SSE2-NEXT:    pxor %xmm3, %xmm42856; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]2857; SSE2-NEXT:    pcmpeqd %xmm2, %xmm52858; SSE2-NEXT:    movdqa {{.*#+}} xmm6 = [2147483775,2147483775]2859; SSE2-NEXT:    pcmpgtd %xmm4, %xmm62860; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm6[0,0,2,2]2861; SSE2-NEXT:    pand %xmm5, %xmm42862; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]2863; SSE2-NEXT:    por %xmm4, %xmm52864; SSE2-NEXT:    pand %xmm5, %xmm02865; SSE2-NEXT:    pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm52866; SSE2-NEXT:    por %xmm0, %xmm52867; SSE2-NEXT:    pxor %xmm5, %xmm32868; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[1,1,3,3]2869; SSE2-NEXT:    pcmpeqd %xmm4, %xmm42870; SSE2-NEXT:    pcmpeqd %xmm0, %xmm42871; SSE2-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm32872; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]2873; SSE2-NEXT:    pand %xmm4, %xmm02874; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]2875; SSE2-NEXT:    por %xmm0, %xmm32876; SSE2-NEXT:    pand %xmm3, %xmm52877; SSE2-NEXT:    pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm32878; SSE2-NEXT:    por %xmm5, %xmm32879; SSE2-NEXT:    packssdw %xmm3, %xmm32880; SSE2-NEXT:    packssdw %xmm3, %xmm32881; SSE2-NEXT:    packsswb %xmm3, %xmm32882; SSE2-NEXT:    pcmpeqd %xmm2, %xmm12883; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[1,0,3,2]2884; SSE2-NEXT:    pand %xmm1, %xmm02885; SSE2-NEXT:    movmskpd %xmm0, %eax2886; SSE2-NEXT:    xorl $3, %eax2887; SSE2-NEXT:    testb $1, %al2888; SSE2-NEXT:    movd %xmm3, %ecx2889; SSE2-NEXT:    jne .LBB8_12890; SSE2-NEXT:  # %bb.2: # %else2891; SSE2-NEXT:    testb $2, %al2892; SSE2-NEXT:    jne .LBB8_32893; SSE2-NEXT:  .LBB8_4: # %else22894; SSE2-NEXT:    retq2895; SSE2-NEXT:  .LBB8_1: # %cond.store2896; SSE2-NEXT:    movb %cl, (%rdi)2897; SSE2-NEXT:    testb $2, %al2898; SSE2-NEXT:    je .LBB8_42899; SSE2-NEXT:  .LBB8_3: # %cond.store12900; SSE2-NEXT:    movb %ch, 1(%rdi)2901; SSE2-NEXT:    retq2902;2903; SSE4-LABEL: truncstore_v2i64_v2i8:2904; SSE4:       # %bb.0:2905; SSE4-NEXT:    movdqa %xmm0, %xmm22906; SSE4-NEXT:    pxor %xmm3, %xmm32907; SSE4-NEXT:    pmovsxbq {{.*#+}} xmm4 = [127,127]2908; SSE4-NEXT:    movdqa %xmm4, %xmm02909; SSE4-NEXT:    pcmpgtq %xmm2, %xmm02910; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm42911; SSE4-NEXT:    pmovsxbq {{.*#+}} xmm2 = [18446744073709551488,18446744073709551488]2912; SSE4-NEXT:    movapd %xmm4, %xmm02913; SSE4-NEXT:    pcmpgtq %xmm2, %xmm02914; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm22915; SSE4-NEXT:    pshufb {{.*#+}} xmm2 = xmm2[0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]2916; SSE4-NEXT:    pcmpeqq %xmm1, %xmm32917; SSE4-NEXT:    movmskpd %xmm3, %eax2918; SSE4-NEXT:    xorl $3, %eax2919; SSE4-NEXT:    testb $1, %al2920; SSE4-NEXT:    jne .LBB8_12921; SSE4-NEXT:  # %bb.2: # %else2922; SSE4-NEXT:    testb $2, %al2923; SSE4-NEXT:    jne .LBB8_32924; SSE4-NEXT:  .LBB8_4: # %else22925; SSE4-NEXT:    retq2926; SSE4-NEXT:  .LBB8_1: # %cond.store2927; SSE4-NEXT:    pextrb $0, %xmm2, (%rdi)2928; SSE4-NEXT:    testb $2, %al2929; SSE4-NEXT:    je .LBB8_42930; SSE4-NEXT:  .LBB8_3: # %cond.store12931; SSE4-NEXT:    pextrb $1, %xmm2, 1(%rdi)2932; SSE4-NEXT:    retq2933;2934; AVX-LABEL: truncstore_v2i64_v2i8:2935; AVX:       # %bb.0:2936; AVX-NEXT:    vpxor %xmm2, %xmm2, %xmm22937; AVX-NEXT:    vpmovsxbq {{.*#+}} xmm3 = [127,127]2938; AVX-NEXT:    vpcmpgtq %xmm0, %xmm3, %xmm42939; AVX-NEXT:    vblendvpd %xmm4, %xmm0, %xmm3, %xmm02940; AVX-NEXT:    vpmovsxbq {{.*#+}} xmm3 = [18446744073709551488,18446744073709551488]2941; AVX-NEXT:    vpcmpgtq %xmm3, %xmm0, %xmm42942; AVX-NEXT:    vblendvpd %xmm4, %xmm0, %xmm3, %xmm02943; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]2944; AVX-NEXT:    vpcmpeqq %xmm2, %xmm1, %xmm12945; AVX-NEXT:    vmovmskpd %xmm1, %eax2946; AVX-NEXT:    xorl $3, %eax2947; AVX-NEXT:    testb $1, %al2948; AVX-NEXT:    jne .LBB8_12949; AVX-NEXT:  # %bb.2: # %else2950; AVX-NEXT:    testb $2, %al2951; AVX-NEXT:    jne .LBB8_32952; AVX-NEXT:  .LBB8_4: # %else22953; AVX-NEXT:    retq2954; AVX-NEXT:  .LBB8_1: # %cond.store2955; AVX-NEXT:    vpextrb $0, %xmm0, (%rdi)2956; AVX-NEXT:    testb $2, %al2957; AVX-NEXT:    je .LBB8_42958; AVX-NEXT:  .LBB8_3: # %cond.store12959; AVX-NEXT:    vpextrb $1, %xmm0, 1(%rdi)2960; AVX-NEXT:    retq2961;2962; AVX512F-LABEL: truncstore_v2i64_v2i8:2963; AVX512F:       # %bb.0:2964; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12965; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02966; AVX512F-NEXT:    vptestmq %zmm1, %zmm1, %k02967; AVX512F-NEXT:    vpmovsqb %zmm0, %xmm02968; AVX512F-NEXT:    kmovw %k0, %eax2969; AVX512F-NEXT:    testb $1, %al2970; AVX512F-NEXT:    jne .LBB8_12971; AVX512F-NEXT:  # %bb.2: # %else2972; AVX512F-NEXT:    testb $2, %al2973; AVX512F-NEXT:    jne .LBB8_32974; AVX512F-NEXT:  .LBB8_4: # %else22975; AVX512F-NEXT:    vzeroupper2976; AVX512F-NEXT:    retq2977; AVX512F-NEXT:  .LBB8_1: # %cond.store2978; AVX512F-NEXT:    vpextrb $0, %xmm0, (%rdi)2979; AVX512F-NEXT:    testb $2, %al2980; AVX512F-NEXT:    je .LBB8_42981; AVX512F-NEXT:  .LBB8_3: # %cond.store12982; AVX512F-NEXT:    vpextrb $1, %xmm0, 1(%rdi)2983; AVX512F-NEXT:    vzeroupper2984; AVX512F-NEXT:    retq2985;2986; AVX512FVL-LABEL: truncstore_v2i64_v2i8:2987; AVX512FVL:       # %bb.0:2988; AVX512FVL-NEXT:    vptestmq %xmm1, %xmm1, %k02989; AVX512FVL-NEXT:    vpmovsqb %xmm0, %xmm02990; AVX512FVL-NEXT:    kmovw %k0, %eax2991; AVX512FVL-NEXT:    testb $1, %al2992; AVX512FVL-NEXT:    jne .LBB8_12993; AVX512FVL-NEXT:  # %bb.2: # %else2994; AVX512FVL-NEXT:    testb $2, %al2995; AVX512FVL-NEXT:    jne .LBB8_32996; AVX512FVL-NEXT:  .LBB8_4: # %else22997; AVX512FVL-NEXT:    retq2998; AVX512FVL-NEXT:  .LBB8_1: # %cond.store2999; AVX512FVL-NEXT:    vpextrb $0, %xmm0, (%rdi)3000; AVX512FVL-NEXT:    testb $2, %al3001; AVX512FVL-NEXT:    je .LBB8_43002; AVX512FVL-NEXT:  .LBB8_3: # %cond.store13003; AVX512FVL-NEXT:    vpextrb $1, %xmm0, 1(%rdi)3004; AVX512FVL-NEXT:    retq3005;3006; AVX512BW-LABEL: truncstore_v2i64_v2i8:3007; AVX512BW:       # %bb.0:3008; AVX512BW-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13009; AVX512BW-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03010; AVX512BW-NEXT:    vptestmq %zmm1, %zmm1, %k03011; AVX512BW-NEXT:    kshiftlq $62, %k0, %k03012; AVX512BW-NEXT:    kshiftrq $62, %k0, %k13013; AVX512BW-NEXT:    vpmovsqb %zmm0, %xmm03014; AVX512BW-NEXT:    vmovdqu8 %zmm0, (%rdi) {%k1}3015; AVX512BW-NEXT:    vzeroupper3016; AVX512BW-NEXT:    retq3017;3018; AVX512BWVL-LABEL: truncstore_v2i64_v2i8:3019; AVX512BWVL:       # %bb.0:3020; AVX512BWVL-NEXT:    vptestmq %xmm1, %xmm1, %k13021; AVX512BWVL-NEXT:    vpminsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %xmm03022; AVX512BWVL-NEXT:    vpmaxsq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %xmm03023; AVX512BWVL-NEXT:    vpmovqb %xmm0, (%rdi) {%k1}3024; AVX512BWVL-NEXT:    retq3025  %a = icmp ne <2 x i64> %mask, zeroinitializer3026  %b = icmp slt <2 x i64> %x, <i64 127, i64 127>3027  %c = select <2 x i1> %b, <2 x i64> %x, <2 x i64> <i64 127, i64 127>3028  %d = icmp sgt <2 x i64> %c, <i64 -128, i64 -128>3029  %e = select <2 x i1> %d, <2 x i64> %c, <2 x i64> <i64 -128, i64 -128>3030  %f = trunc <2 x i64> %e to <2 x i8>3031  call void @llvm.masked.store.v2i8.p0(<2 x i8> %f, ptr %p, i32 1, <2 x i1> %a)3032  ret void3033}3034 3035define void @truncstore_v16i32_v16i16(<16 x i32> %x, ptr %p, <16 x i32> %mask) {3036; SSE2-LABEL: truncstore_v16i32_v16i16:3037; SSE2:       # %bb.0:3038; SSE2-NEXT:    pxor %xmm8, %xmm83039; SSE2-NEXT:    packssdw %xmm1, %xmm03040; SSE2-NEXT:    pcmpeqd %xmm8, %xmm73041; SSE2-NEXT:    pcmpeqd %xmm8, %xmm63042; SSE2-NEXT:    packssdw %xmm7, %xmm63043; SSE2-NEXT:    pcmpeqd %xmm8, %xmm53044; SSE2-NEXT:    pcmpeqd %xmm8, %xmm43045; SSE2-NEXT:    packssdw %xmm5, %xmm43046; SSE2-NEXT:    packsswb %xmm6, %xmm43047; SSE2-NEXT:    pmovmskb %xmm4, %eax3048; SSE2-NEXT:    xorl $65535, %eax # imm = 0xFFFF3049; SSE2-NEXT:    testb $1, %al3050; SSE2-NEXT:    jne .LBB9_13051; SSE2-NEXT:  # %bb.2: # %else3052; SSE2-NEXT:    testb $2, %al3053; SSE2-NEXT:    jne .LBB9_33054; SSE2-NEXT:  .LBB9_4: # %else23055; SSE2-NEXT:    testb $4, %al3056; SSE2-NEXT:    jne .LBB9_53057; SSE2-NEXT:  .LBB9_6: # %else43058; SSE2-NEXT:    testb $8, %al3059; SSE2-NEXT:    jne .LBB9_73060; SSE2-NEXT:  .LBB9_8: # %else63061; SSE2-NEXT:    testb $16, %al3062; SSE2-NEXT:    jne .LBB9_93063; SSE2-NEXT:  .LBB9_10: # %else83064; SSE2-NEXT:    testb $32, %al3065; SSE2-NEXT:    jne .LBB9_113066; SSE2-NEXT:  .LBB9_12: # %else103067; SSE2-NEXT:    testb $64, %al3068; SSE2-NEXT:    jne .LBB9_133069; SSE2-NEXT:  .LBB9_14: # %else123070; SSE2-NEXT:    testb %al, %al3071; SSE2-NEXT:    jns .LBB9_163072; SSE2-NEXT:  .LBB9_15: # %cond.store133073; SSE2-NEXT:    pextrw $7, %xmm0, %ecx3074; SSE2-NEXT:    movw %cx, 14(%rdi)3075; SSE2-NEXT:  .LBB9_16: # %else143076; SSE2-NEXT:    packssdw %xmm3, %xmm23077; SSE2-NEXT:    testl $256, %eax # imm = 0x1003078; SSE2-NEXT:    jne .LBB9_173079; SSE2-NEXT:  # %bb.18: # %else163080; SSE2-NEXT:    testl $512, %eax # imm = 0x2003081; SSE2-NEXT:    jne .LBB9_193082; SSE2-NEXT:  .LBB9_20: # %else183083; SSE2-NEXT:    testl $1024, %eax # imm = 0x4003084; SSE2-NEXT:    jne .LBB9_213085; SSE2-NEXT:  .LBB9_22: # %else203086; SSE2-NEXT:    testl $2048, %eax # imm = 0x8003087; SSE2-NEXT:    jne .LBB9_233088; SSE2-NEXT:  .LBB9_24: # %else223089; SSE2-NEXT:    testl $4096, %eax # imm = 0x10003090; SSE2-NEXT:    jne .LBB9_253091; SSE2-NEXT:  .LBB9_26: # %else243092; SSE2-NEXT:    testl $8192, %eax # imm = 0x20003093; SSE2-NEXT:    jne .LBB9_273094; SSE2-NEXT:  .LBB9_28: # %else263095; SSE2-NEXT:    testl $16384, %eax # imm = 0x40003096; SSE2-NEXT:    jne .LBB9_293097; SSE2-NEXT:  .LBB9_30: # %else283098; SSE2-NEXT:    testl $32768, %eax # imm = 0x80003099; SSE2-NEXT:    jne .LBB9_313100; SSE2-NEXT:  .LBB9_32: # %else303101; SSE2-NEXT:    retq3102; SSE2-NEXT:  .LBB9_1: # %cond.store3103; SSE2-NEXT:    movd %xmm0, %ecx3104; SSE2-NEXT:    movw %cx, (%rdi)3105; SSE2-NEXT:    testb $2, %al3106; SSE2-NEXT:    je .LBB9_43107; SSE2-NEXT:  .LBB9_3: # %cond.store13108; SSE2-NEXT:    pextrw $1, %xmm0, %ecx3109; SSE2-NEXT:    movw %cx, 2(%rdi)3110; SSE2-NEXT:    testb $4, %al3111; SSE2-NEXT:    je .LBB9_63112; SSE2-NEXT:  .LBB9_5: # %cond.store33113; SSE2-NEXT:    pextrw $2, %xmm0, %ecx3114; SSE2-NEXT:    movw %cx, 4(%rdi)3115; SSE2-NEXT:    testb $8, %al3116; SSE2-NEXT:    je .LBB9_83117; SSE2-NEXT:  .LBB9_7: # %cond.store53118; SSE2-NEXT:    pextrw $3, %xmm0, %ecx3119; SSE2-NEXT:    movw %cx, 6(%rdi)3120; SSE2-NEXT:    testb $16, %al3121; SSE2-NEXT:    je .LBB9_103122; SSE2-NEXT:  .LBB9_9: # %cond.store73123; SSE2-NEXT:    pextrw $4, %xmm0, %ecx3124; SSE2-NEXT:    movw %cx, 8(%rdi)3125; SSE2-NEXT:    testb $32, %al3126; SSE2-NEXT:    je .LBB9_123127; SSE2-NEXT:  .LBB9_11: # %cond.store93128; SSE2-NEXT:    pextrw $5, %xmm0, %ecx3129; SSE2-NEXT:    movw %cx, 10(%rdi)3130; SSE2-NEXT:    testb $64, %al3131; SSE2-NEXT:    je .LBB9_143132; SSE2-NEXT:  .LBB9_13: # %cond.store113133; SSE2-NEXT:    pextrw $6, %xmm0, %ecx3134; SSE2-NEXT:    movw %cx, 12(%rdi)3135; SSE2-NEXT:    testb %al, %al3136; SSE2-NEXT:    js .LBB9_153137; SSE2-NEXT:    jmp .LBB9_163138; SSE2-NEXT:  .LBB9_17: # %cond.store153139; SSE2-NEXT:    movd %xmm2, %ecx3140; SSE2-NEXT:    movw %cx, 16(%rdi)3141; SSE2-NEXT:    testl $512, %eax # imm = 0x2003142; SSE2-NEXT:    je .LBB9_203143; SSE2-NEXT:  .LBB9_19: # %cond.store173144; SSE2-NEXT:    pextrw $1, %xmm2, %ecx3145; SSE2-NEXT:    movw %cx, 18(%rdi)3146; SSE2-NEXT:    testl $1024, %eax # imm = 0x4003147; SSE2-NEXT:    je .LBB9_223148; SSE2-NEXT:  .LBB9_21: # %cond.store193149; SSE2-NEXT:    pextrw $2, %xmm2, %ecx3150; SSE2-NEXT:    movw %cx, 20(%rdi)3151; SSE2-NEXT:    testl $2048, %eax # imm = 0x8003152; SSE2-NEXT:    je .LBB9_243153; SSE2-NEXT:  .LBB9_23: # %cond.store213154; SSE2-NEXT:    pextrw $3, %xmm2, %ecx3155; SSE2-NEXT:    movw %cx, 22(%rdi)3156; SSE2-NEXT:    testl $4096, %eax # imm = 0x10003157; SSE2-NEXT:    je .LBB9_263158; SSE2-NEXT:  .LBB9_25: # %cond.store233159; SSE2-NEXT:    pextrw $4, %xmm2, %ecx3160; SSE2-NEXT:    movw %cx, 24(%rdi)3161; SSE2-NEXT:    testl $8192, %eax # imm = 0x20003162; SSE2-NEXT:    je .LBB9_283163; SSE2-NEXT:  .LBB9_27: # %cond.store253164; SSE2-NEXT:    pextrw $5, %xmm2, %ecx3165; SSE2-NEXT:    movw %cx, 26(%rdi)3166; SSE2-NEXT:    testl $16384, %eax # imm = 0x40003167; SSE2-NEXT:    je .LBB9_303168; SSE2-NEXT:  .LBB9_29: # %cond.store273169; SSE2-NEXT:    pextrw $6, %xmm2, %ecx3170; SSE2-NEXT:    movw %cx, 28(%rdi)3171; SSE2-NEXT:    testl $32768, %eax # imm = 0x80003172; SSE2-NEXT:    je .LBB9_323173; SSE2-NEXT:  .LBB9_31: # %cond.store293174; SSE2-NEXT:    pextrw $7, %xmm2, %eax3175; SSE2-NEXT:    movw %ax, 30(%rdi)3176; SSE2-NEXT:    retq3177;3178; SSE4-LABEL: truncstore_v16i32_v16i16:3179; SSE4:       # %bb.0:3180; SSE4-NEXT:    pxor %xmm8, %xmm83181; SSE4-NEXT:    packssdw %xmm1, %xmm03182; SSE4-NEXT:    pcmpeqd %xmm8, %xmm73183; SSE4-NEXT:    pcmpeqd %xmm8, %xmm63184; SSE4-NEXT:    packssdw %xmm7, %xmm63185; SSE4-NEXT:    pcmpeqd %xmm8, %xmm53186; SSE4-NEXT:    pcmpeqd %xmm8, %xmm43187; SSE4-NEXT:    packssdw %xmm5, %xmm43188; SSE4-NEXT:    packsswb %xmm6, %xmm43189; SSE4-NEXT:    pmovmskb %xmm4, %eax3190; SSE4-NEXT:    xorl $65535, %eax # imm = 0xFFFF3191; SSE4-NEXT:    testb $1, %al3192; SSE4-NEXT:    jne .LBB9_13193; SSE4-NEXT:  # %bb.2: # %else3194; SSE4-NEXT:    testb $2, %al3195; SSE4-NEXT:    jne .LBB9_33196; SSE4-NEXT:  .LBB9_4: # %else23197; SSE4-NEXT:    testb $4, %al3198; SSE4-NEXT:    jne .LBB9_53199; SSE4-NEXT:  .LBB9_6: # %else43200; SSE4-NEXT:    testb $8, %al3201; SSE4-NEXT:    jne .LBB9_73202; SSE4-NEXT:  .LBB9_8: # %else63203; SSE4-NEXT:    testb $16, %al3204; SSE4-NEXT:    jne .LBB9_93205; SSE4-NEXT:  .LBB9_10: # %else83206; SSE4-NEXT:    testb $32, %al3207; SSE4-NEXT:    jne .LBB9_113208; SSE4-NEXT:  .LBB9_12: # %else103209; SSE4-NEXT:    testb $64, %al3210; SSE4-NEXT:    jne .LBB9_133211; SSE4-NEXT:  .LBB9_14: # %else123212; SSE4-NEXT:    testb %al, %al3213; SSE4-NEXT:    jns .LBB9_163214; SSE4-NEXT:  .LBB9_15: # %cond.store133215; SSE4-NEXT:    pextrw $7, %xmm0, 14(%rdi)3216; SSE4-NEXT:  .LBB9_16: # %else143217; SSE4-NEXT:    packssdw %xmm3, %xmm23218; SSE4-NEXT:    testl $256, %eax # imm = 0x1003219; SSE4-NEXT:    jne .LBB9_173220; SSE4-NEXT:  # %bb.18: # %else163221; SSE4-NEXT:    testl $512, %eax # imm = 0x2003222; SSE4-NEXT:    jne .LBB9_193223; SSE4-NEXT:  .LBB9_20: # %else183224; SSE4-NEXT:    testl $1024, %eax # imm = 0x4003225; SSE4-NEXT:    jne .LBB9_213226; SSE4-NEXT:  .LBB9_22: # %else203227; SSE4-NEXT:    testl $2048, %eax # imm = 0x8003228; SSE4-NEXT:    jne .LBB9_233229; SSE4-NEXT:  .LBB9_24: # %else223230; SSE4-NEXT:    testl $4096, %eax # imm = 0x10003231; SSE4-NEXT:    jne .LBB9_253232; SSE4-NEXT:  .LBB9_26: # %else243233; SSE4-NEXT:    testl $8192, %eax # imm = 0x20003234; SSE4-NEXT:    jne .LBB9_273235; SSE4-NEXT:  .LBB9_28: # %else263236; SSE4-NEXT:    testl $16384, %eax # imm = 0x40003237; SSE4-NEXT:    jne .LBB9_293238; SSE4-NEXT:  .LBB9_30: # %else283239; SSE4-NEXT:    testl $32768, %eax # imm = 0x80003240; SSE4-NEXT:    jne .LBB9_313241; SSE4-NEXT:  .LBB9_32: # %else303242; SSE4-NEXT:    retq3243; SSE4-NEXT:  .LBB9_1: # %cond.store3244; SSE4-NEXT:    pextrw $0, %xmm0, (%rdi)3245; SSE4-NEXT:    testb $2, %al3246; SSE4-NEXT:    je .LBB9_43247; SSE4-NEXT:  .LBB9_3: # %cond.store13248; SSE4-NEXT:    pextrw $1, %xmm0, 2(%rdi)3249; SSE4-NEXT:    testb $4, %al3250; SSE4-NEXT:    je .LBB9_63251; SSE4-NEXT:  .LBB9_5: # %cond.store33252; SSE4-NEXT:    pextrw $2, %xmm0, 4(%rdi)3253; SSE4-NEXT:    testb $8, %al3254; SSE4-NEXT:    je .LBB9_83255; SSE4-NEXT:  .LBB9_7: # %cond.store53256; SSE4-NEXT:    pextrw $3, %xmm0, 6(%rdi)3257; SSE4-NEXT:    testb $16, %al3258; SSE4-NEXT:    je .LBB9_103259; SSE4-NEXT:  .LBB9_9: # %cond.store73260; SSE4-NEXT:    pextrw $4, %xmm0, 8(%rdi)3261; SSE4-NEXT:    testb $32, %al3262; SSE4-NEXT:    je .LBB9_123263; SSE4-NEXT:  .LBB9_11: # %cond.store93264; SSE4-NEXT:    pextrw $5, %xmm0, 10(%rdi)3265; SSE4-NEXT:    testb $64, %al3266; SSE4-NEXT:    je .LBB9_143267; SSE4-NEXT:  .LBB9_13: # %cond.store113268; SSE4-NEXT:    pextrw $6, %xmm0, 12(%rdi)3269; SSE4-NEXT:    testb %al, %al3270; SSE4-NEXT:    js .LBB9_153271; SSE4-NEXT:    jmp .LBB9_163272; SSE4-NEXT:  .LBB9_17: # %cond.store153273; SSE4-NEXT:    pextrw $0, %xmm2, 16(%rdi)3274; SSE4-NEXT:    testl $512, %eax # imm = 0x2003275; SSE4-NEXT:    je .LBB9_203276; SSE4-NEXT:  .LBB9_19: # %cond.store173277; SSE4-NEXT:    pextrw $1, %xmm2, 18(%rdi)3278; SSE4-NEXT:    testl $1024, %eax # imm = 0x4003279; SSE4-NEXT:    je .LBB9_223280; SSE4-NEXT:  .LBB9_21: # %cond.store193281; SSE4-NEXT:    pextrw $2, %xmm2, 20(%rdi)3282; SSE4-NEXT:    testl $2048, %eax # imm = 0x8003283; SSE4-NEXT:    je .LBB9_243284; SSE4-NEXT:  .LBB9_23: # %cond.store213285; SSE4-NEXT:    pextrw $3, %xmm2, 22(%rdi)3286; SSE4-NEXT:    testl $4096, %eax # imm = 0x10003287; SSE4-NEXT:    je .LBB9_263288; SSE4-NEXT:  .LBB9_25: # %cond.store233289; SSE4-NEXT:    pextrw $4, %xmm2, 24(%rdi)3290; SSE4-NEXT:    testl $8192, %eax # imm = 0x20003291; SSE4-NEXT:    je .LBB9_283292; SSE4-NEXT:  .LBB9_27: # %cond.store253293; SSE4-NEXT:    pextrw $5, %xmm2, 26(%rdi)3294; SSE4-NEXT:    testl $16384, %eax # imm = 0x40003295; SSE4-NEXT:    je .LBB9_303296; SSE4-NEXT:  .LBB9_29: # %cond.store273297; SSE4-NEXT:    pextrw $6, %xmm2, 28(%rdi)3298; SSE4-NEXT:    testl $32768, %eax # imm = 0x80003299; SSE4-NEXT:    je .LBB9_323300; SSE4-NEXT:  .LBB9_31: # %cond.store293301; SSE4-NEXT:    pextrw $7, %xmm2, 30(%rdi)3302; SSE4-NEXT:    retq3303;3304; AVX1-LABEL: truncstore_v16i32_v16i16:3305; AVX1:       # %bb.0:3306; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43307; AVX1-NEXT:    vpackssdw %xmm4, %xmm1, %xmm13308; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm43309; AVX1-NEXT:    vpackssdw %xmm4, %xmm0, %xmm03310; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm03311; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm13312; AVX1-NEXT:    vpxor %xmm4, %xmm4, %xmm43313; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm1, %xmm13314; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm3, %xmm33315; AVX1-NEXT:    vpackssdw %xmm1, %xmm3, %xmm13316; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm33317; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm3, %xmm33318; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm2, %xmm23319; AVX1-NEXT:    vpackssdw %xmm3, %xmm2, %xmm23320; AVX1-NEXT:    vpacksswb %xmm1, %xmm2, %xmm13321; AVX1-NEXT:    vpmovmskb %xmm1, %eax3322; AVX1-NEXT:    xorl $65535, %eax # imm = 0xFFFF3323; AVX1-NEXT:    testb $1, %al3324; AVX1-NEXT:    jne .LBB9_13325; AVX1-NEXT:  # %bb.2: # %else3326; AVX1-NEXT:    testb $2, %al3327; AVX1-NEXT:    jne .LBB9_33328; AVX1-NEXT:  .LBB9_4: # %else23329; AVX1-NEXT:    testb $4, %al3330; AVX1-NEXT:    jne .LBB9_53331; AVX1-NEXT:  .LBB9_6: # %else43332; AVX1-NEXT:    testb $8, %al3333; AVX1-NEXT:    jne .LBB9_73334; AVX1-NEXT:  .LBB9_8: # %else63335; AVX1-NEXT:    testb $16, %al3336; AVX1-NEXT:    jne .LBB9_93337; AVX1-NEXT:  .LBB9_10: # %else83338; AVX1-NEXT:    testb $32, %al3339; AVX1-NEXT:    jne .LBB9_113340; AVX1-NEXT:  .LBB9_12: # %else103341; AVX1-NEXT:    testb $64, %al3342; AVX1-NEXT:    jne .LBB9_133343; AVX1-NEXT:  .LBB9_14: # %else123344; AVX1-NEXT:    testb %al, %al3345; AVX1-NEXT:    jns .LBB9_163346; AVX1-NEXT:  .LBB9_15: # %cond.store133347; AVX1-NEXT:    vpextrw $7, %xmm0, 14(%rdi)3348; AVX1-NEXT:  .LBB9_16: # %else143349; AVX1-NEXT:    testl $256, %eax # imm = 0x1003350; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm03351; AVX1-NEXT:    jne .LBB9_173352; AVX1-NEXT:  # %bb.18: # %else163353; AVX1-NEXT:    testl $512, %eax # imm = 0x2003354; AVX1-NEXT:    jne .LBB9_193355; AVX1-NEXT:  .LBB9_20: # %else183356; AVX1-NEXT:    testl $1024, %eax # imm = 0x4003357; AVX1-NEXT:    jne .LBB9_213358; AVX1-NEXT:  .LBB9_22: # %else203359; AVX1-NEXT:    testl $2048, %eax # imm = 0x8003360; AVX1-NEXT:    jne .LBB9_233361; AVX1-NEXT:  .LBB9_24: # %else223362; AVX1-NEXT:    testl $4096, %eax # imm = 0x10003363; AVX1-NEXT:    jne .LBB9_253364; AVX1-NEXT:  .LBB9_26: # %else243365; AVX1-NEXT:    testl $8192, %eax # imm = 0x20003366; AVX1-NEXT:    jne .LBB9_273367; AVX1-NEXT:  .LBB9_28: # %else263368; AVX1-NEXT:    testl $16384, %eax # imm = 0x40003369; AVX1-NEXT:    jne .LBB9_293370; AVX1-NEXT:  .LBB9_30: # %else283371; AVX1-NEXT:    testl $32768, %eax # imm = 0x80003372; AVX1-NEXT:    jne .LBB9_313373; AVX1-NEXT:  .LBB9_32: # %else303374; AVX1-NEXT:    vzeroupper3375; AVX1-NEXT:    retq3376; AVX1-NEXT:  .LBB9_1: # %cond.store3377; AVX1-NEXT:    vpextrw $0, %xmm0, (%rdi)3378; AVX1-NEXT:    testb $2, %al3379; AVX1-NEXT:    je .LBB9_43380; AVX1-NEXT:  .LBB9_3: # %cond.store13381; AVX1-NEXT:    vpextrw $1, %xmm0, 2(%rdi)3382; AVX1-NEXT:    testb $4, %al3383; AVX1-NEXT:    je .LBB9_63384; AVX1-NEXT:  .LBB9_5: # %cond.store33385; AVX1-NEXT:    vpextrw $2, %xmm0, 4(%rdi)3386; AVX1-NEXT:    testb $8, %al3387; AVX1-NEXT:    je .LBB9_83388; AVX1-NEXT:  .LBB9_7: # %cond.store53389; AVX1-NEXT:    vpextrw $3, %xmm0, 6(%rdi)3390; AVX1-NEXT:    testb $16, %al3391; AVX1-NEXT:    je .LBB9_103392; AVX1-NEXT:  .LBB9_9: # %cond.store73393; AVX1-NEXT:    vpextrw $4, %xmm0, 8(%rdi)3394; AVX1-NEXT:    testb $32, %al3395; AVX1-NEXT:    je .LBB9_123396; AVX1-NEXT:  .LBB9_11: # %cond.store93397; AVX1-NEXT:    vpextrw $5, %xmm0, 10(%rdi)3398; AVX1-NEXT:    testb $64, %al3399; AVX1-NEXT:    je .LBB9_143400; AVX1-NEXT:  .LBB9_13: # %cond.store113401; AVX1-NEXT:    vpextrw $6, %xmm0, 12(%rdi)3402; AVX1-NEXT:    testb %al, %al3403; AVX1-NEXT:    js .LBB9_153404; AVX1-NEXT:    jmp .LBB9_163405; AVX1-NEXT:  .LBB9_17: # %cond.store153406; AVX1-NEXT:    vpextrw $0, %xmm0, 16(%rdi)3407; AVX1-NEXT:    testl $512, %eax # imm = 0x2003408; AVX1-NEXT:    je .LBB9_203409; AVX1-NEXT:  .LBB9_19: # %cond.store173410; AVX1-NEXT:    vpextrw $1, %xmm0, 18(%rdi)3411; AVX1-NEXT:    testl $1024, %eax # imm = 0x4003412; AVX1-NEXT:    je .LBB9_223413; AVX1-NEXT:  .LBB9_21: # %cond.store193414; AVX1-NEXT:    vpextrw $2, %xmm0, 20(%rdi)3415; AVX1-NEXT:    testl $2048, %eax # imm = 0x8003416; AVX1-NEXT:    je .LBB9_243417; AVX1-NEXT:  .LBB9_23: # %cond.store213418; AVX1-NEXT:    vpextrw $3, %xmm0, 22(%rdi)3419; AVX1-NEXT:    testl $4096, %eax # imm = 0x10003420; AVX1-NEXT:    je .LBB9_263421; AVX1-NEXT:  .LBB9_25: # %cond.store233422; AVX1-NEXT:    vpextrw $4, %xmm0, 24(%rdi)3423; AVX1-NEXT:    testl $8192, %eax # imm = 0x20003424; AVX1-NEXT:    je .LBB9_283425; AVX1-NEXT:  .LBB9_27: # %cond.store253426; AVX1-NEXT:    vpextrw $5, %xmm0, 26(%rdi)3427; AVX1-NEXT:    testl $16384, %eax # imm = 0x40003428; AVX1-NEXT:    je .LBB9_303429; AVX1-NEXT:  .LBB9_29: # %cond.store273430; AVX1-NEXT:    vpextrw $6, %xmm0, 28(%rdi)3431; AVX1-NEXT:    testl $32768, %eax # imm = 0x80003432; AVX1-NEXT:    je .LBB9_323433; AVX1-NEXT:  .LBB9_31: # %cond.store293434; AVX1-NEXT:    vpextrw $7, %xmm0, 30(%rdi)3435; AVX1-NEXT:    vzeroupper3436; AVX1-NEXT:    retq3437;3438; AVX2-LABEL: truncstore_v16i32_v16i16:3439; AVX2:       # %bb.0:3440; AVX2-NEXT:    vpxor %xmm4, %xmm4, %xmm43441; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm03442; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]3443; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm3, %ymm13444; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm2, %ymm23445; AVX2-NEXT:    vpackssdw %ymm1, %ymm2, %ymm13446; AVX2-NEXT:    vpcmpeqd %ymm2, %ymm2, %ymm23447; AVX2-NEXT:    vpxor %ymm2, %ymm1, %ymm13448; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm23449; AVX2-NEXT:    vpacksswb %xmm2, %xmm1, %xmm13450; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,1,3]3451; AVX2-NEXT:    vpmovmskb %xmm1, %eax3452; AVX2-NEXT:    testb $1, %al3453; AVX2-NEXT:    jne .LBB9_13454; AVX2-NEXT:  # %bb.2: # %else3455; AVX2-NEXT:    testb $2, %al3456; AVX2-NEXT:    jne .LBB9_33457; AVX2-NEXT:  .LBB9_4: # %else23458; AVX2-NEXT:    testb $4, %al3459; AVX2-NEXT:    jne .LBB9_53460; AVX2-NEXT:  .LBB9_6: # %else43461; AVX2-NEXT:    testb $8, %al3462; AVX2-NEXT:    jne .LBB9_73463; AVX2-NEXT:  .LBB9_8: # %else63464; AVX2-NEXT:    testb $16, %al3465; AVX2-NEXT:    jne .LBB9_93466; AVX2-NEXT:  .LBB9_10: # %else83467; AVX2-NEXT:    testb $32, %al3468; AVX2-NEXT:    jne .LBB9_113469; AVX2-NEXT:  .LBB9_12: # %else103470; AVX2-NEXT:    testb $64, %al3471; AVX2-NEXT:    jne .LBB9_133472; AVX2-NEXT:  .LBB9_14: # %else123473; AVX2-NEXT:    testb %al, %al3474; AVX2-NEXT:    jns .LBB9_163475; AVX2-NEXT:  .LBB9_15: # %cond.store133476; AVX2-NEXT:    vpextrw $7, %xmm0, 14(%rdi)3477; AVX2-NEXT:  .LBB9_16: # %else143478; AVX2-NEXT:    testl $256, %eax # imm = 0x1003479; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm03480; AVX2-NEXT:    jne .LBB9_173481; AVX2-NEXT:  # %bb.18: # %else163482; AVX2-NEXT:    testl $512, %eax # imm = 0x2003483; AVX2-NEXT:    jne .LBB9_193484; AVX2-NEXT:  .LBB9_20: # %else183485; AVX2-NEXT:    testl $1024, %eax # imm = 0x4003486; AVX2-NEXT:    jne .LBB9_213487; AVX2-NEXT:  .LBB9_22: # %else203488; AVX2-NEXT:    testl $2048, %eax # imm = 0x8003489; AVX2-NEXT:    jne .LBB9_233490; AVX2-NEXT:  .LBB9_24: # %else223491; AVX2-NEXT:    testl $4096, %eax # imm = 0x10003492; AVX2-NEXT:    jne .LBB9_253493; AVX2-NEXT:  .LBB9_26: # %else243494; AVX2-NEXT:    testl $8192, %eax # imm = 0x20003495; AVX2-NEXT:    jne .LBB9_273496; AVX2-NEXT:  .LBB9_28: # %else263497; AVX2-NEXT:    testl $16384, %eax # imm = 0x40003498; AVX2-NEXT:    jne .LBB9_293499; AVX2-NEXT:  .LBB9_30: # %else283500; AVX2-NEXT:    testl $32768, %eax # imm = 0x80003501; AVX2-NEXT:    jne .LBB9_313502; AVX2-NEXT:  .LBB9_32: # %else303503; AVX2-NEXT:    vzeroupper3504; AVX2-NEXT:    retq3505; AVX2-NEXT:  .LBB9_1: # %cond.store3506; AVX2-NEXT:    vpextrw $0, %xmm0, (%rdi)3507; AVX2-NEXT:    testb $2, %al3508; AVX2-NEXT:    je .LBB9_43509; AVX2-NEXT:  .LBB9_3: # %cond.store13510; AVX2-NEXT:    vpextrw $1, %xmm0, 2(%rdi)3511; AVX2-NEXT:    testb $4, %al3512; AVX2-NEXT:    je .LBB9_63513; AVX2-NEXT:  .LBB9_5: # %cond.store33514; AVX2-NEXT:    vpextrw $2, %xmm0, 4(%rdi)3515; AVX2-NEXT:    testb $8, %al3516; AVX2-NEXT:    je .LBB9_83517; AVX2-NEXT:  .LBB9_7: # %cond.store53518; AVX2-NEXT:    vpextrw $3, %xmm0, 6(%rdi)3519; AVX2-NEXT:    testb $16, %al3520; AVX2-NEXT:    je .LBB9_103521; AVX2-NEXT:  .LBB9_9: # %cond.store73522; AVX2-NEXT:    vpextrw $4, %xmm0, 8(%rdi)3523; AVX2-NEXT:    testb $32, %al3524; AVX2-NEXT:    je .LBB9_123525; AVX2-NEXT:  .LBB9_11: # %cond.store93526; AVX2-NEXT:    vpextrw $5, %xmm0, 10(%rdi)3527; AVX2-NEXT:    testb $64, %al3528; AVX2-NEXT:    je .LBB9_143529; AVX2-NEXT:  .LBB9_13: # %cond.store113530; AVX2-NEXT:    vpextrw $6, %xmm0, 12(%rdi)3531; AVX2-NEXT:    testb %al, %al3532; AVX2-NEXT:    js .LBB9_153533; AVX2-NEXT:    jmp .LBB9_163534; AVX2-NEXT:  .LBB9_17: # %cond.store153535; AVX2-NEXT:    vpextrw $0, %xmm0, 16(%rdi)3536; AVX2-NEXT:    testl $512, %eax # imm = 0x2003537; AVX2-NEXT:    je .LBB9_203538; AVX2-NEXT:  .LBB9_19: # %cond.store173539; AVX2-NEXT:    vpextrw $1, %xmm0, 18(%rdi)3540; AVX2-NEXT:    testl $1024, %eax # imm = 0x4003541; AVX2-NEXT:    je .LBB9_223542; AVX2-NEXT:  .LBB9_21: # %cond.store193543; AVX2-NEXT:    vpextrw $2, %xmm0, 20(%rdi)3544; AVX2-NEXT:    testl $2048, %eax # imm = 0x8003545; AVX2-NEXT:    je .LBB9_243546; AVX2-NEXT:  .LBB9_23: # %cond.store213547; AVX2-NEXT:    vpextrw $3, %xmm0, 22(%rdi)3548; AVX2-NEXT:    testl $4096, %eax # imm = 0x10003549; AVX2-NEXT:    je .LBB9_263550; AVX2-NEXT:  .LBB9_25: # %cond.store233551; AVX2-NEXT:    vpextrw $4, %xmm0, 24(%rdi)3552; AVX2-NEXT:    testl $8192, %eax # imm = 0x20003553; AVX2-NEXT:    je .LBB9_283554; AVX2-NEXT:  .LBB9_27: # %cond.store253555; AVX2-NEXT:    vpextrw $5, %xmm0, 26(%rdi)3556; AVX2-NEXT:    testl $16384, %eax # imm = 0x40003557; AVX2-NEXT:    je .LBB9_303558; AVX2-NEXT:  .LBB9_29: # %cond.store273559; AVX2-NEXT:    vpextrw $6, %xmm0, 28(%rdi)3560; AVX2-NEXT:    testl $32768, %eax # imm = 0x80003561; AVX2-NEXT:    je .LBB9_323562; AVX2-NEXT:  .LBB9_31: # %cond.store293563; AVX2-NEXT:    vpextrw $7, %xmm0, 30(%rdi)3564; AVX2-NEXT:    vzeroupper3565; AVX2-NEXT:    retq3566;3567; AVX512F-LABEL: truncstore_v16i32_v16i16:3568; AVX512F:       # %bb.0:3569; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k03570; AVX512F-NEXT:    vpmovsdw %zmm0, %ymm03571; AVX512F-NEXT:    kmovw %k0, %eax3572; AVX512F-NEXT:    testb $1, %al3573; AVX512F-NEXT:    jne .LBB9_13574; AVX512F-NEXT:  # %bb.2: # %else3575; AVX512F-NEXT:    testb $2, %al3576; AVX512F-NEXT:    jne .LBB9_33577; AVX512F-NEXT:  .LBB9_4: # %else23578; AVX512F-NEXT:    testb $4, %al3579; AVX512F-NEXT:    jne .LBB9_53580; AVX512F-NEXT:  .LBB9_6: # %else43581; AVX512F-NEXT:    testb $8, %al3582; AVX512F-NEXT:    jne .LBB9_73583; AVX512F-NEXT:  .LBB9_8: # %else63584; AVX512F-NEXT:    testb $16, %al3585; AVX512F-NEXT:    jne .LBB9_93586; AVX512F-NEXT:  .LBB9_10: # %else83587; AVX512F-NEXT:    testb $32, %al3588; AVX512F-NEXT:    jne .LBB9_113589; AVX512F-NEXT:  .LBB9_12: # %else103590; AVX512F-NEXT:    testb $64, %al3591; AVX512F-NEXT:    jne .LBB9_133592; AVX512F-NEXT:  .LBB9_14: # %else123593; AVX512F-NEXT:    testb %al, %al3594; AVX512F-NEXT:    jns .LBB9_163595; AVX512F-NEXT:  .LBB9_15: # %cond.store133596; AVX512F-NEXT:    vpextrw $7, %xmm0, 14(%rdi)3597; AVX512F-NEXT:  .LBB9_16: # %else143598; AVX512F-NEXT:    testl $256, %eax # imm = 0x1003599; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm03600; AVX512F-NEXT:    jne .LBB9_173601; AVX512F-NEXT:  # %bb.18: # %else163602; AVX512F-NEXT:    testl $512, %eax # imm = 0x2003603; AVX512F-NEXT:    jne .LBB9_193604; AVX512F-NEXT:  .LBB9_20: # %else183605; AVX512F-NEXT:    testl $1024, %eax # imm = 0x4003606; AVX512F-NEXT:    jne .LBB9_213607; AVX512F-NEXT:  .LBB9_22: # %else203608; AVX512F-NEXT:    testl $2048, %eax # imm = 0x8003609; AVX512F-NEXT:    jne .LBB9_233610; AVX512F-NEXT:  .LBB9_24: # %else223611; AVX512F-NEXT:    testl $4096, %eax # imm = 0x10003612; AVX512F-NEXT:    jne .LBB9_253613; AVX512F-NEXT:  .LBB9_26: # %else243614; AVX512F-NEXT:    testl $8192, %eax # imm = 0x20003615; AVX512F-NEXT:    jne .LBB9_273616; AVX512F-NEXT:  .LBB9_28: # %else263617; AVX512F-NEXT:    testl $16384, %eax # imm = 0x40003618; AVX512F-NEXT:    jne .LBB9_293619; AVX512F-NEXT:  .LBB9_30: # %else283620; AVX512F-NEXT:    testl $32768, %eax # imm = 0x80003621; AVX512F-NEXT:    jne .LBB9_313622; AVX512F-NEXT:  .LBB9_32: # %else303623; AVX512F-NEXT:    vzeroupper3624; AVX512F-NEXT:    retq3625; AVX512F-NEXT:  .LBB9_1: # %cond.store3626; AVX512F-NEXT:    vpextrw $0, %xmm0, (%rdi)3627; AVX512F-NEXT:    testb $2, %al3628; AVX512F-NEXT:    je .LBB9_43629; AVX512F-NEXT:  .LBB9_3: # %cond.store13630; AVX512F-NEXT:    vpextrw $1, %xmm0, 2(%rdi)3631; AVX512F-NEXT:    testb $4, %al3632; AVX512F-NEXT:    je .LBB9_63633; AVX512F-NEXT:  .LBB9_5: # %cond.store33634; AVX512F-NEXT:    vpextrw $2, %xmm0, 4(%rdi)3635; AVX512F-NEXT:    testb $8, %al3636; AVX512F-NEXT:    je .LBB9_83637; AVX512F-NEXT:  .LBB9_7: # %cond.store53638; AVX512F-NEXT:    vpextrw $3, %xmm0, 6(%rdi)3639; AVX512F-NEXT:    testb $16, %al3640; AVX512F-NEXT:    je .LBB9_103641; AVX512F-NEXT:  .LBB9_9: # %cond.store73642; AVX512F-NEXT:    vpextrw $4, %xmm0, 8(%rdi)3643; AVX512F-NEXT:    testb $32, %al3644; AVX512F-NEXT:    je .LBB9_123645; AVX512F-NEXT:  .LBB9_11: # %cond.store93646; AVX512F-NEXT:    vpextrw $5, %xmm0, 10(%rdi)3647; AVX512F-NEXT:    testb $64, %al3648; AVX512F-NEXT:    je .LBB9_143649; AVX512F-NEXT:  .LBB9_13: # %cond.store113650; AVX512F-NEXT:    vpextrw $6, %xmm0, 12(%rdi)3651; AVX512F-NEXT:    testb %al, %al3652; AVX512F-NEXT:    js .LBB9_153653; AVX512F-NEXT:    jmp .LBB9_163654; AVX512F-NEXT:  .LBB9_17: # %cond.store153655; AVX512F-NEXT:    vpextrw $0, %xmm0, 16(%rdi)3656; AVX512F-NEXT:    testl $512, %eax # imm = 0x2003657; AVX512F-NEXT:    je .LBB9_203658; AVX512F-NEXT:  .LBB9_19: # %cond.store173659; AVX512F-NEXT:    vpextrw $1, %xmm0, 18(%rdi)3660; AVX512F-NEXT:    testl $1024, %eax # imm = 0x4003661; AVX512F-NEXT:    je .LBB9_223662; AVX512F-NEXT:  .LBB9_21: # %cond.store193663; AVX512F-NEXT:    vpextrw $2, %xmm0, 20(%rdi)3664; AVX512F-NEXT:    testl $2048, %eax # imm = 0x8003665; AVX512F-NEXT:    je .LBB9_243666; AVX512F-NEXT:  .LBB9_23: # %cond.store213667; AVX512F-NEXT:    vpextrw $3, %xmm0, 22(%rdi)3668; AVX512F-NEXT:    testl $4096, %eax # imm = 0x10003669; AVX512F-NEXT:    je .LBB9_263670; AVX512F-NEXT:  .LBB9_25: # %cond.store233671; AVX512F-NEXT:    vpextrw $4, %xmm0, 24(%rdi)3672; AVX512F-NEXT:    testl $8192, %eax # imm = 0x20003673; AVX512F-NEXT:    je .LBB9_283674; AVX512F-NEXT:  .LBB9_27: # %cond.store253675; AVX512F-NEXT:    vpextrw $5, %xmm0, 26(%rdi)3676; AVX512F-NEXT:    testl $16384, %eax # imm = 0x40003677; AVX512F-NEXT:    je .LBB9_303678; AVX512F-NEXT:  .LBB9_29: # %cond.store273679; AVX512F-NEXT:    vpextrw $6, %xmm0, 28(%rdi)3680; AVX512F-NEXT:    testl $32768, %eax # imm = 0x80003681; AVX512F-NEXT:    je .LBB9_323682; AVX512F-NEXT:  .LBB9_31: # %cond.store293683; AVX512F-NEXT:    vpextrw $7, %xmm0, 30(%rdi)3684; AVX512F-NEXT:    vzeroupper3685; AVX512F-NEXT:    retq3686;3687; AVX512FVL-LABEL: truncstore_v16i32_v16i16:3688; AVX512FVL:       # %bb.0:3689; AVX512FVL-NEXT:    vptestmd %zmm1, %zmm1, %k03690; AVX512FVL-NEXT:    vpmovsdw %zmm0, %ymm03691; AVX512FVL-NEXT:    kmovw %k0, %eax3692; AVX512FVL-NEXT:    testb $1, %al3693; AVX512FVL-NEXT:    jne .LBB9_13694; AVX512FVL-NEXT:  # %bb.2: # %else3695; AVX512FVL-NEXT:    testb $2, %al3696; AVX512FVL-NEXT:    jne .LBB9_33697; AVX512FVL-NEXT:  .LBB9_4: # %else23698; AVX512FVL-NEXT:    testb $4, %al3699; AVX512FVL-NEXT:    jne .LBB9_53700; AVX512FVL-NEXT:  .LBB9_6: # %else43701; AVX512FVL-NEXT:    testb $8, %al3702; AVX512FVL-NEXT:    jne .LBB9_73703; AVX512FVL-NEXT:  .LBB9_8: # %else63704; AVX512FVL-NEXT:    testb $16, %al3705; AVX512FVL-NEXT:    jne .LBB9_93706; AVX512FVL-NEXT:  .LBB9_10: # %else83707; AVX512FVL-NEXT:    testb $32, %al3708; AVX512FVL-NEXT:    jne .LBB9_113709; AVX512FVL-NEXT:  .LBB9_12: # %else103710; AVX512FVL-NEXT:    testb $64, %al3711; AVX512FVL-NEXT:    jne .LBB9_133712; AVX512FVL-NEXT:  .LBB9_14: # %else123713; AVX512FVL-NEXT:    testb %al, %al3714; AVX512FVL-NEXT:    jns .LBB9_163715; AVX512FVL-NEXT:  .LBB9_15: # %cond.store133716; AVX512FVL-NEXT:    vpextrw $7, %xmm0, 14(%rdi)3717; AVX512FVL-NEXT:  .LBB9_16: # %else143718; AVX512FVL-NEXT:    testl $256, %eax # imm = 0x1003719; AVX512FVL-NEXT:    vextracti128 $1, %ymm0, %xmm03720; AVX512FVL-NEXT:    jne .LBB9_173721; AVX512FVL-NEXT:  # %bb.18: # %else163722; AVX512FVL-NEXT:    testl $512, %eax # imm = 0x2003723; AVX512FVL-NEXT:    jne .LBB9_193724; AVX512FVL-NEXT:  .LBB9_20: # %else183725; AVX512FVL-NEXT:    testl $1024, %eax # imm = 0x4003726; AVX512FVL-NEXT:    jne .LBB9_213727; AVX512FVL-NEXT:  .LBB9_22: # %else203728; AVX512FVL-NEXT:    testl $2048, %eax # imm = 0x8003729; AVX512FVL-NEXT:    jne .LBB9_233730; AVX512FVL-NEXT:  .LBB9_24: # %else223731; AVX512FVL-NEXT:    testl $4096, %eax # imm = 0x10003732; AVX512FVL-NEXT:    jne .LBB9_253733; AVX512FVL-NEXT:  .LBB9_26: # %else243734; AVX512FVL-NEXT:    testl $8192, %eax # imm = 0x20003735; AVX512FVL-NEXT:    jne .LBB9_273736; AVX512FVL-NEXT:  .LBB9_28: # %else263737; AVX512FVL-NEXT:    testl $16384, %eax # imm = 0x40003738; AVX512FVL-NEXT:    jne .LBB9_293739; AVX512FVL-NEXT:  .LBB9_30: # %else283740; AVX512FVL-NEXT:    testl $32768, %eax # imm = 0x80003741; AVX512FVL-NEXT:    jne .LBB9_313742; AVX512FVL-NEXT:  .LBB9_32: # %else303743; AVX512FVL-NEXT:    vzeroupper3744; AVX512FVL-NEXT:    retq3745; AVX512FVL-NEXT:  .LBB9_1: # %cond.store3746; AVX512FVL-NEXT:    vpextrw $0, %xmm0, (%rdi)3747; AVX512FVL-NEXT:    testb $2, %al3748; AVX512FVL-NEXT:    je .LBB9_43749; AVX512FVL-NEXT:  .LBB9_3: # %cond.store13750; AVX512FVL-NEXT:    vpextrw $1, %xmm0, 2(%rdi)3751; AVX512FVL-NEXT:    testb $4, %al3752; AVX512FVL-NEXT:    je .LBB9_63753; AVX512FVL-NEXT:  .LBB9_5: # %cond.store33754; AVX512FVL-NEXT:    vpextrw $2, %xmm0, 4(%rdi)3755; AVX512FVL-NEXT:    testb $8, %al3756; AVX512FVL-NEXT:    je .LBB9_83757; AVX512FVL-NEXT:  .LBB9_7: # %cond.store53758; AVX512FVL-NEXT:    vpextrw $3, %xmm0, 6(%rdi)3759; AVX512FVL-NEXT:    testb $16, %al3760; AVX512FVL-NEXT:    je .LBB9_103761; AVX512FVL-NEXT:  .LBB9_9: # %cond.store73762; AVX512FVL-NEXT:    vpextrw $4, %xmm0, 8(%rdi)3763; AVX512FVL-NEXT:    testb $32, %al3764; AVX512FVL-NEXT:    je .LBB9_123765; AVX512FVL-NEXT:  .LBB9_11: # %cond.store93766; AVX512FVL-NEXT:    vpextrw $5, %xmm0, 10(%rdi)3767; AVX512FVL-NEXT:    testb $64, %al3768; AVX512FVL-NEXT:    je .LBB9_143769; AVX512FVL-NEXT:  .LBB9_13: # %cond.store113770; AVX512FVL-NEXT:    vpextrw $6, %xmm0, 12(%rdi)3771; AVX512FVL-NEXT:    testb %al, %al3772; AVX512FVL-NEXT:    js .LBB9_153773; AVX512FVL-NEXT:    jmp .LBB9_163774; AVX512FVL-NEXT:  .LBB9_17: # %cond.store153775; AVX512FVL-NEXT:    vpextrw $0, %xmm0, 16(%rdi)3776; AVX512FVL-NEXT:    testl $512, %eax # imm = 0x2003777; AVX512FVL-NEXT:    je .LBB9_203778; AVX512FVL-NEXT:  .LBB9_19: # %cond.store173779; AVX512FVL-NEXT:    vpextrw $1, %xmm0, 18(%rdi)3780; AVX512FVL-NEXT:    testl $1024, %eax # imm = 0x4003781; AVX512FVL-NEXT:    je .LBB9_223782; AVX512FVL-NEXT:  .LBB9_21: # %cond.store193783; AVX512FVL-NEXT:    vpextrw $2, %xmm0, 20(%rdi)3784; AVX512FVL-NEXT:    testl $2048, %eax # imm = 0x8003785; AVX512FVL-NEXT:    je .LBB9_243786; AVX512FVL-NEXT:  .LBB9_23: # %cond.store213787; AVX512FVL-NEXT:    vpextrw $3, %xmm0, 22(%rdi)3788; AVX512FVL-NEXT:    testl $4096, %eax # imm = 0x10003789; AVX512FVL-NEXT:    je .LBB9_263790; AVX512FVL-NEXT:  .LBB9_25: # %cond.store233791; AVX512FVL-NEXT:    vpextrw $4, %xmm0, 24(%rdi)3792; AVX512FVL-NEXT:    testl $8192, %eax # imm = 0x20003793; AVX512FVL-NEXT:    je .LBB9_283794; AVX512FVL-NEXT:  .LBB9_27: # %cond.store253795; AVX512FVL-NEXT:    vpextrw $5, %xmm0, 26(%rdi)3796; AVX512FVL-NEXT:    testl $16384, %eax # imm = 0x40003797; AVX512FVL-NEXT:    je .LBB9_303798; AVX512FVL-NEXT:  .LBB9_29: # %cond.store273799; AVX512FVL-NEXT:    vpextrw $6, %xmm0, 28(%rdi)3800; AVX512FVL-NEXT:    testl $32768, %eax # imm = 0x80003801; AVX512FVL-NEXT:    je .LBB9_323802; AVX512FVL-NEXT:  .LBB9_31: # %cond.store293803; AVX512FVL-NEXT:    vpextrw $7, %xmm0, 30(%rdi)3804; AVX512FVL-NEXT:    vzeroupper3805; AVX512FVL-NEXT:    retq3806;3807; AVX512BW-LABEL: truncstore_v16i32_v16i16:3808; AVX512BW:       # %bb.0:3809; AVX512BW-NEXT:    vptestmd %zmm1, %zmm1, %k13810; AVX512BW-NEXT:    vpminsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %zmm03811; AVX512BW-NEXT:    vpmaxsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %zmm03812; AVX512BW-NEXT:    vpmovdw %zmm0, (%rdi) {%k1}3813; AVX512BW-NEXT:    vzeroupper3814; AVX512BW-NEXT:    retq3815;3816; AVX512BWVL-LABEL: truncstore_v16i32_v16i16:3817; AVX512BWVL:       # %bb.0:3818; AVX512BWVL-NEXT:    vptestmd %zmm1, %zmm1, %k13819; AVX512BWVL-NEXT:    vpminsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %zmm03820; AVX512BWVL-NEXT:    vpmaxsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %zmm03821; AVX512BWVL-NEXT:    vpmovdw %zmm0, (%rdi) {%k1}3822; AVX512BWVL-NEXT:    vzeroupper3823; AVX512BWVL-NEXT:    retq3824  %a = icmp ne <16 x i32> %mask, zeroinitializer3825  %b = icmp slt <16 x i32> %x, <i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767>3826  %c = select <16 x i1> %b, <16 x i32> %x, <16 x i32> <i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767>3827  %d = icmp sgt <16 x i32> %c, <i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768>3828  %e = select <16 x i1> %d, <16 x i32> %c, <16 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768>3829  %f = trunc <16 x i32> %e to <16 x i16>3830  call void @llvm.masked.store.v16i16.p0(<16 x i16> %f, ptr %p, i32 1, <16 x i1> %a)3831  ret void3832}3833 3834define void @truncstore_v16i32_v16i8(<16 x i32> %x, ptr %p, <16 x i32> %mask) {3835; SSE2-LABEL: truncstore_v16i32_v16i8:3836; SSE2:       # %bb.0:3837; SSE2-NEXT:    pxor %xmm8, %xmm83838; SSE2-NEXT:    packssdw %xmm3, %xmm23839; SSE2-NEXT:    packssdw %xmm1, %xmm03840; SSE2-NEXT:    packsswb %xmm2, %xmm03841; SSE2-NEXT:    pcmpeqd %xmm8, %xmm73842; SSE2-NEXT:    pcmpeqd %xmm8, %xmm63843; SSE2-NEXT:    packssdw %xmm7, %xmm63844; SSE2-NEXT:    pcmpeqd %xmm8, %xmm53845; SSE2-NEXT:    pcmpeqd %xmm8, %xmm43846; SSE2-NEXT:    packssdw %xmm5, %xmm43847; SSE2-NEXT:    packsswb %xmm6, %xmm43848; SSE2-NEXT:    pmovmskb %xmm4, %eax3849; SSE2-NEXT:    xorl $65535, %eax # imm = 0xFFFF3850; SSE2-NEXT:    testb $1, %al3851; SSE2-NEXT:    movd %xmm0, %ecx3852; SSE2-NEXT:    jne .LBB10_13853; SSE2-NEXT:  # %bb.2: # %else3854; SSE2-NEXT:    testb $2, %al3855; SSE2-NEXT:    jne .LBB10_33856; SSE2-NEXT:  .LBB10_4: # %else23857; SSE2-NEXT:    testb $4, %al3858; SSE2-NEXT:    jne .LBB10_53859; SSE2-NEXT:  .LBB10_6: # %else43860; SSE2-NEXT:    testb $8, %al3861; SSE2-NEXT:    je .LBB10_83862; SSE2-NEXT:  .LBB10_7: # %cond.store53863; SSE2-NEXT:    shrl $24, %ecx3864; SSE2-NEXT:    movb %cl, 3(%rdi)3865; SSE2-NEXT:  .LBB10_8: # %else63866; SSE2-NEXT:    testb $16, %al3867; SSE2-NEXT:    pextrw $2, %xmm0, %ecx3868; SSE2-NEXT:    je .LBB10_103869; SSE2-NEXT:  # %bb.9: # %cond.store73870; SSE2-NEXT:    movb %cl, 4(%rdi)3871; SSE2-NEXT:  .LBB10_10: # %else83872; SSE2-NEXT:    testb $32, %al3873; SSE2-NEXT:    je .LBB10_123874; SSE2-NEXT:  # %bb.11: # %cond.store93875; SSE2-NEXT:    movb %ch, 5(%rdi)3876; SSE2-NEXT:  .LBB10_12: # %else103877; SSE2-NEXT:    testb $64, %al3878; SSE2-NEXT:    pextrw $3, %xmm0, %ecx3879; SSE2-NEXT:    je .LBB10_143880; SSE2-NEXT:  # %bb.13: # %cond.store113881; SSE2-NEXT:    movb %cl, 6(%rdi)3882; SSE2-NEXT:  .LBB10_14: # %else123883; SSE2-NEXT:    testb %al, %al3884; SSE2-NEXT:    jns .LBB10_163885; SSE2-NEXT:  # %bb.15: # %cond.store133886; SSE2-NEXT:    movb %ch, 7(%rdi)3887; SSE2-NEXT:  .LBB10_16: # %else143888; SSE2-NEXT:    testl $256, %eax # imm = 0x1003889; SSE2-NEXT:    pextrw $4, %xmm0, %ecx3890; SSE2-NEXT:    je .LBB10_183891; SSE2-NEXT:  # %bb.17: # %cond.store153892; SSE2-NEXT:    movb %cl, 8(%rdi)3893; SSE2-NEXT:  .LBB10_18: # %else163894; SSE2-NEXT:    testl $512, %eax # imm = 0x2003895; SSE2-NEXT:    je .LBB10_203896; SSE2-NEXT:  # %bb.19: # %cond.store173897; SSE2-NEXT:    movb %ch, 9(%rdi)3898; SSE2-NEXT:  .LBB10_20: # %else183899; SSE2-NEXT:    testl $1024, %eax # imm = 0x4003900; SSE2-NEXT:    pextrw $5, %xmm0, %ecx3901; SSE2-NEXT:    je .LBB10_223902; SSE2-NEXT:  # %bb.21: # %cond.store193903; SSE2-NEXT:    movb %cl, 10(%rdi)3904; SSE2-NEXT:  .LBB10_22: # %else203905; SSE2-NEXT:    testl $2048, %eax # imm = 0x8003906; SSE2-NEXT:    je .LBB10_243907; SSE2-NEXT:  # %bb.23: # %cond.store213908; SSE2-NEXT:    movb %ch, 11(%rdi)3909; SSE2-NEXT:  .LBB10_24: # %else223910; SSE2-NEXT:    testl $4096, %eax # imm = 0x10003911; SSE2-NEXT:    pextrw $6, %xmm0, %ecx3912; SSE2-NEXT:    je .LBB10_263913; SSE2-NEXT:  # %bb.25: # %cond.store233914; SSE2-NEXT:    movb %cl, 12(%rdi)3915; SSE2-NEXT:  .LBB10_26: # %else243916; SSE2-NEXT:    testl $8192, %eax # imm = 0x20003917; SSE2-NEXT:    je .LBB10_283918; SSE2-NEXT:  # %bb.27: # %cond.store253919; SSE2-NEXT:    movb %ch, 13(%rdi)3920; SSE2-NEXT:  .LBB10_28: # %else263921; SSE2-NEXT:    testl $16384, %eax # imm = 0x40003922; SSE2-NEXT:    pextrw $7, %xmm0, %ecx3923; SSE2-NEXT:    jne .LBB10_293924; SSE2-NEXT:  # %bb.30: # %else283925; SSE2-NEXT:    testl $32768, %eax # imm = 0x80003926; SSE2-NEXT:    jne .LBB10_313927; SSE2-NEXT:  .LBB10_32: # %else303928; SSE2-NEXT:    retq3929; SSE2-NEXT:  .LBB10_1: # %cond.store3930; SSE2-NEXT:    movb %cl, (%rdi)3931; SSE2-NEXT:    testb $2, %al3932; SSE2-NEXT:    je .LBB10_43933; SSE2-NEXT:  .LBB10_3: # %cond.store13934; SSE2-NEXT:    movb %ch, 1(%rdi)3935; SSE2-NEXT:    testb $4, %al3936; SSE2-NEXT:    je .LBB10_63937; SSE2-NEXT:  .LBB10_5: # %cond.store33938; SSE2-NEXT:    movl %ecx, %edx3939; SSE2-NEXT:    shrl $16, %edx3940; SSE2-NEXT:    movb %dl, 2(%rdi)3941; SSE2-NEXT:    testb $8, %al3942; SSE2-NEXT:    jne .LBB10_73943; SSE2-NEXT:    jmp .LBB10_83944; SSE2-NEXT:  .LBB10_29: # %cond.store273945; SSE2-NEXT:    movb %cl, 14(%rdi)3946; SSE2-NEXT:    testl $32768, %eax # imm = 0x80003947; SSE2-NEXT:    je .LBB10_323948; SSE2-NEXT:  .LBB10_31: # %cond.store293949; SSE2-NEXT:    movb %ch, 15(%rdi)3950; SSE2-NEXT:    retq3951;3952; SSE4-LABEL: truncstore_v16i32_v16i8:3953; SSE4:       # %bb.0:3954; SSE4-NEXT:    pxor %xmm8, %xmm83955; SSE4-NEXT:    packssdw %xmm3, %xmm23956; SSE4-NEXT:    packssdw %xmm1, %xmm03957; SSE4-NEXT:    packsswb %xmm2, %xmm03958; SSE4-NEXT:    pcmpeqd %xmm8, %xmm73959; SSE4-NEXT:    pcmpeqd %xmm8, %xmm63960; SSE4-NEXT:    packssdw %xmm7, %xmm63961; SSE4-NEXT:    pcmpeqd %xmm8, %xmm53962; SSE4-NEXT:    pcmpeqd %xmm8, %xmm43963; SSE4-NEXT:    packssdw %xmm5, %xmm43964; SSE4-NEXT:    packsswb %xmm6, %xmm43965; SSE4-NEXT:    pmovmskb %xmm4, %eax3966; SSE4-NEXT:    xorl $65535, %eax # imm = 0xFFFF3967; SSE4-NEXT:    testb $1, %al3968; SSE4-NEXT:    jne .LBB10_13969; SSE4-NEXT:  # %bb.2: # %else3970; SSE4-NEXT:    testb $2, %al3971; SSE4-NEXT:    jne .LBB10_33972; SSE4-NEXT:  .LBB10_4: # %else23973; SSE4-NEXT:    testb $4, %al3974; SSE4-NEXT:    jne .LBB10_53975; SSE4-NEXT:  .LBB10_6: # %else43976; SSE4-NEXT:    testb $8, %al3977; SSE4-NEXT:    jne .LBB10_73978; SSE4-NEXT:  .LBB10_8: # %else63979; SSE4-NEXT:    testb $16, %al3980; SSE4-NEXT:    jne .LBB10_93981; SSE4-NEXT:  .LBB10_10: # %else83982; SSE4-NEXT:    testb $32, %al3983; SSE4-NEXT:    jne .LBB10_113984; SSE4-NEXT:  .LBB10_12: # %else103985; SSE4-NEXT:    testb $64, %al3986; SSE4-NEXT:    jne .LBB10_133987; SSE4-NEXT:  .LBB10_14: # %else123988; SSE4-NEXT:    testb %al, %al3989; SSE4-NEXT:    js .LBB10_153990; SSE4-NEXT:  .LBB10_16: # %else143991; SSE4-NEXT:    testl $256, %eax # imm = 0x1003992; SSE4-NEXT:    jne .LBB10_173993; SSE4-NEXT:  .LBB10_18: # %else163994; SSE4-NEXT:    testl $512, %eax # imm = 0x2003995; SSE4-NEXT:    jne .LBB10_193996; SSE4-NEXT:  .LBB10_20: # %else183997; SSE4-NEXT:    testl $1024, %eax # imm = 0x4003998; SSE4-NEXT:    jne .LBB10_213999; SSE4-NEXT:  .LBB10_22: # %else204000; SSE4-NEXT:    testl $2048, %eax # imm = 0x8004001; SSE4-NEXT:    jne .LBB10_234002; SSE4-NEXT:  .LBB10_24: # %else224003; SSE4-NEXT:    testl $4096, %eax # imm = 0x10004004; SSE4-NEXT:    jne .LBB10_254005; SSE4-NEXT:  .LBB10_26: # %else244006; SSE4-NEXT:    testl $8192, %eax # imm = 0x20004007; SSE4-NEXT:    jne .LBB10_274008; SSE4-NEXT:  .LBB10_28: # %else264009; SSE4-NEXT:    testl $16384, %eax # imm = 0x40004010; SSE4-NEXT:    jne .LBB10_294011; SSE4-NEXT:  .LBB10_30: # %else284012; SSE4-NEXT:    testl $32768, %eax # imm = 0x80004013; SSE4-NEXT:    jne .LBB10_314014; SSE4-NEXT:  .LBB10_32: # %else304015; SSE4-NEXT:    retq4016; SSE4-NEXT:  .LBB10_1: # %cond.store4017; SSE4-NEXT:    pextrb $0, %xmm0, (%rdi)4018; SSE4-NEXT:    testb $2, %al4019; SSE4-NEXT:    je .LBB10_44020; SSE4-NEXT:  .LBB10_3: # %cond.store14021; SSE4-NEXT:    pextrb $1, %xmm0, 1(%rdi)4022; SSE4-NEXT:    testb $4, %al4023; SSE4-NEXT:    je .LBB10_64024; SSE4-NEXT:  .LBB10_5: # %cond.store34025; SSE4-NEXT:    pextrb $2, %xmm0, 2(%rdi)4026; SSE4-NEXT:    testb $8, %al4027; SSE4-NEXT:    je .LBB10_84028; SSE4-NEXT:  .LBB10_7: # %cond.store54029; SSE4-NEXT:    pextrb $3, %xmm0, 3(%rdi)4030; SSE4-NEXT:    testb $16, %al4031; SSE4-NEXT:    je .LBB10_104032; SSE4-NEXT:  .LBB10_9: # %cond.store74033; SSE4-NEXT:    pextrb $4, %xmm0, 4(%rdi)4034; SSE4-NEXT:    testb $32, %al4035; SSE4-NEXT:    je .LBB10_124036; SSE4-NEXT:  .LBB10_11: # %cond.store94037; SSE4-NEXT:    pextrb $5, %xmm0, 5(%rdi)4038; SSE4-NEXT:    testb $64, %al4039; SSE4-NEXT:    je .LBB10_144040; SSE4-NEXT:  .LBB10_13: # %cond.store114041; SSE4-NEXT:    pextrb $6, %xmm0, 6(%rdi)4042; SSE4-NEXT:    testb %al, %al4043; SSE4-NEXT:    jns .LBB10_164044; SSE4-NEXT:  .LBB10_15: # %cond.store134045; SSE4-NEXT:    pextrb $7, %xmm0, 7(%rdi)4046; SSE4-NEXT:    testl $256, %eax # imm = 0x1004047; SSE4-NEXT:    je .LBB10_184048; SSE4-NEXT:  .LBB10_17: # %cond.store154049; SSE4-NEXT:    pextrb $8, %xmm0, 8(%rdi)4050; SSE4-NEXT:    testl $512, %eax # imm = 0x2004051; SSE4-NEXT:    je .LBB10_204052; SSE4-NEXT:  .LBB10_19: # %cond.store174053; SSE4-NEXT:    pextrb $9, %xmm0, 9(%rdi)4054; SSE4-NEXT:    testl $1024, %eax # imm = 0x4004055; SSE4-NEXT:    je .LBB10_224056; SSE4-NEXT:  .LBB10_21: # %cond.store194057; SSE4-NEXT:    pextrb $10, %xmm0, 10(%rdi)4058; SSE4-NEXT:    testl $2048, %eax # imm = 0x8004059; SSE4-NEXT:    je .LBB10_244060; SSE4-NEXT:  .LBB10_23: # %cond.store214061; SSE4-NEXT:    pextrb $11, %xmm0, 11(%rdi)4062; SSE4-NEXT:    testl $4096, %eax # imm = 0x10004063; SSE4-NEXT:    je .LBB10_264064; SSE4-NEXT:  .LBB10_25: # %cond.store234065; SSE4-NEXT:    pextrb $12, %xmm0, 12(%rdi)4066; SSE4-NEXT:    testl $8192, %eax # imm = 0x20004067; SSE4-NEXT:    je .LBB10_284068; SSE4-NEXT:  .LBB10_27: # %cond.store254069; SSE4-NEXT:    pextrb $13, %xmm0, 13(%rdi)4070; SSE4-NEXT:    testl $16384, %eax # imm = 0x40004071; SSE4-NEXT:    je .LBB10_304072; SSE4-NEXT:  .LBB10_29: # %cond.store274073; SSE4-NEXT:    pextrb $14, %xmm0, 14(%rdi)4074; SSE4-NEXT:    testl $32768, %eax # imm = 0x80004075; SSE4-NEXT:    je .LBB10_324076; SSE4-NEXT:  .LBB10_31: # %cond.store294077; SSE4-NEXT:    pextrb $15, %xmm0, 15(%rdi)4078; SSE4-NEXT:    retq4079;4080; AVX1-LABEL: truncstore_v16i32_v16i8:4081; AVX1:       # %bb.0:4082; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm44083; AVX1-NEXT:    vpackssdw %xmm4, %xmm1, %xmm14084; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm44085; AVX1-NEXT:    vpackssdw %xmm4, %xmm0, %xmm04086; AVX1-NEXT:    vpacksswb %xmm1, %xmm0, %xmm04087; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm14088; AVX1-NEXT:    vpxor %xmm4, %xmm4, %xmm44089; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm1, %xmm14090; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm3, %xmm34091; AVX1-NEXT:    vpackssdw %xmm1, %xmm3, %xmm14092; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm34093; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm3, %xmm34094; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm2, %xmm24095; AVX1-NEXT:    vpackssdw %xmm3, %xmm2, %xmm24096; AVX1-NEXT:    vpacksswb %xmm1, %xmm2, %xmm14097; AVX1-NEXT:    vpmovmskb %xmm1, %eax4098; AVX1-NEXT:    xorl $65535, %eax # imm = 0xFFFF4099; AVX1-NEXT:    testb $1, %al4100; AVX1-NEXT:    jne .LBB10_14101; AVX1-NEXT:  # %bb.2: # %else4102; AVX1-NEXT:    testb $2, %al4103; AVX1-NEXT:    jne .LBB10_34104; AVX1-NEXT:  .LBB10_4: # %else24105; AVX1-NEXT:    testb $4, %al4106; AVX1-NEXT:    jne .LBB10_54107; AVX1-NEXT:  .LBB10_6: # %else44108; AVX1-NEXT:    testb $8, %al4109; AVX1-NEXT:    jne .LBB10_74110; AVX1-NEXT:  .LBB10_8: # %else64111; AVX1-NEXT:    testb $16, %al4112; AVX1-NEXT:    jne .LBB10_94113; AVX1-NEXT:  .LBB10_10: # %else84114; AVX1-NEXT:    testb $32, %al4115; AVX1-NEXT:    jne .LBB10_114116; AVX1-NEXT:  .LBB10_12: # %else104117; AVX1-NEXT:    testb $64, %al4118; AVX1-NEXT:    jne .LBB10_134119; AVX1-NEXT:  .LBB10_14: # %else124120; AVX1-NEXT:    testb %al, %al4121; AVX1-NEXT:    js .LBB10_154122; AVX1-NEXT:  .LBB10_16: # %else144123; AVX1-NEXT:    testl $256, %eax # imm = 0x1004124; AVX1-NEXT:    jne .LBB10_174125; AVX1-NEXT:  .LBB10_18: # %else164126; AVX1-NEXT:    testl $512, %eax # imm = 0x2004127; AVX1-NEXT:    jne .LBB10_194128; AVX1-NEXT:  .LBB10_20: # %else184129; AVX1-NEXT:    testl $1024, %eax # imm = 0x4004130; AVX1-NEXT:    jne .LBB10_214131; AVX1-NEXT:  .LBB10_22: # %else204132; AVX1-NEXT:    testl $2048, %eax # imm = 0x8004133; AVX1-NEXT:    jne .LBB10_234134; AVX1-NEXT:  .LBB10_24: # %else224135; AVX1-NEXT:    testl $4096, %eax # imm = 0x10004136; AVX1-NEXT:    jne .LBB10_254137; AVX1-NEXT:  .LBB10_26: # %else244138; AVX1-NEXT:    testl $8192, %eax # imm = 0x20004139; AVX1-NEXT:    jne .LBB10_274140; AVX1-NEXT:  .LBB10_28: # %else264141; AVX1-NEXT:    testl $16384, %eax # imm = 0x40004142; AVX1-NEXT:    jne .LBB10_294143; AVX1-NEXT:  .LBB10_30: # %else284144; AVX1-NEXT:    testl $32768, %eax # imm = 0x80004145; AVX1-NEXT:    jne .LBB10_314146; AVX1-NEXT:  .LBB10_32: # %else304147; AVX1-NEXT:    vzeroupper4148; AVX1-NEXT:    retq4149; AVX1-NEXT:  .LBB10_1: # %cond.store4150; AVX1-NEXT:    vpextrb $0, %xmm0, (%rdi)4151; AVX1-NEXT:    testb $2, %al4152; AVX1-NEXT:    je .LBB10_44153; AVX1-NEXT:  .LBB10_3: # %cond.store14154; AVX1-NEXT:    vpextrb $1, %xmm0, 1(%rdi)4155; AVX1-NEXT:    testb $4, %al4156; AVX1-NEXT:    je .LBB10_64157; AVX1-NEXT:  .LBB10_5: # %cond.store34158; AVX1-NEXT:    vpextrb $2, %xmm0, 2(%rdi)4159; AVX1-NEXT:    testb $8, %al4160; AVX1-NEXT:    je .LBB10_84161; AVX1-NEXT:  .LBB10_7: # %cond.store54162; AVX1-NEXT:    vpextrb $3, %xmm0, 3(%rdi)4163; AVX1-NEXT:    testb $16, %al4164; AVX1-NEXT:    je .LBB10_104165; AVX1-NEXT:  .LBB10_9: # %cond.store74166; AVX1-NEXT:    vpextrb $4, %xmm0, 4(%rdi)4167; AVX1-NEXT:    testb $32, %al4168; AVX1-NEXT:    je .LBB10_124169; AVX1-NEXT:  .LBB10_11: # %cond.store94170; AVX1-NEXT:    vpextrb $5, %xmm0, 5(%rdi)4171; AVX1-NEXT:    testb $64, %al4172; AVX1-NEXT:    je .LBB10_144173; AVX1-NEXT:  .LBB10_13: # %cond.store114174; AVX1-NEXT:    vpextrb $6, %xmm0, 6(%rdi)4175; AVX1-NEXT:    testb %al, %al4176; AVX1-NEXT:    jns .LBB10_164177; AVX1-NEXT:  .LBB10_15: # %cond.store134178; AVX1-NEXT:    vpextrb $7, %xmm0, 7(%rdi)4179; AVX1-NEXT:    testl $256, %eax # imm = 0x1004180; AVX1-NEXT:    je .LBB10_184181; AVX1-NEXT:  .LBB10_17: # %cond.store154182; AVX1-NEXT:    vpextrb $8, %xmm0, 8(%rdi)4183; AVX1-NEXT:    testl $512, %eax # imm = 0x2004184; AVX1-NEXT:    je .LBB10_204185; AVX1-NEXT:  .LBB10_19: # %cond.store174186; AVX1-NEXT:    vpextrb $9, %xmm0, 9(%rdi)4187; AVX1-NEXT:    testl $1024, %eax # imm = 0x4004188; AVX1-NEXT:    je .LBB10_224189; AVX1-NEXT:  .LBB10_21: # %cond.store194190; AVX1-NEXT:    vpextrb $10, %xmm0, 10(%rdi)4191; AVX1-NEXT:    testl $2048, %eax # imm = 0x8004192; AVX1-NEXT:    je .LBB10_244193; AVX1-NEXT:  .LBB10_23: # %cond.store214194; AVX1-NEXT:    vpextrb $11, %xmm0, 11(%rdi)4195; AVX1-NEXT:    testl $4096, %eax # imm = 0x10004196; AVX1-NEXT:    je .LBB10_264197; AVX1-NEXT:  .LBB10_25: # %cond.store234198; AVX1-NEXT:    vpextrb $12, %xmm0, 12(%rdi)4199; AVX1-NEXT:    testl $8192, %eax # imm = 0x20004200; AVX1-NEXT:    je .LBB10_284201; AVX1-NEXT:  .LBB10_27: # %cond.store254202; AVX1-NEXT:    vpextrb $13, %xmm0, 13(%rdi)4203; AVX1-NEXT:    testl $16384, %eax # imm = 0x40004204; AVX1-NEXT:    je .LBB10_304205; AVX1-NEXT:  .LBB10_29: # %cond.store274206; AVX1-NEXT:    vpextrb $14, %xmm0, 14(%rdi)4207; AVX1-NEXT:    testl $32768, %eax # imm = 0x80004208; AVX1-NEXT:    je .LBB10_324209; AVX1-NEXT:  .LBB10_31: # %cond.store294210; AVX1-NEXT:    vpextrb $15, %xmm0, 15(%rdi)4211; AVX1-NEXT:    vzeroupper4212; AVX1-NEXT:    retq4213;4214; AVX2-LABEL: truncstore_v16i32_v16i8:4215; AVX2:       # %bb.0:4216; AVX2-NEXT:    vpxor %xmm4, %xmm4, %xmm44217; AVX2-NEXT:    vpackssdw %ymm1, %ymm0, %ymm04218; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm14219; AVX2-NEXT:    vpacksswb %xmm1, %xmm0, %xmm04220; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]4221; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm3, %ymm14222; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm2, %ymm24223; AVX2-NEXT:    vpackssdw %ymm1, %ymm2, %ymm14224; AVX2-NEXT:    vpcmpeqd %ymm2, %ymm2, %ymm24225; AVX2-NEXT:    vpxor %ymm2, %ymm1, %ymm14226; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm24227; AVX2-NEXT:    vpacksswb %xmm2, %xmm1, %xmm14228; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,1,3]4229; AVX2-NEXT:    vpmovmskb %xmm1, %eax4230; AVX2-NEXT:    testb $1, %al4231; AVX2-NEXT:    jne .LBB10_14232; AVX2-NEXT:  # %bb.2: # %else4233; AVX2-NEXT:    testb $2, %al4234; AVX2-NEXT:    jne .LBB10_34235; AVX2-NEXT:  .LBB10_4: # %else24236; AVX2-NEXT:    testb $4, %al4237; AVX2-NEXT:    jne .LBB10_54238; AVX2-NEXT:  .LBB10_6: # %else44239; AVX2-NEXT:    testb $8, %al4240; AVX2-NEXT:    jne .LBB10_74241; AVX2-NEXT:  .LBB10_8: # %else64242; AVX2-NEXT:    testb $16, %al4243; AVX2-NEXT:    jne .LBB10_94244; AVX2-NEXT:  .LBB10_10: # %else84245; AVX2-NEXT:    testb $32, %al4246; AVX2-NEXT:    jne .LBB10_114247; AVX2-NEXT:  .LBB10_12: # %else104248; AVX2-NEXT:    testb $64, %al4249; AVX2-NEXT:    jne .LBB10_134250; AVX2-NEXT:  .LBB10_14: # %else124251; AVX2-NEXT:    testb %al, %al4252; AVX2-NEXT:    js .LBB10_154253; AVX2-NEXT:  .LBB10_16: # %else144254; AVX2-NEXT:    testl $256, %eax # imm = 0x1004255; AVX2-NEXT:    jne .LBB10_174256; AVX2-NEXT:  .LBB10_18: # %else164257; AVX2-NEXT:    testl $512, %eax # imm = 0x2004258; AVX2-NEXT:    jne .LBB10_194259; AVX2-NEXT:  .LBB10_20: # %else184260; AVX2-NEXT:    testl $1024, %eax # imm = 0x4004261; AVX2-NEXT:    jne .LBB10_214262; AVX2-NEXT:  .LBB10_22: # %else204263; AVX2-NEXT:    testl $2048, %eax # imm = 0x8004264; AVX2-NEXT:    jne .LBB10_234265; AVX2-NEXT:  .LBB10_24: # %else224266; AVX2-NEXT:    testl $4096, %eax # imm = 0x10004267; AVX2-NEXT:    jne .LBB10_254268; AVX2-NEXT:  .LBB10_26: # %else244269; AVX2-NEXT:    testl $8192, %eax # imm = 0x20004270; AVX2-NEXT:    jne .LBB10_274271; AVX2-NEXT:  .LBB10_28: # %else264272; AVX2-NEXT:    testl $16384, %eax # imm = 0x40004273; AVX2-NEXT:    jne .LBB10_294274; AVX2-NEXT:  .LBB10_30: # %else284275; AVX2-NEXT:    testl $32768, %eax # imm = 0x80004276; AVX2-NEXT:    jne .LBB10_314277; AVX2-NEXT:  .LBB10_32: # %else304278; AVX2-NEXT:    vzeroupper4279; AVX2-NEXT:    retq4280; AVX2-NEXT:  .LBB10_1: # %cond.store4281; AVX2-NEXT:    vpextrb $0, %xmm0, (%rdi)4282; AVX2-NEXT:    testb $2, %al4283; AVX2-NEXT:    je .LBB10_44284; AVX2-NEXT:  .LBB10_3: # %cond.store14285; AVX2-NEXT:    vpextrb $1, %xmm0, 1(%rdi)4286; AVX2-NEXT:    testb $4, %al4287; AVX2-NEXT:    je .LBB10_64288; AVX2-NEXT:  .LBB10_5: # %cond.store34289; AVX2-NEXT:    vpextrb $2, %xmm0, 2(%rdi)4290; AVX2-NEXT:    testb $8, %al4291; AVX2-NEXT:    je .LBB10_84292; AVX2-NEXT:  .LBB10_7: # %cond.store54293; AVX2-NEXT:    vpextrb $3, %xmm0, 3(%rdi)4294; AVX2-NEXT:    testb $16, %al4295; AVX2-NEXT:    je .LBB10_104296; AVX2-NEXT:  .LBB10_9: # %cond.store74297; AVX2-NEXT:    vpextrb $4, %xmm0, 4(%rdi)4298; AVX2-NEXT:    testb $32, %al4299; AVX2-NEXT:    je .LBB10_124300; AVX2-NEXT:  .LBB10_11: # %cond.store94301; AVX2-NEXT:    vpextrb $5, %xmm0, 5(%rdi)4302; AVX2-NEXT:    testb $64, %al4303; AVX2-NEXT:    je .LBB10_144304; AVX2-NEXT:  .LBB10_13: # %cond.store114305; AVX2-NEXT:    vpextrb $6, %xmm0, 6(%rdi)4306; AVX2-NEXT:    testb %al, %al4307; AVX2-NEXT:    jns .LBB10_164308; AVX2-NEXT:  .LBB10_15: # %cond.store134309; AVX2-NEXT:    vpextrb $7, %xmm0, 7(%rdi)4310; AVX2-NEXT:    testl $256, %eax # imm = 0x1004311; AVX2-NEXT:    je .LBB10_184312; AVX2-NEXT:  .LBB10_17: # %cond.store154313; AVX2-NEXT:    vpextrb $8, %xmm0, 8(%rdi)4314; AVX2-NEXT:    testl $512, %eax # imm = 0x2004315; AVX2-NEXT:    je .LBB10_204316; AVX2-NEXT:  .LBB10_19: # %cond.store174317; AVX2-NEXT:    vpextrb $9, %xmm0, 9(%rdi)4318; AVX2-NEXT:    testl $1024, %eax # imm = 0x4004319; AVX2-NEXT:    je .LBB10_224320; AVX2-NEXT:  .LBB10_21: # %cond.store194321; AVX2-NEXT:    vpextrb $10, %xmm0, 10(%rdi)4322; AVX2-NEXT:    testl $2048, %eax # imm = 0x8004323; AVX2-NEXT:    je .LBB10_244324; AVX2-NEXT:  .LBB10_23: # %cond.store214325; AVX2-NEXT:    vpextrb $11, %xmm0, 11(%rdi)4326; AVX2-NEXT:    testl $4096, %eax # imm = 0x10004327; AVX2-NEXT:    je .LBB10_264328; AVX2-NEXT:  .LBB10_25: # %cond.store234329; AVX2-NEXT:    vpextrb $12, %xmm0, 12(%rdi)4330; AVX2-NEXT:    testl $8192, %eax # imm = 0x20004331; AVX2-NEXT:    je .LBB10_284332; AVX2-NEXT:  .LBB10_27: # %cond.store254333; AVX2-NEXT:    vpextrb $13, %xmm0, 13(%rdi)4334; AVX2-NEXT:    testl $16384, %eax # imm = 0x40004335; AVX2-NEXT:    je .LBB10_304336; AVX2-NEXT:  .LBB10_29: # %cond.store274337; AVX2-NEXT:    vpextrb $14, %xmm0, 14(%rdi)4338; AVX2-NEXT:    testl $32768, %eax # imm = 0x80004339; AVX2-NEXT:    je .LBB10_324340; AVX2-NEXT:  .LBB10_31: # %cond.store294341; AVX2-NEXT:    vpextrb $15, %xmm0, 15(%rdi)4342; AVX2-NEXT:    vzeroupper4343; AVX2-NEXT:    retq4344;4345; AVX512F-LABEL: truncstore_v16i32_v16i8:4346; AVX512F:       # %bb.0:4347; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k04348; AVX512F-NEXT:    vpmovsdb %zmm0, %xmm04349; AVX512F-NEXT:    kmovw %k0, %eax4350; AVX512F-NEXT:    testb $1, %al4351; AVX512F-NEXT:    jne .LBB10_14352; AVX512F-NEXT:  # %bb.2: # %else4353; AVX512F-NEXT:    testb $2, %al4354; AVX512F-NEXT:    jne .LBB10_34355; AVX512F-NEXT:  .LBB10_4: # %else24356; AVX512F-NEXT:    testb $4, %al4357; AVX512F-NEXT:    jne .LBB10_54358; AVX512F-NEXT:  .LBB10_6: # %else44359; AVX512F-NEXT:    testb $8, %al4360; AVX512F-NEXT:    jne .LBB10_74361; AVX512F-NEXT:  .LBB10_8: # %else64362; AVX512F-NEXT:    testb $16, %al4363; AVX512F-NEXT:    jne .LBB10_94364; AVX512F-NEXT:  .LBB10_10: # %else84365; AVX512F-NEXT:    testb $32, %al4366; AVX512F-NEXT:    jne .LBB10_114367; AVX512F-NEXT:  .LBB10_12: # %else104368; AVX512F-NEXT:    testb $64, %al4369; AVX512F-NEXT:    jne .LBB10_134370; AVX512F-NEXT:  .LBB10_14: # %else124371; AVX512F-NEXT:    testb %al, %al4372; AVX512F-NEXT:    js .LBB10_154373; AVX512F-NEXT:  .LBB10_16: # %else144374; AVX512F-NEXT:    testl $256, %eax # imm = 0x1004375; AVX512F-NEXT:    jne .LBB10_174376; AVX512F-NEXT:  .LBB10_18: # %else164377; AVX512F-NEXT:    testl $512, %eax # imm = 0x2004378; AVX512F-NEXT:    jne .LBB10_194379; AVX512F-NEXT:  .LBB10_20: # %else184380; AVX512F-NEXT:    testl $1024, %eax # imm = 0x4004381; AVX512F-NEXT:    jne .LBB10_214382; AVX512F-NEXT:  .LBB10_22: # %else204383; AVX512F-NEXT:    testl $2048, %eax # imm = 0x8004384; AVX512F-NEXT:    jne .LBB10_234385; AVX512F-NEXT:  .LBB10_24: # %else224386; AVX512F-NEXT:    testl $4096, %eax # imm = 0x10004387; AVX512F-NEXT:    jne .LBB10_254388; AVX512F-NEXT:  .LBB10_26: # %else244389; AVX512F-NEXT:    testl $8192, %eax # imm = 0x20004390; AVX512F-NEXT:    jne .LBB10_274391; AVX512F-NEXT:  .LBB10_28: # %else264392; AVX512F-NEXT:    testl $16384, %eax # imm = 0x40004393; AVX512F-NEXT:    jne .LBB10_294394; AVX512F-NEXT:  .LBB10_30: # %else284395; AVX512F-NEXT:    testl $32768, %eax # imm = 0x80004396; AVX512F-NEXT:    jne .LBB10_314397; AVX512F-NEXT:  .LBB10_32: # %else304398; AVX512F-NEXT:    vzeroupper4399; AVX512F-NEXT:    retq4400; AVX512F-NEXT:  .LBB10_1: # %cond.store4401; AVX512F-NEXT:    vpextrb $0, %xmm0, (%rdi)4402; AVX512F-NEXT:    testb $2, %al4403; AVX512F-NEXT:    je .LBB10_44404; AVX512F-NEXT:  .LBB10_3: # %cond.store14405; AVX512F-NEXT:    vpextrb $1, %xmm0, 1(%rdi)4406; AVX512F-NEXT:    testb $4, %al4407; AVX512F-NEXT:    je .LBB10_64408; AVX512F-NEXT:  .LBB10_5: # %cond.store34409; AVX512F-NEXT:    vpextrb $2, %xmm0, 2(%rdi)4410; AVX512F-NEXT:    testb $8, %al4411; AVX512F-NEXT:    je .LBB10_84412; AVX512F-NEXT:  .LBB10_7: # %cond.store54413; AVX512F-NEXT:    vpextrb $3, %xmm0, 3(%rdi)4414; AVX512F-NEXT:    testb $16, %al4415; AVX512F-NEXT:    je .LBB10_104416; AVX512F-NEXT:  .LBB10_9: # %cond.store74417; AVX512F-NEXT:    vpextrb $4, %xmm0, 4(%rdi)4418; AVX512F-NEXT:    testb $32, %al4419; AVX512F-NEXT:    je .LBB10_124420; AVX512F-NEXT:  .LBB10_11: # %cond.store94421; AVX512F-NEXT:    vpextrb $5, %xmm0, 5(%rdi)4422; AVX512F-NEXT:    testb $64, %al4423; AVX512F-NEXT:    je .LBB10_144424; AVX512F-NEXT:  .LBB10_13: # %cond.store114425; AVX512F-NEXT:    vpextrb $6, %xmm0, 6(%rdi)4426; AVX512F-NEXT:    testb %al, %al4427; AVX512F-NEXT:    jns .LBB10_164428; AVX512F-NEXT:  .LBB10_15: # %cond.store134429; AVX512F-NEXT:    vpextrb $7, %xmm0, 7(%rdi)4430; AVX512F-NEXT:    testl $256, %eax # imm = 0x1004431; AVX512F-NEXT:    je .LBB10_184432; AVX512F-NEXT:  .LBB10_17: # %cond.store154433; AVX512F-NEXT:    vpextrb $8, %xmm0, 8(%rdi)4434; AVX512F-NEXT:    testl $512, %eax # imm = 0x2004435; AVX512F-NEXT:    je .LBB10_204436; AVX512F-NEXT:  .LBB10_19: # %cond.store174437; AVX512F-NEXT:    vpextrb $9, %xmm0, 9(%rdi)4438; AVX512F-NEXT:    testl $1024, %eax # imm = 0x4004439; AVX512F-NEXT:    je .LBB10_224440; AVX512F-NEXT:  .LBB10_21: # %cond.store194441; AVX512F-NEXT:    vpextrb $10, %xmm0, 10(%rdi)4442; AVX512F-NEXT:    testl $2048, %eax # imm = 0x8004443; AVX512F-NEXT:    je .LBB10_244444; AVX512F-NEXT:  .LBB10_23: # %cond.store214445; AVX512F-NEXT:    vpextrb $11, %xmm0, 11(%rdi)4446; AVX512F-NEXT:    testl $4096, %eax # imm = 0x10004447; AVX512F-NEXT:    je .LBB10_264448; AVX512F-NEXT:  .LBB10_25: # %cond.store234449; AVX512F-NEXT:    vpextrb $12, %xmm0, 12(%rdi)4450; AVX512F-NEXT:    testl $8192, %eax # imm = 0x20004451; AVX512F-NEXT:    je .LBB10_284452; AVX512F-NEXT:  .LBB10_27: # %cond.store254453; AVX512F-NEXT:    vpextrb $13, %xmm0, 13(%rdi)4454; AVX512F-NEXT:    testl $16384, %eax # imm = 0x40004455; AVX512F-NEXT:    je .LBB10_304456; AVX512F-NEXT:  .LBB10_29: # %cond.store274457; AVX512F-NEXT:    vpextrb $14, %xmm0, 14(%rdi)4458; AVX512F-NEXT:    testl $32768, %eax # imm = 0x80004459; AVX512F-NEXT:    je .LBB10_324460; AVX512F-NEXT:  .LBB10_31: # %cond.store294461; AVX512F-NEXT:    vpextrb $15, %xmm0, 15(%rdi)4462; AVX512F-NEXT:    vzeroupper4463; AVX512F-NEXT:    retq4464;4465; AVX512FVL-LABEL: truncstore_v16i32_v16i8:4466; AVX512FVL:       # %bb.0:4467; AVX512FVL-NEXT:    vptestmd %zmm1, %zmm1, %k04468; AVX512FVL-NEXT:    vpmovsdb %zmm0, %xmm04469; AVX512FVL-NEXT:    kmovw %k0, %eax4470; AVX512FVL-NEXT:    testb $1, %al4471; AVX512FVL-NEXT:    jne .LBB10_14472; AVX512FVL-NEXT:  # %bb.2: # %else4473; AVX512FVL-NEXT:    testb $2, %al4474; AVX512FVL-NEXT:    jne .LBB10_34475; AVX512FVL-NEXT:  .LBB10_4: # %else24476; AVX512FVL-NEXT:    testb $4, %al4477; AVX512FVL-NEXT:    jne .LBB10_54478; AVX512FVL-NEXT:  .LBB10_6: # %else44479; AVX512FVL-NEXT:    testb $8, %al4480; AVX512FVL-NEXT:    jne .LBB10_74481; AVX512FVL-NEXT:  .LBB10_8: # %else64482; AVX512FVL-NEXT:    testb $16, %al4483; AVX512FVL-NEXT:    jne .LBB10_94484; AVX512FVL-NEXT:  .LBB10_10: # %else84485; AVX512FVL-NEXT:    testb $32, %al4486; AVX512FVL-NEXT:    jne .LBB10_114487; AVX512FVL-NEXT:  .LBB10_12: # %else104488; AVX512FVL-NEXT:    testb $64, %al4489; AVX512FVL-NEXT:    jne .LBB10_134490; AVX512FVL-NEXT:  .LBB10_14: # %else124491; AVX512FVL-NEXT:    testb %al, %al4492; AVX512FVL-NEXT:    js .LBB10_154493; AVX512FVL-NEXT:  .LBB10_16: # %else144494; AVX512FVL-NEXT:    testl $256, %eax # imm = 0x1004495; AVX512FVL-NEXT:    jne .LBB10_174496; AVX512FVL-NEXT:  .LBB10_18: # %else164497; AVX512FVL-NEXT:    testl $512, %eax # imm = 0x2004498; AVX512FVL-NEXT:    jne .LBB10_194499; AVX512FVL-NEXT:  .LBB10_20: # %else184500; AVX512FVL-NEXT:    testl $1024, %eax # imm = 0x4004501; AVX512FVL-NEXT:    jne .LBB10_214502; AVX512FVL-NEXT:  .LBB10_22: # %else204503; AVX512FVL-NEXT:    testl $2048, %eax # imm = 0x8004504; AVX512FVL-NEXT:    jne .LBB10_234505; AVX512FVL-NEXT:  .LBB10_24: # %else224506; AVX512FVL-NEXT:    testl $4096, %eax # imm = 0x10004507; AVX512FVL-NEXT:    jne .LBB10_254508; AVX512FVL-NEXT:  .LBB10_26: # %else244509; AVX512FVL-NEXT:    testl $8192, %eax # imm = 0x20004510; AVX512FVL-NEXT:    jne .LBB10_274511; AVX512FVL-NEXT:  .LBB10_28: # %else264512; AVX512FVL-NEXT:    testl $16384, %eax # imm = 0x40004513; AVX512FVL-NEXT:    jne .LBB10_294514; AVX512FVL-NEXT:  .LBB10_30: # %else284515; AVX512FVL-NEXT:    testl $32768, %eax # imm = 0x80004516; AVX512FVL-NEXT:    jne .LBB10_314517; AVX512FVL-NEXT:  .LBB10_32: # %else304518; AVX512FVL-NEXT:    vzeroupper4519; AVX512FVL-NEXT:    retq4520; AVX512FVL-NEXT:  .LBB10_1: # %cond.store4521; AVX512FVL-NEXT:    vpextrb $0, %xmm0, (%rdi)4522; AVX512FVL-NEXT:    testb $2, %al4523; AVX512FVL-NEXT:    je .LBB10_44524; AVX512FVL-NEXT:  .LBB10_3: # %cond.store14525; AVX512FVL-NEXT:    vpextrb $1, %xmm0, 1(%rdi)4526; AVX512FVL-NEXT:    testb $4, %al4527; AVX512FVL-NEXT:    je .LBB10_64528; AVX512FVL-NEXT:  .LBB10_5: # %cond.store34529; AVX512FVL-NEXT:    vpextrb $2, %xmm0, 2(%rdi)4530; AVX512FVL-NEXT:    testb $8, %al4531; AVX512FVL-NEXT:    je .LBB10_84532; AVX512FVL-NEXT:  .LBB10_7: # %cond.store54533; AVX512FVL-NEXT:    vpextrb $3, %xmm0, 3(%rdi)4534; AVX512FVL-NEXT:    testb $16, %al4535; AVX512FVL-NEXT:    je .LBB10_104536; AVX512FVL-NEXT:  .LBB10_9: # %cond.store74537; AVX512FVL-NEXT:    vpextrb $4, %xmm0, 4(%rdi)4538; AVX512FVL-NEXT:    testb $32, %al4539; AVX512FVL-NEXT:    je .LBB10_124540; AVX512FVL-NEXT:  .LBB10_11: # %cond.store94541; AVX512FVL-NEXT:    vpextrb $5, %xmm0, 5(%rdi)4542; AVX512FVL-NEXT:    testb $64, %al4543; AVX512FVL-NEXT:    je .LBB10_144544; AVX512FVL-NEXT:  .LBB10_13: # %cond.store114545; AVX512FVL-NEXT:    vpextrb $6, %xmm0, 6(%rdi)4546; AVX512FVL-NEXT:    testb %al, %al4547; AVX512FVL-NEXT:    jns .LBB10_164548; AVX512FVL-NEXT:  .LBB10_15: # %cond.store134549; AVX512FVL-NEXT:    vpextrb $7, %xmm0, 7(%rdi)4550; AVX512FVL-NEXT:    testl $256, %eax # imm = 0x1004551; AVX512FVL-NEXT:    je .LBB10_184552; AVX512FVL-NEXT:  .LBB10_17: # %cond.store154553; AVX512FVL-NEXT:    vpextrb $8, %xmm0, 8(%rdi)4554; AVX512FVL-NEXT:    testl $512, %eax # imm = 0x2004555; AVX512FVL-NEXT:    je .LBB10_204556; AVX512FVL-NEXT:  .LBB10_19: # %cond.store174557; AVX512FVL-NEXT:    vpextrb $9, %xmm0, 9(%rdi)4558; AVX512FVL-NEXT:    testl $1024, %eax # imm = 0x4004559; AVX512FVL-NEXT:    je .LBB10_224560; AVX512FVL-NEXT:  .LBB10_21: # %cond.store194561; AVX512FVL-NEXT:    vpextrb $10, %xmm0, 10(%rdi)4562; AVX512FVL-NEXT:    testl $2048, %eax # imm = 0x8004563; AVX512FVL-NEXT:    je .LBB10_244564; AVX512FVL-NEXT:  .LBB10_23: # %cond.store214565; AVX512FVL-NEXT:    vpextrb $11, %xmm0, 11(%rdi)4566; AVX512FVL-NEXT:    testl $4096, %eax # imm = 0x10004567; AVX512FVL-NEXT:    je .LBB10_264568; AVX512FVL-NEXT:  .LBB10_25: # %cond.store234569; AVX512FVL-NEXT:    vpextrb $12, %xmm0, 12(%rdi)4570; AVX512FVL-NEXT:    testl $8192, %eax # imm = 0x20004571; AVX512FVL-NEXT:    je .LBB10_284572; AVX512FVL-NEXT:  .LBB10_27: # %cond.store254573; AVX512FVL-NEXT:    vpextrb $13, %xmm0, 13(%rdi)4574; AVX512FVL-NEXT:    testl $16384, %eax # imm = 0x40004575; AVX512FVL-NEXT:    je .LBB10_304576; AVX512FVL-NEXT:  .LBB10_29: # %cond.store274577; AVX512FVL-NEXT:    vpextrb $14, %xmm0, 14(%rdi)4578; AVX512FVL-NEXT:    testl $32768, %eax # imm = 0x80004579; AVX512FVL-NEXT:    je .LBB10_324580; AVX512FVL-NEXT:  .LBB10_31: # %cond.store294581; AVX512FVL-NEXT:    vpextrb $15, %xmm0, 15(%rdi)4582; AVX512FVL-NEXT:    vzeroupper4583; AVX512FVL-NEXT:    retq4584;4585; AVX512BW-LABEL: truncstore_v16i32_v16i8:4586; AVX512BW:       # %bb.0:4587; AVX512BW-NEXT:    vptestmd %zmm1, %zmm1, %k14588; AVX512BW-NEXT:    vpminsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %zmm04589; AVX512BW-NEXT:    vpmaxsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %zmm04590; AVX512BW-NEXT:    vpmovdb %zmm0, (%rdi) {%k1}4591; AVX512BW-NEXT:    vzeroupper4592; AVX512BW-NEXT:    retq4593;4594; AVX512BWVL-LABEL: truncstore_v16i32_v16i8:4595; AVX512BWVL:       # %bb.0:4596; AVX512BWVL-NEXT:    vptestmd %zmm1, %zmm1, %k14597; AVX512BWVL-NEXT:    vpminsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %zmm04598; AVX512BWVL-NEXT:    vpmaxsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %zmm04599; AVX512BWVL-NEXT:    vpmovdb %zmm0, (%rdi) {%k1}4600; AVX512BWVL-NEXT:    vzeroupper4601; AVX512BWVL-NEXT:    retq4602  %a = icmp ne <16 x i32> %mask, zeroinitializer4603  %b = icmp slt <16 x i32> %x, <i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127>4604  %c = select <16 x i1> %b, <16 x i32> %x, <16 x i32> <i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127>4605  %d = icmp sgt <16 x i32> %c, <i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128>4606  %e = select <16 x i1> %d, <16 x i32> %c, <16 x i32> <i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128>4607  %f = trunc <16 x i32> %e to <16 x i8>4608  call void @llvm.masked.store.v16i8.p0(<16 x i8> %f, ptr %p, i32 1, <16 x i1> %a)4609  ret void4610}4611 4612define void @truncstore_v8i32_v8i16(<8 x i32> %x, ptr %p, <8 x i32> %mask) {4613; SSE2-LABEL: truncstore_v8i32_v8i16:4614; SSE2:       # %bb.0:4615; SSE2-NEXT:    pxor %xmm4, %xmm44616; SSE2-NEXT:    packssdw %xmm1, %xmm04617; SSE2-NEXT:    pcmpeqd %xmm4, %xmm34618; SSE2-NEXT:    pcmpeqd %xmm4, %xmm24619; SSE2-NEXT:    packssdw %xmm3, %xmm24620; SSE2-NEXT:    packsswb %xmm2, %xmm24621; SSE2-NEXT:    pmovmskb %xmm2, %eax4622; SSE2-NEXT:    notl %eax4623; SSE2-NEXT:    testb $1, %al4624; SSE2-NEXT:    jne .LBB11_14625; SSE2-NEXT:  # %bb.2: # %else4626; SSE2-NEXT:    testb $2, %al4627; SSE2-NEXT:    jne .LBB11_34628; SSE2-NEXT:  .LBB11_4: # %else24629; SSE2-NEXT:    testb $4, %al4630; SSE2-NEXT:    jne .LBB11_54631; SSE2-NEXT:  .LBB11_6: # %else44632; SSE2-NEXT:    testb $8, %al4633; SSE2-NEXT:    jne .LBB11_74634; SSE2-NEXT:  .LBB11_8: # %else64635; SSE2-NEXT:    testb $16, %al4636; SSE2-NEXT:    jne .LBB11_94637; SSE2-NEXT:  .LBB11_10: # %else84638; SSE2-NEXT:    testb $32, %al4639; SSE2-NEXT:    jne .LBB11_114640; SSE2-NEXT:  .LBB11_12: # %else104641; SSE2-NEXT:    testb $64, %al4642; SSE2-NEXT:    jne .LBB11_134643; SSE2-NEXT:  .LBB11_14: # %else124644; SSE2-NEXT:    testb $-128, %al4645; SSE2-NEXT:    jne .LBB11_154646; SSE2-NEXT:  .LBB11_16: # %else144647; SSE2-NEXT:    retq4648; SSE2-NEXT:  .LBB11_1: # %cond.store4649; SSE2-NEXT:    movd %xmm0, %ecx4650; SSE2-NEXT:    movw %cx, (%rdi)4651; SSE2-NEXT:    testb $2, %al4652; SSE2-NEXT:    je .LBB11_44653; SSE2-NEXT:  .LBB11_3: # %cond.store14654; SSE2-NEXT:    pextrw $1, %xmm0, %ecx4655; SSE2-NEXT:    movw %cx, 2(%rdi)4656; SSE2-NEXT:    testb $4, %al4657; SSE2-NEXT:    je .LBB11_64658; SSE2-NEXT:  .LBB11_5: # %cond.store34659; SSE2-NEXT:    pextrw $2, %xmm0, %ecx4660; SSE2-NEXT:    movw %cx, 4(%rdi)4661; SSE2-NEXT:    testb $8, %al4662; SSE2-NEXT:    je .LBB11_84663; SSE2-NEXT:  .LBB11_7: # %cond.store54664; SSE2-NEXT:    pextrw $3, %xmm0, %ecx4665; SSE2-NEXT:    movw %cx, 6(%rdi)4666; SSE2-NEXT:    testb $16, %al4667; SSE2-NEXT:    je .LBB11_104668; SSE2-NEXT:  .LBB11_9: # %cond.store74669; SSE2-NEXT:    pextrw $4, %xmm0, %ecx4670; SSE2-NEXT:    movw %cx, 8(%rdi)4671; SSE2-NEXT:    testb $32, %al4672; SSE2-NEXT:    je .LBB11_124673; SSE2-NEXT:  .LBB11_11: # %cond.store94674; SSE2-NEXT:    pextrw $5, %xmm0, %ecx4675; SSE2-NEXT:    movw %cx, 10(%rdi)4676; SSE2-NEXT:    testb $64, %al4677; SSE2-NEXT:    je .LBB11_144678; SSE2-NEXT:  .LBB11_13: # %cond.store114679; SSE2-NEXT:    pextrw $6, %xmm0, %ecx4680; SSE2-NEXT:    movw %cx, 12(%rdi)4681; SSE2-NEXT:    testb $-128, %al4682; SSE2-NEXT:    je .LBB11_164683; SSE2-NEXT:  .LBB11_15: # %cond.store134684; SSE2-NEXT:    pextrw $7, %xmm0, %eax4685; SSE2-NEXT:    movw %ax, 14(%rdi)4686; SSE2-NEXT:    retq4687;4688; SSE4-LABEL: truncstore_v8i32_v8i16:4689; SSE4:       # %bb.0:4690; SSE4-NEXT:    pxor %xmm4, %xmm44691; SSE4-NEXT:    packssdw %xmm1, %xmm04692; SSE4-NEXT:    pcmpeqd %xmm4, %xmm34693; SSE4-NEXT:    pcmpeqd %xmm4, %xmm24694; SSE4-NEXT:    packssdw %xmm3, %xmm24695; SSE4-NEXT:    packsswb %xmm2, %xmm24696; SSE4-NEXT:    pmovmskb %xmm2, %eax4697; SSE4-NEXT:    notl %eax4698; SSE4-NEXT:    testb $1, %al4699; SSE4-NEXT:    jne .LBB11_14700; SSE4-NEXT:  # %bb.2: # %else4701; SSE4-NEXT:    testb $2, %al4702; SSE4-NEXT:    jne .LBB11_34703; SSE4-NEXT:  .LBB11_4: # %else24704; SSE4-NEXT:    testb $4, %al4705; SSE4-NEXT:    jne .LBB11_54706; SSE4-NEXT:  .LBB11_6: # %else44707; SSE4-NEXT:    testb $8, %al4708; SSE4-NEXT:    jne .LBB11_74709; SSE4-NEXT:  .LBB11_8: # %else64710; SSE4-NEXT:    testb $16, %al4711; SSE4-NEXT:    jne .LBB11_94712; SSE4-NEXT:  .LBB11_10: # %else84713; SSE4-NEXT:    testb $32, %al4714; SSE4-NEXT:    jne .LBB11_114715; SSE4-NEXT:  .LBB11_12: # %else104716; SSE4-NEXT:    testb $64, %al4717; SSE4-NEXT:    jne .LBB11_134718; SSE4-NEXT:  .LBB11_14: # %else124719; SSE4-NEXT:    testb $-128, %al4720; SSE4-NEXT:    jne .LBB11_154721; SSE4-NEXT:  .LBB11_16: # %else144722; SSE4-NEXT:    retq4723; SSE4-NEXT:  .LBB11_1: # %cond.store4724; SSE4-NEXT:    pextrw $0, %xmm0, (%rdi)4725; SSE4-NEXT:    testb $2, %al4726; SSE4-NEXT:    je .LBB11_44727; SSE4-NEXT:  .LBB11_3: # %cond.store14728; SSE4-NEXT:    pextrw $1, %xmm0, 2(%rdi)4729; SSE4-NEXT:    testb $4, %al4730; SSE4-NEXT:    je .LBB11_64731; SSE4-NEXT:  .LBB11_5: # %cond.store34732; SSE4-NEXT:    pextrw $2, %xmm0, 4(%rdi)4733; SSE4-NEXT:    testb $8, %al4734; SSE4-NEXT:    je .LBB11_84735; SSE4-NEXT:  .LBB11_7: # %cond.store54736; SSE4-NEXT:    pextrw $3, %xmm0, 6(%rdi)4737; SSE4-NEXT:    testb $16, %al4738; SSE4-NEXT:    je .LBB11_104739; SSE4-NEXT:  .LBB11_9: # %cond.store74740; SSE4-NEXT:    pextrw $4, %xmm0, 8(%rdi)4741; SSE4-NEXT:    testb $32, %al4742; SSE4-NEXT:    je .LBB11_124743; SSE4-NEXT:  .LBB11_11: # %cond.store94744; SSE4-NEXT:    pextrw $5, %xmm0, 10(%rdi)4745; SSE4-NEXT:    testb $64, %al4746; SSE4-NEXT:    je .LBB11_144747; SSE4-NEXT:  .LBB11_13: # %cond.store114748; SSE4-NEXT:    pextrw $6, %xmm0, 12(%rdi)4749; SSE4-NEXT:    testb $-128, %al4750; SSE4-NEXT:    je .LBB11_164751; SSE4-NEXT:  .LBB11_15: # %cond.store134752; SSE4-NEXT:    pextrw $7, %xmm0, 14(%rdi)4753; SSE4-NEXT:    retq4754;4755; AVX1-LABEL: truncstore_v8i32_v8i16:4756; AVX1:       # %bb.0:4757; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm24758; AVX1-NEXT:    vpackssdw %xmm2, %xmm0, %xmm04759; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24760; AVX1-NEXT:    vpxor %xmm3, %xmm3, %xmm34761; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm2, %xmm24762; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm1, %xmm14763; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm14764; AVX1-NEXT:    vmovmskps %ymm1, %eax4765; AVX1-NEXT:    notl %eax4766; AVX1-NEXT:    testb $1, %al4767; AVX1-NEXT:    jne .LBB11_14768; AVX1-NEXT:  # %bb.2: # %else4769; AVX1-NEXT:    testb $2, %al4770; AVX1-NEXT:    jne .LBB11_34771; AVX1-NEXT:  .LBB11_4: # %else24772; AVX1-NEXT:    testb $4, %al4773; AVX1-NEXT:    jne .LBB11_54774; AVX1-NEXT:  .LBB11_6: # %else44775; AVX1-NEXT:    testb $8, %al4776; AVX1-NEXT:    jne .LBB11_74777; AVX1-NEXT:  .LBB11_8: # %else64778; AVX1-NEXT:    testb $16, %al4779; AVX1-NEXT:    jne .LBB11_94780; AVX1-NEXT:  .LBB11_10: # %else84781; AVX1-NEXT:    testb $32, %al4782; AVX1-NEXT:    jne .LBB11_114783; AVX1-NEXT:  .LBB11_12: # %else104784; AVX1-NEXT:    testb $64, %al4785; AVX1-NEXT:    jne .LBB11_134786; AVX1-NEXT:  .LBB11_14: # %else124787; AVX1-NEXT:    testb $-128, %al4788; AVX1-NEXT:    jne .LBB11_154789; AVX1-NEXT:  .LBB11_16: # %else144790; AVX1-NEXT:    vzeroupper4791; AVX1-NEXT:    retq4792; AVX1-NEXT:  .LBB11_1: # %cond.store4793; AVX1-NEXT:    vpextrw $0, %xmm0, (%rdi)4794; AVX1-NEXT:    testb $2, %al4795; AVX1-NEXT:    je .LBB11_44796; AVX1-NEXT:  .LBB11_3: # %cond.store14797; AVX1-NEXT:    vpextrw $1, %xmm0, 2(%rdi)4798; AVX1-NEXT:    testb $4, %al4799; AVX1-NEXT:    je .LBB11_64800; AVX1-NEXT:  .LBB11_5: # %cond.store34801; AVX1-NEXT:    vpextrw $2, %xmm0, 4(%rdi)4802; AVX1-NEXT:    testb $8, %al4803; AVX1-NEXT:    je .LBB11_84804; AVX1-NEXT:  .LBB11_7: # %cond.store54805; AVX1-NEXT:    vpextrw $3, %xmm0, 6(%rdi)4806; AVX1-NEXT:    testb $16, %al4807; AVX1-NEXT:    je .LBB11_104808; AVX1-NEXT:  .LBB11_9: # %cond.store74809; AVX1-NEXT:    vpextrw $4, %xmm0, 8(%rdi)4810; AVX1-NEXT:    testb $32, %al4811; AVX1-NEXT:    je .LBB11_124812; AVX1-NEXT:  .LBB11_11: # %cond.store94813; AVX1-NEXT:    vpextrw $5, %xmm0, 10(%rdi)4814; AVX1-NEXT:    testb $64, %al4815; AVX1-NEXT:    je .LBB11_144816; AVX1-NEXT:  .LBB11_13: # %cond.store114817; AVX1-NEXT:    vpextrw $6, %xmm0, 12(%rdi)4818; AVX1-NEXT:    testb $-128, %al4819; AVX1-NEXT:    je .LBB11_164820; AVX1-NEXT:  .LBB11_15: # %cond.store134821; AVX1-NEXT:    vpextrw $7, %xmm0, 14(%rdi)4822; AVX1-NEXT:    vzeroupper4823; AVX1-NEXT:    retq4824;4825; AVX2-LABEL: truncstore_v8i32_v8i16:4826; AVX2:       # %bb.0:4827; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm24828; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm34829; AVX2-NEXT:    vpackssdw %xmm3, %xmm0, %xmm04830; AVX2-NEXT:    vpcmpeqd %ymm2, %ymm1, %ymm14831; AVX2-NEXT:    vmovmskps %ymm1, %eax4832; AVX2-NEXT:    notl %eax4833; AVX2-NEXT:    testb $1, %al4834; AVX2-NEXT:    jne .LBB11_14835; AVX2-NEXT:  # %bb.2: # %else4836; AVX2-NEXT:    testb $2, %al4837; AVX2-NEXT:    jne .LBB11_34838; AVX2-NEXT:  .LBB11_4: # %else24839; AVX2-NEXT:    testb $4, %al4840; AVX2-NEXT:    jne .LBB11_54841; AVX2-NEXT:  .LBB11_6: # %else44842; AVX2-NEXT:    testb $8, %al4843; AVX2-NEXT:    jne .LBB11_74844; AVX2-NEXT:  .LBB11_8: # %else64845; AVX2-NEXT:    testb $16, %al4846; AVX2-NEXT:    jne .LBB11_94847; AVX2-NEXT:  .LBB11_10: # %else84848; AVX2-NEXT:    testb $32, %al4849; AVX2-NEXT:    jne .LBB11_114850; AVX2-NEXT:  .LBB11_12: # %else104851; AVX2-NEXT:    testb $64, %al4852; AVX2-NEXT:    jne .LBB11_134853; AVX2-NEXT:  .LBB11_14: # %else124854; AVX2-NEXT:    testb $-128, %al4855; AVX2-NEXT:    jne .LBB11_154856; AVX2-NEXT:  .LBB11_16: # %else144857; AVX2-NEXT:    vzeroupper4858; AVX2-NEXT:    retq4859; AVX2-NEXT:  .LBB11_1: # %cond.store4860; AVX2-NEXT:    vpextrw $0, %xmm0, (%rdi)4861; AVX2-NEXT:    testb $2, %al4862; AVX2-NEXT:    je .LBB11_44863; AVX2-NEXT:  .LBB11_3: # %cond.store14864; AVX2-NEXT:    vpextrw $1, %xmm0, 2(%rdi)4865; AVX2-NEXT:    testb $4, %al4866; AVX2-NEXT:    je .LBB11_64867; AVX2-NEXT:  .LBB11_5: # %cond.store34868; AVX2-NEXT:    vpextrw $2, %xmm0, 4(%rdi)4869; AVX2-NEXT:    testb $8, %al4870; AVX2-NEXT:    je .LBB11_84871; AVX2-NEXT:  .LBB11_7: # %cond.store54872; AVX2-NEXT:    vpextrw $3, %xmm0, 6(%rdi)4873; AVX2-NEXT:    testb $16, %al4874; AVX2-NEXT:    je .LBB11_104875; AVX2-NEXT:  .LBB11_9: # %cond.store74876; AVX2-NEXT:    vpextrw $4, %xmm0, 8(%rdi)4877; AVX2-NEXT:    testb $32, %al4878; AVX2-NEXT:    je .LBB11_124879; AVX2-NEXT:  .LBB11_11: # %cond.store94880; AVX2-NEXT:    vpextrw $5, %xmm0, 10(%rdi)4881; AVX2-NEXT:    testb $64, %al4882; AVX2-NEXT:    je .LBB11_144883; AVX2-NEXT:  .LBB11_13: # %cond.store114884; AVX2-NEXT:    vpextrw $6, %xmm0, 12(%rdi)4885; AVX2-NEXT:    testb $-128, %al4886; AVX2-NEXT:    je .LBB11_164887; AVX2-NEXT:  .LBB11_15: # %cond.store134888; AVX2-NEXT:    vpextrw $7, %xmm0, 14(%rdi)4889; AVX2-NEXT:    vzeroupper4890; AVX2-NEXT:    retq4891;4892; AVX512F-LABEL: truncstore_v8i32_v8i16:4893; AVX512F:       # %bb.0:4894; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm14895; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k04896; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm14897; AVX512F-NEXT:    vpackssdw %xmm1, %xmm0, %xmm04898; AVX512F-NEXT:    kmovw %k0, %eax4899; AVX512F-NEXT:    testb $1, %al4900; AVX512F-NEXT:    jne .LBB11_14901; AVX512F-NEXT:  # %bb.2: # %else4902; AVX512F-NEXT:    testb $2, %al4903; AVX512F-NEXT:    jne .LBB11_34904; AVX512F-NEXT:  .LBB11_4: # %else24905; AVX512F-NEXT:    testb $4, %al4906; AVX512F-NEXT:    jne .LBB11_54907; AVX512F-NEXT:  .LBB11_6: # %else44908; AVX512F-NEXT:    testb $8, %al4909; AVX512F-NEXT:    jne .LBB11_74910; AVX512F-NEXT:  .LBB11_8: # %else64911; AVX512F-NEXT:    testb $16, %al4912; AVX512F-NEXT:    jne .LBB11_94913; AVX512F-NEXT:  .LBB11_10: # %else84914; AVX512F-NEXT:    testb $32, %al4915; AVX512F-NEXT:    jne .LBB11_114916; AVX512F-NEXT:  .LBB11_12: # %else104917; AVX512F-NEXT:    testb $64, %al4918; AVX512F-NEXT:    jne .LBB11_134919; AVX512F-NEXT:  .LBB11_14: # %else124920; AVX512F-NEXT:    testb $-128, %al4921; AVX512F-NEXT:    jne .LBB11_154922; AVX512F-NEXT:  .LBB11_16: # %else144923; AVX512F-NEXT:    vzeroupper4924; AVX512F-NEXT:    retq4925; AVX512F-NEXT:  .LBB11_1: # %cond.store4926; AVX512F-NEXT:    vpextrw $0, %xmm0, (%rdi)4927; AVX512F-NEXT:    testb $2, %al4928; AVX512F-NEXT:    je .LBB11_44929; AVX512F-NEXT:  .LBB11_3: # %cond.store14930; AVX512F-NEXT:    vpextrw $1, %xmm0, 2(%rdi)4931; AVX512F-NEXT:    testb $4, %al4932; AVX512F-NEXT:    je .LBB11_64933; AVX512F-NEXT:  .LBB11_5: # %cond.store34934; AVX512F-NEXT:    vpextrw $2, %xmm0, 4(%rdi)4935; AVX512F-NEXT:    testb $8, %al4936; AVX512F-NEXT:    je .LBB11_84937; AVX512F-NEXT:  .LBB11_7: # %cond.store54938; AVX512F-NEXT:    vpextrw $3, %xmm0, 6(%rdi)4939; AVX512F-NEXT:    testb $16, %al4940; AVX512F-NEXT:    je .LBB11_104941; AVX512F-NEXT:  .LBB11_9: # %cond.store74942; AVX512F-NEXT:    vpextrw $4, %xmm0, 8(%rdi)4943; AVX512F-NEXT:    testb $32, %al4944; AVX512F-NEXT:    je .LBB11_124945; AVX512F-NEXT:  .LBB11_11: # %cond.store94946; AVX512F-NEXT:    vpextrw $5, %xmm0, 10(%rdi)4947; AVX512F-NEXT:    testb $64, %al4948; AVX512F-NEXT:    je .LBB11_144949; AVX512F-NEXT:  .LBB11_13: # %cond.store114950; AVX512F-NEXT:    vpextrw $6, %xmm0, 12(%rdi)4951; AVX512F-NEXT:    testb $-128, %al4952; AVX512F-NEXT:    je .LBB11_164953; AVX512F-NEXT:  .LBB11_15: # %cond.store134954; AVX512F-NEXT:    vpextrw $7, %xmm0, 14(%rdi)4955; AVX512F-NEXT:    vzeroupper4956; AVX512F-NEXT:    retq4957;4958; AVX512FVL-LABEL: truncstore_v8i32_v8i16:4959; AVX512FVL:       # %bb.0:4960; AVX512FVL-NEXT:    vptestmd %ymm1, %ymm1, %k04961; AVX512FVL-NEXT:    vpmovsdw %ymm0, %xmm04962; AVX512FVL-NEXT:    kmovw %k0, %eax4963; AVX512FVL-NEXT:    testb $1, %al4964; AVX512FVL-NEXT:    jne .LBB11_14965; AVX512FVL-NEXT:  # %bb.2: # %else4966; AVX512FVL-NEXT:    testb $2, %al4967; AVX512FVL-NEXT:    jne .LBB11_34968; AVX512FVL-NEXT:  .LBB11_4: # %else24969; AVX512FVL-NEXT:    testb $4, %al4970; AVX512FVL-NEXT:    jne .LBB11_54971; AVX512FVL-NEXT:  .LBB11_6: # %else44972; AVX512FVL-NEXT:    testb $8, %al4973; AVX512FVL-NEXT:    jne .LBB11_74974; AVX512FVL-NEXT:  .LBB11_8: # %else64975; AVX512FVL-NEXT:    testb $16, %al4976; AVX512FVL-NEXT:    jne .LBB11_94977; AVX512FVL-NEXT:  .LBB11_10: # %else84978; AVX512FVL-NEXT:    testb $32, %al4979; AVX512FVL-NEXT:    jne .LBB11_114980; AVX512FVL-NEXT:  .LBB11_12: # %else104981; AVX512FVL-NEXT:    testb $64, %al4982; AVX512FVL-NEXT:    jne .LBB11_134983; AVX512FVL-NEXT:  .LBB11_14: # %else124984; AVX512FVL-NEXT:    testb $-128, %al4985; AVX512FVL-NEXT:    jne .LBB11_154986; AVX512FVL-NEXT:  .LBB11_16: # %else144987; AVX512FVL-NEXT:    vzeroupper4988; AVX512FVL-NEXT:    retq4989; AVX512FVL-NEXT:  .LBB11_1: # %cond.store4990; AVX512FVL-NEXT:    vpextrw $0, %xmm0, (%rdi)4991; AVX512FVL-NEXT:    testb $2, %al4992; AVX512FVL-NEXT:    je .LBB11_44993; AVX512FVL-NEXT:  .LBB11_3: # %cond.store14994; AVX512FVL-NEXT:    vpextrw $1, %xmm0, 2(%rdi)4995; AVX512FVL-NEXT:    testb $4, %al4996; AVX512FVL-NEXT:    je .LBB11_64997; AVX512FVL-NEXT:  .LBB11_5: # %cond.store34998; AVX512FVL-NEXT:    vpextrw $2, %xmm0, 4(%rdi)4999; AVX512FVL-NEXT:    testb $8, %al5000; AVX512FVL-NEXT:    je .LBB11_85001; AVX512FVL-NEXT:  .LBB11_7: # %cond.store55002; AVX512FVL-NEXT:    vpextrw $3, %xmm0, 6(%rdi)5003; AVX512FVL-NEXT:    testb $16, %al5004; AVX512FVL-NEXT:    je .LBB11_105005; AVX512FVL-NEXT:  .LBB11_9: # %cond.store75006; AVX512FVL-NEXT:    vpextrw $4, %xmm0, 8(%rdi)5007; AVX512FVL-NEXT:    testb $32, %al5008; AVX512FVL-NEXT:    je .LBB11_125009; AVX512FVL-NEXT:  .LBB11_11: # %cond.store95010; AVX512FVL-NEXT:    vpextrw $5, %xmm0, 10(%rdi)5011; AVX512FVL-NEXT:    testb $64, %al5012; AVX512FVL-NEXT:    je .LBB11_145013; AVX512FVL-NEXT:  .LBB11_13: # %cond.store115014; AVX512FVL-NEXT:    vpextrw $6, %xmm0, 12(%rdi)5015; AVX512FVL-NEXT:    testb $-128, %al5016; AVX512FVL-NEXT:    je .LBB11_165017; AVX512FVL-NEXT:  .LBB11_15: # %cond.store135018; AVX512FVL-NEXT:    vpextrw $7, %xmm0, 14(%rdi)5019; AVX512FVL-NEXT:    vzeroupper5020; AVX512FVL-NEXT:    retq5021;5022; AVX512BW-LABEL: truncstore_v8i32_v8i16:5023; AVX512BW:       # %bb.0:5024; AVX512BW-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm15025; AVX512BW-NEXT:    vptestmd %zmm1, %zmm1, %k05026; AVX512BW-NEXT:    kshiftld $24, %k0, %k05027; AVX512BW-NEXT:    kshiftrd $24, %k0, %k15028; AVX512BW-NEXT:    vextracti128 $1, %ymm0, %xmm15029; AVX512BW-NEXT:    vpackssdw %xmm1, %xmm0, %xmm05030; AVX512BW-NEXT:    vmovdqu16 %zmm0, (%rdi) {%k1}5031; AVX512BW-NEXT:    vzeroupper5032; AVX512BW-NEXT:    retq5033;5034; AVX512BWVL-LABEL: truncstore_v8i32_v8i16:5035; AVX512BWVL:       # %bb.0:5036; AVX512BWVL-NEXT:    vptestmd %ymm1, %ymm1, %k15037; AVX512BWVL-NEXT:    vpminsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm05038; AVX512BWVL-NEXT:    vpmaxsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm05039; AVX512BWVL-NEXT:    vpmovdw %ymm0, (%rdi) {%k1}5040; AVX512BWVL-NEXT:    vzeroupper5041; AVX512BWVL-NEXT:    retq5042  %a = icmp ne <8 x i32> %mask, zeroinitializer5043  %b = icmp slt <8 x i32> %x, <i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767>5044  %c = select <8 x i1> %b, <8 x i32> %x, <8 x i32> <i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767>5045  %d = icmp sgt <8 x i32> %c, <i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768>5046  %e = select <8 x i1> %d, <8 x i32> %c, <8 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768>5047  %f = trunc <8 x i32> %e to <8 x i16>5048  call void @llvm.masked.store.v8i16.p0(<8 x i16> %f, ptr %p, i32 1, <8 x i1> %a)5049  ret void5050}5051 5052define void @truncstore_v8i32_v8i8(<8 x i32> %x, ptr %p, <8 x i32> %mask) {5053; SSE2-LABEL: truncstore_v8i32_v8i8:5054; SSE2:       # %bb.0:5055; SSE2-NEXT:    pxor %xmm4, %xmm45056; SSE2-NEXT:    packssdw %xmm1, %xmm05057; SSE2-NEXT:    packsswb %xmm0, %xmm05058; SSE2-NEXT:    pcmpeqd %xmm4, %xmm35059; SSE2-NEXT:    pcmpeqd %xmm4, %xmm25060; SSE2-NEXT:    packssdw %xmm3, %xmm25061; SSE2-NEXT:    packsswb %xmm2, %xmm25062; SSE2-NEXT:    pmovmskb %xmm2, %eax5063; SSE2-NEXT:    notl %eax5064; SSE2-NEXT:    testb $1, %al5065; SSE2-NEXT:    movd %xmm0, %ecx5066; SSE2-NEXT:    jne .LBB12_15067; SSE2-NEXT:  # %bb.2: # %else5068; SSE2-NEXT:    testb $2, %al5069; SSE2-NEXT:    jne .LBB12_35070; SSE2-NEXT:  .LBB12_4: # %else25071; SSE2-NEXT:    testb $4, %al5072; SSE2-NEXT:    jne .LBB12_55073; SSE2-NEXT:  .LBB12_6: # %else45074; SSE2-NEXT:    testb $8, %al5075; SSE2-NEXT:    je .LBB12_85076; SSE2-NEXT:  .LBB12_7: # %cond.store55077; SSE2-NEXT:    shrl $24, %ecx5078; SSE2-NEXT:    movb %cl, 3(%rdi)5079; SSE2-NEXT:  .LBB12_8: # %else65080; SSE2-NEXT:    testb $16, %al5081; SSE2-NEXT:    pextrw $2, %xmm0, %ecx5082; SSE2-NEXT:    je .LBB12_105083; SSE2-NEXT:  # %bb.9: # %cond.store75084; SSE2-NEXT:    movb %cl, 4(%rdi)5085; SSE2-NEXT:  .LBB12_10: # %else85086; SSE2-NEXT:    testb $32, %al5087; SSE2-NEXT:    je .LBB12_125088; SSE2-NEXT:  # %bb.11: # %cond.store95089; SSE2-NEXT:    movb %ch, 5(%rdi)5090; SSE2-NEXT:  .LBB12_12: # %else105091; SSE2-NEXT:    testb $64, %al5092; SSE2-NEXT:    pextrw $3, %xmm0, %ecx5093; SSE2-NEXT:    jne .LBB12_135094; SSE2-NEXT:  # %bb.14: # %else125095; SSE2-NEXT:    testb $-128, %al5096; SSE2-NEXT:    jne .LBB12_155097; SSE2-NEXT:  .LBB12_16: # %else145098; SSE2-NEXT:    retq5099; SSE2-NEXT:  .LBB12_1: # %cond.store5100; SSE2-NEXT:    movb %cl, (%rdi)5101; SSE2-NEXT:    testb $2, %al5102; SSE2-NEXT:    je .LBB12_45103; SSE2-NEXT:  .LBB12_3: # %cond.store15104; SSE2-NEXT:    movb %ch, 1(%rdi)5105; SSE2-NEXT:    testb $4, %al5106; SSE2-NEXT:    je .LBB12_65107; SSE2-NEXT:  .LBB12_5: # %cond.store35108; SSE2-NEXT:    movl %ecx, %edx5109; SSE2-NEXT:    shrl $16, %edx5110; SSE2-NEXT:    movb %dl, 2(%rdi)5111; SSE2-NEXT:    testb $8, %al5112; SSE2-NEXT:    jne .LBB12_75113; SSE2-NEXT:    jmp .LBB12_85114; SSE2-NEXT:  .LBB12_13: # %cond.store115115; SSE2-NEXT:    movb %cl, 6(%rdi)5116; SSE2-NEXT:    testb $-128, %al5117; SSE2-NEXT:    je .LBB12_165118; SSE2-NEXT:  .LBB12_15: # %cond.store135119; SSE2-NEXT:    movb %ch, 7(%rdi)5120; SSE2-NEXT:    retq5121;5122; SSE4-LABEL: truncstore_v8i32_v8i8:5123; SSE4:       # %bb.0:5124; SSE4-NEXT:    pxor %xmm4, %xmm45125; SSE4-NEXT:    packssdw %xmm1, %xmm05126; SSE4-NEXT:    packsswb %xmm0, %xmm05127; SSE4-NEXT:    pcmpeqd %xmm4, %xmm35128; SSE4-NEXT:    pcmpeqd %xmm4, %xmm25129; SSE4-NEXT:    packssdw %xmm3, %xmm25130; SSE4-NEXT:    packsswb %xmm2, %xmm25131; SSE4-NEXT:    pmovmskb %xmm2, %eax5132; SSE4-NEXT:    notl %eax5133; SSE4-NEXT:    testb $1, %al5134; SSE4-NEXT:    jne .LBB12_15135; SSE4-NEXT:  # %bb.2: # %else5136; SSE4-NEXT:    testb $2, %al5137; SSE4-NEXT:    jne .LBB12_35138; SSE4-NEXT:  .LBB12_4: # %else25139; SSE4-NEXT:    testb $4, %al5140; SSE4-NEXT:    jne .LBB12_55141; SSE4-NEXT:  .LBB12_6: # %else45142; SSE4-NEXT:    testb $8, %al5143; SSE4-NEXT:    jne .LBB12_75144; SSE4-NEXT:  .LBB12_8: # %else65145; SSE4-NEXT:    testb $16, %al5146; SSE4-NEXT:    jne .LBB12_95147; SSE4-NEXT:  .LBB12_10: # %else85148; SSE4-NEXT:    testb $32, %al5149; SSE4-NEXT:    jne .LBB12_115150; SSE4-NEXT:  .LBB12_12: # %else105151; SSE4-NEXT:    testb $64, %al5152; SSE4-NEXT:    jne .LBB12_135153; SSE4-NEXT:  .LBB12_14: # %else125154; SSE4-NEXT:    testb $-128, %al5155; SSE4-NEXT:    jne .LBB12_155156; SSE4-NEXT:  .LBB12_16: # %else145157; SSE4-NEXT:    retq5158; SSE4-NEXT:  .LBB12_1: # %cond.store5159; SSE4-NEXT:    pextrb $0, %xmm0, (%rdi)5160; SSE4-NEXT:    testb $2, %al5161; SSE4-NEXT:    je .LBB12_45162; SSE4-NEXT:  .LBB12_3: # %cond.store15163; SSE4-NEXT:    pextrb $1, %xmm0, 1(%rdi)5164; SSE4-NEXT:    testb $4, %al5165; SSE4-NEXT:    je .LBB12_65166; SSE4-NEXT:  .LBB12_5: # %cond.store35167; SSE4-NEXT:    pextrb $2, %xmm0, 2(%rdi)5168; SSE4-NEXT:    testb $8, %al5169; SSE4-NEXT:    je .LBB12_85170; SSE4-NEXT:  .LBB12_7: # %cond.store55171; SSE4-NEXT:    pextrb $3, %xmm0, 3(%rdi)5172; SSE4-NEXT:    testb $16, %al5173; SSE4-NEXT:    je .LBB12_105174; SSE4-NEXT:  .LBB12_9: # %cond.store75175; SSE4-NEXT:    pextrb $4, %xmm0, 4(%rdi)5176; SSE4-NEXT:    testb $32, %al5177; SSE4-NEXT:    je .LBB12_125178; SSE4-NEXT:  .LBB12_11: # %cond.store95179; SSE4-NEXT:    pextrb $5, %xmm0, 5(%rdi)5180; SSE4-NEXT:    testb $64, %al5181; SSE4-NEXT:    je .LBB12_145182; SSE4-NEXT:  .LBB12_13: # %cond.store115183; SSE4-NEXT:    pextrb $6, %xmm0, 6(%rdi)5184; SSE4-NEXT:    testb $-128, %al5185; SSE4-NEXT:    je .LBB12_165186; SSE4-NEXT:  .LBB12_15: # %cond.store135187; SSE4-NEXT:    pextrb $7, %xmm0, 7(%rdi)5188; SSE4-NEXT:    retq5189;5190; AVX1-LABEL: truncstore_v8i32_v8i8:5191; AVX1:       # %bb.0:5192; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm25193; AVX1-NEXT:    vpackssdw %xmm2, %xmm0, %xmm05194; AVX1-NEXT:    vpacksswb %xmm0, %xmm0, %xmm05195; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm25196; AVX1-NEXT:    vpxor %xmm3, %xmm3, %xmm35197; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm2, %xmm25198; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm1, %xmm15199; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm15200; AVX1-NEXT:    vmovmskps %ymm1, %eax5201; AVX1-NEXT:    notl %eax5202; AVX1-NEXT:    testb $1, %al5203; AVX1-NEXT:    jne .LBB12_15204; AVX1-NEXT:  # %bb.2: # %else5205; AVX1-NEXT:    testb $2, %al5206; AVX1-NEXT:    jne .LBB12_35207; AVX1-NEXT:  .LBB12_4: # %else25208; AVX1-NEXT:    testb $4, %al5209; AVX1-NEXT:    jne .LBB12_55210; AVX1-NEXT:  .LBB12_6: # %else45211; AVX1-NEXT:    testb $8, %al5212; AVX1-NEXT:    jne .LBB12_75213; AVX1-NEXT:  .LBB12_8: # %else65214; AVX1-NEXT:    testb $16, %al5215; AVX1-NEXT:    jne .LBB12_95216; AVX1-NEXT:  .LBB12_10: # %else85217; AVX1-NEXT:    testb $32, %al5218; AVX1-NEXT:    jne .LBB12_115219; AVX1-NEXT:  .LBB12_12: # %else105220; AVX1-NEXT:    testb $64, %al5221; AVX1-NEXT:    jne .LBB12_135222; AVX1-NEXT:  .LBB12_14: # %else125223; AVX1-NEXT:    testb $-128, %al5224; AVX1-NEXT:    jne .LBB12_155225; AVX1-NEXT:  .LBB12_16: # %else145226; AVX1-NEXT:    vzeroupper5227; AVX1-NEXT:    retq5228; AVX1-NEXT:  .LBB12_1: # %cond.store5229; AVX1-NEXT:    vpextrb $0, %xmm0, (%rdi)5230; AVX1-NEXT:    testb $2, %al5231; AVX1-NEXT:    je .LBB12_45232; AVX1-NEXT:  .LBB12_3: # %cond.store15233; AVX1-NEXT:    vpextrb $1, %xmm0, 1(%rdi)5234; AVX1-NEXT:    testb $4, %al5235; AVX1-NEXT:    je .LBB12_65236; AVX1-NEXT:  .LBB12_5: # %cond.store35237; AVX1-NEXT:    vpextrb $2, %xmm0, 2(%rdi)5238; AVX1-NEXT:    testb $8, %al5239; AVX1-NEXT:    je .LBB12_85240; AVX1-NEXT:  .LBB12_7: # %cond.store55241; AVX1-NEXT:    vpextrb $3, %xmm0, 3(%rdi)5242; AVX1-NEXT:    testb $16, %al5243; AVX1-NEXT:    je .LBB12_105244; AVX1-NEXT:  .LBB12_9: # %cond.store75245; AVX1-NEXT:    vpextrb $4, %xmm0, 4(%rdi)5246; AVX1-NEXT:    testb $32, %al5247; AVX1-NEXT:    je .LBB12_125248; AVX1-NEXT:  .LBB12_11: # %cond.store95249; AVX1-NEXT:    vpextrb $5, %xmm0, 5(%rdi)5250; AVX1-NEXT:    testb $64, %al5251; AVX1-NEXT:    je .LBB12_145252; AVX1-NEXT:  .LBB12_13: # %cond.store115253; AVX1-NEXT:    vpextrb $6, %xmm0, 6(%rdi)5254; AVX1-NEXT:    testb $-128, %al5255; AVX1-NEXT:    je .LBB12_165256; AVX1-NEXT:  .LBB12_15: # %cond.store135257; AVX1-NEXT:    vpextrb $7, %xmm0, 7(%rdi)5258; AVX1-NEXT:    vzeroupper5259; AVX1-NEXT:    retq5260;5261; AVX2-LABEL: truncstore_v8i32_v8i8:5262; AVX2:       # %bb.0:5263; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm25264; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm35265; AVX2-NEXT:    vpackssdw %xmm3, %xmm0, %xmm05266; AVX2-NEXT:    vpacksswb %xmm0, %xmm0, %xmm05267; AVX2-NEXT:    vpcmpeqd %ymm2, %ymm1, %ymm15268; AVX2-NEXT:    vmovmskps %ymm1, %eax5269; AVX2-NEXT:    notl %eax5270; AVX2-NEXT:    testb $1, %al5271; AVX2-NEXT:    jne .LBB12_15272; AVX2-NEXT:  # %bb.2: # %else5273; AVX2-NEXT:    testb $2, %al5274; AVX2-NEXT:    jne .LBB12_35275; AVX2-NEXT:  .LBB12_4: # %else25276; AVX2-NEXT:    testb $4, %al5277; AVX2-NEXT:    jne .LBB12_55278; AVX2-NEXT:  .LBB12_6: # %else45279; AVX2-NEXT:    testb $8, %al5280; AVX2-NEXT:    jne .LBB12_75281; AVX2-NEXT:  .LBB12_8: # %else65282; AVX2-NEXT:    testb $16, %al5283; AVX2-NEXT:    jne .LBB12_95284; AVX2-NEXT:  .LBB12_10: # %else85285; AVX2-NEXT:    testb $32, %al5286; AVX2-NEXT:    jne .LBB12_115287; AVX2-NEXT:  .LBB12_12: # %else105288; AVX2-NEXT:    testb $64, %al5289; AVX2-NEXT:    jne .LBB12_135290; AVX2-NEXT:  .LBB12_14: # %else125291; AVX2-NEXT:    testb $-128, %al5292; AVX2-NEXT:    jne .LBB12_155293; AVX2-NEXT:  .LBB12_16: # %else145294; AVX2-NEXT:    vzeroupper5295; AVX2-NEXT:    retq5296; AVX2-NEXT:  .LBB12_1: # %cond.store5297; AVX2-NEXT:    vpextrb $0, %xmm0, (%rdi)5298; AVX2-NEXT:    testb $2, %al5299; AVX2-NEXT:    je .LBB12_45300; AVX2-NEXT:  .LBB12_3: # %cond.store15301; AVX2-NEXT:    vpextrb $1, %xmm0, 1(%rdi)5302; AVX2-NEXT:    testb $4, %al5303; AVX2-NEXT:    je .LBB12_65304; AVX2-NEXT:  .LBB12_5: # %cond.store35305; AVX2-NEXT:    vpextrb $2, %xmm0, 2(%rdi)5306; AVX2-NEXT:    testb $8, %al5307; AVX2-NEXT:    je .LBB12_85308; AVX2-NEXT:  .LBB12_7: # %cond.store55309; AVX2-NEXT:    vpextrb $3, %xmm0, 3(%rdi)5310; AVX2-NEXT:    testb $16, %al5311; AVX2-NEXT:    je .LBB12_105312; AVX2-NEXT:  .LBB12_9: # %cond.store75313; AVX2-NEXT:    vpextrb $4, %xmm0, 4(%rdi)5314; AVX2-NEXT:    testb $32, %al5315; AVX2-NEXT:    je .LBB12_125316; AVX2-NEXT:  .LBB12_11: # %cond.store95317; AVX2-NEXT:    vpextrb $5, %xmm0, 5(%rdi)5318; AVX2-NEXT:    testb $64, %al5319; AVX2-NEXT:    je .LBB12_145320; AVX2-NEXT:  .LBB12_13: # %cond.store115321; AVX2-NEXT:    vpextrb $6, %xmm0, 6(%rdi)5322; AVX2-NEXT:    testb $-128, %al5323; AVX2-NEXT:    je .LBB12_165324; AVX2-NEXT:  .LBB12_15: # %cond.store135325; AVX2-NEXT:    vpextrb $7, %xmm0, 7(%rdi)5326; AVX2-NEXT:    vzeroupper5327; AVX2-NEXT:    retq5328;5329; AVX512F-LABEL: truncstore_v8i32_v8i8:5330; AVX512F:       # %bb.0:5331; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm15332; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k05333; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm15334; AVX512F-NEXT:    vpackssdw %xmm1, %xmm0, %xmm05335; AVX512F-NEXT:    vpacksswb %xmm0, %xmm0, %xmm05336; AVX512F-NEXT:    kmovw %k0, %eax5337; AVX512F-NEXT:    testb $1, %al5338; AVX512F-NEXT:    jne .LBB12_15339; AVX512F-NEXT:  # %bb.2: # %else5340; AVX512F-NEXT:    testb $2, %al5341; AVX512F-NEXT:    jne .LBB12_35342; AVX512F-NEXT:  .LBB12_4: # %else25343; AVX512F-NEXT:    testb $4, %al5344; AVX512F-NEXT:    jne .LBB12_55345; AVX512F-NEXT:  .LBB12_6: # %else45346; AVX512F-NEXT:    testb $8, %al5347; AVX512F-NEXT:    jne .LBB12_75348; AVX512F-NEXT:  .LBB12_8: # %else65349; AVX512F-NEXT:    testb $16, %al5350; AVX512F-NEXT:    jne .LBB12_95351; AVX512F-NEXT:  .LBB12_10: # %else85352; AVX512F-NEXT:    testb $32, %al5353; AVX512F-NEXT:    jne .LBB12_115354; AVX512F-NEXT:  .LBB12_12: # %else105355; AVX512F-NEXT:    testb $64, %al5356; AVX512F-NEXT:    jne .LBB12_135357; AVX512F-NEXT:  .LBB12_14: # %else125358; AVX512F-NEXT:    testb $-128, %al5359; AVX512F-NEXT:    jne .LBB12_155360; AVX512F-NEXT:  .LBB12_16: # %else145361; AVX512F-NEXT:    vzeroupper5362; AVX512F-NEXT:    retq5363; AVX512F-NEXT:  .LBB12_1: # %cond.store5364; AVX512F-NEXT:    vpextrb $0, %xmm0, (%rdi)5365; AVX512F-NEXT:    testb $2, %al5366; AVX512F-NEXT:    je .LBB12_45367; AVX512F-NEXT:  .LBB12_3: # %cond.store15368; AVX512F-NEXT:    vpextrb $1, %xmm0, 1(%rdi)5369; AVX512F-NEXT:    testb $4, %al5370; AVX512F-NEXT:    je .LBB12_65371; AVX512F-NEXT:  .LBB12_5: # %cond.store35372; AVX512F-NEXT:    vpextrb $2, %xmm0, 2(%rdi)5373; AVX512F-NEXT:    testb $8, %al5374; AVX512F-NEXT:    je .LBB12_85375; AVX512F-NEXT:  .LBB12_7: # %cond.store55376; AVX512F-NEXT:    vpextrb $3, %xmm0, 3(%rdi)5377; AVX512F-NEXT:    testb $16, %al5378; AVX512F-NEXT:    je .LBB12_105379; AVX512F-NEXT:  .LBB12_9: # %cond.store75380; AVX512F-NEXT:    vpextrb $4, %xmm0, 4(%rdi)5381; AVX512F-NEXT:    testb $32, %al5382; AVX512F-NEXT:    je .LBB12_125383; AVX512F-NEXT:  .LBB12_11: # %cond.store95384; AVX512F-NEXT:    vpextrb $5, %xmm0, 5(%rdi)5385; AVX512F-NEXT:    testb $64, %al5386; AVX512F-NEXT:    je .LBB12_145387; AVX512F-NEXT:  .LBB12_13: # %cond.store115388; AVX512F-NEXT:    vpextrb $6, %xmm0, 6(%rdi)5389; AVX512F-NEXT:    testb $-128, %al5390; AVX512F-NEXT:    je .LBB12_165391; AVX512F-NEXT:  .LBB12_15: # %cond.store135392; AVX512F-NEXT:    vpextrb $7, %xmm0, 7(%rdi)5393; AVX512F-NEXT:    vzeroupper5394; AVX512F-NEXT:    retq5395;5396; AVX512FVL-LABEL: truncstore_v8i32_v8i8:5397; AVX512FVL:       # %bb.0:5398; AVX512FVL-NEXT:    vptestmd %ymm1, %ymm1, %k05399; AVX512FVL-NEXT:    vpmovsdb %ymm0, %xmm05400; AVX512FVL-NEXT:    kmovw %k0, %eax5401; AVX512FVL-NEXT:    testb $1, %al5402; AVX512FVL-NEXT:    jne .LBB12_15403; AVX512FVL-NEXT:  # %bb.2: # %else5404; AVX512FVL-NEXT:    testb $2, %al5405; AVX512FVL-NEXT:    jne .LBB12_35406; AVX512FVL-NEXT:  .LBB12_4: # %else25407; AVX512FVL-NEXT:    testb $4, %al5408; AVX512FVL-NEXT:    jne .LBB12_55409; AVX512FVL-NEXT:  .LBB12_6: # %else45410; AVX512FVL-NEXT:    testb $8, %al5411; AVX512FVL-NEXT:    jne .LBB12_75412; AVX512FVL-NEXT:  .LBB12_8: # %else65413; AVX512FVL-NEXT:    testb $16, %al5414; AVX512FVL-NEXT:    jne .LBB12_95415; AVX512FVL-NEXT:  .LBB12_10: # %else85416; AVX512FVL-NEXT:    testb $32, %al5417; AVX512FVL-NEXT:    jne .LBB12_115418; AVX512FVL-NEXT:  .LBB12_12: # %else105419; AVX512FVL-NEXT:    testb $64, %al5420; AVX512FVL-NEXT:    jne .LBB12_135421; AVX512FVL-NEXT:  .LBB12_14: # %else125422; AVX512FVL-NEXT:    testb $-128, %al5423; AVX512FVL-NEXT:    jne .LBB12_155424; AVX512FVL-NEXT:  .LBB12_16: # %else145425; AVX512FVL-NEXT:    vzeroupper5426; AVX512FVL-NEXT:    retq5427; AVX512FVL-NEXT:  .LBB12_1: # %cond.store5428; AVX512FVL-NEXT:    vpextrb $0, %xmm0, (%rdi)5429; AVX512FVL-NEXT:    testb $2, %al5430; AVX512FVL-NEXT:    je .LBB12_45431; AVX512FVL-NEXT:  .LBB12_3: # %cond.store15432; AVX512FVL-NEXT:    vpextrb $1, %xmm0, 1(%rdi)5433; AVX512FVL-NEXT:    testb $4, %al5434; AVX512FVL-NEXT:    je .LBB12_65435; AVX512FVL-NEXT:  .LBB12_5: # %cond.store35436; AVX512FVL-NEXT:    vpextrb $2, %xmm0, 2(%rdi)5437; AVX512FVL-NEXT:    testb $8, %al5438; AVX512FVL-NEXT:    je .LBB12_85439; AVX512FVL-NEXT:  .LBB12_7: # %cond.store55440; AVX512FVL-NEXT:    vpextrb $3, %xmm0, 3(%rdi)5441; AVX512FVL-NEXT:    testb $16, %al5442; AVX512FVL-NEXT:    je .LBB12_105443; AVX512FVL-NEXT:  .LBB12_9: # %cond.store75444; AVX512FVL-NEXT:    vpextrb $4, %xmm0, 4(%rdi)5445; AVX512FVL-NEXT:    testb $32, %al5446; AVX512FVL-NEXT:    je .LBB12_125447; AVX512FVL-NEXT:  .LBB12_11: # %cond.store95448; AVX512FVL-NEXT:    vpextrb $5, %xmm0, 5(%rdi)5449; AVX512FVL-NEXT:    testb $64, %al5450; AVX512FVL-NEXT:    je .LBB12_145451; AVX512FVL-NEXT:  .LBB12_13: # %cond.store115452; AVX512FVL-NEXT:    vpextrb $6, %xmm0, 6(%rdi)5453; AVX512FVL-NEXT:    testb $-128, %al5454; AVX512FVL-NEXT:    je .LBB12_165455; AVX512FVL-NEXT:  .LBB12_15: # %cond.store135456; AVX512FVL-NEXT:    vpextrb $7, %xmm0, 7(%rdi)5457; AVX512FVL-NEXT:    vzeroupper5458; AVX512FVL-NEXT:    retq5459;5460; AVX512BW-LABEL: truncstore_v8i32_v8i8:5461; AVX512BW:       # %bb.0:5462; AVX512BW-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm15463; AVX512BW-NEXT:    vptestmd %zmm1, %zmm1, %k05464; AVX512BW-NEXT:    kshiftlq $56, %k0, %k05465; AVX512BW-NEXT:    kshiftrq $56, %k0, %k15466; AVX512BW-NEXT:    vextracti128 $1, %ymm0, %xmm15467; AVX512BW-NEXT:    vpackssdw %xmm1, %xmm0, %xmm05468; AVX512BW-NEXT:    vpacksswb %xmm0, %xmm0, %xmm05469; AVX512BW-NEXT:    vmovdqu8 %zmm0, (%rdi) {%k1}5470; AVX512BW-NEXT:    vzeroupper5471; AVX512BW-NEXT:    retq5472;5473; AVX512BWVL-LABEL: truncstore_v8i32_v8i8:5474; AVX512BWVL:       # %bb.0:5475; AVX512BWVL-NEXT:    vptestmd %ymm1, %ymm1, %k15476; AVX512BWVL-NEXT:    vpminsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm05477; AVX512BWVL-NEXT:    vpmaxsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm05478; AVX512BWVL-NEXT:    vpmovdb %ymm0, (%rdi) {%k1}5479; AVX512BWVL-NEXT:    vzeroupper5480; AVX512BWVL-NEXT:    retq5481  %a = icmp ne <8 x i32> %mask, zeroinitializer5482  %b = icmp slt <8 x i32> %x, <i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127>5483  %c = select <8 x i1> %b, <8 x i32> %x, <8 x i32> <i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127>5484  %d = icmp sgt <8 x i32> %c, <i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128>5485  %e = select <8 x i1> %d, <8 x i32> %c, <8 x i32> <i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128>5486  %f = trunc <8 x i32> %e to <8 x i8>5487  call void @llvm.masked.store.v8i8.p0(<8 x i8> %f, ptr %p, i32 1, <8 x i1> %a)5488  ret void5489}5490 5491define void @truncstore_v4i32_v4i16(<4 x i32> %x, ptr %p, <4 x i32> %mask) {5492; SSE2-LABEL: truncstore_v4i32_v4i16:5493; SSE2:       # %bb.0:5494; SSE2-NEXT:    pxor %xmm2, %xmm25495; SSE2-NEXT:    packssdw %xmm0, %xmm05496; SSE2-NEXT:    pcmpeqd %xmm1, %xmm25497; SSE2-NEXT:    movmskps %xmm2, %eax5498; SSE2-NEXT:    xorl $15, %eax5499; SSE2-NEXT:    testb $1, %al5500; SSE2-NEXT:    jne .LBB13_15501; SSE2-NEXT:  # %bb.2: # %else5502; SSE2-NEXT:    testb $2, %al5503; SSE2-NEXT:    jne .LBB13_35504; SSE2-NEXT:  .LBB13_4: # %else25505; SSE2-NEXT:    testb $4, %al5506; SSE2-NEXT:    jne .LBB13_55507; SSE2-NEXT:  .LBB13_6: # %else45508; SSE2-NEXT:    testb $8, %al5509; SSE2-NEXT:    jne .LBB13_75510; SSE2-NEXT:  .LBB13_8: # %else65511; SSE2-NEXT:    retq5512; SSE2-NEXT:  .LBB13_1: # %cond.store5513; SSE2-NEXT:    movd %xmm0, %ecx5514; SSE2-NEXT:    movw %cx, (%rdi)5515; SSE2-NEXT:    testb $2, %al5516; SSE2-NEXT:    je .LBB13_45517; SSE2-NEXT:  .LBB13_3: # %cond.store15518; SSE2-NEXT:    pextrw $1, %xmm0, %ecx5519; SSE2-NEXT:    movw %cx, 2(%rdi)5520; SSE2-NEXT:    testb $4, %al5521; SSE2-NEXT:    je .LBB13_65522; SSE2-NEXT:  .LBB13_5: # %cond.store35523; SSE2-NEXT:    pextrw $2, %xmm0, %ecx5524; SSE2-NEXT:    movw %cx, 4(%rdi)5525; SSE2-NEXT:    testb $8, %al5526; SSE2-NEXT:    je .LBB13_85527; SSE2-NEXT:  .LBB13_7: # %cond.store55528; SSE2-NEXT:    pextrw $3, %xmm0, %eax5529; SSE2-NEXT:    movw %ax, 6(%rdi)5530; SSE2-NEXT:    retq5531;5532; SSE4-LABEL: truncstore_v4i32_v4i16:5533; SSE4:       # %bb.0:5534; SSE4-NEXT:    pxor %xmm2, %xmm25535; SSE4-NEXT:    packssdw %xmm0, %xmm05536; SSE4-NEXT:    pcmpeqd %xmm1, %xmm25537; SSE4-NEXT:    movmskps %xmm2, %eax5538; SSE4-NEXT:    xorl $15, %eax5539; SSE4-NEXT:    testb $1, %al5540; SSE4-NEXT:    jne .LBB13_15541; SSE4-NEXT:  # %bb.2: # %else5542; SSE4-NEXT:    testb $2, %al5543; SSE4-NEXT:    jne .LBB13_35544; SSE4-NEXT:  .LBB13_4: # %else25545; SSE4-NEXT:    testb $4, %al5546; SSE4-NEXT:    jne .LBB13_55547; SSE4-NEXT:  .LBB13_6: # %else45548; SSE4-NEXT:    testb $8, %al5549; SSE4-NEXT:    jne .LBB13_75550; SSE4-NEXT:  .LBB13_8: # %else65551; SSE4-NEXT:    retq5552; SSE4-NEXT:  .LBB13_1: # %cond.store5553; SSE4-NEXT:    pextrw $0, %xmm0, (%rdi)5554; SSE4-NEXT:    testb $2, %al5555; SSE4-NEXT:    je .LBB13_45556; SSE4-NEXT:  .LBB13_3: # %cond.store15557; SSE4-NEXT:    pextrw $1, %xmm0, 2(%rdi)5558; SSE4-NEXT:    testb $4, %al5559; SSE4-NEXT:    je .LBB13_65560; SSE4-NEXT:  .LBB13_5: # %cond.store35561; SSE4-NEXT:    pextrw $2, %xmm0, 4(%rdi)5562; SSE4-NEXT:    testb $8, %al5563; SSE4-NEXT:    je .LBB13_85564; SSE4-NEXT:  .LBB13_7: # %cond.store55565; SSE4-NEXT:    pextrw $3, %xmm0, 6(%rdi)5566; SSE4-NEXT:    retq5567;5568; AVX-LABEL: truncstore_v4i32_v4i16:5569; AVX:       # %bb.0:5570; AVX-NEXT:    vpxor %xmm2, %xmm2, %xmm25571; AVX-NEXT:    vpackssdw %xmm0, %xmm0, %xmm05572; AVX-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm15573; AVX-NEXT:    vmovmskps %xmm1, %eax5574; AVX-NEXT:    xorl $15, %eax5575; AVX-NEXT:    testb $1, %al5576; AVX-NEXT:    jne .LBB13_15577; AVX-NEXT:  # %bb.2: # %else5578; AVX-NEXT:    testb $2, %al5579; AVX-NEXT:    jne .LBB13_35580; AVX-NEXT:  .LBB13_4: # %else25581; AVX-NEXT:    testb $4, %al5582; AVX-NEXT:    jne .LBB13_55583; AVX-NEXT:  .LBB13_6: # %else45584; AVX-NEXT:    testb $8, %al5585; AVX-NEXT:    jne .LBB13_75586; AVX-NEXT:  .LBB13_8: # %else65587; AVX-NEXT:    retq5588; AVX-NEXT:  .LBB13_1: # %cond.store5589; AVX-NEXT:    vpextrw $0, %xmm0, (%rdi)5590; AVX-NEXT:    testb $2, %al5591; AVX-NEXT:    je .LBB13_45592; AVX-NEXT:  .LBB13_3: # %cond.store15593; AVX-NEXT:    vpextrw $1, %xmm0, 2(%rdi)5594; AVX-NEXT:    testb $4, %al5595; AVX-NEXT:    je .LBB13_65596; AVX-NEXT:  .LBB13_5: # %cond.store35597; AVX-NEXT:    vpextrw $2, %xmm0, 4(%rdi)5598; AVX-NEXT:    testb $8, %al5599; AVX-NEXT:    je .LBB13_85600; AVX-NEXT:  .LBB13_7: # %cond.store55601; AVX-NEXT:    vpextrw $3, %xmm0, 6(%rdi)5602; AVX-NEXT:    retq5603;5604; AVX512F-LABEL: truncstore_v4i32_v4i16:5605; AVX512F:       # %bb.0:5606; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15607; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k05608; AVX512F-NEXT:    vpackssdw %xmm0, %xmm0, %xmm05609; AVX512F-NEXT:    kmovw %k0, %eax5610; AVX512F-NEXT:    testb $1, %al5611; AVX512F-NEXT:    jne .LBB13_15612; AVX512F-NEXT:  # %bb.2: # %else5613; AVX512F-NEXT:    testb $2, %al5614; AVX512F-NEXT:    jne .LBB13_35615; AVX512F-NEXT:  .LBB13_4: # %else25616; AVX512F-NEXT:    testb $4, %al5617; AVX512F-NEXT:    jne .LBB13_55618; AVX512F-NEXT:  .LBB13_6: # %else45619; AVX512F-NEXT:    testb $8, %al5620; AVX512F-NEXT:    jne .LBB13_75621; AVX512F-NEXT:  .LBB13_8: # %else65622; AVX512F-NEXT:    vzeroupper5623; AVX512F-NEXT:    retq5624; AVX512F-NEXT:  .LBB13_1: # %cond.store5625; AVX512F-NEXT:    vpextrw $0, %xmm0, (%rdi)5626; AVX512F-NEXT:    testb $2, %al5627; AVX512F-NEXT:    je .LBB13_45628; AVX512F-NEXT:  .LBB13_3: # %cond.store15629; AVX512F-NEXT:    vpextrw $1, %xmm0, 2(%rdi)5630; AVX512F-NEXT:    testb $4, %al5631; AVX512F-NEXT:    je .LBB13_65632; AVX512F-NEXT:  .LBB13_5: # %cond.store35633; AVX512F-NEXT:    vpextrw $2, %xmm0, 4(%rdi)5634; AVX512F-NEXT:    testb $8, %al5635; AVX512F-NEXT:    je .LBB13_85636; AVX512F-NEXT:  .LBB13_7: # %cond.store55637; AVX512F-NEXT:    vpextrw $3, %xmm0, 6(%rdi)5638; AVX512F-NEXT:    vzeroupper5639; AVX512F-NEXT:    retq5640;5641; AVX512FVL-LABEL: truncstore_v4i32_v4i16:5642; AVX512FVL:       # %bb.0:5643; AVX512FVL-NEXT:    vptestmd %xmm1, %xmm1, %k05644; AVX512FVL-NEXT:    vpackssdw %xmm0, %xmm0, %xmm05645; AVX512FVL-NEXT:    kmovw %k0, %eax5646; AVX512FVL-NEXT:    testb $1, %al5647; AVX512FVL-NEXT:    jne .LBB13_15648; AVX512FVL-NEXT:  # %bb.2: # %else5649; AVX512FVL-NEXT:    testb $2, %al5650; AVX512FVL-NEXT:    jne .LBB13_35651; AVX512FVL-NEXT:  .LBB13_4: # %else25652; AVX512FVL-NEXT:    testb $4, %al5653; AVX512FVL-NEXT:    jne .LBB13_55654; AVX512FVL-NEXT:  .LBB13_6: # %else45655; AVX512FVL-NEXT:    testb $8, %al5656; AVX512FVL-NEXT:    jne .LBB13_75657; AVX512FVL-NEXT:  .LBB13_8: # %else65658; AVX512FVL-NEXT:    retq5659; AVX512FVL-NEXT:  .LBB13_1: # %cond.store5660; AVX512FVL-NEXT:    vpextrw $0, %xmm0, (%rdi)5661; AVX512FVL-NEXT:    testb $2, %al5662; AVX512FVL-NEXT:    je .LBB13_45663; AVX512FVL-NEXT:  .LBB13_3: # %cond.store15664; AVX512FVL-NEXT:    vpextrw $1, %xmm0, 2(%rdi)5665; AVX512FVL-NEXT:    testb $4, %al5666; AVX512FVL-NEXT:    je .LBB13_65667; AVX512FVL-NEXT:  .LBB13_5: # %cond.store35668; AVX512FVL-NEXT:    vpextrw $2, %xmm0, 4(%rdi)5669; AVX512FVL-NEXT:    testb $8, %al5670; AVX512FVL-NEXT:    je .LBB13_85671; AVX512FVL-NEXT:  .LBB13_7: # %cond.store55672; AVX512FVL-NEXT:    vpextrw $3, %xmm0, 6(%rdi)5673; AVX512FVL-NEXT:    retq5674;5675; AVX512BW-LABEL: truncstore_v4i32_v4i16:5676; AVX512BW:       # %bb.0:5677; AVX512BW-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15678; AVX512BW-NEXT:    vptestmd %zmm1, %zmm1, %k05679; AVX512BW-NEXT:    kshiftld $28, %k0, %k05680; AVX512BW-NEXT:    kshiftrd $28, %k0, %k15681; AVX512BW-NEXT:    vpackssdw %xmm0, %xmm0, %xmm05682; AVX512BW-NEXT:    vmovdqu16 %zmm0, (%rdi) {%k1}5683; AVX512BW-NEXT:    vzeroupper5684; AVX512BW-NEXT:    retq5685;5686; AVX512BWVL-LABEL: truncstore_v4i32_v4i16:5687; AVX512BWVL:       # %bb.0:5688; AVX512BWVL-NEXT:    vptestmd %xmm1, %xmm1, %k15689; AVX512BWVL-NEXT:    vpminsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm05690; AVX512BWVL-NEXT:    vpmaxsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm05691; AVX512BWVL-NEXT:    vpmovdw %xmm0, (%rdi) {%k1}5692; AVX512BWVL-NEXT:    retq5693  %a = icmp ne <4 x i32> %mask, zeroinitializer5694  %b = icmp slt <4 x i32> %x, <i32 32767, i32 32767, i32 32767, i32 32767>5695  %c = select <4 x i1> %b, <4 x i32> %x, <4 x i32> <i32 32767, i32 32767, i32 32767, i32 32767>5696  %d = icmp sgt <4 x i32> %c, <i32 -32768, i32 -32768, i32 -32768, i32 -32768>5697  %e = select <4 x i1> %d, <4 x i32> %c, <4 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768>5698  %f = trunc <4 x i32> %e to <4 x i16>5699  call void @llvm.masked.store.v4i16.p0(<4 x i16> %f, ptr %p, i32 1, <4 x i1> %a)5700  ret void5701}5702 5703define void @truncstore_v4i32_v4i8(<4 x i32> %x, ptr %p, <4 x i32> %mask) {5704; SSE2-LABEL: truncstore_v4i32_v4i8:5705; SSE2:       # %bb.0:5706; SSE2-NEXT:    pxor %xmm2, %xmm25707; SSE2-NEXT:    packssdw %xmm0, %xmm05708; SSE2-NEXT:    packsswb %xmm0, %xmm05709; SSE2-NEXT:    pcmpeqd %xmm1, %xmm25710; SSE2-NEXT:    movmskps %xmm2, %ecx5711; SSE2-NEXT:    xorl $15, %ecx5712; SSE2-NEXT:    testb $1, %cl5713; SSE2-NEXT:    movd %xmm0, %eax5714; SSE2-NEXT:    jne .LBB14_15715; SSE2-NEXT:  # %bb.2: # %else5716; SSE2-NEXT:    testb $2, %cl5717; SSE2-NEXT:    jne .LBB14_35718; SSE2-NEXT:  .LBB14_4: # %else25719; SSE2-NEXT:    testb $4, %cl5720; SSE2-NEXT:    jne .LBB14_55721; SSE2-NEXT:  .LBB14_6: # %else45722; SSE2-NEXT:    testb $8, %cl5723; SSE2-NEXT:    jne .LBB14_75724; SSE2-NEXT:  .LBB14_8: # %else65725; SSE2-NEXT:    retq5726; SSE2-NEXT:  .LBB14_1: # %cond.store5727; SSE2-NEXT:    movb %al, (%rdi)5728; SSE2-NEXT:    testb $2, %cl5729; SSE2-NEXT:    je .LBB14_45730; SSE2-NEXT:  .LBB14_3: # %cond.store15731; SSE2-NEXT:    movb %ah, 1(%rdi)5732; SSE2-NEXT:    testb $4, %cl5733; SSE2-NEXT:    je .LBB14_65734; SSE2-NEXT:  .LBB14_5: # %cond.store35735; SSE2-NEXT:    movl %eax, %edx5736; SSE2-NEXT:    shrl $16, %edx5737; SSE2-NEXT:    movb %dl, 2(%rdi)5738; SSE2-NEXT:    testb $8, %cl5739; SSE2-NEXT:    je .LBB14_85740; SSE2-NEXT:  .LBB14_7: # %cond.store55741; SSE2-NEXT:    shrl $24, %eax5742; SSE2-NEXT:    movb %al, 3(%rdi)5743; SSE2-NEXT:    retq5744;5745; SSE4-LABEL: truncstore_v4i32_v4i8:5746; SSE4:       # %bb.0:5747; SSE4-NEXT:    pxor %xmm2, %xmm25748; SSE4-NEXT:    packssdw %xmm0, %xmm05749; SSE4-NEXT:    packsswb %xmm0, %xmm05750; SSE4-NEXT:    pcmpeqd %xmm1, %xmm25751; SSE4-NEXT:    movmskps %xmm2, %eax5752; SSE4-NEXT:    xorl $15, %eax5753; SSE4-NEXT:    testb $1, %al5754; SSE4-NEXT:    jne .LBB14_15755; SSE4-NEXT:  # %bb.2: # %else5756; SSE4-NEXT:    testb $2, %al5757; SSE4-NEXT:    jne .LBB14_35758; SSE4-NEXT:  .LBB14_4: # %else25759; SSE4-NEXT:    testb $4, %al5760; SSE4-NEXT:    jne .LBB14_55761; SSE4-NEXT:  .LBB14_6: # %else45762; SSE4-NEXT:    testb $8, %al5763; SSE4-NEXT:    jne .LBB14_75764; SSE4-NEXT:  .LBB14_8: # %else65765; SSE4-NEXT:    retq5766; SSE4-NEXT:  .LBB14_1: # %cond.store5767; SSE4-NEXT:    pextrb $0, %xmm0, (%rdi)5768; SSE4-NEXT:    testb $2, %al5769; SSE4-NEXT:    je .LBB14_45770; SSE4-NEXT:  .LBB14_3: # %cond.store15771; SSE4-NEXT:    pextrb $1, %xmm0, 1(%rdi)5772; SSE4-NEXT:    testb $4, %al5773; SSE4-NEXT:    je .LBB14_65774; SSE4-NEXT:  .LBB14_5: # %cond.store35775; SSE4-NEXT:    pextrb $2, %xmm0, 2(%rdi)5776; SSE4-NEXT:    testb $8, %al5777; SSE4-NEXT:    je .LBB14_85778; SSE4-NEXT:  .LBB14_7: # %cond.store55779; SSE4-NEXT:    pextrb $3, %xmm0, 3(%rdi)5780; SSE4-NEXT:    retq5781;5782; AVX-LABEL: truncstore_v4i32_v4i8:5783; AVX:       # %bb.0:5784; AVX-NEXT:    vpxor %xmm2, %xmm2, %xmm25785; AVX-NEXT:    vpackssdw %xmm0, %xmm0, %xmm05786; AVX-NEXT:    vpacksswb %xmm0, %xmm0, %xmm05787; AVX-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm15788; AVX-NEXT:    vmovmskps %xmm1, %eax5789; AVX-NEXT:    xorl $15, %eax5790; AVX-NEXT:    testb $1, %al5791; AVX-NEXT:    jne .LBB14_15792; AVX-NEXT:  # %bb.2: # %else5793; AVX-NEXT:    testb $2, %al5794; AVX-NEXT:    jne .LBB14_35795; AVX-NEXT:  .LBB14_4: # %else25796; AVX-NEXT:    testb $4, %al5797; AVX-NEXT:    jne .LBB14_55798; AVX-NEXT:  .LBB14_6: # %else45799; AVX-NEXT:    testb $8, %al5800; AVX-NEXT:    jne .LBB14_75801; AVX-NEXT:  .LBB14_8: # %else65802; AVX-NEXT:    retq5803; AVX-NEXT:  .LBB14_1: # %cond.store5804; AVX-NEXT:    vpextrb $0, %xmm0, (%rdi)5805; AVX-NEXT:    testb $2, %al5806; AVX-NEXT:    je .LBB14_45807; AVX-NEXT:  .LBB14_3: # %cond.store15808; AVX-NEXT:    vpextrb $1, %xmm0, 1(%rdi)5809; AVX-NEXT:    testb $4, %al5810; AVX-NEXT:    je .LBB14_65811; AVX-NEXT:  .LBB14_5: # %cond.store35812; AVX-NEXT:    vpextrb $2, %xmm0, 2(%rdi)5813; AVX-NEXT:    testb $8, %al5814; AVX-NEXT:    je .LBB14_85815; AVX-NEXT:  .LBB14_7: # %cond.store55816; AVX-NEXT:    vpextrb $3, %xmm0, 3(%rdi)5817; AVX-NEXT:    retq5818;5819; AVX512F-LABEL: truncstore_v4i32_v4i8:5820; AVX512F:       # %bb.0:5821; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15822; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k05823; AVX512F-NEXT:    vpackssdw %xmm0, %xmm0, %xmm05824; AVX512F-NEXT:    vpacksswb %xmm0, %xmm0, %xmm05825; AVX512F-NEXT:    kmovw %k0, %eax5826; AVX512F-NEXT:    testb $1, %al5827; AVX512F-NEXT:    jne .LBB14_15828; AVX512F-NEXT:  # %bb.2: # %else5829; AVX512F-NEXT:    testb $2, %al5830; AVX512F-NEXT:    jne .LBB14_35831; AVX512F-NEXT:  .LBB14_4: # %else25832; AVX512F-NEXT:    testb $4, %al5833; AVX512F-NEXT:    jne .LBB14_55834; AVX512F-NEXT:  .LBB14_6: # %else45835; AVX512F-NEXT:    testb $8, %al5836; AVX512F-NEXT:    jne .LBB14_75837; AVX512F-NEXT:  .LBB14_8: # %else65838; AVX512F-NEXT:    vzeroupper5839; AVX512F-NEXT:    retq5840; AVX512F-NEXT:  .LBB14_1: # %cond.store5841; AVX512F-NEXT:    vpextrb $0, %xmm0, (%rdi)5842; AVX512F-NEXT:    testb $2, %al5843; AVX512F-NEXT:    je .LBB14_45844; AVX512F-NEXT:  .LBB14_3: # %cond.store15845; AVX512F-NEXT:    vpextrb $1, %xmm0, 1(%rdi)5846; AVX512F-NEXT:    testb $4, %al5847; AVX512F-NEXT:    je .LBB14_65848; AVX512F-NEXT:  .LBB14_5: # %cond.store35849; AVX512F-NEXT:    vpextrb $2, %xmm0, 2(%rdi)5850; AVX512F-NEXT:    testb $8, %al5851; AVX512F-NEXT:    je .LBB14_85852; AVX512F-NEXT:  .LBB14_7: # %cond.store55853; AVX512F-NEXT:    vpextrb $3, %xmm0, 3(%rdi)5854; AVX512F-NEXT:    vzeroupper5855; AVX512F-NEXT:    retq5856;5857; AVX512FVL-LABEL: truncstore_v4i32_v4i8:5858; AVX512FVL:       # %bb.0:5859; AVX512FVL-NEXT:    vptestmd %xmm1, %xmm1, %k05860; AVX512FVL-NEXT:    vpackssdw %xmm0, %xmm0, %xmm05861; AVX512FVL-NEXT:    vpacksswb %xmm0, %xmm0, %xmm05862; AVX512FVL-NEXT:    kmovw %k0, %eax5863; AVX512FVL-NEXT:    testb $1, %al5864; AVX512FVL-NEXT:    jne .LBB14_15865; AVX512FVL-NEXT:  # %bb.2: # %else5866; AVX512FVL-NEXT:    testb $2, %al5867; AVX512FVL-NEXT:    jne .LBB14_35868; AVX512FVL-NEXT:  .LBB14_4: # %else25869; AVX512FVL-NEXT:    testb $4, %al5870; AVX512FVL-NEXT:    jne .LBB14_55871; AVX512FVL-NEXT:  .LBB14_6: # %else45872; AVX512FVL-NEXT:    testb $8, %al5873; AVX512FVL-NEXT:    jne .LBB14_75874; AVX512FVL-NEXT:  .LBB14_8: # %else65875; AVX512FVL-NEXT:    retq5876; AVX512FVL-NEXT:  .LBB14_1: # %cond.store5877; AVX512FVL-NEXT:    vpextrb $0, %xmm0, (%rdi)5878; AVX512FVL-NEXT:    testb $2, %al5879; AVX512FVL-NEXT:    je .LBB14_45880; AVX512FVL-NEXT:  .LBB14_3: # %cond.store15881; AVX512FVL-NEXT:    vpextrb $1, %xmm0, 1(%rdi)5882; AVX512FVL-NEXT:    testb $4, %al5883; AVX512FVL-NEXT:    je .LBB14_65884; AVX512FVL-NEXT:  .LBB14_5: # %cond.store35885; AVX512FVL-NEXT:    vpextrb $2, %xmm0, 2(%rdi)5886; AVX512FVL-NEXT:    testb $8, %al5887; AVX512FVL-NEXT:    je .LBB14_85888; AVX512FVL-NEXT:  .LBB14_7: # %cond.store55889; AVX512FVL-NEXT:    vpextrb $3, %xmm0, 3(%rdi)5890; AVX512FVL-NEXT:    retq5891;5892; AVX512BW-LABEL: truncstore_v4i32_v4i8:5893; AVX512BW:       # %bb.0:5894; AVX512BW-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15895; AVX512BW-NEXT:    vptestmd %zmm1, %zmm1, %k05896; AVX512BW-NEXT:    kshiftlq $60, %k0, %k05897; AVX512BW-NEXT:    kshiftrq $60, %k0, %k15898; AVX512BW-NEXT:    vpackssdw %xmm0, %xmm0, %xmm05899; AVX512BW-NEXT:    vpacksswb %xmm0, %xmm0, %xmm05900; AVX512BW-NEXT:    vmovdqu8 %zmm0, (%rdi) {%k1}5901; AVX512BW-NEXT:    vzeroupper5902; AVX512BW-NEXT:    retq5903;5904; AVX512BWVL-LABEL: truncstore_v4i32_v4i8:5905; AVX512BWVL:       # %bb.0:5906; AVX512BWVL-NEXT:    vptestmd %xmm1, %xmm1, %k15907; AVX512BWVL-NEXT:    vpminsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm05908; AVX512BWVL-NEXT:    vpmaxsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm05909; AVX512BWVL-NEXT:    vpmovdb %xmm0, (%rdi) {%k1}5910; AVX512BWVL-NEXT:    retq5911  %a = icmp ne <4 x i32> %mask, zeroinitializer5912  %b = icmp slt <4 x i32> %x, <i32 127, i32 127, i32 127, i32 127>5913  %c = select <4 x i1> %b, <4 x i32> %x, <4 x i32> <i32 127, i32 127, i32 127, i32 127>5914  %d = icmp sgt <4 x i32> %c, <i32 -128, i32 -128, i32 -128, i32 -128>5915  %e = select <4 x i1> %d, <4 x i32> %c, <4 x i32> <i32 -128, i32 -128, i32 -128, i32 -128>5916  %f = trunc <4 x i32> %e to <4 x i8>5917  call void @llvm.masked.store.v4i8.p0(<4 x i8> %f, ptr %p, i32 1, <4 x i1> %a)5918  ret void5919}5920 5921define void @truncstore_v32i16_v32i8(<32 x i16> %x, ptr %p, <32 x i8> %mask) {5922; SSE2-LABEL: truncstore_v32i16_v32i8:5923; SSE2:       # %bb.0:5924; SSE2-NEXT:    pxor %xmm6, %xmm65925; SSE2-NEXT:    packsswb %xmm1, %xmm05926; SSE2-NEXT:    pcmpeqb %xmm6, %xmm45927; SSE2-NEXT:    pmovmskb %xmm4, %ecx5928; SSE2-NEXT:    xorl $65535, %ecx # imm = 0xFFFF5929; SSE2-NEXT:    pcmpeqb %xmm6, %xmm55930; SSE2-NEXT:    pmovmskb %xmm5, %eax5931; SSE2-NEXT:    notl %eax5932; SSE2-NEXT:    shll $16, %eax5933; SSE2-NEXT:    orl %ecx, %eax5934; SSE2-NEXT:    testb $1, %al5935; SSE2-NEXT:    movd %xmm0, %ecx5936; SSE2-NEXT:    jne .LBB15_15937; SSE2-NEXT:  # %bb.2: # %else5938; SSE2-NEXT:    testb $2, %al5939; SSE2-NEXT:    jne .LBB15_35940; SSE2-NEXT:  .LBB15_4: # %else25941; SSE2-NEXT:    testb $4, %al5942; SSE2-NEXT:    jne .LBB15_55943; SSE2-NEXT:  .LBB15_6: # %else45944; SSE2-NEXT:    testb $8, %al5945; SSE2-NEXT:    je .LBB15_85946; SSE2-NEXT:  .LBB15_7: # %cond.store55947; SSE2-NEXT:    shrl $24, %ecx5948; SSE2-NEXT:    movb %cl, 3(%rdi)5949; SSE2-NEXT:  .LBB15_8: # %else65950; SSE2-NEXT:    testb $16, %al5951; SSE2-NEXT:    pextrw $2, %xmm0, %ecx5952; SSE2-NEXT:    je .LBB15_105953; SSE2-NEXT:  # %bb.9: # %cond.store75954; SSE2-NEXT:    movb %cl, 4(%rdi)5955; SSE2-NEXT:  .LBB15_10: # %else85956; SSE2-NEXT:    testb $32, %al5957; SSE2-NEXT:    je .LBB15_125958; SSE2-NEXT:  # %bb.11: # %cond.store95959; SSE2-NEXT:    movb %ch, 5(%rdi)5960; SSE2-NEXT:  .LBB15_12: # %else105961; SSE2-NEXT:    testb $64, %al5962; SSE2-NEXT:    pextrw $3, %xmm0, %ecx5963; SSE2-NEXT:    je .LBB15_145964; SSE2-NEXT:  # %bb.13: # %cond.store115965; SSE2-NEXT:    movb %cl, 6(%rdi)5966; SSE2-NEXT:  .LBB15_14: # %else125967; SSE2-NEXT:    testb %al, %al5968; SSE2-NEXT:    jns .LBB15_165969; SSE2-NEXT:  # %bb.15: # %cond.store135970; SSE2-NEXT:    movb %ch, 7(%rdi)5971; SSE2-NEXT:  .LBB15_16: # %else145972; SSE2-NEXT:    testl $256, %eax # imm = 0x1005973; SSE2-NEXT:    pextrw $4, %xmm0, %ecx5974; SSE2-NEXT:    je .LBB15_185975; SSE2-NEXT:  # %bb.17: # %cond.store155976; SSE2-NEXT:    movb %cl, 8(%rdi)5977; SSE2-NEXT:  .LBB15_18: # %else165978; SSE2-NEXT:    testl $512, %eax # imm = 0x2005979; SSE2-NEXT:    je .LBB15_205980; SSE2-NEXT:  # %bb.19: # %cond.store175981; SSE2-NEXT:    movb %ch, 9(%rdi)5982; SSE2-NEXT:  .LBB15_20: # %else185983; SSE2-NEXT:    testl $1024, %eax # imm = 0x4005984; SSE2-NEXT:    pextrw $5, %xmm0, %ecx5985; SSE2-NEXT:    je .LBB15_225986; SSE2-NEXT:  # %bb.21: # %cond.store195987; SSE2-NEXT:    movb %cl, 10(%rdi)5988; SSE2-NEXT:  .LBB15_22: # %else205989; SSE2-NEXT:    testl $2048, %eax # imm = 0x8005990; SSE2-NEXT:    je .LBB15_245991; SSE2-NEXT:  # %bb.23: # %cond.store215992; SSE2-NEXT:    movb %ch, 11(%rdi)5993; SSE2-NEXT:  .LBB15_24: # %else225994; SSE2-NEXT:    testl $4096, %eax # imm = 0x10005995; SSE2-NEXT:    pextrw $6, %xmm0, %ecx5996; SSE2-NEXT:    je .LBB15_265997; SSE2-NEXT:  # %bb.25: # %cond.store235998; SSE2-NEXT:    movb %cl, 12(%rdi)5999; SSE2-NEXT:  .LBB15_26: # %else246000; SSE2-NEXT:    testl $8192, %eax # imm = 0x20006001; SSE2-NEXT:    je .LBB15_286002; SSE2-NEXT:  # %bb.27: # %cond.store256003; SSE2-NEXT:    movb %ch, 13(%rdi)6004; SSE2-NEXT:  .LBB15_28: # %else266005; SSE2-NEXT:    testl $16384, %eax # imm = 0x40006006; SSE2-NEXT:    pextrw $7, %xmm0, %ecx6007; SSE2-NEXT:    je .LBB15_306008; SSE2-NEXT:  # %bb.29: # %cond.store276009; SSE2-NEXT:    movb %cl, 14(%rdi)6010; SSE2-NEXT:  .LBB15_30: # %else286011; SSE2-NEXT:    packsswb %xmm3, %xmm26012; SSE2-NEXT:    testw %ax, %ax6013; SSE2-NEXT:    jns .LBB15_326014; SSE2-NEXT:  # %bb.31: # %cond.store296015; SSE2-NEXT:    movb %ch, 15(%rdi)6016; SSE2-NEXT:  .LBB15_32: # %else306017; SSE2-NEXT:    testl $65536, %eax # imm = 0x100006018; SSE2-NEXT:    movd %xmm2, %ecx6019; SSE2-NEXT:    jne .LBB15_336020; SSE2-NEXT:  # %bb.34: # %else326021; SSE2-NEXT:    testl $131072, %eax # imm = 0x200006022; SSE2-NEXT:    jne .LBB15_356023; SSE2-NEXT:  .LBB15_36: # %else346024; SSE2-NEXT:    testl $262144, %eax # imm = 0x400006025; SSE2-NEXT:    jne .LBB15_376026; SSE2-NEXT:  .LBB15_38: # %else366027; SSE2-NEXT:    testl $524288, %eax # imm = 0x800006028; SSE2-NEXT:    je .LBB15_406029; SSE2-NEXT:  .LBB15_39: # %cond.store376030; SSE2-NEXT:    shrl $24, %ecx6031; SSE2-NEXT:    movb %cl, 19(%rdi)6032; SSE2-NEXT:  .LBB15_40: # %else386033; SSE2-NEXT:    testl $1048576, %eax # imm = 0x1000006034; SSE2-NEXT:    pextrw $2, %xmm2, %ecx6035; SSE2-NEXT:    je .LBB15_426036; SSE2-NEXT:  # %bb.41: # %cond.store396037; SSE2-NEXT:    movb %cl, 20(%rdi)6038; SSE2-NEXT:  .LBB15_42: # %else406039; SSE2-NEXT:    testl $2097152, %eax # imm = 0x2000006040; SSE2-NEXT:    je .LBB15_446041; SSE2-NEXT:  # %bb.43: # %cond.store416042; SSE2-NEXT:    movb %ch, 21(%rdi)6043; SSE2-NEXT:  .LBB15_44: # %else426044; SSE2-NEXT:    testl $4194304, %eax # imm = 0x4000006045; SSE2-NEXT:    pextrw $3, %xmm2, %ecx6046; SSE2-NEXT:    je .LBB15_466047; SSE2-NEXT:  # %bb.45: # %cond.store436048; SSE2-NEXT:    movb %cl, 22(%rdi)6049; SSE2-NEXT:  .LBB15_46: # %else446050; SSE2-NEXT:    testl $8388608, %eax # imm = 0x8000006051; SSE2-NEXT:    je .LBB15_486052; SSE2-NEXT:  # %bb.47: # %cond.store456053; SSE2-NEXT:    movb %ch, 23(%rdi)6054; SSE2-NEXT:  .LBB15_48: # %else466055; SSE2-NEXT:    testl $16777216, %eax # imm = 0x10000006056; SSE2-NEXT:    pextrw $4, %xmm2, %ecx6057; SSE2-NEXT:    je .LBB15_506058; SSE2-NEXT:  # %bb.49: # %cond.store476059; SSE2-NEXT:    movb %cl, 24(%rdi)6060; SSE2-NEXT:  .LBB15_50: # %else486061; SSE2-NEXT:    testl $33554432, %eax # imm = 0x20000006062; SSE2-NEXT:    je .LBB15_526063; SSE2-NEXT:  # %bb.51: # %cond.store496064; SSE2-NEXT:    movb %ch, 25(%rdi)6065; SSE2-NEXT:  .LBB15_52: # %else506066; SSE2-NEXT:    testl $67108864, %eax # imm = 0x40000006067; SSE2-NEXT:    pextrw $5, %xmm2, %ecx6068; SSE2-NEXT:    je .LBB15_546069; SSE2-NEXT:  # %bb.53: # %cond.store516070; SSE2-NEXT:    movb %cl, 26(%rdi)6071; SSE2-NEXT:  .LBB15_54: # %else526072; SSE2-NEXT:    testl $134217728, %eax # imm = 0x80000006073; SSE2-NEXT:    je .LBB15_566074; SSE2-NEXT:  # %bb.55: # %cond.store536075; SSE2-NEXT:    movb %ch, 27(%rdi)6076; SSE2-NEXT:  .LBB15_56: # %else546077; SSE2-NEXT:    testl $268435456, %eax # imm = 0x100000006078; SSE2-NEXT:    pextrw $6, %xmm2, %ecx6079; SSE2-NEXT:    je .LBB15_586080; SSE2-NEXT:  # %bb.57: # %cond.store556081; SSE2-NEXT:    movb %cl, 28(%rdi)6082; SSE2-NEXT:  .LBB15_58: # %else566083; SSE2-NEXT:    testl $536870912, %eax # imm = 0x200000006084; SSE2-NEXT:    je .LBB15_606085; SSE2-NEXT:  # %bb.59: # %cond.store576086; SSE2-NEXT:    movb %ch, 29(%rdi)6087; SSE2-NEXT:  .LBB15_60: # %else586088; SSE2-NEXT:    testl $1073741824, %eax # imm = 0x400000006089; SSE2-NEXT:    pextrw $7, %xmm2, %ecx6090; SSE2-NEXT:    jne .LBB15_616091; SSE2-NEXT:  # %bb.62: # %else606092; SSE2-NEXT:    testl $-2147483648, %eax # imm = 0x800000006093; SSE2-NEXT:    jne .LBB15_636094; SSE2-NEXT:  .LBB15_64: # %else626095; SSE2-NEXT:    retq6096; SSE2-NEXT:  .LBB15_1: # %cond.store6097; SSE2-NEXT:    movb %cl, (%rdi)6098; SSE2-NEXT:    testb $2, %al6099; SSE2-NEXT:    je .LBB15_46100; SSE2-NEXT:  .LBB15_3: # %cond.store16101; SSE2-NEXT:    movb %ch, 1(%rdi)6102; SSE2-NEXT:    testb $4, %al6103; SSE2-NEXT:    je .LBB15_66104; SSE2-NEXT:  .LBB15_5: # %cond.store36105; SSE2-NEXT:    movl %ecx, %edx6106; SSE2-NEXT:    shrl $16, %edx6107; SSE2-NEXT:    movb %dl, 2(%rdi)6108; SSE2-NEXT:    testb $8, %al6109; SSE2-NEXT:    jne .LBB15_76110; SSE2-NEXT:    jmp .LBB15_86111; SSE2-NEXT:  .LBB15_33: # %cond.store316112; SSE2-NEXT:    movb %cl, 16(%rdi)6113; SSE2-NEXT:    testl $131072, %eax # imm = 0x200006114; SSE2-NEXT:    je .LBB15_366115; SSE2-NEXT:  .LBB15_35: # %cond.store336116; SSE2-NEXT:    movb %ch, 17(%rdi)6117; SSE2-NEXT:    testl $262144, %eax # imm = 0x400006118; SSE2-NEXT:    je .LBB15_386119; SSE2-NEXT:  .LBB15_37: # %cond.store356120; SSE2-NEXT:    movl %ecx, %edx6121; SSE2-NEXT:    shrl $16, %edx6122; SSE2-NEXT:    movb %dl, 18(%rdi)6123; SSE2-NEXT:    testl $524288, %eax # imm = 0x800006124; SSE2-NEXT:    jne .LBB15_396125; SSE2-NEXT:    jmp .LBB15_406126; SSE2-NEXT:  .LBB15_61: # %cond.store596127; SSE2-NEXT:    movb %cl, 30(%rdi)6128; SSE2-NEXT:    testl $-2147483648, %eax # imm = 0x800000006129; SSE2-NEXT:    je .LBB15_646130; SSE2-NEXT:  .LBB15_63: # %cond.store616131; SSE2-NEXT:    movb %ch, 31(%rdi)6132; SSE2-NEXT:    retq6133;6134; SSE4-LABEL: truncstore_v32i16_v32i8:6135; SSE4:       # %bb.0:6136; SSE4-NEXT:    pxor %xmm6, %xmm66137; SSE4-NEXT:    packsswb %xmm1, %xmm06138; SSE4-NEXT:    pcmpeqb %xmm6, %xmm46139; SSE4-NEXT:    pmovmskb %xmm4, %ecx6140; SSE4-NEXT:    xorl $65535, %ecx # imm = 0xFFFF6141; SSE4-NEXT:    pcmpeqb %xmm6, %xmm56142; SSE4-NEXT:    pmovmskb %xmm5, %eax6143; SSE4-NEXT:    notl %eax6144; SSE4-NEXT:    shll $16, %eax6145; SSE4-NEXT:    orl %ecx, %eax6146; SSE4-NEXT:    testb $1, %al6147; SSE4-NEXT:    jne .LBB15_16148; SSE4-NEXT:  # %bb.2: # %else6149; SSE4-NEXT:    testb $2, %al6150; SSE4-NEXT:    jne .LBB15_36151; SSE4-NEXT:  .LBB15_4: # %else26152; SSE4-NEXT:    testb $4, %al6153; SSE4-NEXT:    jne .LBB15_56154; SSE4-NEXT:  .LBB15_6: # %else46155; SSE4-NEXT:    testb $8, %al6156; SSE4-NEXT:    jne .LBB15_76157; SSE4-NEXT:  .LBB15_8: # %else66158; SSE4-NEXT:    testb $16, %al6159; SSE4-NEXT:    jne .LBB15_96160; SSE4-NEXT:  .LBB15_10: # %else86161; SSE4-NEXT:    testb $32, %al6162; SSE4-NEXT:    jne .LBB15_116163; SSE4-NEXT:  .LBB15_12: # %else106164; SSE4-NEXT:    testb $64, %al6165; SSE4-NEXT:    jne .LBB15_136166; SSE4-NEXT:  .LBB15_14: # %else126167; SSE4-NEXT:    testb %al, %al6168; SSE4-NEXT:    js .LBB15_156169; SSE4-NEXT:  .LBB15_16: # %else146170; SSE4-NEXT:    testl $256, %eax # imm = 0x1006171; SSE4-NEXT:    jne .LBB15_176172; SSE4-NEXT:  .LBB15_18: # %else166173; SSE4-NEXT:    testl $512, %eax # imm = 0x2006174; SSE4-NEXT:    jne .LBB15_196175; SSE4-NEXT:  .LBB15_20: # %else186176; SSE4-NEXT:    testl $1024, %eax # imm = 0x4006177; SSE4-NEXT:    jne .LBB15_216178; SSE4-NEXT:  .LBB15_22: # %else206179; SSE4-NEXT:    testl $2048, %eax # imm = 0x8006180; SSE4-NEXT:    jne .LBB15_236181; SSE4-NEXT:  .LBB15_24: # %else226182; SSE4-NEXT:    testl $4096, %eax # imm = 0x10006183; SSE4-NEXT:    jne .LBB15_256184; SSE4-NEXT:  .LBB15_26: # %else246185; SSE4-NEXT:    testl $8192, %eax # imm = 0x20006186; SSE4-NEXT:    jne .LBB15_276187; SSE4-NEXT:  .LBB15_28: # %else266188; SSE4-NEXT:    testl $16384, %eax # imm = 0x40006189; SSE4-NEXT:    jne .LBB15_296190; SSE4-NEXT:  .LBB15_30: # %else286191; SSE4-NEXT:    testw %ax, %ax6192; SSE4-NEXT:    jns .LBB15_326193; SSE4-NEXT:  .LBB15_31: # %cond.store296194; SSE4-NEXT:    pextrb $15, %xmm0, 15(%rdi)6195; SSE4-NEXT:  .LBB15_32: # %else306196; SSE4-NEXT:    packsswb %xmm3, %xmm26197; SSE4-NEXT:    testl $65536, %eax # imm = 0x100006198; SSE4-NEXT:    jne .LBB15_336199; SSE4-NEXT:  # %bb.34: # %else326200; SSE4-NEXT:    testl $131072, %eax # imm = 0x200006201; SSE4-NEXT:    jne .LBB15_356202; SSE4-NEXT:  .LBB15_36: # %else346203; SSE4-NEXT:    testl $262144, %eax # imm = 0x400006204; SSE4-NEXT:    jne .LBB15_376205; SSE4-NEXT:  .LBB15_38: # %else366206; SSE4-NEXT:    testl $524288, %eax # imm = 0x800006207; SSE4-NEXT:    jne .LBB15_396208; SSE4-NEXT:  .LBB15_40: # %else386209; SSE4-NEXT:    testl $1048576, %eax # imm = 0x1000006210; SSE4-NEXT:    jne .LBB15_416211; SSE4-NEXT:  .LBB15_42: # %else406212; SSE4-NEXT:    testl $2097152, %eax # imm = 0x2000006213; SSE4-NEXT:    jne .LBB15_436214; SSE4-NEXT:  .LBB15_44: # %else426215; SSE4-NEXT:    testl $4194304, %eax # imm = 0x4000006216; SSE4-NEXT:    jne .LBB15_456217; SSE4-NEXT:  .LBB15_46: # %else446218; SSE4-NEXT:    testl $8388608, %eax # imm = 0x8000006219; SSE4-NEXT:    jne .LBB15_476220; SSE4-NEXT:  .LBB15_48: # %else466221; SSE4-NEXT:    testl $16777216, %eax # imm = 0x10000006222; SSE4-NEXT:    jne .LBB15_496223; SSE4-NEXT:  .LBB15_50: # %else486224; SSE4-NEXT:    testl $33554432, %eax # imm = 0x20000006225; SSE4-NEXT:    jne .LBB15_516226; SSE4-NEXT:  .LBB15_52: # %else506227; SSE4-NEXT:    testl $67108864, %eax # imm = 0x40000006228; SSE4-NEXT:    jne .LBB15_536229; SSE4-NEXT:  .LBB15_54: # %else526230; SSE4-NEXT:    testl $134217728, %eax # imm = 0x80000006231; SSE4-NEXT:    jne .LBB15_556232; SSE4-NEXT:  .LBB15_56: # %else546233; SSE4-NEXT:    testl $268435456, %eax # imm = 0x100000006234; SSE4-NEXT:    jne .LBB15_576235; SSE4-NEXT:  .LBB15_58: # %else566236; SSE4-NEXT:    testl $536870912, %eax # imm = 0x200000006237; SSE4-NEXT:    jne .LBB15_596238; SSE4-NEXT:  .LBB15_60: # %else586239; SSE4-NEXT:    testl $1073741824, %eax # imm = 0x400000006240; SSE4-NEXT:    jne .LBB15_616241; SSE4-NEXT:  .LBB15_62: # %else606242; SSE4-NEXT:    testl $-2147483648, %eax # imm = 0x800000006243; SSE4-NEXT:    jne .LBB15_636244; SSE4-NEXT:  .LBB15_64: # %else626245; SSE4-NEXT:    retq6246; SSE4-NEXT:  .LBB15_1: # %cond.store6247; SSE4-NEXT:    pextrb $0, %xmm0, (%rdi)6248; SSE4-NEXT:    testb $2, %al6249; SSE4-NEXT:    je .LBB15_46250; SSE4-NEXT:  .LBB15_3: # %cond.store16251; SSE4-NEXT:    pextrb $1, %xmm0, 1(%rdi)6252; SSE4-NEXT:    testb $4, %al6253; SSE4-NEXT:    je .LBB15_66254; SSE4-NEXT:  .LBB15_5: # %cond.store36255; SSE4-NEXT:    pextrb $2, %xmm0, 2(%rdi)6256; SSE4-NEXT:    testb $8, %al6257; SSE4-NEXT:    je .LBB15_86258; SSE4-NEXT:  .LBB15_7: # %cond.store56259; SSE4-NEXT:    pextrb $3, %xmm0, 3(%rdi)6260; SSE4-NEXT:    testb $16, %al6261; SSE4-NEXT:    je .LBB15_106262; SSE4-NEXT:  .LBB15_9: # %cond.store76263; SSE4-NEXT:    pextrb $4, %xmm0, 4(%rdi)6264; SSE4-NEXT:    testb $32, %al6265; SSE4-NEXT:    je .LBB15_126266; SSE4-NEXT:  .LBB15_11: # %cond.store96267; SSE4-NEXT:    pextrb $5, %xmm0, 5(%rdi)6268; SSE4-NEXT:    testb $64, %al6269; SSE4-NEXT:    je .LBB15_146270; SSE4-NEXT:  .LBB15_13: # %cond.store116271; SSE4-NEXT:    pextrb $6, %xmm0, 6(%rdi)6272; SSE4-NEXT:    testb %al, %al6273; SSE4-NEXT:    jns .LBB15_166274; SSE4-NEXT:  .LBB15_15: # %cond.store136275; SSE4-NEXT:    pextrb $7, %xmm0, 7(%rdi)6276; SSE4-NEXT:    testl $256, %eax # imm = 0x1006277; SSE4-NEXT:    je .LBB15_186278; SSE4-NEXT:  .LBB15_17: # %cond.store156279; SSE4-NEXT:    pextrb $8, %xmm0, 8(%rdi)6280; SSE4-NEXT:    testl $512, %eax # imm = 0x2006281; SSE4-NEXT:    je .LBB15_206282; SSE4-NEXT:  .LBB15_19: # %cond.store176283; SSE4-NEXT:    pextrb $9, %xmm0, 9(%rdi)6284; SSE4-NEXT:    testl $1024, %eax # imm = 0x4006285; SSE4-NEXT:    je .LBB15_226286; SSE4-NEXT:  .LBB15_21: # %cond.store196287; SSE4-NEXT:    pextrb $10, %xmm0, 10(%rdi)6288; SSE4-NEXT:    testl $2048, %eax # imm = 0x8006289; SSE4-NEXT:    je .LBB15_246290; SSE4-NEXT:  .LBB15_23: # %cond.store216291; SSE4-NEXT:    pextrb $11, %xmm0, 11(%rdi)6292; SSE4-NEXT:    testl $4096, %eax # imm = 0x10006293; SSE4-NEXT:    je .LBB15_266294; SSE4-NEXT:  .LBB15_25: # %cond.store236295; SSE4-NEXT:    pextrb $12, %xmm0, 12(%rdi)6296; SSE4-NEXT:    testl $8192, %eax # imm = 0x20006297; SSE4-NEXT:    je .LBB15_286298; SSE4-NEXT:  .LBB15_27: # %cond.store256299; SSE4-NEXT:    pextrb $13, %xmm0, 13(%rdi)6300; SSE4-NEXT:    testl $16384, %eax # imm = 0x40006301; SSE4-NEXT:    je .LBB15_306302; SSE4-NEXT:  .LBB15_29: # %cond.store276303; SSE4-NEXT:    pextrb $14, %xmm0, 14(%rdi)6304; SSE4-NEXT:    testw %ax, %ax6305; SSE4-NEXT:    js .LBB15_316306; SSE4-NEXT:    jmp .LBB15_326307; SSE4-NEXT:  .LBB15_33: # %cond.store316308; SSE4-NEXT:    pextrb $0, %xmm2, 16(%rdi)6309; SSE4-NEXT:    testl $131072, %eax # imm = 0x200006310; SSE4-NEXT:    je .LBB15_366311; SSE4-NEXT:  .LBB15_35: # %cond.store336312; SSE4-NEXT:    pextrb $1, %xmm2, 17(%rdi)6313; SSE4-NEXT:    testl $262144, %eax # imm = 0x400006314; SSE4-NEXT:    je .LBB15_386315; SSE4-NEXT:  .LBB15_37: # %cond.store356316; SSE4-NEXT:    pextrb $2, %xmm2, 18(%rdi)6317; SSE4-NEXT:    testl $524288, %eax # imm = 0x800006318; SSE4-NEXT:    je .LBB15_406319; SSE4-NEXT:  .LBB15_39: # %cond.store376320; SSE4-NEXT:    pextrb $3, %xmm2, 19(%rdi)6321; SSE4-NEXT:    testl $1048576, %eax # imm = 0x1000006322; SSE4-NEXT:    je .LBB15_426323; SSE4-NEXT:  .LBB15_41: # %cond.store396324; SSE4-NEXT:    pextrb $4, %xmm2, 20(%rdi)6325; SSE4-NEXT:    testl $2097152, %eax # imm = 0x2000006326; SSE4-NEXT:    je .LBB15_446327; SSE4-NEXT:  .LBB15_43: # %cond.store416328; SSE4-NEXT:    pextrb $5, %xmm2, 21(%rdi)6329; SSE4-NEXT:    testl $4194304, %eax # imm = 0x4000006330; SSE4-NEXT:    je .LBB15_466331; SSE4-NEXT:  .LBB15_45: # %cond.store436332; SSE4-NEXT:    pextrb $6, %xmm2, 22(%rdi)6333; SSE4-NEXT:    testl $8388608, %eax # imm = 0x8000006334; SSE4-NEXT:    je .LBB15_486335; SSE4-NEXT:  .LBB15_47: # %cond.store456336; SSE4-NEXT:    pextrb $7, %xmm2, 23(%rdi)6337; SSE4-NEXT:    testl $16777216, %eax # imm = 0x10000006338; SSE4-NEXT:    je .LBB15_506339; SSE4-NEXT:  .LBB15_49: # %cond.store476340; SSE4-NEXT:    pextrb $8, %xmm2, 24(%rdi)6341; SSE4-NEXT:    testl $33554432, %eax # imm = 0x20000006342; SSE4-NEXT:    je .LBB15_526343; SSE4-NEXT:  .LBB15_51: # %cond.store496344; SSE4-NEXT:    pextrb $9, %xmm2, 25(%rdi)6345; SSE4-NEXT:    testl $67108864, %eax # imm = 0x40000006346; SSE4-NEXT:    je .LBB15_546347; SSE4-NEXT:  .LBB15_53: # %cond.store516348; SSE4-NEXT:    pextrb $10, %xmm2, 26(%rdi)6349; SSE4-NEXT:    testl $134217728, %eax # imm = 0x80000006350; SSE4-NEXT:    je .LBB15_566351; SSE4-NEXT:  .LBB15_55: # %cond.store536352; SSE4-NEXT:    pextrb $11, %xmm2, 27(%rdi)6353; SSE4-NEXT:    testl $268435456, %eax # imm = 0x100000006354; SSE4-NEXT:    je .LBB15_586355; SSE4-NEXT:  .LBB15_57: # %cond.store556356; SSE4-NEXT:    pextrb $12, %xmm2, 28(%rdi)6357; SSE4-NEXT:    testl $536870912, %eax # imm = 0x200000006358; SSE4-NEXT:    je .LBB15_606359; SSE4-NEXT:  .LBB15_59: # %cond.store576360; SSE4-NEXT:    pextrb $13, %xmm2, 29(%rdi)6361; SSE4-NEXT:    testl $1073741824, %eax # imm = 0x400000006362; SSE4-NEXT:    je .LBB15_626363; SSE4-NEXT:  .LBB15_61: # %cond.store596364; SSE4-NEXT:    pextrb $14, %xmm2, 30(%rdi)6365; SSE4-NEXT:    testl $-2147483648, %eax # imm = 0x800000006366; SSE4-NEXT:    je .LBB15_646367; SSE4-NEXT:  .LBB15_63: # %cond.store616368; SSE4-NEXT:    pextrb $15, %xmm2, 31(%rdi)6369; SSE4-NEXT:    retq6370;6371; AVX1-LABEL: truncstore_v32i16_v32i8:6372; AVX1:       # %bb.0:6373; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm36374; AVX1-NEXT:    vpacksswb %xmm3, %xmm1, %xmm16375; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm36376; AVX1-NEXT:    vpacksswb %xmm3, %xmm0, %xmm06377; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm06378; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm16379; AVX1-NEXT:    vpcmpeqb %xmm1, %xmm2, %xmm36380; AVX1-NEXT:    vpmovmskb %xmm3, %ecx6381; AVX1-NEXT:    xorl $65535, %ecx # imm = 0xFFFF6382; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm26383; AVX1-NEXT:    vpcmpeqb %xmm1, %xmm2, %xmm16384; AVX1-NEXT:    vpmovmskb %xmm1, %eax6385; AVX1-NEXT:    notl %eax6386; AVX1-NEXT:    shll $16, %eax6387; AVX1-NEXT:    orl %ecx, %eax6388; AVX1-NEXT:    testb $1, %al6389; AVX1-NEXT:    jne .LBB15_16390; AVX1-NEXT:  # %bb.2: # %else6391; AVX1-NEXT:    testb $2, %al6392; AVX1-NEXT:    jne .LBB15_36393; AVX1-NEXT:  .LBB15_4: # %else26394; AVX1-NEXT:    testb $4, %al6395; AVX1-NEXT:    jne .LBB15_56396; AVX1-NEXT:  .LBB15_6: # %else46397; AVX1-NEXT:    testb $8, %al6398; AVX1-NEXT:    jne .LBB15_76399; AVX1-NEXT:  .LBB15_8: # %else66400; AVX1-NEXT:    testb $16, %al6401; AVX1-NEXT:    jne .LBB15_96402; AVX1-NEXT:  .LBB15_10: # %else86403; AVX1-NEXT:    testb $32, %al6404; AVX1-NEXT:    jne .LBB15_116405; AVX1-NEXT:  .LBB15_12: # %else106406; AVX1-NEXT:    testb $64, %al6407; AVX1-NEXT:    jne .LBB15_136408; AVX1-NEXT:  .LBB15_14: # %else126409; AVX1-NEXT:    testb %al, %al6410; AVX1-NEXT:    js .LBB15_156411; AVX1-NEXT:  .LBB15_16: # %else146412; AVX1-NEXT:    testl $256, %eax # imm = 0x1006413; AVX1-NEXT:    jne .LBB15_176414; AVX1-NEXT:  .LBB15_18: # %else166415; AVX1-NEXT:    testl $512, %eax # imm = 0x2006416; AVX1-NEXT:    jne .LBB15_196417; AVX1-NEXT:  .LBB15_20: # %else186418; AVX1-NEXT:    testl $1024, %eax # imm = 0x4006419; AVX1-NEXT:    jne .LBB15_216420; AVX1-NEXT:  .LBB15_22: # %else206421; AVX1-NEXT:    testl $2048, %eax # imm = 0x8006422; AVX1-NEXT:    jne .LBB15_236423; AVX1-NEXT:  .LBB15_24: # %else226424; AVX1-NEXT:    testl $4096, %eax # imm = 0x10006425; AVX1-NEXT:    jne .LBB15_256426; AVX1-NEXT:  .LBB15_26: # %else246427; AVX1-NEXT:    testl $8192, %eax # imm = 0x20006428; AVX1-NEXT:    jne .LBB15_276429; AVX1-NEXT:  .LBB15_28: # %else266430; AVX1-NEXT:    testl $16384, %eax # imm = 0x40006431; AVX1-NEXT:    jne .LBB15_296432; AVX1-NEXT:  .LBB15_30: # %else286433; AVX1-NEXT:    testw %ax, %ax6434; AVX1-NEXT:    jns .LBB15_326435; AVX1-NEXT:  .LBB15_31: # %cond.store296436; AVX1-NEXT:    vpextrb $15, %xmm0, 15(%rdi)6437; AVX1-NEXT:  .LBB15_32: # %else306438; AVX1-NEXT:    testl $65536, %eax # imm = 0x100006439; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm06440; AVX1-NEXT:    jne .LBB15_336441; AVX1-NEXT:  # %bb.34: # %else326442; AVX1-NEXT:    testl $131072, %eax # imm = 0x200006443; AVX1-NEXT:    jne .LBB15_356444; AVX1-NEXT:  .LBB15_36: # %else346445; AVX1-NEXT:    testl $262144, %eax # imm = 0x400006446; AVX1-NEXT:    jne .LBB15_376447; AVX1-NEXT:  .LBB15_38: # %else366448; AVX1-NEXT:    testl $524288, %eax # imm = 0x800006449; AVX1-NEXT:    jne .LBB15_396450; AVX1-NEXT:  .LBB15_40: # %else386451; AVX1-NEXT:    testl $1048576, %eax # imm = 0x1000006452; AVX1-NEXT:    jne .LBB15_416453; AVX1-NEXT:  .LBB15_42: # %else406454; AVX1-NEXT:    testl $2097152, %eax # imm = 0x2000006455; AVX1-NEXT:    jne .LBB15_436456; AVX1-NEXT:  .LBB15_44: # %else426457; AVX1-NEXT:    testl $4194304, %eax # imm = 0x4000006458; AVX1-NEXT:    jne .LBB15_456459; AVX1-NEXT:  .LBB15_46: # %else446460; AVX1-NEXT:    testl $8388608, %eax # imm = 0x8000006461; AVX1-NEXT:    jne .LBB15_476462; AVX1-NEXT:  .LBB15_48: # %else466463; AVX1-NEXT:    testl $16777216, %eax # imm = 0x10000006464; AVX1-NEXT:    jne .LBB15_496465; AVX1-NEXT:  .LBB15_50: # %else486466; AVX1-NEXT:    testl $33554432, %eax # imm = 0x20000006467; AVX1-NEXT:    jne .LBB15_516468; AVX1-NEXT:  .LBB15_52: # %else506469; AVX1-NEXT:    testl $67108864, %eax # imm = 0x40000006470; AVX1-NEXT:    jne .LBB15_536471; AVX1-NEXT:  .LBB15_54: # %else526472; AVX1-NEXT:    testl $134217728, %eax # imm = 0x80000006473; AVX1-NEXT:    jne .LBB15_556474; AVX1-NEXT:  .LBB15_56: # %else546475; AVX1-NEXT:    testl $268435456, %eax # imm = 0x100000006476; AVX1-NEXT:    jne .LBB15_576477; AVX1-NEXT:  .LBB15_58: # %else566478; AVX1-NEXT:    testl $536870912, %eax # imm = 0x200000006479; AVX1-NEXT:    jne .LBB15_596480; AVX1-NEXT:  .LBB15_60: # %else586481; AVX1-NEXT:    testl $1073741824, %eax # imm = 0x400000006482; AVX1-NEXT:    jne .LBB15_616483; AVX1-NEXT:  .LBB15_62: # %else606484; AVX1-NEXT:    testl $-2147483648, %eax # imm = 0x800000006485; AVX1-NEXT:    jne .LBB15_636486; AVX1-NEXT:  .LBB15_64: # %else626487; AVX1-NEXT:    vzeroupper6488; AVX1-NEXT:    retq6489; AVX1-NEXT:  .LBB15_1: # %cond.store6490; AVX1-NEXT:    vpextrb $0, %xmm0, (%rdi)6491; AVX1-NEXT:    testb $2, %al6492; AVX1-NEXT:    je .LBB15_46493; AVX1-NEXT:  .LBB15_3: # %cond.store16494; AVX1-NEXT:    vpextrb $1, %xmm0, 1(%rdi)6495; AVX1-NEXT:    testb $4, %al6496; AVX1-NEXT:    je .LBB15_66497; AVX1-NEXT:  .LBB15_5: # %cond.store36498; AVX1-NEXT:    vpextrb $2, %xmm0, 2(%rdi)6499; AVX1-NEXT:    testb $8, %al6500; AVX1-NEXT:    je .LBB15_86501; AVX1-NEXT:  .LBB15_7: # %cond.store56502; AVX1-NEXT:    vpextrb $3, %xmm0, 3(%rdi)6503; AVX1-NEXT:    testb $16, %al6504; AVX1-NEXT:    je .LBB15_106505; AVX1-NEXT:  .LBB15_9: # %cond.store76506; AVX1-NEXT:    vpextrb $4, %xmm0, 4(%rdi)6507; AVX1-NEXT:    testb $32, %al6508; AVX1-NEXT:    je .LBB15_126509; AVX1-NEXT:  .LBB15_11: # %cond.store96510; AVX1-NEXT:    vpextrb $5, %xmm0, 5(%rdi)6511; AVX1-NEXT:    testb $64, %al6512; AVX1-NEXT:    je .LBB15_146513; AVX1-NEXT:  .LBB15_13: # %cond.store116514; AVX1-NEXT:    vpextrb $6, %xmm0, 6(%rdi)6515; AVX1-NEXT:    testb %al, %al6516; AVX1-NEXT:    jns .LBB15_166517; AVX1-NEXT:  .LBB15_15: # %cond.store136518; AVX1-NEXT:    vpextrb $7, %xmm0, 7(%rdi)6519; AVX1-NEXT:    testl $256, %eax # imm = 0x1006520; AVX1-NEXT:    je .LBB15_186521; AVX1-NEXT:  .LBB15_17: # %cond.store156522; AVX1-NEXT:    vpextrb $8, %xmm0, 8(%rdi)6523; AVX1-NEXT:    testl $512, %eax # imm = 0x2006524; AVX1-NEXT:    je .LBB15_206525; AVX1-NEXT:  .LBB15_19: # %cond.store176526; AVX1-NEXT:    vpextrb $9, %xmm0, 9(%rdi)6527; AVX1-NEXT:    testl $1024, %eax # imm = 0x4006528; AVX1-NEXT:    je .LBB15_226529; AVX1-NEXT:  .LBB15_21: # %cond.store196530; AVX1-NEXT:    vpextrb $10, %xmm0, 10(%rdi)6531; AVX1-NEXT:    testl $2048, %eax # imm = 0x8006532; AVX1-NEXT:    je .LBB15_246533; AVX1-NEXT:  .LBB15_23: # %cond.store216534; AVX1-NEXT:    vpextrb $11, %xmm0, 11(%rdi)6535; AVX1-NEXT:    testl $4096, %eax # imm = 0x10006536; AVX1-NEXT:    je .LBB15_266537; AVX1-NEXT:  .LBB15_25: # %cond.store236538; AVX1-NEXT:    vpextrb $12, %xmm0, 12(%rdi)6539; AVX1-NEXT:    testl $8192, %eax # imm = 0x20006540; AVX1-NEXT:    je .LBB15_286541; AVX1-NEXT:  .LBB15_27: # %cond.store256542; AVX1-NEXT:    vpextrb $13, %xmm0, 13(%rdi)6543; AVX1-NEXT:    testl $16384, %eax # imm = 0x40006544; AVX1-NEXT:    je .LBB15_306545; AVX1-NEXT:  .LBB15_29: # %cond.store276546; AVX1-NEXT:    vpextrb $14, %xmm0, 14(%rdi)6547; AVX1-NEXT:    testw %ax, %ax6548; AVX1-NEXT:    js .LBB15_316549; AVX1-NEXT:    jmp .LBB15_326550; AVX1-NEXT:  .LBB15_33: # %cond.store316551; AVX1-NEXT:    vpextrb $0, %xmm0, 16(%rdi)6552; AVX1-NEXT:    testl $131072, %eax # imm = 0x200006553; AVX1-NEXT:    je .LBB15_366554; AVX1-NEXT:  .LBB15_35: # %cond.store336555; AVX1-NEXT:    vpextrb $1, %xmm0, 17(%rdi)6556; AVX1-NEXT:    testl $262144, %eax # imm = 0x400006557; AVX1-NEXT:    je .LBB15_386558; AVX1-NEXT:  .LBB15_37: # %cond.store356559; AVX1-NEXT:    vpextrb $2, %xmm0, 18(%rdi)6560; AVX1-NEXT:    testl $524288, %eax # imm = 0x800006561; AVX1-NEXT:    je .LBB15_406562; AVX1-NEXT:  .LBB15_39: # %cond.store376563; AVX1-NEXT:    vpextrb $3, %xmm0, 19(%rdi)6564; AVX1-NEXT:    testl $1048576, %eax # imm = 0x1000006565; AVX1-NEXT:    je .LBB15_426566; AVX1-NEXT:  .LBB15_41: # %cond.store396567; AVX1-NEXT:    vpextrb $4, %xmm0, 20(%rdi)6568; AVX1-NEXT:    testl $2097152, %eax # imm = 0x2000006569; AVX1-NEXT:    je .LBB15_446570; AVX1-NEXT:  .LBB15_43: # %cond.store416571; AVX1-NEXT:    vpextrb $5, %xmm0, 21(%rdi)6572; AVX1-NEXT:    testl $4194304, %eax # imm = 0x4000006573; AVX1-NEXT:    je .LBB15_466574; AVX1-NEXT:  .LBB15_45: # %cond.store436575; AVX1-NEXT:    vpextrb $6, %xmm0, 22(%rdi)6576; AVX1-NEXT:    testl $8388608, %eax # imm = 0x8000006577; AVX1-NEXT:    je .LBB15_486578; AVX1-NEXT:  .LBB15_47: # %cond.store456579; AVX1-NEXT:    vpextrb $7, %xmm0, 23(%rdi)6580; AVX1-NEXT:    testl $16777216, %eax # imm = 0x10000006581; AVX1-NEXT:    je .LBB15_506582; AVX1-NEXT:  .LBB15_49: # %cond.store476583; AVX1-NEXT:    vpextrb $8, %xmm0, 24(%rdi)6584; AVX1-NEXT:    testl $33554432, %eax # imm = 0x20000006585; AVX1-NEXT:    je .LBB15_526586; AVX1-NEXT:  .LBB15_51: # %cond.store496587; AVX1-NEXT:    vpextrb $9, %xmm0, 25(%rdi)6588; AVX1-NEXT:    testl $67108864, %eax # imm = 0x40000006589; AVX1-NEXT:    je .LBB15_546590; AVX1-NEXT:  .LBB15_53: # %cond.store516591; AVX1-NEXT:    vpextrb $10, %xmm0, 26(%rdi)6592; AVX1-NEXT:    testl $134217728, %eax # imm = 0x80000006593; AVX1-NEXT:    je .LBB15_566594; AVX1-NEXT:  .LBB15_55: # %cond.store536595; AVX1-NEXT:    vpextrb $11, %xmm0, 27(%rdi)6596; AVX1-NEXT:    testl $268435456, %eax # imm = 0x100000006597; AVX1-NEXT:    je .LBB15_586598; AVX1-NEXT:  .LBB15_57: # %cond.store556599; AVX1-NEXT:    vpextrb $12, %xmm0, 28(%rdi)6600; AVX1-NEXT:    testl $536870912, %eax # imm = 0x200000006601; AVX1-NEXT:    je .LBB15_606602; AVX1-NEXT:  .LBB15_59: # %cond.store576603; AVX1-NEXT:    vpextrb $13, %xmm0, 29(%rdi)6604; AVX1-NEXT:    testl $1073741824, %eax # imm = 0x400000006605; AVX1-NEXT:    je .LBB15_626606; AVX1-NEXT:  .LBB15_61: # %cond.store596607; AVX1-NEXT:    vpextrb $14, %xmm0, 30(%rdi)6608; AVX1-NEXT:    testl $-2147483648, %eax # imm = 0x800000006609; AVX1-NEXT:    je .LBB15_646610; AVX1-NEXT:  .LBB15_63: # %cond.store616611; AVX1-NEXT:    vpextrb $15, %xmm0, 31(%rdi)6612; AVX1-NEXT:    vzeroupper6613; AVX1-NEXT:    retq6614;6615; AVX2-LABEL: truncstore_v32i16_v32i8:6616; AVX2:       # %bb.0:6617; AVX2-NEXT:    vpxor %xmm3, %xmm3, %xmm36618; AVX2-NEXT:    vpacksswb %ymm1, %ymm0, %ymm06619; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]6620; AVX2-NEXT:    vpcmpeqb %ymm3, %ymm2, %ymm16621; AVX2-NEXT:    vpmovmskb %ymm1, %eax6622; AVX2-NEXT:    notl %eax6623; AVX2-NEXT:    testb $1, %al6624; AVX2-NEXT:    jne .LBB15_16625; AVX2-NEXT:  # %bb.2: # %else6626; AVX2-NEXT:    testb $2, %al6627; AVX2-NEXT:    jne .LBB15_36628; AVX2-NEXT:  .LBB15_4: # %else26629; AVX2-NEXT:    testb $4, %al6630; AVX2-NEXT:    jne .LBB15_56631; AVX2-NEXT:  .LBB15_6: # %else46632; AVX2-NEXT:    testb $8, %al6633; AVX2-NEXT:    jne .LBB15_76634; AVX2-NEXT:  .LBB15_8: # %else66635; AVX2-NEXT:    testb $16, %al6636; AVX2-NEXT:    jne .LBB15_96637; AVX2-NEXT:  .LBB15_10: # %else86638; AVX2-NEXT:    testb $32, %al6639; AVX2-NEXT:    jne .LBB15_116640; AVX2-NEXT:  .LBB15_12: # %else106641; AVX2-NEXT:    testb $64, %al6642; AVX2-NEXT:    jne .LBB15_136643; AVX2-NEXT:  .LBB15_14: # %else126644; AVX2-NEXT:    testb %al, %al6645; AVX2-NEXT:    js .LBB15_156646; AVX2-NEXT:  .LBB15_16: # %else146647; AVX2-NEXT:    testl $256, %eax # imm = 0x1006648; AVX2-NEXT:    jne .LBB15_176649; AVX2-NEXT:  .LBB15_18: # %else166650; AVX2-NEXT:    testl $512, %eax # imm = 0x2006651; AVX2-NEXT:    jne .LBB15_196652; AVX2-NEXT:  .LBB15_20: # %else186653; AVX2-NEXT:    testl $1024, %eax # imm = 0x4006654; AVX2-NEXT:    jne .LBB15_216655; AVX2-NEXT:  .LBB15_22: # %else206656; AVX2-NEXT:    testl $2048, %eax # imm = 0x8006657; AVX2-NEXT:    jne .LBB15_236658; AVX2-NEXT:  .LBB15_24: # %else226659; AVX2-NEXT:    testl $4096, %eax # imm = 0x10006660; AVX2-NEXT:    jne .LBB15_256661; AVX2-NEXT:  .LBB15_26: # %else246662; AVX2-NEXT:    testl $8192, %eax # imm = 0x20006663; AVX2-NEXT:    jne .LBB15_276664; AVX2-NEXT:  .LBB15_28: # %else266665; AVX2-NEXT:    testl $16384, %eax # imm = 0x40006666; AVX2-NEXT:    jne .LBB15_296667; AVX2-NEXT:  .LBB15_30: # %else286668; AVX2-NEXT:    testw %ax, %ax6669; AVX2-NEXT:    jns .LBB15_326670; AVX2-NEXT:  .LBB15_31: # %cond.store296671; AVX2-NEXT:    vpextrb $15, %xmm0, 15(%rdi)6672; AVX2-NEXT:  .LBB15_32: # %else306673; AVX2-NEXT:    testl $65536, %eax # imm = 0x100006674; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm06675; AVX2-NEXT:    jne .LBB15_336676; AVX2-NEXT:  # %bb.34: # %else326677; AVX2-NEXT:    testl $131072, %eax # imm = 0x200006678; AVX2-NEXT:    jne .LBB15_356679; AVX2-NEXT:  .LBB15_36: # %else346680; AVX2-NEXT:    testl $262144, %eax # imm = 0x400006681; AVX2-NEXT:    jne .LBB15_376682; AVX2-NEXT:  .LBB15_38: # %else366683; AVX2-NEXT:    testl $524288, %eax # imm = 0x800006684; AVX2-NEXT:    jne .LBB15_396685; AVX2-NEXT:  .LBB15_40: # %else386686; AVX2-NEXT:    testl $1048576, %eax # imm = 0x1000006687; AVX2-NEXT:    jne .LBB15_416688; AVX2-NEXT:  .LBB15_42: # %else406689; AVX2-NEXT:    testl $2097152, %eax # imm = 0x2000006690; AVX2-NEXT:    jne .LBB15_436691; AVX2-NEXT:  .LBB15_44: # %else426692; AVX2-NEXT:    testl $4194304, %eax # imm = 0x4000006693; AVX2-NEXT:    jne .LBB15_456694; AVX2-NEXT:  .LBB15_46: # %else446695; AVX2-NEXT:    testl $8388608, %eax # imm = 0x8000006696; AVX2-NEXT:    jne .LBB15_476697; AVX2-NEXT:  .LBB15_48: # %else466698; AVX2-NEXT:    testl $16777216, %eax # imm = 0x10000006699; AVX2-NEXT:    jne .LBB15_496700; AVX2-NEXT:  .LBB15_50: # %else486701; AVX2-NEXT:    testl $33554432, %eax # imm = 0x20000006702; AVX2-NEXT:    jne .LBB15_516703; AVX2-NEXT:  .LBB15_52: # %else506704; AVX2-NEXT:    testl $67108864, %eax # imm = 0x40000006705; AVX2-NEXT:    jne .LBB15_536706; AVX2-NEXT:  .LBB15_54: # %else526707; AVX2-NEXT:    testl $134217728, %eax # imm = 0x80000006708; AVX2-NEXT:    jne .LBB15_556709; AVX2-NEXT:  .LBB15_56: # %else546710; AVX2-NEXT:    testl $268435456, %eax # imm = 0x100000006711; AVX2-NEXT:    jne .LBB15_576712; AVX2-NEXT:  .LBB15_58: # %else566713; AVX2-NEXT:    testl $536870912, %eax # imm = 0x200000006714; AVX2-NEXT:    jne .LBB15_596715; AVX2-NEXT:  .LBB15_60: # %else586716; AVX2-NEXT:    testl $1073741824, %eax # imm = 0x400000006717; AVX2-NEXT:    jne .LBB15_616718; AVX2-NEXT:  .LBB15_62: # %else606719; AVX2-NEXT:    testl $-2147483648, %eax # imm = 0x800000006720; AVX2-NEXT:    jne .LBB15_636721; AVX2-NEXT:  .LBB15_64: # %else626722; AVX2-NEXT:    vzeroupper6723; AVX2-NEXT:    retq6724; AVX2-NEXT:  .LBB15_1: # %cond.store6725; AVX2-NEXT:    vpextrb $0, %xmm0, (%rdi)6726; AVX2-NEXT:    testb $2, %al6727; AVX2-NEXT:    je .LBB15_46728; AVX2-NEXT:  .LBB15_3: # %cond.store16729; AVX2-NEXT:    vpextrb $1, %xmm0, 1(%rdi)6730; AVX2-NEXT:    testb $4, %al6731; AVX2-NEXT:    je .LBB15_66732; AVX2-NEXT:  .LBB15_5: # %cond.store36733; AVX2-NEXT:    vpextrb $2, %xmm0, 2(%rdi)6734; AVX2-NEXT:    testb $8, %al6735; AVX2-NEXT:    je .LBB15_86736; AVX2-NEXT:  .LBB15_7: # %cond.store56737; AVX2-NEXT:    vpextrb $3, %xmm0, 3(%rdi)6738; AVX2-NEXT:    testb $16, %al6739; AVX2-NEXT:    je .LBB15_106740; AVX2-NEXT:  .LBB15_9: # %cond.store76741; AVX2-NEXT:    vpextrb $4, %xmm0, 4(%rdi)6742; AVX2-NEXT:    testb $32, %al6743; AVX2-NEXT:    je .LBB15_126744; AVX2-NEXT:  .LBB15_11: # %cond.store96745; AVX2-NEXT:    vpextrb $5, %xmm0, 5(%rdi)6746; AVX2-NEXT:    testb $64, %al6747; AVX2-NEXT:    je .LBB15_146748; AVX2-NEXT:  .LBB15_13: # %cond.store116749; AVX2-NEXT:    vpextrb $6, %xmm0, 6(%rdi)6750; AVX2-NEXT:    testb %al, %al6751; AVX2-NEXT:    jns .LBB15_166752; AVX2-NEXT:  .LBB15_15: # %cond.store136753; AVX2-NEXT:    vpextrb $7, %xmm0, 7(%rdi)6754; AVX2-NEXT:    testl $256, %eax # imm = 0x1006755; AVX2-NEXT:    je .LBB15_186756; AVX2-NEXT:  .LBB15_17: # %cond.store156757; AVX2-NEXT:    vpextrb $8, %xmm0, 8(%rdi)6758; AVX2-NEXT:    testl $512, %eax # imm = 0x2006759; AVX2-NEXT:    je .LBB15_206760; AVX2-NEXT:  .LBB15_19: # %cond.store176761; AVX2-NEXT:    vpextrb $9, %xmm0, 9(%rdi)6762; AVX2-NEXT:    testl $1024, %eax # imm = 0x4006763; AVX2-NEXT:    je .LBB15_226764; AVX2-NEXT:  .LBB15_21: # %cond.store196765; AVX2-NEXT:    vpextrb $10, %xmm0, 10(%rdi)6766; AVX2-NEXT:    testl $2048, %eax # imm = 0x8006767; AVX2-NEXT:    je .LBB15_246768; AVX2-NEXT:  .LBB15_23: # %cond.store216769; AVX2-NEXT:    vpextrb $11, %xmm0, 11(%rdi)6770; AVX2-NEXT:    testl $4096, %eax # imm = 0x10006771; AVX2-NEXT:    je .LBB15_266772; AVX2-NEXT:  .LBB15_25: # %cond.store236773; AVX2-NEXT:    vpextrb $12, %xmm0, 12(%rdi)6774; AVX2-NEXT:    testl $8192, %eax # imm = 0x20006775; AVX2-NEXT:    je .LBB15_286776; AVX2-NEXT:  .LBB15_27: # %cond.store256777; AVX2-NEXT:    vpextrb $13, %xmm0, 13(%rdi)6778; AVX2-NEXT:    testl $16384, %eax # imm = 0x40006779; AVX2-NEXT:    je .LBB15_306780; AVX2-NEXT:  .LBB15_29: # %cond.store276781; AVX2-NEXT:    vpextrb $14, %xmm0, 14(%rdi)6782; AVX2-NEXT:    testw %ax, %ax6783; AVX2-NEXT:    js .LBB15_316784; AVX2-NEXT:    jmp .LBB15_326785; AVX2-NEXT:  .LBB15_33: # %cond.store316786; AVX2-NEXT:    vpextrb $0, %xmm0, 16(%rdi)6787; AVX2-NEXT:    testl $131072, %eax # imm = 0x200006788; AVX2-NEXT:    je .LBB15_366789; AVX2-NEXT:  .LBB15_35: # %cond.store336790; AVX2-NEXT:    vpextrb $1, %xmm0, 17(%rdi)6791; AVX2-NEXT:    testl $262144, %eax # imm = 0x400006792; AVX2-NEXT:    je .LBB15_386793; AVX2-NEXT:  .LBB15_37: # %cond.store356794; AVX2-NEXT:    vpextrb $2, %xmm0, 18(%rdi)6795; AVX2-NEXT:    testl $524288, %eax # imm = 0x800006796; AVX2-NEXT:    je .LBB15_406797; AVX2-NEXT:  .LBB15_39: # %cond.store376798; AVX2-NEXT:    vpextrb $3, %xmm0, 19(%rdi)6799; AVX2-NEXT:    testl $1048576, %eax # imm = 0x1000006800; AVX2-NEXT:    je .LBB15_426801; AVX2-NEXT:  .LBB15_41: # %cond.store396802; AVX2-NEXT:    vpextrb $4, %xmm0, 20(%rdi)6803; AVX2-NEXT:    testl $2097152, %eax # imm = 0x2000006804; AVX2-NEXT:    je .LBB15_446805; AVX2-NEXT:  .LBB15_43: # %cond.store416806; AVX2-NEXT:    vpextrb $5, %xmm0, 21(%rdi)6807; AVX2-NEXT:    testl $4194304, %eax # imm = 0x4000006808; AVX2-NEXT:    je .LBB15_466809; AVX2-NEXT:  .LBB15_45: # %cond.store436810; AVX2-NEXT:    vpextrb $6, %xmm0, 22(%rdi)6811; AVX2-NEXT:    testl $8388608, %eax # imm = 0x8000006812; AVX2-NEXT:    je .LBB15_486813; AVX2-NEXT:  .LBB15_47: # %cond.store456814; AVX2-NEXT:    vpextrb $7, %xmm0, 23(%rdi)6815; AVX2-NEXT:    testl $16777216, %eax # imm = 0x10000006816; AVX2-NEXT:    je .LBB15_506817; AVX2-NEXT:  .LBB15_49: # %cond.store476818; AVX2-NEXT:    vpextrb $8, %xmm0, 24(%rdi)6819; AVX2-NEXT:    testl $33554432, %eax # imm = 0x20000006820; AVX2-NEXT:    je .LBB15_526821; AVX2-NEXT:  .LBB15_51: # %cond.store496822; AVX2-NEXT:    vpextrb $9, %xmm0, 25(%rdi)6823; AVX2-NEXT:    testl $67108864, %eax # imm = 0x40000006824; AVX2-NEXT:    je .LBB15_546825; AVX2-NEXT:  .LBB15_53: # %cond.store516826; AVX2-NEXT:    vpextrb $10, %xmm0, 26(%rdi)6827; AVX2-NEXT:    testl $134217728, %eax # imm = 0x80000006828; AVX2-NEXT:    je .LBB15_566829; AVX2-NEXT:  .LBB15_55: # %cond.store536830; AVX2-NEXT:    vpextrb $11, %xmm0, 27(%rdi)6831; AVX2-NEXT:    testl $268435456, %eax # imm = 0x100000006832; AVX2-NEXT:    je .LBB15_586833; AVX2-NEXT:  .LBB15_57: # %cond.store556834; AVX2-NEXT:    vpextrb $12, %xmm0, 28(%rdi)6835; AVX2-NEXT:    testl $536870912, %eax # imm = 0x200000006836; AVX2-NEXT:    je .LBB15_606837; AVX2-NEXT:  .LBB15_59: # %cond.store576838; AVX2-NEXT:    vpextrb $13, %xmm0, 29(%rdi)6839; AVX2-NEXT:    testl $1073741824, %eax # imm = 0x400000006840; AVX2-NEXT:    je .LBB15_626841; AVX2-NEXT:  .LBB15_61: # %cond.store596842; AVX2-NEXT:    vpextrb $14, %xmm0, 30(%rdi)6843; AVX2-NEXT:    testl $-2147483648, %eax # imm = 0x800000006844; AVX2-NEXT:    je .LBB15_646845; AVX2-NEXT:  .LBB15_63: # %cond.store616846; AVX2-NEXT:    vpextrb $15, %xmm0, 31(%rdi)6847; AVX2-NEXT:    vzeroupper6848; AVX2-NEXT:    retq6849;6850; AVX512F-LABEL: truncstore_v32i16_v32i8:6851; AVX512F:       # %bb.0:6852; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm26853; AVX512F-NEXT:    vpcmpeqb %ymm2, %ymm1, %ymm16854; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm26855; AVX512F-NEXT:    vpacksswb %ymm2, %ymm0, %ymm06856; AVX512F-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]6857; AVX512F-NEXT:    vpmovmskb %ymm1, %eax6858; AVX512F-NEXT:    notl %eax6859; AVX512F-NEXT:    testb $1, %al6860; AVX512F-NEXT:    jne .LBB15_16861; AVX512F-NEXT:  # %bb.2: # %else6862; AVX512F-NEXT:    testb $2, %al6863; AVX512F-NEXT:    jne .LBB15_36864; AVX512F-NEXT:  .LBB15_4: # %else26865; AVX512F-NEXT:    testb $4, %al6866; AVX512F-NEXT:    jne .LBB15_56867; AVX512F-NEXT:  .LBB15_6: # %else46868; AVX512F-NEXT:    testb $8, %al6869; AVX512F-NEXT:    jne .LBB15_76870; AVX512F-NEXT:  .LBB15_8: # %else66871; AVX512F-NEXT:    testb $16, %al6872; AVX512F-NEXT:    jne .LBB15_96873; AVX512F-NEXT:  .LBB15_10: # %else86874; AVX512F-NEXT:    testb $32, %al6875; AVX512F-NEXT:    jne .LBB15_116876; AVX512F-NEXT:  .LBB15_12: # %else106877; AVX512F-NEXT:    testb $64, %al6878; AVX512F-NEXT:    jne .LBB15_136879; AVX512F-NEXT:  .LBB15_14: # %else126880; AVX512F-NEXT:    testb %al, %al6881; AVX512F-NEXT:    js .LBB15_156882; AVX512F-NEXT:  .LBB15_16: # %else146883; AVX512F-NEXT:    testl $256, %eax # imm = 0x1006884; AVX512F-NEXT:    jne .LBB15_176885; AVX512F-NEXT:  .LBB15_18: # %else166886; AVX512F-NEXT:    testl $512, %eax # imm = 0x2006887; AVX512F-NEXT:    jne .LBB15_196888; AVX512F-NEXT:  .LBB15_20: # %else186889; AVX512F-NEXT:    testl $1024, %eax # imm = 0x4006890; AVX512F-NEXT:    jne .LBB15_216891; AVX512F-NEXT:  .LBB15_22: # %else206892; AVX512F-NEXT:    testl $2048, %eax # imm = 0x8006893; AVX512F-NEXT:    jne .LBB15_236894; AVX512F-NEXT:  .LBB15_24: # %else226895; AVX512F-NEXT:    testl $4096, %eax # imm = 0x10006896; AVX512F-NEXT:    jne .LBB15_256897; AVX512F-NEXT:  .LBB15_26: # %else246898; AVX512F-NEXT:    testl $8192, %eax # imm = 0x20006899; AVX512F-NEXT:    jne .LBB15_276900; AVX512F-NEXT:  .LBB15_28: # %else266901; AVX512F-NEXT:    testl $16384, %eax # imm = 0x40006902; AVX512F-NEXT:    jne .LBB15_296903; AVX512F-NEXT:  .LBB15_30: # %else286904; AVX512F-NEXT:    testw %ax, %ax6905; AVX512F-NEXT:    jns .LBB15_326906; AVX512F-NEXT:  .LBB15_31: # %cond.store296907; AVX512F-NEXT:    vpextrb $15, %xmm0, 15(%rdi)6908; AVX512F-NEXT:  .LBB15_32: # %else306909; AVX512F-NEXT:    testl $65536, %eax # imm = 0x100006910; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm06911; AVX512F-NEXT:    jne .LBB15_336912; AVX512F-NEXT:  # %bb.34: # %else326913; AVX512F-NEXT:    testl $131072, %eax # imm = 0x200006914; AVX512F-NEXT:    jne .LBB15_356915; AVX512F-NEXT:  .LBB15_36: # %else346916; AVX512F-NEXT:    testl $262144, %eax # imm = 0x400006917; AVX512F-NEXT:    jne .LBB15_376918; AVX512F-NEXT:  .LBB15_38: # %else366919; AVX512F-NEXT:    testl $524288, %eax # imm = 0x800006920; AVX512F-NEXT:    jne .LBB15_396921; AVX512F-NEXT:  .LBB15_40: # %else386922; AVX512F-NEXT:    testl $1048576, %eax # imm = 0x1000006923; AVX512F-NEXT:    jne .LBB15_416924; AVX512F-NEXT:  .LBB15_42: # %else406925; AVX512F-NEXT:    testl $2097152, %eax # imm = 0x2000006926; AVX512F-NEXT:    jne .LBB15_436927; AVX512F-NEXT:  .LBB15_44: # %else426928; AVX512F-NEXT:    testl $4194304, %eax # imm = 0x4000006929; AVX512F-NEXT:    jne .LBB15_456930; AVX512F-NEXT:  .LBB15_46: # %else446931; AVX512F-NEXT:    testl $8388608, %eax # imm = 0x8000006932; AVX512F-NEXT:    jne .LBB15_476933; AVX512F-NEXT:  .LBB15_48: # %else466934; AVX512F-NEXT:    testl $16777216, %eax # imm = 0x10000006935; AVX512F-NEXT:    jne .LBB15_496936; AVX512F-NEXT:  .LBB15_50: # %else486937; AVX512F-NEXT:    testl $33554432, %eax # imm = 0x20000006938; AVX512F-NEXT:    jne .LBB15_516939; AVX512F-NEXT:  .LBB15_52: # %else506940; AVX512F-NEXT:    testl $67108864, %eax # imm = 0x40000006941; AVX512F-NEXT:    jne .LBB15_536942; AVX512F-NEXT:  .LBB15_54: # %else526943; AVX512F-NEXT:    testl $134217728, %eax # imm = 0x80000006944; AVX512F-NEXT:    jne .LBB15_556945; AVX512F-NEXT:  .LBB15_56: # %else546946; AVX512F-NEXT:    testl $268435456, %eax # imm = 0x100000006947; AVX512F-NEXT:    jne .LBB15_576948; AVX512F-NEXT:  .LBB15_58: # %else566949; AVX512F-NEXT:    testl $536870912, %eax # imm = 0x200000006950; AVX512F-NEXT:    jne .LBB15_596951; AVX512F-NEXT:  .LBB15_60: # %else586952; AVX512F-NEXT:    testl $1073741824, %eax # imm = 0x400000006953; AVX512F-NEXT:    jne .LBB15_616954; AVX512F-NEXT:  .LBB15_62: # %else606955; AVX512F-NEXT:    testl $-2147483648, %eax # imm = 0x800000006956; AVX512F-NEXT:    jne .LBB15_636957; AVX512F-NEXT:  .LBB15_64: # %else626958; AVX512F-NEXT:    vzeroupper6959; AVX512F-NEXT:    retq6960; AVX512F-NEXT:  .LBB15_1: # %cond.store6961; AVX512F-NEXT:    vpextrb $0, %xmm0, (%rdi)6962; AVX512F-NEXT:    testb $2, %al6963; AVX512F-NEXT:    je .LBB15_46964; AVX512F-NEXT:  .LBB15_3: # %cond.store16965; AVX512F-NEXT:    vpextrb $1, %xmm0, 1(%rdi)6966; AVX512F-NEXT:    testb $4, %al6967; AVX512F-NEXT:    je .LBB15_66968; AVX512F-NEXT:  .LBB15_5: # %cond.store36969; AVX512F-NEXT:    vpextrb $2, %xmm0, 2(%rdi)6970; AVX512F-NEXT:    testb $8, %al6971; AVX512F-NEXT:    je .LBB15_86972; AVX512F-NEXT:  .LBB15_7: # %cond.store56973; AVX512F-NEXT:    vpextrb $3, %xmm0, 3(%rdi)6974; AVX512F-NEXT:    testb $16, %al6975; AVX512F-NEXT:    je .LBB15_106976; AVX512F-NEXT:  .LBB15_9: # %cond.store76977; AVX512F-NEXT:    vpextrb $4, %xmm0, 4(%rdi)6978; AVX512F-NEXT:    testb $32, %al6979; AVX512F-NEXT:    je .LBB15_126980; AVX512F-NEXT:  .LBB15_11: # %cond.store96981; AVX512F-NEXT:    vpextrb $5, %xmm0, 5(%rdi)6982; AVX512F-NEXT:    testb $64, %al6983; AVX512F-NEXT:    je .LBB15_146984; AVX512F-NEXT:  .LBB15_13: # %cond.store116985; AVX512F-NEXT:    vpextrb $6, %xmm0, 6(%rdi)6986; AVX512F-NEXT:    testb %al, %al6987; AVX512F-NEXT:    jns .LBB15_166988; AVX512F-NEXT:  .LBB15_15: # %cond.store136989; AVX512F-NEXT:    vpextrb $7, %xmm0, 7(%rdi)6990; AVX512F-NEXT:    testl $256, %eax # imm = 0x1006991; AVX512F-NEXT:    je .LBB15_186992; AVX512F-NEXT:  .LBB15_17: # %cond.store156993; AVX512F-NEXT:    vpextrb $8, %xmm0, 8(%rdi)6994; AVX512F-NEXT:    testl $512, %eax # imm = 0x2006995; AVX512F-NEXT:    je .LBB15_206996; AVX512F-NEXT:  .LBB15_19: # %cond.store176997; AVX512F-NEXT:    vpextrb $9, %xmm0, 9(%rdi)6998; AVX512F-NEXT:    testl $1024, %eax # imm = 0x4006999; AVX512F-NEXT:    je .LBB15_227000; AVX512F-NEXT:  .LBB15_21: # %cond.store197001; AVX512F-NEXT:    vpextrb $10, %xmm0, 10(%rdi)7002; AVX512F-NEXT:    testl $2048, %eax # imm = 0x8007003; AVX512F-NEXT:    je .LBB15_247004; AVX512F-NEXT:  .LBB15_23: # %cond.store217005; AVX512F-NEXT:    vpextrb $11, %xmm0, 11(%rdi)7006; AVX512F-NEXT:    testl $4096, %eax # imm = 0x10007007; AVX512F-NEXT:    je .LBB15_267008; AVX512F-NEXT:  .LBB15_25: # %cond.store237009; AVX512F-NEXT:    vpextrb $12, %xmm0, 12(%rdi)7010; AVX512F-NEXT:    testl $8192, %eax # imm = 0x20007011; AVX512F-NEXT:    je .LBB15_287012; AVX512F-NEXT:  .LBB15_27: # %cond.store257013; AVX512F-NEXT:    vpextrb $13, %xmm0, 13(%rdi)7014; AVX512F-NEXT:    testl $16384, %eax # imm = 0x40007015; AVX512F-NEXT:    je .LBB15_307016; AVX512F-NEXT:  .LBB15_29: # %cond.store277017; AVX512F-NEXT:    vpextrb $14, %xmm0, 14(%rdi)7018; AVX512F-NEXT:    testw %ax, %ax7019; AVX512F-NEXT:    js .LBB15_317020; AVX512F-NEXT:    jmp .LBB15_327021; AVX512F-NEXT:  .LBB15_33: # %cond.store317022; AVX512F-NEXT:    vpextrb $0, %xmm0, 16(%rdi)7023; AVX512F-NEXT:    testl $131072, %eax # imm = 0x200007024; AVX512F-NEXT:    je .LBB15_367025; AVX512F-NEXT:  .LBB15_35: # %cond.store337026; AVX512F-NEXT:    vpextrb $1, %xmm0, 17(%rdi)7027; AVX512F-NEXT:    testl $262144, %eax # imm = 0x400007028; AVX512F-NEXT:    je .LBB15_387029; AVX512F-NEXT:  .LBB15_37: # %cond.store357030; AVX512F-NEXT:    vpextrb $2, %xmm0, 18(%rdi)7031; AVX512F-NEXT:    testl $524288, %eax # imm = 0x800007032; AVX512F-NEXT:    je .LBB15_407033; AVX512F-NEXT:  .LBB15_39: # %cond.store377034; AVX512F-NEXT:    vpextrb $3, %xmm0, 19(%rdi)7035; AVX512F-NEXT:    testl $1048576, %eax # imm = 0x1000007036; AVX512F-NEXT:    je .LBB15_427037; AVX512F-NEXT:  .LBB15_41: # %cond.store397038; AVX512F-NEXT:    vpextrb $4, %xmm0, 20(%rdi)7039; AVX512F-NEXT:    testl $2097152, %eax # imm = 0x2000007040; AVX512F-NEXT:    je .LBB15_447041; AVX512F-NEXT:  .LBB15_43: # %cond.store417042; AVX512F-NEXT:    vpextrb $5, %xmm0, 21(%rdi)7043; AVX512F-NEXT:    testl $4194304, %eax # imm = 0x4000007044; AVX512F-NEXT:    je .LBB15_467045; AVX512F-NEXT:  .LBB15_45: # %cond.store437046; AVX512F-NEXT:    vpextrb $6, %xmm0, 22(%rdi)7047; AVX512F-NEXT:    testl $8388608, %eax # imm = 0x8000007048; AVX512F-NEXT:    je .LBB15_487049; AVX512F-NEXT:  .LBB15_47: # %cond.store457050; AVX512F-NEXT:    vpextrb $7, %xmm0, 23(%rdi)7051; AVX512F-NEXT:    testl $16777216, %eax # imm = 0x10000007052; AVX512F-NEXT:    je .LBB15_507053; AVX512F-NEXT:  .LBB15_49: # %cond.store477054; AVX512F-NEXT:    vpextrb $8, %xmm0, 24(%rdi)7055; AVX512F-NEXT:    testl $33554432, %eax # imm = 0x20000007056; AVX512F-NEXT:    je .LBB15_527057; AVX512F-NEXT:  .LBB15_51: # %cond.store497058; AVX512F-NEXT:    vpextrb $9, %xmm0, 25(%rdi)7059; AVX512F-NEXT:    testl $67108864, %eax # imm = 0x40000007060; AVX512F-NEXT:    je .LBB15_547061; AVX512F-NEXT:  .LBB15_53: # %cond.store517062; AVX512F-NEXT:    vpextrb $10, %xmm0, 26(%rdi)7063; AVX512F-NEXT:    testl $134217728, %eax # imm = 0x80000007064; AVX512F-NEXT:    je .LBB15_567065; AVX512F-NEXT:  .LBB15_55: # %cond.store537066; AVX512F-NEXT:    vpextrb $11, %xmm0, 27(%rdi)7067; AVX512F-NEXT:    testl $268435456, %eax # imm = 0x100000007068; AVX512F-NEXT:    je .LBB15_587069; AVX512F-NEXT:  .LBB15_57: # %cond.store557070; AVX512F-NEXT:    vpextrb $12, %xmm0, 28(%rdi)7071; AVX512F-NEXT:    testl $536870912, %eax # imm = 0x200000007072; AVX512F-NEXT:    je .LBB15_607073; AVX512F-NEXT:  .LBB15_59: # %cond.store577074; AVX512F-NEXT:    vpextrb $13, %xmm0, 29(%rdi)7075; AVX512F-NEXT:    testl $1073741824, %eax # imm = 0x400000007076; AVX512F-NEXT:    je .LBB15_627077; AVX512F-NEXT:  .LBB15_61: # %cond.store597078; AVX512F-NEXT:    vpextrb $14, %xmm0, 30(%rdi)7079; AVX512F-NEXT:    testl $-2147483648, %eax # imm = 0x800000007080; AVX512F-NEXT:    je .LBB15_647081; AVX512F-NEXT:  .LBB15_63: # %cond.store617082; AVX512F-NEXT:    vpextrb $15, %xmm0, 31(%rdi)7083; AVX512F-NEXT:    vzeroupper7084; AVX512F-NEXT:    retq7085;7086; AVX512FVL-LABEL: truncstore_v32i16_v32i8:7087; AVX512FVL:       # %bb.0:7088; AVX512FVL-NEXT:    vpxor %xmm2, %xmm2, %xmm27089; AVX512FVL-NEXT:    vpcmpeqb %ymm2, %ymm1, %ymm17090; AVX512FVL-NEXT:    vextracti64x4 $1, %zmm0, %ymm27091; AVX512FVL-NEXT:    vpacksswb %ymm2, %ymm0, %ymm07092; AVX512FVL-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]7093; AVX512FVL-NEXT:    vpmovmskb %ymm1, %eax7094; AVX512FVL-NEXT:    notl %eax7095; AVX512FVL-NEXT:    testb $1, %al7096; AVX512FVL-NEXT:    jne .LBB15_17097; AVX512FVL-NEXT:  # %bb.2: # %else7098; AVX512FVL-NEXT:    testb $2, %al7099; AVX512FVL-NEXT:    jne .LBB15_37100; AVX512FVL-NEXT:  .LBB15_4: # %else27101; AVX512FVL-NEXT:    testb $4, %al7102; AVX512FVL-NEXT:    jne .LBB15_57103; AVX512FVL-NEXT:  .LBB15_6: # %else47104; AVX512FVL-NEXT:    testb $8, %al7105; AVX512FVL-NEXT:    jne .LBB15_77106; AVX512FVL-NEXT:  .LBB15_8: # %else67107; AVX512FVL-NEXT:    testb $16, %al7108; AVX512FVL-NEXT:    jne .LBB15_97109; AVX512FVL-NEXT:  .LBB15_10: # %else87110; AVX512FVL-NEXT:    testb $32, %al7111; AVX512FVL-NEXT:    jne .LBB15_117112; AVX512FVL-NEXT:  .LBB15_12: # %else107113; AVX512FVL-NEXT:    testb $64, %al7114; AVX512FVL-NEXT:    jne .LBB15_137115; AVX512FVL-NEXT:  .LBB15_14: # %else127116; AVX512FVL-NEXT:    testb %al, %al7117; AVX512FVL-NEXT:    js .LBB15_157118; AVX512FVL-NEXT:  .LBB15_16: # %else147119; AVX512FVL-NEXT:    testl $256, %eax # imm = 0x1007120; AVX512FVL-NEXT:    jne .LBB15_177121; AVX512FVL-NEXT:  .LBB15_18: # %else167122; AVX512FVL-NEXT:    testl $512, %eax # imm = 0x2007123; AVX512FVL-NEXT:    jne .LBB15_197124; AVX512FVL-NEXT:  .LBB15_20: # %else187125; AVX512FVL-NEXT:    testl $1024, %eax # imm = 0x4007126; AVX512FVL-NEXT:    jne .LBB15_217127; AVX512FVL-NEXT:  .LBB15_22: # %else207128; AVX512FVL-NEXT:    testl $2048, %eax # imm = 0x8007129; AVX512FVL-NEXT:    jne .LBB15_237130; AVX512FVL-NEXT:  .LBB15_24: # %else227131; AVX512FVL-NEXT:    testl $4096, %eax # imm = 0x10007132; AVX512FVL-NEXT:    jne .LBB15_257133; AVX512FVL-NEXT:  .LBB15_26: # %else247134; AVX512FVL-NEXT:    testl $8192, %eax # imm = 0x20007135; AVX512FVL-NEXT:    jne .LBB15_277136; AVX512FVL-NEXT:  .LBB15_28: # %else267137; AVX512FVL-NEXT:    testl $16384, %eax # imm = 0x40007138; AVX512FVL-NEXT:    jne .LBB15_297139; AVX512FVL-NEXT:  .LBB15_30: # %else287140; AVX512FVL-NEXT:    testw %ax, %ax7141; AVX512FVL-NEXT:    jns .LBB15_327142; AVX512FVL-NEXT:  .LBB15_31: # %cond.store297143; AVX512FVL-NEXT:    vpextrb $15, %xmm0, 15(%rdi)7144; AVX512FVL-NEXT:  .LBB15_32: # %else307145; AVX512FVL-NEXT:    testl $65536, %eax # imm = 0x100007146; AVX512FVL-NEXT:    vextracti128 $1, %ymm0, %xmm07147; AVX512FVL-NEXT:    jne .LBB15_337148; AVX512FVL-NEXT:  # %bb.34: # %else327149; AVX512FVL-NEXT:    testl $131072, %eax # imm = 0x200007150; AVX512FVL-NEXT:    jne .LBB15_357151; AVX512FVL-NEXT:  .LBB15_36: # %else347152; AVX512FVL-NEXT:    testl $262144, %eax # imm = 0x400007153; AVX512FVL-NEXT:    jne .LBB15_377154; AVX512FVL-NEXT:  .LBB15_38: # %else367155; AVX512FVL-NEXT:    testl $524288, %eax # imm = 0x800007156; AVX512FVL-NEXT:    jne .LBB15_397157; AVX512FVL-NEXT:  .LBB15_40: # %else387158; AVX512FVL-NEXT:    testl $1048576, %eax # imm = 0x1000007159; AVX512FVL-NEXT:    jne .LBB15_417160; AVX512FVL-NEXT:  .LBB15_42: # %else407161; AVX512FVL-NEXT:    testl $2097152, %eax # imm = 0x2000007162; AVX512FVL-NEXT:    jne .LBB15_437163; AVX512FVL-NEXT:  .LBB15_44: # %else427164; AVX512FVL-NEXT:    testl $4194304, %eax # imm = 0x4000007165; AVX512FVL-NEXT:    jne .LBB15_457166; AVX512FVL-NEXT:  .LBB15_46: # %else447167; AVX512FVL-NEXT:    testl $8388608, %eax # imm = 0x8000007168; AVX512FVL-NEXT:    jne .LBB15_477169; AVX512FVL-NEXT:  .LBB15_48: # %else467170; AVX512FVL-NEXT:    testl $16777216, %eax # imm = 0x10000007171; AVX512FVL-NEXT:    jne .LBB15_497172; AVX512FVL-NEXT:  .LBB15_50: # %else487173; AVX512FVL-NEXT:    testl $33554432, %eax # imm = 0x20000007174; AVX512FVL-NEXT:    jne .LBB15_517175; AVX512FVL-NEXT:  .LBB15_52: # %else507176; AVX512FVL-NEXT:    testl $67108864, %eax # imm = 0x40000007177; AVX512FVL-NEXT:    jne .LBB15_537178; AVX512FVL-NEXT:  .LBB15_54: # %else527179; AVX512FVL-NEXT:    testl $134217728, %eax # imm = 0x80000007180; AVX512FVL-NEXT:    jne .LBB15_557181; AVX512FVL-NEXT:  .LBB15_56: # %else547182; AVX512FVL-NEXT:    testl $268435456, %eax # imm = 0x100000007183; AVX512FVL-NEXT:    jne .LBB15_577184; AVX512FVL-NEXT:  .LBB15_58: # %else567185; AVX512FVL-NEXT:    testl $536870912, %eax # imm = 0x200000007186; AVX512FVL-NEXT:    jne .LBB15_597187; AVX512FVL-NEXT:  .LBB15_60: # %else587188; AVX512FVL-NEXT:    testl $1073741824, %eax # imm = 0x400000007189; AVX512FVL-NEXT:    jne .LBB15_617190; AVX512FVL-NEXT:  .LBB15_62: # %else607191; AVX512FVL-NEXT:    testl $-2147483648, %eax # imm = 0x800000007192; AVX512FVL-NEXT:    jne .LBB15_637193; AVX512FVL-NEXT:  .LBB15_64: # %else627194; AVX512FVL-NEXT:    vzeroupper7195; AVX512FVL-NEXT:    retq7196; AVX512FVL-NEXT:  .LBB15_1: # %cond.store7197; AVX512FVL-NEXT:    vpextrb $0, %xmm0, (%rdi)7198; AVX512FVL-NEXT:    testb $2, %al7199; AVX512FVL-NEXT:    je .LBB15_47200; AVX512FVL-NEXT:  .LBB15_3: # %cond.store17201; AVX512FVL-NEXT:    vpextrb $1, %xmm0, 1(%rdi)7202; AVX512FVL-NEXT:    testb $4, %al7203; AVX512FVL-NEXT:    je .LBB15_67204; AVX512FVL-NEXT:  .LBB15_5: # %cond.store37205; AVX512FVL-NEXT:    vpextrb $2, %xmm0, 2(%rdi)7206; AVX512FVL-NEXT:    testb $8, %al7207; AVX512FVL-NEXT:    je .LBB15_87208; AVX512FVL-NEXT:  .LBB15_7: # %cond.store57209; AVX512FVL-NEXT:    vpextrb $3, %xmm0, 3(%rdi)7210; AVX512FVL-NEXT:    testb $16, %al7211; AVX512FVL-NEXT:    je .LBB15_107212; AVX512FVL-NEXT:  .LBB15_9: # %cond.store77213; AVX512FVL-NEXT:    vpextrb $4, %xmm0, 4(%rdi)7214; AVX512FVL-NEXT:    testb $32, %al7215; AVX512FVL-NEXT:    je .LBB15_127216; AVX512FVL-NEXT:  .LBB15_11: # %cond.store97217; AVX512FVL-NEXT:    vpextrb $5, %xmm0, 5(%rdi)7218; AVX512FVL-NEXT:    testb $64, %al7219; AVX512FVL-NEXT:    je .LBB15_147220; AVX512FVL-NEXT:  .LBB15_13: # %cond.store117221; AVX512FVL-NEXT:    vpextrb $6, %xmm0, 6(%rdi)7222; AVX512FVL-NEXT:    testb %al, %al7223; AVX512FVL-NEXT:    jns .LBB15_167224; AVX512FVL-NEXT:  .LBB15_15: # %cond.store137225; AVX512FVL-NEXT:    vpextrb $7, %xmm0, 7(%rdi)7226; AVX512FVL-NEXT:    testl $256, %eax # imm = 0x1007227; AVX512FVL-NEXT:    je .LBB15_187228; AVX512FVL-NEXT:  .LBB15_17: # %cond.store157229; AVX512FVL-NEXT:    vpextrb $8, %xmm0, 8(%rdi)7230; AVX512FVL-NEXT:    testl $512, %eax # imm = 0x2007231; AVX512FVL-NEXT:    je .LBB15_207232; AVX512FVL-NEXT:  .LBB15_19: # %cond.store177233; AVX512FVL-NEXT:    vpextrb $9, %xmm0, 9(%rdi)7234; AVX512FVL-NEXT:    testl $1024, %eax # imm = 0x4007235; AVX512FVL-NEXT:    je .LBB15_227236; AVX512FVL-NEXT:  .LBB15_21: # %cond.store197237; AVX512FVL-NEXT:    vpextrb $10, %xmm0, 10(%rdi)7238; AVX512FVL-NEXT:    testl $2048, %eax # imm = 0x8007239; AVX512FVL-NEXT:    je .LBB15_247240; AVX512FVL-NEXT:  .LBB15_23: # %cond.store217241; AVX512FVL-NEXT:    vpextrb $11, %xmm0, 11(%rdi)7242; AVX512FVL-NEXT:    testl $4096, %eax # imm = 0x10007243; AVX512FVL-NEXT:    je .LBB15_267244; AVX512FVL-NEXT:  .LBB15_25: # %cond.store237245; AVX512FVL-NEXT:    vpextrb $12, %xmm0, 12(%rdi)7246; AVX512FVL-NEXT:    testl $8192, %eax # imm = 0x20007247; AVX512FVL-NEXT:    je .LBB15_287248; AVX512FVL-NEXT:  .LBB15_27: # %cond.store257249; AVX512FVL-NEXT:    vpextrb $13, %xmm0, 13(%rdi)7250; AVX512FVL-NEXT:    testl $16384, %eax # imm = 0x40007251; AVX512FVL-NEXT:    je .LBB15_307252; AVX512FVL-NEXT:  .LBB15_29: # %cond.store277253; AVX512FVL-NEXT:    vpextrb $14, %xmm0, 14(%rdi)7254; AVX512FVL-NEXT:    testw %ax, %ax7255; AVX512FVL-NEXT:    js .LBB15_317256; AVX512FVL-NEXT:    jmp .LBB15_327257; AVX512FVL-NEXT:  .LBB15_33: # %cond.store317258; AVX512FVL-NEXT:    vpextrb $0, %xmm0, 16(%rdi)7259; AVX512FVL-NEXT:    testl $131072, %eax # imm = 0x200007260; AVX512FVL-NEXT:    je .LBB15_367261; AVX512FVL-NEXT:  .LBB15_35: # %cond.store337262; AVX512FVL-NEXT:    vpextrb $1, %xmm0, 17(%rdi)7263; AVX512FVL-NEXT:    testl $262144, %eax # imm = 0x400007264; AVX512FVL-NEXT:    je .LBB15_387265; AVX512FVL-NEXT:  .LBB15_37: # %cond.store357266; AVX512FVL-NEXT:    vpextrb $2, %xmm0, 18(%rdi)7267; AVX512FVL-NEXT:    testl $524288, %eax # imm = 0x800007268; AVX512FVL-NEXT:    je .LBB15_407269; AVX512FVL-NEXT:  .LBB15_39: # %cond.store377270; AVX512FVL-NEXT:    vpextrb $3, %xmm0, 19(%rdi)7271; AVX512FVL-NEXT:    testl $1048576, %eax # imm = 0x1000007272; AVX512FVL-NEXT:    je .LBB15_427273; AVX512FVL-NEXT:  .LBB15_41: # %cond.store397274; AVX512FVL-NEXT:    vpextrb $4, %xmm0, 20(%rdi)7275; AVX512FVL-NEXT:    testl $2097152, %eax # imm = 0x2000007276; AVX512FVL-NEXT:    je .LBB15_447277; AVX512FVL-NEXT:  .LBB15_43: # %cond.store417278; AVX512FVL-NEXT:    vpextrb $5, %xmm0, 21(%rdi)7279; AVX512FVL-NEXT:    testl $4194304, %eax # imm = 0x4000007280; AVX512FVL-NEXT:    je .LBB15_467281; AVX512FVL-NEXT:  .LBB15_45: # %cond.store437282; AVX512FVL-NEXT:    vpextrb $6, %xmm0, 22(%rdi)7283; AVX512FVL-NEXT:    testl $8388608, %eax # imm = 0x8000007284; AVX512FVL-NEXT:    je .LBB15_487285; AVX512FVL-NEXT:  .LBB15_47: # %cond.store457286; AVX512FVL-NEXT:    vpextrb $7, %xmm0, 23(%rdi)7287; AVX512FVL-NEXT:    testl $16777216, %eax # imm = 0x10000007288; AVX512FVL-NEXT:    je .LBB15_507289; AVX512FVL-NEXT:  .LBB15_49: # %cond.store477290; AVX512FVL-NEXT:    vpextrb $8, %xmm0, 24(%rdi)7291; AVX512FVL-NEXT:    testl $33554432, %eax # imm = 0x20000007292; AVX512FVL-NEXT:    je .LBB15_527293; AVX512FVL-NEXT:  .LBB15_51: # %cond.store497294; AVX512FVL-NEXT:    vpextrb $9, %xmm0, 25(%rdi)7295; AVX512FVL-NEXT:    testl $67108864, %eax # imm = 0x40000007296; AVX512FVL-NEXT:    je .LBB15_547297; AVX512FVL-NEXT:  .LBB15_53: # %cond.store517298; AVX512FVL-NEXT:    vpextrb $10, %xmm0, 26(%rdi)7299; AVX512FVL-NEXT:    testl $134217728, %eax # imm = 0x80000007300; AVX512FVL-NEXT:    je .LBB15_567301; AVX512FVL-NEXT:  .LBB15_55: # %cond.store537302; AVX512FVL-NEXT:    vpextrb $11, %xmm0, 27(%rdi)7303; AVX512FVL-NEXT:    testl $268435456, %eax # imm = 0x100000007304; AVX512FVL-NEXT:    je .LBB15_587305; AVX512FVL-NEXT:  .LBB15_57: # %cond.store557306; AVX512FVL-NEXT:    vpextrb $12, %xmm0, 28(%rdi)7307; AVX512FVL-NEXT:    testl $536870912, %eax # imm = 0x200000007308; AVX512FVL-NEXT:    je .LBB15_607309; AVX512FVL-NEXT:  .LBB15_59: # %cond.store577310; AVX512FVL-NEXT:    vpextrb $13, %xmm0, 29(%rdi)7311; AVX512FVL-NEXT:    testl $1073741824, %eax # imm = 0x400000007312; AVX512FVL-NEXT:    je .LBB15_627313; AVX512FVL-NEXT:  .LBB15_61: # %cond.store597314; AVX512FVL-NEXT:    vpextrb $14, %xmm0, 30(%rdi)7315; AVX512FVL-NEXT:    testl $-2147483648, %eax # imm = 0x800000007316; AVX512FVL-NEXT:    je .LBB15_647317; AVX512FVL-NEXT:  .LBB15_63: # %cond.store617318; AVX512FVL-NEXT:    vpextrb $15, %xmm0, 31(%rdi)7319; AVX512FVL-NEXT:    vzeroupper7320; AVX512FVL-NEXT:    retq7321;7322; AVX512BW-LABEL: truncstore_v32i16_v32i8:7323; AVX512BW:       # %bb.0:7324; AVX512BW-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm17325; AVX512BW-NEXT:    vptestmb %zmm1, %zmm1, %k17326; AVX512BW-NEXT:    vpminsw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %zmm07327; AVX512BW-NEXT:    vpmaxsw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %zmm07328; AVX512BW-NEXT:    vpmovwb %zmm0, (%rdi) {%k1}7329; AVX512BW-NEXT:    vzeroupper7330; AVX512BW-NEXT:    retq7331;7332; AVX512BWVL-LABEL: truncstore_v32i16_v32i8:7333; AVX512BWVL:       # %bb.0:7334; AVX512BWVL-NEXT:    vptestmb %ymm1, %ymm1, %k17335; AVX512BWVL-NEXT:    vpminsw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %zmm07336; AVX512BWVL-NEXT:    vpmaxsw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %zmm07337; AVX512BWVL-NEXT:    vpmovwb %zmm0, (%rdi) {%k1}7338; AVX512BWVL-NEXT:    vzeroupper7339; AVX512BWVL-NEXT:    retq7340  %a = icmp ne <32 x i8> %mask, zeroinitializer7341  %b = icmp slt <32 x i16> %x, <i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127>7342  %c = select <32 x i1> %b, <32 x i16> %x, <32 x i16> <i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127>7343  %d = icmp sgt <32 x i16> %c, <i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128>7344  %e = select <32 x i1> %d, <32 x i16> %c, <32 x i16> <i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128>7345  %f = trunc <32 x i16> %e to <32 x i8>7346  call void @llvm.masked.store.v32i8.p0(<32 x i8> %f, ptr %p, i32 1, <32 x i1> %a)7347  ret void7348}7349 7350define void @truncstore_v16i16_v16i8(<16 x i16> %x, ptr %p, <16 x i8> %mask) {7351; SSE2-LABEL: truncstore_v16i16_v16i8:7352; SSE2:       # %bb.0:7353; SSE2-NEXT:    pxor %xmm3, %xmm37354; SSE2-NEXT:    packsswb %xmm1, %xmm07355; SSE2-NEXT:    pcmpeqb %xmm2, %xmm37356; SSE2-NEXT:    pmovmskb %xmm3, %eax7357; SSE2-NEXT:    xorl $65535, %eax # imm = 0xFFFF7358; SSE2-NEXT:    testb $1, %al7359; SSE2-NEXT:    movd %xmm0, %ecx7360; SSE2-NEXT:    jne .LBB16_17361; SSE2-NEXT:  # %bb.2: # %else7362; SSE2-NEXT:    testb $2, %al7363; SSE2-NEXT:    jne .LBB16_37364; SSE2-NEXT:  .LBB16_4: # %else27365; SSE2-NEXT:    testb $4, %al7366; SSE2-NEXT:    jne .LBB16_57367; SSE2-NEXT:  .LBB16_6: # %else47368; SSE2-NEXT:    testb $8, %al7369; SSE2-NEXT:    je .LBB16_87370; SSE2-NEXT:  .LBB16_7: # %cond.store57371; SSE2-NEXT:    shrl $24, %ecx7372; SSE2-NEXT:    movb %cl, 3(%rdi)7373; SSE2-NEXT:  .LBB16_8: # %else67374; SSE2-NEXT:    testb $16, %al7375; SSE2-NEXT:    pextrw $2, %xmm0, %ecx7376; SSE2-NEXT:    je .LBB16_107377; SSE2-NEXT:  # %bb.9: # %cond.store77378; SSE2-NEXT:    movb %cl, 4(%rdi)7379; SSE2-NEXT:  .LBB16_10: # %else87380; SSE2-NEXT:    testb $32, %al7381; SSE2-NEXT:    je .LBB16_127382; SSE2-NEXT:  # %bb.11: # %cond.store97383; SSE2-NEXT:    movb %ch, 5(%rdi)7384; SSE2-NEXT:  .LBB16_12: # %else107385; SSE2-NEXT:    testb $64, %al7386; SSE2-NEXT:    pextrw $3, %xmm0, %ecx7387; SSE2-NEXT:    je .LBB16_147388; SSE2-NEXT:  # %bb.13: # %cond.store117389; SSE2-NEXT:    movb %cl, 6(%rdi)7390; SSE2-NEXT:  .LBB16_14: # %else127391; SSE2-NEXT:    testb %al, %al7392; SSE2-NEXT:    jns .LBB16_167393; SSE2-NEXT:  # %bb.15: # %cond.store137394; SSE2-NEXT:    movb %ch, 7(%rdi)7395; SSE2-NEXT:  .LBB16_16: # %else147396; SSE2-NEXT:    testl $256, %eax # imm = 0x1007397; SSE2-NEXT:    pextrw $4, %xmm0, %ecx7398; SSE2-NEXT:    je .LBB16_187399; SSE2-NEXT:  # %bb.17: # %cond.store157400; SSE2-NEXT:    movb %cl, 8(%rdi)7401; SSE2-NEXT:  .LBB16_18: # %else167402; SSE2-NEXT:    testl $512, %eax # imm = 0x2007403; SSE2-NEXT:    je .LBB16_207404; SSE2-NEXT:  # %bb.19: # %cond.store177405; SSE2-NEXT:    movb %ch, 9(%rdi)7406; SSE2-NEXT:  .LBB16_20: # %else187407; SSE2-NEXT:    testl $1024, %eax # imm = 0x4007408; SSE2-NEXT:    pextrw $5, %xmm0, %ecx7409; SSE2-NEXT:    je .LBB16_227410; SSE2-NEXT:  # %bb.21: # %cond.store197411; SSE2-NEXT:    movb %cl, 10(%rdi)7412; SSE2-NEXT:  .LBB16_22: # %else207413; SSE2-NEXT:    testl $2048, %eax # imm = 0x8007414; SSE2-NEXT:    je .LBB16_247415; SSE2-NEXT:  # %bb.23: # %cond.store217416; SSE2-NEXT:    movb %ch, 11(%rdi)7417; SSE2-NEXT:  .LBB16_24: # %else227418; SSE2-NEXT:    testl $4096, %eax # imm = 0x10007419; SSE2-NEXT:    pextrw $6, %xmm0, %ecx7420; SSE2-NEXT:    je .LBB16_267421; SSE2-NEXT:  # %bb.25: # %cond.store237422; SSE2-NEXT:    movb %cl, 12(%rdi)7423; SSE2-NEXT:  .LBB16_26: # %else247424; SSE2-NEXT:    testl $8192, %eax # imm = 0x20007425; SSE2-NEXT:    je .LBB16_287426; SSE2-NEXT:  # %bb.27: # %cond.store257427; SSE2-NEXT:    movb %ch, 13(%rdi)7428; SSE2-NEXT:  .LBB16_28: # %else267429; SSE2-NEXT:    testl $16384, %eax # imm = 0x40007430; SSE2-NEXT:    pextrw $7, %xmm0, %ecx7431; SSE2-NEXT:    jne .LBB16_297432; SSE2-NEXT:  # %bb.30: # %else287433; SSE2-NEXT:    testl $32768, %eax # imm = 0x80007434; SSE2-NEXT:    jne .LBB16_317435; SSE2-NEXT:  .LBB16_32: # %else307436; SSE2-NEXT:    retq7437; SSE2-NEXT:  .LBB16_1: # %cond.store7438; SSE2-NEXT:    movb %cl, (%rdi)7439; SSE2-NEXT:    testb $2, %al7440; SSE2-NEXT:    je .LBB16_47441; SSE2-NEXT:  .LBB16_3: # %cond.store17442; SSE2-NEXT:    movb %ch, 1(%rdi)7443; SSE2-NEXT:    testb $4, %al7444; SSE2-NEXT:    je .LBB16_67445; SSE2-NEXT:  .LBB16_5: # %cond.store37446; SSE2-NEXT:    movl %ecx, %edx7447; SSE2-NEXT:    shrl $16, %edx7448; SSE2-NEXT:    movb %dl, 2(%rdi)7449; SSE2-NEXT:    testb $8, %al7450; SSE2-NEXT:    jne .LBB16_77451; SSE2-NEXT:    jmp .LBB16_87452; SSE2-NEXT:  .LBB16_29: # %cond.store277453; SSE2-NEXT:    movb %cl, 14(%rdi)7454; SSE2-NEXT:    testl $32768, %eax # imm = 0x80007455; SSE2-NEXT:    je .LBB16_327456; SSE2-NEXT:  .LBB16_31: # %cond.store297457; SSE2-NEXT:    movb %ch, 15(%rdi)7458; SSE2-NEXT:    retq7459;7460; SSE4-LABEL: truncstore_v16i16_v16i8:7461; SSE4:       # %bb.0:7462; SSE4-NEXT:    pxor %xmm3, %xmm37463; SSE4-NEXT:    packsswb %xmm1, %xmm07464; SSE4-NEXT:    pcmpeqb %xmm2, %xmm37465; SSE4-NEXT:    pmovmskb %xmm3, %eax7466; SSE4-NEXT:    xorl $65535, %eax # imm = 0xFFFF7467; SSE4-NEXT:    testb $1, %al7468; SSE4-NEXT:    jne .LBB16_17469; SSE4-NEXT:  # %bb.2: # %else7470; SSE4-NEXT:    testb $2, %al7471; SSE4-NEXT:    jne .LBB16_37472; SSE4-NEXT:  .LBB16_4: # %else27473; SSE4-NEXT:    testb $4, %al7474; SSE4-NEXT:    jne .LBB16_57475; SSE4-NEXT:  .LBB16_6: # %else47476; SSE4-NEXT:    testb $8, %al7477; SSE4-NEXT:    jne .LBB16_77478; SSE4-NEXT:  .LBB16_8: # %else67479; SSE4-NEXT:    testb $16, %al7480; SSE4-NEXT:    jne .LBB16_97481; SSE4-NEXT:  .LBB16_10: # %else87482; SSE4-NEXT:    testb $32, %al7483; SSE4-NEXT:    jne .LBB16_117484; SSE4-NEXT:  .LBB16_12: # %else107485; SSE4-NEXT:    testb $64, %al7486; SSE4-NEXT:    jne .LBB16_137487; SSE4-NEXT:  .LBB16_14: # %else127488; SSE4-NEXT:    testb %al, %al7489; SSE4-NEXT:    js .LBB16_157490; SSE4-NEXT:  .LBB16_16: # %else147491; SSE4-NEXT:    testl $256, %eax # imm = 0x1007492; SSE4-NEXT:    jne .LBB16_177493; SSE4-NEXT:  .LBB16_18: # %else167494; SSE4-NEXT:    testl $512, %eax # imm = 0x2007495; SSE4-NEXT:    jne .LBB16_197496; SSE4-NEXT:  .LBB16_20: # %else187497; SSE4-NEXT:    testl $1024, %eax # imm = 0x4007498; SSE4-NEXT:    jne .LBB16_217499; SSE4-NEXT:  .LBB16_22: # %else207500; SSE4-NEXT:    testl $2048, %eax # imm = 0x8007501; SSE4-NEXT:    jne .LBB16_237502; SSE4-NEXT:  .LBB16_24: # %else227503; SSE4-NEXT:    testl $4096, %eax # imm = 0x10007504; SSE4-NEXT:    jne .LBB16_257505; SSE4-NEXT:  .LBB16_26: # %else247506; SSE4-NEXT:    testl $8192, %eax # imm = 0x20007507; SSE4-NEXT:    jne .LBB16_277508; SSE4-NEXT:  .LBB16_28: # %else267509; SSE4-NEXT:    testl $16384, %eax # imm = 0x40007510; SSE4-NEXT:    jne .LBB16_297511; SSE4-NEXT:  .LBB16_30: # %else287512; SSE4-NEXT:    testl $32768, %eax # imm = 0x80007513; SSE4-NEXT:    jne .LBB16_317514; SSE4-NEXT:  .LBB16_32: # %else307515; SSE4-NEXT:    retq7516; SSE4-NEXT:  .LBB16_1: # %cond.store7517; SSE4-NEXT:    pextrb $0, %xmm0, (%rdi)7518; SSE4-NEXT:    testb $2, %al7519; SSE4-NEXT:    je .LBB16_47520; SSE4-NEXT:  .LBB16_3: # %cond.store17521; SSE4-NEXT:    pextrb $1, %xmm0, 1(%rdi)7522; SSE4-NEXT:    testb $4, %al7523; SSE4-NEXT:    je .LBB16_67524; SSE4-NEXT:  .LBB16_5: # %cond.store37525; SSE4-NEXT:    pextrb $2, %xmm0, 2(%rdi)7526; SSE4-NEXT:    testb $8, %al7527; SSE4-NEXT:    je .LBB16_87528; SSE4-NEXT:  .LBB16_7: # %cond.store57529; SSE4-NEXT:    pextrb $3, %xmm0, 3(%rdi)7530; SSE4-NEXT:    testb $16, %al7531; SSE4-NEXT:    je .LBB16_107532; SSE4-NEXT:  .LBB16_9: # %cond.store77533; SSE4-NEXT:    pextrb $4, %xmm0, 4(%rdi)7534; SSE4-NEXT:    testb $32, %al7535; SSE4-NEXT:    je .LBB16_127536; SSE4-NEXT:  .LBB16_11: # %cond.store97537; SSE4-NEXT:    pextrb $5, %xmm0, 5(%rdi)7538; SSE4-NEXT:    testb $64, %al7539; SSE4-NEXT:    je .LBB16_147540; SSE4-NEXT:  .LBB16_13: # %cond.store117541; SSE4-NEXT:    pextrb $6, %xmm0, 6(%rdi)7542; SSE4-NEXT:    testb %al, %al7543; SSE4-NEXT:    jns .LBB16_167544; SSE4-NEXT:  .LBB16_15: # %cond.store137545; SSE4-NEXT:    pextrb $7, %xmm0, 7(%rdi)7546; SSE4-NEXT:    testl $256, %eax # imm = 0x1007547; SSE4-NEXT:    je .LBB16_187548; SSE4-NEXT:  .LBB16_17: # %cond.store157549; SSE4-NEXT:    pextrb $8, %xmm0, 8(%rdi)7550; SSE4-NEXT:    testl $512, %eax # imm = 0x2007551; SSE4-NEXT:    je .LBB16_207552; SSE4-NEXT:  .LBB16_19: # %cond.store177553; SSE4-NEXT:    pextrb $9, %xmm0, 9(%rdi)7554; SSE4-NEXT:    testl $1024, %eax # imm = 0x4007555; SSE4-NEXT:    je .LBB16_227556; SSE4-NEXT:  .LBB16_21: # %cond.store197557; SSE4-NEXT:    pextrb $10, %xmm0, 10(%rdi)7558; SSE4-NEXT:    testl $2048, %eax # imm = 0x8007559; SSE4-NEXT:    je .LBB16_247560; SSE4-NEXT:  .LBB16_23: # %cond.store217561; SSE4-NEXT:    pextrb $11, %xmm0, 11(%rdi)7562; SSE4-NEXT:    testl $4096, %eax # imm = 0x10007563; SSE4-NEXT:    je .LBB16_267564; SSE4-NEXT:  .LBB16_25: # %cond.store237565; SSE4-NEXT:    pextrb $12, %xmm0, 12(%rdi)7566; SSE4-NEXT:    testl $8192, %eax # imm = 0x20007567; SSE4-NEXT:    je .LBB16_287568; SSE4-NEXT:  .LBB16_27: # %cond.store257569; SSE4-NEXT:    pextrb $13, %xmm0, 13(%rdi)7570; SSE4-NEXT:    testl $16384, %eax # imm = 0x40007571; SSE4-NEXT:    je .LBB16_307572; SSE4-NEXT:  .LBB16_29: # %cond.store277573; SSE4-NEXT:    pextrb $14, %xmm0, 14(%rdi)7574; SSE4-NEXT:    testl $32768, %eax # imm = 0x80007575; SSE4-NEXT:    je .LBB16_327576; SSE4-NEXT:  .LBB16_31: # %cond.store297577; SSE4-NEXT:    pextrb $15, %xmm0, 15(%rdi)7578; SSE4-NEXT:    retq7579;7580; AVX1-LABEL: truncstore_v16i16_v16i8:7581; AVX1:       # %bb.0:7582; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm27583; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm37584; AVX1-NEXT:    vpacksswb %xmm3, %xmm0, %xmm07585; AVX1-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm17586; AVX1-NEXT:    vpmovmskb %xmm1, %eax7587; AVX1-NEXT:    xorl $65535, %eax # imm = 0xFFFF7588; AVX1-NEXT:    testb $1, %al7589; AVX1-NEXT:    jne .LBB16_17590; AVX1-NEXT:  # %bb.2: # %else7591; AVX1-NEXT:    testb $2, %al7592; AVX1-NEXT:    jne .LBB16_37593; AVX1-NEXT:  .LBB16_4: # %else27594; AVX1-NEXT:    testb $4, %al7595; AVX1-NEXT:    jne .LBB16_57596; AVX1-NEXT:  .LBB16_6: # %else47597; AVX1-NEXT:    testb $8, %al7598; AVX1-NEXT:    jne .LBB16_77599; AVX1-NEXT:  .LBB16_8: # %else67600; AVX1-NEXT:    testb $16, %al7601; AVX1-NEXT:    jne .LBB16_97602; AVX1-NEXT:  .LBB16_10: # %else87603; AVX1-NEXT:    testb $32, %al7604; AVX1-NEXT:    jne .LBB16_117605; AVX1-NEXT:  .LBB16_12: # %else107606; AVX1-NEXT:    testb $64, %al7607; AVX1-NEXT:    jne .LBB16_137608; AVX1-NEXT:  .LBB16_14: # %else127609; AVX1-NEXT:    testb %al, %al7610; AVX1-NEXT:    js .LBB16_157611; AVX1-NEXT:  .LBB16_16: # %else147612; AVX1-NEXT:    testl $256, %eax # imm = 0x1007613; AVX1-NEXT:    jne .LBB16_177614; AVX1-NEXT:  .LBB16_18: # %else167615; AVX1-NEXT:    testl $512, %eax # imm = 0x2007616; AVX1-NEXT:    jne .LBB16_197617; AVX1-NEXT:  .LBB16_20: # %else187618; AVX1-NEXT:    testl $1024, %eax # imm = 0x4007619; AVX1-NEXT:    jne .LBB16_217620; AVX1-NEXT:  .LBB16_22: # %else207621; AVX1-NEXT:    testl $2048, %eax # imm = 0x8007622; AVX1-NEXT:    jne .LBB16_237623; AVX1-NEXT:  .LBB16_24: # %else227624; AVX1-NEXT:    testl $4096, %eax # imm = 0x10007625; AVX1-NEXT:    jne .LBB16_257626; AVX1-NEXT:  .LBB16_26: # %else247627; AVX1-NEXT:    testl $8192, %eax # imm = 0x20007628; AVX1-NEXT:    jne .LBB16_277629; AVX1-NEXT:  .LBB16_28: # %else267630; AVX1-NEXT:    testl $16384, %eax # imm = 0x40007631; AVX1-NEXT:    jne .LBB16_297632; AVX1-NEXT:  .LBB16_30: # %else287633; AVX1-NEXT:    testl $32768, %eax # imm = 0x80007634; AVX1-NEXT:    jne .LBB16_317635; AVX1-NEXT:  .LBB16_32: # %else307636; AVX1-NEXT:    vzeroupper7637; AVX1-NEXT:    retq7638; AVX1-NEXT:  .LBB16_1: # %cond.store7639; AVX1-NEXT:    vpextrb $0, %xmm0, (%rdi)7640; AVX1-NEXT:    testb $2, %al7641; AVX1-NEXT:    je .LBB16_47642; AVX1-NEXT:  .LBB16_3: # %cond.store17643; AVX1-NEXT:    vpextrb $1, %xmm0, 1(%rdi)7644; AVX1-NEXT:    testb $4, %al7645; AVX1-NEXT:    je .LBB16_67646; AVX1-NEXT:  .LBB16_5: # %cond.store37647; AVX1-NEXT:    vpextrb $2, %xmm0, 2(%rdi)7648; AVX1-NEXT:    testb $8, %al7649; AVX1-NEXT:    je .LBB16_87650; AVX1-NEXT:  .LBB16_7: # %cond.store57651; AVX1-NEXT:    vpextrb $3, %xmm0, 3(%rdi)7652; AVX1-NEXT:    testb $16, %al7653; AVX1-NEXT:    je .LBB16_107654; AVX1-NEXT:  .LBB16_9: # %cond.store77655; AVX1-NEXT:    vpextrb $4, %xmm0, 4(%rdi)7656; AVX1-NEXT:    testb $32, %al7657; AVX1-NEXT:    je .LBB16_127658; AVX1-NEXT:  .LBB16_11: # %cond.store97659; AVX1-NEXT:    vpextrb $5, %xmm0, 5(%rdi)7660; AVX1-NEXT:    testb $64, %al7661; AVX1-NEXT:    je .LBB16_147662; AVX1-NEXT:  .LBB16_13: # %cond.store117663; AVX1-NEXT:    vpextrb $6, %xmm0, 6(%rdi)7664; AVX1-NEXT:    testb %al, %al7665; AVX1-NEXT:    jns .LBB16_167666; AVX1-NEXT:  .LBB16_15: # %cond.store137667; AVX1-NEXT:    vpextrb $7, %xmm0, 7(%rdi)7668; AVX1-NEXT:    testl $256, %eax # imm = 0x1007669; AVX1-NEXT:    je .LBB16_187670; AVX1-NEXT:  .LBB16_17: # %cond.store157671; AVX1-NEXT:    vpextrb $8, %xmm0, 8(%rdi)7672; AVX1-NEXT:    testl $512, %eax # imm = 0x2007673; AVX1-NEXT:    je .LBB16_207674; AVX1-NEXT:  .LBB16_19: # %cond.store177675; AVX1-NEXT:    vpextrb $9, %xmm0, 9(%rdi)7676; AVX1-NEXT:    testl $1024, %eax # imm = 0x4007677; AVX1-NEXT:    je .LBB16_227678; AVX1-NEXT:  .LBB16_21: # %cond.store197679; AVX1-NEXT:    vpextrb $10, %xmm0, 10(%rdi)7680; AVX1-NEXT:    testl $2048, %eax # imm = 0x8007681; AVX1-NEXT:    je .LBB16_247682; AVX1-NEXT:  .LBB16_23: # %cond.store217683; AVX1-NEXT:    vpextrb $11, %xmm0, 11(%rdi)7684; AVX1-NEXT:    testl $4096, %eax # imm = 0x10007685; AVX1-NEXT:    je .LBB16_267686; AVX1-NEXT:  .LBB16_25: # %cond.store237687; AVX1-NEXT:    vpextrb $12, %xmm0, 12(%rdi)7688; AVX1-NEXT:    testl $8192, %eax # imm = 0x20007689; AVX1-NEXT:    je .LBB16_287690; AVX1-NEXT:  .LBB16_27: # %cond.store257691; AVX1-NEXT:    vpextrb $13, %xmm0, 13(%rdi)7692; AVX1-NEXT:    testl $16384, %eax # imm = 0x40007693; AVX1-NEXT:    je .LBB16_307694; AVX1-NEXT:  .LBB16_29: # %cond.store277695; AVX1-NEXT:    vpextrb $14, %xmm0, 14(%rdi)7696; AVX1-NEXT:    testl $32768, %eax # imm = 0x80007697; AVX1-NEXT:    je .LBB16_327698; AVX1-NEXT:  .LBB16_31: # %cond.store297699; AVX1-NEXT:    vpextrb $15, %xmm0, 15(%rdi)7700; AVX1-NEXT:    vzeroupper7701; AVX1-NEXT:    retq7702;7703; AVX2-LABEL: truncstore_v16i16_v16i8:7704; AVX2:       # %bb.0:7705; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm27706; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm37707; AVX2-NEXT:    vpacksswb %xmm3, %xmm0, %xmm07708; AVX2-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm17709; AVX2-NEXT:    vpmovmskb %xmm1, %eax7710; AVX2-NEXT:    xorl $65535, %eax # imm = 0xFFFF7711; AVX2-NEXT:    testb $1, %al7712; AVX2-NEXT:    jne .LBB16_17713; AVX2-NEXT:  # %bb.2: # %else7714; AVX2-NEXT:    testb $2, %al7715; AVX2-NEXT:    jne .LBB16_37716; AVX2-NEXT:  .LBB16_4: # %else27717; AVX2-NEXT:    testb $4, %al7718; AVX2-NEXT:    jne .LBB16_57719; AVX2-NEXT:  .LBB16_6: # %else47720; AVX2-NEXT:    testb $8, %al7721; AVX2-NEXT:    jne .LBB16_77722; AVX2-NEXT:  .LBB16_8: # %else67723; AVX2-NEXT:    testb $16, %al7724; AVX2-NEXT:    jne .LBB16_97725; AVX2-NEXT:  .LBB16_10: # %else87726; AVX2-NEXT:    testb $32, %al7727; AVX2-NEXT:    jne .LBB16_117728; AVX2-NEXT:  .LBB16_12: # %else107729; AVX2-NEXT:    testb $64, %al7730; AVX2-NEXT:    jne .LBB16_137731; AVX2-NEXT:  .LBB16_14: # %else127732; AVX2-NEXT:    testb %al, %al7733; AVX2-NEXT:    js .LBB16_157734; AVX2-NEXT:  .LBB16_16: # %else147735; AVX2-NEXT:    testl $256, %eax # imm = 0x1007736; AVX2-NEXT:    jne .LBB16_177737; AVX2-NEXT:  .LBB16_18: # %else167738; AVX2-NEXT:    testl $512, %eax # imm = 0x2007739; AVX2-NEXT:    jne .LBB16_197740; AVX2-NEXT:  .LBB16_20: # %else187741; AVX2-NEXT:    testl $1024, %eax # imm = 0x4007742; AVX2-NEXT:    jne .LBB16_217743; AVX2-NEXT:  .LBB16_22: # %else207744; AVX2-NEXT:    testl $2048, %eax # imm = 0x8007745; AVX2-NEXT:    jne .LBB16_237746; AVX2-NEXT:  .LBB16_24: # %else227747; AVX2-NEXT:    testl $4096, %eax # imm = 0x10007748; AVX2-NEXT:    jne .LBB16_257749; AVX2-NEXT:  .LBB16_26: # %else247750; AVX2-NEXT:    testl $8192, %eax # imm = 0x20007751; AVX2-NEXT:    jne .LBB16_277752; AVX2-NEXT:  .LBB16_28: # %else267753; AVX2-NEXT:    testl $16384, %eax # imm = 0x40007754; AVX2-NEXT:    jne .LBB16_297755; AVX2-NEXT:  .LBB16_30: # %else287756; AVX2-NEXT:    testl $32768, %eax # imm = 0x80007757; AVX2-NEXT:    jne .LBB16_317758; AVX2-NEXT:  .LBB16_32: # %else307759; AVX2-NEXT:    vzeroupper7760; AVX2-NEXT:    retq7761; AVX2-NEXT:  .LBB16_1: # %cond.store7762; AVX2-NEXT:    vpextrb $0, %xmm0, (%rdi)7763; AVX2-NEXT:    testb $2, %al7764; AVX2-NEXT:    je .LBB16_47765; AVX2-NEXT:  .LBB16_3: # %cond.store17766; AVX2-NEXT:    vpextrb $1, %xmm0, 1(%rdi)7767; AVX2-NEXT:    testb $4, %al7768; AVX2-NEXT:    je .LBB16_67769; AVX2-NEXT:  .LBB16_5: # %cond.store37770; AVX2-NEXT:    vpextrb $2, %xmm0, 2(%rdi)7771; AVX2-NEXT:    testb $8, %al7772; AVX2-NEXT:    je .LBB16_87773; AVX2-NEXT:  .LBB16_7: # %cond.store57774; AVX2-NEXT:    vpextrb $3, %xmm0, 3(%rdi)7775; AVX2-NEXT:    testb $16, %al7776; AVX2-NEXT:    je .LBB16_107777; AVX2-NEXT:  .LBB16_9: # %cond.store77778; AVX2-NEXT:    vpextrb $4, %xmm0, 4(%rdi)7779; AVX2-NEXT:    testb $32, %al7780; AVX2-NEXT:    je .LBB16_127781; AVX2-NEXT:  .LBB16_11: # %cond.store97782; AVX2-NEXT:    vpextrb $5, %xmm0, 5(%rdi)7783; AVX2-NEXT:    testb $64, %al7784; AVX2-NEXT:    je .LBB16_147785; AVX2-NEXT:  .LBB16_13: # %cond.store117786; AVX2-NEXT:    vpextrb $6, %xmm0, 6(%rdi)7787; AVX2-NEXT:    testb %al, %al7788; AVX2-NEXT:    jns .LBB16_167789; AVX2-NEXT:  .LBB16_15: # %cond.store137790; AVX2-NEXT:    vpextrb $7, %xmm0, 7(%rdi)7791; AVX2-NEXT:    testl $256, %eax # imm = 0x1007792; AVX2-NEXT:    je .LBB16_187793; AVX2-NEXT:  .LBB16_17: # %cond.store157794; AVX2-NEXT:    vpextrb $8, %xmm0, 8(%rdi)7795; AVX2-NEXT:    testl $512, %eax # imm = 0x2007796; AVX2-NEXT:    je .LBB16_207797; AVX2-NEXT:  .LBB16_19: # %cond.store177798; AVX2-NEXT:    vpextrb $9, %xmm0, 9(%rdi)7799; AVX2-NEXT:    testl $1024, %eax # imm = 0x4007800; AVX2-NEXT:    je .LBB16_227801; AVX2-NEXT:  .LBB16_21: # %cond.store197802; AVX2-NEXT:    vpextrb $10, %xmm0, 10(%rdi)7803; AVX2-NEXT:    testl $2048, %eax # imm = 0x8007804; AVX2-NEXT:    je .LBB16_247805; AVX2-NEXT:  .LBB16_23: # %cond.store217806; AVX2-NEXT:    vpextrb $11, %xmm0, 11(%rdi)7807; AVX2-NEXT:    testl $4096, %eax # imm = 0x10007808; AVX2-NEXT:    je .LBB16_267809; AVX2-NEXT:  .LBB16_25: # %cond.store237810; AVX2-NEXT:    vpextrb $12, %xmm0, 12(%rdi)7811; AVX2-NEXT:    testl $8192, %eax # imm = 0x20007812; AVX2-NEXT:    je .LBB16_287813; AVX2-NEXT:  .LBB16_27: # %cond.store257814; AVX2-NEXT:    vpextrb $13, %xmm0, 13(%rdi)7815; AVX2-NEXT:    testl $16384, %eax # imm = 0x40007816; AVX2-NEXT:    je .LBB16_307817; AVX2-NEXT:  .LBB16_29: # %cond.store277818; AVX2-NEXT:    vpextrb $14, %xmm0, 14(%rdi)7819; AVX2-NEXT:    testl $32768, %eax # imm = 0x80007820; AVX2-NEXT:    je .LBB16_327821; AVX2-NEXT:  .LBB16_31: # %cond.store297822; AVX2-NEXT:    vpextrb $15, %xmm0, 15(%rdi)7823; AVX2-NEXT:    vzeroupper7824; AVX2-NEXT:    retq7825;7826; AVX512F-LABEL: truncstore_v16i16_v16i8:7827; AVX512F:       # %bb.0:7828; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm27829; AVX512F-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm17830; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm27831; AVX512F-NEXT:    vpacksswb %xmm2, %xmm0, %xmm07832; AVX512F-NEXT:    vpmovmskb %xmm1, %eax7833; AVX512F-NEXT:    xorl $65535, %eax # imm = 0xFFFF7834; AVX512F-NEXT:    testb $1, %al7835; AVX512F-NEXT:    jne .LBB16_17836; AVX512F-NEXT:  # %bb.2: # %else7837; AVX512F-NEXT:    testb $2, %al7838; AVX512F-NEXT:    jne .LBB16_37839; AVX512F-NEXT:  .LBB16_4: # %else27840; AVX512F-NEXT:    testb $4, %al7841; AVX512F-NEXT:    jne .LBB16_57842; AVX512F-NEXT:  .LBB16_6: # %else47843; AVX512F-NEXT:    testb $8, %al7844; AVX512F-NEXT:    jne .LBB16_77845; AVX512F-NEXT:  .LBB16_8: # %else67846; AVX512F-NEXT:    testb $16, %al7847; AVX512F-NEXT:    jne .LBB16_97848; AVX512F-NEXT:  .LBB16_10: # %else87849; AVX512F-NEXT:    testb $32, %al7850; AVX512F-NEXT:    jne .LBB16_117851; AVX512F-NEXT:  .LBB16_12: # %else107852; AVX512F-NEXT:    testb $64, %al7853; AVX512F-NEXT:    jne .LBB16_137854; AVX512F-NEXT:  .LBB16_14: # %else127855; AVX512F-NEXT:    testb %al, %al7856; AVX512F-NEXT:    js .LBB16_157857; AVX512F-NEXT:  .LBB16_16: # %else147858; AVX512F-NEXT:    testl $256, %eax # imm = 0x1007859; AVX512F-NEXT:    jne .LBB16_177860; AVX512F-NEXT:  .LBB16_18: # %else167861; AVX512F-NEXT:    testl $512, %eax # imm = 0x2007862; AVX512F-NEXT:    jne .LBB16_197863; AVX512F-NEXT:  .LBB16_20: # %else187864; AVX512F-NEXT:    testl $1024, %eax # imm = 0x4007865; AVX512F-NEXT:    jne .LBB16_217866; AVX512F-NEXT:  .LBB16_22: # %else207867; AVX512F-NEXT:    testl $2048, %eax # imm = 0x8007868; AVX512F-NEXT:    jne .LBB16_237869; AVX512F-NEXT:  .LBB16_24: # %else227870; AVX512F-NEXT:    testl $4096, %eax # imm = 0x10007871; AVX512F-NEXT:    jne .LBB16_257872; AVX512F-NEXT:  .LBB16_26: # %else247873; AVX512F-NEXT:    testl $8192, %eax # imm = 0x20007874; AVX512F-NEXT:    jne .LBB16_277875; AVX512F-NEXT:  .LBB16_28: # %else267876; AVX512F-NEXT:    testl $16384, %eax # imm = 0x40007877; AVX512F-NEXT:    jne .LBB16_297878; AVX512F-NEXT:  .LBB16_30: # %else287879; AVX512F-NEXT:    testl $32768, %eax # imm = 0x80007880; AVX512F-NEXT:    jne .LBB16_317881; AVX512F-NEXT:  .LBB16_32: # %else307882; AVX512F-NEXT:    vzeroupper7883; AVX512F-NEXT:    retq7884; AVX512F-NEXT:  .LBB16_1: # %cond.store7885; AVX512F-NEXT:    vpextrb $0, %xmm0, (%rdi)7886; AVX512F-NEXT:    testb $2, %al7887; AVX512F-NEXT:    je .LBB16_47888; AVX512F-NEXT:  .LBB16_3: # %cond.store17889; AVX512F-NEXT:    vpextrb $1, %xmm0, 1(%rdi)7890; AVX512F-NEXT:    testb $4, %al7891; AVX512F-NEXT:    je .LBB16_67892; AVX512F-NEXT:  .LBB16_5: # %cond.store37893; AVX512F-NEXT:    vpextrb $2, %xmm0, 2(%rdi)7894; AVX512F-NEXT:    testb $8, %al7895; AVX512F-NEXT:    je .LBB16_87896; AVX512F-NEXT:  .LBB16_7: # %cond.store57897; AVX512F-NEXT:    vpextrb $3, %xmm0, 3(%rdi)7898; AVX512F-NEXT:    testb $16, %al7899; AVX512F-NEXT:    je .LBB16_107900; AVX512F-NEXT:  .LBB16_9: # %cond.store77901; AVX512F-NEXT:    vpextrb $4, %xmm0, 4(%rdi)7902; AVX512F-NEXT:    testb $32, %al7903; AVX512F-NEXT:    je .LBB16_127904; AVX512F-NEXT:  .LBB16_11: # %cond.store97905; AVX512F-NEXT:    vpextrb $5, %xmm0, 5(%rdi)7906; AVX512F-NEXT:    testb $64, %al7907; AVX512F-NEXT:    je .LBB16_147908; AVX512F-NEXT:  .LBB16_13: # %cond.store117909; AVX512F-NEXT:    vpextrb $6, %xmm0, 6(%rdi)7910; AVX512F-NEXT:    testb %al, %al7911; AVX512F-NEXT:    jns .LBB16_167912; AVX512F-NEXT:  .LBB16_15: # %cond.store137913; AVX512F-NEXT:    vpextrb $7, %xmm0, 7(%rdi)7914; AVX512F-NEXT:    testl $256, %eax # imm = 0x1007915; AVX512F-NEXT:    je .LBB16_187916; AVX512F-NEXT:  .LBB16_17: # %cond.store157917; AVX512F-NEXT:    vpextrb $8, %xmm0, 8(%rdi)7918; AVX512F-NEXT:    testl $512, %eax # imm = 0x2007919; AVX512F-NEXT:    je .LBB16_207920; AVX512F-NEXT:  .LBB16_19: # %cond.store177921; AVX512F-NEXT:    vpextrb $9, %xmm0, 9(%rdi)7922; AVX512F-NEXT:    testl $1024, %eax # imm = 0x4007923; AVX512F-NEXT:    je .LBB16_227924; AVX512F-NEXT:  .LBB16_21: # %cond.store197925; AVX512F-NEXT:    vpextrb $10, %xmm0, 10(%rdi)7926; AVX512F-NEXT:    testl $2048, %eax # imm = 0x8007927; AVX512F-NEXT:    je .LBB16_247928; AVX512F-NEXT:  .LBB16_23: # %cond.store217929; AVX512F-NEXT:    vpextrb $11, %xmm0, 11(%rdi)7930; AVX512F-NEXT:    testl $4096, %eax # imm = 0x10007931; AVX512F-NEXT:    je .LBB16_267932; AVX512F-NEXT:  .LBB16_25: # %cond.store237933; AVX512F-NEXT:    vpextrb $12, %xmm0, 12(%rdi)7934; AVX512F-NEXT:    testl $8192, %eax # imm = 0x20007935; AVX512F-NEXT:    je .LBB16_287936; AVX512F-NEXT:  .LBB16_27: # %cond.store257937; AVX512F-NEXT:    vpextrb $13, %xmm0, 13(%rdi)7938; AVX512F-NEXT:    testl $16384, %eax # imm = 0x40007939; AVX512F-NEXT:    je .LBB16_307940; AVX512F-NEXT:  .LBB16_29: # %cond.store277941; AVX512F-NEXT:    vpextrb $14, %xmm0, 14(%rdi)7942; AVX512F-NEXT:    testl $32768, %eax # imm = 0x80007943; AVX512F-NEXT:    je .LBB16_327944; AVX512F-NEXT:  .LBB16_31: # %cond.store297945; AVX512F-NEXT:    vpextrb $15, %xmm0, 15(%rdi)7946; AVX512F-NEXT:    vzeroupper7947; AVX512F-NEXT:    retq7948;7949; AVX512FVL-LABEL: truncstore_v16i16_v16i8:7950; AVX512FVL:       # %bb.0:7951; AVX512FVL-NEXT:    vpxor %xmm2, %xmm2, %xmm27952; AVX512FVL-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm17953; AVX512FVL-NEXT:    vextracti128 $1, %ymm0, %xmm27954; AVX512FVL-NEXT:    vpacksswb %xmm2, %xmm0, %xmm07955; AVX512FVL-NEXT:    vpmovmskb %xmm1, %eax7956; AVX512FVL-NEXT:    xorl $65535, %eax # imm = 0xFFFF7957; AVX512FVL-NEXT:    testb $1, %al7958; AVX512FVL-NEXT:    jne .LBB16_17959; AVX512FVL-NEXT:  # %bb.2: # %else7960; AVX512FVL-NEXT:    testb $2, %al7961; AVX512FVL-NEXT:    jne .LBB16_37962; AVX512FVL-NEXT:  .LBB16_4: # %else27963; AVX512FVL-NEXT:    testb $4, %al7964; AVX512FVL-NEXT:    jne .LBB16_57965; AVX512FVL-NEXT:  .LBB16_6: # %else47966; AVX512FVL-NEXT:    testb $8, %al7967; AVX512FVL-NEXT:    jne .LBB16_77968; AVX512FVL-NEXT:  .LBB16_8: # %else67969; AVX512FVL-NEXT:    testb $16, %al7970; AVX512FVL-NEXT:    jne .LBB16_97971; AVX512FVL-NEXT:  .LBB16_10: # %else87972; AVX512FVL-NEXT:    testb $32, %al7973; AVX512FVL-NEXT:    jne .LBB16_117974; AVX512FVL-NEXT:  .LBB16_12: # %else107975; AVX512FVL-NEXT:    testb $64, %al7976; AVX512FVL-NEXT:    jne .LBB16_137977; AVX512FVL-NEXT:  .LBB16_14: # %else127978; AVX512FVL-NEXT:    testb %al, %al7979; AVX512FVL-NEXT:    js .LBB16_157980; AVX512FVL-NEXT:  .LBB16_16: # %else147981; AVX512FVL-NEXT:    testl $256, %eax # imm = 0x1007982; AVX512FVL-NEXT:    jne .LBB16_177983; AVX512FVL-NEXT:  .LBB16_18: # %else167984; AVX512FVL-NEXT:    testl $512, %eax # imm = 0x2007985; AVX512FVL-NEXT:    jne .LBB16_197986; AVX512FVL-NEXT:  .LBB16_20: # %else187987; AVX512FVL-NEXT:    testl $1024, %eax # imm = 0x4007988; AVX512FVL-NEXT:    jne .LBB16_217989; AVX512FVL-NEXT:  .LBB16_22: # %else207990; AVX512FVL-NEXT:    testl $2048, %eax # imm = 0x8007991; AVX512FVL-NEXT:    jne .LBB16_237992; AVX512FVL-NEXT:  .LBB16_24: # %else227993; AVX512FVL-NEXT:    testl $4096, %eax # imm = 0x10007994; AVX512FVL-NEXT:    jne .LBB16_257995; AVX512FVL-NEXT:  .LBB16_26: # %else247996; AVX512FVL-NEXT:    testl $8192, %eax # imm = 0x20007997; AVX512FVL-NEXT:    jne .LBB16_277998; AVX512FVL-NEXT:  .LBB16_28: # %else267999; AVX512FVL-NEXT:    testl $16384, %eax # imm = 0x40008000; AVX512FVL-NEXT:    jne .LBB16_298001; AVX512FVL-NEXT:  .LBB16_30: # %else288002; AVX512FVL-NEXT:    testl $32768, %eax # imm = 0x80008003; AVX512FVL-NEXT:    jne .LBB16_318004; AVX512FVL-NEXT:  .LBB16_32: # %else308005; AVX512FVL-NEXT:    vzeroupper8006; AVX512FVL-NEXT:    retq8007; AVX512FVL-NEXT:  .LBB16_1: # %cond.store8008; AVX512FVL-NEXT:    vpextrb $0, %xmm0, (%rdi)8009; AVX512FVL-NEXT:    testb $2, %al8010; AVX512FVL-NEXT:    je .LBB16_48011; AVX512FVL-NEXT:  .LBB16_3: # %cond.store18012; AVX512FVL-NEXT:    vpextrb $1, %xmm0, 1(%rdi)8013; AVX512FVL-NEXT:    testb $4, %al8014; AVX512FVL-NEXT:    je .LBB16_68015; AVX512FVL-NEXT:  .LBB16_5: # %cond.store38016; AVX512FVL-NEXT:    vpextrb $2, %xmm0, 2(%rdi)8017; AVX512FVL-NEXT:    testb $8, %al8018; AVX512FVL-NEXT:    je .LBB16_88019; AVX512FVL-NEXT:  .LBB16_7: # %cond.store58020; AVX512FVL-NEXT:    vpextrb $3, %xmm0, 3(%rdi)8021; AVX512FVL-NEXT:    testb $16, %al8022; AVX512FVL-NEXT:    je .LBB16_108023; AVX512FVL-NEXT:  .LBB16_9: # %cond.store78024; AVX512FVL-NEXT:    vpextrb $4, %xmm0, 4(%rdi)8025; AVX512FVL-NEXT:    testb $32, %al8026; AVX512FVL-NEXT:    je .LBB16_128027; AVX512FVL-NEXT:  .LBB16_11: # %cond.store98028; AVX512FVL-NEXT:    vpextrb $5, %xmm0, 5(%rdi)8029; AVX512FVL-NEXT:    testb $64, %al8030; AVX512FVL-NEXT:    je .LBB16_148031; AVX512FVL-NEXT:  .LBB16_13: # %cond.store118032; AVX512FVL-NEXT:    vpextrb $6, %xmm0, 6(%rdi)8033; AVX512FVL-NEXT:    testb %al, %al8034; AVX512FVL-NEXT:    jns .LBB16_168035; AVX512FVL-NEXT:  .LBB16_15: # %cond.store138036; AVX512FVL-NEXT:    vpextrb $7, %xmm0, 7(%rdi)8037; AVX512FVL-NEXT:    testl $256, %eax # imm = 0x1008038; AVX512FVL-NEXT:    je .LBB16_188039; AVX512FVL-NEXT:  .LBB16_17: # %cond.store158040; AVX512FVL-NEXT:    vpextrb $8, %xmm0, 8(%rdi)8041; AVX512FVL-NEXT:    testl $512, %eax # imm = 0x2008042; AVX512FVL-NEXT:    je .LBB16_208043; AVX512FVL-NEXT:  .LBB16_19: # %cond.store178044; AVX512FVL-NEXT:    vpextrb $9, %xmm0, 9(%rdi)8045; AVX512FVL-NEXT:    testl $1024, %eax # imm = 0x4008046; AVX512FVL-NEXT:    je .LBB16_228047; AVX512FVL-NEXT:  .LBB16_21: # %cond.store198048; AVX512FVL-NEXT:    vpextrb $10, %xmm0, 10(%rdi)8049; AVX512FVL-NEXT:    testl $2048, %eax # imm = 0x8008050; AVX512FVL-NEXT:    je .LBB16_248051; AVX512FVL-NEXT:  .LBB16_23: # %cond.store218052; AVX512FVL-NEXT:    vpextrb $11, %xmm0, 11(%rdi)8053; AVX512FVL-NEXT:    testl $4096, %eax # imm = 0x10008054; AVX512FVL-NEXT:    je .LBB16_268055; AVX512FVL-NEXT:  .LBB16_25: # %cond.store238056; AVX512FVL-NEXT:    vpextrb $12, %xmm0, 12(%rdi)8057; AVX512FVL-NEXT:    testl $8192, %eax # imm = 0x20008058; AVX512FVL-NEXT:    je .LBB16_288059; AVX512FVL-NEXT:  .LBB16_27: # %cond.store258060; AVX512FVL-NEXT:    vpextrb $13, %xmm0, 13(%rdi)8061; AVX512FVL-NEXT:    testl $16384, %eax # imm = 0x40008062; AVX512FVL-NEXT:    je .LBB16_308063; AVX512FVL-NEXT:  .LBB16_29: # %cond.store278064; AVX512FVL-NEXT:    vpextrb $14, %xmm0, 14(%rdi)8065; AVX512FVL-NEXT:    testl $32768, %eax # imm = 0x80008066; AVX512FVL-NEXT:    je .LBB16_328067; AVX512FVL-NEXT:  .LBB16_31: # %cond.store298068; AVX512FVL-NEXT:    vpextrb $15, %xmm0, 15(%rdi)8069; AVX512FVL-NEXT:    vzeroupper8070; AVX512FVL-NEXT:    retq8071;8072; AVX512BW-LABEL: truncstore_v16i16_v16i8:8073; AVX512BW:       # %bb.0:8074; AVX512BW-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm18075; AVX512BW-NEXT:    vptestmb %zmm1, %zmm1, %k08076; AVX512BW-NEXT:    kmovw %k0, %k18077; AVX512BW-NEXT:    vextracti128 $1, %ymm0, %xmm18078; AVX512BW-NEXT:    vpacksswb %xmm1, %xmm0, %xmm08079; AVX512BW-NEXT:    vmovdqu8 %zmm0, (%rdi) {%k1}8080; AVX512BW-NEXT:    vzeroupper8081; AVX512BW-NEXT:    retq8082;8083; AVX512BWVL-LABEL: truncstore_v16i16_v16i8:8084; AVX512BWVL:       # %bb.0:8085; AVX512BWVL-NEXT:    vptestmb %xmm1, %xmm1, %k18086; AVX512BWVL-NEXT:    vpminsw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm08087; AVX512BWVL-NEXT:    vpmaxsw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm08088; AVX512BWVL-NEXT:    vpmovwb %ymm0, (%rdi) {%k1}8089; AVX512BWVL-NEXT:    vzeroupper8090; AVX512BWVL-NEXT:    retq8091  %a = icmp ne <16 x i8> %mask, zeroinitializer8092  %b = icmp slt <16 x i16> %x, <i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127>8093  %c = select <16 x i1> %b, <16 x i16> %x, <16 x i16> <i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127>8094  %d = icmp sgt <16 x i16> %c, <i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128>8095  %e = select <16 x i1> %d, <16 x i16> %c, <16 x i16> <i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128>8096  %f = trunc <16 x i16> %e to <16 x i8>8097  call void @llvm.masked.store.v16i8.p0(<16 x i8> %f, ptr %p, i32 1, <16 x i1> %a)8098  ret void8099}8100 8101define void @truncstore_v8i16_v8i8(<8 x i16> %x, ptr %p, <8 x i16> %mask) {8102; SSE2-LABEL: truncstore_v8i16_v8i8:8103; SSE2:       # %bb.0:8104; SSE2-NEXT:    pxor %xmm2, %xmm28105; SSE2-NEXT:    packsswb %xmm0, %xmm08106; SSE2-NEXT:    pcmpeqw %xmm1, %xmm28107; SSE2-NEXT:    packsswb %xmm2, %xmm28108; SSE2-NEXT:    pmovmskb %xmm2, %eax8109; SSE2-NEXT:    notl %eax8110; SSE2-NEXT:    testb $1, %al8111; SSE2-NEXT:    movd %xmm0, %ecx8112; SSE2-NEXT:    jne .LBB17_18113; SSE2-NEXT:  # %bb.2: # %else8114; SSE2-NEXT:    testb $2, %al8115; SSE2-NEXT:    jne .LBB17_38116; SSE2-NEXT:  .LBB17_4: # %else28117; SSE2-NEXT:    testb $4, %al8118; SSE2-NEXT:    jne .LBB17_58119; SSE2-NEXT:  .LBB17_6: # %else48120; SSE2-NEXT:    testb $8, %al8121; SSE2-NEXT:    je .LBB17_88122; SSE2-NEXT:  .LBB17_7: # %cond.store58123; SSE2-NEXT:    shrl $24, %ecx8124; SSE2-NEXT:    movb %cl, 3(%rdi)8125; SSE2-NEXT:  .LBB17_8: # %else68126; SSE2-NEXT:    testb $16, %al8127; SSE2-NEXT:    pextrw $2, %xmm0, %ecx8128; SSE2-NEXT:    je .LBB17_108129; SSE2-NEXT:  # %bb.9: # %cond.store78130; SSE2-NEXT:    movb %cl, 4(%rdi)8131; SSE2-NEXT:  .LBB17_10: # %else88132; SSE2-NEXT:    testb $32, %al8133; SSE2-NEXT:    je .LBB17_128134; SSE2-NEXT:  # %bb.11: # %cond.store98135; SSE2-NEXT:    movb %ch, 5(%rdi)8136; SSE2-NEXT:  .LBB17_12: # %else108137; SSE2-NEXT:    testb $64, %al8138; SSE2-NEXT:    pextrw $3, %xmm0, %ecx8139; SSE2-NEXT:    jne .LBB17_138140; SSE2-NEXT:  # %bb.14: # %else128141; SSE2-NEXT:    testb $-128, %al8142; SSE2-NEXT:    jne .LBB17_158143; SSE2-NEXT:  .LBB17_16: # %else148144; SSE2-NEXT:    retq8145; SSE2-NEXT:  .LBB17_1: # %cond.store8146; SSE2-NEXT:    movb %cl, (%rdi)8147; SSE2-NEXT:    testb $2, %al8148; SSE2-NEXT:    je .LBB17_48149; SSE2-NEXT:  .LBB17_3: # %cond.store18150; SSE2-NEXT:    movb %ch, 1(%rdi)8151; SSE2-NEXT:    testb $4, %al8152; SSE2-NEXT:    je .LBB17_68153; SSE2-NEXT:  .LBB17_5: # %cond.store38154; SSE2-NEXT:    movl %ecx, %edx8155; SSE2-NEXT:    shrl $16, %edx8156; SSE2-NEXT:    movb %dl, 2(%rdi)8157; SSE2-NEXT:    testb $8, %al8158; SSE2-NEXT:    jne .LBB17_78159; SSE2-NEXT:    jmp .LBB17_88160; SSE2-NEXT:  .LBB17_13: # %cond.store118161; SSE2-NEXT:    movb %cl, 6(%rdi)8162; SSE2-NEXT:    testb $-128, %al8163; SSE2-NEXT:    je .LBB17_168164; SSE2-NEXT:  .LBB17_15: # %cond.store138165; SSE2-NEXT:    movb %ch, 7(%rdi)8166; SSE2-NEXT:    retq8167;8168; SSE4-LABEL: truncstore_v8i16_v8i8:8169; SSE4:       # %bb.0:8170; SSE4-NEXT:    pxor %xmm2, %xmm28171; SSE4-NEXT:    packsswb %xmm0, %xmm08172; SSE4-NEXT:    pcmpeqw %xmm1, %xmm28173; SSE4-NEXT:    packsswb %xmm2, %xmm28174; SSE4-NEXT:    pmovmskb %xmm2, %eax8175; SSE4-NEXT:    notl %eax8176; SSE4-NEXT:    testb $1, %al8177; SSE4-NEXT:    jne .LBB17_18178; SSE4-NEXT:  # %bb.2: # %else8179; SSE4-NEXT:    testb $2, %al8180; SSE4-NEXT:    jne .LBB17_38181; SSE4-NEXT:  .LBB17_4: # %else28182; SSE4-NEXT:    testb $4, %al8183; SSE4-NEXT:    jne .LBB17_58184; SSE4-NEXT:  .LBB17_6: # %else48185; SSE4-NEXT:    testb $8, %al8186; SSE4-NEXT:    jne .LBB17_78187; SSE4-NEXT:  .LBB17_8: # %else68188; SSE4-NEXT:    testb $16, %al8189; SSE4-NEXT:    jne .LBB17_98190; SSE4-NEXT:  .LBB17_10: # %else88191; SSE4-NEXT:    testb $32, %al8192; SSE4-NEXT:    jne .LBB17_118193; SSE4-NEXT:  .LBB17_12: # %else108194; SSE4-NEXT:    testb $64, %al8195; SSE4-NEXT:    jne .LBB17_138196; SSE4-NEXT:  .LBB17_14: # %else128197; SSE4-NEXT:    testb $-128, %al8198; SSE4-NEXT:    jne .LBB17_158199; SSE4-NEXT:  .LBB17_16: # %else148200; SSE4-NEXT:    retq8201; SSE4-NEXT:  .LBB17_1: # %cond.store8202; SSE4-NEXT:    pextrb $0, %xmm0, (%rdi)8203; SSE4-NEXT:    testb $2, %al8204; SSE4-NEXT:    je .LBB17_48205; SSE4-NEXT:  .LBB17_3: # %cond.store18206; SSE4-NEXT:    pextrb $1, %xmm0, 1(%rdi)8207; SSE4-NEXT:    testb $4, %al8208; SSE4-NEXT:    je .LBB17_68209; SSE4-NEXT:  .LBB17_5: # %cond.store38210; SSE4-NEXT:    pextrb $2, %xmm0, 2(%rdi)8211; SSE4-NEXT:    testb $8, %al8212; SSE4-NEXT:    je .LBB17_88213; SSE4-NEXT:  .LBB17_7: # %cond.store58214; SSE4-NEXT:    pextrb $3, %xmm0, 3(%rdi)8215; SSE4-NEXT:    testb $16, %al8216; SSE4-NEXT:    je .LBB17_108217; SSE4-NEXT:  .LBB17_9: # %cond.store78218; SSE4-NEXT:    pextrb $4, %xmm0, 4(%rdi)8219; SSE4-NEXT:    testb $32, %al8220; SSE4-NEXT:    je .LBB17_128221; SSE4-NEXT:  .LBB17_11: # %cond.store98222; SSE4-NEXT:    pextrb $5, %xmm0, 5(%rdi)8223; SSE4-NEXT:    testb $64, %al8224; SSE4-NEXT:    je .LBB17_148225; SSE4-NEXT:  .LBB17_13: # %cond.store118226; SSE4-NEXT:    pextrb $6, %xmm0, 6(%rdi)8227; SSE4-NEXT:    testb $-128, %al8228; SSE4-NEXT:    je .LBB17_168229; SSE4-NEXT:  .LBB17_15: # %cond.store138230; SSE4-NEXT:    pextrb $7, %xmm0, 7(%rdi)8231; SSE4-NEXT:    retq8232;8233; AVX-LABEL: truncstore_v8i16_v8i8:8234; AVX:       # %bb.0:8235; AVX-NEXT:    vpxor %xmm2, %xmm2, %xmm28236; AVX-NEXT:    vpacksswb %xmm0, %xmm0, %xmm08237; AVX-NEXT:    vpcmpeqw %xmm2, %xmm1, %xmm18238; AVX-NEXT:    vpacksswb %xmm1, %xmm1, %xmm18239; AVX-NEXT:    vpmovmskb %xmm1, %eax8240; AVX-NEXT:    notl %eax8241; AVX-NEXT:    testb $1, %al8242; AVX-NEXT:    jne .LBB17_18243; AVX-NEXT:  # %bb.2: # %else8244; AVX-NEXT:    testb $2, %al8245; AVX-NEXT:    jne .LBB17_38246; AVX-NEXT:  .LBB17_4: # %else28247; AVX-NEXT:    testb $4, %al8248; AVX-NEXT:    jne .LBB17_58249; AVX-NEXT:  .LBB17_6: # %else48250; AVX-NEXT:    testb $8, %al8251; AVX-NEXT:    jne .LBB17_78252; AVX-NEXT:  .LBB17_8: # %else68253; AVX-NEXT:    testb $16, %al8254; AVX-NEXT:    jne .LBB17_98255; AVX-NEXT:  .LBB17_10: # %else88256; AVX-NEXT:    testb $32, %al8257; AVX-NEXT:    jne .LBB17_118258; AVX-NEXT:  .LBB17_12: # %else108259; AVX-NEXT:    testb $64, %al8260; AVX-NEXT:    jne .LBB17_138261; AVX-NEXT:  .LBB17_14: # %else128262; AVX-NEXT:    testb $-128, %al8263; AVX-NEXT:    jne .LBB17_158264; AVX-NEXT:  .LBB17_16: # %else148265; AVX-NEXT:    retq8266; AVX-NEXT:  .LBB17_1: # %cond.store8267; AVX-NEXT:    vpextrb $0, %xmm0, (%rdi)8268; AVX-NEXT:    testb $2, %al8269; AVX-NEXT:    je .LBB17_48270; AVX-NEXT:  .LBB17_3: # %cond.store18271; AVX-NEXT:    vpextrb $1, %xmm0, 1(%rdi)8272; AVX-NEXT:    testb $4, %al8273; AVX-NEXT:    je .LBB17_68274; AVX-NEXT:  .LBB17_5: # %cond.store38275; AVX-NEXT:    vpextrb $2, %xmm0, 2(%rdi)8276; AVX-NEXT:    testb $8, %al8277; AVX-NEXT:    je .LBB17_88278; AVX-NEXT:  .LBB17_7: # %cond.store58279; AVX-NEXT:    vpextrb $3, %xmm0, 3(%rdi)8280; AVX-NEXT:    testb $16, %al8281; AVX-NEXT:    je .LBB17_108282; AVX-NEXT:  .LBB17_9: # %cond.store78283; AVX-NEXT:    vpextrb $4, %xmm0, 4(%rdi)8284; AVX-NEXT:    testb $32, %al8285; AVX-NEXT:    je .LBB17_128286; AVX-NEXT:  .LBB17_11: # %cond.store98287; AVX-NEXT:    vpextrb $5, %xmm0, 5(%rdi)8288; AVX-NEXT:    testb $64, %al8289; AVX-NEXT:    je .LBB17_148290; AVX-NEXT:  .LBB17_13: # %cond.store118291; AVX-NEXT:    vpextrb $6, %xmm0, 6(%rdi)8292; AVX-NEXT:    testb $-128, %al8293; AVX-NEXT:    je .LBB17_168294; AVX-NEXT:  .LBB17_15: # %cond.store138295; AVX-NEXT:    vpextrb $7, %xmm0, 7(%rdi)8296; AVX-NEXT:    retq8297;8298; AVX512F-LABEL: truncstore_v8i16_v8i8:8299; AVX512F:       # %bb.0:8300; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm28301; AVX512F-NEXT:    vpcmpeqw %xmm2, %xmm1, %xmm18302; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm1 = ~zmm18303; AVX512F-NEXT:    vpmovsxwq %xmm1, %zmm18304; AVX512F-NEXT:    vptestmq %zmm1, %zmm1, %k08305; AVX512F-NEXT:    vpacksswb %xmm0, %xmm0, %xmm08306; AVX512F-NEXT:    kmovw %k0, %eax8307; AVX512F-NEXT:    testb $1, %al8308; AVX512F-NEXT:    jne .LBB17_18309; AVX512F-NEXT:  # %bb.2: # %else8310; AVX512F-NEXT:    testb $2, %al8311; AVX512F-NEXT:    jne .LBB17_38312; AVX512F-NEXT:  .LBB17_4: # %else28313; AVX512F-NEXT:    testb $4, %al8314; AVX512F-NEXT:    jne .LBB17_58315; AVX512F-NEXT:  .LBB17_6: # %else48316; AVX512F-NEXT:    testb $8, %al8317; AVX512F-NEXT:    jne .LBB17_78318; AVX512F-NEXT:  .LBB17_8: # %else68319; AVX512F-NEXT:    testb $16, %al8320; AVX512F-NEXT:    jne .LBB17_98321; AVX512F-NEXT:  .LBB17_10: # %else88322; AVX512F-NEXT:    testb $32, %al8323; AVX512F-NEXT:    jne .LBB17_118324; AVX512F-NEXT:  .LBB17_12: # %else108325; AVX512F-NEXT:    testb $64, %al8326; AVX512F-NEXT:    jne .LBB17_138327; AVX512F-NEXT:  .LBB17_14: # %else128328; AVX512F-NEXT:    testb $-128, %al8329; AVX512F-NEXT:    jne .LBB17_158330; AVX512F-NEXT:  .LBB17_16: # %else148331; AVX512F-NEXT:    vzeroupper8332; AVX512F-NEXT:    retq8333; AVX512F-NEXT:  .LBB17_1: # %cond.store8334; AVX512F-NEXT:    vpextrb $0, %xmm0, (%rdi)8335; AVX512F-NEXT:    testb $2, %al8336; AVX512F-NEXT:    je .LBB17_48337; AVX512F-NEXT:  .LBB17_3: # %cond.store18338; AVX512F-NEXT:    vpextrb $1, %xmm0, 1(%rdi)8339; AVX512F-NEXT:    testb $4, %al8340; AVX512F-NEXT:    je .LBB17_68341; AVX512F-NEXT:  .LBB17_5: # %cond.store38342; AVX512F-NEXT:    vpextrb $2, %xmm0, 2(%rdi)8343; AVX512F-NEXT:    testb $8, %al8344; AVX512F-NEXT:    je .LBB17_88345; AVX512F-NEXT:  .LBB17_7: # %cond.store58346; AVX512F-NEXT:    vpextrb $3, %xmm0, 3(%rdi)8347; AVX512F-NEXT:    testb $16, %al8348; AVX512F-NEXT:    je .LBB17_108349; AVX512F-NEXT:  .LBB17_9: # %cond.store78350; AVX512F-NEXT:    vpextrb $4, %xmm0, 4(%rdi)8351; AVX512F-NEXT:    testb $32, %al8352; AVX512F-NEXT:    je .LBB17_128353; AVX512F-NEXT:  .LBB17_11: # %cond.store98354; AVX512F-NEXT:    vpextrb $5, %xmm0, 5(%rdi)8355; AVX512F-NEXT:    testb $64, %al8356; AVX512F-NEXT:    je .LBB17_148357; AVX512F-NEXT:  .LBB17_13: # %cond.store118358; AVX512F-NEXT:    vpextrb $6, %xmm0, 6(%rdi)8359; AVX512F-NEXT:    testb $-128, %al8360; AVX512F-NEXT:    je .LBB17_168361; AVX512F-NEXT:  .LBB17_15: # %cond.store138362; AVX512F-NEXT:    vpextrb $7, %xmm0, 7(%rdi)8363; AVX512F-NEXT:    vzeroupper8364; AVX512F-NEXT:    retq8365;8366; AVX512FVL-LABEL: truncstore_v8i16_v8i8:8367; AVX512FVL:       # %bb.0:8368; AVX512FVL-NEXT:    vpxor %xmm2, %xmm2, %xmm28369; AVX512FVL-NEXT:    vpcmpeqw %xmm2, %xmm1, %xmm18370; AVX512FVL-NEXT:    vpternlogq {{.*#+}} xmm1 = ~xmm18371; AVX512FVL-NEXT:    vpmovsxwd %xmm1, %ymm18372; AVX512FVL-NEXT:    vptestmd %ymm1, %ymm1, %k08373; AVX512FVL-NEXT:    vpacksswb %xmm0, %xmm0, %xmm08374; AVX512FVL-NEXT:    kmovw %k0, %eax8375; AVX512FVL-NEXT:    testb $1, %al8376; AVX512FVL-NEXT:    jne .LBB17_18377; AVX512FVL-NEXT:  # %bb.2: # %else8378; AVX512FVL-NEXT:    testb $2, %al8379; AVX512FVL-NEXT:    jne .LBB17_38380; AVX512FVL-NEXT:  .LBB17_4: # %else28381; AVX512FVL-NEXT:    testb $4, %al8382; AVX512FVL-NEXT:    jne .LBB17_58383; AVX512FVL-NEXT:  .LBB17_6: # %else48384; AVX512FVL-NEXT:    testb $8, %al8385; AVX512FVL-NEXT:    jne .LBB17_78386; AVX512FVL-NEXT:  .LBB17_8: # %else68387; AVX512FVL-NEXT:    testb $16, %al8388; AVX512FVL-NEXT:    jne .LBB17_98389; AVX512FVL-NEXT:  .LBB17_10: # %else88390; AVX512FVL-NEXT:    testb $32, %al8391; AVX512FVL-NEXT:    jne .LBB17_118392; AVX512FVL-NEXT:  .LBB17_12: # %else108393; AVX512FVL-NEXT:    testb $64, %al8394; AVX512FVL-NEXT:    jne .LBB17_138395; AVX512FVL-NEXT:  .LBB17_14: # %else128396; AVX512FVL-NEXT:    testb $-128, %al8397; AVX512FVL-NEXT:    jne .LBB17_158398; AVX512FVL-NEXT:  .LBB17_16: # %else148399; AVX512FVL-NEXT:    vzeroupper8400; AVX512FVL-NEXT:    retq8401; AVX512FVL-NEXT:  .LBB17_1: # %cond.store8402; AVX512FVL-NEXT:    vpextrb $0, %xmm0, (%rdi)8403; AVX512FVL-NEXT:    testb $2, %al8404; AVX512FVL-NEXT:    je .LBB17_48405; AVX512FVL-NEXT:  .LBB17_3: # %cond.store18406; AVX512FVL-NEXT:    vpextrb $1, %xmm0, 1(%rdi)8407; AVX512FVL-NEXT:    testb $4, %al8408; AVX512FVL-NEXT:    je .LBB17_68409; AVX512FVL-NEXT:  .LBB17_5: # %cond.store38410; AVX512FVL-NEXT:    vpextrb $2, %xmm0, 2(%rdi)8411; AVX512FVL-NEXT:    testb $8, %al8412; AVX512FVL-NEXT:    je .LBB17_88413; AVX512FVL-NEXT:  .LBB17_7: # %cond.store58414; AVX512FVL-NEXT:    vpextrb $3, %xmm0, 3(%rdi)8415; AVX512FVL-NEXT:    testb $16, %al8416; AVX512FVL-NEXT:    je .LBB17_108417; AVX512FVL-NEXT:  .LBB17_9: # %cond.store78418; AVX512FVL-NEXT:    vpextrb $4, %xmm0, 4(%rdi)8419; AVX512FVL-NEXT:    testb $32, %al8420; AVX512FVL-NEXT:    je .LBB17_128421; AVX512FVL-NEXT:  .LBB17_11: # %cond.store98422; AVX512FVL-NEXT:    vpextrb $5, %xmm0, 5(%rdi)8423; AVX512FVL-NEXT:    testb $64, %al8424; AVX512FVL-NEXT:    je .LBB17_148425; AVX512FVL-NEXT:  .LBB17_13: # %cond.store118426; AVX512FVL-NEXT:    vpextrb $6, %xmm0, 6(%rdi)8427; AVX512FVL-NEXT:    testb $-128, %al8428; AVX512FVL-NEXT:    je .LBB17_168429; AVX512FVL-NEXT:  .LBB17_15: # %cond.store138430; AVX512FVL-NEXT:    vpextrb $7, %xmm0, 7(%rdi)8431; AVX512FVL-NEXT:    vzeroupper8432; AVX512FVL-NEXT:    retq8433;8434; AVX512BW-LABEL: truncstore_v8i16_v8i8:8435; AVX512BW:       # %bb.0:8436; AVX512BW-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm18437; AVX512BW-NEXT:    vptestmw %zmm1, %zmm1, %k08438; AVX512BW-NEXT:    kshiftlq $56, %k0, %k08439; AVX512BW-NEXT:    kshiftrq $56, %k0, %k18440; AVX512BW-NEXT:    vpacksswb %xmm0, %xmm0, %xmm08441; AVX512BW-NEXT:    vmovdqu8 %zmm0, (%rdi) {%k1}8442; AVX512BW-NEXT:    vzeroupper8443; AVX512BW-NEXT:    retq8444;8445; AVX512BWVL-LABEL: truncstore_v8i16_v8i8:8446; AVX512BWVL:       # %bb.0:8447; AVX512BWVL-NEXT:    vptestmw %xmm1, %xmm1, %k18448; AVX512BWVL-NEXT:    vpminsw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm08449; AVX512BWVL-NEXT:    vpmaxsw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm08450; AVX512BWVL-NEXT:    vpmovwb %xmm0, (%rdi) {%k1}8451; AVX512BWVL-NEXT:    retq8452  %a = icmp ne <8 x i16> %mask, zeroinitializer8453  %b = icmp slt <8 x i16> %x, <i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127>8454  %c = select <8 x i1> %b, <8 x i16> %x, <8 x i16> <i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127>8455  %d = icmp sgt <8 x i16> %c, <i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128>8456  %e = select <8 x i1> %d, <8 x i16> %c, <8 x i16> <i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128>8457  %f = trunc <8 x i16> %e to <8 x i8>8458  call void @llvm.masked.store.v8i8.p0(<8 x i8> %f, ptr %p, i32 1, <8 x i1> %a)8459  ret void8460}8461 8462declare void @llvm.masked.store.v8i32.p0(<8 x i32>, ptr, i32, <8 x i1>)8463declare void @llvm.masked.store.v8i16.p0(<8 x i16>, ptr, i32, <8 x i1>)8464declare void @llvm.masked.store.v8i8.p0(<8 x i8>, ptr, i32, <8 x i1>)8465declare void @llvm.masked.store.v4i32.p0(<4 x i32>, ptr, i32, <4 x i1>)8466declare void @llvm.masked.store.v4i16.p0(<4 x i16>, ptr, i32, <4 x i1>)8467declare void @llvm.masked.store.v4i8.p0(<4 x i8>, ptr, i32, <4 x i1>)8468declare void @llvm.masked.store.v2i32.p0(<2 x i32>, ptr, i32, <2 x i1>)8469declare void @llvm.masked.store.v2i16.p0(<2 x i16>, ptr, i32, <2 x i1>)8470declare void @llvm.masked.store.v2i8.p0(<2 x i8>, ptr, i32, <2 x i1>)8471declare void @llvm.masked.store.v16i16.p0(<16 x i16>, ptr, i32, <16 x i1>)8472declare void @llvm.masked.store.v16i8.p0(<16 x i8>, ptr, i32, <16 x i1>)8473declare void @llvm.masked.store.v32i8.p0(<32 x i8>, ptr, i32, <32 x i1>)8474