454 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl | FileCheck %s --check-prefix=AVX512BWVL3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw | FileCheck %s --check-prefix=AVX512BW4 5; Function Attrs: norecurse nounwind readnone6define zeroext i16 @TEST_mm_test_epi8_mask(<2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {7; AVX512BWVL-LABEL: TEST_mm_test_epi8_mask:8; AVX512BWVL: # %bb.0: # %entry9; AVX512BWVL-NEXT: vptestmb %xmm0, %xmm1, %k010; AVX512BWVL-NEXT: kmovd %k0, %eax11; AVX512BWVL-NEXT: # kill: def $ax killed $ax killed $eax12; AVX512BWVL-NEXT: retq13;14; AVX512BW-LABEL: TEST_mm_test_epi8_mask:15; AVX512BW: # %bb.0: # %entry16; AVX512BW-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm117; AVX512BW-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm018; AVX512BW-NEXT: vptestmb %zmm0, %zmm1, %k019; AVX512BW-NEXT: kmovd %k0, %eax20; AVX512BW-NEXT: # kill: def $ax killed $ax killed $eax21; AVX512BW-NEXT: vzeroupper22; AVX512BW-NEXT: retq23entry:24 %and.i.i = and <2 x i64> %__B, %__A25 %0 = bitcast <2 x i64> %and.i.i to <16 x i8>26 %1 = icmp ne <16 x i8> %0, zeroinitializer27 %2 = bitcast <16 x i1> %1 to i1628 ret i16 %229}30 31; Function Attrs: norecurse nounwind readnone32define zeroext i16 @TEST_mm_mask_test_epi8_mask(i16 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {33; AVX512BWVL-LABEL: TEST_mm_mask_test_epi8_mask:34; AVX512BWVL: # %bb.0: # %entry35; AVX512BWVL-NEXT: vptestmb %xmm0, %xmm1, %k036; AVX512BWVL-NEXT: kmovd %k0, %eax37; AVX512BWVL-NEXT: andl %edi, %eax38; AVX512BWVL-NEXT: # kill: def $ax killed $ax killed $eax39; AVX512BWVL-NEXT: retq40;41; AVX512BW-LABEL: TEST_mm_mask_test_epi8_mask:42; AVX512BW: # %bb.0: # %entry43; AVX512BW-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm144; AVX512BW-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm045; AVX512BW-NEXT: vptestmb %zmm0, %zmm1, %k046; AVX512BW-NEXT: kmovd %k0, %eax47; AVX512BW-NEXT: andl %edi, %eax48; AVX512BW-NEXT: # kill: def $ax killed $ax killed $eax49; AVX512BW-NEXT: vzeroupper50; AVX512BW-NEXT: retq51entry:52 %and.i.i = and <2 x i64> %__B, %__A53 %0 = bitcast <2 x i64> %and.i.i to <16 x i8>54 %1 = icmp ne <16 x i8> %0, zeroinitializer55 %2 = bitcast i16 %__U to <16 x i1>56 %3 = and <16 x i1> %1, %257 %4 = bitcast <16 x i1> %3 to i1658 ret i16 %459}60 61; Function Attrs: norecurse nounwind readnone62define zeroext i8 @TEST_mm_test_epi16_mask(<2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {63; AVX512BWVL-LABEL: TEST_mm_test_epi16_mask:64; AVX512BWVL: # %bb.0: # %entry65; AVX512BWVL-NEXT: vptestmw %xmm0, %xmm1, %k066; AVX512BWVL-NEXT: kmovd %k0, %eax67; AVX512BWVL-NEXT: # kill: def $al killed $al killed $eax68; AVX512BWVL-NEXT: retq69;70; AVX512BW-LABEL: TEST_mm_test_epi16_mask:71; AVX512BW: # %bb.0: # %entry72; AVX512BW-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm173; AVX512BW-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm074; AVX512BW-NEXT: vptestmw %zmm0, %zmm1, %k075; AVX512BW-NEXT: kmovd %k0, %eax76; AVX512BW-NEXT: # kill: def $al killed $al killed $eax77; AVX512BW-NEXT: vzeroupper78; AVX512BW-NEXT: retq79entry:80 %and.i.i = and <2 x i64> %__B, %__A81 %0 = bitcast <2 x i64> %and.i.i to <8 x i16>82 %1 = icmp ne <8 x i16> %0, zeroinitializer83 %2 = bitcast <8 x i1> %1 to i884 ret i8 %285}86 87; Function Attrs: norecurse nounwind readnone88define zeroext i8 @TEST_mm_mask_test_epi16_mask(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {89; AVX512BWVL-LABEL: TEST_mm_mask_test_epi16_mask:90; AVX512BWVL: # %bb.0: # %entry91; AVX512BWVL-NEXT: vptestmw %xmm0, %xmm1, %k092; AVX512BWVL-NEXT: kmovd %k0, %eax93; AVX512BWVL-NEXT: andb %dil, %al94; AVX512BWVL-NEXT: # kill: def $al killed $al killed $eax95; AVX512BWVL-NEXT: retq96;97; AVX512BW-LABEL: TEST_mm_mask_test_epi16_mask:98; AVX512BW: # %bb.0: # %entry99; AVX512BW-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1100; AVX512BW-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0101; AVX512BW-NEXT: vptestmw %zmm0, %zmm1, %k0102; AVX512BW-NEXT: kmovd %k0, %eax103; AVX512BW-NEXT: andb %dil, %al104; AVX512BW-NEXT: # kill: def $al killed $al killed $eax105; AVX512BW-NEXT: vzeroupper106; AVX512BW-NEXT: retq107entry:108 %and.i.i = and <2 x i64> %__B, %__A109 %0 = bitcast <2 x i64> %and.i.i to <8 x i16>110 %1 = icmp ne <8 x i16> %0, zeroinitializer111 %2 = bitcast i8 %__U to <8 x i1>112 %3 = and <8 x i1> %1, %2113 %4 = bitcast <8 x i1> %3 to i8114 ret i8 %4115}116 117; Function Attrs: norecurse nounwind readnone118define zeroext i16 @TEST_mm_testn_epi8_mask(<2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {119; AVX512BWVL-LABEL: TEST_mm_testn_epi8_mask:120; AVX512BWVL: # %bb.0: # %entry121; AVX512BWVL-NEXT: vptestnmb %xmm0, %xmm1, %k0122; AVX512BWVL-NEXT: kmovd %k0, %eax123; AVX512BWVL-NEXT: # kill: def $ax killed $ax killed $eax124; AVX512BWVL-NEXT: retq125;126; AVX512BW-LABEL: TEST_mm_testn_epi8_mask:127; AVX512BW: # %bb.0: # %entry128; AVX512BW-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1129; AVX512BW-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0130; AVX512BW-NEXT: vptestnmb %zmm0, %zmm1, %k0131; AVX512BW-NEXT: kmovd %k0, %eax132; AVX512BW-NEXT: # kill: def $ax killed $ax killed $eax133; AVX512BW-NEXT: vzeroupper134; AVX512BW-NEXT: retq135entry:136 %and.i.i = and <2 x i64> %__B, %__A137 %0 = bitcast <2 x i64> %and.i.i to <16 x i8>138 %1 = icmp eq <16 x i8> %0, zeroinitializer139 %2 = bitcast <16 x i1> %1 to i16140 ret i16 %2141}142 143; Function Attrs: norecurse nounwind readnone144define zeroext i16 @TEST_mm_mask_testn_epi8_mask(i16 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {145; AVX512BWVL-LABEL: TEST_mm_mask_testn_epi8_mask:146; AVX512BWVL: # %bb.0: # %entry147; AVX512BWVL-NEXT: vptestnmb %xmm0, %xmm1, %k0148; AVX512BWVL-NEXT: kmovd %k0, %eax149; AVX512BWVL-NEXT: andl %edi, %eax150; AVX512BWVL-NEXT: # kill: def $ax killed $ax killed $eax151; AVX512BWVL-NEXT: retq152;153; AVX512BW-LABEL: TEST_mm_mask_testn_epi8_mask:154; AVX512BW: # %bb.0: # %entry155; AVX512BW-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1156; AVX512BW-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0157; AVX512BW-NEXT: vptestnmb %zmm0, %zmm1, %k0158; AVX512BW-NEXT: kmovd %k0, %eax159; AVX512BW-NEXT: andl %edi, %eax160; AVX512BW-NEXT: # kill: def $ax killed $ax killed $eax161; AVX512BW-NEXT: vzeroupper162; AVX512BW-NEXT: retq163entry:164 %and.i.i = and <2 x i64> %__B, %__A165 %0 = bitcast <2 x i64> %and.i.i to <16 x i8>166 %1 = icmp eq <16 x i8> %0, zeroinitializer167 %2 = bitcast i16 %__U to <16 x i1>168 %3 = and <16 x i1> %1, %2169 %4 = bitcast <16 x i1> %3 to i16170 ret i16 %4171}172 173; Function Attrs: norecurse nounwind readnone174define zeroext i8 @TEST_mm_testn_epi16_mask(<2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {175; AVX512BWVL-LABEL: TEST_mm_testn_epi16_mask:176; AVX512BWVL: # %bb.0: # %entry177; AVX512BWVL-NEXT: vptestnmw %xmm0, %xmm1, %k0178; AVX512BWVL-NEXT: kmovd %k0, %eax179; AVX512BWVL-NEXT: # kill: def $al killed $al killed $eax180; AVX512BWVL-NEXT: retq181;182; AVX512BW-LABEL: TEST_mm_testn_epi16_mask:183; AVX512BW: # %bb.0: # %entry184; AVX512BW-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1185; AVX512BW-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0186; AVX512BW-NEXT: vptestnmw %zmm0, %zmm1, %k0187; AVX512BW-NEXT: kmovd %k0, %eax188; AVX512BW-NEXT: # kill: def $al killed $al killed $eax189; AVX512BW-NEXT: vzeroupper190; AVX512BW-NEXT: retq191entry:192 %and.i.i = and <2 x i64> %__B, %__A193 %0 = bitcast <2 x i64> %and.i.i to <8 x i16>194 %1 = icmp eq <8 x i16> %0, zeroinitializer195 %2 = bitcast <8 x i1> %1 to i8196 ret i8 %2197}198 199; Function Attrs: norecurse nounwind readnone200define zeroext i8 @TEST_mm_mask_testn_epi16_mask(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) local_unnamed_addr #0 {201; AVX512BWVL-LABEL: TEST_mm_mask_testn_epi16_mask:202; AVX512BWVL: # %bb.0: # %entry203; AVX512BWVL-NEXT: vptestnmw %xmm0, %xmm1, %k0204; AVX512BWVL-NEXT: kmovd %k0, %eax205; AVX512BWVL-NEXT: andb %dil, %al206; AVX512BWVL-NEXT: # kill: def $al killed $al killed $eax207; AVX512BWVL-NEXT: retq208;209; AVX512BW-LABEL: TEST_mm_mask_testn_epi16_mask:210; AVX512BW: # %bb.0: # %entry211; AVX512BW-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1212; AVX512BW-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0213; AVX512BW-NEXT: vptestnmw %zmm0, %zmm1, %k0214; AVX512BW-NEXT: kmovd %k0, %eax215; AVX512BW-NEXT: andb %dil, %al216; AVX512BW-NEXT: # kill: def $al killed $al killed $eax217; AVX512BW-NEXT: vzeroupper218; AVX512BW-NEXT: retq219entry:220 %and.i.i = and <2 x i64> %__B, %__A221 %0 = bitcast <2 x i64> %and.i.i to <8 x i16>222 %1 = icmp eq <8 x i16> %0, zeroinitializer223 %2 = bitcast i8 %__U to <8 x i1>224 %3 = and <8 x i1> %1, %2225 %4 = bitcast <8 x i1> %3 to i8226 ret i8 %4227}228 229; Function Attrs: norecurse nounwind readnone230define i32 @TEST_mm256_test_epi8_mask(<4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {231; AVX512BWVL-LABEL: TEST_mm256_test_epi8_mask:232; AVX512BWVL: # %bb.0: # %entry233; AVX512BWVL-NEXT: vptestmb %ymm0, %ymm1, %k0234; AVX512BWVL-NEXT: kmovd %k0, %eax235; AVX512BWVL-NEXT: vzeroupper236; AVX512BWVL-NEXT: retq237;238; AVX512BW-LABEL: TEST_mm256_test_epi8_mask:239; AVX512BW: # %bb.0: # %entry240; AVX512BW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1241; AVX512BW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0242; AVX512BW-NEXT: vptestmb %zmm0, %zmm1, %k0243; AVX512BW-NEXT: kmovd %k0, %eax244; AVX512BW-NEXT: vzeroupper245; AVX512BW-NEXT: retq246entry:247 %and.i.i = and <4 x i64> %__B, %__A248 %0 = bitcast <4 x i64> %and.i.i to <32 x i8>249 %1 = icmp ne <32 x i8> %0, zeroinitializer250 %2 = bitcast <32 x i1> %1 to i32251 ret i32 %2252}253 254; Function Attrs: norecurse nounwind readnone255define i32 @TEST_mm256_mask_test_epi8_mask(i32 %__U, <4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {256; AVX512BWVL-LABEL: TEST_mm256_mask_test_epi8_mask:257; AVX512BWVL: # %bb.0: # %entry258; AVX512BWVL-NEXT: vptestmb %ymm0, %ymm1, %k0259; AVX512BWVL-NEXT: kmovd %k0, %eax260; AVX512BWVL-NEXT: andl %edi, %eax261; AVX512BWVL-NEXT: vzeroupper262; AVX512BWVL-NEXT: retq263;264; AVX512BW-LABEL: TEST_mm256_mask_test_epi8_mask:265; AVX512BW: # %bb.0: # %entry266; AVX512BW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1267; AVX512BW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0268; AVX512BW-NEXT: vptestmb %zmm0, %zmm1, %k0269; AVX512BW-NEXT: kmovd %k0, %eax270; AVX512BW-NEXT: andl %edi, %eax271; AVX512BW-NEXT: vzeroupper272; AVX512BW-NEXT: retq273entry:274 %and.i.i = and <4 x i64> %__B, %__A275 %0 = bitcast <4 x i64> %and.i.i to <32 x i8>276 %1 = icmp ne <32 x i8> %0, zeroinitializer277 %2 = bitcast i32 %__U to <32 x i1>278 %3 = and <32 x i1> %1, %2279 %4 = bitcast <32 x i1> %3 to i32280 ret i32 %4281}282 283; Function Attrs: norecurse nounwind readnone284define zeroext i16 @TEST_mm256_test_epi16_mask(<4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {285; AVX512BWVL-LABEL: TEST_mm256_test_epi16_mask:286; AVX512BWVL: # %bb.0: # %entry287; AVX512BWVL-NEXT: vptestmw %ymm0, %ymm1, %k0288; AVX512BWVL-NEXT: kmovd %k0, %eax289; AVX512BWVL-NEXT: # kill: def $ax killed $ax killed $eax290; AVX512BWVL-NEXT: vzeroupper291; AVX512BWVL-NEXT: retq292;293; AVX512BW-LABEL: TEST_mm256_test_epi16_mask:294; AVX512BW: # %bb.0: # %entry295; AVX512BW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1296; AVX512BW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0297; AVX512BW-NEXT: vptestmw %zmm0, %zmm1, %k0298; AVX512BW-NEXT: kmovd %k0, %eax299; AVX512BW-NEXT: # kill: def $ax killed $ax killed $eax300; AVX512BW-NEXT: vzeroupper301; AVX512BW-NEXT: retq302entry:303 %and.i.i = and <4 x i64> %__B, %__A304 %0 = bitcast <4 x i64> %and.i.i to <16 x i16>305 %1 = icmp ne <16 x i16> %0, zeroinitializer306 %2 = bitcast <16 x i1> %1 to i16307 ret i16 %2308}309 310; Function Attrs: norecurse nounwind readnone311define zeroext i16 @TEST_mm256_mask_test_epi16_mask(i16 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {312; AVX512BWVL-LABEL: TEST_mm256_mask_test_epi16_mask:313; AVX512BWVL: # %bb.0: # %entry314; AVX512BWVL-NEXT: vptestmw %ymm0, %ymm1, %k0315; AVX512BWVL-NEXT: kmovd %k0, %eax316; AVX512BWVL-NEXT: andl %edi, %eax317; AVX512BWVL-NEXT: # kill: def $ax killed $ax killed $eax318; AVX512BWVL-NEXT: vzeroupper319; AVX512BWVL-NEXT: retq320;321; AVX512BW-LABEL: TEST_mm256_mask_test_epi16_mask:322; AVX512BW: # %bb.0: # %entry323; AVX512BW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1324; AVX512BW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0325; AVX512BW-NEXT: vptestmw %zmm0, %zmm1, %k0326; AVX512BW-NEXT: kmovd %k0, %eax327; AVX512BW-NEXT: andl %edi, %eax328; AVX512BW-NEXT: # kill: def $ax killed $ax killed $eax329; AVX512BW-NEXT: vzeroupper330; AVX512BW-NEXT: retq331entry:332 %and.i.i = and <4 x i64> %__B, %__A333 %0 = bitcast <4 x i64> %and.i.i to <16 x i16>334 %1 = icmp ne <16 x i16> %0, zeroinitializer335 %2 = bitcast i16 %__U to <16 x i1>336 %3 = and <16 x i1> %1, %2337 %4 = bitcast <16 x i1> %3 to i16338 ret i16 %4339}340 341; Function Attrs: norecurse nounwind readnone342define i32 @TEST_mm256_testn_epi8_mask(<4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {343; AVX512BWVL-LABEL: TEST_mm256_testn_epi8_mask:344; AVX512BWVL: # %bb.0: # %entry345; AVX512BWVL-NEXT: vptestnmb %ymm0, %ymm1, %k0346; AVX512BWVL-NEXT: kmovd %k0, %eax347; AVX512BWVL-NEXT: vzeroupper348; AVX512BWVL-NEXT: retq349;350; AVX512BW-LABEL: TEST_mm256_testn_epi8_mask:351; AVX512BW: # %bb.0: # %entry352; AVX512BW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1353; AVX512BW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0354; AVX512BW-NEXT: vptestnmb %zmm0, %zmm1, %k0355; AVX512BW-NEXT: kmovd %k0, %eax356; AVX512BW-NEXT: vzeroupper357; AVX512BW-NEXT: retq358entry:359 %and.i.i = and <4 x i64> %__B, %__A360 %0 = bitcast <4 x i64> %and.i.i to <32 x i8>361 %1 = icmp eq <32 x i8> %0, zeroinitializer362 %2 = bitcast <32 x i1> %1 to i32363 ret i32 %2364}365 366; Function Attrs: norecurse nounwind readnone367define i32 @TEST_mm256_mask_testn_epi8_mask(i32 %__U, <4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {368; AVX512BWVL-LABEL: TEST_mm256_mask_testn_epi8_mask:369; AVX512BWVL: # %bb.0: # %entry370; AVX512BWVL-NEXT: vptestnmb %ymm0, %ymm1, %k0371; AVX512BWVL-NEXT: kmovd %k0, %eax372; AVX512BWVL-NEXT: andl %edi, %eax373; AVX512BWVL-NEXT: vzeroupper374; AVX512BWVL-NEXT: retq375;376; AVX512BW-LABEL: TEST_mm256_mask_testn_epi8_mask:377; AVX512BW: # %bb.0: # %entry378; AVX512BW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1379; AVX512BW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0380; AVX512BW-NEXT: vptestnmb %zmm0, %zmm1, %k0381; AVX512BW-NEXT: kmovd %k0, %eax382; AVX512BW-NEXT: andl %edi, %eax383; AVX512BW-NEXT: vzeroupper384; AVX512BW-NEXT: retq385entry:386 %and.i.i = and <4 x i64> %__B, %__A387 %0 = bitcast <4 x i64> %and.i.i to <32 x i8>388 %1 = icmp eq <32 x i8> %0, zeroinitializer389 %2 = bitcast i32 %__U to <32 x i1>390 %3 = and <32 x i1> %1, %2391 %4 = bitcast <32 x i1> %3 to i32392 ret i32 %4393}394 395; Function Attrs: norecurse nounwind readnone396define zeroext i16 @TEST_mm256_testn_epi16_mask(<4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {397; AVX512BWVL-LABEL: TEST_mm256_testn_epi16_mask:398; AVX512BWVL: # %bb.0: # %entry399; AVX512BWVL-NEXT: vptestnmw %ymm0, %ymm1, %k0400; AVX512BWVL-NEXT: kmovd %k0, %eax401; AVX512BWVL-NEXT: # kill: def $ax killed $ax killed $eax402; AVX512BWVL-NEXT: vzeroupper403; AVX512BWVL-NEXT: retq404;405; AVX512BW-LABEL: TEST_mm256_testn_epi16_mask:406; AVX512BW: # %bb.0: # %entry407; AVX512BW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1408; AVX512BW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0409; AVX512BW-NEXT: vptestnmw %zmm0, %zmm1, %k0410; AVX512BW-NEXT: kmovd %k0, %eax411; AVX512BW-NEXT: # kill: def $ax killed $ax killed $eax412; AVX512BW-NEXT: vzeroupper413; AVX512BW-NEXT: retq414entry:415 %and.i.i = and <4 x i64> %__B, %__A416 %0 = bitcast <4 x i64> %and.i.i to <16 x i16>417 %1 = icmp eq <16 x i16> %0, zeroinitializer418 %2 = bitcast <16 x i1> %1 to i16419 ret i16 %2420}421 422; Function Attrs: norecurse nounwind readnone423define zeroext i16 @TEST_mm256_mask_testn_epi16_mask(i16 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) local_unnamed_addr #0 {424; AVX512BWVL-LABEL: TEST_mm256_mask_testn_epi16_mask:425; AVX512BWVL: # %bb.0: # %entry426; AVX512BWVL-NEXT: vptestnmw %ymm0, %ymm1, %k0427; AVX512BWVL-NEXT: kmovd %k0, %eax428; AVX512BWVL-NEXT: andl %edi, %eax429; AVX512BWVL-NEXT: # kill: def $ax killed $ax killed $eax430; AVX512BWVL-NEXT: vzeroupper431; AVX512BWVL-NEXT: retq432;433; AVX512BW-LABEL: TEST_mm256_mask_testn_epi16_mask:434; AVX512BW: # %bb.0: # %entry435; AVX512BW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1436; AVX512BW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0437; AVX512BW-NEXT: vptestnmw %zmm0, %zmm1, %k0438; AVX512BW-NEXT: kmovd %k0, %eax439; AVX512BW-NEXT: andl %edi, %eax440; AVX512BW-NEXT: # kill: def $ax killed $ax killed $eax441; AVX512BW-NEXT: vzeroupper442; AVX512BW-NEXT: retq443entry:444 %and.i.i = and <4 x i64> %__B, %__A445 %0 = bitcast <4 x i64> %and.i.i to <16 x i16>446 %1 = icmp eq <16 x i16> %0, zeroinitializer447 %2 = bitcast i16 %__U to <16 x i1>448 %3 = and <16 x i1> %1, %2449 %4 = bitcast <16 x i1> %3 to i16450 ret i16 %4451}452 453 454