brintos

brintos / llvm-project-archived public Read only

0
0
Text · 155.3 KiB · 3187bf6 Raw
4413 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=sse2    | FileCheck %s --check-prefixes=SSE,SSE23; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=sse4.2  | FileCheck %s --check-prefixes=SSE,SSE424; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx     | FileCheck %s --check-prefixes=AVX1OR2,AVX15; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx2    | FileCheck %s --check-prefixes=AVX1OR2,AVX26; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx512f | FileCheck %s --check-prefixes=AVX512,AVX512F7; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx512f,avx512dq,avx512vl | FileCheck %s --check-prefixes=AVX512,AVX512VL,AVX512VLDQ8; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx512f,avx512bw,avx512vl | FileCheck %s --check-prefixes=AVX512,AVX512VL,AVX512VLBW9 10;11; vXf6412;13 14define void @compressstore_v8f64_v8i1(ptr %base, <8 x double> %V, <8 x i1> %mask) {15; SSE-LABEL: compressstore_v8f64_v8i1:16; SSE:       ## %bb.0:17; SSE-NEXT:    psllw $15, %xmm418; SSE-NEXT:    packsswb %xmm4, %xmm419; SSE-NEXT:    pmovmskb %xmm4, %eax20; SSE-NEXT:    testb $1, %al21; SSE-NEXT:    jne LBB0_122; SSE-NEXT:  ## %bb.2: ## %else23; SSE-NEXT:    testb $2, %al24; SSE-NEXT:    jne LBB0_325; SSE-NEXT:  LBB0_4: ## %else226; SSE-NEXT:    testb $4, %al27; SSE-NEXT:    jne LBB0_528; SSE-NEXT:  LBB0_6: ## %else529; SSE-NEXT:    testb $8, %al30; SSE-NEXT:    jne LBB0_731; SSE-NEXT:  LBB0_8: ## %else832; SSE-NEXT:    testb $16, %al33; SSE-NEXT:    jne LBB0_934; SSE-NEXT:  LBB0_10: ## %else1135; SSE-NEXT:    testb $32, %al36; SSE-NEXT:    jne LBB0_1137; SSE-NEXT:  LBB0_12: ## %else1438; SSE-NEXT:    testb $64, %al39; SSE-NEXT:    jne LBB0_1340; SSE-NEXT:  LBB0_14: ## %else1741; SSE-NEXT:    testb $-128, %al42; SSE-NEXT:    jne LBB0_1543; SSE-NEXT:  LBB0_16: ## %else2044; SSE-NEXT:    retq45; SSE-NEXT:  LBB0_1: ## %cond.store46; SSE-NEXT:    movq %xmm0, (%rdi)47; SSE-NEXT:    addq $8, %rdi48; SSE-NEXT:    testb $2, %al49; SSE-NEXT:    je LBB0_450; SSE-NEXT:  LBB0_3: ## %cond.store151; SSE-NEXT:    movhpd %xmm0, (%rdi)52; SSE-NEXT:    addq $8, %rdi53; SSE-NEXT:    testb $4, %al54; SSE-NEXT:    je LBB0_655; SSE-NEXT:  LBB0_5: ## %cond.store456; SSE-NEXT:    movlps %xmm1, (%rdi)57; SSE-NEXT:    addq $8, %rdi58; SSE-NEXT:    testb $8, %al59; SSE-NEXT:    je LBB0_860; SSE-NEXT:  LBB0_7: ## %cond.store761; SSE-NEXT:    movhps %xmm1, (%rdi)62; SSE-NEXT:    addq $8, %rdi63; SSE-NEXT:    testb $16, %al64; SSE-NEXT:    je LBB0_1065; SSE-NEXT:  LBB0_9: ## %cond.store1066; SSE-NEXT:    movlps %xmm2, (%rdi)67; SSE-NEXT:    addq $8, %rdi68; SSE-NEXT:    testb $32, %al69; SSE-NEXT:    je LBB0_1270; SSE-NEXT:  LBB0_11: ## %cond.store1371; SSE-NEXT:    movhps %xmm2, (%rdi)72; SSE-NEXT:    addq $8, %rdi73; SSE-NEXT:    testb $64, %al74; SSE-NEXT:    je LBB0_1475; SSE-NEXT:  LBB0_13: ## %cond.store1676; SSE-NEXT:    movlps %xmm3, (%rdi)77; SSE-NEXT:    addq $8, %rdi78; SSE-NEXT:    testb $-128, %al79; SSE-NEXT:    je LBB0_1680; SSE-NEXT:  LBB0_15: ## %cond.store1981; SSE-NEXT:    movhps %xmm3, (%rdi)82; SSE-NEXT:    retq83;84; AVX1-LABEL: compressstore_v8f64_v8i1:85; AVX1:       ## %bb.0:86; AVX1-NEXT:    vpsllw $15, %xmm2, %xmm287; AVX1-NEXT:    vpacksswb %xmm2, %xmm2, %xmm288; AVX1-NEXT:    vpmovmskb %xmm2, %eax89; AVX1-NEXT:    testb $1, %al90; AVX1-NEXT:    je LBB0_291; AVX1-NEXT:  ## %bb.1: ## %cond.store92; AVX1-NEXT:    vmovq %xmm0, (%rdi)93; AVX1-NEXT:    addq $8, %rdi94; AVX1-NEXT:  LBB0_2: ## %else95; AVX1-NEXT:    testb $2, %al96; AVX1-NEXT:    je LBB0_497; AVX1-NEXT:  ## %bb.3: ## %cond.store198; AVX1-NEXT:    vmovhpd %xmm0, (%rdi)99; AVX1-NEXT:    addq $8, %rdi100; AVX1-NEXT:  LBB0_4: ## %else2101; AVX1-NEXT:    testb $4, %al102; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0103; AVX1-NEXT:    jne LBB0_5104; AVX1-NEXT:  ## %bb.6: ## %else5105; AVX1-NEXT:    testb $8, %al106; AVX1-NEXT:    jne LBB0_7107; AVX1-NEXT:  LBB0_8: ## %else8108; AVX1-NEXT:    testb $16, %al109; AVX1-NEXT:    jne LBB0_9110; AVX1-NEXT:  LBB0_10: ## %else11111; AVX1-NEXT:    testb $32, %al112; AVX1-NEXT:    je LBB0_12113; AVX1-NEXT:  LBB0_11: ## %cond.store13114; AVX1-NEXT:    vmovhps %xmm1, (%rdi)115; AVX1-NEXT:    addq $8, %rdi116; AVX1-NEXT:  LBB0_12: ## %else14117; AVX1-NEXT:    testb $64, %al118; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm0119; AVX1-NEXT:    jne LBB0_13120; AVX1-NEXT:  ## %bb.14: ## %else17121; AVX1-NEXT:    testb $-128, %al122; AVX1-NEXT:    jne LBB0_15123; AVX1-NEXT:  LBB0_16: ## %else20124; AVX1-NEXT:    vzeroupper125; AVX1-NEXT:    retq126; AVX1-NEXT:  LBB0_5: ## %cond.store4127; AVX1-NEXT:    vmovlps %xmm0, (%rdi)128; AVX1-NEXT:    addq $8, %rdi129; AVX1-NEXT:    testb $8, %al130; AVX1-NEXT:    je LBB0_8131; AVX1-NEXT:  LBB0_7: ## %cond.store7132; AVX1-NEXT:    vmovhps %xmm0, (%rdi)133; AVX1-NEXT:    addq $8, %rdi134; AVX1-NEXT:    testb $16, %al135; AVX1-NEXT:    je LBB0_10136; AVX1-NEXT:  LBB0_9: ## %cond.store10137; AVX1-NEXT:    vmovlps %xmm1, (%rdi)138; AVX1-NEXT:    addq $8, %rdi139; AVX1-NEXT:    testb $32, %al140; AVX1-NEXT:    jne LBB0_11141; AVX1-NEXT:    jmp LBB0_12142; AVX1-NEXT:  LBB0_13: ## %cond.store16143; AVX1-NEXT:    vmovlps %xmm0, (%rdi)144; AVX1-NEXT:    addq $8, %rdi145; AVX1-NEXT:    testb $-128, %al146; AVX1-NEXT:    je LBB0_16147; AVX1-NEXT:  LBB0_15: ## %cond.store19148; AVX1-NEXT:    vmovhps %xmm0, (%rdi)149; AVX1-NEXT:    vzeroupper150; AVX1-NEXT:    retq151;152; AVX2-LABEL: compressstore_v8f64_v8i1:153; AVX2:       ## %bb.0:154; AVX2-NEXT:    vpsllw $15, %xmm2, %xmm2155; AVX2-NEXT:    vpacksswb %xmm2, %xmm2, %xmm2156; AVX2-NEXT:    vpmovmskb %xmm2, %eax157; AVX2-NEXT:    testb $1, %al158; AVX2-NEXT:    je LBB0_2159; AVX2-NEXT:  ## %bb.1: ## %cond.store160; AVX2-NEXT:    vmovq %xmm0, (%rdi)161; AVX2-NEXT:    addq $8, %rdi162; AVX2-NEXT:  LBB0_2: ## %else163; AVX2-NEXT:    testb $2, %al164; AVX2-NEXT:    je LBB0_4165; AVX2-NEXT:  ## %bb.3: ## %cond.store1166; AVX2-NEXT:    vmovhpd %xmm0, (%rdi)167; AVX2-NEXT:    addq $8, %rdi168; AVX2-NEXT:  LBB0_4: ## %else2169; AVX2-NEXT:    testb $4, %al170; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm0171; AVX2-NEXT:    jne LBB0_5172; AVX2-NEXT:  ## %bb.6: ## %else5173; AVX2-NEXT:    testb $8, %al174; AVX2-NEXT:    jne LBB0_7175; AVX2-NEXT:  LBB0_8: ## %else8176; AVX2-NEXT:    testb $16, %al177; AVX2-NEXT:    jne LBB0_9178; AVX2-NEXT:  LBB0_10: ## %else11179; AVX2-NEXT:    testb $32, %al180; AVX2-NEXT:    je LBB0_12181; AVX2-NEXT:  LBB0_11: ## %cond.store13182; AVX2-NEXT:    vmovhps %xmm1, (%rdi)183; AVX2-NEXT:    addq $8, %rdi184; AVX2-NEXT:  LBB0_12: ## %else14185; AVX2-NEXT:    testb $64, %al186; AVX2-NEXT:    vextractf128 $1, %ymm1, %xmm0187; AVX2-NEXT:    jne LBB0_13188; AVX2-NEXT:  ## %bb.14: ## %else17189; AVX2-NEXT:    testb $-128, %al190; AVX2-NEXT:    jne LBB0_15191; AVX2-NEXT:  LBB0_16: ## %else20192; AVX2-NEXT:    vzeroupper193; AVX2-NEXT:    retq194; AVX2-NEXT:  LBB0_5: ## %cond.store4195; AVX2-NEXT:    vmovq %xmm0, (%rdi)196; AVX2-NEXT:    addq $8, %rdi197; AVX2-NEXT:    testb $8, %al198; AVX2-NEXT:    je LBB0_8199; AVX2-NEXT:  LBB0_7: ## %cond.store7200; AVX2-NEXT:    vmovhpd %xmm0, (%rdi)201; AVX2-NEXT:    addq $8, %rdi202; AVX2-NEXT:    testb $16, %al203; AVX2-NEXT:    je LBB0_10204; AVX2-NEXT:  LBB0_9: ## %cond.store10205; AVX2-NEXT:    vmovlps %xmm1, (%rdi)206; AVX2-NEXT:    addq $8, %rdi207; AVX2-NEXT:    testb $32, %al208; AVX2-NEXT:    jne LBB0_11209; AVX2-NEXT:    jmp LBB0_12210; AVX2-NEXT:  LBB0_13: ## %cond.store16211; AVX2-NEXT:    vmovlps %xmm0, (%rdi)212; AVX2-NEXT:    addq $8, %rdi213; AVX2-NEXT:    testb $-128, %al214; AVX2-NEXT:    je LBB0_16215; AVX2-NEXT:  LBB0_15: ## %cond.store19216; AVX2-NEXT:    vmovhps %xmm0, (%rdi)217; AVX2-NEXT:    vzeroupper218; AVX2-NEXT:    retq219;220; AVX512F-LABEL: compressstore_v8f64_v8i1:221; AVX512F:       ## %bb.0:222; AVX512F-NEXT:    vpmovsxwq %xmm1, %zmm1223; AVX512F-NEXT:    vpsllq $63, %zmm1, %zmm1224; AVX512F-NEXT:    vptestmq %zmm1, %zmm1, %k1225; AVX512F-NEXT:    vcompresspd %zmm0, (%rdi) {%k1}226; AVX512F-NEXT:    vzeroupper227; AVX512F-NEXT:    retq228;229; AVX512VLDQ-LABEL: compressstore_v8f64_v8i1:230; AVX512VLDQ:       ## %bb.0:231; AVX512VLDQ-NEXT:    vpmovsxwd %xmm1, %ymm1232; AVX512VLDQ-NEXT:    vpslld $31, %ymm1, %ymm1233; AVX512VLDQ-NEXT:    vpmovd2m %ymm1, %k1234; AVX512VLDQ-NEXT:    vcompresspd %zmm0, (%rdi) {%k1}235; AVX512VLDQ-NEXT:    vzeroupper236; AVX512VLDQ-NEXT:    retq237;238; AVX512VLBW-LABEL: compressstore_v8f64_v8i1:239; AVX512VLBW:       ## %bb.0:240; AVX512VLBW-NEXT:    vpsllw $15, %xmm1, %xmm1241; AVX512VLBW-NEXT:    vpmovw2m %xmm1, %k1242; AVX512VLBW-NEXT:    vcompresspd %zmm0, (%rdi) {%k1}243; AVX512VLBW-NEXT:    vzeroupper244; AVX512VLBW-NEXT:    retq245  call void @llvm.masked.compressstore.v8f64(<8 x double> %V, ptr %base, <8 x i1> %mask)246  ret void247}248 249define void @compressstore_v16f64_v16i1(ptr %base, <16 x double> %V, <16 x i1> %mask) {250; SSE-LABEL: compressstore_v16f64_v16i1:251; SSE:       ## %bb.0:252; SSE-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm8253; SSE-NEXT:    psllw $7, %xmm8254; SSE-NEXT:    pmovmskb %xmm8, %eax255; SSE-NEXT:    testb $1, %al256; SSE-NEXT:    jne LBB1_1257; SSE-NEXT:  ## %bb.2: ## %else258; SSE-NEXT:    testb $2, %al259; SSE-NEXT:    jne LBB1_3260; SSE-NEXT:  LBB1_4: ## %else2261; SSE-NEXT:    testb $4, %al262; SSE-NEXT:    jne LBB1_5263; SSE-NEXT:  LBB1_6: ## %else5264; SSE-NEXT:    testb $8, %al265; SSE-NEXT:    jne LBB1_7266; SSE-NEXT:  LBB1_8: ## %else8267; SSE-NEXT:    testb $16, %al268; SSE-NEXT:    jne LBB1_9269; SSE-NEXT:  LBB1_10: ## %else11270; SSE-NEXT:    testb $32, %al271; SSE-NEXT:    jne LBB1_11272; SSE-NEXT:  LBB1_12: ## %else14273; SSE-NEXT:    testb $64, %al274; SSE-NEXT:    jne LBB1_13275; SSE-NEXT:  LBB1_14: ## %else17276; SSE-NEXT:    testb %al, %al277; SSE-NEXT:    js LBB1_15278; SSE-NEXT:  LBB1_16: ## %else20279; SSE-NEXT:    testl $256, %eax ## imm = 0x100280; SSE-NEXT:    jne LBB1_17281; SSE-NEXT:  LBB1_18: ## %else23282; SSE-NEXT:    testl $512, %eax ## imm = 0x200283; SSE-NEXT:    jne LBB1_19284; SSE-NEXT:  LBB1_20: ## %else26285; SSE-NEXT:    testl $1024, %eax ## imm = 0x400286; SSE-NEXT:    jne LBB1_21287; SSE-NEXT:  LBB1_22: ## %else29288; SSE-NEXT:    testl $2048, %eax ## imm = 0x800289; SSE-NEXT:    jne LBB1_23290; SSE-NEXT:  LBB1_24: ## %else32291; SSE-NEXT:    testl $4096, %eax ## imm = 0x1000292; SSE-NEXT:    jne LBB1_25293; SSE-NEXT:  LBB1_26: ## %else35294; SSE-NEXT:    testl $8192, %eax ## imm = 0x2000295; SSE-NEXT:    jne LBB1_27296; SSE-NEXT:  LBB1_28: ## %else38297; SSE-NEXT:    testl $16384, %eax ## imm = 0x4000298; SSE-NEXT:    jne LBB1_29299; SSE-NEXT:  LBB1_30: ## %else41300; SSE-NEXT:    testl $32768, %eax ## imm = 0x8000301; SSE-NEXT:    jne LBB1_31302; SSE-NEXT:  LBB1_32: ## %else44303; SSE-NEXT:    retq304; SSE-NEXT:  LBB1_1: ## %cond.store305; SSE-NEXT:    movlps %xmm0, (%rdi)306; SSE-NEXT:    addq $8, %rdi307; SSE-NEXT:    testb $2, %al308; SSE-NEXT:    je LBB1_4309; SSE-NEXT:  LBB1_3: ## %cond.store1310; SSE-NEXT:    movhps %xmm0, (%rdi)311; SSE-NEXT:    addq $8, %rdi312; SSE-NEXT:    testb $4, %al313; SSE-NEXT:    je LBB1_6314; SSE-NEXT:  LBB1_5: ## %cond.store4315; SSE-NEXT:    movlps %xmm1, (%rdi)316; SSE-NEXT:    addq $8, %rdi317; SSE-NEXT:    testb $8, %al318; SSE-NEXT:    je LBB1_8319; SSE-NEXT:  LBB1_7: ## %cond.store7320; SSE-NEXT:    movhps %xmm1, (%rdi)321; SSE-NEXT:    addq $8, %rdi322; SSE-NEXT:    testb $16, %al323; SSE-NEXT:    je LBB1_10324; SSE-NEXT:  LBB1_9: ## %cond.store10325; SSE-NEXT:    movlps %xmm2, (%rdi)326; SSE-NEXT:    addq $8, %rdi327; SSE-NEXT:    testb $32, %al328; SSE-NEXT:    je LBB1_12329; SSE-NEXT:  LBB1_11: ## %cond.store13330; SSE-NEXT:    movhps %xmm2, (%rdi)331; SSE-NEXT:    addq $8, %rdi332; SSE-NEXT:    testb $64, %al333; SSE-NEXT:    je LBB1_14334; SSE-NEXT:  LBB1_13: ## %cond.store16335; SSE-NEXT:    movlps %xmm3, (%rdi)336; SSE-NEXT:    addq $8, %rdi337; SSE-NEXT:    testb %al, %al338; SSE-NEXT:    jns LBB1_16339; SSE-NEXT:  LBB1_15: ## %cond.store19340; SSE-NEXT:    movhps %xmm3, (%rdi)341; SSE-NEXT:    addq $8, %rdi342; SSE-NEXT:    testl $256, %eax ## imm = 0x100343; SSE-NEXT:    je LBB1_18344; SSE-NEXT:  LBB1_17: ## %cond.store22345; SSE-NEXT:    movlps %xmm4, (%rdi)346; SSE-NEXT:    addq $8, %rdi347; SSE-NEXT:    testl $512, %eax ## imm = 0x200348; SSE-NEXT:    je LBB1_20349; SSE-NEXT:  LBB1_19: ## %cond.store25350; SSE-NEXT:    movhps %xmm4, (%rdi)351; SSE-NEXT:    addq $8, %rdi352; SSE-NEXT:    testl $1024, %eax ## imm = 0x400353; SSE-NEXT:    je LBB1_22354; SSE-NEXT:  LBB1_21: ## %cond.store28355; SSE-NEXT:    movlps %xmm5, (%rdi)356; SSE-NEXT:    addq $8, %rdi357; SSE-NEXT:    testl $2048, %eax ## imm = 0x800358; SSE-NEXT:    je LBB1_24359; SSE-NEXT:  LBB1_23: ## %cond.store31360; SSE-NEXT:    movhps %xmm5, (%rdi)361; SSE-NEXT:    addq $8, %rdi362; SSE-NEXT:    testl $4096, %eax ## imm = 0x1000363; SSE-NEXT:    je LBB1_26364; SSE-NEXT:  LBB1_25: ## %cond.store34365; SSE-NEXT:    movlps %xmm6, (%rdi)366; SSE-NEXT:    addq $8, %rdi367; SSE-NEXT:    testl $8192, %eax ## imm = 0x2000368; SSE-NEXT:    je LBB1_28369; SSE-NEXT:  LBB1_27: ## %cond.store37370; SSE-NEXT:    movhps %xmm6, (%rdi)371; SSE-NEXT:    addq $8, %rdi372; SSE-NEXT:    testl $16384, %eax ## imm = 0x4000373; SSE-NEXT:    je LBB1_30374; SSE-NEXT:  LBB1_29: ## %cond.store40375; SSE-NEXT:    movlps %xmm7, (%rdi)376; SSE-NEXT:    addq $8, %rdi377; SSE-NEXT:    testl $32768, %eax ## imm = 0x8000378; SSE-NEXT:    je LBB1_32379; SSE-NEXT:  LBB1_31: ## %cond.store43380; SSE-NEXT:    movhps %xmm7, (%rdi)381; SSE-NEXT:    retq382;383; AVX1OR2-LABEL: compressstore_v16f64_v16i1:384; AVX1OR2:       ## %bb.0:385; AVX1OR2-NEXT:    vpsllw $7, %xmm4, %xmm4386; AVX1OR2-NEXT:    vpmovmskb %xmm4, %eax387; AVX1OR2-NEXT:    testb $1, %al388; AVX1OR2-NEXT:    je LBB1_2389; AVX1OR2-NEXT:  ## %bb.1: ## %cond.store390; AVX1OR2-NEXT:    vmovlps %xmm0, (%rdi)391; AVX1OR2-NEXT:    addq $8, %rdi392; AVX1OR2-NEXT:  LBB1_2: ## %else393; AVX1OR2-NEXT:    testb $2, %al394; AVX1OR2-NEXT:    je LBB1_4395; AVX1OR2-NEXT:  ## %bb.3: ## %cond.store1396; AVX1OR2-NEXT:    vmovhps %xmm0, (%rdi)397; AVX1OR2-NEXT:    addq $8, %rdi398; AVX1OR2-NEXT:  LBB1_4: ## %else2399; AVX1OR2-NEXT:    testb $4, %al400; AVX1OR2-NEXT:    vextractf128 $1, %ymm0, %xmm0401; AVX1OR2-NEXT:    jne LBB1_5402; AVX1OR2-NEXT:  ## %bb.6: ## %else5403; AVX1OR2-NEXT:    testb $8, %al404; AVX1OR2-NEXT:    jne LBB1_7405; AVX1OR2-NEXT:  LBB1_8: ## %else8406; AVX1OR2-NEXT:    testb $16, %al407; AVX1OR2-NEXT:    jne LBB1_9408; AVX1OR2-NEXT:  LBB1_10: ## %else11409; AVX1OR2-NEXT:    testb $32, %al410; AVX1OR2-NEXT:    je LBB1_12411; AVX1OR2-NEXT:  LBB1_11: ## %cond.store13412; AVX1OR2-NEXT:    vmovhps %xmm1, (%rdi)413; AVX1OR2-NEXT:    addq $8, %rdi414; AVX1OR2-NEXT:  LBB1_12: ## %else14415; AVX1OR2-NEXT:    testb $64, %al416; AVX1OR2-NEXT:    vextractf128 $1, %ymm1, %xmm0417; AVX1OR2-NEXT:    jne LBB1_13418; AVX1OR2-NEXT:  ## %bb.14: ## %else17419; AVX1OR2-NEXT:    testb %al, %al420; AVX1OR2-NEXT:    js LBB1_15421; AVX1OR2-NEXT:  LBB1_16: ## %else20422; AVX1OR2-NEXT:    testl $256, %eax ## imm = 0x100423; AVX1OR2-NEXT:    jne LBB1_17424; AVX1OR2-NEXT:  LBB1_18: ## %else23425; AVX1OR2-NEXT:    testl $512, %eax ## imm = 0x200426; AVX1OR2-NEXT:    je LBB1_20427; AVX1OR2-NEXT:  LBB1_19: ## %cond.store25428; AVX1OR2-NEXT:    vmovhps %xmm2, (%rdi)429; AVX1OR2-NEXT:    addq $8, %rdi430; AVX1OR2-NEXT:  LBB1_20: ## %else26431; AVX1OR2-NEXT:    testl $1024, %eax ## imm = 0x400432; AVX1OR2-NEXT:    vextractf128 $1, %ymm2, %xmm0433; AVX1OR2-NEXT:    jne LBB1_21434; AVX1OR2-NEXT:  ## %bb.22: ## %else29435; AVX1OR2-NEXT:    testl $2048, %eax ## imm = 0x800436; AVX1OR2-NEXT:    jne LBB1_23437; AVX1OR2-NEXT:  LBB1_24: ## %else32438; AVX1OR2-NEXT:    testl $4096, %eax ## imm = 0x1000439; AVX1OR2-NEXT:    jne LBB1_25440; AVX1OR2-NEXT:  LBB1_26: ## %else35441; AVX1OR2-NEXT:    testl $8192, %eax ## imm = 0x2000442; AVX1OR2-NEXT:    je LBB1_28443; AVX1OR2-NEXT:  LBB1_27: ## %cond.store37444; AVX1OR2-NEXT:    vmovhps %xmm3, (%rdi)445; AVX1OR2-NEXT:    addq $8, %rdi446; AVX1OR2-NEXT:  LBB1_28: ## %else38447; AVX1OR2-NEXT:    testl $16384, %eax ## imm = 0x4000448; AVX1OR2-NEXT:    vextractf128 $1, %ymm3, %xmm0449; AVX1OR2-NEXT:    jne LBB1_29450; AVX1OR2-NEXT:  ## %bb.30: ## %else41451; AVX1OR2-NEXT:    testl $32768, %eax ## imm = 0x8000452; AVX1OR2-NEXT:    jne LBB1_31453; AVX1OR2-NEXT:  LBB1_32: ## %else44454; AVX1OR2-NEXT:    vzeroupper455; AVX1OR2-NEXT:    retq456; AVX1OR2-NEXT:  LBB1_5: ## %cond.store4457; AVX1OR2-NEXT:    vmovlps %xmm0, (%rdi)458; AVX1OR2-NEXT:    addq $8, %rdi459; AVX1OR2-NEXT:    testb $8, %al460; AVX1OR2-NEXT:    je LBB1_8461; AVX1OR2-NEXT:  LBB1_7: ## %cond.store7462; AVX1OR2-NEXT:    vmovhps %xmm0, (%rdi)463; AVX1OR2-NEXT:    addq $8, %rdi464; AVX1OR2-NEXT:    testb $16, %al465; AVX1OR2-NEXT:    je LBB1_10466; AVX1OR2-NEXT:  LBB1_9: ## %cond.store10467; AVX1OR2-NEXT:    vmovlps %xmm1, (%rdi)468; AVX1OR2-NEXT:    addq $8, %rdi469; AVX1OR2-NEXT:    testb $32, %al470; AVX1OR2-NEXT:    jne LBB1_11471; AVX1OR2-NEXT:    jmp LBB1_12472; AVX1OR2-NEXT:  LBB1_13: ## %cond.store16473; AVX1OR2-NEXT:    vmovlps %xmm0, (%rdi)474; AVX1OR2-NEXT:    addq $8, %rdi475; AVX1OR2-NEXT:    testb %al, %al476; AVX1OR2-NEXT:    jns LBB1_16477; AVX1OR2-NEXT:  LBB1_15: ## %cond.store19478; AVX1OR2-NEXT:    vmovhps %xmm0, (%rdi)479; AVX1OR2-NEXT:    addq $8, %rdi480; AVX1OR2-NEXT:    testl $256, %eax ## imm = 0x100481; AVX1OR2-NEXT:    je LBB1_18482; AVX1OR2-NEXT:  LBB1_17: ## %cond.store22483; AVX1OR2-NEXT:    vmovlps %xmm2, (%rdi)484; AVX1OR2-NEXT:    addq $8, %rdi485; AVX1OR2-NEXT:    testl $512, %eax ## imm = 0x200486; AVX1OR2-NEXT:    jne LBB1_19487; AVX1OR2-NEXT:    jmp LBB1_20488; AVX1OR2-NEXT:  LBB1_21: ## %cond.store28489; AVX1OR2-NEXT:    vmovlps %xmm0, (%rdi)490; AVX1OR2-NEXT:    addq $8, %rdi491; AVX1OR2-NEXT:    testl $2048, %eax ## imm = 0x800492; AVX1OR2-NEXT:    je LBB1_24493; AVX1OR2-NEXT:  LBB1_23: ## %cond.store31494; AVX1OR2-NEXT:    vmovhps %xmm0, (%rdi)495; AVX1OR2-NEXT:    addq $8, %rdi496; AVX1OR2-NEXT:    testl $4096, %eax ## imm = 0x1000497; AVX1OR2-NEXT:    je LBB1_26498; AVX1OR2-NEXT:  LBB1_25: ## %cond.store34499; AVX1OR2-NEXT:    vmovlps %xmm3, (%rdi)500; AVX1OR2-NEXT:    addq $8, %rdi501; AVX1OR2-NEXT:    testl $8192, %eax ## imm = 0x2000502; AVX1OR2-NEXT:    jne LBB1_27503; AVX1OR2-NEXT:    jmp LBB1_28504; AVX1OR2-NEXT:  LBB1_29: ## %cond.store40505; AVX1OR2-NEXT:    vmovlps %xmm0, (%rdi)506; AVX1OR2-NEXT:    addq $8, %rdi507; AVX1OR2-NEXT:    testl $32768, %eax ## imm = 0x8000508; AVX1OR2-NEXT:    je LBB1_32509; AVX1OR2-NEXT:  LBB1_31: ## %cond.store43510; AVX1OR2-NEXT:    vmovhps %xmm0, (%rdi)511; AVX1OR2-NEXT:    vzeroupper512; AVX1OR2-NEXT:    retq513;514; AVX512F-LABEL: compressstore_v16f64_v16i1:515; AVX512F:       ## %bb.0:516; AVX512F-NEXT:    vpmovsxbd %xmm2, %zmm2517; AVX512F-NEXT:    vpslld $31, %zmm2, %zmm2518; AVX512F-NEXT:    vptestmd %zmm2, %zmm2, %k1519; AVX512F-NEXT:    kshiftrw $8, %k1, %k2520; AVX512F-NEXT:    kmovw %k1, %eax521; AVX512F-NEXT:    movzbl %al, %eax522; AVX512F-NEXT:    imull $134480385, %eax, %eax ## imm = 0x8040201523; AVX512F-NEXT:    shrl $3, %eax524; AVX512F-NEXT:    andl $286331153, %eax ## imm = 0x11111111525; AVX512F-NEXT:    imull $286331153, %eax, %eax ## imm = 0x11111111526; AVX512F-NEXT:    shrl $28, %eax527; AVX512F-NEXT:    vcompresspd %zmm1, (%rdi,%rax,8) {%k2}528; AVX512F-NEXT:    vcompresspd %zmm0, (%rdi) {%k1}529; AVX512F-NEXT:    vzeroupper530; AVX512F-NEXT:    retq531;532; AVX512VLDQ-LABEL: compressstore_v16f64_v16i1:533; AVX512VLDQ:       ## %bb.0:534; AVX512VLDQ-NEXT:    vpmovsxbd %xmm2, %zmm2535; AVX512VLDQ-NEXT:    vpslld $31, %zmm2, %zmm2536; AVX512VLDQ-NEXT:    vpmovd2m %zmm2, %k1537; AVX512VLDQ-NEXT:    kshiftrw $8, %k1, %k2538; AVX512VLDQ-NEXT:    kmovb %k1, %eax539; AVX512VLDQ-NEXT:    imull $134480385, %eax, %eax ## imm = 0x8040201540; AVX512VLDQ-NEXT:    shrl $3, %eax541; AVX512VLDQ-NEXT:    andl $286331153, %eax ## imm = 0x11111111542; AVX512VLDQ-NEXT:    imull $286331153, %eax, %eax ## imm = 0x11111111543; AVX512VLDQ-NEXT:    shrl $28, %eax544; AVX512VLDQ-NEXT:    vcompresspd %zmm1, (%rdi,%rax,8) {%k2}545; AVX512VLDQ-NEXT:    vcompresspd %zmm0, (%rdi) {%k1}546; AVX512VLDQ-NEXT:    vzeroupper547; AVX512VLDQ-NEXT:    retq548;549; AVX512VLBW-LABEL: compressstore_v16f64_v16i1:550; AVX512VLBW:       ## %bb.0:551; AVX512VLBW-NEXT:    vpsllw $7, %xmm2, %xmm2552; AVX512VLBW-NEXT:    vpmovb2m %xmm2, %k1553; AVX512VLBW-NEXT:    kshiftrw $8, %k1, %k2554; AVX512VLBW-NEXT:    kmovd %k1, %eax555; AVX512VLBW-NEXT:    movzbl %al, %eax556; AVX512VLBW-NEXT:    imull $134480385, %eax, %eax ## imm = 0x8040201557; AVX512VLBW-NEXT:    shrl $3, %eax558; AVX512VLBW-NEXT:    andl $286331153, %eax ## imm = 0x11111111559; AVX512VLBW-NEXT:    imull $286331153, %eax, %eax ## imm = 0x11111111560; AVX512VLBW-NEXT:    shrl $28, %eax561; AVX512VLBW-NEXT:    vcompresspd %zmm1, (%rdi,%rax,8) {%k2}562; AVX512VLBW-NEXT:    vcompresspd %zmm0, (%rdi) {%k1}563; AVX512VLBW-NEXT:    vzeroupper564; AVX512VLBW-NEXT:    retq565  call void @llvm.masked.compressstore.v16f64(<16 x double> %V, ptr %base, <16 x i1> %mask)566  ret void567}568 569;570; vXf32571;572 573define void @compressstore_v2f32_v2i32(ptr %base, <2 x float> %V, <2 x i32> %trigger) {574; SSE2-LABEL: compressstore_v2f32_v2i32:575; SSE2:       ## %bb.0:576; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]577; SSE2-NEXT:    pxor %xmm2, %xmm2578; SSE2-NEXT:    pcmpeqd %xmm1, %xmm2579; SSE2-NEXT:    movmskpd %xmm2, %eax580; SSE2-NEXT:    testb $1, %al581; SSE2-NEXT:    jne LBB2_1582; SSE2-NEXT:  ## %bb.2: ## %else583; SSE2-NEXT:    testb $2, %al584; SSE2-NEXT:    jne LBB2_3585; SSE2-NEXT:  LBB2_4: ## %else2586; SSE2-NEXT:    retq587; SSE2-NEXT:  LBB2_1: ## %cond.store588; SSE2-NEXT:    movss %xmm0, (%rdi)589; SSE2-NEXT:    addq $4, %rdi590; SSE2-NEXT:    testb $2, %al591; SSE2-NEXT:    je LBB2_4592; SSE2-NEXT:  LBB2_3: ## %cond.store1593; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1,1,1]594; SSE2-NEXT:    movss %xmm0, (%rdi)595; SSE2-NEXT:    retq596;597; SSE42-LABEL: compressstore_v2f32_v2i32:598; SSE42:       ## %bb.0:599; SSE42-NEXT:    pxor %xmm2, %xmm2600; SSE42-NEXT:    pcmpeqd %xmm1, %xmm2601; SSE42-NEXT:    pmovsxdq %xmm2, %xmm1602; SSE42-NEXT:    movmskpd %xmm1, %eax603; SSE42-NEXT:    testb $1, %al604; SSE42-NEXT:    jne LBB2_1605; SSE42-NEXT:  ## %bb.2: ## %else606; SSE42-NEXT:    testb $2, %al607; SSE42-NEXT:    jne LBB2_3608; SSE42-NEXT:  LBB2_4: ## %else2609; SSE42-NEXT:    retq610; SSE42-NEXT:  LBB2_1: ## %cond.store611; SSE42-NEXT:    movss %xmm0, (%rdi)612; SSE42-NEXT:    addq $4, %rdi613; SSE42-NEXT:    testb $2, %al614; SSE42-NEXT:    je LBB2_4615; SSE42-NEXT:  LBB2_3: ## %cond.store1616; SSE42-NEXT:    extractps $1, %xmm0, (%rdi)617; SSE42-NEXT:    retq618;619; AVX1OR2-LABEL: compressstore_v2f32_v2i32:620; AVX1OR2:       ## %bb.0:621; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm2622; AVX1OR2-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm1623; AVX1OR2-NEXT:    vpmovsxdq %xmm1, %xmm1624; AVX1OR2-NEXT:    vmovmskpd %xmm1, %eax625; AVX1OR2-NEXT:    testb $1, %al626; AVX1OR2-NEXT:    jne LBB2_1627; AVX1OR2-NEXT:  ## %bb.2: ## %else628; AVX1OR2-NEXT:    testb $2, %al629; AVX1OR2-NEXT:    jne LBB2_3630; AVX1OR2-NEXT:  LBB2_4: ## %else2631; AVX1OR2-NEXT:    retq632; AVX1OR2-NEXT:  LBB2_1: ## %cond.store633; AVX1OR2-NEXT:    vmovss %xmm0, (%rdi)634; AVX1OR2-NEXT:    addq $4, %rdi635; AVX1OR2-NEXT:    testb $2, %al636; AVX1OR2-NEXT:    je LBB2_4637; AVX1OR2-NEXT:  LBB2_3: ## %cond.store1638; AVX1OR2-NEXT:    vextractps $1, %xmm0, (%rdi)639; AVX1OR2-NEXT:    retq640;641; AVX512F-LABEL: compressstore_v2f32_v2i32:642; AVX512F:       ## %bb.0:643; AVX512F-NEXT:    ## kill: def $xmm1 killed $xmm1 def $zmm1644; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm0645; AVX512F-NEXT:    vptestnmd %zmm1, %zmm1, %k0646; AVX512F-NEXT:    kshiftlw $14, %k0, %k0647; AVX512F-NEXT:    kshiftrw $14, %k0, %k1648; AVX512F-NEXT:    vcompressps %zmm0, (%rdi) {%k1}649; AVX512F-NEXT:    vzeroupper650; AVX512F-NEXT:    retq651;652; AVX512VLDQ-LABEL: compressstore_v2f32_v2i32:653; AVX512VLDQ:       ## %bb.0:654; AVX512VLDQ-NEXT:    vptestnmd %xmm1, %xmm1, %k0655; AVX512VLDQ-NEXT:    kshiftlb $6, %k0, %k0656; AVX512VLDQ-NEXT:    kshiftrb $6, %k0, %k1657; AVX512VLDQ-NEXT:    vcompressps %xmm0, (%rdi) {%k1}658; AVX512VLDQ-NEXT:    retq659;660; AVX512VLBW-LABEL: compressstore_v2f32_v2i32:661; AVX512VLBW:       ## %bb.0:662; AVX512VLBW-NEXT:    vptestnmd %xmm1, %xmm1, %k0663; AVX512VLBW-NEXT:    kshiftlw $14, %k0, %k0664; AVX512VLBW-NEXT:    kshiftrw $14, %k0, %k1665; AVX512VLBW-NEXT:    vcompressps %xmm0, (%rdi) {%k1}666; AVX512VLBW-NEXT:    retq667  %mask = icmp eq <2 x i32> %trigger, zeroinitializer668  call void @llvm.masked.compressstore.v2f32(<2 x float> %V, ptr %base, <2 x i1> %mask)669  ret void670}671 672define void @compressstore_v4f32_v4i1(ptr %base, <4 x float> %V, <4 x i1> %mask) {673; SSE2-LABEL: compressstore_v4f32_v4i1:674; SSE2:       ## %bb.0:675; SSE2-NEXT:    pslld $31, %xmm1676; SSE2-NEXT:    movmskps %xmm1, %eax677; SSE2-NEXT:    testb $1, %al678; SSE2-NEXT:    jne LBB3_1679; SSE2-NEXT:  ## %bb.2: ## %else680; SSE2-NEXT:    testb $2, %al681; SSE2-NEXT:    jne LBB3_3682; SSE2-NEXT:  LBB3_4: ## %else2683; SSE2-NEXT:    testb $4, %al684; SSE2-NEXT:    jne LBB3_5685; SSE2-NEXT:  LBB3_6: ## %else5686; SSE2-NEXT:    testb $8, %al687; SSE2-NEXT:    jne LBB3_7688; SSE2-NEXT:  LBB3_8: ## %else8689; SSE2-NEXT:    retq690; SSE2-NEXT:  LBB3_1: ## %cond.store691; SSE2-NEXT:    movss %xmm0, (%rdi)692; SSE2-NEXT:    addq $4, %rdi693; SSE2-NEXT:    testb $2, %al694; SSE2-NEXT:    je LBB3_4695; SSE2-NEXT:  LBB3_3: ## %cond.store1696; SSE2-NEXT:    movaps %xmm0, %xmm1697; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,1],xmm0[1,1]698; SSE2-NEXT:    movss %xmm1, (%rdi)699; SSE2-NEXT:    addq $4, %rdi700; SSE2-NEXT:    testb $4, %al701; SSE2-NEXT:    je LBB3_6702; SSE2-NEXT:  LBB3_5: ## %cond.store4703; SSE2-NEXT:    movaps %xmm0, %xmm1704; SSE2-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]705; SSE2-NEXT:    movss %xmm1, (%rdi)706; SSE2-NEXT:    addq $4, %rdi707; SSE2-NEXT:    testb $8, %al708; SSE2-NEXT:    je LBB3_8709; SSE2-NEXT:  LBB3_7: ## %cond.store7710; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]711; SSE2-NEXT:    movss %xmm0, (%rdi)712; SSE2-NEXT:    retq713;714; SSE42-LABEL: compressstore_v4f32_v4i1:715; SSE42:       ## %bb.0:716; SSE42-NEXT:    pslld $31, %xmm1717; SSE42-NEXT:    movmskps %xmm1, %eax718; SSE42-NEXT:    testb $1, %al719; SSE42-NEXT:    jne LBB3_1720; SSE42-NEXT:  ## %bb.2: ## %else721; SSE42-NEXT:    testb $2, %al722; SSE42-NEXT:    jne LBB3_3723; SSE42-NEXT:  LBB3_4: ## %else2724; SSE42-NEXT:    testb $4, %al725; SSE42-NEXT:    jne LBB3_5726; SSE42-NEXT:  LBB3_6: ## %else5727; SSE42-NEXT:    testb $8, %al728; SSE42-NEXT:    jne LBB3_7729; SSE42-NEXT:  LBB3_8: ## %else8730; SSE42-NEXT:    retq731; SSE42-NEXT:  LBB3_1: ## %cond.store732; SSE42-NEXT:    movss %xmm0, (%rdi)733; SSE42-NEXT:    addq $4, %rdi734; SSE42-NEXT:    testb $2, %al735; SSE42-NEXT:    je LBB3_4736; SSE42-NEXT:  LBB3_3: ## %cond.store1737; SSE42-NEXT:    extractps $1, %xmm0, (%rdi)738; SSE42-NEXT:    addq $4, %rdi739; SSE42-NEXT:    testb $4, %al740; SSE42-NEXT:    je LBB3_6741; SSE42-NEXT:  LBB3_5: ## %cond.store4742; SSE42-NEXT:    extractps $2, %xmm0, (%rdi)743; SSE42-NEXT:    addq $4, %rdi744; SSE42-NEXT:    testb $8, %al745; SSE42-NEXT:    je LBB3_8746; SSE42-NEXT:  LBB3_7: ## %cond.store7747; SSE42-NEXT:    extractps $3, %xmm0, (%rdi)748; SSE42-NEXT:    retq749;750; AVX1OR2-LABEL: compressstore_v4f32_v4i1:751; AVX1OR2:       ## %bb.0:752; AVX1OR2-NEXT:    vpslld $31, %xmm1, %xmm1753; AVX1OR2-NEXT:    vmovmskps %xmm1, %eax754; AVX1OR2-NEXT:    testb $1, %al755; AVX1OR2-NEXT:    jne LBB3_1756; AVX1OR2-NEXT:  ## %bb.2: ## %else757; AVX1OR2-NEXT:    testb $2, %al758; AVX1OR2-NEXT:    jne LBB3_3759; AVX1OR2-NEXT:  LBB3_4: ## %else2760; AVX1OR2-NEXT:    testb $4, %al761; AVX1OR2-NEXT:    jne LBB3_5762; AVX1OR2-NEXT:  LBB3_6: ## %else5763; AVX1OR2-NEXT:    testb $8, %al764; AVX1OR2-NEXT:    jne LBB3_7765; AVX1OR2-NEXT:  LBB3_8: ## %else8766; AVX1OR2-NEXT:    retq767; AVX1OR2-NEXT:  LBB3_1: ## %cond.store768; AVX1OR2-NEXT:    vmovss %xmm0, (%rdi)769; AVX1OR2-NEXT:    addq $4, %rdi770; AVX1OR2-NEXT:    testb $2, %al771; AVX1OR2-NEXT:    je LBB3_4772; AVX1OR2-NEXT:  LBB3_3: ## %cond.store1773; AVX1OR2-NEXT:    vextractps $1, %xmm0, (%rdi)774; AVX1OR2-NEXT:    addq $4, %rdi775; AVX1OR2-NEXT:    testb $4, %al776; AVX1OR2-NEXT:    je LBB3_6777; AVX1OR2-NEXT:  LBB3_5: ## %cond.store4778; AVX1OR2-NEXT:    vextractps $2, %xmm0, (%rdi)779; AVX1OR2-NEXT:    addq $4, %rdi780; AVX1OR2-NEXT:    testb $8, %al781; AVX1OR2-NEXT:    je LBB3_8782; AVX1OR2-NEXT:  LBB3_7: ## %cond.store7783; AVX1OR2-NEXT:    vextractps $3, %xmm0, (%rdi)784; AVX1OR2-NEXT:    retq785;786; AVX512F-LABEL: compressstore_v4f32_v4i1:787; AVX512F:       ## %bb.0:788; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm0789; AVX512F-NEXT:    vpslld $31, %xmm1, %xmm1790; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k0791; AVX512F-NEXT:    kshiftlw $12, %k0, %k0792; AVX512F-NEXT:    kshiftrw $12, %k0, %k1793; AVX512F-NEXT:    vcompressps %zmm0, (%rdi) {%k1}794; AVX512F-NEXT:    vzeroupper795; AVX512F-NEXT:    retq796;797; AVX512VLDQ-LABEL: compressstore_v4f32_v4i1:798; AVX512VLDQ:       ## %bb.0:799; AVX512VLDQ-NEXT:    vpslld $31, %xmm1, %xmm1800; AVX512VLDQ-NEXT:    vpmovd2m %xmm1, %k1801; AVX512VLDQ-NEXT:    vcompressps %xmm0, (%rdi) {%k1}802; AVX512VLDQ-NEXT:    retq803;804; AVX512VLBW-LABEL: compressstore_v4f32_v4i1:805; AVX512VLBW:       ## %bb.0:806; AVX512VLBW-NEXT:    vpslld $31, %xmm1, %xmm1807; AVX512VLBW-NEXT:    vptestmd %xmm1, %xmm1, %k1808; AVX512VLBW-NEXT:    vcompressps %xmm0, (%rdi) {%k1}809; AVX512VLBW-NEXT:    retq810  call void @llvm.masked.compressstore.v4f32(<4 x float> %V, ptr %base, <4 x i1> %mask)811  ret void812}813 814define void @compressstore_v8f32_v8i1(ptr %base, <8 x float> %V, <8 x i1> %mask) {815; SSE2-LABEL: compressstore_v8f32_v8i1:816; SSE2:       ## %bb.0:817; SSE2-NEXT:    psllw $15, %xmm2818; SSE2-NEXT:    packsswb %xmm2, %xmm2819; SSE2-NEXT:    pmovmskb %xmm2, %eax820; SSE2-NEXT:    testb $1, %al821; SSE2-NEXT:    jne LBB4_1822; SSE2-NEXT:  ## %bb.2: ## %else823; SSE2-NEXT:    testb $2, %al824; SSE2-NEXT:    jne LBB4_3825; SSE2-NEXT:  LBB4_4: ## %else2826; SSE2-NEXT:    testb $4, %al827; SSE2-NEXT:    jne LBB4_5828; SSE2-NEXT:  LBB4_6: ## %else5829; SSE2-NEXT:    testb $8, %al830; SSE2-NEXT:    jne LBB4_7831; SSE2-NEXT:  LBB4_8: ## %else8832; SSE2-NEXT:    testb $16, %al833; SSE2-NEXT:    jne LBB4_9834; SSE2-NEXT:  LBB4_10: ## %else11835; SSE2-NEXT:    testb $32, %al836; SSE2-NEXT:    jne LBB4_11837; SSE2-NEXT:  LBB4_12: ## %else14838; SSE2-NEXT:    testb $64, %al839; SSE2-NEXT:    jne LBB4_13840; SSE2-NEXT:  LBB4_14: ## %else17841; SSE2-NEXT:    testb $-128, %al842; SSE2-NEXT:    jne LBB4_15843; SSE2-NEXT:  LBB4_16: ## %else20844; SSE2-NEXT:    retq845; SSE2-NEXT:  LBB4_1: ## %cond.store846; SSE2-NEXT:    movd %xmm0, (%rdi)847; SSE2-NEXT:    addq $4, %rdi848; SSE2-NEXT:    testb $2, %al849; SSE2-NEXT:    je LBB4_4850; SSE2-NEXT:  LBB4_3: ## %cond.store1851; SSE2-NEXT:    movdqa %xmm0, %xmm2852; SSE2-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1],xmm0[1,1]853; SSE2-NEXT:    movss %xmm2, (%rdi)854; SSE2-NEXT:    addq $4, %rdi855; SSE2-NEXT:    testb $4, %al856; SSE2-NEXT:    je LBB4_6857; SSE2-NEXT:  LBB4_5: ## %cond.store4858; SSE2-NEXT:    movdqa %xmm0, %xmm2859; SSE2-NEXT:    punpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm0[1]860; SSE2-NEXT:    movd %xmm2, (%rdi)861; SSE2-NEXT:    addq $4, %rdi862; SSE2-NEXT:    testb $8, %al863; SSE2-NEXT:    je LBB4_8864; SSE2-NEXT:  LBB4_7: ## %cond.store7865; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]866; SSE2-NEXT:    movss %xmm0, (%rdi)867; SSE2-NEXT:    addq $4, %rdi868; SSE2-NEXT:    testb $16, %al869; SSE2-NEXT:    je LBB4_10870; SSE2-NEXT:  LBB4_9: ## %cond.store10871; SSE2-NEXT:    movss %xmm1, (%rdi)872; SSE2-NEXT:    addq $4, %rdi873; SSE2-NEXT:    testb $32, %al874; SSE2-NEXT:    je LBB4_12875; SSE2-NEXT:  LBB4_11: ## %cond.store13876; SSE2-NEXT:    movaps %xmm1, %xmm0877; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm1[1,1]878; SSE2-NEXT:    movss %xmm0, (%rdi)879; SSE2-NEXT:    addq $4, %rdi880; SSE2-NEXT:    testb $64, %al881; SSE2-NEXT:    je LBB4_14882; SSE2-NEXT:  LBB4_13: ## %cond.store16883; SSE2-NEXT:    movaps %xmm1, %xmm0884; SSE2-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]885; SSE2-NEXT:    movss %xmm0, (%rdi)886; SSE2-NEXT:    addq $4, %rdi887; SSE2-NEXT:    testb $-128, %al888; SSE2-NEXT:    je LBB4_16889; SSE2-NEXT:  LBB4_15: ## %cond.store19890; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]891; SSE2-NEXT:    movss %xmm1, (%rdi)892; SSE2-NEXT:    retq893;894; SSE42-LABEL: compressstore_v8f32_v8i1:895; SSE42:       ## %bb.0:896; SSE42-NEXT:    psllw $15, %xmm2897; SSE42-NEXT:    packsswb %xmm2, %xmm2898; SSE42-NEXT:    pmovmskb %xmm2, %eax899; SSE42-NEXT:    testb $1, %al900; SSE42-NEXT:    jne LBB4_1901; SSE42-NEXT:  ## %bb.2: ## %else902; SSE42-NEXT:    testb $2, %al903; SSE42-NEXT:    jne LBB4_3904; SSE42-NEXT:  LBB4_4: ## %else2905; SSE42-NEXT:    testb $4, %al906; SSE42-NEXT:    jne LBB4_5907; SSE42-NEXT:  LBB4_6: ## %else5908; SSE42-NEXT:    testb $8, %al909; SSE42-NEXT:    jne LBB4_7910; SSE42-NEXT:  LBB4_8: ## %else8911; SSE42-NEXT:    testb $16, %al912; SSE42-NEXT:    jne LBB4_9913; SSE42-NEXT:  LBB4_10: ## %else11914; SSE42-NEXT:    testb $32, %al915; SSE42-NEXT:    jne LBB4_11916; SSE42-NEXT:  LBB4_12: ## %else14917; SSE42-NEXT:    testb $64, %al918; SSE42-NEXT:    jne LBB4_13919; SSE42-NEXT:  LBB4_14: ## %else17920; SSE42-NEXT:    testb $-128, %al921; SSE42-NEXT:    jne LBB4_15922; SSE42-NEXT:  LBB4_16: ## %else20923; SSE42-NEXT:    retq924; SSE42-NEXT:  LBB4_1: ## %cond.store925; SSE42-NEXT:    movd %xmm0, (%rdi)926; SSE42-NEXT:    addq $4, %rdi927; SSE42-NEXT:    testb $2, %al928; SSE42-NEXT:    je LBB4_4929; SSE42-NEXT:  LBB4_3: ## %cond.store1930; SSE42-NEXT:    pextrd $1, %xmm0, (%rdi)931; SSE42-NEXT:    addq $4, %rdi932; SSE42-NEXT:    testb $4, %al933; SSE42-NEXT:    je LBB4_6934; SSE42-NEXT:  LBB4_5: ## %cond.store4935; SSE42-NEXT:    pextrd $2, %xmm0, (%rdi)936; SSE42-NEXT:    addq $4, %rdi937; SSE42-NEXT:    testb $8, %al938; SSE42-NEXT:    je LBB4_8939; SSE42-NEXT:  LBB4_7: ## %cond.store7940; SSE42-NEXT:    pextrd $3, %xmm0, (%rdi)941; SSE42-NEXT:    addq $4, %rdi942; SSE42-NEXT:    testb $16, %al943; SSE42-NEXT:    je LBB4_10944; SSE42-NEXT:  LBB4_9: ## %cond.store10945; SSE42-NEXT:    movss %xmm1, (%rdi)946; SSE42-NEXT:    addq $4, %rdi947; SSE42-NEXT:    testb $32, %al948; SSE42-NEXT:    je LBB4_12949; SSE42-NEXT:  LBB4_11: ## %cond.store13950; SSE42-NEXT:    extractps $1, %xmm1, (%rdi)951; SSE42-NEXT:    addq $4, %rdi952; SSE42-NEXT:    testb $64, %al953; SSE42-NEXT:    je LBB4_14954; SSE42-NEXT:  LBB4_13: ## %cond.store16955; SSE42-NEXT:    extractps $2, %xmm1, (%rdi)956; SSE42-NEXT:    addq $4, %rdi957; SSE42-NEXT:    testb $-128, %al958; SSE42-NEXT:    je LBB4_16959; SSE42-NEXT:  LBB4_15: ## %cond.store19960; SSE42-NEXT:    extractps $3, %xmm1, (%rdi)961; SSE42-NEXT:    retq962;963; AVX1-LABEL: compressstore_v8f32_v8i1:964; AVX1:       ## %bb.0:965; AVX1-NEXT:    vpsllw $15, %xmm1, %xmm1966; AVX1-NEXT:    vpacksswb %xmm1, %xmm1, %xmm1967; AVX1-NEXT:    vpmovmskb %xmm1, %eax968; AVX1-NEXT:    testb $1, %al969; AVX1-NEXT:    jne LBB4_1970; AVX1-NEXT:  ## %bb.2: ## %else971; AVX1-NEXT:    testb $2, %al972; AVX1-NEXT:    jne LBB4_3973; AVX1-NEXT:  LBB4_4: ## %else2974; AVX1-NEXT:    testb $4, %al975; AVX1-NEXT:    jne LBB4_5976; AVX1-NEXT:  LBB4_6: ## %else5977; AVX1-NEXT:    testb $8, %al978; AVX1-NEXT:    je LBB4_8979; AVX1-NEXT:  LBB4_7: ## %cond.store7980; AVX1-NEXT:    vpextrd $3, %xmm0, (%rdi)981; AVX1-NEXT:    addq $4, %rdi982; AVX1-NEXT:  LBB4_8: ## %else8983; AVX1-NEXT:    testb $16, %al984; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0985; AVX1-NEXT:    jne LBB4_9986; AVX1-NEXT:  ## %bb.10: ## %else11987; AVX1-NEXT:    testb $32, %al988; AVX1-NEXT:    jne LBB4_11989; AVX1-NEXT:  LBB4_12: ## %else14990; AVX1-NEXT:    testb $64, %al991; AVX1-NEXT:    jne LBB4_13992; AVX1-NEXT:  LBB4_14: ## %else17993; AVX1-NEXT:    testb $-128, %al994; AVX1-NEXT:    jne LBB4_15995; AVX1-NEXT:  LBB4_16: ## %else20996; AVX1-NEXT:    vzeroupper997; AVX1-NEXT:    retq998; AVX1-NEXT:  LBB4_1: ## %cond.store999; AVX1-NEXT:    vmovd %xmm0, (%rdi)1000; AVX1-NEXT:    addq $4, %rdi1001; AVX1-NEXT:    testb $2, %al1002; AVX1-NEXT:    je LBB4_41003; AVX1-NEXT:  LBB4_3: ## %cond.store11004; AVX1-NEXT:    vpextrd $1, %xmm0, (%rdi)1005; AVX1-NEXT:    addq $4, %rdi1006; AVX1-NEXT:    testb $4, %al1007; AVX1-NEXT:    je LBB4_61008; AVX1-NEXT:  LBB4_5: ## %cond.store41009; AVX1-NEXT:    vpextrd $2, %xmm0, (%rdi)1010; AVX1-NEXT:    addq $4, %rdi1011; AVX1-NEXT:    testb $8, %al1012; AVX1-NEXT:    jne LBB4_71013; AVX1-NEXT:    jmp LBB4_81014; AVX1-NEXT:  LBB4_9: ## %cond.store101015; AVX1-NEXT:    vmovss %xmm0, (%rdi)1016; AVX1-NEXT:    addq $4, %rdi1017; AVX1-NEXT:    testb $32, %al1018; AVX1-NEXT:    je LBB4_121019; AVX1-NEXT:  LBB4_11: ## %cond.store131020; AVX1-NEXT:    vextractps $1, %xmm0, (%rdi)1021; AVX1-NEXT:    addq $4, %rdi1022; AVX1-NEXT:    testb $64, %al1023; AVX1-NEXT:    je LBB4_141024; AVX1-NEXT:  LBB4_13: ## %cond.store161025; AVX1-NEXT:    vextractps $2, %xmm0, (%rdi)1026; AVX1-NEXT:    addq $4, %rdi1027; AVX1-NEXT:    testb $-128, %al1028; AVX1-NEXT:    je LBB4_161029; AVX1-NEXT:  LBB4_15: ## %cond.store191030; AVX1-NEXT:    vextractps $3, %xmm0, (%rdi)1031; AVX1-NEXT:    vzeroupper1032; AVX1-NEXT:    retq1033;1034; AVX2-LABEL: compressstore_v8f32_v8i1:1035; AVX2:       ## %bb.0:1036; AVX2-NEXT:    vpsllw $15, %xmm1, %xmm11037; AVX2-NEXT:    vpacksswb %xmm1, %xmm1, %xmm11038; AVX2-NEXT:    vpmovmskb %xmm1, %eax1039; AVX2-NEXT:    testb $1, %al1040; AVX2-NEXT:    jne LBB4_11041; AVX2-NEXT:  ## %bb.2: ## %else1042; AVX2-NEXT:    testb $2, %al1043; AVX2-NEXT:    jne LBB4_31044; AVX2-NEXT:  LBB4_4: ## %else21045; AVX2-NEXT:    testb $4, %al1046; AVX2-NEXT:    jne LBB4_51047; AVX2-NEXT:  LBB4_6: ## %else51048; AVX2-NEXT:    testb $8, %al1049; AVX2-NEXT:    je LBB4_81050; AVX2-NEXT:  LBB4_7: ## %cond.store71051; AVX2-NEXT:    vpextrd $3, %xmm0, (%rdi)1052; AVX2-NEXT:    addq $4, %rdi1053; AVX2-NEXT:  LBB4_8: ## %else81054; AVX2-NEXT:    testb $16, %al1055; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm01056; AVX2-NEXT:    jne LBB4_91057; AVX2-NEXT:  ## %bb.10: ## %else111058; AVX2-NEXT:    testb $32, %al1059; AVX2-NEXT:    jne LBB4_111060; AVX2-NEXT:  LBB4_12: ## %else141061; AVX2-NEXT:    testb $64, %al1062; AVX2-NEXT:    jne LBB4_131063; AVX2-NEXT:  LBB4_14: ## %else171064; AVX2-NEXT:    testb $-128, %al1065; AVX2-NEXT:    jne LBB4_151066; AVX2-NEXT:  LBB4_16: ## %else201067; AVX2-NEXT:    vzeroupper1068; AVX2-NEXT:    retq1069; AVX2-NEXT:  LBB4_1: ## %cond.store1070; AVX2-NEXT:    vmovd %xmm0, (%rdi)1071; AVX2-NEXT:    addq $4, %rdi1072; AVX2-NEXT:    testb $2, %al1073; AVX2-NEXT:    je LBB4_41074; AVX2-NEXT:  LBB4_3: ## %cond.store11075; AVX2-NEXT:    vpextrd $1, %xmm0, (%rdi)1076; AVX2-NEXT:    addq $4, %rdi1077; AVX2-NEXT:    testb $4, %al1078; AVX2-NEXT:    je LBB4_61079; AVX2-NEXT:  LBB4_5: ## %cond.store41080; AVX2-NEXT:    vpextrd $2, %xmm0, (%rdi)1081; AVX2-NEXT:    addq $4, %rdi1082; AVX2-NEXT:    testb $8, %al1083; AVX2-NEXT:    jne LBB4_71084; AVX2-NEXT:    jmp LBB4_81085; AVX2-NEXT:  LBB4_9: ## %cond.store101086; AVX2-NEXT:    vmovd %xmm0, (%rdi)1087; AVX2-NEXT:    addq $4, %rdi1088; AVX2-NEXT:    testb $32, %al1089; AVX2-NEXT:    je LBB4_121090; AVX2-NEXT:  LBB4_11: ## %cond.store131091; AVX2-NEXT:    vpextrd $1, %xmm0, (%rdi)1092; AVX2-NEXT:    addq $4, %rdi1093; AVX2-NEXT:    testb $64, %al1094; AVX2-NEXT:    je LBB4_141095; AVX2-NEXT:  LBB4_13: ## %cond.store161096; AVX2-NEXT:    vpextrd $2, %xmm0, (%rdi)1097; AVX2-NEXT:    addq $4, %rdi1098; AVX2-NEXT:    testb $-128, %al1099; AVX2-NEXT:    je LBB4_161100; AVX2-NEXT:  LBB4_15: ## %cond.store191101; AVX2-NEXT:    vpextrd $3, %xmm0, (%rdi)1102; AVX2-NEXT:    vzeroupper1103; AVX2-NEXT:    retq1104;1105; AVX512F-LABEL: compressstore_v8f32_v8i1:1106; AVX512F:       ## %bb.0:1107; AVX512F-NEXT:    ## kill: def $ymm0 killed $ymm0 def $zmm01108; AVX512F-NEXT:    vpmovsxwq %xmm1, %zmm11109; AVX512F-NEXT:    vpsllq $63, %zmm1, %zmm11110; AVX512F-NEXT:    vptestmq %zmm1, %zmm1, %k11111; AVX512F-NEXT:    vcompressps %zmm0, (%rdi) {%k1}1112; AVX512F-NEXT:    vzeroupper1113; AVX512F-NEXT:    retq1114;1115; AVX512VLDQ-LABEL: compressstore_v8f32_v8i1:1116; AVX512VLDQ:       ## %bb.0:1117; AVX512VLDQ-NEXT:    vpmovsxwd %xmm1, %ymm11118; AVX512VLDQ-NEXT:    vpslld $31, %ymm1, %ymm11119; AVX512VLDQ-NEXT:    vpmovd2m %ymm1, %k11120; AVX512VLDQ-NEXT:    vcompressps %ymm0, (%rdi) {%k1}1121; AVX512VLDQ-NEXT:    vzeroupper1122; AVX512VLDQ-NEXT:    retq1123;1124; AVX512VLBW-LABEL: compressstore_v8f32_v8i1:1125; AVX512VLBW:       ## %bb.0:1126; AVX512VLBW-NEXT:    vpsllw $15, %xmm1, %xmm11127; AVX512VLBW-NEXT:    vpmovw2m %xmm1, %k11128; AVX512VLBW-NEXT:    vcompressps %ymm0, (%rdi) {%k1}1129; AVX512VLBW-NEXT:    vzeroupper1130; AVX512VLBW-NEXT:    retq1131  call void @llvm.masked.compressstore.v8f32(<8 x float> %V, ptr %base, <8 x i1> %mask)1132  ret void1133}1134 1135define void @compressstore_v16f32_const(ptr %base, <16 x float> %V) {1136; SSE2-LABEL: compressstore_v16f32_const:1137; SSE2:       ## %bb.0:1138; SSE2-NEXT:    movss %xmm0, (%rdi)1139; SSE2-NEXT:    movaps %xmm0, %xmm41140; SSE2-NEXT:    shufps {{.*#+}} xmm4 = xmm4[1,1],xmm0[1,1]1141; SSE2-NEXT:    movss %xmm4, 4(%rdi)1142; SSE2-NEXT:    movaps %xmm0, %xmm41143; SSE2-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm0[1]1144; SSE2-NEXT:    movss %xmm4, 8(%rdi)1145; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]1146; SSE2-NEXT:    movss %xmm0, 12(%rdi)1147; SSE2-NEXT:    movss %xmm1, 16(%rdi)1148; SSE2-NEXT:    movaps %xmm1, %xmm01149; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm1[1,1]1150; SSE2-NEXT:    movss %xmm0, 20(%rdi)1151; SSE2-NEXT:    movaps %xmm1, %xmm01152; SSE2-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]1153; SSE2-NEXT:    movss %xmm0, 24(%rdi)1154; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]1155; SSE2-NEXT:    movss %xmm1, 28(%rdi)1156; SSE2-NEXT:    movss %xmm2, 32(%rdi)1157; SSE2-NEXT:    movaps %xmm2, %xmm01158; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm2[1,1]1159; SSE2-NEXT:    movss %xmm0, 36(%rdi)1160; SSE2-NEXT:    movhlps {{.*#+}} xmm2 = xmm2[1,1]1161; SSE2-NEXT:    movss %xmm2, 40(%rdi)1162; SSE2-NEXT:    movss %xmm3, 44(%rdi)1163; SSE2-NEXT:    movaps %xmm3, %xmm01164; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm3[1,1]1165; SSE2-NEXT:    movss %xmm0, 48(%rdi)1166; SSE2-NEXT:    movaps %xmm3, %xmm01167; SSE2-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm3[1]1168; SSE2-NEXT:    movss %xmm0, 52(%rdi)1169; SSE2-NEXT:    shufps {{.*#+}} xmm3 = xmm3[3,3,3,3]1170; SSE2-NEXT:    movss %xmm3, 56(%rdi)1171; SSE2-NEXT:    retq1172;1173; SSE42-LABEL: compressstore_v16f32_const:1174; SSE42:       ## %bb.0:1175; SSE42-NEXT:    movups %xmm0, (%rdi)1176; SSE42-NEXT:    movups %xmm1, 16(%rdi)1177; SSE42-NEXT:    insertps {{.*#+}} xmm2 = xmm2[0,1,2],xmm3[0]1178; SSE42-NEXT:    movups %xmm2, 32(%rdi)1179; SSE42-NEXT:    extractps $1, %xmm3, 48(%rdi)1180; SSE42-NEXT:    extractps $2, %xmm3, 52(%rdi)1181; SSE42-NEXT:    extractps $3, %xmm3, 56(%rdi)1182; SSE42-NEXT:    retq1183;1184; AVX1-LABEL: compressstore_v16f32_const:1185; AVX1:       ## %bb.0:1186; AVX1-NEXT:    vmovups %ymm0, (%rdi)1187; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm01188; AVX1-NEXT:    vinsertps {{.*#+}} xmm1 = xmm1[0,1,2],xmm0[0]1189; AVX1-NEXT:    vmovups %xmm1, 32(%rdi)1190; AVX1-NEXT:    vextractps $1, %xmm0, 48(%rdi)1191; AVX1-NEXT:    vextractps $2, %xmm0, 52(%rdi)1192; AVX1-NEXT:    vextractps $3, %xmm0, 56(%rdi)1193; AVX1-NEXT:    vzeroupper1194; AVX1-NEXT:    retq1195;1196; AVX2-LABEL: compressstore_v16f32_const:1197; AVX2:       ## %bb.0:1198; AVX2-NEXT:    vmovups %ymm0, (%rdi)1199; AVX2-NEXT:    vmovaps {{.*#+}} xmm0 = [0,1,2,4]1200; AVX2-NEXT:    vpermps %ymm1, %ymm0, %ymm01201; AVX2-NEXT:    vmovups %xmm0, 32(%rdi)1202; AVX2-NEXT:    vextractf128 $1, %ymm1, %xmm01203; AVX2-NEXT:    vextractps $1, %xmm0, 48(%rdi)1204; AVX2-NEXT:    vextractps $2, %xmm0, 52(%rdi)1205; AVX2-NEXT:    vextractps $3, %xmm0, 56(%rdi)1206; AVX2-NEXT:    vzeroupper1207; AVX2-NEXT:    retq1208;1209; AVX512F-LABEL: compressstore_v16f32_const:1210; AVX512F:       ## %bb.0:1211; AVX512F-NEXT:    movw $-2049, %ax ## imm = 0xF7FF1212; AVX512F-NEXT:    kmovw %eax, %k11213; AVX512F-NEXT:    vcompressps %zmm0, (%rdi) {%k1}1214; AVX512F-NEXT:    vzeroupper1215; AVX512F-NEXT:    retq1216;1217; AVX512VLDQ-LABEL: compressstore_v16f32_const:1218; AVX512VLDQ:       ## %bb.0:1219; AVX512VLDQ-NEXT:    movw $-2049, %ax ## imm = 0xF7FF1220; AVX512VLDQ-NEXT:    kmovw %eax, %k11221; AVX512VLDQ-NEXT:    vcompressps %zmm0, (%rdi) {%k1}1222; AVX512VLDQ-NEXT:    vzeroupper1223; AVX512VLDQ-NEXT:    retq1224;1225; AVX512VLBW-LABEL: compressstore_v16f32_const:1226; AVX512VLBW:       ## %bb.0:1227; AVX512VLBW-NEXT:    movw $-2049, %ax ## imm = 0xF7FF1228; AVX512VLBW-NEXT:    kmovd %eax, %k11229; AVX512VLBW-NEXT:    vcompressps %zmm0, (%rdi) {%k1}1230; AVX512VLBW-NEXT:    vzeroupper1231; AVX512VLBW-NEXT:    retq1232  call void @llvm.masked.compressstore.v16f32(<16 x float> %V, ptr %base, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 true>)1233  ret void1234}1235 1236define void @compressstore_v32f32_v32i32(ptr %base, <32 x float> %V, <32 x i32> %trigger) {1237; SSE2-LABEL: compressstore_v32f32_v32i32:1238; SSE2:       ## %bb.0:1239; SSE2-NEXT:    pxor %xmm8, %xmm81240; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91241; SSE2-NEXT:    pcmpeqd %xmm8, %xmm91242; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm101243; SSE2-NEXT:    pcmpeqd %xmm8, %xmm101244; SSE2-NEXT:    packssdw %xmm9, %xmm101245; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91246; SSE2-NEXT:    pcmpeqd %xmm8, %xmm91247; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm111248; SSE2-NEXT:    pcmpeqd %xmm8, %xmm111249; SSE2-NEXT:    packssdw %xmm9, %xmm111250; SSE2-NEXT:    packsswb %xmm10, %xmm111251; SSE2-NEXT:    pmovmskb %xmm11, %ecx1252; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91253; SSE2-NEXT:    pcmpeqd %xmm8, %xmm91254; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm101255; SSE2-NEXT:    pcmpeqd %xmm8, %xmm101256; SSE2-NEXT:    packssdw %xmm9, %xmm101257; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91258; SSE2-NEXT:    pcmpeqd %xmm8, %xmm91259; SSE2-NEXT:    pcmpeqd {{[0-9]+}}(%rsp), %xmm81260; SSE2-NEXT:    packssdw %xmm9, %xmm81261; SSE2-NEXT:    packsswb %xmm10, %xmm81262; SSE2-NEXT:    pmovmskb %xmm8, %eax1263; SSE2-NEXT:    shll $16, %eax1264; SSE2-NEXT:    orl %ecx, %eax1265; SSE2-NEXT:    testb $1, %al1266; SSE2-NEXT:    jne LBB6_11267; SSE2-NEXT:  ## %bb.2: ## %else1268; SSE2-NEXT:    testb $2, %al1269; SSE2-NEXT:    jne LBB6_31270; SSE2-NEXT:  LBB6_4: ## %else21271; SSE2-NEXT:    testb $4, %al1272; SSE2-NEXT:    jne LBB6_51273; SSE2-NEXT:  LBB6_6: ## %else51274; SSE2-NEXT:    testb $8, %al1275; SSE2-NEXT:    jne LBB6_71276; SSE2-NEXT:  LBB6_8: ## %else81277; SSE2-NEXT:    testb $16, %al1278; SSE2-NEXT:    jne LBB6_91279; SSE2-NEXT:  LBB6_10: ## %else111280; SSE2-NEXT:    testb $32, %al1281; SSE2-NEXT:    jne LBB6_111282; SSE2-NEXT:  LBB6_12: ## %else141283; SSE2-NEXT:    testb $64, %al1284; SSE2-NEXT:    jne LBB6_131285; SSE2-NEXT:  LBB6_14: ## %else171286; SSE2-NEXT:    testb %al, %al1287; SSE2-NEXT:    js LBB6_151288; SSE2-NEXT:  LBB6_16: ## %else201289; SSE2-NEXT:    testl $256, %eax ## imm = 0x1001290; SSE2-NEXT:    jne LBB6_171291; SSE2-NEXT:  LBB6_18: ## %else231292; SSE2-NEXT:    testl $512, %eax ## imm = 0x2001293; SSE2-NEXT:    jne LBB6_191294; SSE2-NEXT:  LBB6_20: ## %else261295; SSE2-NEXT:    testl $1024, %eax ## imm = 0x4001296; SSE2-NEXT:    jne LBB6_211297; SSE2-NEXT:  LBB6_22: ## %else291298; SSE2-NEXT:    testl $2048, %eax ## imm = 0x8001299; SSE2-NEXT:    jne LBB6_231300; SSE2-NEXT:  LBB6_24: ## %else321301; SSE2-NEXT:    testl $4096, %eax ## imm = 0x10001302; SSE2-NEXT:    jne LBB6_251303; SSE2-NEXT:  LBB6_26: ## %else351304; SSE2-NEXT:    testl $8192, %eax ## imm = 0x20001305; SSE2-NEXT:    jne LBB6_271306; SSE2-NEXT:  LBB6_28: ## %else381307; SSE2-NEXT:    testl $16384, %eax ## imm = 0x40001308; SSE2-NEXT:    jne LBB6_291309; SSE2-NEXT:  LBB6_30: ## %else411310; SSE2-NEXT:    testw %ax, %ax1311; SSE2-NEXT:    js LBB6_311312; SSE2-NEXT:  LBB6_32: ## %else441313; SSE2-NEXT:    testl $65536, %eax ## imm = 0x100001314; SSE2-NEXT:    jne LBB6_331315; SSE2-NEXT:  LBB6_34: ## %else471316; SSE2-NEXT:    testl $131072, %eax ## imm = 0x200001317; SSE2-NEXT:    jne LBB6_351318; SSE2-NEXT:  LBB6_36: ## %else501319; SSE2-NEXT:    testl $262144, %eax ## imm = 0x400001320; SSE2-NEXT:    jne LBB6_371321; SSE2-NEXT:  LBB6_38: ## %else531322; SSE2-NEXT:    testl $524288, %eax ## imm = 0x800001323; SSE2-NEXT:    jne LBB6_391324; SSE2-NEXT:  LBB6_40: ## %else561325; SSE2-NEXT:    testl $1048576, %eax ## imm = 0x1000001326; SSE2-NEXT:    jne LBB6_411327; SSE2-NEXT:  LBB6_42: ## %else591328; SSE2-NEXT:    testl $2097152, %eax ## imm = 0x2000001329; SSE2-NEXT:    jne LBB6_431330; SSE2-NEXT:  LBB6_44: ## %else621331; SSE2-NEXT:    testl $4194304, %eax ## imm = 0x4000001332; SSE2-NEXT:    jne LBB6_451333; SSE2-NEXT:  LBB6_46: ## %else651334; SSE2-NEXT:    testl $8388608, %eax ## imm = 0x8000001335; SSE2-NEXT:    jne LBB6_471336; SSE2-NEXT:  LBB6_48: ## %else681337; SSE2-NEXT:    testl $16777216, %eax ## imm = 0x10000001338; SSE2-NEXT:    jne LBB6_491339; SSE2-NEXT:  LBB6_50: ## %else711340; SSE2-NEXT:    testl $33554432, %eax ## imm = 0x20000001341; SSE2-NEXT:    jne LBB6_511342; SSE2-NEXT:  LBB6_52: ## %else741343; SSE2-NEXT:    testl $67108864, %eax ## imm = 0x40000001344; SSE2-NEXT:    jne LBB6_531345; SSE2-NEXT:  LBB6_54: ## %else771346; SSE2-NEXT:    testl $134217728, %eax ## imm = 0x80000001347; SSE2-NEXT:    jne LBB6_551348; SSE2-NEXT:  LBB6_56: ## %else801349; SSE2-NEXT:    testl $268435456, %eax ## imm = 0x100000001350; SSE2-NEXT:    jne LBB6_571351; SSE2-NEXT:  LBB6_58: ## %else831352; SSE2-NEXT:    testl $536870912, %eax ## imm = 0x200000001353; SSE2-NEXT:    jne LBB6_591354; SSE2-NEXT:  LBB6_60: ## %else861355; SSE2-NEXT:    testl $1073741824, %eax ## imm = 0x400000001356; SSE2-NEXT:    jne LBB6_611357; SSE2-NEXT:  LBB6_62: ## %else891358; SSE2-NEXT:    testl $-2147483648, %eax ## imm = 0x800000001359; SSE2-NEXT:    jne LBB6_631360; SSE2-NEXT:  LBB6_64: ## %else921361; SSE2-NEXT:    retq1362; SSE2-NEXT:  LBB6_1: ## %cond.store1363; SSE2-NEXT:    movss %xmm0, (%rdi)1364; SSE2-NEXT:    addq $4, %rdi1365; SSE2-NEXT:    testb $2, %al1366; SSE2-NEXT:    je LBB6_41367; SSE2-NEXT:  LBB6_3: ## %cond.store11368; SSE2-NEXT:    movaps %xmm0, %xmm81369; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[1,1],xmm0[1,1]1370; SSE2-NEXT:    movss %xmm8, (%rdi)1371; SSE2-NEXT:    addq $4, %rdi1372; SSE2-NEXT:    testb $4, %al1373; SSE2-NEXT:    je LBB6_61374; SSE2-NEXT:  LBB6_5: ## %cond.store41375; SSE2-NEXT:    movaps %xmm0, %xmm81376; SSE2-NEXT:    unpckhpd {{.*#+}} xmm8 = xmm8[1],xmm0[1]1377; SSE2-NEXT:    movss %xmm8, (%rdi)1378; SSE2-NEXT:    addq $4, %rdi1379; SSE2-NEXT:    testb $8, %al1380; SSE2-NEXT:    je LBB6_81381; SSE2-NEXT:  LBB6_7: ## %cond.store71382; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]1383; SSE2-NEXT:    movss %xmm0, (%rdi)1384; SSE2-NEXT:    addq $4, %rdi1385; SSE2-NEXT:    testb $16, %al1386; SSE2-NEXT:    je LBB6_101387; SSE2-NEXT:  LBB6_9: ## %cond.store101388; SSE2-NEXT:    movss %xmm1, (%rdi)1389; SSE2-NEXT:    addq $4, %rdi1390; SSE2-NEXT:    testb $32, %al1391; SSE2-NEXT:    je LBB6_121392; SSE2-NEXT:  LBB6_11: ## %cond.store131393; SSE2-NEXT:    movaps %xmm1, %xmm01394; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm1[1,1]1395; SSE2-NEXT:    movss %xmm0, (%rdi)1396; SSE2-NEXT:    addq $4, %rdi1397; SSE2-NEXT:    testb $64, %al1398; SSE2-NEXT:    je LBB6_141399; SSE2-NEXT:  LBB6_13: ## %cond.store161400; SSE2-NEXT:    movaps %xmm1, %xmm01401; SSE2-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]1402; SSE2-NEXT:    movss %xmm0, (%rdi)1403; SSE2-NEXT:    addq $4, %rdi1404; SSE2-NEXT:    testb %al, %al1405; SSE2-NEXT:    jns LBB6_161406; SSE2-NEXT:  LBB6_15: ## %cond.store191407; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]1408; SSE2-NEXT:    movss %xmm1, (%rdi)1409; SSE2-NEXT:    addq $4, %rdi1410; SSE2-NEXT:    testl $256, %eax ## imm = 0x1001411; SSE2-NEXT:    je LBB6_181412; SSE2-NEXT:  LBB6_17: ## %cond.store221413; SSE2-NEXT:    movss %xmm2, (%rdi)1414; SSE2-NEXT:    addq $4, %rdi1415; SSE2-NEXT:    testl $512, %eax ## imm = 0x2001416; SSE2-NEXT:    je LBB6_201417; SSE2-NEXT:  LBB6_19: ## %cond.store251418; SSE2-NEXT:    movaps %xmm2, %xmm01419; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm2[1,1]1420; SSE2-NEXT:    movss %xmm0, (%rdi)1421; SSE2-NEXT:    addq $4, %rdi1422; SSE2-NEXT:    testl $1024, %eax ## imm = 0x4001423; SSE2-NEXT:    je LBB6_221424; SSE2-NEXT:  LBB6_21: ## %cond.store281425; SSE2-NEXT:    movaps %xmm2, %xmm01426; SSE2-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm2[1]1427; SSE2-NEXT:    movss %xmm0, (%rdi)1428; SSE2-NEXT:    addq $4, %rdi1429; SSE2-NEXT:    testl $2048, %eax ## imm = 0x8001430; SSE2-NEXT:    je LBB6_241431; SSE2-NEXT:  LBB6_23: ## %cond.store311432; SSE2-NEXT:    shufps {{.*#+}} xmm2 = xmm2[3,3,3,3]1433; SSE2-NEXT:    movss %xmm2, (%rdi)1434; SSE2-NEXT:    addq $4, %rdi1435; SSE2-NEXT:    testl $4096, %eax ## imm = 0x10001436; SSE2-NEXT:    je LBB6_261437; SSE2-NEXT:  LBB6_25: ## %cond.store341438; SSE2-NEXT:    movss %xmm3, (%rdi)1439; SSE2-NEXT:    addq $4, %rdi1440; SSE2-NEXT:    testl $8192, %eax ## imm = 0x20001441; SSE2-NEXT:    je LBB6_281442; SSE2-NEXT:  LBB6_27: ## %cond.store371443; SSE2-NEXT:    movaps %xmm3, %xmm01444; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm3[1,1]1445; SSE2-NEXT:    movss %xmm0, (%rdi)1446; SSE2-NEXT:    addq $4, %rdi1447; SSE2-NEXT:    testl $16384, %eax ## imm = 0x40001448; SSE2-NEXT:    je LBB6_301449; SSE2-NEXT:  LBB6_29: ## %cond.store401450; SSE2-NEXT:    movaps %xmm3, %xmm01451; SSE2-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm3[1]1452; SSE2-NEXT:    movss %xmm0, (%rdi)1453; SSE2-NEXT:    addq $4, %rdi1454; SSE2-NEXT:    testw %ax, %ax1455; SSE2-NEXT:    jns LBB6_321456; SSE2-NEXT:  LBB6_31: ## %cond.store431457; SSE2-NEXT:    shufps {{.*#+}} xmm3 = xmm3[3,3,3,3]1458; SSE2-NEXT:    movss %xmm3, (%rdi)1459; SSE2-NEXT:    addq $4, %rdi1460; SSE2-NEXT:    testl $65536, %eax ## imm = 0x100001461; SSE2-NEXT:    je LBB6_341462; SSE2-NEXT:  LBB6_33: ## %cond.store461463; SSE2-NEXT:    movss %xmm4, (%rdi)1464; SSE2-NEXT:    addq $4, %rdi1465; SSE2-NEXT:    testl $131072, %eax ## imm = 0x200001466; SSE2-NEXT:    je LBB6_361467; SSE2-NEXT:  LBB6_35: ## %cond.store491468; SSE2-NEXT:    movaps %xmm4, %xmm01469; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm4[1,1]1470; SSE2-NEXT:    movss %xmm0, (%rdi)1471; SSE2-NEXT:    addq $4, %rdi1472; SSE2-NEXT:    testl $262144, %eax ## imm = 0x400001473; SSE2-NEXT:    je LBB6_381474; SSE2-NEXT:  LBB6_37: ## %cond.store521475; SSE2-NEXT:    movaps %xmm4, %xmm01476; SSE2-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm4[1]1477; SSE2-NEXT:    movss %xmm0, (%rdi)1478; SSE2-NEXT:    addq $4, %rdi1479; SSE2-NEXT:    testl $524288, %eax ## imm = 0x800001480; SSE2-NEXT:    je LBB6_401481; SSE2-NEXT:  LBB6_39: ## %cond.store551482; SSE2-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3,3,3]1483; SSE2-NEXT:    movss %xmm4, (%rdi)1484; SSE2-NEXT:    addq $4, %rdi1485; SSE2-NEXT:    testl $1048576, %eax ## imm = 0x1000001486; SSE2-NEXT:    je LBB6_421487; SSE2-NEXT:  LBB6_41: ## %cond.store581488; SSE2-NEXT:    movss %xmm5, (%rdi)1489; SSE2-NEXT:    addq $4, %rdi1490; SSE2-NEXT:    testl $2097152, %eax ## imm = 0x2000001491; SSE2-NEXT:    je LBB6_441492; SSE2-NEXT:  LBB6_43: ## %cond.store611493; SSE2-NEXT:    movaps %xmm5, %xmm01494; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm5[1,1]1495; SSE2-NEXT:    movss %xmm0, (%rdi)1496; SSE2-NEXT:    addq $4, %rdi1497; SSE2-NEXT:    testl $4194304, %eax ## imm = 0x4000001498; SSE2-NEXT:    je LBB6_461499; SSE2-NEXT:  LBB6_45: ## %cond.store641500; SSE2-NEXT:    movaps %xmm5, %xmm01501; SSE2-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm5[1]1502; SSE2-NEXT:    movss %xmm0, (%rdi)1503; SSE2-NEXT:    addq $4, %rdi1504; SSE2-NEXT:    testl $8388608, %eax ## imm = 0x8000001505; SSE2-NEXT:    je LBB6_481506; SSE2-NEXT:  LBB6_47: ## %cond.store671507; SSE2-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3,3,3]1508; SSE2-NEXT:    movss %xmm5, (%rdi)1509; SSE2-NEXT:    addq $4, %rdi1510; SSE2-NEXT:    testl $16777216, %eax ## imm = 0x10000001511; SSE2-NEXT:    je LBB6_501512; SSE2-NEXT:  LBB6_49: ## %cond.store701513; SSE2-NEXT:    movss %xmm6, (%rdi)1514; SSE2-NEXT:    addq $4, %rdi1515; SSE2-NEXT:    testl $33554432, %eax ## imm = 0x20000001516; SSE2-NEXT:    je LBB6_521517; SSE2-NEXT:  LBB6_51: ## %cond.store731518; SSE2-NEXT:    movaps %xmm6, %xmm01519; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm6[1,1]1520; SSE2-NEXT:    movss %xmm0, (%rdi)1521; SSE2-NEXT:    addq $4, %rdi1522; SSE2-NEXT:    testl $67108864, %eax ## imm = 0x40000001523; SSE2-NEXT:    je LBB6_541524; SSE2-NEXT:  LBB6_53: ## %cond.store761525; SSE2-NEXT:    movaps %xmm6, %xmm01526; SSE2-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm6[1]1527; SSE2-NEXT:    movss %xmm0, (%rdi)1528; SSE2-NEXT:    addq $4, %rdi1529; SSE2-NEXT:    testl $134217728, %eax ## imm = 0x80000001530; SSE2-NEXT:    je LBB6_561531; SSE2-NEXT:  LBB6_55: ## %cond.store791532; SSE2-NEXT:    shufps {{.*#+}} xmm6 = xmm6[3,3,3,3]1533; SSE2-NEXT:    movss %xmm6, (%rdi)1534; SSE2-NEXT:    addq $4, %rdi1535; SSE2-NEXT:    testl $268435456, %eax ## imm = 0x100000001536; SSE2-NEXT:    je LBB6_581537; SSE2-NEXT:  LBB6_57: ## %cond.store821538; SSE2-NEXT:    movss %xmm7, (%rdi)1539; SSE2-NEXT:    addq $4, %rdi1540; SSE2-NEXT:    testl $536870912, %eax ## imm = 0x200000001541; SSE2-NEXT:    je LBB6_601542; SSE2-NEXT:  LBB6_59: ## %cond.store851543; SSE2-NEXT:    movaps %xmm7, %xmm01544; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm7[1,1]1545; SSE2-NEXT:    movss %xmm0, (%rdi)1546; SSE2-NEXT:    addq $4, %rdi1547; SSE2-NEXT:    testl $1073741824, %eax ## imm = 0x400000001548; SSE2-NEXT:    je LBB6_621549; SSE2-NEXT:  LBB6_61: ## %cond.store881550; SSE2-NEXT:    movaps %xmm7, %xmm01551; SSE2-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm7[1]1552; SSE2-NEXT:    movss %xmm0, (%rdi)1553; SSE2-NEXT:    addq $4, %rdi1554; SSE2-NEXT:    testl $-2147483648, %eax ## imm = 0x800000001555; SSE2-NEXT:    je LBB6_641556; SSE2-NEXT:  LBB6_63: ## %cond.store911557; SSE2-NEXT:    shufps {{.*#+}} xmm7 = xmm7[3,3,3,3]1558; SSE2-NEXT:    movss %xmm7, (%rdi)1559; SSE2-NEXT:    retq1560;1561; SSE42-LABEL: compressstore_v32f32_v32i32:1562; SSE42:       ## %bb.0:1563; SSE42-NEXT:    pxor %xmm8, %xmm81564; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91565; SSE42-NEXT:    pcmpeqd %xmm8, %xmm91566; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm101567; SSE42-NEXT:    pcmpeqd %xmm8, %xmm101568; SSE42-NEXT:    packssdw %xmm9, %xmm101569; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91570; SSE42-NEXT:    pcmpeqd %xmm8, %xmm91571; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm111572; SSE42-NEXT:    pcmpeqd %xmm8, %xmm111573; SSE42-NEXT:    packssdw %xmm9, %xmm111574; SSE42-NEXT:    packsswb %xmm10, %xmm111575; SSE42-NEXT:    pmovmskb %xmm11, %ecx1576; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91577; SSE42-NEXT:    pcmpeqd %xmm8, %xmm91578; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm101579; SSE42-NEXT:    pcmpeqd %xmm8, %xmm101580; SSE42-NEXT:    packssdw %xmm9, %xmm101581; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91582; SSE42-NEXT:    pcmpeqd %xmm8, %xmm91583; SSE42-NEXT:    pcmpeqd {{[0-9]+}}(%rsp), %xmm81584; SSE42-NEXT:    packssdw %xmm9, %xmm81585; SSE42-NEXT:    packsswb %xmm10, %xmm81586; SSE42-NEXT:    pmovmskb %xmm8, %eax1587; SSE42-NEXT:    shll $16, %eax1588; SSE42-NEXT:    orl %ecx, %eax1589; SSE42-NEXT:    testb $1, %al1590; SSE42-NEXT:    jne LBB6_11591; SSE42-NEXT:  ## %bb.2: ## %else1592; SSE42-NEXT:    testb $2, %al1593; SSE42-NEXT:    jne LBB6_31594; SSE42-NEXT:  LBB6_4: ## %else21595; SSE42-NEXT:    testb $4, %al1596; SSE42-NEXT:    jne LBB6_51597; SSE42-NEXT:  LBB6_6: ## %else51598; SSE42-NEXT:    testb $8, %al1599; SSE42-NEXT:    jne LBB6_71600; SSE42-NEXT:  LBB6_8: ## %else81601; SSE42-NEXT:    testb $16, %al1602; SSE42-NEXT:    jne LBB6_91603; SSE42-NEXT:  LBB6_10: ## %else111604; SSE42-NEXT:    testb $32, %al1605; SSE42-NEXT:    jne LBB6_111606; SSE42-NEXT:  LBB6_12: ## %else141607; SSE42-NEXT:    testb $64, %al1608; SSE42-NEXT:    jne LBB6_131609; SSE42-NEXT:  LBB6_14: ## %else171610; SSE42-NEXT:    testb %al, %al1611; SSE42-NEXT:    js LBB6_151612; SSE42-NEXT:  LBB6_16: ## %else201613; SSE42-NEXT:    testl $256, %eax ## imm = 0x1001614; SSE42-NEXT:    jne LBB6_171615; SSE42-NEXT:  LBB6_18: ## %else231616; SSE42-NEXT:    testl $512, %eax ## imm = 0x2001617; SSE42-NEXT:    jne LBB6_191618; SSE42-NEXT:  LBB6_20: ## %else261619; SSE42-NEXT:    testl $1024, %eax ## imm = 0x4001620; SSE42-NEXT:    jne LBB6_211621; SSE42-NEXT:  LBB6_22: ## %else291622; SSE42-NEXT:    testl $2048, %eax ## imm = 0x8001623; SSE42-NEXT:    jne LBB6_231624; SSE42-NEXT:  LBB6_24: ## %else321625; SSE42-NEXT:    testl $4096, %eax ## imm = 0x10001626; SSE42-NEXT:    jne LBB6_251627; SSE42-NEXT:  LBB6_26: ## %else351628; SSE42-NEXT:    testl $8192, %eax ## imm = 0x20001629; SSE42-NEXT:    jne LBB6_271630; SSE42-NEXT:  LBB6_28: ## %else381631; SSE42-NEXT:    testl $16384, %eax ## imm = 0x40001632; SSE42-NEXT:    jne LBB6_291633; SSE42-NEXT:  LBB6_30: ## %else411634; SSE42-NEXT:    testw %ax, %ax1635; SSE42-NEXT:    js LBB6_311636; SSE42-NEXT:  LBB6_32: ## %else441637; SSE42-NEXT:    testl $65536, %eax ## imm = 0x100001638; SSE42-NEXT:    jne LBB6_331639; SSE42-NEXT:  LBB6_34: ## %else471640; SSE42-NEXT:    testl $131072, %eax ## imm = 0x200001641; SSE42-NEXT:    jne LBB6_351642; SSE42-NEXT:  LBB6_36: ## %else501643; SSE42-NEXT:    testl $262144, %eax ## imm = 0x400001644; SSE42-NEXT:    jne LBB6_371645; SSE42-NEXT:  LBB6_38: ## %else531646; SSE42-NEXT:    testl $524288, %eax ## imm = 0x800001647; SSE42-NEXT:    jne LBB6_391648; SSE42-NEXT:  LBB6_40: ## %else561649; SSE42-NEXT:    testl $1048576, %eax ## imm = 0x1000001650; SSE42-NEXT:    jne LBB6_411651; SSE42-NEXT:  LBB6_42: ## %else591652; SSE42-NEXT:    testl $2097152, %eax ## imm = 0x2000001653; SSE42-NEXT:    jne LBB6_431654; SSE42-NEXT:  LBB6_44: ## %else621655; SSE42-NEXT:    testl $4194304, %eax ## imm = 0x4000001656; SSE42-NEXT:    jne LBB6_451657; SSE42-NEXT:  LBB6_46: ## %else651658; SSE42-NEXT:    testl $8388608, %eax ## imm = 0x8000001659; SSE42-NEXT:    jne LBB6_471660; SSE42-NEXT:  LBB6_48: ## %else681661; SSE42-NEXT:    testl $16777216, %eax ## imm = 0x10000001662; SSE42-NEXT:    jne LBB6_491663; SSE42-NEXT:  LBB6_50: ## %else711664; SSE42-NEXT:    testl $33554432, %eax ## imm = 0x20000001665; SSE42-NEXT:    jne LBB6_511666; SSE42-NEXT:  LBB6_52: ## %else741667; SSE42-NEXT:    testl $67108864, %eax ## imm = 0x40000001668; SSE42-NEXT:    jne LBB6_531669; SSE42-NEXT:  LBB6_54: ## %else771670; SSE42-NEXT:    testl $134217728, %eax ## imm = 0x80000001671; SSE42-NEXT:    jne LBB6_551672; SSE42-NEXT:  LBB6_56: ## %else801673; SSE42-NEXT:    testl $268435456, %eax ## imm = 0x100000001674; SSE42-NEXT:    jne LBB6_571675; SSE42-NEXT:  LBB6_58: ## %else831676; SSE42-NEXT:    testl $536870912, %eax ## imm = 0x200000001677; SSE42-NEXT:    jne LBB6_591678; SSE42-NEXT:  LBB6_60: ## %else861679; SSE42-NEXT:    testl $1073741824, %eax ## imm = 0x400000001680; SSE42-NEXT:    jne LBB6_611681; SSE42-NEXT:  LBB6_62: ## %else891682; SSE42-NEXT:    testl $-2147483648, %eax ## imm = 0x800000001683; SSE42-NEXT:    jne LBB6_631684; SSE42-NEXT:  LBB6_64: ## %else921685; SSE42-NEXT:    retq1686; SSE42-NEXT:  LBB6_1: ## %cond.store1687; SSE42-NEXT:    movss %xmm0, (%rdi)1688; SSE42-NEXT:    addq $4, %rdi1689; SSE42-NEXT:    testb $2, %al1690; SSE42-NEXT:    je LBB6_41691; SSE42-NEXT:  LBB6_3: ## %cond.store11692; SSE42-NEXT:    extractps $1, %xmm0, (%rdi)1693; SSE42-NEXT:    addq $4, %rdi1694; SSE42-NEXT:    testb $4, %al1695; SSE42-NEXT:    je LBB6_61696; SSE42-NEXT:  LBB6_5: ## %cond.store41697; SSE42-NEXT:    extractps $2, %xmm0, (%rdi)1698; SSE42-NEXT:    addq $4, %rdi1699; SSE42-NEXT:    testb $8, %al1700; SSE42-NEXT:    je LBB6_81701; SSE42-NEXT:  LBB6_7: ## %cond.store71702; SSE42-NEXT:    extractps $3, %xmm0, (%rdi)1703; SSE42-NEXT:    addq $4, %rdi1704; SSE42-NEXT:    testb $16, %al1705; SSE42-NEXT:    je LBB6_101706; SSE42-NEXT:  LBB6_9: ## %cond.store101707; SSE42-NEXT:    movss %xmm1, (%rdi)1708; SSE42-NEXT:    addq $4, %rdi1709; SSE42-NEXT:    testb $32, %al1710; SSE42-NEXT:    je LBB6_121711; SSE42-NEXT:  LBB6_11: ## %cond.store131712; SSE42-NEXT:    extractps $1, %xmm1, (%rdi)1713; SSE42-NEXT:    addq $4, %rdi1714; SSE42-NEXT:    testb $64, %al1715; SSE42-NEXT:    je LBB6_141716; SSE42-NEXT:  LBB6_13: ## %cond.store161717; SSE42-NEXT:    extractps $2, %xmm1, (%rdi)1718; SSE42-NEXT:    addq $4, %rdi1719; SSE42-NEXT:    testb %al, %al1720; SSE42-NEXT:    jns LBB6_161721; SSE42-NEXT:  LBB6_15: ## %cond.store191722; SSE42-NEXT:    extractps $3, %xmm1, (%rdi)1723; SSE42-NEXT:    addq $4, %rdi1724; SSE42-NEXT:    testl $256, %eax ## imm = 0x1001725; SSE42-NEXT:    je LBB6_181726; SSE42-NEXT:  LBB6_17: ## %cond.store221727; SSE42-NEXT:    movss %xmm2, (%rdi)1728; SSE42-NEXT:    addq $4, %rdi1729; SSE42-NEXT:    testl $512, %eax ## imm = 0x2001730; SSE42-NEXT:    je LBB6_201731; SSE42-NEXT:  LBB6_19: ## %cond.store251732; SSE42-NEXT:    extractps $1, %xmm2, (%rdi)1733; SSE42-NEXT:    addq $4, %rdi1734; SSE42-NEXT:    testl $1024, %eax ## imm = 0x4001735; SSE42-NEXT:    je LBB6_221736; SSE42-NEXT:  LBB6_21: ## %cond.store281737; SSE42-NEXT:    extractps $2, %xmm2, (%rdi)1738; SSE42-NEXT:    addq $4, %rdi1739; SSE42-NEXT:    testl $2048, %eax ## imm = 0x8001740; SSE42-NEXT:    je LBB6_241741; SSE42-NEXT:  LBB6_23: ## %cond.store311742; SSE42-NEXT:    extractps $3, %xmm2, (%rdi)1743; SSE42-NEXT:    addq $4, %rdi1744; SSE42-NEXT:    testl $4096, %eax ## imm = 0x10001745; SSE42-NEXT:    je LBB6_261746; SSE42-NEXT:  LBB6_25: ## %cond.store341747; SSE42-NEXT:    movss %xmm3, (%rdi)1748; SSE42-NEXT:    addq $4, %rdi1749; SSE42-NEXT:    testl $8192, %eax ## imm = 0x20001750; SSE42-NEXT:    je LBB6_281751; SSE42-NEXT:  LBB6_27: ## %cond.store371752; SSE42-NEXT:    extractps $1, %xmm3, (%rdi)1753; SSE42-NEXT:    addq $4, %rdi1754; SSE42-NEXT:    testl $16384, %eax ## imm = 0x40001755; SSE42-NEXT:    je LBB6_301756; SSE42-NEXT:  LBB6_29: ## %cond.store401757; SSE42-NEXT:    extractps $2, %xmm3, (%rdi)1758; SSE42-NEXT:    addq $4, %rdi1759; SSE42-NEXT:    testw %ax, %ax1760; SSE42-NEXT:    jns LBB6_321761; SSE42-NEXT:  LBB6_31: ## %cond.store431762; SSE42-NEXT:    extractps $3, %xmm3, (%rdi)1763; SSE42-NEXT:    addq $4, %rdi1764; SSE42-NEXT:    testl $65536, %eax ## imm = 0x100001765; SSE42-NEXT:    je LBB6_341766; SSE42-NEXT:  LBB6_33: ## %cond.store461767; SSE42-NEXT:    movss %xmm4, (%rdi)1768; SSE42-NEXT:    addq $4, %rdi1769; SSE42-NEXT:    testl $131072, %eax ## imm = 0x200001770; SSE42-NEXT:    je LBB6_361771; SSE42-NEXT:  LBB6_35: ## %cond.store491772; SSE42-NEXT:    extractps $1, %xmm4, (%rdi)1773; SSE42-NEXT:    addq $4, %rdi1774; SSE42-NEXT:    testl $262144, %eax ## imm = 0x400001775; SSE42-NEXT:    je LBB6_381776; SSE42-NEXT:  LBB6_37: ## %cond.store521777; SSE42-NEXT:    extractps $2, %xmm4, (%rdi)1778; SSE42-NEXT:    addq $4, %rdi1779; SSE42-NEXT:    testl $524288, %eax ## imm = 0x800001780; SSE42-NEXT:    je LBB6_401781; SSE42-NEXT:  LBB6_39: ## %cond.store551782; SSE42-NEXT:    extractps $3, %xmm4, (%rdi)1783; SSE42-NEXT:    addq $4, %rdi1784; SSE42-NEXT:    testl $1048576, %eax ## imm = 0x1000001785; SSE42-NEXT:    je LBB6_421786; SSE42-NEXT:  LBB6_41: ## %cond.store581787; SSE42-NEXT:    movss %xmm5, (%rdi)1788; SSE42-NEXT:    addq $4, %rdi1789; SSE42-NEXT:    testl $2097152, %eax ## imm = 0x2000001790; SSE42-NEXT:    je LBB6_441791; SSE42-NEXT:  LBB6_43: ## %cond.store611792; SSE42-NEXT:    extractps $1, %xmm5, (%rdi)1793; SSE42-NEXT:    addq $4, %rdi1794; SSE42-NEXT:    testl $4194304, %eax ## imm = 0x4000001795; SSE42-NEXT:    je LBB6_461796; SSE42-NEXT:  LBB6_45: ## %cond.store641797; SSE42-NEXT:    extractps $2, %xmm5, (%rdi)1798; SSE42-NEXT:    addq $4, %rdi1799; SSE42-NEXT:    testl $8388608, %eax ## imm = 0x8000001800; SSE42-NEXT:    je LBB6_481801; SSE42-NEXT:  LBB6_47: ## %cond.store671802; SSE42-NEXT:    extractps $3, %xmm5, (%rdi)1803; SSE42-NEXT:    addq $4, %rdi1804; SSE42-NEXT:    testl $16777216, %eax ## imm = 0x10000001805; SSE42-NEXT:    je LBB6_501806; SSE42-NEXT:  LBB6_49: ## %cond.store701807; SSE42-NEXT:    movss %xmm6, (%rdi)1808; SSE42-NEXT:    addq $4, %rdi1809; SSE42-NEXT:    testl $33554432, %eax ## imm = 0x20000001810; SSE42-NEXT:    je LBB6_521811; SSE42-NEXT:  LBB6_51: ## %cond.store731812; SSE42-NEXT:    extractps $1, %xmm6, (%rdi)1813; SSE42-NEXT:    addq $4, %rdi1814; SSE42-NEXT:    testl $67108864, %eax ## imm = 0x40000001815; SSE42-NEXT:    je LBB6_541816; SSE42-NEXT:  LBB6_53: ## %cond.store761817; SSE42-NEXT:    extractps $2, %xmm6, (%rdi)1818; SSE42-NEXT:    addq $4, %rdi1819; SSE42-NEXT:    testl $134217728, %eax ## imm = 0x80000001820; SSE42-NEXT:    je LBB6_561821; SSE42-NEXT:  LBB6_55: ## %cond.store791822; SSE42-NEXT:    extractps $3, %xmm6, (%rdi)1823; SSE42-NEXT:    addq $4, %rdi1824; SSE42-NEXT:    testl $268435456, %eax ## imm = 0x100000001825; SSE42-NEXT:    je LBB6_581826; SSE42-NEXT:  LBB6_57: ## %cond.store821827; SSE42-NEXT:    movss %xmm7, (%rdi)1828; SSE42-NEXT:    addq $4, %rdi1829; SSE42-NEXT:    testl $536870912, %eax ## imm = 0x200000001830; SSE42-NEXT:    je LBB6_601831; SSE42-NEXT:  LBB6_59: ## %cond.store851832; SSE42-NEXT:    extractps $1, %xmm7, (%rdi)1833; SSE42-NEXT:    addq $4, %rdi1834; SSE42-NEXT:    testl $1073741824, %eax ## imm = 0x400000001835; SSE42-NEXT:    je LBB6_621836; SSE42-NEXT:  LBB6_61: ## %cond.store881837; SSE42-NEXT:    extractps $2, %xmm7, (%rdi)1838; SSE42-NEXT:    addq $4, %rdi1839; SSE42-NEXT:    testl $-2147483648, %eax ## imm = 0x800000001840; SSE42-NEXT:    je LBB6_641841; SSE42-NEXT:  LBB6_63: ## %cond.store911842; SSE42-NEXT:    extractps $3, %xmm7, (%rdi)1843; SSE42-NEXT:    retq1844;1845; AVX1-LABEL: compressstore_v32f32_v32i32:1846; AVX1:       ## %bb.0:1847; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm81848; AVX1-NEXT:    vpxor %xmm9, %xmm9, %xmm91849; AVX1-NEXT:    vpcmpeqd %xmm9, %xmm8, %xmm81850; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm9, %xmm51851; AVX1-NEXT:    vpackssdw %xmm8, %xmm5, %xmm51852; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm81853; AVX1-NEXT:    vpcmpeqd %xmm9, %xmm8, %xmm81854; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm9, %xmm41855; AVX1-NEXT:    vpackssdw %xmm8, %xmm4, %xmm41856; AVX1-NEXT:    vpacksswb %xmm5, %xmm4, %xmm41857; AVX1-NEXT:    vpmovmskb %xmm4, %ecx1858; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm41859; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm9, %xmm41860; AVX1-NEXT:    vpcmpeqd %xmm7, %xmm9, %xmm51861; AVX1-NEXT:    vpackssdw %xmm4, %xmm5, %xmm41862; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm51863; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm9, %xmm51864; AVX1-NEXT:    vpcmpeqd %xmm6, %xmm9, %xmm61865; AVX1-NEXT:    vpackssdw %xmm5, %xmm6, %xmm51866; AVX1-NEXT:    vpacksswb %xmm4, %xmm5, %xmm41867; AVX1-NEXT:    vpmovmskb %xmm4, %eax1868; AVX1-NEXT:    shll $16, %eax1869; AVX1-NEXT:    orl %ecx, %eax1870; AVX1-NEXT:    testb $1, %al1871; AVX1-NEXT:    jne LBB6_11872; AVX1-NEXT:  ## %bb.2: ## %else1873; AVX1-NEXT:    testb $2, %al1874; AVX1-NEXT:    jne LBB6_31875; AVX1-NEXT:  LBB6_4: ## %else21876; AVX1-NEXT:    testb $4, %al1877; AVX1-NEXT:    jne LBB6_51878; AVX1-NEXT:  LBB6_6: ## %else51879; AVX1-NEXT:    testb $8, %al1880; AVX1-NEXT:    je LBB6_81881; AVX1-NEXT:  LBB6_7: ## %cond.store71882; AVX1-NEXT:    vextractps $3, %xmm0, (%rdi)1883; AVX1-NEXT:    addq $4, %rdi1884; AVX1-NEXT:  LBB6_8: ## %else81885; AVX1-NEXT:    testb $16, %al1886; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm01887; AVX1-NEXT:    jne LBB6_91888; AVX1-NEXT:  ## %bb.10: ## %else111889; AVX1-NEXT:    testb $32, %al1890; AVX1-NEXT:    jne LBB6_111891; AVX1-NEXT:  LBB6_12: ## %else141892; AVX1-NEXT:    testb $64, %al1893; AVX1-NEXT:    jne LBB6_131894; AVX1-NEXT:  LBB6_14: ## %else171895; AVX1-NEXT:    testb %al, %al1896; AVX1-NEXT:    js LBB6_151897; AVX1-NEXT:  LBB6_16: ## %else201898; AVX1-NEXT:    testl $256, %eax ## imm = 0x1001899; AVX1-NEXT:    jne LBB6_171900; AVX1-NEXT:  LBB6_18: ## %else231901; AVX1-NEXT:    testl $512, %eax ## imm = 0x2001902; AVX1-NEXT:    jne LBB6_191903; AVX1-NEXT:  LBB6_20: ## %else261904; AVX1-NEXT:    testl $1024, %eax ## imm = 0x4001905; AVX1-NEXT:    jne LBB6_211906; AVX1-NEXT:  LBB6_22: ## %else291907; AVX1-NEXT:    testl $2048, %eax ## imm = 0x8001908; AVX1-NEXT:    je LBB6_241909; AVX1-NEXT:  LBB6_23: ## %cond.store311910; AVX1-NEXT:    vextractps $3, %xmm1, (%rdi)1911; AVX1-NEXT:    addq $4, %rdi1912; AVX1-NEXT:  LBB6_24: ## %else321913; AVX1-NEXT:    testl $4096, %eax ## imm = 0x10001914; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm01915; AVX1-NEXT:    jne LBB6_251916; AVX1-NEXT:  ## %bb.26: ## %else351917; AVX1-NEXT:    testl $8192, %eax ## imm = 0x20001918; AVX1-NEXT:    jne LBB6_271919; AVX1-NEXT:  LBB6_28: ## %else381920; AVX1-NEXT:    testl $16384, %eax ## imm = 0x40001921; AVX1-NEXT:    jne LBB6_291922; AVX1-NEXT:  LBB6_30: ## %else411923; AVX1-NEXT:    testw %ax, %ax1924; AVX1-NEXT:    js LBB6_311925; AVX1-NEXT:  LBB6_32: ## %else441926; AVX1-NEXT:    testl $65536, %eax ## imm = 0x100001927; AVX1-NEXT:    jne LBB6_331928; AVX1-NEXT:  LBB6_34: ## %else471929; AVX1-NEXT:    testl $131072, %eax ## imm = 0x200001930; AVX1-NEXT:    jne LBB6_351931; AVX1-NEXT:  LBB6_36: ## %else501932; AVX1-NEXT:    testl $262144, %eax ## imm = 0x400001933; AVX1-NEXT:    jne LBB6_371934; AVX1-NEXT:  LBB6_38: ## %else531935; AVX1-NEXT:    testl $524288, %eax ## imm = 0x800001936; AVX1-NEXT:    je LBB6_401937; AVX1-NEXT:  LBB6_39: ## %cond.store551938; AVX1-NEXT:    vextractps $3, %xmm2, (%rdi)1939; AVX1-NEXT:    addq $4, %rdi1940; AVX1-NEXT:  LBB6_40: ## %else561941; AVX1-NEXT:    testl $1048576, %eax ## imm = 0x1000001942; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm01943; AVX1-NEXT:    jne LBB6_411944; AVX1-NEXT:  ## %bb.42: ## %else591945; AVX1-NEXT:    testl $2097152, %eax ## imm = 0x2000001946; AVX1-NEXT:    jne LBB6_431947; AVX1-NEXT:  LBB6_44: ## %else621948; AVX1-NEXT:    testl $4194304, %eax ## imm = 0x4000001949; AVX1-NEXT:    jne LBB6_451950; AVX1-NEXT:  LBB6_46: ## %else651951; AVX1-NEXT:    testl $8388608, %eax ## imm = 0x8000001952; AVX1-NEXT:    jne LBB6_471953; AVX1-NEXT:  LBB6_48: ## %else681954; AVX1-NEXT:    testl $16777216, %eax ## imm = 0x10000001955; AVX1-NEXT:    jne LBB6_491956; AVX1-NEXT:  LBB6_50: ## %else711957; AVX1-NEXT:    testl $33554432, %eax ## imm = 0x20000001958; AVX1-NEXT:    jne LBB6_511959; AVX1-NEXT:  LBB6_52: ## %else741960; AVX1-NEXT:    testl $67108864, %eax ## imm = 0x40000001961; AVX1-NEXT:    jne LBB6_531962; AVX1-NEXT:  LBB6_54: ## %else771963; AVX1-NEXT:    testl $134217728, %eax ## imm = 0x80000001964; AVX1-NEXT:    je LBB6_561965; AVX1-NEXT:  LBB6_55: ## %cond.store791966; AVX1-NEXT:    vextractps $3, %xmm3, (%rdi)1967; AVX1-NEXT:    addq $4, %rdi1968; AVX1-NEXT:  LBB6_56: ## %else801969; AVX1-NEXT:    testl $268435456, %eax ## imm = 0x100000001970; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm01971; AVX1-NEXT:    jne LBB6_571972; AVX1-NEXT:  ## %bb.58: ## %else831973; AVX1-NEXT:    testl $536870912, %eax ## imm = 0x200000001974; AVX1-NEXT:    jne LBB6_591975; AVX1-NEXT:  LBB6_60: ## %else861976; AVX1-NEXT:    testl $1073741824, %eax ## imm = 0x400000001977; AVX1-NEXT:    jne LBB6_611978; AVX1-NEXT:  LBB6_62: ## %else891979; AVX1-NEXT:    testl $-2147483648, %eax ## imm = 0x800000001980; AVX1-NEXT:    jne LBB6_631981; AVX1-NEXT:  LBB6_64: ## %else921982; AVX1-NEXT:    vzeroupper1983; AVX1-NEXT:    retq1984; AVX1-NEXT:  LBB6_1: ## %cond.store1985; AVX1-NEXT:    vmovss %xmm0, (%rdi)1986; AVX1-NEXT:    addq $4, %rdi1987; AVX1-NEXT:    testb $2, %al1988; AVX1-NEXT:    je LBB6_41989; AVX1-NEXT:  LBB6_3: ## %cond.store11990; AVX1-NEXT:    vextractps $1, %xmm0, (%rdi)1991; AVX1-NEXT:    addq $4, %rdi1992; AVX1-NEXT:    testb $4, %al1993; AVX1-NEXT:    je LBB6_61994; AVX1-NEXT:  LBB6_5: ## %cond.store41995; AVX1-NEXT:    vextractps $2, %xmm0, (%rdi)1996; AVX1-NEXT:    addq $4, %rdi1997; AVX1-NEXT:    testb $8, %al1998; AVX1-NEXT:    jne LBB6_71999; AVX1-NEXT:    jmp LBB6_82000; AVX1-NEXT:  LBB6_9: ## %cond.store102001; AVX1-NEXT:    vmovss %xmm0, (%rdi)2002; AVX1-NEXT:    addq $4, %rdi2003; AVX1-NEXT:    testb $32, %al2004; AVX1-NEXT:    je LBB6_122005; AVX1-NEXT:  LBB6_11: ## %cond.store132006; AVX1-NEXT:    vextractps $1, %xmm0, (%rdi)2007; AVX1-NEXT:    addq $4, %rdi2008; AVX1-NEXT:    testb $64, %al2009; AVX1-NEXT:    je LBB6_142010; AVX1-NEXT:  LBB6_13: ## %cond.store162011; AVX1-NEXT:    vextractps $2, %xmm0, (%rdi)2012; AVX1-NEXT:    addq $4, %rdi2013; AVX1-NEXT:    testb %al, %al2014; AVX1-NEXT:    jns LBB6_162015; AVX1-NEXT:  LBB6_15: ## %cond.store192016; AVX1-NEXT:    vextractps $3, %xmm0, (%rdi)2017; AVX1-NEXT:    addq $4, %rdi2018; AVX1-NEXT:    testl $256, %eax ## imm = 0x1002019; AVX1-NEXT:    je LBB6_182020; AVX1-NEXT:  LBB6_17: ## %cond.store222021; AVX1-NEXT:    vmovss %xmm1, (%rdi)2022; AVX1-NEXT:    addq $4, %rdi2023; AVX1-NEXT:    testl $512, %eax ## imm = 0x2002024; AVX1-NEXT:    je LBB6_202025; AVX1-NEXT:  LBB6_19: ## %cond.store252026; AVX1-NEXT:    vextractps $1, %xmm1, (%rdi)2027; AVX1-NEXT:    addq $4, %rdi2028; AVX1-NEXT:    testl $1024, %eax ## imm = 0x4002029; AVX1-NEXT:    je LBB6_222030; AVX1-NEXT:  LBB6_21: ## %cond.store282031; AVX1-NEXT:    vextractps $2, %xmm1, (%rdi)2032; AVX1-NEXT:    addq $4, %rdi2033; AVX1-NEXT:    testl $2048, %eax ## imm = 0x8002034; AVX1-NEXT:    jne LBB6_232035; AVX1-NEXT:    jmp LBB6_242036; AVX1-NEXT:  LBB6_25: ## %cond.store342037; AVX1-NEXT:    vmovss %xmm0, (%rdi)2038; AVX1-NEXT:    addq $4, %rdi2039; AVX1-NEXT:    testl $8192, %eax ## imm = 0x20002040; AVX1-NEXT:    je LBB6_282041; AVX1-NEXT:  LBB6_27: ## %cond.store372042; AVX1-NEXT:    vextractps $1, %xmm0, (%rdi)2043; AVX1-NEXT:    addq $4, %rdi2044; AVX1-NEXT:    testl $16384, %eax ## imm = 0x40002045; AVX1-NEXT:    je LBB6_302046; AVX1-NEXT:  LBB6_29: ## %cond.store402047; AVX1-NEXT:    vextractps $2, %xmm0, (%rdi)2048; AVX1-NEXT:    addq $4, %rdi2049; AVX1-NEXT:    testw %ax, %ax2050; AVX1-NEXT:    jns LBB6_322051; AVX1-NEXT:  LBB6_31: ## %cond.store432052; AVX1-NEXT:    vextractps $3, %xmm0, (%rdi)2053; AVX1-NEXT:    addq $4, %rdi2054; AVX1-NEXT:    testl $65536, %eax ## imm = 0x100002055; AVX1-NEXT:    je LBB6_342056; AVX1-NEXT:  LBB6_33: ## %cond.store462057; AVX1-NEXT:    vmovss %xmm2, (%rdi)2058; AVX1-NEXT:    addq $4, %rdi2059; AVX1-NEXT:    testl $131072, %eax ## imm = 0x200002060; AVX1-NEXT:    je LBB6_362061; AVX1-NEXT:  LBB6_35: ## %cond.store492062; AVX1-NEXT:    vextractps $1, %xmm2, (%rdi)2063; AVX1-NEXT:    addq $4, %rdi2064; AVX1-NEXT:    testl $262144, %eax ## imm = 0x400002065; AVX1-NEXT:    je LBB6_382066; AVX1-NEXT:  LBB6_37: ## %cond.store522067; AVX1-NEXT:    vextractps $2, %xmm2, (%rdi)2068; AVX1-NEXT:    addq $4, %rdi2069; AVX1-NEXT:    testl $524288, %eax ## imm = 0x800002070; AVX1-NEXT:    jne LBB6_392071; AVX1-NEXT:    jmp LBB6_402072; AVX1-NEXT:  LBB6_41: ## %cond.store582073; AVX1-NEXT:    vmovss %xmm0, (%rdi)2074; AVX1-NEXT:    addq $4, %rdi2075; AVX1-NEXT:    testl $2097152, %eax ## imm = 0x2000002076; AVX1-NEXT:    je LBB6_442077; AVX1-NEXT:  LBB6_43: ## %cond.store612078; AVX1-NEXT:    vextractps $1, %xmm0, (%rdi)2079; AVX1-NEXT:    addq $4, %rdi2080; AVX1-NEXT:    testl $4194304, %eax ## imm = 0x4000002081; AVX1-NEXT:    je LBB6_462082; AVX1-NEXT:  LBB6_45: ## %cond.store642083; AVX1-NEXT:    vextractps $2, %xmm0, (%rdi)2084; AVX1-NEXT:    addq $4, %rdi2085; AVX1-NEXT:    testl $8388608, %eax ## imm = 0x8000002086; AVX1-NEXT:    je LBB6_482087; AVX1-NEXT:  LBB6_47: ## %cond.store672088; AVX1-NEXT:    vextractps $3, %xmm0, (%rdi)2089; AVX1-NEXT:    addq $4, %rdi2090; AVX1-NEXT:    testl $16777216, %eax ## imm = 0x10000002091; AVX1-NEXT:    je LBB6_502092; AVX1-NEXT:  LBB6_49: ## %cond.store702093; AVX1-NEXT:    vmovss %xmm3, (%rdi)2094; AVX1-NEXT:    addq $4, %rdi2095; AVX1-NEXT:    testl $33554432, %eax ## imm = 0x20000002096; AVX1-NEXT:    je LBB6_522097; AVX1-NEXT:  LBB6_51: ## %cond.store732098; AVX1-NEXT:    vextractps $1, %xmm3, (%rdi)2099; AVX1-NEXT:    addq $4, %rdi2100; AVX1-NEXT:    testl $67108864, %eax ## imm = 0x40000002101; AVX1-NEXT:    je LBB6_542102; AVX1-NEXT:  LBB6_53: ## %cond.store762103; AVX1-NEXT:    vextractps $2, %xmm3, (%rdi)2104; AVX1-NEXT:    addq $4, %rdi2105; AVX1-NEXT:    testl $134217728, %eax ## imm = 0x80000002106; AVX1-NEXT:    jne LBB6_552107; AVX1-NEXT:    jmp LBB6_562108; AVX1-NEXT:  LBB6_57: ## %cond.store822109; AVX1-NEXT:    vmovss %xmm0, (%rdi)2110; AVX1-NEXT:    addq $4, %rdi2111; AVX1-NEXT:    testl $536870912, %eax ## imm = 0x200000002112; AVX1-NEXT:    je LBB6_602113; AVX1-NEXT:  LBB6_59: ## %cond.store852114; AVX1-NEXT:    vextractps $1, %xmm0, (%rdi)2115; AVX1-NEXT:    addq $4, %rdi2116; AVX1-NEXT:    testl $1073741824, %eax ## imm = 0x400000002117; AVX1-NEXT:    je LBB6_622118; AVX1-NEXT:  LBB6_61: ## %cond.store882119; AVX1-NEXT:    vextractps $2, %xmm0, (%rdi)2120; AVX1-NEXT:    addq $4, %rdi2121; AVX1-NEXT:    testl $-2147483648, %eax ## imm = 0x800000002122; AVX1-NEXT:    je LBB6_642123; AVX1-NEXT:  LBB6_63: ## %cond.store912124; AVX1-NEXT:    vextractps $3, %xmm0, (%rdi)2125; AVX1-NEXT:    vzeroupper2126; AVX1-NEXT:    retq2127;2128; AVX2-LABEL: compressstore_v32f32_v32i32:2129; AVX2:       ## %bb.0:2130; AVX2-NEXT:    vpxor %xmm8, %xmm8, %xmm82131; AVX2-NEXT:    vpcmpeqd %ymm7, %ymm8, %ymm72132; AVX2-NEXT:    vpcmpeqd %ymm6, %ymm8, %ymm62133; AVX2-NEXT:    vpackssdw %ymm7, %ymm6, %ymm62134; AVX2-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3]2135; AVX2-NEXT:    vpcmpeqd %ymm5, %ymm8, %ymm52136; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm8, %ymm42137; AVX2-NEXT:    vpackssdw %ymm5, %ymm4, %ymm42138; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3]2139; AVX2-NEXT:    vpacksswb %ymm6, %ymm4, %ymm42140; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3]2141; AVX2-NEXT:    vpmovmskb %ymm4, %eax2142; AVX2-NEXT:    testb $1, %al2143; AVX2-NEXT:    jne LBB6_12144; AVX2-NEXT:  ## %bb.2: ## %else2145; AVX2-NEXT:    testb $2, %al2146; AVX2-NEXT:    jne LBB6_32147; AVX2-NEXT:  LBB6_4: ## %else22148; AVX2-NEXT:    testb $4, %al2149; AVX2-NEXT:    jne LBB6_52150; AVX2-NEXT:  LBB6_6: ## %else52151; AVX2-NEXT:    testb $8, %al2152; AVX2-NEXT:    je LBB6_82153; AVX2-NEXT:  LBB6_7: ## %cond.store72154; AVX2-NEXT:    vextractps $3, %xmm0, (%rdi)2155; AVX2-NEXT:    addq $4, %rdi2156; AVX2-NEXT:  LBB6_8: ## %else82157; AVX2-NEXT:    testb $16, %al2158; AVX2-NEXT:    vextractf128 $1, %ymm0, %xmm02159; AVX2-NEXT:    jne LBB6_92160; AVX2-NEXT:  ## %bb.10: ## %else112161; AVX2-NEXT:    testb $32, %al2162; AVX2-NEXT:    jne LBB6_112163; AVX2-NEXT:  LBB6_12: ## %else142164; AVX2-NEXT:    testb $64, %al2165; AVX2-NEXT:    jne LBB6_132166; AVX2-NEXT:  LBB6_14: ## %else172167; AVX2-NEXT:    testb %al, %al2168; AVX2-NEXT:    js LBB6_152169; AVX2-NEXT:  LBB6_16: ## %else202170; AVX2-NEXT:    testl $256, %eax ## imm = 0x1002171; AVX2-NEXT:    jne LBB6_172172; AVX2-NEXT:  LBB6_18: ## %else232173; AVX2-NEXT:    testl $512, %eax ## imm = 0x2002174; AVX2-NEXT:    jne LBB6_192175; AVX2-NEXT:  LBB6_20: ## %else262176; AVX2-NEXT:    testl $1024, %eax ## imm = 0x4002177; AVX2-NEXT:    jne LBB6_212178; AVX2-NEXT:  LBB6_22: ## %else292179; AVX2-NEXT:    testl $2048, %eax ## imm = 0x8002180; AVX2-NEXT:    je LBB6_242181; AVX2-NEXT:  LBB6_23: ## %cond.store312182; AVX2-NEXT:    vextractps $3, %xmm1, (%rdi)2183; AVX2-NEXT:    addq $4, %rdi2184; AVX2-NEXT:  LBB6_24: ## %else322185; AVX2-NEXT:    testl $4096, %eax ## imm = 0x10002186; AVX2-NEXT:    vextractf128 $1, %ymm1, %xmm02187; AVX2-NEXT:    jne LBB6_252188; AVX2-NEXT:  ## %bb.26: ## %else352189; AVX2-NEXT:    testl $8192, %eax ## imm = 0x20002190; AVX2-NEXT:    jne LBB6_272191; AVX2-NEXT:  LBB6_28: ## %else382192; AVX2-NEXT:    testl $16384, %eax ## imm = 0x40002193; AVX2-NEXT:    jne LBB6_292194; AVX2-NEXT:  LBB6_30: ## %else412195; AVX2-NEXT:    testw %ax, %ax2196; AVX2-NEXT:    js LBB6_312197; AVX2-NEXT:  LBB6_32: ## %else442198; AVX2-NEXT:    testl $65536, %eax ## imm = 0x100002199; AVX2-NEXT:    jne LBB6_332200; AVX2-NEXT:  LBB6_34: ## %else472201; AVX2-NEXT:    testl $131072, %eax ## imm = 0x200002202; AVX2-NEXT:    jne LBB6_352203; AVX2-NEXT:  LBB6_36: ## %else502204; AVX2-NEXT:    testl $262144, %eax ## imm = 0x400002205; AVX2-NEXT:    jne LBB6_372206; AVX2-NEXT:  LBB6_38: ## %else532207; AVX2-NEXT:    testl $524288, %eax ## imm = 0x800002208; AVX2-NEXT:    je LBB6_402209; AVX2-NEXT:  LBB6_39: ## %cond.store552210; AVX2-NEXT:    vextractps $3, %xmm2, (%rdi)2211; AVX2-NEXT:    addq $4, %rdi2212; AVX2-NEXT:  LBB6_40: ## %else562213; AVX2-NEXT:    testl $1048576, %eax ## imm = 0x1000002214; AVX2-NEXT:    vextractf128 $1, %ymm2, %xmm02215; AVX2-NEXT:    jne LBB6_412216; AVX2-NEXT:  ## %bb.42: ## %else592217; AVX2-NEXT:    testl $2097152, %eax ## imm = 0x2000002218; AVX2-NEXT:    jne LBB6_432219; AVX2-NEXT:  LBB6_44: ## %else622220; AVX2-NEXT:    testl $4194304, %eax ## imm = 0x4000002221; AVX2-NEXT:    jne LBB6_452222; AVX2-NEXT:  LBB6_46: ## %else652223; AVX2-NEXT:    testl $8388608, %eax ## imm = 0x8000002224; AVX2-NEXT:    jne LBB6_472225; AVX2-NEXT:  LBB6_48: ## %else682226; AVX2-NEXT:    testl $16777216, %eax ## imm = 0x10000002227; AVX2-NEXT:    jne LBB6_492228; AVX2-NEXT:  LBB6_50: ## %else712229; AVX2-NEXT:    testl $33554432, %eax ## imm = 0x20000002230; AVX2-NEXT:    jne LBB6_512231; AVX2-NEXT:  LBB6_52: ## %else742232; AVX2-NEXT:    testl $67108864, %eax ## imm = 0x40000002233; AVX2-NEXT:    jne LBB6_532234; AVX2-NEXT:  LBB6_54: ## %else772235; AVX2-NEXT:    testl $134217728, %eax ## imm = 0x80000002236; AVX2-NEXT:    je LBB6_562237; AVX2-NEXT:  LBB6_55: ## %cond.store792238; AVX2-NEXT:    vextractps $3, %xmm3, (%rdi)2239; AVX2-NEXT:    addq $4, %rdi2240; AVX2-NEXT:  LBB6_56: ## %else802241; AVX2-NEXT:    testl $268435456, %eax ## imm = 0x100000002242; AVX2-NEXT:    vextractf128 $1, %ymm3, %xmm02243; AVX2-NEXT:    jne LBB6_572244; AVX2-NEXT:  ## %bb.58: ## %else832245; AVX2-NEXT:    testl $536870912, %eax ## imm = 0x200000002246; AVX2-NEXT:    jne LBB6_592247; AVX2-NEXT:  LBB6_60: ## %else862248; AVX2-NEXT:    testl $1073741824, %eax ## imm = 0x400000002249; AVX2-NEXT:    jne LBB6_612250; AVX2-NEXT:  LBB6_62: ## %else892251; AVX2-NEXT:    testl $-2147483648, %eax ## imm = 0x800000002252; AVX2-NEXT:    jne LBB6_632253; AVX2-NEXT:  LBB6_64: ## %else922254; AVX2-NEXT:    vzeroupper2255; AVX2-NEXT:    retq2256; AVX2-NEXT:  LBB6_1: ## %cond.store2257; AVX2-NEXT:    vmovss %xmm0, (%rdi)2258; AVX2-NEXT:    addq $4, %rdi2259; AVX2-NEXT:    testb $2, %al2260; AVX2-NEXT:    je LBB6_42261; AVX2-NEXT:  LBB6_3: ## %cond.store12262; AVX2-NEXT:    vextractps $1, %xmm0, (%rdi)2263; AVX2-NEXT:    addq $4, %rdi2264; AVX2-NEXT:    testb $4, %al2265; AVX2-NEXT:    je LBB6_62266; AVX2-NEXT:  LBB6_5: ## %cond.store42267; AVX2-NEXT:    vextractps $2, %xmm0, (%rdi)2268; AVX2-NEXT:    addq $4, %rdi2269; AVX2-NEXT:    testb $8, %al2270; AVX2-NEXT:    jne LBB6_72271; AVX2-NEXT:    jmp LBB6_82272; AVX2-NEXT:  LBB6_9: ## %cond.store102273; AVX2-NEXT:    vmovss %xmm0, (%rdi)2274; AVX2-NEXT:    addq $4, %rdi2275; AVX2-NEXT:    testb $32, %al2276; AVX2-NEXT:    je LBB6_122277; AVX2-NEXT:  LBB6_11: ## %cond.store132278; AVX2-NEXT:    vextractps $1, %xmm0, (%rdi)2279; AVX2-NEXT:    addq $4, %rdi2280; AVX2-NEXT:    testb $64, %al2281; AVX2-NEXT:    je LBB6_142282; AVX2-NEXT:  LBB6_13: ## %cond.store162283; AVX2-NEXT:    vextractps $2, %xmm0, (%rdi)2284; AVX2-NEXT:    addq $4, %rdi2285; AVX2-NEXT:    testb %al, %al2286; AVX2-NEXT:    jns LBB6_162287; AVX2-NEXT:  LBB6_15: ## %cond.store192288; AVX2-NEXT:    vextractps $3, %xmm0, (%rdi)2289; AVX2-NEXT:    addq $4, %rdi2290; AVX2-NEXT:    testl $256, %eax ## imm = 0x1002291; AVX2-NEXT:    je LBB6_182292; AVX2-NEXT:  LBB6_17: ## %cond.store222293; AVX2-NEXT:    vmovss %xmm1, (%rdi)2294; AVX2-NEXT:    addq $4, %rdi2295; AVX2-NEXT:    testl $512, %eax ## imm = 0x2002296; AVX2-NEXT:    je LBB6_202297; AVX2-NEXT:  LBB6_19: ## %cond.store252298; AVX2-NEXT:    vextractps $1, %xmm1, (%rdi)2299; AVX2-NEXT:    addq $4, %rdi2300; AVX2-NEXT:    testl $1024, %eax ## imm = 0x4002301; AVX2-NEXT:    je LBB6_222302; AVX2-NEXT:  LBB6_21: ## %cond.store282303; AVX2-NEXT:    vextractps $2, %xmm1, (%rdi)2304; AVX2-NEXT:    addq $4, %rdi2305; AVX2-NEXT:    testl $2048, %eax ## imm = 0x8002306; AVX2-NEXT:    jne LBB6_232307; AVX2-NEXT:    jmp LBB6_242308; AVX2-NEXT:  LBB6_25: ## %cond.store342309; AVX2-NEXT:    vmovss %xmm0, (%rdi)2310; AVX2-NEXT:    addq $4, %rdi2311; AVX2-NEXT:    testl $8192, %eax ## imm = 0x20002312; AVX2-NEXT:    je LBB6_282313; AVX2-NEXT:  LBB6_27: ## %cond.store372314; AVX2-NEXT:    vextractps $1, %xmm0, (%rdi)2315; AVX2-NEXT:    addq $4, %rdi2316; AVX2-NEXT:    testl $16384, %eax ## imm = 0x40002317; AVX2-NEXT:    je LBB6_302318; AVX2-NEXT:  LBB6_29: ## %cond.store402319; AVX2-NEXT:    vextractps $2, %xmm0, (%rdi)2320; AVX2-NEXT:    addq $4, %rdi2321; AVX2-NEXT:    testw %ax, %ax2322; AVX2-NEXT:    jns LBB6_322323; AVX2-NEXT:  LBB6_31: ## %cond.store432324; AVX2-NEXT:    vextractps $3, %xmm0, (%rdi)2325; AVX2-NEXT:    addq $4, %rdi2326; AVX2-NEXT:    testl $65536, %eax ## imm = 0x100002327; AVX2-NEXT:    je LBB6_342328; AVX2-NEXT:  LBB6_33: ## %cond.store462329; AVX2-NEXT:    vmovss %xmm2, (%rdi)2330; AVX2-NEXT:    addq $4, %rdi2331; AVX2-NEXT:    testl $131072, %eax ## imm = 0x200002332; AVX2-NEXT:    je LBB6_362333; AVX2-NEXT:  LBB6_35: ## %cond.store492334; AVX2-NEXT:    vextractps $1, %xmm2, (%rdi)2335; AVX2-NEXT:    addq $4, %rdi2336; AVX2-NEXT:    testl $262144, %eax ## imm = 0x400002337; AVX2-NEXT:    je LBB6_382338; AVX2-NEXT:  LBB6_37: ## %cond.store522339; AVX2-NEXT:    vextractps $2, %xmm2, (%rdi)2340; AVX2-NEXT:    addq $4, %rdi2341; AVX2-NEXT:    testl $524288, %eax ## imm = 0x800002342; AVX2-NEXT:    jne LBB6_392343; AVX2-NEXT:    jmp LBB6_402344; AVX2-NEXT:  LBB6_41: ## %cond.store582345; AVX2-NEXT:    vmovss %xmm0, (%rdi)2346; AVX2-NEXT:    addq $4, %rdi2347; AVX2-NEXT:    testl $2097152, %eax ## imm = 0x2000002348; AVX2-NEXT:    je LBB6_442349; AVX2-NEXT:  LBB6_43: ## %cond.store612350; AVX2-NEXT:    vextractps $1, %xmm0, (%rdi)2351; AVX2-NEXT:    addq $4, %rdi2352; AVX2-NEXT:    testl $4194304, %eax ## imm = 0x4000002353; AVX2-NEXT:    je LBB6_462354; AVX2-NEXT:  LBB6_45: ## %cond.store642355; AVX2-NEXT:    vextractps $2, %xmm0, (%rdi)2356; AVX2-NEXT:    addq $4, %rdi2357; AVX2-NEXT:    testl $8388608, %eax ## imm = 0x8000002358; AVX2-NEXT:    je LBB6_482359; AVX2-NEXT:  LBB6_47: ## %cond.store672360; AVX2-NEXT:    vextractps $3, %xmm0, (%rdi)2361; AVX2-NEXT:    addq $4, %rdi2362; AVX2-NEXT:    testl $16777216, %eax ## imm = 0x10000002363; AVX2-NEXT:    je LBB6_502364; AVX2-NEXT:  LBB6_49: ## %cond.store702365; AVX2-NEXT:    vmovss %xmm3, (%rdi)2366; AVX2-NEXT:    addq $4, %rdi2367; AVX2-NEXT:    testl $33554432, %eax ## imm = 0x20000002368; AVX2-NEXT:    je LBB6_522369; AVX2-NEXT:  LBB6_51: ## %cond.store732370; AVX2-NEXT:    vextractps $1, %xmm3, (%rdi)2371; AVX2-NEXT:    addq $4, %rdi2372; AVX2-NEXT:    testl $67108864, %eax ## imm = 0x40000002373; AVX2-NEXT:    je LBB6_542374; AVX2-NEXT:  LBB6_53: ## %cond.store762375; AVX2-NEXT:    vextractps $2, %xmm3, (%rdi)2376; AVX2-NEXT:    addq $4, %rdi2377; AVX2-NEXT:    testl $134217728, %eax ## imm = 0x80000002378; AVX2-NEXT:    jne LBB6_552379; AVX2-NEXT:    jmp LBB6_562380; AVX2-NEXT:  LBB6_57: ## %cond.store822381; AVX2-NEXT:    vmovss %xmm0, (%rdi)2382; AVX2-NEXT:    addq $4, %rdi2383; AVX2-NEXT:    testl $536870912, %eax ## imm = 0x200000002384; AVX2-NEXT:    je LBB6_602385; AVX2-NEXT:  LBB6_59: ## %cond.store852386; AVX2-NEXT:    vextractps $1, %xmm0, (%rdi)2387; AVX2-NEXT:    addq $4, %rdi2388; AVX2-NEXT:    testl $1073741824, %eax ## imm = 0x400000002389; AVX2-NEXT:    je LBB6_622390; AVX2-NEXT:  LBB6_61: ## %cond.store882391; AVX2-NEXT:    vextractps $2, %xmm0, (%rdi)2392; AVX2-NEXT:    addq $4, %rdi2393; AVX2-NEXT:    testl $-2147483648, %eax ## imm = 0x800000002394; AVX2-NEXT:    je LBB6_642395; AVX2-NEXT:  LBB6_63: ## %cond.store912396; AVX2-NEXT:    vextractps $3, %xmm0, (%rdi)2397; AVX2-NEXT:    vzeroupper2398; AVX2-NEXT:    retq2399;2400; AVX512-LABEL: compressstore_v32f32_v32i32:2401; AVX512:       ## %bb.0:2402; AVX512-NEXT:    vptestnmd %zmm3, %zmm3, %k12403; AVX512-NEXT:    vptestnmd %zmm2, %zmm2, %k22404; AVX512-NEXT:    kmovw %k2, %eax2405; AVX512-NEXT:    movl %eax, %ecx2406; AVX512-NEXT:    shrl %ecx2407; AVX512-NEXT:    andl $21845, %ecx ## imm = 0x55552408; AVX512-NEXT:    subl %ecx, %eax2409; AVX512-NEXT:    movl %eax, %ecx2410; AVX512-NEXT:    andl $858993459, %ecx ## imm = 0x333333332411; AVX512-NEXT:    shrl $2, %eax2412; AVX512-NEXT:    andl $858993459, %eax ## imm = 0x333333332413; AVX512-NEXT:    addl %ecx, %eax2414; AVX512-NEXT:    movl %eax, %ecx2415; AVX512-NEXT:    shrl $4, %ecx2416; AVX512-NEXT:    addl %eax, %ecx2417; AVX512-NEXT:    andl $252645135, %ecx ## imm = 0xF0F0F0F2418; AVX512-NEXT:    imull $16843009, %ecx, %eax ## imm = 0x10101012419; AVX512-NEXT:    shrl $24, %eax2420; AVX512-NEXT:    vcompressps %zmm1, (%rdi,%rax,4) {%k1}2421; AVX512-NEXT:    vcompressps %zmm0, (%rdi) {%k2}2422; AVX512-NEXT:    vzeroupper2423; AVX512-NEXT:    retq2424  %mask = icmp eq <32 x i32> %trigger, zeroinitializer2425  call void @llvm.masked.compressstore.v32f32(<32 x float> %V, ptr %base, <32 x i1> %mask)2426  ret void2427}2428 2429;2430; vXi642431;2432 2433define void @compressstore_v2i64_v2i1(ptr %base, <2 x i64> %V, <2 x i1> %mask) {2434; SSE2-LABEL: compressstore_v2i64_v2i1:2435; SSE2:       ## %bb.0:2436; SSE2-NEXT:    psllq $63, %xmm12437; SSE2-NEXT:    movmskpd %xmm1, %eax2438; SSE2-NEXT:    testb $1, %al2439; SSE2-NEXT:    jne LBB7_12440; SSE2-NEXT:  ## %bb.2: ## %else2441; SSE2-NEXT:    testb $2, %al2442; SSE2-NEXT:    jne LBB7_32443; SSE2-NEXT:  LBB7_4: ## %else22444; SSE2-NEXT:    retq2445; SSE2-NEXT:  LBB7_1: ## %cond.store2446; SSE2-NEXT:    movq %xmm0, (%rdi)2447; SSE2-NEXT:    addq $8, %rdi2448; SSE2-NEXT:    testb $2, %al2449; SSE2-NEXT:    je LBB7_42450; SSE2-NEXT:  LBB7_3: ## %cond.store12451; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]2452; SSE2-NEXT:    movq %xmm0, (%rdi)2453; SSE2-NEXT:    retq2454;2455; SSE42-LABEL: compressstore_v2i64_v2i1:2456; SSE42:       ## %bb.0:2457; SSE42-NEXT:    psllq $63, %xmm12458; SSE42-NEXT:    movmskpd %xmm1, %eax2459; SSE42-NEXT:    testb $1, %al2460; SSE42-NEXT:    jne LBB7_12461; SSE42-NEXT:  ## %bb.2: ## %else2462; SSE42-NEXT:    testb $2, %al2463; SSE42-NEXT:    jne LBB7_32464; SSE42-NEXT:  LBB7_4: ## %else22465; SSE42-NEXT:    retq2466; SSE42-NEXT:  LBB7_1: ## %cond.store2467; SSE42-NEXT:    movq %xmm0, (%rdi)2468; SSE42-NEXT:    addq $8, %rdi2469; SSE42-NEXT:    testb $2, %al2470; SSE42-NEXT:    je LBB7_42471; SSE42-NEXT:  LBB7_3: ## %cond.store12472; SSE42-NEXT:    pextrq $1, %xmm0, (%rdi)2473; SSE42-NEXT:    retq2474;2475; AVX1OR2-LABEL: compressstore_v2i64_v2i1:2476; AVX1OR2:       ## %bb.0:2477; AVX1OR2-NEXT:    vpsllq $63, %xmm1, %xmm12478; AVX1OR2-NEXT:    vmovmskpd %xmm1, %eax2479; AVX1OR2-NEXT:    testb $1, %al2480; AVX1OR2-NEXT:    jne LBB7_12481; AVX1OR2-NEXT:  ## %bb.2: ## %else2482; AVX1OR2-NEXT:    testb $2, %al2483; AVX1OR2-NEXT:    jne LBB7_32484; AVX1OR2-NEXT:  LBB7_4: ## %else22485; AVX1OR2-NEXT:    retq2486; AVX1OR2-NEXT:  LBB7_1: ## %cond.store2487; AVX1OR2-NEXT:    vmovq %xmm0, (%rdi)2488; AVX1OR2-NEXT:    addq $8, %rdi2489; AVX1OR2-NEXT:    testb $2, %al2490; AVX1OR2-NEXT:    je LBB7_42491; AVX1OR2-NEXT:  LBB7_3: ## %cond.store12492; AVX1OR2-NEXT:    vpextrq $1, %xmm0, (%rdi)2493; AVX1OR2-NEXT:    retq2494;2495; AVX512F-LABEL: compressstore_v2i64_v2i1:2496; AVX512F:       ## %bb.0:2497; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm02498; AVX512F-NEXT:    vpsllq $63, %xmm1, %xmm12499; AVX512F-NEXT:    vptestmq %zmm1, %zmm1, %k02500; AVX512F-NEXT:    kshiftlw $14, %k0, %k02501; AVX512F-NEXT:    kshiftrw $14, %k0, %k12502; AVX512F-NEXT:    vpcompressq %zmm0, (%rdi) {%k1}2503; AVX512F-NEXT:    vzeroupper2504; AVX512F-NEXT:    retq2505;2506; AVX512VLDQ-LABEL: compressstore_v2i64_v2i1:2507; AVX512VLDQ:       ## %bb.0:2508; AVX512VLDQ-NEXT:    vpsllq $63, %xmm1, %xmm12509; AVX512VLDQ-NEXT:    vpmovq2m %xmm1, %k12510; AVX512VLDQ-NEXT:    vpcompressq %xmm0, (%rdi) {%k1}2511; AVX512VLDQ-NEXT:    retq2512;2513; AVX512VLBW-LABEL: compressstore_v2i64_v2i1:2514; AVX512VLBW:       ## %bb.0:2515; AVX512VLBW-NEXT:    vpsllq $63, %xmm1, %xmm12516; AVX512VLBW-NEXT:    vptestmq %xmm1, %xmm1, %k12517; AVX512VLBW-NEXT:    vpcompressq %xmm0, (%rdi) {%k1}2518; AVX512VLBW-NEXT:    retq2519  call void @llvm.masked.compressstore.v2i64(<2 x i64> %V, ptr %base, <2 x i1> %mask)2520  ret void2521}2522 2523define void @compressstore_v4i64_v4i1(ptr %base, <4 x i64> %V, <4 x i1> %mask) {2524; SSE2-LABEL: compressstore_v4i64_v4i1:2525; SSE2:       ## %bb.0:2526; SSE2-NEXT:    pslld $31, %xmm22527; SSE2-NEXT:    movmskps %xmm2, %eax2528; SSE2-NEXT:    testb $1, %al2529; SSE2-NEXT:    jne LBB8_12530; SSE2-NEXT:  ## %bb.2: ## %else2531; SSE2-NEXT:    testb $2, %al2532; SSE2-NEXT:    jne LBB8_32533; SSE2-NEXT:  LBB8_4: ## %else22534; SSE2-NEXT:    testb $4, %al2535; SSE2-NEXT:    jne LBB8_52536; SSE2-NEXT:  LBB8_6: ## %else52537; SSE2-NEXT:    testb $8, %al2538; SSE2-NEXT:    jne LBB8_72539; SSE2-NEXT:  LBB8_8: ## %else82540; SSE2-NEXT:    retq2541; SSE2-NEXT:  LBB8_1: ## %cond.store2542; SSE2-NEXT:    movq %xmm0, (%rdi)2543; SSE2-NEXT:    addq $8, %rdi2544; SSE2-NEXT:    testb $2, %al2545; SSE2-NEXT:    je LBB8_42546; SSE2-NEXT:  LBB8_3: ## %cond.store12547; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]2548; SSE2-NEXT:    movq %xmm0, (%rdi)2549; SSE2-NEXT:    addq $8, %rdi2550; SSE2-NEXT:    testb $4, %al2551; SSE2-NEXT:    je LBB8_62552; SSE2-NEXT:  LBB8_5: ## %cond.store42553; SSE2-NEXT:    movq %xmm1, (%rdi)2554; SSE2-NEXT:    addq $8, %rdi2555; SSE2-NEXT:    testb $8, %al2556; SSE2-NEXT:    je LBB8_82557; SSE2-NEXT:  LBB8_7: ## %cond.store72558; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]2559; SSE2-NEXT:    movq %xmm0, (%rdi)2560; SSE2-NEXT:    retq2561;2562; SSE42-LABEL: compressstore_v4i64_v4i1:2563; SSE42:       ## %bb.0:2564; SSE42-NEXT:    pslld $31, %xmm22565; SSE42-NEXT:    movmskps %xmm2, %eax2566; SSE42-NEXT:    testb $1, %al2567; SSE42-NEXT:    jne LBB8_12568; SSE42-NEXT:  ## %bb.2: ## %else2569; SSE42-NEXT:    testb $2, %al2570; SSE42-NEXT:    jne LBB8_32571; SSE42-NEXT:  LBB8_4: ## %else22572; SSE42-NEXT:    testb $4, %al2573; SSE42-NEXT:    jne LBB8_52574; SSE42-NEXT:  LBB8_6: ## %else52575; SSE42-NEXT:    testb $8, %al2576; SSE42-NEXT:    jne LBB8_72577; SSE42-NEXT:  LBB8_8: ## %else82578; SSE42-NEXT:    retq2579; SSE42-NEXT:  LBB8_1: ## %cond.store2580; SSE42-NEXT:    movq %xmm0, (%rdi)2581; SSE42-NEXT:    addq $8, %rdi2582; SSE42-NEXT:    testb $2, %al2583; SSE42-NEXT:    je LBB8_42584; SSE42-NEXT:  LBB8_3: ## %cond.store12585; SSE42-NEXT:    pextrq $1, %xmm0, (%rdi)2586; SSE42-NEXT:    addq $8, %rdi2587; SSE42-NEXT:    testb $4, %al2588; SSE42-NEXT:    je LBB8_62589; SSE42-NEXT:  LBB8_5: ## %cond.store42590; SSE42-NEXT:    movq %xmm1, (%rdi)2591; SSE42-NEXT:    addq $8, %rdi2592; SSE42-NEXT:    testb $8, %al2593; SSE42-NEXT:    je LBB8_82594; SSE42-NEXT:  LBB8_7: ## %cond.store72595; SSE42-NEXT:    pextrq $1, %xmm1, (%rdi)2596; SSE42-NEXT:    retq2597;2598; AVX1-LABEL: compressstore_v4i64_v4i1:2599; AVX1:       ## %bb.0:2600; AVX1-NEXT:    vpslld $31, %xmm1, %xmm12601; AVX1-NEXT:    vmovmskps %xmm1, %eax2602; AVX1-NEXT:    testb $1, %al2603; AVX1-NEXT:    je LBB8_22604; AVX1-NEXT:  ## %bb.1: ## %cond.store2605; AVX1-NEXT:    vmovq %xmm0, (%rdi)2606; AVX1-NEXT:    addq $8, %rdi2607; AVX1-NEXT:  LBB8_2: ## %else2608; AVX1-NEXT:    testb $2, %al2609; AVX1-NEXT:    je LBB8_42610; AVX1-NEXT:  ## %bb.3: ## %cond.store12611; AVX1-NEXT:    vpextrq $1, %xmm0, (%rdi)2612; AVX1-NEXT:    addq $8, %rdi2613; AVX1-NEXT:  LBB8_4: ## %else22614; AVX1-NEXT:    testb $4, %al2615; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02616; AVX1-NEXT:    jne LBB8_52617; AVX1-NEXT:  ## %bb.6: ## %else52618; AVX1-NEXT:    testb $8, %al2619; AVX1-NEXT:    jne LBB8_72620; AVX1-NEXT:  LBB8_8: ## %else82621; AVX1-NEXT:    vzeroupper2622; AVX1-NEXT:    retq2623; AVX1-NEXT:  LBB8_5: ## %cond.store42624; AVX1-NEXT:    vmovq %xmm0, (%rdi)2625; AVX1-NEXT:    addq $8, %rdi2626; AVX1-NEXT:    testb $8, %al2627; AVX1-NEXT:    je LBB8_82628; AVX1-NEXT:  LBB8_7: ## %cond.store72629; AVX1-NEXT:    vpextrq $1, %xmm0, (%rdi)2630; AVX1-NEXT:    vzeroupper2631; AVX1-NEXT:    retq2632;2633; AVX2-LABEL: compressstore_v4i64_v4i1:2634; AVX2:       ## %bb.0:2635; AVX2-NEXT:    vpslld $31, %xmm1, %xmm12636; AVX2-NEXT:    vmovmskps %xmm1, %eax2637; AVX2-NEXT:    testb $1, %al2638; AVX2-NEXT:    je LBB8_22639; AVX2-NEXT:  ## %bb.1: ## %cond.store2640; AVX2-NEXT:    vmovq %xmm0, (%rdi)2641; AVX2-NEXT:    addq $8, %rdi2642; AVX2-NEXT:  LBB8_2: ## %else2643; AVX2-NEXT:    testb $2, %al2644; AVX2-NEXT:    je LBB8_42645; AVX2-NEXT:  ## %bb.3: ## %cond.store12646; AVX2-NEXT:    vpextrq $1, %xmm0, (%rdi)2647; AVX2-NEXT:    addq $8, %rdi2648; AVX2-NEXT:  LBB8_4: ## %else22649; AVX2-NEXT:    testb $4, %al2650; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm02651; AVX2-NEXT:    jne LBB8_52652; AVX2-NEXT:  ## %bb.6: ## %else52653; AVX2-NEXT:    testb $8, %al2654; AVX2-NEXT:    jne LBB8_72655; AVX2-NEXT:  LBB8_8: ## %else82656; AVX2-NEXT:    vzeroupper2657; AVX2-NEXT:    retq2658; AVX2-NEXT:  LBB8_5: ## %cond.store42659; AVX2-NEXT:    vmovq %xmm0, (%rdi)2660; AVX2-NEXT:    addq $8, %rdi2661; AVX2-NEXT:    testb $8, %al2662; AVX2-NEXT:    je LBB8_82663; AVX2-NEXT:  LBB8_7: ## %cond.store72664; AVX2-NEXT:    vpextrq $1, %xmm0, (%rdi)2665; AVX2-NEXT:    vzeroupper2666; AVX2-NEXT:    retq2667;2668; AVX512F-LABEL: compressstore_v4i64_v4i1:2669; AVX512F:       ## %bb.0:2670; AVX512F-NEXT:    ## kill: def $ymm0 killed $ymm0 def $zmm02671; AVX512F-NEXT:    vpslld $31, %xmm1, %xmm12672; AVX512F-NEXT:    vptestmd %zmm1, %zmm1, %k02673; AVX512F-NEXT:    kshiftlw $12, %k0, %k02674; AVX512F-NEXT:    kshiftrw $12, %k0, %k12675; AVX512F-NEXT:    vpcompressq %zmm0, (%rdi) {%k1}2676; AVX512F-NEXT:    vzeroupper2677; AVX512F-NEXT:    retq2678;2679; AVX512VLDQ-LABEL: compressstore_v4i64_v4i1:2680; AVX512VLDQ:       ## %bb.0:2681; AVX512VLDQ-NEXT:    vpslld $31, %xmm1, %xmm12682; AVX512VLDQ-NEXT:    vpmovd2m %xmm1, %k12683; AVX512VLDQ-NEXT:    vpcompressq %ymm0, (%rdi) {%k1}2684; AVX512VLDQ-NEXT:    vzeroupper2685; AVX512VLDQ-NEXT:    retq2686;2687; AVX512VLBW-LABEL: compressstore_v4i64_v4i1:2688; AVX512VLBW:       ## %bb.0:2689; AVX512VLBW-NEXT:    vpslld $31, %xmm1, %xmm12690; AVX512VLBW-NEXT:    vptestmd %xmm1, %xmm1, %k12691; AVX512VLBW-NEXT:    vpcompressq %ymm0, (%rdi) {%k1}2692; AVX512VLBW-NEXT:    vzeroupper2693; AVX512VLBW-NEXT:    retq2694  call void @llvm.masked.compressstore.v4i64(<4 x i64> %V, ptr %base, <4 x i1> %mask)2695  ret void2696}2697 2698define void @compressstore_v8i64_v8i1(ptr %base, <8 x i64> %V, <8 x i1> %mask) {2699; SSE2-LABEL: compressstore_v8i64_v8i1:2700; SSE2:       ## %bb.0:2701; SSE2-NEXT:    psllw $15, %xmm42702; SSE2-NEXT:    packsswb %xmm4, %xmm42703; SSE2-NEXT:    pmovmskb %xmm4, %eax2704; SSE2-NEXT:    testb $1, %al2705; SSE2-NEXT:    jne LBB9_12706; SSE2-NEXT:  ## %bb.2: ## %else2707; SSE2-NEXT:    testb $2, %al2708; SSE2-NEXT:    jne LBB9_32709; SSE2-NEXT:  LBB9_4: ## %else22710; SSE2-NEXT:    testb $4, %al2711; SSE2-NEXT:    jne LBB9_52712; SSE2-NEXT:  LBB9_6: ## %else52713; SSE2-NEXT:    testb $8, %al2714; SSE2-NEXT:    jne LBB9_72715; SSE2-NEXT:  LBB9_8: ## %else82716; SSE2-NEXT:    testb $16, %al2717; SSE2-NEXT:    jne LBB9_92718; SSE2-NEXT:  LBB9_10: ## %else112719; SSE2-NEXT:    testb $32, %al2720; SSE2-NEXT:    jne LBB9_112721; SSE2-NEXT:  LBB9_12: ## %else142722; SSE2-NEXT:    testb $64, %al2723; SSE2-NEXT:    jne LBB9_132724; SSE2-NEXT:  LBB9_14: ## %else172725; SSE2-NEXT:    testb $-128, %al2726; SSE2-NEXT:    jne LBB9_152727; SSE2-NEXT:  LBB9_16: ## %else202728; SSE2-NEXT:    retq2729; SSE2-NEXT:  LBB9_1: ## %cond.store2730; SSE2-NEXT:    movq %xmm0, (%rdi)2731; SSE2-NEXT:    addq $8, %rdi2732; SSE2-NEXT:    testb $2, %al2733; SSE2-NEXT:    je LBB9_42734; SSE2-NEXT:  LBB9_3: ## %cond.store12735; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]2736; SSE2-NEXT:    movq %xmm0, (%rdi)2737; SSE2-NEXT:    addq $8, %rdi2738; SSE2-NEXT:    testb $4, %al2739; SSE2-NEXT:    je LBB9_62740; SSE2-NEXT:  LBB9_5: ## %cond.store42741; SSE2-NEXT:    movq %xmm1, (%rdi)2742; SSE2-NEXT:    addq $8, %rdi2743; SSE2-NEXT:    testb $8, %al2744; SSE2-NEXT:    je LBB9_82745; SSE2-NEXT:  LBB9_7: ## %cond.store72746; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]2747; SSE2-NEXT:    movq %xmm0, (%rdi)2748; SSE2-NEXT:    addq $8, %rdi2749; SSE2-NEXT:    testb $16, %al2750; SSE2-NEXT:    je LBB9_102751; SSE2-NEXT:  LBB9_9: ## %cond.store102752; SSE2-NEXT:    movq %xmm2, (%rdi)2753; SSE2-NEXT:    addq $8, %rdi2754; SSE2-NEXT:    testb $32, %al2755; SSE2-NEXT:    je LBB9_122756; SSE2-NEXT:  LBB9_11: ## %cond.store132757; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[2,3,2,3]2758; SSE2-NEXT:    movq %xmm0, (%rdi)2759; SSE2-NEXT:    addq $8, %rdi2760; SSE2-NEXT:    testb $64, %al2761; SSE2-NEXT:    je LBB9_142762; SSE2-NEXT:  LBB9_13: ## %cond.store162763; SSE2-NEXT:    movq %xmm3, (%rdi)2764; SSE2-NEXT:    addq $8, %rdi2765; SSE2-NEXT:    testb $-128, %al2766; SSE2-NEXT:    je LBB9_162767; SSE2-NEXT:  LBB9_15: ## %cond.store192768; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[2,3,2,3]2769; SSE2-NEXT:    movq %xmm0, (%rdi)2770; SSE2-NEXT:    retq2771;2772; SSE42-LABEL: compressstore_v8i64_v8i1:2773; SSE42:       ## %bb.0:2774; SSE42-NEXT:    psllw $15, %xmm42775; SSE42-NEXT:    packsswb %xmm4, %xmm42776; SSE42-NEXT:    pmovmskb %xmm4, %eax2777; SSE42-NEXT:    testb $1, %al2778; SSE42-NEXT:    jne LBB9_12779; SSE42-NEXT:  ## %bb.2: ## %else2780; SSE42-NEXT:    testb $2, %al2781; SSE42-NEXT:    jne LBB9_32782; SSE42-NEXT:  LBB9_4: ## %else22783; SSE42-NEXT:    testb $4, %al2784; SSE42-NEXT:    jne LBB9_52785; SSE42-NEXT:  LBB9_6: ## %else52786; SSE42-NEXT:    testb $8, %al2787; SSE42-NEXT:    jne LBB9_72788; SSE42-NEXT:  LBB9_8: ## %else82789; SSE42-NEXT:    testb $16, %al2790; SSE42-NEXT:    jne LBB9_92791; SSE42-NEXT:  LBB9_10: ## %else112792; SSE42-NEXT:    testb $32, %al2793; SSE42-NEXT:    jne LBB9_112794; SSE42-NEXT:  LBB9_12: ## %else142795; SSE42-NEXT:    testb $64, %al2796; SSE42-NEXT:    jne LBB9_132797; SSE42-NEXT:  LBB9_14: ## %else172798; SSE42-NEXT:    testb $-128, %al2799; SSE42-NEXT:    jne LBB9_152800; SSE42-NEXT:  LBB9_16: ## %else202801; SSE42-NEXT:    retq2802; SSE42-NEXT:  LBB9_1: ## %cond.store2803; SSE42-NEXT:    movq %xmm0, (%rdi)2804; SSE42-NEXT:    addq $8, %rdi2805; SSE42-NEXT:    testb $2, %al2806; SSE42-NEXT:    je LBB9_42807; SSE42-NEXT:  LBB9_3: ## %cond.store12808; SSE42-NEXT:    pextrq $1, %xmm0, (%rdi)2809; SSE42-NEXT:    addq $8, %rdi2810; SSE42-NEXT:    testb $4, %al2811; SSE42-NEXT:    je LBB9_62812; SSE42-NEXT:  LBB9_5: ## %cond.store42813; SSE42-NEXT:    movq %xmm1, (%rdi)2814; SSE42-NEXT:    addq $8, %rdi2815; SSE42-NEXT:    testb $8, %al2816; SSE42-NEXT:    je LBB9_82817; SSE42-NEXT:  LBB9_7: ## %cond.store72818; SSE42-NEXT:    pextrq $1, %xmm1, (%rdi)2819; SSE42-NEXT:    addq $8, %rdi2820; SSE42-NEXT:    testb $16, %al2821; SSE42-NEXT:    je LBB9_102822; SSE42-NEXT:  LBB9_9: ## %cond.store102823; SSE42-NEXT:    movq %xmm2, (%rdi)2824; SSE42-NEXT:    addq $8, %rdi2825; SSE42-NEXT:    testb $32, %al2826; SSE42-NEXT:    je LBB9_122827; SSE42-NEXT:  LBB9_11: ## %cond.store132828; SSE42-NEXT:    pextrq $1, %xmm2, (%rdi)2829; SSE42-NEXT:    addq $8, %rdi2830; SSE42-NEXT:    testb $64, %al2831; SSE42-NEXT:    je LBB9_142832; SSE42-NEXT:  LBB9_13: ## %cond.store162833; SSE42-NEXT:    movq %xmm3, (%rdi)2834; SSE42-NEXT:    addq $8, %rdi2835; SSE42-NEXT:    testb $-128, %al2836; SSE42-NEXT:    je LBB9_162837; SSE42-NEXT:  LBB9_15: ## %cond.store192838; SSE42-NEXT:    pextrq $1, %xmm3, (%rdi)2839; SSE42-NEXT:    retq2840;2841; AVX1-LABEL: compressstore_v8i64_v8i1:2842; AVX1:       ## %bb.0:2843; AVX1-NEXT:    vpsllw $15, %xmm2, %xmm22844; AVX1-NEXT:    vpacksswb %xmm2, %xmm2, %xmm22845; AVX1-NEXT:    vpmovmskb %xmm2, %eax2846; AVX1-NEXT:    testb $1, %al2847; AVX1-NEXT:    je LBB9_22848; AVX1-NEXT:  ## %bb.1: ## %cond.store2849; AVX1-NEXT:    vmovq %xmm0, (%rdi)2850; AVX1-NEXT:    addq $8, %rdi2851; AVX1-NEXT:  LBB9_2: ## %else2852; AVX1-NEXT:    testb $2, %al2853; AVX1-NEXT:    je LBB9_42854; AVX1-NEXT:  ## %bb.3: ## %cond.store12855; AVX1-NEXT:    vpextrq $1, %xmm0, (%rdi)2856; AVX1-NEXT:    addq $8, %rdi2857; AVX1-NEXT:  LBB9_4: ## %else22858; AVX1-NEXT:    testb $4, %al2859; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm02860; AVX1-NEXT:    jne LBB9_52861; AVX1-NEXT:  ## %bb.6: ## %else52862; AVX1-NEXT:    testb $8, %al2863; AVX1-NEXT:    jne LBB9_72864; AVX1-NEXT:  LBB9_8: ## %else82865; AVX1-NEXT:    testb $16, %al2866; AVX1-NEXT:    jne LBB9_92867; AVX1-NEXT:  LBB9_10: ## %else112868; AVX1-NEXT:    testb $32, %al2869; AVX1-NEXT:    je LBB9_122870; AVX1-NEXT:  LBB9_11: ## %cond.store132871; AVX1-NEXT:    vpextrq $1, %xmm1, (%rdi)2872; AVX1-NEXT:    addq $8, %rdi2873; AVX1-NEXT:  LBB9_12: ## %else142874; AVX1-NEXT:    testb $64, %al2875; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm02876; AVX1-NEXT:    jne LBB9_132877; AVX1-NEXT:  ## %bb.14: ## %else172878; AVX1-NEXT:    testb $-128, %al2879; AVX1-NEXT:    jne LBB9_152880; AVX1-NEXT:  LBB9_16: ## %else202881; AVX1-NEXT:    vzeroupper2882; AVX1-NEXT:    retq2883; AVX1-NEXT:  LBB9_5: ## %cond.store42884; AVX1-NEXT:    vmovq %xmm0, (%rdi)2885; AVX1-NEXT:    addq $8, %rdi2886; AVX1-NEXT:    testb $8, %al2887; AVX1-NEXT:    je LBB9_82888; AVX1-NEXT:  LBB9_7: ## %cond.store72889; AVX1-NEXT:    vpextrq $1, %xmm0, (%rdi)2890; AVX1-NEXT:    addq $8, %rdi2891; AVX1-NEXT:    testb $16, %al2892; AVX1-NEXT:    je LBB9_102893; AVX1-NEXT:  LBB9_9: ## %cond.store102894; AVX1-NEXT:    vmovq %xmm1, (%rdi)2895; AVX1-NEXT:    addq $8, %rdi2896; AVX1-NEXT:    testb $32, %al2897; AVX1-NEXT:    jne LBB9_112898; AVX1-NEXT:    jmp LBB9_122899; AVX1-NEXT:  LBB9_13: ## %cond.store162900; AVX1-NEXT:    vmovq %xmm0, (%rdi)2901; AVX1-NEXT:    addq $8, %rdi2902; AVX1-NEXT:    testb $-128, %al2903; AVX1-NEXT:    je LBB9_162904; AVX1-NEXT:  LBB9_15: ## %cond.store192905; AVX1-NEXT:    vpextrq $1, %xmm0, (%rdi)2906; AVX1-NEXT:    vzeroupper2907; AVX1-NEXT:    retq2908;2909; AVX2-LABEL: compressstore_v8i64_v8i1:2910; AVX2:       ## %bb.0:2911; AVX2-NEXT:    vpsllw $15, %xmm2, %xmm22912; AVX2-NEXT:    vpacksswb %xmm2, %xmm2, %xmm22913; AVX2-NEXT:    vpmovmskb %xmm2, %eax2914; AVX2-NEXT:    testb $1, %al2915; AVX2-NEXT:    je LBB9_22916; AVX2-NEXT:  ## %bb.1: ## %cond.store2917; AVX2-NEXT:    vmovq %xmm0, (%rdi)2918; AVX2-NEXT:    addq $8, %rdi2919; AVX2-NEXT:  LBB9_2: ## %else2920; AVX2-NEXT:    testb $2, %al2921; AVX2-NEXT:    je LBB9_42922; AVX2-NEXT:  ## %bb.3: ## %cond.store12923; AVX2-NEXT:    vpextrq $1, %xmm0, (%rdi)2924; AVX2-NEXT:    addq $8, %rdi2925; AVX2-NEXT:  LBB9_4: ## %else22926; AVX2-NEXT:    testb $4, %al2927; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm02928; AVX2-NEXT:    jne LBB9_52929; AVX2-NEXT:  ## %bb.6: ## %else52930; AVX2-NEXT:    testb $8, %al2931; AVX2-NEXT:    jne LBB9_72932; AVX2-NEXT:  LBB9_8: ## %else82933; AVX2-NEXT:    testb $16, %al2934; AVX2-NEXT:    jne LBB9_92935; AVX2-NEXT:  LBB9_10: ## %else112936; AVX2-NEXT:    testb $32, %al2937; AVX2-NEXT:    je LBB9_122938; AVX2-NEXT:  LBB9_11: ## %cond.store132939; AVX2-NEXT:    vpextrq $1, %xmm1, (%rdi)2940; AVX2-NEXT:    addq $8, %rdi2941; AVX2-NEXT:  LBB9_12: ## %else142942; AVX2-NEXT:    testb $64, %al2943; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm02944; AVX2-NEXT:    jne LBB9_132945; AVX2-NEXT:  ## %bb.14: ## %else172946; AVX2-NEXT:    testb $-128, %al2947; AVX2-NEXT:    jne LBB9_152948; AVX2-NEXT:  LBB9_16: ## %else202949; AVX2-NEXT:    vzeroupper2950; AVX2-NEXT:    retq2951; AVX2-NEXT:  LBB9_5: ## %cond.store42952; AVX2-NEXT:    vmovq %xmm0, (%rdi)2953; AVX2-NEXT:    addq $8, %rdi2954; AVX2-NEXT:    testb $8, %al2955; AVX2-NEXT:    je LBB9_82956; AVX2-NEXT:  LBB9_7: ## %cond.store72957; AVX2-NEXT:    vpextrq $1, %xmm0, (%rdi)2958; AVX2-NEXT:    addq $8, %rdi2959; AVX2-NEXT:    testb $16, %al2960; AVX2-NEXT:    je LBB9_102961; AVX2-NEXT:  LBB9_9: ## %cond.store102962; AVX2-NEXT:    vmovq %xmm1, (%rdi)2963; AVX2-NEXT:    addq $8, %rdi2964; AVX2-NEXT:    testb $32, %al2965; AVX2-NEXT:    jne LBB9_112966; AVX2-NEXT:    jmp LBB9_122967; AVX2-NEXT:  LBB9_13: ## %cond.store162968; AVX2-NEXT:    vmovq %xmm0, (%rdi)2969; AVX2-NEXT:    addq $8, %rdi2970; AVX2-NEXT:    testb $-128, %al2971; AVX2-NEXT:    je LBB9_162972; AVX2-NEXT:  LBB9_15: ## %cond.store192973; AVX2-NEXT:    vpextrq $1, %xmm0, (%rdi)2974; AVX2-NEXT:    vzeroupper2975; AVX2-NEXT:    retq2976;2977; AVX512F-LABEL: compressstore_v8i64_v8i1:2978; AVX512F:       ## %bb.0:2979; AVX512F-NEXT:    vpmovsxwq %xmm1, %zmm12980; AVX512F-NEXT:    vpsllq $63, %zmm1, %zmm12981; AVX512F-NEXT:    vptestmq %zmm1, %zmm1, %k12982; AVX512F-NEXT:    vpcompressq %zmm0, (%rdi) {%k1}2983; AVX512F-NEXT:    vzeroupper2984; AVX512F-NEXT:    retq2985;2986; AVX512VLDQ-LABEL: compressstore_v8i64_v8i1:2987; AVX512VLDQ:       ## %bb.0:2988; AVX512VLDQ-NEXT:    vpmovsxwd %xmm1, %ymm12989; AVX512VLDQ-NEXT:    vpslld $31, %ymm1, %ymm12990; AVX512VLDQ-NEXT:    vpmovd2m %ymm1, %k12991; AVX512VLDQ-NEXT:    vpcompressq %zmm0, (%rdi) {%k1}2992; AVX512VLDQ-NEXT:    vzeroupper2993; AVX512VLDQ-NEXT:    retq2994;2995; AVX512VLBW-LABEL: compressstore_v8i64_v8i1:2996; AVX512VLBW:       ## %bb.0:2997; AVX512VLBW-NEXT:    vpsllw $15, %xmm1, %xmm12998; AVX512VLBW-NEXT:    vpmovw2m %xmm1, %k12999; AVX512VLBW-NEXT:    vpcompressq %zmm0, (%rdi) {%k1}3000; AVX512VLBW-NEXT:    vzeroupper3001; AVX512VLBW-NEXT:    retq3002  call void @llvm.masked.compressstore.v8i64(<8 x i64> %V, ptr %base, <8 x i1> %mask)3003  ret void3004}3005 3006;3007; vXi323008;3009 3010define void @compressstore_v4i32_v4i32(ptr %base, <4 x i32> %V, <4 x i32> %trigger) {3011; SSE2-LABEL: compressstore_v4i32_v4i32:3012; SSE2:       ## %bb.0:3013; SSE2-NEXT:    pxor %xmm2, %xmm23014; SSE2-NEXT:    pcmpeqd %xmm1, %xmm23015; SSE2-NEXT:    movmskps %xmm2, %eax3016; SSE2-NEXT:    testb $1, %al3017; SSE2-NEXT:    jne LBB10_13018; SSE2-NEXT:  ## %bb.2: ## %else3019; SSE2-NEXT:    testb $2, %al3020; SSE2-NEXT:    jne LBB10_33021; SSE2-NEXT:  LBB10_4: ## %else23022; SSE2-NEXT:    testb $4, %al3023; SSE2-NEXT:    jne LBB10_53024; SSE2-NEXT:  LBB10_6: ## %else53025; SSE2-NEXT:    testb $8, %al3026; SSE2-NEXT:    jne LBB10_73027; SSE2-NEXT:  LBB10_8: ## %else83028; SSE2-NEXT:    retq3029; SSE2-NEXT:  LBB10_1: ## %cond.store3030; SSE2-NEXT:    movd %xmm0, (%rdi)3031; SSE2-NEXT:    addq $4, %rdi3032; SSE2-NEXT:    testb $2, %al3033; SSE2-NEXT:    je LBB10_43034; SSE2-NEXT:  LBB10_3: ## %cond.store13035; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]3036; SSE2-NEXT:    movd %xmm1, (%rdi)3037; SSE2-NEXT:    addq $4, %rdi3038; SSE2-NEXT:    testb $4, %al3039; SSE2-NEXT:    je LBB10_63040; SSE2-NEXT:  LBB10_5: ## %cond.store43041; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]3042; SSE2-NEXT:    movd %xmm1, (%rdi)3043; SSE2-NEXT:    addq $4, %rdi3044; SSE2-NEXT:    testb $8, %al3045; SSE2-NEXT:    je LBB10_83046; SSE2-NEXT:  LBB10_7: ## %cond.store73047; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]3048; SSE2-NEXT:    movd %xmm0, (%rdi)3049; SSE2-NEXT:    retq3050;3051; SSE42-LABEL: compressstore_v4i32_v4i32:3052; SSE42:       ## %bb.0:3053; SSE42-NEXT:    pxor %xmm2, %xmm23054; SSE42-NEXT:    pcmpeqd %xmm1, %xmm23055; SSE42-NEXT:    movmskps %xmm2, %eax3056; SSE42-NEXT:    testb $1, %al3057; SSE42-NEXT:    jne LBB10_13058; SSE42-NEXT:  ## %bb.2: ## %else3059; SSE42-NEXT:    testb $2, %al3060; SSE42-NEXT:    jne LBB10_33061; SSE42-NEXT:  LBB10_4: ## %else23062; SSE42-NEXT:    testb $4, %al3063; SSE42-NEXT:    jne LBB10_53064; SSE42-NEXT:  LBB10_6: ## %else53065; SSE42-NEXT:    testb $8, %al3066; SSE42-NEXT:    jne LBB10_73067; SSE42-NEXT:  LBB10_8: ## %else83068; SSE42-NEXT:    retq3069; SSE42-NEXT:  LBB10_1: ## %cond.store3070; SSE42-NEXT:    movss %xmm0, (%rdi)3071; SSE42-NEXT:    addq $4, %rdi3072; SSE42-NEXT:    testb $2, %al3073; SSE42-NEXT:    je LBB10_43074; SSE42-NEXT:  LBB10_3: ## %cond.store13075; SSE42-NEXT:    extractps $1, %xmm0, (%rdi)3076; SSE42-NEXT:    addq $4, %rdi3077; SSE42-NEXT:    testb $4, %al3078; SSE42-NEXT:    je LBB10_63079; SSE42-NEXT:  LBB10_5: ## %cond.store43080; SSE42-NEXT:    extractps $2, %xmm0, (%rdi)3081; SSE42-NEXT:    addq $4, %rdi3082; SSE42-NEXT:    testb $8, %al3083; SSE42-NEXT:    je LBB10_83084; SSE42-NEXT:  LBB10_7: ## %cond.store73085; SSE42-NEXT:    extractps $3, %xmm0, (%rdi)3086; SSE42-NEXT:    retq3087;3088; AVX1OR2-LABEL: compressstore_v4i32_v4i32:3089; AVX1OR2:       ## %bb.0:3090; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm23091; AVX1OR2-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm13092; AVX1OR2-NEXT:    vmovmskps %xmm1, %eax3093; AVX1OR2-NEXT:    testb $1, %al3094; AVX1OR2-NEXT:    jne LBB10_13095; AVX1OR2-NEXT:  ## %bb.2: ## %else3096; AVX1OR2-NEXT:    testb $2, %al3097; AVX1OR2-NEXT:    jne LBB10_33098; AVX1OR2-NEXT:  LBB10_4: ## %else23099; AVX1OR2-NEXT:    testb $4, %al3100; AVX1OR2-NEXT:    jne LBB10_53101; AVX1OR2-NEXT:  LBB10_6: ## %else53102; AVX1OR2-NEXT:    testb $8, %al3103; AVX1OR2-NEXT:    jne LBB10_73104; AVX1OR2-NEXT:  LBB10_8: ## %else83105; AVX1OR2-NEXT:    retq3106; AVX1OR2-NEXT:  LBB10_1: ## %cond.store3107; AVX1OR2-NEXT:    vmovss %xmm0, (%rdi)3108; AVX1OR2-NEXT:    addq $4, %rdi3109; AVX1OR2-NEXT:    testb $2, %al3110; AVX1OR2-NEXT:    je LBB10_43111; AVX1OR2-NEXT:  LBB10_3: ## %cond.store13112; AVX1OR2-NEXT:    vextractps $1, %xmm0, (%rdi)3113; AVX1OR2-NEXT:    addq $4, %rdi3114; AVX1OR2-NEXT:    testb $4, %al3115; AVX1OR2-NEXT:    je LBB10_63116; AVX1OR2-NEXT:  LBB10_5: ## %cond.store43117; AVX1OR2-NEXT:    vextractps $2, %xmm0, (%rdi)3118; AVX1OR2-NEXT:    addq $4, %rdi3119; AVX1OR2-NEXT:    testb $8, %al3120; AVX1OR2-NEXT:    je LBB10_83121; AVX1OR2-NEXT:  LBB10_7: ## %cond.store73122; AVX1OR2-NEXT:    vextractps $3, %xmm0, (%rdi)3123; AVX1OR2-NEXT:    retq3124;3125; AVX512F-LABEL: compressstore_v4i32_v4i32:3126; AVX512F:       ## %bb.0:3127; AVX512F-NEXT:    ## kill: def $xmm1 killed $xmm1 def $zmm13128; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm03129; AVX512F-NEXT:    vptestnmd %zmm1, %zmm1, %k03130; AVX512F-NEXT:    kshiftlw $12, %k0, %k03131; AVX512F-NEXT:    kshiftrw $12, %k0, %k13132; AVX512F-NEXT:    vpcompressd %zmm0, (%rdi) {%k1}3133; AVX512F-NEXT:    vzeroupper3134; AVX512F-NEXT:    retq3135;3136; AVX512VL-LABEL: compressstore_v4i32_v4i32:3137; AVX512VL:       ## %bb.0:3138; AVX512VL-NEXT:    vptestnmd %xmm1, %xmm1, %k13139; AVX512VL-NEXT:    vpcompressd %xmm0, (%rdi) {%k1}3140; AVX512VL-NEXT:    retq3141  %mask = icmp eq <4 x i32> %trigger, zeroinitializer3142  call void @llvm.masked.compressstore.v4i32(<4 x i32> %V, ptr %base, <4 x i1> %mask)3143  ret void3144}3145 3146;3147; vXi163148;3149 3150define void @compressstore_v8i16_v8i16(ptr %base, <8 x i16> %V, <8 x i16> %trigger) {3151; SSE2-LABEL: compressstore_v8i16_v8i16:3152; SSE2:       ## %bb.0:3153; SSE2-NEXT:    pxor %xmm2, %xmm23154; SSE2-NEXT:    pcmpeqw %xmm1, %xmm23155; SSE2-NEXT:    packsswb %xmm2, %xmm23156; SSE2-NEXT:    pmovmskb %xmm2, %eax3157; SSE2-NEXT:    testb $1, %al3158; SSE2-NEXT:    jne LBB11_13159; SSE2-NEXT:  ## %bb.2: ## %else3160; SSE2-NEXT:    testb $2, %al3161; SSE2-NEXT:    jne LBB11_33162; SSE2-NEXT:  LBB11_4: ## %else23163; SSE2-NEXT:    testb $4, %al3164; SSE2-NEXT:    jne LBB11_53165; SSE2-NEXT:  LBB11_6: ## %else53166; SSE2-NEXT:    testb $8, %al3167; SSE2-NEXT:    jne LBB11_73168; SSE2-NEXT:  LBB11_8: ## %else83169; SSE2-NEXT:    testb $16, %al3170; SSE2-NEXT:    jne LBB11_93171; SSE2-NEXT:  LBB11_10: ## %else113172; SSE2-NEXT:    testb $32, %al3173; SSE2-NEXT:    jne LBB11_113174; SSE2-NEXT:  LBB11_12: ## %else143175; SSE2-NEXT:    testb $64, %al3176; SSE2-NEXT:    jne LBB11_133177; SSE2-NEXT:  LBB11_14: ## %else173178; SSE2-NEXT:    testb $-128, %al3179; SSE2-NEXT:    jne LBB11_153180; SSE2-NEXT:  LBB11_16: ## %else203181; SSE2-NEXT:    retq3182; SSE2-NEXT:  LBB11_1: ## %cond.store3183; SSE2-NEXT:    movd %xmm0, %ecx3184; SSE2-NEXT:    movw %cx, (%rdi)3185; SSE2-NEXT:    addq $2, %rdi3186; SSE2-NEXT:    testb $2, %al3187; SSE2-NEXT:    je LBB11_43188; SSE2-NEXT:  LBB11_3: ## %cond.store13189; SSE2-NEXT:    pextrw $1, %xmm0, %ecx3190; SSE2-NEXT:    movw %cx, (%rdi)3191; SSE2-NEXT:    addq $2, %rdi3192; SSE2-NEXT:    testb $4, %al3193; SSE2-NEXT:    je LBB11_63194; SSE2-NEXT:  LBB11_5: ## %cond.store43195; SSE2-NEXT:    pextrw $2, %xmm0, %ecx3196; SSE2-NEXT:    movw %cx, (%rdi)3197; SSE2-NEXT:    addq $2, %rdi3198; SSE2-NEXT:    testb $8, %al3199; SSE2-NEXT:    je LBB11_83200; SSE2-NEXT:  LBB11_7: ## %cond.store73201; SSE2-NEXT:    pextrw $3, %xmm0, %ecx3202; SSE2-NEXT:    movw %cx, (%rdi)3203; SSE2-NEXT:    addq $2, %rdi3204; SSE2-NEXT:    testb $16, %al3205; SSE2-NEXT:    je LBB11_103206; SSE2-NEXT:  LBB11_9: ## %cond.store103207; SSE2-NEXT:    pextrw $4, %xmm0, %ecx3208; SSE2-NEXT:    movw %cx, (%rdi)3209; SSE2-NEXT:    addq $2, %rdi3210; SSE2-NEXT:    testb $32, %al3211; SSE2-NEXT:    je LBB11_123212; SSE2-NEXT:  LBB11_11: ## %cond.store133213; SSE2-NEXT:    pextrw $5, %xmm0, %ecx3214; SSE2-NEXT:    movw %cx, (%rdi)3215; SSE2-NEXT:    addq $2, %rdi3216; SSE2-NEXT:    testb $64, %al3217; SSE2-NEXT:    je LBB11_143218; SSE2-NEXT:  LBB11_13: ## %cond.store163219; SSE2-NEXT:    pextrw $6, %xmm0, %ecx3220; SSE2-NEXT:    movw %cx, (%rdi)3221; SSE2-NEXT:    addq $2, %rdi3222; SSE2-NEXT:    testb $-128, %al3223; SSE2-NEXT:    je LBB11_163224; SSE2-NEXT:  LBB11_15: ## %cond.store193225; SSE2-NEXT:    pextrw $7, %xmm0, %eax3226; SSE2-NEXT:    movw %ax, (%rdi)3227; SSE2-NEXT:    retq3228;3229; SSE42-LABEL: compressstore_v8i16_v8i16:3230; SSE42:       ## %bb.0:3231; SSE42-NEXT:    pxor %xmm2, %xmm23232; SSE42-NEXT:    pcmpeqw %xmm1, %xmm23233; SSE42-NEXT:    packsswb %xmm2, %xmm23234; SSE42-NEXT:    pmovmskb %xmm2, %eax3235; SSE42-NEXT:    testb $1, %al3236; SSE42-NEXT:    jne LBB11_13237; SSE42-NEXT:  ## %bb.2: ## %else3238; SSE42-NEXT:    testb $2, %al3239; SSE42-NEXT:    jne LBB11_33240; SSE42-NEXT:  LBB11_4: ## %else23241; SSE42-NEXT:    testb $4, %al3242; SSE42-NEXT:    jne LBB11_53243; SSE42-NEXT:  LBB11_6: ## %else53244; SSE42-NEXT:    testb $8, %al3245; SSE42-NEXT:    jne LBB11_73246; SSE42-NEXT:  LBB11_8: ## %else83247; SSE42-NEXT:    testb $16, %al3248; SSE42-NEXT:    jne LBB11_93249; SSE42-NEXT:  LBB11_10: ## %else113250; SSE42-NEXT:    testb $32, %al3251; SSE42-NEXT:    jne LBB11_113252; SSE42-NEXT:  LBB11_12: ## %else143253; SSE42-NEXT:    testb $64, %al3254; SSE42-NEXT:    jne LBB11_133255; SSE42-NEXT:  LBB11_14: ## %else173256; SSE42-NEXT:    testb $-128, %al3257; SSE42-NEXT:    jne LBB11_153258; SSE42-NEXT:  LBB11_16: ## %else203259; SSE42-NEXT:    retq3260; SSE42-NEXT:  LBB11_1: ## %cond.store3261; SSE42-NEXT:    pextrw $0, %xmm0, (%rdi)3262; SSE42-NEXT:    addq $2, %rdi3263; SSE42-NEXT:    testb $2, %al3264; SSE42-NEXT:    je LBB11_43265; SSE42-NEXT:  LBB11_3: ## %cond.store13266; SSE42-NEXT:    pextrw $1, %xmm0, (%rdi)3267; SSE42-NEXT:    addq $2, %rdi3268; SSE42-NEXT:    testb $4, %al3269; SSE42-NEXT:    je LBB11_63270; SSE42-NEXT:  LBB11_5: ## %cond.store43271; SSE42-NEXT:    pextrw $2, %xmm0, (%rdi)3272; SSE42-NEXT:    addq $2, %rdi3273; SSE42-NEXT:    testb $8, %al3274; SSE42-NEXT:    je LBB11_83275; SSE42-NEXT:  LBB11_7: ## %cond.store73276; SSE42-NEXT:    pextrw $3, %xmm0, (%rdi)3277; SSE42-NEXT:    addq $2, %rdi3278; SSE42-NEXT:    testb $16, %al3279; SSE42-NEXT:    je LBB11_103280; SSE42-NEXT:  LBB11_9: ## %cond.store103281; SSE42-NEXT:    pextrw $4, %xmm0, (%rdi)3282; SSE42-NEXT:    addq $2, %rdi3283; SSE42-NEXT:    testb $32, %al3284; SSE42-NEXT:    je LBB11_123285; SSE42-NEXT:  LBB11_11: ## %cond.store133286; SSE42-NEXT:    pextrw $5, %xmm0, (%rdi)3287; SSE42-NEXT:    addq $2, %rdi3288; SSE42-NEXT:    testb $64, %al3289; SSE42-NEXT:    je LBB11_143290; SSE42-NEXT:  LBB11_13: ## %cond.store163291; SSE42-NEXT:    pextrw $6, %xmm0, (%rdi)3292; SSE42-NEXT:    addq $2, %rdi3293; SSE42-NEXT:    testb $-128, %al3294; SSE42-NEXT:    je LBB11_163295; SSE42-NEXT:  LBB11_15: ## %cond.store193296; SSE42-NEXT:    pextrw $7, %xmm0, (%rdi)3297; SSE42-NEXT:    retq3298;3299; AVX1OR2-LABEL: compressstore_v8i16_v8i16:3300; AVX1OR2:       ## %bb.0:3301; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm23302; AVX1OR2-NEXT:    vpcmpeqw %xmm2, %xmm1, %xmm13303; AVX1OR2-NEXT:    vpacksswb %xmm1, %xmm1, %xmm13304; AVX1OR2-NEXT:    vpmovmskb %xmm1, %eax3305; AVX1OR2-NEXT:    testb $1, %al3306; AVX1OR2-NEXT:    jne LBB11_13307; AVX1OR2-NEXT:  ## %bb.2: ## %else3308; AVX1OR2-NEXT:    testb $2, %al3309; AVX1OR2-NEXT:    jne LBB11_33310; AVX1OR2-NEXT:  LBB11_4: ## %else23311; AVX1OR2-NEXT:    testb $4, %al3312; AVX1OR2-NEXT:    jne LBB11_53313; AVX1OR2-NEXT:  LBB11_6: ## %else53314; AVX1OR2-NEXT:    testb $8, %al3315; AVX1OR2-NEXT:    jne LBB11_73316; AVX1OR2-NEXT:  LBB11_8: ## %else83317; AVX1OR2-NEXT:    testb $16, %al3318; AVX1OR2-NEXT:    jne LBB11_93319; AVX1OR2-NEXT:  LBB11_10: ## %else113320; AVX1OR2-NEXT:    testb $32, %al3321; AVX1OR2-NEXT:    jne LBB11_113322; AVX1OR2-NEXT:  LBB11_12: ## %else143323; AVX1OR2-NEXT:    testb $64, %al3324; AVX1OR2-NEXT:    jne LBB11_133325; AVX1OR2-NEXT:  LBB11_14: ## %else173326; AVX1OR2-NEXT:    testb $-128, %al3327; AVX1OR2-NEXT:    jne LBB11_153328; AVX1OR2-NEXT:  LBB11_16: ## %else203329; AVX1OR2-NEXT:    retq3330; AVX1OR2-NEXT:  LBB11_1: ## %cond.store3331; AVX1OR2-NEXT:    vpextrw $0, %xmm0, (%rdi)3332; AVX1OR2-NEXT:    addq $2, %rdi3333; AVX1OR2-NEXT:    testb $2, %al3334; AVX1OR2-NEXT:    je LBB11_43335; AVX1OR2-NEXT:  LBB11_3: ## %cond.store13336; AVX1OR2-NEXT:    vpextrw $1, %xmm0, (%rdi)3337; AVX1OR2-NEXT:    addq $2, %rdi3338; AVX1OR2-NEXT:    testb $4, %al3339; AVX1OR2-NEXT:    je LBB11_63340; AVX1OR2-NEXT:  LBB11_5: ## %cond.store43341; AVX1OR2-NEXT:    vpextrw $2, %xmm0, (%rdi)3342; AVX1OR2-NEXT:    addq $2, %rdi3343; AVX1OR2-NEXT:    testb $8, %al3344; AVX1OR2-NEXT:    je LBB11_83345; AVX1OR2-NEXT:  LBB11_7: ## %cond.store73346; AVX1OR2-NEXT:    vpextrw $3, %xmm0, (%rdi)3347; AVX1OR2-NEXT:    addq $2, %rdi3348; AVX1OR2-NEXT:    testb $16, %al3349; AVX1OR2-NEXT:    je LBB11_103350; AVX1OR2-NEXT:  LBB11_9: ## %cond.store103351; AVX1OR2-NEXT:    vpextrw $4, %xmm0, (%rdi)3352; AVX1OR2-NEXT:    addq $2, %rdi3353; AVX1OR2-NEXT:    testb $32, %al3354; AVX1OR2-NEXT:    je LBB11_123355; AVX1OR2-NEXT:  LBB11_11: ## %cond.store133356; AVX1OR2-NEXT:    vpextrw $5, %xmm0, (%rdi)3357; AVX1OR2-NEXT:    addq $2, %rdi3358; AVX1OR2-NEXT:    testb $64, %al3359; AVX1OR2-NEXT:    je LBB11_143360; AVX1OR2-NEXT:  LBB11_13: ## %cond.store163361; AVX1OR2-NEXT:    vpextrw $6, %xmm0, (%rdi)3362; AVX1OR2-NEXT:    addq $2, %rdi3363; AVX1OR2-NEXT:    testb $-128, %al3364; AVX1OR2-NEXT:    je LBB11_163365; AVX1OR2-NEXT:  LBB11_15: ## %cond.store193366; AVX1OR2-NEXT:    vpextrw $7, %xmm0, (%rdi)3367; AVX1OR2-NEXT:    retq3368;3369; AVX512F-LABEL: compressstore_v8i16_v8i16:3370; AVX512F:       ## %bb.0:3371; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm23372; AVX512F-NEXT:    vpcmpeqw %xmm2, %xmm1, %xmm13373; AVX512F-NEXT:    vpmovsxwq %xmm1, %zmm13374; AVX512F-NEXT:    vptestmq %zmm1, %zmm1, %k03375; AVX512F-NEXT:    kmovw %k0, %eax3376; AVX512F-NEXT:    testb $1, %al3377; AVX512F-NEXT:    jne LBB11_13378; AVX512F-NEXT:  ## %bb.2: ## %else3379; AVX512F-NEXT:    testb $2, %al3380; AVX512F-NEXT:    jne LBB11_33381; AVX512F-NEXT:  LBB11_4: ## %else23382; AVX512F-NEXT:    testb $4, %al3383; AVX512F-NEXT:    jne LBB11_53384; AVX512F-NEXT:  LBB11_6: ## %else53385; AVX512F-NEXT:    testb $8, %al3386; AVX512F-NEXT:    jne LBB11_73387; AVX512F-NEXT:  LBB11_8: ## %else83388; AVX512F-NEXT:    testb $16, %al3389; AVX512F-NEXT:    jne LBB11_93390; AVX512F-NEXT:  LBB11_10: ## %else113391; AVX512F-NEXT:    testb $32, %al3392; AVX512F-NEXT:    jne LBB11_113393; AVX512F-NEXT:  LBB11_12: ## %else143394; AVX512F-NEXT:    testb $64, %al3395; AVX512F-NEXT:    jne LBB11_133396; AVX512F-NEXT:  LBB11_14: ## %else173397; AVX512F-NEXT:    testb $-128, %al3398; AVX512F-NEXT:    jne LBB11_153399; AVX512F-NEXT:  LBB11_16: ## %else203400; AVX512F-NEXT:    vzeroupper3401; AVX512F-NEXT:    retq3402; AVX512F-NEXT:  LBB11_1: ## %cond.store3403; AVX512F-NEXT:    vpextrw $0, %xmm0, (%rdi)3404; AVX512F-NEXT:    addq $2, %rdi3405; AVX512F-NEXT:    testb $2, %al3406; AVX512F-NEXT:    je LBB11_43407; AVX512F-NEXT:  LBB11_3: ## %cond.store13408; AVX512F-NEXT:    vpextrw $1, %xmm0, (%rdi)3409; AVX512F-NEXT:    addq $2, %rdi3410; AVX512F-NEXT:    testb $4, %al3411; AVX512F-NEXT:    je LBB11_63412; AVX512F-NEXT:  LBB11_5: ## %cond.store43413; AVX512F-NEXT:    vpextrw $2, %xmm0, (%rdi)3414; AVX512F-NEXT:    addq $2, %rdi3415; AVX512F-NEXT:    testb $8, %al3416; AVX512F-NEXT:    je LBB11_83417; AVX512F-NEXT:  LBB11_7: ## %cond.store73418; AVX512F-NEXT:    vpextrw $3, %xmm0, (%rdi)3419; AVX512F-NEXT:    addq $2, %rdi3420; AVX512F-NEXT:    testb $16, %al3421; AVX512F-NEXT:    je LBB11_103422; AVX512F-NEXT:  LBB11_9: ## %cond.store103423; AVX512F-NEXT:    vpextrw $4, %xmm0, (%rdi)3424; AVX512F-NEXT:    addq $2, %rdi3425; AVX512F-NEXT:    testb $32, %al3426; AVX512F-NEXT:    je LBB11_123427; AVX512F-NEXT:  LBB11_11: ## %cond.store133428; AVX512F-NEXT:    vpextrw $5, %xmm0, (%rdi)3429; AVX512F-NEXT:    addq $2, %rdi3430; AVX512F-NEXT:    testb $64, %al3431; AVX512F-NEXT:    je LBB11_143432; AVX512F-NEXT:  LBB11_13: ## %cond.store163433; AVX512F-NEXT:    vpextrw $6, %xmm0, (%rdi)3434; AVX512F-NEXT:    addq $2, %rdi3435; AVX512F-NEXT:    testb $-128, %al3436; AVX512F-NEXT:    je LBB11_163437; AVX512F-NEXT:  LBB11_15: ## %cond.store193438; AVX512F-NEXT:    vpextrw $7, %xmm0, (%rdi)3439; AVX512F-NEXT:    vzeroupper3440; AVX512F-NEXT:    retq3441;3442; AVX512VLDQ-LABEL: compressstore_v8i16_v8i16:3443; AVX512VLDQ:       ## %bb.0:3444; AVX512VLDQ-NEXT:    vpxor %xmm2, %xmm2, %xmm23445; AVX512VLDQ-NEXT:    vpcmpeqw %xmm2, %xmm1, %xmm13446; AVX512VLDQ-NEXT:    vpmovsxwd %xmm1, %ymm13447; AVX512VLDQ-NEXT:    vpmovd2m %ymm1, %k03448; AVX512VLDQ-NEXT:    kmovw %k0, %eax3449; AVX512VLDQ-NEXT:    testb $1, %al3450; AVX512VLDQ-NEXT:    jne LBB11_13451; AVX512VLDQ-NEXT:  ## %bb.2: ## %else3452; AVX512VLDQ-NEXT:    testb $2, %al3453; AVX512VLDQ-NEXT:    jne LBB11_33454; AVX512VLDQ-NEXT:  LBB11_4: ## %else23455; AVX512VLDQ-NEXT:    testb $4, %al3456; AVX512VLDQ-NEXT:    jne LBB11_53457; AVX512VLDQ-NEXT:  LBB11_6: ## %else53458; AVX512VLDQ-NEXT:    testb $8, %al3459; AVX512VLDQ-NEXT:    jne LBB11_73460; AVX512VLDQ-NEXT:  LBB11_8: ## %else83461; AVX512VLDQ-NEXT:    testb $16, %al3462; AVX512VLDQ-NEXT:    jne LBB11_93463; AVX512VLDQ-NEXT:  LBB11_10: ## %else113464; AVX512VLDQ-NEXT:    testb $32, %al3465; AVX512VLDQ-NEXT:    jne LBB11_113466; AVX512VLDQ-NEXT:  LBB11_12: ## %else143467; AVX512VLDQ-NEXT:    testb $64, %al3468; AVX512VLDQ-NEXT:    jne LBB11_133469; AVX512VLDQ-NEXT:  LBB11_14: ## %else173470; AVX512VLDQ-NEXT:    testb $-128, %al3471; AVX512VLDQ-NEXT:    jne LBB11_153472; AVX512VLDQ-NEXT:  LBB11_16: ## %else203473; AVX512VLDQ-NEXT:    vzeroupper3474; AVX512VLDQ-NEXT:    retq3475; AVX512VLDQ-NEXT:  LBB11_1: ## %cond.store3476; AVX512VLDQ-NEXT:    vpextrw $0, %xmm0, (%rdi)3477; AVX512VLDQ-NEXT:    addq $2, %rdi3478; AVX512VLDQ-NEXT:    testb $2, %al3479; AVX512VLDQ-NEXT:    je LBB11_43480; AVX512VLDQ-NEXT:  LBB11_3: ## %cond.store13481; AVX512VLDQ-NEXT:    vpextrw $1, %xmm0, (%rdi)3482; AVX512VLDQ-NEXT:    addq $2, %rdi3483; AVX512VLDQ-NEXT:    testb $4, %al3484; AVX512VLDQ-NEXT:    je LBB11_63485; AVX512VLDQ-NEXT:  LBB11_5: ## %cond.store43486; AVX512VLDQ-NEXT:    vpextrw $2, %xmm0, (%rdi)3487; AVX512VLDQ-NEXT:    addq $2, %rdi3488; AVX512VLDQ-NEXT:    testb $8, %al3489; AVX512VLDQ-NEXT:    je LBB11_83490; AVX512VLDQ-NEXT:  LBB11_7: ## %cond.store73491; AVX512VLDQ-NEXT:    vpextrw $3, %xmm0, (%rdi)3492; AVX512VLDQ-NEXT:    addq $2, %rdi3493; AVX512VLDQ-NEXT:    testb $16, %al3494; AVX512VLDQ-NEXT:    je LBB11_103495; AVX512VLDQ-NEXT:  LBB11_9: ## %cond.store103496; AVX512VLDQ-NEXT:    vpextrw $4, %xmm0, (%rdi)3497; AVX512VLDQ-NEXT:    addq $2, %rdi3498; AVX512VLDQ-NEXT:    testb $32, %al3499; AVX512VLDQ-NEXT:    je LBB11_123500; AVX512VLDQ-NEXT:  LBB11_11: ## %cond.store133501; AVX512VLDQ-NEXT:    vpextrw $5, %xmm0, (%rdi)3502; AVX512VLDQ-NEXT:    addq $2, %rdi3503; AVX512VLDQ-NEXT:    testb $64, %al3504; AVX512VLDQ-NEXT:    je LBB11_143505; AVX512VLDQ-NEXT:  LBB11_13: ## %cond.store163506; AVX512VLDQ-NEXT:    vpextrw $6, %xmm0, (%rdi)3507; AVX512VLDQ-NEXT:    addq $2, %rdi3508; AVX512VLDQ-NEXT:    testb $-128, %al3509; AVX512VLDQ-NEXT:    je LBB11_163510; AVX512VLDQ-NEXT:  LBB11_15: ## %cond.store193511; AVX512VLDQ-NEXT:    vpextrw $7, %xmm0, (%rdi)3512; AVX512VLDQ-NEXT:    vzeroupper3513; AVX512VLDQ-NEXT:    retq3514;3515; AVX512VLBW-LABEL: compressstore_v8i16_v8i16:3516; AVX512VLBW:       ## %bb.0:3517; AVX512VLBW-NEXT:    vptestnmw %xmm1, %xmm1, %k03518; AVX512VLBW-NEXT:    kmovd %k0, %eax3519; AVX512VLBW-NEXT:    testb $1, %al3520; AVX512VLBW-NEXT:    jne LBB11_13521; AVX512VLBW-NEXT:  ## %bb.2: ## %else3522; AVX512VLBW-NEXT:    testb $2, %al3523; AVX512VLBW-NEXT:    jne LBB11_33524; AVX512VLBW-NEXT:  LBB11_4: ## %else23525; AVX512VLBW-NEXT:    testb $4, %al3526; AVX512VLBW-NEXT:    jne LBB11_53527; AVX512VLBW-NEXT:  LBB11_6: ## %else53528; AVX512VLBW-NEXT:    testb $8, %al3529; AVX512VLBW-NEXT:    jne LBB11_73530; AVX512VLBW-NEXT:  LBB11_8: ## %else83531; AVX512VLBW-NEXT:    testb $16, %al3532; AVX512VLBW-NEXT:    jne LBB11_93533; AVX512VLBW-NEXT:  LBB11_10: ## %else113534; AVX512VLBW-NEXT:    testb $32, %al3535; AVX512VLBW-NEXT:    jne LBB11_113536; AVX512VLBW-NEXT:  LBB11_12: ## %else143537; AVX512VLBW-NEXT:    testb $64, %al3538; AVX512VLBW-NEXT:    jne LBB11_133539; AVX512VLBW-NEXT:  LBB11_14: ## %else173540; AVX512VLBW-NEXT:    testb $-128, %al3541; AVX512VLBW-NEXT:    jne LBB11_153542; AVX512VLBW-NEXT:  LBB11_16: ## %else203543; AVX512VLBW-NEXT:    retq3544; AVX512VLBW-NEXT:  LBB11_1: ## %cond.store3545; AVX512VLBW-NEXT:    vpextrw $0, %xmm0, (%rdi)3546; AVX512VLBW-NEXT:    addq $2, %rdi3547; AVX512VLBW-NEXT:    testb $2, %al3548; AVX512VLBW-NEXT:    je LBB11_43549; AVX512VLBW-NEXT:  LBB11_3: ## %cond.store13550; AVX512VLBW-NEXT:    vpextrw $1, %xmm0, (%rdi)3551; AVX512VLBW-NEXT:    addq $2, %rdi3552; AVX512VLBW-NEXT:    testb $4, %al3553; AVX512VLBW-NEXT:    je LBB11_63554; AVX512VLBW-NEXT:  LBB11_5: ## %cond.store43555; AVX512VLBW-NEXT:    vpextrw $2, %xmm0, (%rdi)3556; AVX512VLBW-NEXT:    addq $2, %rdi3557; AVX512VLBW-NEXT:    testb $8, %al3558; AVX512VLBW-NEXT:    je LBB11_83559; AVX512VLBW-NEXT:  LBB11_7: ## %cond.store73560; AVX512VLBW-NEXT:    vpextrw $3, %xmm0, (%rdi)3561; AVX512VLBW-NEXT:    addq $2, %rdi3562; AVX512VLBW-NEXT:    testb $16, %al3563; AVX512VLBW-NEXT:    je LBB11_103564; AVX512VLBW-NEXT:  LBB11_9: ## %cond.store103565; AVX512VLBW-NEXT:    vpextrw $4, %xmm0, (%rdi)3566; AVX512VLBW-NEXT:    addq $2, %rdi3567; AVX512VLBW-NEXT:    testb $32, %al3568; AVX512VLBW-NEXT:    je LBB11_123569; AVX512VLBW-NEXT:  LBB11_11: ## %cond.store133570; AVX512VLBW-NEXT:    vpextrw $5, %xmm0, (%rdi)3571; AVX512VLBW-NEXT:    addq $2, %rdi3572; AVX512VLBW-NEXT:    testb $64, %al3573; AVX512VLBW-NEXT:    je LBB11_143574; AVX512VLBW-NEXT:  LBB11_13: ## %cond.store163575; AVX512VLBW-NEXT:    vpextrw $6, %xmm0, (%rdi)3576; AVX512VLBW-NEXT:    addq $2, %rdi3577; AVX512VLBW-NEXT:    testb $-128, %al3578; AVX512VLBW-NEXT:    je LBB11_163579; AVX512VLBW-NEXT:  LBB11_15: ## %cond.store193580; AVX512VLBW-NEXT:    vpextrw $7, %xmm0, (%rdi)3581; AVX512VLBW-NEXT:    retq3582  %mask = icmp eq <8 x i16> %trigger, zeroinitializer3583  call void @llvm.masked.compressstore.v8i16(<8 x i16> %V, ptr %base, <8 x i1> %mask)3584  ret void3585}3586 3587;3588; vXi83589;3590 3591define void @compressstore_v16i8_v16i8(ptr %base, <16 x i8> %V, <16 x i8> %trigger) {3592; SSE2-LABEL: compressstore_v16i8_v16i8:3593; SSE2:       ## %bb.0:3594; SSE2-NEXT:    pxor %xmm2, %xmm23595; SSE2-NEXT:    pcmpeqb %xmm1, %xmm23596; SSE2-NEXT:    pmovmskb %xmm2, %eax3597; SSE2-NEXT:    testb $1, %al3598; SSE2-NEXT:    movd %xmm0, %ecx3599; SSE2-NEXT:    jne LBB12_13600; SSE2-NEXT:  ## %bb.2: ## %else3601; SSE2-NEXT:    testb $2, %al3602; SSE2-NEXT:    jne LBB12_33603; SSE2-NEXT:  LBB12_4: ## %else23604; SSE2-NEXT:    testb $4, %al3605; SSE2-NEXT:    jne LBB12_53606; SSE2-NEXT:  LBB12_6: ## %else53607; SSE2-NEXT:    testb $8, %al3608; SSE2-NEXT:    je LBB12_83609; SSE2-NEXT:  LBB12_7: ## %cond.store73610; SSE2-NEXT:    shrl $24, %ecx3611; SSE2-NEXT:    movb %cl, (%rdi)3612; SSE2-NEXT:    incq %rdi3613; SSE2-NEXT:  LBB12_8: ## %else83614; SSE2-NEXT:    testb $16, %al3615; SSE2-NEXT:    pextrw $2, %xmm0, %ecx3616; SSE2-NEXT:    je LBB12_103617; SSE2-NEXT:  ## %bb.9: ## %cond.store103618; SSE2-NEXT:    movb %cl, (%rdi)3619; SSE2-NEXT:    incq %rdi3620; SSE2-NEXT:  LBB12_10: ## %else113621; SSE2-NEXT:    testb $32, %al3622; SSE2-NEXT:    je LBB12_123623; SSE2-NEXT:  ## %bb.11: ## %cond.store133624; SSE2-NEXT:    movb %ch, (%rdi)3625; SSE2-NEXT:    incq %rdi3626; SSE2-NEXT:  LBB12_12: ## %else143627; SSE2-NEXT:    testb $64, %al3628; SSE2-NEXT:    pextrw $3, %xmm0, %ecx3629; SSE2-NEXT:    je LBB12_143630; SSE2-NEXT:  ## %bb.13: ## %cond.store163631; SSE2-NEXT:    movb %cl, (%rdi)3632; SSE2-NEXT:    incq %rdi3633; SSE2-NEXT:  LBB12_14: ## %else173634; SSE2-NEXT:    testb %al, %al3635; SSE2-NEXT:    jns LBB12_163636; SSE2-NEXT:  ## %bb.15: ## %cond.store193637; SSE2-NEXT:    movb %ch, (%rdi)3638; SSE2-NEXT:    incq %rdi3639; SSE2-NEXT:  LBB12_16: ## %else203640; SSE2-NEXT:    testl $256, %eax ## imm = 0x1003641; SSE2-NEXT:    pextrw $4, %xmm0, %ecx3642; SSE2-NEXT:    je LBB12_183643; SSE2-NEXT:  ## %bb.17: ## %cond.store223644; SSE2-NEXT:    movb %cl, (%rdi)3645; SSE2-NEXT:    incq %rdi3646; SSE2-NEXT:  LBB12_18: ## %else233647; SSE2-NEXT:    testl $512, %eax ## imm = 0x2003648; SSE2-NEXT:    je LBB12_203649; SSE2-NEXT:  ## %bb.19: ## %cond.store253650; SSE2-NEXT:    movb %ch, (%rdi)3651; SSE2-NEXT:    incq %rdi3652; SSE2-NEXT:  LBB12_20: ## %else263653; SSE2-NEXT:    testl $1024, %eax ## imm = 0x4003654; SSE2-NEXT:    pextrw $5, %xmm0, %ecx3655; SSE2-NEXT:    je LBB12_223656; SSE2-NEXT:  ## %bb.21: ## %cond.store283657; SSE2-NEXT:    movb %cl, (%rdi)3658; SSE2-NEXT:    incq %rdi3659; SSE2-NEXT:  LBB12_22: ## %else293660; SSE2-NEXT:    testl $2048, %eax ## imm = 0x8003661; SSE2-NEXT:    je LBB12_243662; SSE2-NEXT:  ## %bb.23: ## %cond.store313663; SSE2-NEXT:    movb %ch, (%rdi)3664; SSE2-NEXT:    incq %rdi3665; SSE2-NEXT:  LBB12_24: ## %else323666; SSE2-NEXT:    testl $4096, %eax ## imm = 0x10003667; SSE2-NEXT:    pextrw $6, %xmm0, %ecx3668; SSE2-NEXT:    je LBB12_263669; SSE2-NEXT:  ## %bb.25: ## %cond.store343670; SSE2-NEXT:    movb %cl, (%rdi)3671; SSE2-NEXT:    incq %rdi3672; SSE2-NEXT:  LBB12_26: ## %else353673; SSE2-NEXT:    testl $8192, %eax ## imm = 0x20003674; SSE2-NEXT:    je LBB12_283675; SSE2-NEXT:  ## %bb.27: ## %cond.store373676; SSE2-NEXT:    movb %ch, (%rdi)3677; SSE2-NEXT:    incq %rdi3678; SSE2-NEXT:  LBB12_28: ## %else383679; SSE2-NEXT:    testl $16384, %eax ## imm = 0x40003680; SSE2-NEXT:    pextrw $7, %xmm0, %ecx3681; SSE2-NEXT:    jne LBB12_293682; SSE2-NEXT:  ## %bb.30: ## %else413683; SSE2-NEXT:    testl $32768, %eax ## imm = 0x80003684; SSE2-NEXT:    jne LBB12_313685; SSE2-NEXT:  LBB12_32: ## %else443686; SSE2-NEXT:    retq3687; SSE2-NEXT:  LBB12_1: ## %cond.store3688; SSE2-NEXT:    movb %cl, (%rdi)3689; SSE2-NEXT:    incq %rdi3690; SSE2-NEXT:    testb $2, %al3691; SSE2-NEXT:    je LBB12_43692; SSE2-NEXT:  LBB12_3: ## %cond.store13693; SSE2-NEXT:    movb %ch, (%rdi)3694; SSE2-NEXT:    incq %rdi3695; SSE2-NEXT:    testb $4, %al3696; SSE2-NEXT:    je LBB12_63697; SSE2-NEXT:  LBB12_5: ## %cond.store43698; SSE2-NEXT:    movl %ecx, %edx3699; SSE2-NEXT:    shrl $16, %edx3700; SSE2-NEXT:    movb %dl, (%rdi)3701; SSE2-NEXT:    incq %rdi3702; SSE2-NEXT:    testb $8, %al3703; SSE2-NEXT:    jne LBB12_73704; SSE2-NEXT:    jmp LBB12_83705; SSE2-NEXT:  LBB12_29: ## %cond.store403706; SSE2-NEXT:    movb %cl, (%rdi)3707; SSE2-NEXT:    incq %rdi3708; SSE2-NEXT:    testl $32768, %eax ## imm = 0x80003709; SSE2-NEXT:    je LBB12_323710; SSE2-NEXT:  LBB12_31: ## %cond.store433711; SSE2-NEXT:    movb %ch, (%rdi)3712; SSE2-NEXT:    retq3713;3714; SSE42-LABEL: compressstore_v16i8_v16i8:3715; SSE42:       ## %bb.0:3716; SSE42-NEXT:    pxor %xmm2, %xmm23717; SSE42-NEXT:    pcmpeqb %xmm1, %xmm23718; SSE42-NEXT:    pmovmskb %xmm2, %eax3719; SSE42-NEXT:    testb $1, %al3720; SSE42-NEXT:    jne LBB12_13721; SSE42-NEXT:  ## %bb.2: ## %else3722; SSE42-NEXT:    testb $2, %al3723; SSE42-NEXT:    jne LBB12_33724; SSE42-NEXT:  LBB12_4: ## %else23725; SSE42-NEXT:    testb $4, %al3726; SSE42-NEXT:    jne LBB12_53727; SSE42-NEXT:  LBB12_6: ## %else53728; SSE42-NEXT:    testb $8, %al3729; SSE42-NEXT:    jne LBB12_73730; SSE42-NEXT:  LBB12_8: ## %else83731; SSE42-NEXT:    testb $16, %al3732; SSE42-NEXT:    jne LBB12_93733; SSE42-NEXT:  LBB12_10: ## %else113734; SSE42-NEXT:    testb $32, %al3735; SSE42-NEXT:    jne LBB12_113736; SSE42-NEXT:  LBB12_12: ## %else143737; SSE42-NEXT:    testb $64, %al3738; SSE42-NEXT:    jne LBB12_133739; SSE42-NEXT:  LBB12_14: ## %else173740; SSE42-NEXT:    testb %al, %al3741; SSE42-NEXT:    js LBB12_153742; SSE42-NEXT:  LBB12_16: ## %else203743; SSE42-NEXT:    testl $256, %eax ## imm = 0x1003744; SSE42-NEXT:    jne LBB12_173745; SSE42-NEXT:  LBB12_18: ## %else233746; SSE42-NEXT:    testl $512, %eax ## imm = 0x2003747; SSE42-NEXT:    jne LBB12_193748; SSE42-NEXT:  LBB12_20: ## %else263749; SSE42-NEXT:    testl $1024, %eax ## imm = 0x4003750; SSE42-NEXT:    jne LBB12_213751; SSE42-NEXT:  LBB12_22: ## %else293752; SSE42-NEXT:    testl $2048, %eax ## imm = 0x8003753; SSE42-NEXT:    jne LBB12_233754; SSE42-NEXT:  LBB12_24: ## %else323755; SSE42-NEXT:    testl $4096, %eax ## imm = 0x10003756; SSE42-NEXT:    jne LBB12_253757; SSE42-NEXT:  LBB12_26: ## %else353758; SSE42-NEXT:    testl $8192, %eax ## imm = 0x20003759; SSE42-NEXT:    jne LBB12_273760; SSE42-NEXT:  LBB12_28: ## %else383761; SSE42-NEXT:    testl $16384, %eax ## imm = 0x40003762; SSE42-NEXT:    jne LBB12_293763; SSE42-NEXT:  LBB12_30: ## %else413764; SSE42-NEXT:    testl $32768, %eax ## imm = 0x80003765; SSE42-NEXT:    jne LBB12_313766; SSE42-NEXT:  LBB12_32: ## %else443767; SSE42-NEXT:    retq3768; SSE42-NEXT:  LBB12_1: ## %cond.store3769; SSE42-NEXT:    pextrb $0, %xmm0, (%rdi)3770; SSE42-NEXT:    incq %rdi3771; SSE42-NEXT:    testb $2, %al3772; SSE42-NEXT:    je LBB12_43773; SSE42-NEXT:  LBB12_3: ## %cond.store13774; SSE42-NEXT:    pextrb $1, %xmm0, (%rdi)3775; SSE42-NEXT:    incq %rdi3776; SSE42-NEXT:    testb $4, %al3777; SSE42-NEXT:    je LBB12_63778; SSE42-NEXT:  LBB12_5: ## %cond.store43779; SSE42-NEXT:    pextrb $2, %xmm0, (%rdi)3780; SSE42-NEXT:    incq %rdi3781; SSE42-NEXT:    testb $8, %al3782; SSE42-NEXT:    je LBB12_83783; SSE42-NEXT:  LBB12_7: ## %cond.store73784; SSE42-NEXT:    pextrb $3, %xmm0, (%rdi)3785; SSE42-NEXT:    incq %rdi3786; SSE42-NEXT:    testb $16, %al3787; SSE42-NEXT:    je LBB12_103788; SSE42-NEXT:  LBB12_9: ## %cond.store103789; SSE42-NEXT:    pextrb $4, %xmm0, (%rdi)3790; SSE42-NEXT:    incq %rdi3791; SSE42-NEXT:    testb $32, %al3792; SSE42-NEXT:    je LBB12_123793; SSE42-NEXT:  LBB12_11: ## %cond.store133794; SSE42-NEXT:    pextrb $5, %xmm0, (%rdi)3795; SSE42-NEXT:    incq %rdi3796; SSE42-NEXT:    testb $64, %al3797; SSE42-NEXT:    je LBB12_143798; SSE42-NEXT:  LBB12_13: ## %cond.store163799; SSE42-NEXT:    pextrb $6, %xmm0, (%rdi)3800; SSE42-NEXT:    incq %rdi3801; SSE42-NEXT:    testb %al, %al3802; SSE42-NEXT:    jns LBB12_163803; SSE42-NEXT:  LBB12_15: ## %cond.store193804; SSE42-NEXT:    pextrb $7, %xmm0, (%rdi)3805; SSE42-NEXT:    incq %rdi3806; SSE42-NEXT:    testl $256, %eax ## imm = 0x1003807; SSE42-NEXT:    je LBB12_183808; SSE42-NEXT:  LBB12_17: ## %cond.store223809; SSE42-NEXT:    pextrb $8, %xmm0, (%rdi)3810; SSE42-NEXT:    incq %rdi3811; SSE42-NEXT:    testl $512, %eax ## imm = 0x2003812; SSE42-NEXT:    je LBB12_203813; SSE42-NEXT:  LBB12_19: ## %cond.store253814; SSE42-NEXT:    pextrb $9, %xmm0, (%rdi)3815; SSE42-NEXT:    incq %rdi3816; SSE42-NEXT:    testl $1024, %eax ## imm = 0x4003817; SSE42-NEXT:    je LBB12_223818; SSE42-NEXT:  LBB12_21: ## %cond.store283819; SSE42-NEXT:    pextrb $10, %xmm0, (%rdi)3820; SSE42-NEXT:    incq %rdi3821; SSE42-NEXT:    testl $2048, %eax ## imm = 0x8003822; SSE42-NEXT:    je LBB12_243823; SSE42-NEXT:  LBB12_23: ## %cond.store313824; SSE42-NEXT:    pextrb $11, %xmm0, (%rdi)3825; SSE42-NEXT:    incq %rdi3826; SSE42-NEXT:    testl $4096, %eax ## imm = 0x10003827; SSE42-NEXT:    je LBB12_263828; SSE42-NEXT:  LBB12_25: ## %cond.store343829; SSE42-NEXT:    pextrb $12, %xmm0, (%rdi)3830; SSE42-NEXT:    incq %rdi3831; SSE42-NEXT:    testl $8192, %eax ## imm = 0x20003832; SSE42-NEXT:    je LBB12_283833; SSE42-NEXT:  LBB12_27: ## %cond.store373834; SSE42-NEXT:    pextrb $13, %xmm0, (%rdi)3835; SSE42-NEXT:    incq %rdi3836; SSE42-NEXT:    testl $16384, %eax ## imm = 0x40003837; SSE42-NEXT:    je LBB12_303838; SSE42-NEXT:  LBB12_29: ## %cond.store403839; SSE42-NEXT:    pextrb $14, %xmm0, (%rdi)3840; SSE42-NEXT:    incq %rdi3841; SSE42-NEXT:    testl $32768, %eax ## imm = 0x80003842; SSE42-NEXT:    je LBB12_323843; SSE42-NEXT:  LBB12_31: ## %cond.store433844; SSE42-NEXT:    pextrb $15, %xmm0, (%rdi)3845; SSE42-NEXT:    retq3846;3847; AVX1OR2-LABEL: compressstore_v16i8_v16i8:3848; AVX1OR2:       ## %bb.0:3849; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm23850; AVX1OR2-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm13851; AVX1OR2-NEXT:    vpmovmskb %xmm1, %eax3852; AVX1OR2-NEXT:    testb $1, %al3853; AVX1OR2-NEXT:    jne LBB12_13854; AVX1OR2-NEXT:  ## %bb.2: ## %else3855; AVX1OR2-NEXT:    testb $2, %al3856; AVX1OR2-NEXT:    jne LBB12_33857; AVX1OR2-NEXT:  LBB12_4: ## %else23858; AVX1OR2-NEXT:    testb $4, %al3859; AVX1OR2-NEXT:    jne LBB12_53860; AVX1OR2-NEXT:  LBB12_6: ## %else53861; AVX1OR2-NEXT:    testb $8, %al3862; AVX1OR2-NEXT:    jne LBB12_73863; AVX1OR2-NEXT:  LBB12_8: ## %else83864; AVX1OR2-NEXT:    testb $16, %al3865; AVX1OR2-NEXT:    jne LBB12_93866; AVX1OR2-NEXT:  LBB12_10: ## %else113867; AVX1OR2-NEXT:    testb $32, %al3868; AVX1OR2-NEXT:    jne LBB12_113869; AVX1OR2-NEXT:  LBB12_12: ## %else143870; AVX1OR2-NEXT:    testb $64, %al3871; AVX1OR2-NEXT:    jne LBB12_133872; AVX1OR2-NEXT:  LBB12_14: ## %else173873; AVX1OR2-NEXT:    testb %al, %al3874; AVX1OR2-NEXT:    js LBB12_153875; AVX1OR2-NEXT:  LBB12_16: ## %else203876; AVX1OR2-NEXT:    testl $256, %eax ## imm = 0x1003877; AVX1OR2-NEXT:    jne LBB12_173878; AVX1OR2-NEXT:  LBB12_18: ## %else233879; AVX1OR2-NEXT:    testl $512, %eax ## imm = 0x2003880; AVX1OR2-NEXT:    jne LBB12_193881; AVX1OR2-NEXT:  LBB12_20: ## %else263882; AVX1OR2-NEXT:    testl $1024, %eax ## imm = 0x4003883; AVX1OR2-NEXT:    jne LBB12_213884; AVX1OR2-NEXT:  LBB12_22: ## %else293885; AVX1OR2-NEXT:    testl $2048, %eax ## imm = 0x8003886; AVX1OR2-NEXT:    jne LBB12_233887; AVX1OR2-NEXT:  LBB12_24: ## %else323888; AVX1OR2-NEXT:    testl $4096, %eax ## imm = 0x10003889; AVX1OR2-NEXT:    jne LBB12_253890; AVX1OR2-NEXT:  LBB12_26: ## %else353891; AVX1OR2-NEXT:    testl $8192, %eax ## imm = 0x20003892; AVX1OR2-NEXT:    jne LBB12_273893; AVX1OR2-NEXT:  LBB12_28: ## %else383894; AVX1OR2-NEXT:    testl $16384, %eax ## imm = 0x40003895; AVX1OR2-NEXT:    jne LBB12_293896; AVX1OR2-NEXT:  LBB12_30: ## %else413897; AVX1OR2-NEXT:    testl $32768, %eax ## imm = 0x80003898; AVX1OR2-NEXT:    jne LBB12_313899; AVX1OR2-NEXT:  LBB12_32: ## %else443900; AVX1OR2-NEXT:    retq3901; AVX1OR2-NEXT:  LBB12_1: ## %cond.store3902; AVX1OR2-NEXT:    vpextrb $0, %xmm0, (%rdi)3903; AVX1OR2-NEXT:    incq %rdi3904; AVX1OR2-NEXT:    testb $2, %al3905; AVX1OR2-NEXT:    je LBB12_43906; AVX1OR2-NEXT:  LBB12_3: ## %cond.store13907; AVX1OR2-NEXT:    vpextrb $1, %xmm0, (%rdi)3908; AVX1OR2-NEXT:    incq %rdi3909; AVX1OR2-NEXT:    testb $4, %al3910; AVX1OR2-NEXT:    je LBB12_63911; AVX1OR2-NEXT:  LBB12_5: ## %cond.store43912; AVX1OR2-NEXT:    vpextrb $2, %xmm0, (%rdi)3913; AVX1OR2-NEXT:    incq %rdi3914; AVX1OR2-NEXT:    testb $8, %al3915; AVX1OR2-NEXT:    je LBB12_83916; AVX1OR2-NEXT:  LBB12_7: ## %cond.store73917; AVX1OR2-NEXT:    vpextrb $3, %xmm0, (%rdi)3918; AVX1OR2-NEXT:    incq %rdi3919; AVX1OR2-NEXT:    testb $16, %al3920; AVX1OR2-NEXT:    je LBB12_103921; AVX1OR2-NEXT:  LBB12_9: ## %cond.store103922; AVX1OR2-NEXT:    vpextrb $4, %xmm0, (%rdi)3923; AVX1OR2-NEXT:    incq %rdi3924; AVX1OR2-NEXT:    testb $32, %al3925; AVX1OR2-NEXT:    je LBB12_123926; AVX1OR2-NEXT:  LBB12_11: ## %cond.store133927; AVX1OR2-NEXT:    vpextrb $5, %xmm0, (%rdi)3928; AVX1OR2-NEXT:    incq %rdi3929; AVX1OR2-NEXT:    testb $64, %al3930; AVX1OR2-NEXT:    je LBB12_143931; AVX1OR2-NEXT:  LBB12_13: ## %cond.store163932; AVX1OR2-NEXT:    vpextrb $6, %xmm0, (%rdi)3933; AVX1OR2-NEXT:    incq %rdi3934; AVX1OR2-NEXT:    testb %al, %al3935; AVX1OR2-NEXT:    jns LBB12_163936; AVX1OR2-NEXT:  LBB12_15: ## %cond.store193937; AVX1OR2-NEXT:    vpextrb $7, %xmm0, (%rdi)3938; AVX1OR2-NEXT:    incq %rdi3939; AVX1OR2-NEXT:    testl $256, %eax ## imm = 0x1003940; AVX1OR2-NEXT:    je LBB12_183941; AVX1OR2-NEXT:  LBB12_17: ## %cond.store223942; AVX1OR2-NEXT:    vpextrb $8, %xmm0, (%rdi)3943; AVX1OR2-NEXT:    incq %rdi3944; AVX1OR2-NEXT:    testl $512, %eax ## imm = 0x2003945; AVX1OR2-NEXT:    je LBB12_203946; AVX1OR2-NEXT:  LBB12_19: ## %cond.store253947; AVX1OR2-NEXT:    vpextrb $9, %xmm0, (%rdi)3948; AVX1OR2-NEXT:    incq %rdi3949; AVX1OR2-NEXT:    testl $1024, %eax ## imm = 0x4003950; AVX1OR2-NEXT:    je LBB12_223951; AVX1OR2-NEXT:  LBB12_21: ## %cond.store283952; AVX1OR2-NEXT:    vpextrb $10, %xmm0, (%rdi)3953; AVX1OR2-NEXT:    incq %rdi3954; AVX1OR2-NEXT:    testl $2048, %eax ## imm = 0x8003955; AVX1OR2-NEXT:    je LBB12_243956; AVX1OR2-NEXT:  LBB12_23: ## %cond.store313957; AVX1OR2-NEXT:    vpextrb $11, %xmm0, (%rdi)3958; AVX1OR2-NEXT:    incq %rdi3959; AVX1OR2-NEXT:    testl $4096, %eax ## imm = 0x10003960; AVX1OR2-NEXT:    je LBB12_263961; AVX1OR2-NEXT:  LBB12_25: ## %cond.store343962; AVX1OR2-NEXT:    vpextrb $12, %xmm0, (%rdi)3963; AVX1OR2-NEXT:    incq %rdi3964; AVX1OR2-NEXT:    testl $8192, %eax ## imm = 0x20003965; AVX1OR2-NEXT:    je LBB12_283966; AVX1OR2-NEXT:  LBB12_27: ## %cond.store373967; AVX1OR2-NEXT:    vpextrb $13, %xmm0, (%rdi)3968; AVX1OR2-NEXT:    incq %rdi3969; AVX1OR2-NEXT:    testl $16384, %eax ## imm = 0x40003970; AVX1OR2-NEXT:    je LBB12_303971; AVX1OR2-NEXT:  LBB12_29: ## %cond.store403972; AVX1OR2-NEXT:    vpextrb $14, %xmm0, (%rdi)3973; AVX1OR2-NEXT:    incq %rdi3974; AVX1OR2-NEXT:    testl $32768, %eax ## imm = 0x80003975; AVX1OR2-NEXT:    je LBB12_323976; AVX1OR2-NEXT:  LBB12_31: ## %cond.store433977; AVX1OR2-NEXT:    vpextrb $15, %xmm0, (%rdi)3978; AVX1OR2-NEXT:    retq3979;3980; AVX512F-LABEL: compressstore_v16i8_v16i8:3981; AVX512F:       ## %bb.0:3982; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm23983; AVX512F-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm13984; AVX512F-NEXT:    vpmovmskb %xmm1, %eax3985; AVX512F-NEXT:    testb $1, %al3986; AVX512F-NEXT:    jne LBB12_13987; AVX512F-NEXT:  ## %bb.2: ## %else3988; AVX512F-NEXT:    testb $2, %al3989; AVX512F-NEXT:    jne LBB12_33990; AVX512F-NEXT:  LBB12_4: ## %else23991; AVX512F-NEXT:    testb $4, %al3992; AVX512F-NEXT:    jne LBB12_53993; AVX512F-NEXT:  LBB12_6: ## %else53994; AVX512F-NEXT:    testb $8, %al3995; AVX512F-NEXT:    jne LBB12_73996; AVX512F-NEXT:  LBB12_8: ## %else83997; AVX512F-NEXT:    testb $16, %al3998; AVX512F-NEXT:    jne LBB12_93999; AVX512F-NEXT:  LBB12_10: ## %else114000; AVX512F-NEXT:    testb $32, %al4001; AVX512F-NEXT:    jne LBB12_114002; AVX512F-NEXT:  LBB12_12: ## %else144003; AVX512F-NEXT:    testb $64, %al4004; AVX512F-NEXT:    jne LBB12_134005; AVX512F-NEXT:  LBB12_14: ## %else174006; AVX512F-NEXT:    testb %al, %al4007; AVX512F-NEXT:    js LBB12_154008; AVX512F-NEXT:  LBB12_16: ## %else204009; AVX512F-NEXT:    testl $256, %eax ## imm = 0x1004010; AVX512F-NEXT:    jne LBB12_174011; AVX512F-NEXT:  LBB12_18: ## %else234012; AVX512F-NEXT:    testl $512, %eax ## imm = 0x2004013; AVX512F-NEXT:    jne LBB12_194014; AVX512F-NEXT:  LBB12_20: ## %else264015; AVX512F-NEXT:    testl $1024, %eax ## imm = 0x4004016; AVX512F-NEXT:    jne LBB12_214017; AVX512F-NEXT:  LBB12_22: ## %else294018; AVX512F-NEXT:    testl $2048, %eax ## imm = 0x8004019; AVX512F-NEXT:    jne LBB12_234020; AVX512F-NEXT:  LBB12_24: ## %else324021; AVX512F-NEXT:    testl $4096, %eax ## imm = 0x10004022; AVX512F-NEXT:    jne LBB12_254023; AVX512F-NEXT:  LBB12_26: ## %else354024; AVX512F-NEXT:    testl $8192, %eax ## imm = 0x20004025; AVX512F-NEXT:    jne LBB12_274026; AVX512F-NEXT:  LBB12_28: ## %else384027; AVX512F-NEXT:    testl $16384, %eax ## imm = 0x40004028; AVX512F-NEXT:    jne LBB12_294029; AVX512F-NEXT:  LBB12_30: ## %else414030; AVX512F-NEXT:    testl $32768, %eax ## imm = 0x80004031; AVX512F-NEXT:    jne LBB12_314032; AVX512F-NEXT:  LBB12_32: ## %else444033; AVX512F-NEXT:    retq4034; AVX512F-NEXT:  LBB12_1: ## %cond.store4035; AVX512F-NEXT:    vpextrb $0, %xmm0, (%rdi)4036; AVX512F-NEXT:    incq %rdi4037; AVX512F-NEXT:    testb $2, %al4038; AVX512F-NEXT:    je LBB12_44039; AVX512F-NEXT:  LBB12_3: ## %cond.store14040; AVX512F-NEXT:    vpextrb $1, %xmm0, (%rdi)4041; AVX512F-NEXT:    incq %rdi4042; AVX512F-NEXT:    testb $4, %al4043; AVX512F-NEXT:    je LBB12_64044; AVX512F-NEXT:  LBB12_5: ## %cond.store44045; AVX512F-NEXT:    vpextrb $2, %xmm0, (%rdi)4046; AVX512F-NEXT:    incq %rdi4047; AVX512F-NEXT:    testb $8, %al4048; AVX512F-NEXT:    je LBB12_84049; AVX512F-NEXT:  LBB12_7: ## %cond.store74050; AVX512F-NEXT:    vpextrb $3, %xmm0, (%rdi)4051; AVX512F-NEXT:    incq %rdi4052; AVX512F-NEXT:    testb $16, %al4053; AVX512F-NEXT:    je LBB12_104054; AVX512F-NEXT:  LBB12_9: ## %cond.store104055; AVX512F-NEXT:    vpextrb $4, %xmm0, (%rdi)4056; AVX512F-NEXT:    incq %rdi4057; AVX512F-NEXT:    testb $32, %al4058; AVX512F-NEXT:    je LBB12_124059; AVX512F-NEXT:  LBB12_11: ## %cond.store134060; AVX512F-NEXT:    vpextrb $5, %xmm0, (%rdi)4061; AVX512F-NEXT:    incq %rdi4062; AVX512F-NEXT:    testb $64, %al4063; AVX512F-NEXT:    je LBB12_144064; AVX512F-NEXT:  LBB12_13: ## %cond.store164065; AVX512F-NEXT:    vpextrb $6, %xmm0, (%rdi)4066; AVX512F-NEXT:    incq %rdi4067; AVX512F-NEXT:    testb %al, %al4068; AVX512F-NEXT:    jns LBB12_164069; AVX512F-NEXT:  LBB12_15: ## %cond.store194070; AVX512F-NEXT:    vpextrb $7, %xmm0, (%rdi)4071; AVX512F-NEXT:    incq %rdi4072; AVX512F-NEXT:    testl $256, %eax ## imm = 0x1004073; AVX512F-NEXT:    je LBB12_184074; AVX512F-NEXT:  LBB12_17: ## %cond.store224075; AVX512F-NEXT:    vpextrb $8, %xmm0, (%rdi)4076; AVX512F-NEXT:    incq %rdi4077; AVX512F-NEXT:    testl $512, %eax ## imm = 0x2004078; AVX512F-NEXT:    je LBB12_204079; AVX512F-NEXT:  LBB12_19: ## %cond.store254080; AVX512F-NEXT:    vpextrb $9, %xmm0, (%rdi)4081; AVX512F-NEXT:    incq %rdi4082; AVX512F-NEXT:    testl $1024, %eax ## imm = 0x4004083; AVX512F-NEXT:    je LBB12_224084; AVX512F-NEXT:  LBB12_21: ## %cond.store284085; AVX512F-NEXT:    vpextrb $10, %xmm0, (%rdi)4086; AVX512F-NEXT:    incq %rdi4087; AVX512F-NEXT:    testl $2048, %eax ## imm = 0x8004088; AVX512F-NEXT:    je LBB12_244089; AVX512F-NEXT:  LBB12_23: ## %cond.store314090; AVX512F-NEXT:    vpextrb $11, %xmm0, (%rdi)4091; AVX512F-NEXT:    incq %rdi4092; AVX512F-NEXT:    testl $4096, %eax ## imm = 0x10004093; AVX512F-NEXT:    je LBB12_264094; AVX512F-NEXT:  LBB12_25: ## %cond.store344095; AVX512F-NEXT:    vpextrb $12, %xmm0, (%rdi)4096; AVX512F-NEXT:    incq %rdi4097; AVX512F-NEXT:    testl $8192, %eax ## imm = 0x20004098; AVX512F-NEXT:    je LBB12_284099; AVX512F-NEXT:  LBB12_27: ## %cond.store374100; AVX512F-NEXT:    vpextrb $13, %xmm0, (%rdi)4101; AVX512F-NEXT:    incq %rdi4102; AVX512F-NEXT:    testl $16384, %eax ## imm = 0x40004103; AVX512F-NEXT:    je LBB12_304104; AVX512F-NEXT:  LBB12_29: ## %cond.store404105; AVX512F-NEXT:    vpextrb $14, %xmm0, (%rdi)4106; AVX512F-NEXT:    incq %rdi4107; AVX512F-NEXT:    testl $32768, %eax ## imm = 0x80004108; AVX512F-NEXT:    je LBB12_324109; AVX512F-NEXT:  LBB12_31: ## %cond.store434110; AVX512F-NEXT:    vpextrb $15, %xmm0, (%rdi)4111; AVX512F-NEXT:    retq4112;4113; AVX512VLDQ-LABEL: compressstore_v16i8_v16i8:4114; AVX512VLDQ:       ## %bb.0:4115; AVX512VLDQ-NEXT:    vpxor %xmm2, %xmm2, %xmm24116; AVX512VLDQ-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm14117; AVX512VLDQ-NEXT:    vpmovmskb %xmm1, %eax4118; AVX512VLDQ-NEXT:    testb $1, %al4119; AVX512VLDQ-NEXT:    jne LBB12_14120; AVX512VLDQ-NEXT:  ## %bb.2: ## %else4121; AVX512VLDQ-NEXT:    testb $2, %al4122; AVX512VLDQ-NEXT:    jne LBB12_34123; AVX512VLDQ-NEXT:  LBB12_4: ## %else24124; AVX512VLDQ-NEXT:    testb $4, %al4125; AVX512VLDQ-NEXT:    jne LBB12_54126; AVX512VLDQ-NEXT:  LBB12_6: ## %else54127; AVX512VLDQ-NEXT:    testb $8, %al4128; AVX512VLDQ-NEXT:    jne LBB12_74129; AVX512VLDQ-NEXT:  LBB12_8: ## %else84130; AVX512VLDQ-NEXT:    testb $16, %al4131; AVX512VLDQ-NEXT:    jne LBB12_94132; AVX512VLDQ-NEXT:  LBB12_10: ## %else114133; AVX512VLDQ-NEXT:    testb $32, %al4134; AVX512VLDQ-NEXT:    jne LBB12_114135; AVX512VLDQ-NEXT:  LBB12_12: ## %else144136; AVX512VLDQ-NEXT:    testb $64, %al4137; AVX512VLDQ-NEXT:    jne LBB12_134138; AVX512VLDQ-NEXT:  LBB12_14: ## %else174139; AVX512VLDQ-NEXT:    testb %al, %al4140; AVX512VLDQ-NEXT:    js LBB12_154141; AVX512VLDQ-NEXT:  LBB12_16: ## %else204142; AVX512VLDQ-NEXT:    testl $256, %eax ## imm = 0x1004143; AVX512VLDQ-NEXT:    jne LBB12_174144; AVX512VLDQ-NEXT:  LBB12_18: ## %else234145; AVX512VLDQ-NEXT:    testl $512, %eax ## imm = 0x2004146; AVX512VLDQ-NEXT:    jne LBB12_194147; AVX512VLDQ-NEXT:  LBB12_20: ## %else264148; AVX512VLDQ-NEXT:    testl $1024, %eax ## imm = 0x4004149; AVX512VLDQ-NEXT:    jne LBB12_214150; AVX512VLDQ-NEXT:  LBB12_22: ## %else294151; AVX512VLDQ-NEXT:    testl $2048, %eax ## imm = 0x8004152; AVX512VLDQ-NEXT:    jne LBB12_234153; AVX512VLDQ-NEXT:  LBB12_24: ## %else324154; AVX512VLDQ-NEXT:    testl $4096, %eax ## imm = 0x10004155; AVX512VLDQ-NEXT:    jne LBB12_254156; AVX512VLDQ-NEXT:  LBB12_26: ## %else354157; AVX512VLDQ-NEXT:    testl $8192, %eax ## imm = 0x20004158; AVX512VLDQ-NEXT:    jne LBB12_274159; AVX512VLDQ-NEXT:  LBB12_28: ## %else384160; AVX512VLDQ-NEXT:    testl $16384, %eax ## imm = 0x40004161; AVX512VLDQ-NEXT:    jne LBB12_294162; AVX512VLDQ-NEXT:  LBB12_30: ## %else414163; AVX512VLDQ-NEXT:    testl $32768, %eax ## imm = 0x80004164; AVX512VLDQ-NEXT:    jne LBB12_314165; AVX512VLDQ-NEXT:  LBB12_32: ## %else444166; AVX512VLDQ-NEXT:    retq4167; AVX512VLDQ-NEXT:  LBB12_1: ## %cond.store4168; AVX512VLDQ-NEXT:    vpextrb $0, %xmm0, (%rdi)4169; AVX512VLDQ-NEXT:    incq %rdi4170; AVX512VLDQ-NEXT:    testb $2, %al4171; AVX512VLDQ-NEXT:    je LBB12_44172; AVX512VLDQ-NEXT:  LBB12_3: ## %cond.store14173; AVX512VLDQ-NEXT:    vpextrb $1, %xmm0, (%rdi)4174; AVX512VLDQ-NEXT:    incq %rdi4175; AVX512VLDQ-NEXT:    testb $4, %al4176; AVX512VLDQ-NEXT:    je LBB12_64177; AVX512VLDQ-NEXT:  LBB12_5: ## %cond.store44178; AVX512VLDQ-NEXT:    vpextrb $2, %xmm0, (%rdi)4179; AVX512VLDQ-NEXT:    incq %rdi4180; AVX512VLDQ-NEXT:    testb $8, %al4181; AVX512VLDQ-NEXT:    je LBB12_84182; AVX512VLDQ-NEXT:  LBB12_7: ## %cond.store74183; AVX512VLDQ-NEXT:    vpextrb $3, %xmm0, (%rdi)4184; AVX512VLDQ-NEXT:    incq %rdi4185; AVX512VLDQ-NEXT:    testb $16, %al4186; AVX512VLDQ-NEXT:    je LBB12_104187; AVX512VLDQ-NEXT:  LBB12_9: ## %cond.store104188; AVX512VLDQ-NEXT:    vpextrb $4, %xmm0, (%rdi)4189; AVX512VLDQ-NEXT:    incq %rdi4190; AVX512VLDQ-NEXT:    testb $32, %al4191; AVX512VLDQ-NEXT:    je LBB12_124192; AVX512VLDQ-NEXT:  LBB12_11: ## %cond.store134193; AVX512VLDQ-NEXT:    vpextrb $5, %xmm0, (%rdi)4194; AVX512VLDQ-NEXT:    incq %rdi4195; AVX512VLDQ-NEXT:    testb $64, %al4196; AVX512VLDQ-NEXT:    je LBB12_144197; AVX512VLDQ-NEXT:  LBB12_13: ## %cond.store164198; AVX512VLDQ-NEXT:    vpextrb $6, %xmm0, (%rdi)4199; AVX512VLDQ-NEXT:    incq %rdi4200; AVX512VLDQ-NEXT:    testb %al, %al4201; AVX512VLDQ-NEXT:    jns LBB12_164202; AVX512VLDQ-NEXT:  LBB12_15: ## %cond.store194203; AVX512VLDQ-NEXT:    vpextrb $7, %xmm0, (%rdi)4204; AVX512VLDQ-NEXT:    incq %rdi4205; AVX512VLDQ-NEXT:    testl $256, %eax ## imm = 0x1004206; AVX512VLDQ-NEXT:    je LBB12_184207; AVX512VLDQ-NEXT:  LBB12_17: ## %cond.store224208; AVX512VLDQ-NEXT:    vpextrb $8, %xmm0, (%rdi)4209; AVX512VLDQ-NEXT:    incq %rdi4210; AVX512VLDQ-NEXT:    testl $512, %eax ## imm = 0x2004211; AVX512VLDQ-NEXT:    je LBB12_204212; AVX512VLDQ-NEXT:  LBB12_19: ## %cond.store254213; AVX512VLDQ-NEXT:    vpextrb $9, %xmm0, (%rdi)4214; AVX512VLDQ-NEXT:    incq %rdi4215; AVX512VLDQ-NEXT:    testl $1024, %eax ## imm = 0x4004216; AVX512VLDQ-NEXT:    je LBB12_224217; AVX512VLDQ-NEXT:  LBB12_21: ## %cond.store284218; AVX512VLDQ-NEXT:    vpextrb $10, %xmm0, (%rdi)4219; AVX512VLDQ-NEXT:    incq %rdi4220; AVX512VLDQ-NEXT:    testl $2048, %eax ## imm = 0x8004221; AVX512VLDQ-NEXT:    je LBB12_244222; AVX512VLDQ-NEXT:  LBB12_23: ## %cond.store314223; AVX512VLDQ-NEXT:    vpextrb $11, %xmm0, (%rdi)4224; AVX512VLDQ-NEXT:    incq %rdi4225; AVX512VLDQ-NEXT:    testl $4096, %eax ## imm = 0x10004226; AVX512VLDQ-NEXT:    je LBB12_264227; AVX512VLDQ-NEXT:  LBB12_25: ## %cond.store344228; AVX512VLDQ-NEXT:    vpextrb $12, %xmm0, (%rdi)4229; AVX512VLDQ-NEXT:    incq %rdi4230; AVX512VLDQ-NEXT:    testl $8192, %eax ## imm = 0x20004231; AVX512VLDQ-NEXT:    je LBB12_284232; AVX512VLDQ-NEXT:  LBB12_27: ## %cond.store374233; AVX512VLDQ-NEXT:    vpextrb $13, %xmm0, (%rdi)4234; AVX512VLDQ-NEXT:    incq %rdi4235; AVX512VLDQ-NEXT:    testl $16384, %eax ## imm = 0x40004236; AVX512VLDQ-NEXT:    je LBB12_304237; AVX512VLDQ-NEXT:  LBB12_29: ## %cond.store404238; AVX512VLDQ-NEXT:    vpextrb $14, %xmm0, (%rdi)4239; AVX512VLDQ-NEXT:    incq %rdi4240; AVX512VLDQ-NEXT:    testl $32768, %eax ## imm = 0x80004241; AVX512VLDQ-NEXT:    je LBB12_324242; AVX512VLDQ-NEXT:  LBB12_31: ## %cond.store434243; AVX512VLDQ-NEXT:    vpextrb $15, %xmm0, (%rdi)4244; AVX512VLDQ-NEXT:    retq4245;4246; AVX512VLBW-LABEL: compressstore_v16i8_v16i8:4247; AVX512VLBW:       ## %bb.0:4248; AVX512VLBW-NEXT:    vptestnmb %xmm1, %xmm1, %k04249; AVX512VLBW-NEXT:    kmovd %k0, %eax4250; AVX512VLBW-NEXT:    testb $1, %al4251; AVX512VLBW-NEXT:    jne LBB12_14252; AVX512VLBW-NEXT:  ## %bb.2: ## %else4253; AVX512VLBW-NEXT:    testb $2, %al4254; AVX512VLBW-NEXT:    jne LBB12_34255; AVX512VLBW-NEXT:  LBB12_4: ## %else24256; AVX512VLBW-NEXT:    testb $4, %al4257; AVX512VLBW-NEXT:    jne LBB12_54258; AVX512VLBW-NEXT:  LBB12_6: ## %else54259; AVX512VLBW-NEXT:    testb $8, %al4260; AVX512VLBW-NEXT:    jne LBB12_74261; AVX512VLBW-NEXT:  LBB12_8: ## %else84262; AVX512VLBW-NEXT:    testb $16, %al4263; AVX512VLBW-NEXT:    jne LBB12_94264; AVX512VLBW-NEXT:  LBB12_10: ## %else114265; AVX512VLBW-NEXT:    testb $32, %al4266; AVX512VLBW-NEXT:    jne LBB12_114267; AVX512VLBW-NEXT:  LBB12_12: ## %else144268; AVX512VLBW-NEXT:    testb $64, %al4269; AVX512VLBW-NEXT:    jne LBB12_134270; AVX512VLBW-NEXT:  LBB12_14: ## %else174271; AVX512VLBW-NEXT:    testb %al, %al4272; AVX512VLBW-NEXT:    js LBB12_154273; AVX512VLBW-NEXT:  LBB12_16: ## %else204274; AVX512VLBW-NEXT:    testl $256, %eax ## imm = 0x1004275; AVX512VLBW-NEXT:    jne LBB12_174276; AVX512VLBW-NEXT:  LBB12_18: ## %else234277; AVX512VLBW-NEXT:    testl $512, %eax ## imm = 0x2004278; AVX512VLBW-NEXT:    jne LBB12_194279; AVX512VLBW-NEXT:  LBB12_20: ## %else264280; AVX512VLBW-NEXT:    testl $1024, %eax ## imm = 0x4004281; AVX512VLBW-NEXT:    jne LBB12_214282; AVX512VLBW-NEXT:  LBB12_22: ## %else294283; AVX512VLBW-NEXT:    testl $2048, %eax ## imm = 0x8004284; AVX512VLBW-NEXT:    jne LBB12_234285; AVX512VLBW-NEXT:  LBB12_24: ## %else324286; AVX512VLBW-NEXT:    testl $4096, %eax ## imm = 0x10004287; AVX512VLBW-NEXT:    jne LBB12_254288; AVX512VLBW-NEXT:  LBB12_26: ## %else354289; AVX512VLBW-NEXT:    testl $8192, %eax ## imm = 0x20004290; AVX512VLBW-NEXT:    jne LBB12_274291; AVX512VLBW-NEXT:  LBB12_28: ## %else384292; AVX512VLBW-NEXT:    testl $16384, %eax ## imm = 0x40004293; AVX512VLBW-NEXT:    jne LBB12_294294; AVX512VLBW-NEXT:  LBB12_30: ## %else414295; AVX512VLBW-NEXT:    testl $32768, %eax ## imm = 0x80004296; AVX512VLBW-NEXT:    jne LBB12_314297; AVX512VLBW-NEXT:  LBB12_32: ## %else444298; AVX512VLBW-NEXT:    retq4299; AVX512VLBW-NEXT:  LBB12_1: ## %cond.store4300; AVX512VLBW-NEXT:    vpextrb $0, %xmm0, (%rdi)4301; AVX512VLBW-NEXT:    incq %rdi4302; AVX512VLBW-NEXT:    testb $2, %al4303; AVX512VLBW-NEXT:    je LBB12_44304; AVX512VLBW-NEXT:  LBB12_3: ## %cond.store14305; AVX512VLBW-NEXT:    vpextrb $1, %xmm0, (%rdi)4306; AVX512VLBW-NEXT:    incq %rdi4307; AVX512VLBW-NEXT:    testb $4, %al4308; AVX512VLBW-NEXT:    je LBB12_64309; AVX512VLBW-NEXT:  LBB12_5: ## %cond.store44310; AVX512VLBW-NEXT:    vpextrb $2, %xmm0, (%rdi)4311; AVX512VLBW-NEXT:    incq %rdi4312; AVX512VLBW-NEXT:    testb $8, %al4313; AVX512VLBW-NEXT:    je LBB12_84314; AVX512VLBW-NEXT:  LBB12_7: ## %cond.store74315; AVX512VLBW-NEXT:    vpextrb $3, %xmm0, (%rdi)4316; AVX512VLBW-NEXT:    incq %rdi4317; AVX512VLBW-NEXT:    testb $16, %al4318; AVX512VLBW-NEXT:    je LBB12_104319; AVX512VLBW-NEXT:  LBB12_9: ## %cond.store104320; AVX512VLBW-NEXT:    vpextrb $4, %xmm0, (%rdi)4321; AVX512VLBW-NEXT:    incq %rdi4322; AVX512VLBW-NEXT:    testb $32, %al4323; AVX512VLBW-NEXT:    je LBB12_124324; AVX512VLBW-NEXT:  LBB12_11: ## %cond.store134325; AVX512VLBW-NEXT:    vpextrb $5, %xmm0, (%rdi)4326; AVX512VLBW-NEXT:    incq %rdi4327; AVX512VLBW-NEXT:    testb $64, %al4328; AVX512VLBW-NEXT:    je LBB12_144329; AVX512VLBW-NEXT:  LBB12_13: ## %cond.store164330; AVX512VLBW-NEXT:    vpextrb $6, %xmm0, (%rdi)4331; AVX512VLBW-NEXT:    incq %rdi4332; AVX512VLBW-NEXT:    testb %al, %al4333; AVX512VLBW-NEXT:    jns LBB12_164334; AVX512VLBW-NEXT:  LBB12_15: ## %cond.store194335; AVX512VLBW-NEXT:    vpextrb $7, %xmm0, (%rdi)4336; AVX512VLBW-NEXT:    incq %rdi4337; AVX512VLBW-NEXT:    testl $256, %eax ## imm = 0x1004338; AVX512VLBW-NEXT:    je LBB12_184339; AVX512VLBW-NEXT:  LBB12_17: ## %cond.store224340; AVX512VLBW-NEXT:    vpextrb $8, %xmm0, (%rdi)4341; AVX512VLBW-NEXT:    incq %rdi4342; AVX512VLBW-NEXT:    testl $512, %eax ## imm = 0x2004343; AVX512VLBW-NEXT:    je LBB12_204344; AVX512VLBW-NEXT:  LBB12_19: ## %cond.store254345; AVX512VLBW-NEXT:    vpextrb $9, %xmm0, (%rdi)4346; AVX512VLBW-NEXT:    incq %rdi4347; AVX512VLBW-NEXT:    testl $1024, %eax ## imm = 0x4004348; AVX512VLBW-NEXT:    je LBB12_224349; AVX512VLBW-NEXT:  LBB12_21: ## %cond.store284350; AVX512VLBW-NEXT:    vpextrb $10, %xmm0, (%rdi)4351; AVX512VLBW-NEXT:    incq %rdi4352; AVX512VLBW-NEXT:    testl $2048, %eax ## imm = 0x8004353; AVX512VLBW-NEXT:    je LBB12_244354; AVX512VLBW-NEXT:  LBB12_23: ## %cond.store314355; AVX512VLBW-NEXT:    vpextrb $11, %xmm0, (%rdi)4356; AVX512VLBW-NEXT:    incq %rdi4357; AVX512VLBW-NEXT:    testl $4096, %eax ## imm = 0x10004358; AVX512VLBW-NEXT:    je LBB12_264359; AVX512VLBW-NEXT:  LBB12_25: ## %cond.store344360; AVX512VLBW-NEXT:    vpextrb $12, %xmm0, (%rdi)4361; AVX512VLBW-NEXT:    incq %rdi4362; AVX512VLBW-NEXT:    testl $8192, %eax ## imm = 0x20004363; AVX512VLBW-NEXT:    je LBB12_284364; AVX512VLBW-NEXT:  LBB12_27: ## %cond.store374365; AVX512VLBW-NEXT:    vpextrb $13, %xmm0, (%rdi)4366; AVX512VLBW-NEXT:    incq %rdi4367; AVX512VLBW-NEXT:    testl $16384, %eax ## imm = 0x40004368; AVX512VLBW-NEXT:    je LBB12_304369; AVX512VLBW-NEXT:  LBB12_29: ## %cond.store404370; AVX512VLBW-NEXT:    vpextrb $14, %xmm0, (%rdi)4371; AVX512VLBW-NEXT:    incq %rdi4372; AVX512VLBW-NEXT:    testl $32768, %eax ## imm = 0x80004373; AVX512VLBW-NEXT:    je LBB12_324374; AVX512VLBW-NEXT:  LBB12_31: ## %cond.store434375; AVX512VLBW-NEXT:    vpextrb $15, %xmm0, (%rdi)4376; AVX512VLBW-NEXT:    retq4377  %mask = icmp eq <16 x i8> %trigger, zeroinitializer4378  call void @llvm.masked.compressstore.v16i8(<16 x i8> %V, ptr %base, <16 x i1> %mask)4379  ret void4380}4381 4382declare void @llvm.masked.compressstore.v16f64(<16 x double>, ptr, <16 x i1>)4383declare void @llvm.masked.compressstore.v8f64(<8 x double>, ptr, <8 x i1>)4384declare void @llvm.masked.compressstore.v4f64(<4 x double>, ptr, <4 x i1>)4385declare void @llvm.masked.compressstore.v2f64(<2 x double>, ptr, <2 x i1>)4386declare void @llvm.masked.compressstore.v1f64(<1 x double>, ptr, <1 x i1>)4387 4388declare void @llvm.masked.compressstore.v32f32(<32 x float>, ptr, <32 x i1>)4389declare void @llvm.masked.compressstore.v16f32(<16 x float>, ptr, <16 x i1>)4390declare void @llvm.masked.compressstore.v8f32(<8 x float>, ptr, <8 x i1>)4391declare void @llvm.masked.compressstore.v4f32(<4 x float>, ptr, <4 x i1>)4392declare void @llvm.masked.compressstore.v2f32(<2 x float>, ptr, <2 x i1>)4393 4394declare void @llvm.masked.compressstore.v8i64(<8 x i64>, ptr, <8 x i1>)4395declare void @llvm.masked.compressstore.v4i64(<4 x i64>, ptr, <4 x i1>)4396declare void @llvm.masked.compressstore.v2i64(<2 x i64>, ptr, <2 x i1>)4397declare void @llvm.masked.compressstore.v1i64(<1 x i64>, ptr, <1 x i1>)4398 4399declare void @llvm.masked.compressstore.v16i32(<16 x i32>, ptr, <16 x i1>)4400declare void @llvm.masked.compressstore.v8i32(<8 x i32>, ptr, <8 x i1>)4401declare void @llvm.masked.compressstore.v4i32(<4 x i32>, ptr, <4 x i1>)4402declare void @llvm.masked.compressstore.v2i32(<2 x i32>, ptr, <2 x i1>)4403 4404declare void @llvm.masked.compressstore.v32i16(<32 x i16>, ptr, <32 x i1>)4405declare void @llvm.masked.compressstore.v16i16(<16 x i16>, ptr, <16 x i1>)4406declare void @llvm.masked.compressstore.v8i16(<8 x i16>, ptr, <8 x i1>)4407declare void @llvm.masked.compressstore.v4i16(<4 x i16>, ptr, <4 x i1>)4408 4409declare void @llvm.masked.compressstore.v64i8(<64 x i8>, ptr, <64 x i1>)4410declare void @llvm.masked.compressstore.v32i8(<32 x i8>, ptr, <32 x i1>)4411declare void @llvm.masked.compressstore.v16i8(<16 x i8>, ptr, <16 x i1>)4412declare void @llvm.masked.compressstore.v8i8(<8 x i8>, ptr, <8 x i1>)4413