brintos

brintos / llvm-project-archived public Read only

0
0
Text · 28.3 KiB · ae74be2 Raw
679 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl | FileCheck %s --check-prefix=AVX512VL --check-prefix=AVX512VL-X643; RUN: llc < %s -mtriple=i386-unknown-unknown -mattr=+avx512vl | FileCheck %s --check-prefix=AVX512VL --check-prefix=AVX512VL-X864; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=AVX512F --check-prefix=AVX512F-X645; RUN: llc < %s -mtriple=i386-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=AVX512F --check-prefix=AVX512F-X866 7; Function Attrs: norecurse nounwind readnone8define zeroext i8 @TEST_mm_test_epi64_mask(<2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {9; AVX512VL-LABEL: TEST_mm_test_epi64_mask:10; AVX512VL:       # %bb.0: # %entry11; AVX512VL-NEXT:    vptestmq %xmm0, %xmm1, %k012; AVX512VL-NEXT:    kmovw %k0, %eax13; AVX512VL-NEXT:    # kill: def $al killed $al killed $eax14; AVX512VL-NEXT:    ret{{[l|q]}}15;16; AVX512F-LABEL: TEST_mm_test_epi64_mask:17; AVX512F:       # %bb.0: # %entry18; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm119; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm020; AVX512F-NEXT:    vptestmq %zmm0, %zmm1, %k021; AVX512F-NEXT:    kshiftlw $14, %k0, %k022; AVX512F-NEXT:    kshiftrw $14, %k0, %k023; AVX512F-NEXT:    kmovw %k0, %eax24; AVX512F-NEXT:    # kill: def $al killed $al killed $eax25; AVX512F-NEXT:    vzeroupper26; AVX512F-NEXT:    ret{{[l|q]}}27entry:28  %and.i.i = and <2 x i64> %__B, %__A29  %0 = icmp ne <2 x i64> %and.i.i, zeroinitializer30  %1 = shufflevector <2 x i1> %0, <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>31  %2 = bitcast <8 x i1> %1 to i832  ret i8 %233}34 35; Function Attrs: norecurse nounwind readnone36define zeroext i8 @TEST_mm_test_epi32_mask(<2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {37; AVX512VL-LABEL: TEST_mm_test_epi32_mask:38; AVX512VL:       # %bb.0: # %entry39; AVX512VL-NEXT:    vptestmd %xmm0, %xmm1, %k040; AVX512VL-NEXT:    kmovw %k0, %eax41; AVX512VL-NEXT:    # kill: def $al killed $al killed $eax42; AVX512VL-NEXT:    ret{{[l|q]}}43;44; AVX512F-LABEL: TEST_mm_test_epi32_mask:45; AVX512F:       # %bb.0: # %entry46; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm147; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm048; AVX512F-NEXT:    vptestmd %zmm0, %zmm1, %k049; AVX512F-NEXT:    kshiftlw $12, %k0, %k050; AVX512F-NEXT:    kshiftrw $12, %k0, %k051; AVX512F-NEXT:    kmovw %k0, %eax52; AVX512F-NEXT:    # kill: def $al killed $al killed $eax53; AVX512F-NEXT:    vzeroupper54; AVX512F-NEXT:    ret{{[l|q]}}55entry:56  %and.i.i = and <2 x i64> %__B, %__A57  %0 = bitcast <2 x i64> %and.i.i to <4 x i32>58  %1 = icmp ne <4 x i32> %0, zeroinitializer59  %2 = shufflevector <4 x i1> %1, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>60  %3 = bitcast <8 x i1> %2 to i861  ret i8 %362}63 64; Function Attrs: norecurse nounwind readnone65define zeroext i8 @TEST_mm256_test_epi64_mask(<4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {66; AVX512VL-LABEL: TEST_mm256_test_epi64_mask:67; AVX512VL:       # %bb.0: # %entry68; AVX512VL-NEXT:    vptestmq %ymm0, %ymm1, %k069; AVX512VL-NEXT:    kmovw %k0, %eax70; AVX512VL-NEXT:    # kill: def $al killed $al killed $eax71; AVX512VL-NEXT:    vzeroupper72; AVX512VL-NEXT:    ret{{[l|q]}}73;74; AVX512F-LABEL: TEST_mm256_test_epi64_mask:75; AVX512F:       # %bb.0: # %entry76; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm177; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm078; AVX512F-NEXT:    vptestmq %zmm0, %zmm1, %k079; AVX512F-NEXT:    kshiftlw $12, %k0, %k080; AVX512F-NEXT:    kshiftrw $12, %k0, %k081; AVX512F-NEXT:    kmovw %k0, %eax82; AVX512F-NEXT:    # kill: def $al killed $al killed $eax83; AVX512F-NEXT:    vzeroupper84; AVX512F-NEXT:    ret{{[l|q]}}85entry:86  %and.i.i = and <4 x i64> %__B, %__A87  %0 = icmp ne <4 x i64> %and.i.i, zeroinitializer88  %1 = shufflevector <4 x i1> %0, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>89  %2 = bitcast <8 x i1> %1 to i890  ret i8 %291}92 93; Function Attrs: norecurse nounwind readnone94define zeroext i8 @TEST_mm256_test_epi32_mask(<4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {95; AVX512VL-LABEL: TEST_mm256_test_epi32_mask:96; AVX512VL:       # %bb.0: # %entry97; AVX512VL-NEXT:    vptestmd %ymm0, %ymm1, %k098; AVX512VL-NEXT:    kmovw %k0, %eax99; AVX512VL-NEXT:    # kill: def $al killed $al killed $eax100; AVX512VL-NEXT:    vzeroupper101; AVX512VL-NEXT:    ret{{[l|q]}}102;103; AVX512F-LABEL: TEST_mm256_test_epi32_mask:104; AVX512F:       # %bb.0: # %entry105; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1106; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0107; AVX512F-NEXT:    vptestmd %zmm0, %zmm1, %k0108; AVX512F-NEXT:    kmovw %k0, %eax109; AVX512F-NEXT:    # kill: def $al killed $al killed $eax110; AVX512F-NEXT:    vzeroupper111; AVX512F-NEXT:    ret{{[l|q]}}112entry:113  %and.i.i = and <4 x i64> %__B, %__A114  %0 = bitcast <4 x i64> %and.i.i to <8 x i32>115  %1 = icmp ne <8 x i32> %0, zeroinitializer116  %2 = bitcast <8 x i1> %1 to i8117  ret i8 %2118}119 120; Function Attrs: norecurse nounwind readnone121define zeroext i8 @TEST_mm_mask_test_epi64_mask(i8 %__U, <2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {122; AVX512VL-X64-LABEL: TEST_mm_mask_test_epi64_mask:123; AVX512VL-X64:       # %bb.0: # %entry124; AVX512VL-X64-NEXT:    kmovw %edi, %k1125; AVX512VL-X64-NEXT:    vptestmq %xmm0, %xmm1, %k0 {%k1}126; AVX512VL-X64-NEXT:    kmovw %k0, %eax127; AVX512VL-X64-NEXT:    # kill: def $al killed $al killed $eax128; AVX512VL-X64-NEXT:    retq129;130; AVX512VL-X86-LABEL: TEST_mm_mask_test_epi64_mask:131; AVX512VL-X86:       # %bb.0: # %entry132; AVX512VL-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax133; AVX512VL-X86-NEXT:    kmovw %eax, %k1134; AVX512VL-X86-NEXT:    vptestmq %xmm0, %xmm1, %k0 {%k1}135; AVX512VL-X86-NEXT:    kmovw %k0, %eax136; AVX512VL-X86-NEXT:    # kill: def $al killed $al killed $eax137; AVX512VL-X86-NEXT:    retl138;139; AVX512F-X64-LABEL: TEST_mm_mask_test_epi64_mask:140; AVX512F-X64:       # %bb.0: # %entry141; AVX512F-X64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1142; AVX512F-X64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0143; AVX512F-X64-NEXT:    kmovw %edi, %k1144; AVX512F-X64-NEXT:    vptestmq %zmm0, %zmm1, %k0 {%k1}145; AVX512F-X64-NEXT:    kshiftlw $14, %k0, %k0146; AVX512F-X64-NEXT:    kshiftrw $14, %k0, %k0147; AVX512F-X64-NEXT:    kmovw %k0, %eax148; AVX512F-X64-NEXT:    # kill: def $al killed $al killed $eax149; AVX512F-X64-NEXT:    vzeroupper150; AVX512F-X64-NEXT:    retq151;152; AVX512F-X86-LABEL: TEST_mm_mask_test_epi64_mask:153; AVX512F-X86:       # %bb.0: # %entry154; AVX512F-X86-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1155; AVX512F-X86-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0156; AVX512F-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax157; AVX512F-X86-NEXT:    kmovw %eax, %k1158; AVX512F-X86-NEXT:    vptestmq %zmm0, %zmm1, %k0 {%k1}159; AVX512F-X86-NEXT:    kshiftlw $14, %k0, %k0160; AVX512F-X86-NEXT:    kshiftrw $14, %k0, %k0161; AVX512F-X86-NEXT:    kmovw %k0, %eax162; AVX512F-X86-NEXT:    # kill: def $al killed $al killed $eax163; AVX512F-X86-NEXT:    vzeroupper164; AVX512F-X86-NEXT:    retl165entry:166  %and.i.i = and <2 x i64> %__B, %__A167  %0 = icmp ne <2 x i64> %and.i.i, zeroinitializer168  %1 = bitcast i8 %__U to <8 x i1>169  %2 = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>170  %3 = and <2 x i1> %0, %2171  %4 = shufflevector <2 x i1> %3, <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>172  %5 = bitcast <8 x i1> %4 to i8173  ret i8 %5174}175 176; Function Attrs: norecurse nounwind readnone177define zeroext i8 @TEST_mm_mask_test_epi32_mask(i8 %__U, <2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {178; AVX512VL-X64-LABEL: TEST_mm_mask_test_epi32_mask:179; AVX512VL-X64:       # %bb.0: # %entry180; AVX512VL-X64-NEXT:    kmovw %edi, %k1181; AVX512VL-X64-NEXT:    vptestmd %xmm0, %xmm1, %k0 {%k1}182; AVX512VL-X64-NEXT:    kmovw %k0, %eax183; AVX512VL-X64-NEXT:    # kill: def $al killed $al killed $eax184; AVX512VL-X64-NEXT:    retq185;186; AVX512VL-X86-LABEL: TEST_mm_mask_test_epi32_mask:187; AVX512VL-X86:       # %bb.0: # %entry188; AVX512VL-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax189; AVX512VL-X86-NEXT:    kmovw %eax, %k1190; AVX512VL-X86-NEXT:    vptestmd %xmm0, %xmm1, %k0 {%k1}191; AVX512VL-X86-NEXT:    kmovw %k0, %eax192; AVX512VL-X86-NEXT:    # kill: def $al killed $al killed $eax193; AVX512VL-X86-NEXT:    retl194;195; AVX512F-X64-LABEL: TEST_mm_mask_test_epi32_mask:196; AVX512F-X64:       # %bb.0: # %entry197; AVX512F-X64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1198; AVX512F-X64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0199; AVX512F-X64-NEXT:    kmovw %edi, %k1200; AVX512F-X64-NEXT:    vptestmd %zmm0, %zmm1, %k0 {%k1}201; AVX512F-X64-NEXT:    kshiftlw $12, %k0, %k0202; AVX512F-X64-NEXT:    kshiftrw $12, %k0, %k0203; AVX512F-X64-NEXT:    kmovw %k0, %eax204; AVX512F-X64-NEXT:    # kill: def $al killed $al killed $eax205; AVX512F-X64-NEXT:    vzeroupper206; AVX512F-X64-NEXT:    retq207;208; AVX512F-X86-LABEL: TEST_mm_mask_test_epi32_mask:209; AVX512F-X86:       # %bb.0: # %entry210; AVX512F-X86-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1211; AVX512F-X86-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0212; AVX512F-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax213; AVX512F-X86-NEXT:    kmovw %eax, %k1214; AVX512F-X86-NEXT:    vptestmd %zmm0, %zmm1, %k0 {%k1}215; AVX512F-X86-NEXT:    kshiftlw $12, %k0, %k0216; AVX512F-X86-NEXT:    kshiftrw $12, %k0, %k0217; AVX512F-X86-NEXT:    kmovw %k0, %eax218; AVX512F-X86-NEXT:    # kill: def $al killed $al killed $eax219; AVX512F-X86-NEXT:    vzeroupper220; AVX512F-X86-NEXT:    retl221entry:222  %and.i.i = and <2 x i64> %__B, %__A223  %0 = bitcast <2 x i64> %and.i.i to <4 x i32>224  %1 = icmp ne <4 x i32> %0, zeroinitializer225  %2 = bitcast i8 %__U to <8 x i1>226  %3 = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>227  %4 = and <4 x i1> %1, %3228  %5 = shufflevector <4 x i1> %4, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>229  %6 = bitcast <8 x i1> %5 to i8230  ret i8 %6231}232 233 234; Function Attrs: norecurse nounwind readnone235define zeroext i8 @TEST_mm256_mask_test_epi64_mask(i8 %__U, <4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {236; AVX512VL-X64-LABEL: TEST_mm256_mask_test_epi64_mask:237; AVX512VL-X64:       # %bb.0: # %entry238; AVX512VL-X64-NEXT:    kmovw %edi, %k1239; AVX512VL-X64-NEXT:    vptestmq %ymm0, %ymm1, %k0 {%k1}240; AVX512VL-X64-NEXT:    kmovw %k0, %eax241; AVX512VL-X64-NEXT:    # kill: def $al killed $al killed $eax242; AVX512VL-X64-NEXT:    vzeroupper243; AVX512VL-X64-NEXT:    retq244;245; AVX512VL-X86-LABEL: TEST_mm256_mask_test_epi64_mask:246; AVX512VL-X86:       # %bb.0: # %entry247; AVX512VL-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax248; AVX512VL-X86-NEXT:    kmovw %eax, %k1249; AVX512VL-X86-NEXT:    vptestmq %ymm0, %ymm1, %k0 {%k1}250; AVX512VL-X86-NEXT:    kmovw %k0, %eax251; AVX512VL-X86-NEXT:    # kill: def $al killed $al killed $eax252; AVX512VL-X86-NEXT:    vzeroupper253; AVX512VL-X86-NEXT:    retl254;255; AVX512F-X64-LABEL: TEST_mm256_mask_test_epi64_mask:256; AVX512F-X64:       # %bb.0: # %entry257; AVX512F-X64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1258; AVX512F-X64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0259; AVX512F-X64-NEXT:    kmovw %edi, %k1260; AVX512F-X64-NEXT:    vptestmq %zmm0, %zmm1, %k0 {%k1}261; AVX512F-X64-NEXT:    kshiftlw $12, %k0, %k0262; AVX512F-X64-NEXT:    kshiftrw $12, %k0, %k0263; AVX512F-X64-NEXT:    kmovw %k0, %eax264; AVX512F-X64-NEXT:    # kill: def $al killed $al killed $eax265; AVX512F-X64-NEXT:    vzeroupper266; AVX512F-X64-NEXT:    retq267;268; AVX512F-X86-LABEL: TEST_mm256_mask_test_epi64_mask:269; AVX512F-X86:       # %bb.0: # %entry270; AVX512F-X86-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1271; AVX512F-X86-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0272; AVX512F-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax273; AVX512F-X86-NEXT:    kmovw %eax, %k1274; AVX512F-X86-NEXT:    vptestmq %zmm0, %zmm1, %k0 {%k1}275; AVX512F-X86-NEXT:    kshiftlw $12, %k0, %k0276; AVX512F-X86-NEXT:    kshiftrw $12, %k0, %k0277; AVX512F-X86-NEXT:    kmovw %k0, %eax278; AVX512F-X86-NEXT:    # kill: def $al killed $al killed $eax279; AVX512F-X86-NEXT:    vzeroupper280; AVX512F-X86-NEXT:    retl281entry:282  %and.i.i = and <4 x i64> %__B, %__A283  %0 = icmp ne <4 x i64> %and.i.i, zeroinitializer284  %1 = bitcast i8 %__U to <8 x i1>285  %2 = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>286  %3 = and <4 x i1> %0, %2287  %4 = shufflevector <4 x i1> %3, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>288  %5 = bitcast <8 x i1> %4 to i8289  ret i8 %5290}291 292; Function Attrs: norecurse nounwind readnone293define zeroext i8 @TEST_mm256_mask_test_epi32_mask(i8 %__U, <4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {294; AVX512VL-X64-LABEL: TEST_mm256_mask_test_epi32_mask:295; AVX512VL-X64:       # %bb.0: # %entry296; AVX512VL-X64-NEXT:    vptestmd %ymm0, %ymm1, %k0297; AVX512VL-X64-NEXT:    kmovw %k0, %eax298; AVX512VL-X64-NEXT:    andb %dil, %al299; AVX512VL-X64-NEXT:    # kill: def $al killed $al killed $eax300; AVX512VL-X64-NEXT:    vzeroupper301; AVX512VL-X64-NEXT:    retq302;303; AVX512VL-X86-LABEL: TEST_mm256_mask_test_epi32_mask:304; AVX512VL-X86:       # %bb.0: # %entry305; AVX512VL-X86-NEXT:    vptestmd %ymm0, %ymm1, %k0306; AVX512VL-X86-NEXT:    kmovw %k0, %eax307; AVX512VL-X86-NEXT:    andb {{[0-9]+}}(%esp), %al308; AVX512VL-X86-NEXT:    # kill: def $al killed $al killed $eax309; AVX512VL-X86-NEXT:    vzeroupper310; AVX512VL-X86-NEXT:    retl311;312; AVX512F-X64-LABEL: TEST_mm256_mask_test_epi32_mask:313; AVX512F-X64:       # %bb.0: # %entry314; AVX512F-X64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1315; AVX512F-X64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0316; AVX512F-X64-NEXT:    vptestmd %zmm0, %zmm1, %k0317; AVX512F-X64-NEXT:    kmovw %k0, %eax318; AVX512F-X64-NEXT:    andb %dil, %al319; AVX512F-X64-NEXT:    # kill: def $al killed $al killed $eax320; AVX512F-X64-NEXT:    vzeroupper321; AVX512F-X64-NEXT:    retq322;323; AVX512F-X86-LABEL: TEST_mm256_mask_test_epi32_mask:324; AVX512F-X86:       # %bb.0: # %entry325; AVX512F-X86-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1326; AVX512F-X86-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0327; AVX512F-X86-NEXT:    vptestmd %zmm0, %zmm1, %k0328; AVX512F-X86-NEXT:    kmovw %k0, %eax329; AVX512F-X86-NEXT:    andb {{[0-9]+}}(%esp), %al330; AVX512F-X86-NEXT:    # kill: def $al killed $al killed $eax331; AVX512F-X86-NEXT:    vzeroupper332; AVX512F-X86-NEXT:    retl333entry:334  %and.i.i = and <4 x i64> %__B, %__A335  %0 = bitcast <4 x i64> %and.i.i to <8 x i32>336  %1 = icmp ne <8 x i32> %0, zeroinitializer337  %2 = bitcast i8 %__U to <8 x i1>338  %3 = and <8 x i1> %1, %2339  %4 = bitcast <8 x i1> %3 to i8340  ret i8 %4341}342 343; Function Attrs: norecurse nounwind readnone344define zeroext i8 @TEST_mm_testn_epi64_mask(<2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {345; AVX512VL-LABEL: TEST_mm_testn_epi64_mask:346; AVX512VL:       # %bb.0: # %entry347; AVX512VL-NEXT:    vptestnmq %xmm0, %xmm1, %k0348; AVX512VL-NEXT:    kmovw %k0, %eax349; AVX512VL-NEXT:    # kill: def $al killed $al killed $eax350; AVX512VL-NEXT:    ret{{[l|q]}}351;352; AVX512F-LABEL: TEST_mm_testn_epi64_mask:353; AVX512F:       # %bb.0: # %entry354; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1355; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0356; AVX512F-NEXT:    vptestnmq %zmm0, %zmm1, %k0357; AVX512F-NEXT:    kshiftlw $14, %k0, %k0358; AVX512F-NEXT:    kshiftrw $14, %k0, %k0359; AVX512F-NEXT:    kmovw %k0, %eax360; AVX512F-NEXT:    # kill: def $al killed $al killed $eax361; AVX512F-NEXT:    vzeroupper362; AVX512F-NEXT:    ret{{[l|q]}}363entry:364  %and.i.i = and <2 x i64> %__B, %__A365  %0 = icmp eq <2 x i64> %and.i.i, zeroinitializer366  %1 = shufflevector <2 x i1> %0, <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>367  %2 = bitcast <8 x i1> %1 to i8368  ret i8 %2369}370 371; Function Attrs: norecurse nounwind readnone372define zeroext i8 @TEST_mm_testn_epi32_mask(<2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {373; AVX512VL-LABEL: TEST_mm_testn_epi32_mask:374; AVX512VL:       # %bb.0: # %entry375; AVX512VL-NEXT:    vptestnmd %xmm0, %xmm1, %k0376; AVX512VL-NEXT:    kmovw %k0, %eax377; AVX512VL-NEXT:    # kill: def $al killed $al killed $eax378; AVX512VL-NEXT:    ret{{[l|q]}}379;380; AVX512F-LABEL: TEST_mm_testn_epi32_mask:381; AVX512F:       # %bb.0: # %entry382; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1383; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0384; AVX512F-NEXT:    vptestnmd %zmm0, %zmm1, %k0385; AVX512F-NEXT:    kshiftlw $12, %k0, %k0386; AVX512F-NEXT:    kshiftrw $12, %k0, %k0387; AVX512F-NEXT:    kmovw %k0, %eax388; AVX512F-NEXT:    # kill: def $al killed $al killed $eax389; AVX512F-NEXT:    vzeroupper390; AVX512F-NEXT:    ret{{[l|q]}}391entry:392  %and.i.i = and <2 x i64> %__B, %__A393  %0 = bitcast <2 x i64> %and.i.i to <4 x i32>394  %1 = icmp eq <4 x i32> %0, zeroinitializer395  %2 = shufflevector <4 x i1> %1, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>396  %3 = bitcast <8 x i1> %2 to i8397  ret i8 %3398}399 400; Function Attrs: norecurse nounwind readnone401define zeroext i8 @TEST_mm256_testn_epi64_mask(<4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {402; AVX512VL-LABEL: TEST_mm256_testn_epi64_mask:403; AVX512VL:       # %bb.0: # %entry404; AVX512VL-NEXT:    vptestnmq %ymm0, %ymm1, %k0405; AVX512VL-NEXT:    kmovw %k0, %eax406; AVX512VL-NEXT:    # kill: def $al killed $al killed $eax407; AVX512VL-NEXT:    vzeroupper408; AVX512VL-NEXT:    ret{{[l|q]}}409;410; AVX512F-LABEL: TEST_mm256_testn_epi64_mask:411; AVX512F:       # %bb.0: # %entry412; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1413; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0414; AVX512F-NEXT:    vptestnmq %zmm0, %zmm1, %k0415; AVX512F-NEXT:    kshiftlw $12, %k0, %k0416; AVX512F-NEXT:    kshiftrw $12, %k0, %k0417; AVX512F-NEXT:    kmovw %k0, %eax418; AVX512F-NEXT:    # kill: def $al killed $al killed $eax419; AVX512F-NEXT:    vzeroupper420; AVX512F-NEXT:    ret{{[l|q]}}421entry:422  %and.i.i = and <4 x i64> %__B, %__A423  %0 = icmp eq <4 x i64> %and.i.i, zeroinitializer424  %1 = shufflevector <4 x i1> %0, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>425  %2 = bitcast <8 x i1> %1 to i8426  ret i8 %2427}428 429; Function Attrs: norecurse nounwind readnone430define zeroext i8 @TEST_mm256_testn_epi32_mask(<4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {431; AVX512VL-LABEL: TEST_mm256_testn_epi32_mask:432; AVX512VL:       # %bb.0: # %entry433; AVX512VL-NEXT:    vptestnmd %ymm0, %ymm1, %k0434; AVX512VL-NEXT:    kmovw %k0, %eax435; AVX512VL-NEXT:    # kill: def $al killed $al killed $eax436; AVX512VL-NEXT:    vzeroupper437; AVX512VL-NEXT:    ret{{[l|q]}}438;439; AVX512F-LABEL: TEST_mm256_testn_epi32_mask:440; AVX512F:       # %bb.0: # %entry441; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1442; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0443; AVX512F-NEXT:    vptestnmd %zmm0, %zmm1, %k0444; AVX512F-NEXT:    kmovw %k0, %eax445; AVX512F-NEXT:    # kill: def $al killed $al killed $eax446; AVX512F-NEXT:    vzeroupper447; AVX512F-NEXT:    ret{{[l|q]}}448entry:449  %and.i.i = and <4 x i64> %__B, %__A450  %0 = bitcast <4 x i64> %and.i.i to <8 x i32>451  %1 = icmp eq <8 x i32> %0, zeroinitializer452  %2 = bitcast <8 x i1> %1 to i8453  ret i8 %2454}455 456; Function Attrs: norecurse nounwind readnone457define zeroext i8 @TEST_mm_mask_testn_epi64_mask(i8 %__U, <2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {458; AVX512VL-X64-LABEL: TEST_mm_mask_testn_epi64_mask:459; AVX512VL-X64:       # %bb.0: # %entry460; AVX512VL-X64-NEXT:    kmovw %edi, %k1461; AVX512VL-X64-NEXT:    vptestnmq %xmm0, %xmm1, %k0 {%k1}462; AVX512VL-X64-NEXT:    kmovw %k0, %eax463; AVX512VL-X64-NEXT:    # kill: def $al killed $al killed $eax464; AVX512VL-X64-NEXT:    retq465;466; AVX512VL-X86-LABEL: TEST_mm_mask_testn_epi64_mask:467; AVX512VL-X86:       # %bb.0: # %entry468; AVX512VL-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax469; AVX512VL-X86-NEXT:    kmovw %eax, %k1470; AVX512VL-X86-NEXT:    vptestnmq %xmm0, %xmm1, %k0 {%k1}471; AVX512VL-X86-NEXT:    kmovw %k0, %eax472; AVX512VL-X86-NEXT:    # kill: def $al killed $al killed $eax473; AVX512VL-X86-NEXT:    retl474;475; AVX512F-X64-LABEL: TEST_mm_mask_testn_epi64_mask:476; AVX512F-X64:       # %bb.0: # %entry477; AVX512F-X64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1478; AVX512F-X64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0479; AVX512F-X64-NEXT:    kmovw %edi, %k1480; AVX512F-X64-NEXT:    vptestnmq %zmm0, %zmm1, %k0 {%k1}481; AVX512F-X64-NEXT:    kshiftlw $14, %k0, %k0482; AVX512F-X64-NEXT:    kshiftrw $14, %k0, %k0483; AVX512F-X64-NEXT:    kmovw %k0, %eax484; AVX512F-X64-NEXT:    # kill: def $al killed $al killed $eax485; AVX512F-X64-NEXT:    vzeroupper486; AVX512F-X64-NEXT:    retq487;488; AVX512F-X86-LABEL: TEST_mm_mask_testn_epi64_mask:489; AVX512F-X86:       # %bb.0: # %entry490; AVX512F-X86-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1491; AVX512F-X86-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0492; AVX512F-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax493; AVX512F-X86-NEXT:    kmovw %eax, %k1494; AVX512F-X86-NEXT:    vptestnmq %zmm0, %zmm1, %k0 {%k1}495; AVX512F-X86-NEXT:    kshiftlw $14, %k0, %k0496; AVX512F-X86-NEXT:    kshiftrw $14, %k0, %k0497; AVX512F-X86-NEXT:    kmovw %k0, %eax498; AVX512F-X86-NEXT:    # kill: def $al killed $al killed $eax499; AVX512F-X86-NEXT:    vzeroupper500; AVX512F-X86-NEXT:    retl501entry:502  %and.i.i = and <2 x i64> %__B, %__A503  %0 = icmp eq <2 x i64> %and.i.i, zeroinitializer504  %1 = bitcast i8 %__U to <8 x i1>505  %2 = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>506  %3 = and <2 x i1> %0, %2507  %4 = shufflevector <2 x i1> %3, <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>508  %5 = bitcast <8 x i1> %4 to i8509  ret i8 %5510}511 512; Function Attrs: norecurse nounwind readnone513define zeroext i8 @TEST_mm_mask_testn_epi32_mask(i8 %__U, <2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {514; AVX512VL-X64-LABEL: TEST_mm_mask_testn_epi32_mask:515; AVX512VL-X64:       # %bb.0: # %entry516; AVX512VL-X64-NEXT:    kmovw %edi, %k1517; AVX512VL-X64-NEXT:    vptestnmd %xmm0, %xmm1, %k0 {%k1}518; AVX512VL-X64-NEXT:    kmovw %k0, %eax519; AVX512VL-X64-NEXT:    # kill: def $al killed $al killed $eax520; AVX512VL-X64-NEXT:    retq521;522; AVX512VL-X86-LABEL: TEST_mm_mask_testn_epi32_mask:523; AVX512VL-X86:       # %bb.0: # %entry524; AVX512VL-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax525; AVX512VL-X86-NEXT:    kmovw %eax, %k1526; AVX512VL-X86-NEXT:    vptestnmd %xmm0, %xmm1, %k0 {%k1}527; AVX512VL-X86-NEXT:    kmovw %k0, %eax528; AVX512VL-X86-NEXT:    # kill: def $al killed $al killed $eax529; AVX512VL-X86-NEXT:    retl530;531; AVX512F-X64-LABEL: TEST_mm_mask_testn_epi32_mask:532; AVX512F-X64:       # %bb.0: # %entry533; AVX512F-X64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1534; AVX512F-X64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0535; AVX512F-X64-NEXT:    kmovw %edi, %k1536; AVX512F-X64-NEXT:    vptestnmd %zmm0, %zmm1, %k0 {%k1}537; AVX512F-X64-NEXT:    kshiftlw $12, %k0, %k0538; AVX512F-X64-NEXT:    kshiftrw $12, %k0, %k0539; AVX512F-X64-NEXT:    kmovw %k0, %eax540; AVX512F-X64-NEXT:    # kill: def $al killed $al killed $eax541; AVX512F-X64-NEXT:    vzeroupper542; AVX512F-X64-NEXT:    retq543;544; AVX512F-X86-LABEL: TEST_mm_mask_testn_epi32_mask:545; AVX512F-X86:       # %bb.0: # %entry546; AVX512F-X86-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1547; AVX512F-X86-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0548; AVX512F-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax549; AVX512F-X86-NEXT:    kmovw %eax, %k1550; AVX512F-X86-NEXT:    vptestnmd %zmm0, %zmm1, %k0 {%k1}551; AVX512F-X86-NEXT:    kshiftlw $12, %k0, %k0552; AVX512F-X86-NEXT:    kshiftrw $12, %k0, %k0553; AVX512F-X86-NEXT:    kmovw %k0, %eax554; AVX512F-X86-NEXT:    # kill: def $al killed $al killed $eax555; AVX512F-X86-NEXT:    vzeroupper556; AVX512F-X86-NEXT:    retl557entry:558  %and.i.i = and <2 x i64> %__B, %__A559  %0 = bitcast <2 x i64> %and.i.i to <4 x i32>560  %1 = icmp eq <4 x i32> %0, zeroinitializer561  %2 = bitcast i8 %__U to <8 x i1>562  %3 = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>563  %4 = and <4 x i1> %1, %3564  %5 = shufflevector <4 x i1> %4, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>565  %6 = bitcast <8 x i1> %5 to i8566  ret i8 %6567}568 569 570; Function Attrs: norecurse nounwind readnone571define zeroext i8 @TEST_mm256_mask_testn_epi64_mask(i8 %__U, <4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {572; AVX512VL-X64-LABEL: TEST_mm256_mask_testn_epi64_mask:573; AVX512VL-X64:       # %bb.0: # %entry574; AVX512VL-X64-NEXT:    kmovw %edi, %k1575; AVX512VL-X64-NEXT:    vptestnmq %ymm0, %ymm1, %k0 {%k1}576; AVX512VL-X64-NEXT:    kmovw %k0, %eax577; AVX512VL-X64-NEXT:    # kill: def $al killed $al killed $eax578; AVX512VL-X64-NEXT:    vzeroupper579; AVX512VL-X64-NEXT:    retq580;581; AVX512VL-X86-LABEL: TEST_mm256_mask_testn_epi64_mask:582; AVX512VL-X86:       # %bb.0: # %entry583; AVX512VL-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax584; AVX512VL-X86-NEXT:    kmovw %eax, %k1585; AVX512VL-X86-NEXT:    vptestnmq %ymm0, %ymm1, %k0 {%k1}586; AVX512VL-X86-NEXT:    kmovw %k0, %eax587; AVX512VL-X86-NEXT:    # kill: def $al killed $al killed $eax588; AVX512VL-X86-NEXT:    vzeroupper589; AVX512VL-X86-NEXT:    retl590;591; AVX512F-X64-LABEL: TEST_mm256_mask_testn_epi64_mask:592; AVX512F-X64:       # %bb.0: # %entry593; AVX512F-X64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1594; AVX512F-X64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0595; AVX512F-X64-NEXT:    kmovw %edi, %k1596; AVX512F-X64-NEXT:    vptestnmq %zmm0, %zmm1, %k0 {%k1}597; AVX512F-X64-NEXT:    kshiftlw $12, %k0, %k0598; AVX512F-X64-NEXT:    kshiftrw $12, %k0, %k0599; AVX512F-X64-NEXT:    kmovw %k0, %eax600; AVX512F-X64-NEXT:    # kill: def $al killed $al killed $eax601; AVX512F-X64-NEXT:    vzeroupper602; AVX512F-X64-NEXT:    retq603;604; AVX512F-X86-LABEL: TEST_mm256_mask_testn_epi64_mask:605; AVX512F-X86:       # %bb.0: # %entry606; AVX512F-X86-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1607; AVX512F-X86-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0608; AVX512F-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax609; AVX512F-X86-NEXT:    kmovw %eax, %k1610; AVX512F-X86-NEXT:    vptestnmq %zmm0, %zmm1, %k0 {%k1}611; AVX512F-X86-NEXT:    kshiftlw $12, %k0, %k0612; AVX512F-X86-NEXT:    kshiftrw $12, %k0, %k0613; AVX512F-X86-NEXT:    kmovw %k0, %eax614; AVX512F-X86-NEXT:    # kill: def $al killed $al killed $eax615; AVX512F-X86-NEXT:    vzeroupper616; AVX512F-X86-NEXT:    retl617entry:618  %and.i.i = and <4 x i64> %__B, %__A619  %0 = icmp eq <4 x i64> %and.i.i, zeroinitializer620  %1 = bitcast i8 %__U to <8 x i1>621  %2 = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>622  %3 = and <4 x i1> %0, %2623  %4 = shufflevector <4 x i1> %3, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>624  %5 = bitcast <8 x i1> %4 to i8625  ret i8 %5626}627 628; Function Attrs: norecurse nounwind readnone629define zeroext i8 @TEST_mm256_mask_testn_epi32_mask(i8 %__U, <4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {630; AVX512VL-X64-LABEL: TEST_mm256_mask_testn_epi32_mask:631; AVX512VL-X64:       # %bb.0: # %entry632; AVX512VL-X64-NEXT:    vptestnmd %ymm0, %ymm1, %k0633; AVX512VL-X64-NEXT:    kmovw %k0, %eax634; AVX512VL-X64-NEXT:    andb %dil, %al635; AVX512VL-X64-NEXT:    # kill: def $al killed $al killed $eax636; AVX512VL-X64-NEXT:    vzeroupper637; AVX512VL-X64-NEXT:    retq638;639; AVX512VL-X86-LABEL: TEST_mm256_mask_testn_epi32_mask:640; AVX512VL-X86:       # %bb.0: # %entry641; AVX512VL-X86-NEXT:    vptestnmd %ymm0, %ymm1, %k0642; AVX512VL-X86-NEXT:    kmovw %k0, %eax643; AVX512VL-X86-NEXT:    andb {{[0-9]+}}(%esp), %al644; AVX512VL-X86-NEXT:    # kill: def $al killed $al killed $eax645; AVX512VL-X86-NEXT:    vzeroupper646; AVX512VL-X86-NEXT:    retl647;648; AVX512F-X64-LABEL: TEST_mm256_mask_testn_epi32_mask:649; AVX512F-X64:       # %bb.0: # %entry650; AVX512F-X64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1651; AVX512F-X64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0652; AVX512F-X64-NEXT:    vptestnmd %zmm0, %zmm1, %k0653; AVX512F-X64-NEXT:    kmovw %k0, %eax654; AVX512F-X64-NEXT:    andb %dil, %al655; AVX512F-X64-NEXT:    # kill: def $al killed $al killed $eax656; AVX512F-X64-NEXT:    vzeroupper657; AVX512F-X64-NEXT:    retq658;659; AVX512F-X86-LABEL: TEST_mm256_mask_testn_epi32_mask:660; AVX512F-X86:       # %bb.0: # %entry661; AVX512F-X86-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1662; AVX512F-X86-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0663; AVX512F-X86-NEXT:    vptestnmd %zmm0, %zmm1, %k0664; AVX512F-X86-NEXT:    kmovw %k0, %eax665; AVX512F-X86-NEXT:    andb {{[0-9]+}}(%esp), %al666; AVX512F-X86-NEXT:    # kill: def $al killed $al killed $eax667; AVX512F-X86-NEXT:    vzeroupper668; AVX512F-X86-NEXT:    retl669entry:670  %and.i.i = and <4 x i64> %__B, %__A671  %0 = bitcast <4 x i64> %and.i.i to <8 x i32>672  %1 = icmp eq <8 x i32> %0, zeroinitializer673  %2 = bitcast i8 %__U to <8 x i1>674  %3 = and <8 x i1> %1, %2675  %4 = bitcast <8 x i1> %3 to i8676  ret i8 %4677}678 679