brintos

brintos / llvm-project-archived public Read only

0
0
Text · 893.0 KiB · 1618a64 Raw
16375 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=AVX512F3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw | FileCheck %s --check-prefix=AVX512BW4; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vpopcntdq | FileCheck %s --check-prefixes=AVX512VPOPCNTDQ,AVX512VPOPCNTDQ-NOBW5; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vpopcntdq,+avx512bw | FileCheck %s --check-prefixes=AVX512VPOPCNTDQ,AVX512VPOPCNTDQ-BW6; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bitalg | FileCheck %s --check-prefix=BITALG7 8 9define <64 x i8> @ugt_1_v64i8(<64 x i8> %0) {10; AVX512F-LABEL: ugt_1_v64i8:11; AVX512F:       # %bb.0:12; AVX512F-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm113; AVX512F-NEXT:    vpaddb %ymm1, %ymm0, %ymm214; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm315; AVX512F-NEXT:    vpaddb %ymm1, %ymm3, %ymm116; AVX512F-NEXT:    vpand %ymm1, %ymm3, %ymm117; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm318; AVX512F-NEXT:    vpcmpeqb %ymm3, %ymm1, %ymm119; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm020; AVX512F-NEXT:    vpcmpeqb %ymm3, %ymm0, %ymm021; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm022; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 = ~zmm023; AVX512F-NEXT:    retq24;25; AVX512BW-LABEL: ugt_1_v64i8:26; AVX512BW:       # %bb.0:27; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm1 = -128; AVX512BW-NEXT:    vpaddb %zmm1, %zmm0, %zmm129; AVX512BW-NEXT:    vptestmb %zmm1, %zmm0, %k030; AVX512BW-NEXT:    vpmovm2b %k0, %zmm031; AVX512BW-NEXT:    retq32;33; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_1_v64i8:34; AVX512VPOPCNTDQ-NOBW:       # %bb.0:35; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm136; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm1, %ymm0, %ymm237; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm338; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm1, %ymm3, %ymm139; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm3, %ymm140; AVX512VPOPCNTDQ-NOBW-NEXT:    vpxor %xmm3, %xmm3, %xmm341; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpeqb %ymm3, %ymm1, %ymm142; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm2, %ymm0, %ymm043; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpeqb %ymm3, %ymm0, %ymm044; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm045; AVX512VPOPCNTDQ-NOBW-NEXT:    vpternlogq {{.*#+}} zmm0 = ~zmm046; AVX512VPOPCNTDQ-NOBW-NEXT:    retq47;48; AVX512VPOPCNTDQ-BW-LABEL: ugt_1_v64i8:49; AVX512VPOPCNTDQ-BW:       # %bb.0:50; AVX512VPOPCNTDQ-BW-NEXT:    vpternlogd {{.*#+}} zmm1 = -151; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm1, %zmm0, %zmm152; AVX512VPOPCNTDQ-BW-NEXT:    vptestmb %zmm1, %zmm0, %k053; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2b %k0, %zmm054; AVX512VPOPCNTDQ-BW-NEXT:    retq55;56; BITALG-LABEL: ugt_1_v64i8:57; BITALG:       # %bb.0:58; BITALG-NEXT:    vpopcntb %zmm0, %zmm059; BITALG-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k060; BITALG-NEXT:    vpmovm2b %k0, %zmm061; BITALG-NEXT:    retq62  %2 = tail call <64 x i8> @llvm.ctpop.v64i8(<64 x i8> %0)63  %3 = icmp ugt <64 x i8> %2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>64  %4 = sext <64 x i1> %3 to <64 x i8>65  ret <64 x i8> %466}67 68define <64 x i8> @ult_2_v64i8(<64 x i8> %0) {69; AVX512F-LABEL: ult_2_v64i8:70; AVX512F:       # %bb.0:71; AVX512F-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm172; AVX512F-NEXT:    vpaddb %ymm1, %ymm0, %ymm273; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm374; AVX512F-NEXT:    vpaddb %ymm1, %ymm3, %ymm175; AVX512F-NEXT:    vpand %ymm1, %ymm3, %ymm176; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm377; AVX512F-NEXT:    vpcmpeqb %ymm3, %ymm1, %ymm178; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm079; AVX512F-NEXT:    vpcmpeqb %ymm3, %ymm0, %ymm080; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm081; AVX512F-NEXT:    retq82;83; AVX512BW-LABEL: ult_2_v64i8:84; AVX512BW:       # %bb.0:85; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm1 = -186; AVX512BW-NEXT:    vpaddb %zmm1, %zmm0, %zmm187; AVX512BW-NEXT:    vptestnmb %zmm1, %zmm0, %k088; AVX512BW-NEXT:    vpmovm2b %k0, %zmm089; AVX512BW-NEXT:    retq90;91; AVX512VPOPCNTDQ-NOBW-LABEL: ult_2_v64i8:92; AVX512VPOPCNTDQ-NOBW:       # %bb.0:93; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm194; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm1, %ymm0, %ymm295; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm396; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm1, %ymm3, %ymm197; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm3, %ymm198; AVX512VPOPCNTDQ-NOBW-NEXT:    vpxor %xmm3, %xmm3, %xmm399; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpeqb %ymm3, %ymm1, %ymm1100; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm2, %ymm0, %ymm0101; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpeqb %ymm3, %ymm0, %ymm0102; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0103; AVX512VPOPCNTDQ-NOBW-NEXT:    retq104;105; AVX512VPOPCNTDQ-BW-LABEL: ult_2_v64i8:106; AVX512VPOPCNTDQ-BW:       # %bb.0:107; AVX512VPOPCNTDQ-BW-NEXT:    vpternlogd {{.*#+}} zmm1 = -1108; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm1, %zmm0, %zmm1109; AVX512VPOPCNTDQ-BW-NEXT:    vptestnmb %zmm1, %zmm0, %k0110; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2b %k0, %zmm0111; AVX512VPOPCNTDQ-BW-NEXT:    retq112;113; BITALG-LABEL: ult_2_v64i8:114; BITALG:       # %bb.0:115; BITALG-NEXT:    vpopcntb %zmm0, %zmm0116; BITALG-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0117; BITALG-NEXT:    vpmovm2b %k0, %zmm0118; BITALG-NEXT:    retq119  %2 = tail call <64 x i8> @llvm.ctpop.v64i8(<64 x i8> %0)120  %3 = icmp ult <64 x i8> %2, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>121  %4 = sext <64 x i1> %3 to <64 x i8>122  ret <64 x i8> %4123}124 125define <64 x i8> @ugt_2_v64i8(<64 x i8> %0) {126; AVX512F-LABEL: ugt_2_v64i8:127; AVX512F:       # %bb.0:128; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]129; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm2130; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]131; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]132; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm2133; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm4134; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm4135; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4136; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm2137; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm0138; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm4139; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4140; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm0141; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm0142; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm0143; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm0144; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]145; AVX512F-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0146; AVX512F-NEXT:    vpcmpgtb %ymm1, %ymm2, %ymm1147; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0148; AVX512F-NEXT:    retq149;150; AVX512BW-LABEL: ugt_2_v64i8:151; AVX512BW:       # %bb.0:152; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]153; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2154; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]155; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]156; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2157; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm0158; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0159; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0160; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0161; AVX512BW-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0162; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0163; AVX512BW-NEXT:    retq164;165; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_2_v64i8:166; AVX512VPOPCNTDQ-NOBW:       # %bb.0:167; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]168; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm2169; AVX512VPOPCNTDQ-NOBW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]170; AVX512VPOPCNTDQ-NOBW-NEXT:    # ymm3 = mem[0,1,0,1]171; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm2, %ymm3, %ymm2172; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm4173; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm4, %ymm4174; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4175; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm2, %ymm4, %ymm2176; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm0177; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm4178; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4179; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm0180; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm0181; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm0, %ymm3, %ymm0182; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm4, %ymm0, %ymm0183; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]184; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0185; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm1, %ymm2, %ymm1186; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0187; AVX512VPOPCNTDQ-NOBW-NEXT:    retq188;189; AVX512VPOPCNTDQ-BW-LABEL: ugt_2_v64i8:190; AVX512VPOPCNTDQ-BW:       # %bb.0:191; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]192; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2193; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]194; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]195; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2196; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm0197; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0198; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0199; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0200; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0201; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2b %k0, %zmm0202; AVX512VPOPCNTDQ-BW-NEXT:    retq203;204; BITALG-LABEL: ugt_2_v64i8:205; BITALG:       # %bb.0:206; BITALG-NEXT:    vpopcntb %zmm0, %zmm0207; BITALG-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0208; BITALG-NEXT:    vpmovm2b %k0, %zmm0209; BITALG-NEXT:    retq210  %2 = tail call <64 x i8> @llvm.ctpop.v64i8(<64 x i8> %0)211  %3 = icmp ugt <64 x i8> %2, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>212  %4 = sext <64 x i1> %3 to <64 x i8>213  ret <64 x i8> %4214}215 216define <64 x i8> @ult_3_v64i8(<64 x i8> %0) {217; AVX512F-LABEL: ult_3_v64i8:218; AVX512F:       # %bb.0:219; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]220; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm2221; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]222; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]223; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm2224; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm4225; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm4226; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4227; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm2228; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm0229; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm4230; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4231; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm0232; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm0233; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm0234; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm0235; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]236; AVX512F-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0237; AVX512F-NEXT:    vpcmpgtb %ymm2, %ymm1, %ymm1238; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0239; AVX512F-NEXT:    retq240;241; AVX512BW-LABEL: ult_3_v64i8:242; AVX512BW:       # %bb.0:243; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]244; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2245; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]246; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]247; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2248; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm0249; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0250; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0251; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0252; AVX512BW-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0253; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0254; AVX512BW-NEXT:    retq255;256; AVX512VPOPCNTDQ-NOBW-LABEL: ult_3_v64i8:257; AVX512VPOPCNTDQ-NOBW:       # %bb.0:258; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]259; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm2260; AVX512VPOPCNTDQ-NOBW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]261; AVX512VPOPCNTDQ-NOBW-NEXT:    # ymm3 = mem[0,1,0,1]262; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm2, %ymm3, %ymm2263; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm4264; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm4, %ymm4265; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4266; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm2, %ymm4, %ymm2267; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm0268; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm4269; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4270; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm0271; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm0272; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm0, %ymm3, %ymm0273; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm4, %ymm0, %ymm0274; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]275; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0276; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm2, %ymm1, %ymm1277; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0278; AVX512VPOPCNTDQ-NOBW-NEXT:    retq279;280; AVX512VPOPCNTDQ-BW-LABEL: ult_3_v64i8:281; AVX512VPOPCNTDQ-BW:       # %bb.0:282; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]283; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2284; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]285; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]286; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2287; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm0288; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0289; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0290; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0291; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0292; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2b %k0, %zmm0293; AVX512VPOPCNTDQ-BW-NEXT:    retq294;295; BITALG-LABEL: ult_3_v64i8:296; BITALG:       # %bb.0:297; BITALG-NEXT:    vpopcntb %zmm0, %zmm0298; BITALG-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0299; BITALG-NEXT:    vpmovm2b %k0, %zmm0300; BITALG-NEXT:    retq301  %2 = tail call <64 x i8> @llvm.ctpop.v64i8(<64 x i8> %0)302  %3 = icmp ult <64 x i8> %2, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>303  %4 = sext <64 x i1> %3 to <64 x i8>304  ret <64 x i8> %4305}306 307define <64 x i8> @ugt_3_v64i8(<64 x i8> %0) {308; AVX512F-LABEL: ugt_3_v64i8:309; AVX512F:       # %bb.0:310; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]311; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm2312; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]313; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]314; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm2315; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm4316; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm4317; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4318; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm2319; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm0320; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm4321; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4322; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm0323; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm0324; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm0325; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm0326; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]327; AVX512F-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0328; AVX512F-NEXT:    vpcmpgtb %ymm1, %ymm2, %ymm1329; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0330; AVX512F-NEXT:    retq331;332; AVX512BW-LABEL: ugt_3_v64i8:333; AVX512BW:       # %bb.0:334; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]335; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2336; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]337; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]338; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2339; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm0340; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0341; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0342; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0343; AVX512BW-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0344; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0345; AVX512BW-NEXT:    retq346;347; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_3_v64i8:348; AVX512VPOPCNTDQ-NOBW:       # %bb.0:349; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]350; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm2351; AVX512VPOPCNTDQ-NOBW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]352; AVX512VPOPCNTDQ-NOBW-NEXT:    # ymm3 = mem[0,1,0,1]353; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm2, %ymm3, %ymm2354; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm4355; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm4, %ymm4356; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4357; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm2, %ymm4, %ymm2358; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm0359; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm4360; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4361; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm0362; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm0363; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm0, %ymm3, %ymm0364; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm4, %ymm0, %ymm0365; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]366; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0367; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm1, %ymm2, %ymm1368; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0369; AVX512VPOPCNTDQ-NOBW-NEXT:    retq370;371; AVX512VPOPCNTDQ-BW-LABEL: ugt_3_v64i8:372; AVX512VPOPCNTDQ-BW:       # %bb.0:373; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]374; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2375; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]376; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]377; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2378; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm0379; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0380; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0381; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0382; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0383; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2b %k0, %zmm0384; AVX512VPOPCNTDQ-BW-NEXT:    retq385;386; BITALG-LABEL: ugt_3_v64i8:387; BITALG:       # %bb.0:388; BITALG-NEXT:    vpopcntb %zmm0, %zmm0389; BITALG-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0390; BITALG-NEXT:    vpmovm2b %k0, %zmm0391; BITALG-NEXT:    retq392  %2 = tail call <64 x i8> @llvm.ctpop.v64i8(<64 x i8> %0)393  %3 = icmp ugt <64 x i8> %2, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>394  %4 = sext <64 x i1> %3 to <64 x i8>395  ret <64 x i8> %4396}397 398define <64 x i8> @ult_4_v64i8(<64 x i8> %0) {399; AVX512F-LABEL: ult_4_v64i8:400; AVX512F:       # %bb.0:401; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]402; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm2403; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]404; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]405; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm2406; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm4407; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm4408; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4409; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm2410; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm0411; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm4412; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4413; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm0414; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm0415; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm0416; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm0417; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4]418; AVX512F-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0419; AVX512F-NEXT:    vpcmpgtb %ymm2, %ymm1, %ymm1420; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0421; AVX512F-NEXT:    retq422;423; AVX512BW-LABEL: ult_4_v64i8:424; AVX512BW:       # %bb.0:425; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]426; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2427; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]428; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]429; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2430; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm0431; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0432; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0433; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0434; AVX512BW-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0435; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0436; AVX512BW-NEXT:    retq437;438; AVX512VPOPCNTDQ-NOBW-LABEL: ult_4_v64i8:439; AVX512VPOPCNTDQ-NOBW:       # %bb.0:440; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]441; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm2442; AVX512VPOPCNTDQ-NOBW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]443; AVX512VPOPCNTDQ-NOBW-NEXT:    # ymm3 = mem[0,1,0,1]444; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm2, %ymm3, %ymm2445; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm4446; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm4, %ymm4447; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4448; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm2, %ymm4, %ymm2449; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm0450; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm4451; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4452; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm0453; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm0454; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm0, %ymm3, %ymm0455; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm4, %ymm0, %ymm0456; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4]457; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0458; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm2, %ymm1, %ymm1459; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0460; AVX512VPOPCNTDQ-NOBW-NEXT:    retq461;462; AVX512VPOPCNTDQ-BW-LABEL: ult_4_v64i8:463; AVX512VPOPCNTDQ-BW:       # %bb.0:464; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]465; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2466; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]467; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]468; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2469; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm0470; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0471; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0472; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0473; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0474; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2b %k0, %zmm0475; AVX512VPOPCNTDQ-BW-NEXT:    retq476;477; BITALG-LABEL: ult_4_v64i8:478; BITALG:       # %bb.0:479; BITALG-NEXT:    vpopcntb %zmm0, %zmm0480; BITALG-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0481; BITALG-NEXT:    vpmovm2b %k0, %zmm0482; BITALG-NEXT:    retq483  %2 = tail call <64 x i8> @llvm.ctpop.v64i8(<64 x i8> %0)484  %3 = icmp ult <64 x i8> %2, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>485  %4 = sext <64 x i1> %3 to <64 x i8>486  ret <64 x i8> %4487}488 489define <64 x i8> @ugt_4_v64i8(<64 x i8> %0) {490; AVX512F-LABEL: ugt_4_v64i8:491; AVX512F:       # %bb.0:492; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]493; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm2494; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]495; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]496; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm2497; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm4498; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm4499; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4500; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm2501; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm0502; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm4503; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4504; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm0505; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm0506; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm0507; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm0508; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4]509; AVX512F-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0510; AVX512F-NEXT:    vpcmpgtb %ymm1, %ymm2, %ymm1511; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0512; AVX512F-NEXT:    retq513;514; AVX512BW-LABEL: ugt_4_v64i8:515; AVX512BW:       # %bb.0:516; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]517; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2518; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]519; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]520; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2521; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm0522; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0523; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0524; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0525; AVX512BW-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0526; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0527; AVX512BW-NEXT:    retq528;529; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_4_v64i8:530; AVX512VPOPCNTDQ-NOBW:       # %bb.0:531; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]532; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm2533; AVX512VPOPCNTDQ-NOBW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]534; AVX512VPOPCNTDQ-NOBW-NEXT:    # ymm3 = mem[0,1,0,1]535; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm2, %ymm3, %ymm2536; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm4537; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm4, %ymm4538; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4539; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm2, %ymm4, %ymm2540; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm0541; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm4542; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4543; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm0544; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm0545; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm0, %ymm3, %ymm0546; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm4, %ymm0, %ymm0547; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4]548; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0549; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm1, %ymm2, %ymm1550; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0551; AVX512VPOPCNTDQ-NOBW-NEXT:    retq552;553; AVX512VPOPCNTDQ-BW-LABEL: ugt_4_v64i8:554; AVX512VPOPCNTDQ-BW:       # %bb.0:555; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]556; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2557; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]558; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]559; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2560; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm0561; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0562; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0563; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0564; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0565; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2b %k0, %zmm0566; AVX512VPOPCNTDQ-BW-NEXT:    retq567;568; BITALG-LABEL: ugt_4_v64i8:569; BITALG:       # %bb.0:570; BITALG-NEXT:    vpopcntb %zmm0, %zmm0571; BITALG-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0572; BITALG-NEXT:    vpmovm2b %k0, %zmm0573; BITALG-NEXT:    retq574  %2 = tail call <64 x i8> @llvm.ctpop.v64i8(<64 x i8> %0)575  %3 = icmp ugt <64 x i8> %2, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>576  %4 = sext <64 x i1> %3 to <64 x i8>577  ret <64 x i8> %4578}579 580define <64 x i8> @ult_5_v64i8(<64 x i8> %0) {581; AVX512F-LABEL: ult_5_v64i8:582; AVX512F:       # %bb.0:583; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]584; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm2585; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]586; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]587; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm2588; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm4589; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm4590; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4591; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm2592; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm0593; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm4594; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4595; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm0596; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm0597; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm0598; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm0599; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]600; AVX512F-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0601; AVX512F-NEXT:    vpcmpgtb %ymm2, %ymm1, %ymm1602; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0603; AVX512F-NEXT:    retq604;605; AVX512BW-LABEL: ult_5_v64i8:606; AVX512BW:       # %bb.0:607; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]608; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2609; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]610; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]611; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2612; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm0613; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0614; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0615; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0616; AVX512BW-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0617; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0618; AVX512BW-NEXT:    retq619;620; AVX512VPOPCNTDQ-NOBW-LABEL: ult_5_v64i8:621; AVX512VPOPCNTDQ-NOBW:       # %bb.0:622; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]623; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm2624; AVX512VPOPCNTDQ-NOBW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]625; AVX512VPOPCNTDQ-NOBW-NEXT:    # ymm3 = mem[0,1,0,1]626; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm2, %ymm3, %ymm2627; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm4628; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm4, %ymm4629; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4630; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm2, %ymm4, %ymm2631; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm0632; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm4633; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4634; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm0635; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm0636; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm0, %ymm3, %ymm0637; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm4, %ymm0, %ymm0638; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]639; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0640; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm2, %ymm1, %ymm1641; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0642; AVX512VPOPCNTDQ-NOBW-NEXT:    retq643;644; AVX512VPOPCNTDQ-BW-LABEL: ult_5_v64i8:645; AVX512VPOPCNTDQ-BW:       # %bb.0:646; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]647; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2648; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]649; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]650; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2651; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm0652; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0653; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0654; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0655; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0656; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2b %k0, %zmm0657; AVX512VPOPCNTDQ-BW-NEXT:    retq658;659; BITALG-LABEL: ult_5_v64i8:660; BITALG:       # %bb.0:661; BITALG-NEXT:    vpopcntb %zmm0, %zmm0662; BITALG-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0663; BITALG-NEXT:    vpmovm2b %k0, %zmm0664; BITALG-NEXT:    retq665  %2 = tail call <64 x i8> @llvm.ctpop.v64i8(<64 x i8> %0)666  %3 = icmp ult <64 x i8> %2, <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5>667  %4 = sext <64 x i1> %3 to <64 x i8>668  ret <64 x i8> %4669}670 671define <64 x i8> @ugt_5_v64i8(<64 x i8> %0) {672; AVX512F-LABEL: ugt_5_v64i8:673; AVX512F:       # %bb.0:674; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]675; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm2676; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]677; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]678; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm2679; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm4680; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm4681; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4682; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm2683; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm0684; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm4685; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4686; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm0687; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm0688; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm0689; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm0690; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]691; AVX512F-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0692; AVX512F-NEXT:    vpcmpgtb %ymm1, %ymm2, %ymm1693; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0694; AVX512F-NEXT:    retq695;696; AVX512BW-LABEL: ugt_5_v64i8:697; AVX512BW:       # %bb.0:698; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]699; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2700; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]701; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]702; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2703; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm0704; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0705; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0706; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0707; AVX512BW-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0708; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0709; AVX512BW-NEXT:    retq710;711; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_5_v64i8:712; AVX512VPOPCNTDQ-NOBW:       # %bb.0:713; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]714; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm2715; AVX512VPOPCNTDQ-NOBW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]716; AVX512VPOPCNTDQ-NOBW-NEXT:    # ymm3 = mem[0,1,0,1]717; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm2, %ymm3, %ymm2718; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm4719; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm4, %ymm4720; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4721; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm2, %ymm4, %ymm2722; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm0723; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm4724; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4725; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm0726; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm0727; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm0, %ymm3, %ymm0728; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm4, %ymm0, %ymm0729; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]730; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0731; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm1, %ymm2, %ymm1732; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0733; AVX512VPOPCNTDQ-NOBW-NEXT:    retq734;735; AVX512VPOPCNTDQ-BW-LABEL: ugt_5_v64i8:736; AVX512VPOPCNTDQ-BW:       # %bb.0:737; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]738; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2739; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]740; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]741; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2742; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm0743; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0744; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0745; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0746; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0747; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2b %k0, %zmm0748; AVX512VPOPCNTDQ-BW-NEXT:    retq749;750; BITALG-LABEL: ugt_5_v64i8:751; BITALG:       # %bb.0:752; BITALG-NEXT:    vpopcntb %zmm0, %zmm0753; BITALG-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0754; BITALG-NEXT:    vpmovm2b %k0, %zmm0755; BITALG-NEXT:    retq756  %2 = tail call <64 x i8> @llvm.ctpop.v64i8(<64 x i8> %0)757  %3 = icmp ugt <64 x i8> %2, <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5>758  %4 = sext <64 x i1> %3 to <64 x i8>759  ret <64 x i8> %4760}761 762define <64 x i8> @ult_6_v64i8(<64 x i8> %0) {763; AVX512F-LABEL: ult_6_v64i8:764; AVX512F:       # %bb.0:765; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]766; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm2767; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]768; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]769; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm2770; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm4771; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm4772; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4773; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm2774; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm0775; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm4776; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4777; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm0778; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm0779; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm0780; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm0781; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]782; AVX512F-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0783; AVX512F-NEXT:    vpcmpgtb %ymm2, %ymm1, %ymm1784; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0785; AVX512F-NEXT:    retq786;787; AVX512BW-LABEL: ult_6_v64i8:788; AVX512BW:       # %bb.0:789; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]790; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2791; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]792; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]793; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2794; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm0795; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0796; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0797; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0798; AVX512BW-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0799; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0800; AVX512BW-NEXT:    retq801;802; AVX512VPOPCNTDQ-NOBW-LABEL: ult_6_v64i8:803; AVX512VPOPCNTDQ-NOBW:       # %bb.0:804; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]805; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm2806; AVX512VPOPCNTDQ-NOBW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]807; AVX512VPOPCNTDQ-NOBW-NEXT:    # ymm3 = mem[0,1,0,1]808; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm2, %ymm3, %ymm2809; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm4810; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm4, %ymm4811; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4812; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm2, %ymm4, %ymm2813; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm0814; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm4815; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4816; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm0817; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm0818; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm0, %ymm3, %ymm0819; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm4, %ymm0, %ymm0820; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]821; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0822; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm2, %ymm1, %ymm1823; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0824; AVX512VPOPCNTDQ-NOBW-NEXT:    retq825;826; AVX512VPOPCNTDQ-BW-LABEL: ult_6_v64i8:827; AVX512VPOPCNTDQ-BW:       # %bb.0:828; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]829; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2830; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]831; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]832; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2833; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm0834; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0835; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0836; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0837; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0838; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2b %k0, %zmm0839; AVX512VPOPCNTDQ-BW-NEXT:    retq840;841; BITALG-LABEL: ult_6_v64i8:842; BITALG:       # %bb.0:843; BITALG-NEXT:    vpopcntb %zmm0, %zmm0844; BITALG-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0845; BITALG-NEXT:    vpmovm2b %k0, %zmm0846; BITALG-NEXT:    retq847  %2 = tail call <64 x i8> @llvm.ctpop.v64i8(<64 x i8> %0)848  %3 = icmp ult <64 x i8> %2, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6>849  %4 = sext <64 x i1> %3 to <64 x i8>850  ret <64 x i8> %4851}852 853define <64 x i8> @ugt_6_v64i8(<64 x i8> %0) {854; AVX512F-LABEL: ugt_6_v64i8:855; AVX512F:       # %bb.0:856; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]857; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm2858; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]859; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]860; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm2861; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm4862; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm4863; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4864; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm2865; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm0866; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm4867; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4868; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm0869; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm0870; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm0871; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm0872; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]873; AVX512F-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0874; AVX512F-NEXT:    vpcmpgtb %ymm1, %ymm2, %ymm1875; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0876; AVX512F-NEXT:    retq877;878; AVX512BW-LABEL: ugt_6_v64i8:879; AVX512BW:       # %bb.0:880; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]881; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2882; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]883; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]884; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2885; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm0886; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0887; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0888; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0889; AVX512BW-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0890; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0891; AVX512BW-NEXT:    retq892;893; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_6_v64i8:894; AVX512VPOPCNTDQ-NOBW:       # %bb.0:895; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]896; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm2897; AVX512VPOPCNTDQ-NOBW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]898; AVX512VPOPCNTDQ-NOBW-NEXT:    # ymm3 = mem[0,1,0,1]899; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm2, %ymm3, %ymm2900; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm4901; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm4, %ymm4902; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4903; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm2, %ymm4, %ymm2904; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm0905; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm4906; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4907; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm0908; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm0909; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm0, %ymm3, %ymm0910; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm4, %ymm0, %ymm0911; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]912; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm1, %ymm0, %ymm0913; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm1, %ymm2, %ymm1914; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0915; AVX512VPOPCNTDQ-NOBW-NEXT:    retq916;917; AVX512VPOPCNTDQ-BW-LABEL: ugt_6_v64i8:918; AVX512VPOPCNTDQ-BW:       # %bb.0:919; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]920; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2921; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]922; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]923; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2924; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm0925; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0926; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0927; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0928; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0929; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2b %k0, %zmm0930; AVX512VPOPCNTDQ-BW-NEXT:    retq931;932; BITALG-LABEL: ugt_6_v64i8:933; BITALG:       # %bb.0:934; BITALG-NEXT:    vpopcntb %zmm0, %zmm0935; BITALG-NEXT:    vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0936; BITALG-NEXT:    vpmovm2b %k0, %zmm0937; BITALG-NEXT:    retq938  %2 = tail call <64 x i8> @llvm.ctpop.v64i8(<64 x i8> %0)939  %3 = icmp ugt <64 x i8> %2, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6>940  %4 = sext <64 x i1> %3 to <64 x i8>941  ret <64 x i8> %4942}943 944define <64 x i8> @ult_7_v64i8(<64 x i8> %0) {945; AVX512F-LABEL: ult_7_v64i8:946; AVX512F:       # %bb.0:947; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]948; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm2949; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]950; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]951; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm2952; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm4953; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm4954; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4955; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm2956; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm0957; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm4958; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm4959; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm0960; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm0961; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm0962; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm0963; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]964; AVX512F-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0965; AVX512F-NEXT:    vpcmpgtb %ymm2, %ymm1, %ymm1966; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0967; AVX512F-NEXT:    retq968;969; AVX512BW-LABEL: ult_7_v64i8:970; AVX512BW:       # %bb.0:971; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]972; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm2973; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]974; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]975; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm2976; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm0977; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm0978; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm0979; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm0980; AVX512BW-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k0981; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0982; AVX512BW-NEXT:    retq983;984; AVX512VPOPCNTDQ-NOBW-LABEL: ult_7_v64i8:985; AVX512VPOPCNTDQ-NOBW:       # %bb.0:986; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]987; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm2988; AVX512VPOPCNTDQ-NOBW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]989; AVX512VPOPCNTDQ-NOBW-NEXT:    # ymm3 = mem[0,1,0,1]990; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm2, %ymm3, %ymm2991; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm4992; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm4, %ymm4993; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4994; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm2, %ymm4, %ymm2995; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm0996; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm4997; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm4, %ymm3, %ymm4998; AVX512VPOPCNTDQ-NOBW-NEXT:    vpsrlw $4, %ymm0, %ymm0999; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm0, %ymm01000; AVX512VPOPCNTDQ-NOBW-NEXT:    vpshufb %ymm0, %ymm3, %ymm01001; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddb %ymm4, %ymm0, %ymm01002; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]1003; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm01004; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtb %ymm2, %ymm1, %ymm11005; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01006; AVX512VPOPCNTDQ-NOBW-NEXT:    retq1007;1008; AVX512VPOPCNTDQ-BW-LABEL: ult_7_v64i8:1009; AVX512VPOPCNTDQ-BW:       # %bb.0:1010; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1011; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21012; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1013; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1014; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21015; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm01016; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01017; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01018; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01019; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01020; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2b %k0, %zmm01021; AVX512VPOPCNTDQ-BW-NEXT:    retq1022;1023; BITALG-LABEL: ult_7_v64i8:1024; BITALG:       # %bb.0:1025; BITALG-NEXT:    vpopcntb %zmm0, %zmm01026; BITALG-NEXT:    vpcmpltb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01027; BITALG-NEXT:    vpmovm2b %k0, %zmm01028; BITALG-NEXT:    retq1029  %2 = tail call <64 x i8> @llvm.ctpop.v64i8(<64 x i8> %0)1030  %3 = icmp ult <64 x i8> %2, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>1031  %4 = sext <64 x i1> %3 to <64 x i8>1032  ret <64 x i8> %41033}1034 1035define <32 x i16> @ugt_1_v32i16(<32 x i16> %0) {1036; AVX512F-LABEL: ugt_1_v32i16:1037; AVX512F:       # %bb.0:1038; AVX512F-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm11039; AVX512F-NEXT:    vpaddw %ymm1, %ymm0, %ymm21040; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm31041; AVX512F-NEXT:    vpaddw %ymm1, %ymm3, %ymm11042; AVX512F-NEXT:    vpand %ymm1, %ymm3, %ymm11043; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm31044; AVX512F-NEXT:    vpcmpeqw %ymm3, %ymm1, %ymm11045; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm01046; AVX512F-NEXT:    vpcmpeqw %ymm3, %ymm0, %ymm01047; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm01048; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 = ~zmm01049; AVX512F-NEXT:    retq1050;1051; AVX512BW-LABEL: ugt_1_v32i16:1052; AVX512BW:       # %bb.0:1053; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm1 = -11054; AVX512BW-NEXT:    vpaddw %zmm1, %zmm0, %zmm11055; AVX512BW-NEXT:    vptestmw %zmm1, %zmm0, %k01056; AVX512BW-NEXT:    vpmovm2w %k0, %zmm01057; AVX512BW-NEXT:    retq1058;1059; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_1_v32i16:1060; AVX512VPOPCNTDQ-NOBW:       # %bb.0:1061; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm11062; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddw %ymm1, %ymm0, %ymm21063; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm31064; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddw %ymm1, %ymm3, %ymm11065; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm3, %ymm11066; AVX512VPOPCNTDQ-NOBW-NEXT:    vpxor %xmm3, %xmm3, %xmm31067; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpeqw %ymm3, %ymm1, %ymm11068; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm2, %ymm0, %ymm01069; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpeqw %ymm3, %ymm0, %ymm01070; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm01071; AVX512VPOPCNTDQ-NOBW-NEXT:    vpternlogq {{.*#+}} zmm0 = ~zmm01072; AVX512VPOPCNTDQ-NOBW-NEXT:    retq1073;1074; AVX512VPOPCNTDQ-BW-LABEL: ugt_1_v32i16:1075; AVX512VPOPCNTDQ-BW:       # %bb.0:1076; AVX512VPOPCNTDQ-BW-NEXT:    vpternlogd {{.*#+}} zmm1 = -11077; AVX512VPOPCNTDQ-BW-NEXT:    vpaddw %zmm1, %zmm0, %zmm11078; AVX512VPOPCNTDQ-BW-NEXT:    vptestmw %zmm1, %zmm0, %k01079; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm01080; AVX512VPOPCNTDQ-BW-NEXT:    retq1081;1082; BITALG-LABEL: ugt_1_v32i16:1083; BITALG:       # %bb.0:1084; BITALG-NEXT:    vpopcntw %zmm0, %zmm01085; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01086; BITALG-NEXT:    vpmovm2w %k0, %zmm01087; BITALG-NEXT:    retq1088  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)1089  %3 = icmp ugt <32 x i16> %2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>1090  %4 = sext <32 x i1> %3 to <32 x i16>1091  ret <32 x i16> %41092}1093 1094define <32 x i16> @ult_2_v32i16(<32 x i16> %0) {1095; AVX512F-LABEL: ult_2_v32i16:1096; AVX512F:       # %bb.0:1097; AVX512F-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm11098; AVX512F-NEXT:    vpaddw %ymm1, %ymm0, %ymm21099; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm31100; AVX512F-NEXT:    vpaddw %ymm1, %ymm3, %ymm11101; AVX512F-NEXT:    vpand %ymm1, %ymm3, %ymm11102; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm31103; AVX512F-NEXT:    vpcmpeqw %ymm3, %ymm1, %ymm11104; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm01105; AVX512F-NEXT:    vpcmpeqw %ymm3, %ymm0, %ymm01106; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm01107; AVX512F-NEXT:    retq1108;1109; AVX512BW-LABEL: ult_2_v32i16:1110; AVX512BW:       # %bb.0:1111; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm1 = -11112; AVX512BW-NEXT:    vpaddw %zmm1, %zmm0, %zmm11113; AVX512BW-NEXT:    vptestnmw %zmm1, %zmm0, %k01114; AVX512BW-NEXT:    vpmovm2w %k0, %zmm01115; AVX512BW-NEXT:    retq1116;1117; AVX512VPOPCNTDQ-NOBW-LABEL: ult_2_v32i16:1118; AVX512VPOPCNTDQ-NOBW:       # %bb.0:1119; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm11120; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddw %ymm1, %ymm0, %ymm21121; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm31122; AVX512VPOPCNTDQ-NOBW-NEXT:    vpaddw %ymm1, %ymm3, %ymm11123; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm1, %ymm3, %ymm11124; AVX512VPOPCNTDQ-NOBW-NEXT:    vpxor %xmm3, %xmm3, %xmm31125; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpeqw %ymm3, %ymm1, %ymm11126; AVX512VPOPCNTDQ-NOBW-NEXT:    vpand %ymm2, %ymm0, %ymm01127; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpeqw %ymm3, %ymm0, %ymm01128; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm01129; AVX512VPOPCNTDQ-NOBW-NEXT:    retq1130;1131; AVX512VPOPCNTDQ-BW-LABEL: ult_2_v32i16:1132; AVX512VPOPCNTDQ-BW:       # %bb.0:1133; AVX512VPOPCNTDQ-BW-NEXT:    vpternlogd {{.*#+}} zmm1 = -11134; AVX512VPOPCNTDQ-BW-NEXT:    vpaddw %zmm1, %zmm0, %zmm11135; AVX512VPOPCNTDQ-BW-NEXT:    vptestnmw %zmm1, %zmm0, %k01136; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm01137; AVX512VPOPCNTDQ-BW-NEXT:    retq1138;1139; BITALG-LABEL: ult_2_v32i16:1140; BITALG:       # %bb.0:1141; BITALG-NEXT:    vpopcntw %zmm0, %zmm01142; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01143; BITALG-NEXT:    vpmovm2w %k0, %zmm01144; BITALG-NEXT:    retq1145  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)1146  %3 = icmp ult <32 x i16> %2, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>1147  %4 = sext <32 x i1> %3 to <32 x i16>1148  ret <32 x i16> %41149}1150 1151define <32 x i16> @ugt_2_v32i16(<32 x i16> %0) {1152; AVX512F-LABEL: ugt_2_v32i16:1153; AVX512F:       # %bb.0:1154; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1155; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm21156; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1157; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]1158; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm21159; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm41160; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm41161; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41162; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21163; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm41164; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21165; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm21166; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm01167; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm41168; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41169; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm01170; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm01171; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm01172; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm01173; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm11174; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm01175; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm01176; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]1177; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm01178; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm11179; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01180; AVX512F-NEXT:    retq1181;1182; AVX512BW-LABEL: ugt_2_v32i16:1183; AVX512BW:       # %bb.0:1184; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1185; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21186; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1187; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1188; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21189; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm01190; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01191; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01192; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01193; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm11194; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01195; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm01196; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01197; AVX512BW-NEXT:    vpmovm2w %k0, %zmm01198; AVX512BW-NEXT:    retq1199;1200; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_2_v32i16:1201; AVX512VPOPCNTDQ-NOBW:       # %bb.0:1202; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1203; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm11204; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm11205; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm01206; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1207; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm01208; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm01209; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]1210; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm01211; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm11212; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01213; AVX512VPOPCNTDQ-NOBW-NEXT:    retq1214;1215; AVX512VPOPCNTDQ-BW-LABEL: ugt_2_v32i16:1216; AVX512VPOPCNTDQ-BW:       # %bb.0:1217; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1218; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21219; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1220; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1221; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21222; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm01223; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01224; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01225; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01226; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm11227; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01228; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm01229; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01230; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm01231; AVX512VPOPCNTDQ-BW-NEXT:    retq1232;1233; BITALG-LABEL: ugt_2_v32i16:1234; BITALG:       # %bb.0:1235; BITALG-NEXT:    vpopcntw %zmm0, %zmm01236; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01237; BITALG-NEXT:    vpmovm2w %k0, %zmm01238; BITALG-NEXT:    retq1239  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)1240  %3 = icmp ugt <32 x i16> %2, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>1241  %4 = sext <32 x i1> %3 to <32 x i16>1242  ret <32 x i16> %41243}1244 1245define <32 x i16> @ult_3_v32i16(<32 x i16> %0) {1246; AVX512F-LABEL: ult_3_v32i16:1247; AVX512F:       # %bb.0:1248; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1249; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm21250; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1251; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]1252; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm21253; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm41254; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm41255; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41256; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21257; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm41258; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21259; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm21260; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm01261; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm41262; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41263; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm01264; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm01265; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm01266; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm01267; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm11268; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm01269; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm01270; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]1271; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm01272; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm11273; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01274; AVX512F-NEXT:    retq1275;1276; AVX512BW-LABEL: ult_3_v32i16:1277; AVX512BW:       # %bb.0:1278; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1279; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21280; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1281; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1282; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21283; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm01284; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01285; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01286; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01287; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm11288; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01289; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm01290; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01291; AVX512BW-NEXT:    vpmovm2w %k0, %zmm01292; AVX512BW-NEXT:    retq1293;1294; AVX512VPOPCNTDQ-NOBW-LABEL: ult_3_v32i16:1295; AVX512VPOPCNTDQ-NOBW:       # %bb.0:1296; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1297; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm11298; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm11299; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm01300; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1301; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm01302; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm01303; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]1304; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm01305; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm11306; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01307; AVX512VPOPCNTDQ-NOBW-NEXT:    retq1308;1309; AVX512VPOPCNTDQ-BW-LABEL: ult_3_v32i16:1310; AVX512VPOPCNTDQ-BW:       # %bb.0:1311; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1312; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21313; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1314; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1315; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21316; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm01317; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01318; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01319; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01320; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm11321; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01322; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm01323; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01324; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm01325; AVX512VPOPCNTDQ-BW-NEXT:    retq1326;1327; BITALG-LABEL: ult_3_v32i16:1328; BITALG:       # %bb.0:1329; BITALG-NEXT:    vpopcntw %zmm0, %zmm01330; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01331; BITALG-NEXT:    vpmovm2w %k0, %zmm01332; BITALG-NEXT:    retq1333  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)1334  %3 = icmp ult <32 x i16> %2, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>1335  %4 = sext <32 x i1> %3 to <32 x i16>1336  ret <32 x i16> %41337}1338 1339define <32 x i16> @ugt_3_v32i16(<32 x i16> %0) {1340; AVX512F-LABEL: ugt_3_v32i16:1341; AVX512F:       # %bb.0:1342; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1343; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm21344; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1345; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]1346; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm21347; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm41348; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm41349; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41350; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21351; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm41352; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21353; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm21354; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm01355; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm41356; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41357; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm01358; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm01359; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm01360; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm01361; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm11362; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm01363; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm01364; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]1365; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm01366; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm11367; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01368; AVX512F-NEXT:    retq1369;1370; AVX512BW-LABEL: ugt_3_v32i16:1371; AVX512BW:       # %bb.0:1372; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1373; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21374; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1375; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1376; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21377; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm01378; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01379; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01380; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01381; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm11382; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01383; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm01384; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01385; AVX512BW-NEXT:    vpmovm2w %k0, %zmm01386; AVX512BW-NEXT:    retq1387;1388; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_3_v32i16:1389; AVX512VPOPCNTDQ-NOBW:       # %bb.0:1390; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1391; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm11392; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm11393; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm01394; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1395; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm01396; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm01397; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]1398; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm01399; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm11400; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01401; AVX512VPOPCNTDQ-NOBW-NEXT:    retq1402;1403; AVX512VPOPCNTDQ-BW-LABEL: ugt_3_v32i16:1404; AVX512VPOPCNTDQ-BW:       # %bb.0:1405; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1406; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21407; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1408; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1409; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21410; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm01411; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01412; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01413; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01414; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm11415; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01416; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm01417; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01418; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm01419; AVX512VPOPCNTDQ-BW-NEXT:    retq1420;1421; BITALG-LABEL: ugt_3_v32i16:1422; BITALG:       # %bb.0:1423; BITALG-NEXT:    vpopcntw %zmm0, %zmm01424; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01425; BITALG-NEXT:    vpmovm2w %k0, %zmm01426; BITALG-NEXT:    retq1427  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)1428  %3 = icmp ugt <32 x i16> %2, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>1429  %4 = sext <32 x i1> %3 to <32 x i16>1430  ret <32 x i16> %41431}1432 1433define <32 x i16> @ult_4_v32i16(<32 x i16> %0) {1434; AVX512F-LABEL: ult_4_v32i16:1435; AVX512F:       # %bb.0:1436; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1437; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm21438; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1439; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]1440; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm21441; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm41442; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm41443; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41444; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21445; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm41446; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21447; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm21448; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm01449; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm41450; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41451; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm01452; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm01453; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm01454; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm01455; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm11456; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm01457; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm01458; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4]1459; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm01460; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm11461; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01462; AVX512F-NEXT:    retq1463;1464; AVX512BW-LABEL: ult_4_v32i16:1465; AVX512BW:       # %bb.0:1466; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1467; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21468; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1469; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1470; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21471; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm01472; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01473; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01474; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01475; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm11476; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01477; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm01478; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01479; AVX512BW-NEXT:    vpmovm2w %k0, %zmm01480; AVX512BW-NEXT:    retq1481;1482; AVX512VPOPCNTDQ-NOBW-LABEL: ult_4_v32i16:1483; AVX512VPOPCNTDQ-NOBW:       # %bb.0:1484; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1485; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm11486; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm11487; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm01488; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1489; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm01490; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm01491; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4]1492; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm01493; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm11494; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01495; AVX512VPOPCNTDQ-NOBW-NEXT:    retq1496;1497; AVX512VPOPCNTDQ-BW-LABEL: ult_4_v32i16:1498; AVX512VPOPCNTDQ-BW:       # %bb.0:1499; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1500; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21501; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1502; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1503; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21504; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm01505; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01506; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01507; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01508; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm11509; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01510; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm01511; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01512; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm01513; AVX512VPOPCNTDQ-BW-NEXT:    retq1514;1515; BITALG-LABEL: ult_4_v32i16:1516; BITALG:       # %bb.0:1517; BITALG-NEXT:    vpopcntw %zmm0, %zmm01518; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01519; BITALG-NEXT:    vpmovm2w %k0, %zmm01520; BITALG-NEXT:    retq1521  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)1522  %3 = icmp ult <32 x i16> %2, <i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4>1523  %4 = sext <32 x i1> %3 to <32 x i16>1524  ret <32 x i16> %41525}1526 1527define <32 x i16> @ugt_4_v32i16(<32 x i16> %0) {1528; AVX512F-LABEL: ugt_4_v32i16:1529; AVX512F:       # %bb.0:1530; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1531; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm21532; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1533; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]1534; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm21535; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm41536; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm41537; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41538; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21539; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm41540; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21541; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm21542; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm01543; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm41544; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41545; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm01546; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm01547; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm01548; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm01549; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm11550; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm01551; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm01552; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4]1553; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm01554; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm11555; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01556; AVX512F-NEXT:    retq1557;1558; AVX512BW-LABEL: ugt_4_v32i16:1559; AVX512BW:       # %bb.0:1560; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1561; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21562; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1563; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1564; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21565; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm01566; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01567; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01568; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01569; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm11570; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01571; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm01572; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01573; AVX512BW-NEXT:    vpmovm2w %k0, %zmm01574; AVX512BW-NEXT:    retq1575;1576; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_4_v32i16:1577; AVX512VPOPCNTDQ-NOBW:       # %bb.0:1578; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1579; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm11580; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm11581; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm01582; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1583; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm01584; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm01585; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4]1586; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm01587; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm11588; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01589; AVX512VPOPCNTDQ-NOBW-NEXT:    retq1590;1591; AVX512VPOPCNTDQ-BW-LABEL: ugt_4_v32i16:1592; AVX512VPOPCNTDQ-BW:       # %bb.0:1593; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1594; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21595; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1596; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1597; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21598; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm01599; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01600; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01601; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01602; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm11603; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01604; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm01605; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01606; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm01607; AVX512VPOPCNTDQ-BW-NEXT:    retq1608;1609; BITALG-LABEL: ugt_4_v32i16:1610; BITALG:       # %bb.0:1611; BITALG-NEXT:    vpopcntw %zmm0, %zmm01612; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01613; BITALG-NEXT:    vpmovm2w %k0, %zmm01614; BITALG-NEXT:    retq1615  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)1616  %3 = icmp ugt <32 x i16> %2, <i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4>1617  %4 = sext <32 x i1> %3 to <32 x i16>1618  ret <32 x i16> %41619}1620 1621define <32 x i16> @ult_5_v32i16(<32 x i16> %0) {1622; AVX512F-LABEL: ult_5_v32i16:1623; AVX512F:       # %bb.0:1624; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1625; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm21626; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1627; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]1628; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm21629; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm41630; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm41631; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41632; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21633; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm41634; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21635; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm21636; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm01637; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm41638; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41639; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm01640; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm01641; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm01642; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm01643; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm11644; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm01645; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm01646; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]1647; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm01648; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm11649; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01650; AVX512F-NEXT:    retq1651;1652; AVX512BW-LABEL: ult_5_v32i16:1653; AVX512BW:       # %bb.0:1654; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1655; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21656; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1657; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1658; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21659; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm01660; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01661; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01662; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01663; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm11664; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01665; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm01666; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01667; AVX512BW-NEXT:    vpmovm2w %k0, %zmm01668; AVX512BW-NEXT:    retq1669;1670; AVX512VPOPCNTDQ-NOBW-LABEL: ult_5_v32i16:1671; AVX512VPOPCNTDQ-NOBW:       # %bb.0:1672; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1673; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm11674; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm11675; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm01676; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1677; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm01678; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm01679; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]1680; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm01681; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm11682; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01683; AVX512VPOPCNTDQ-NOBW-NEXT:    retq1684;1685; AVX512VPOPCNTDQ-BW-LABEL: ult_5_v32i16:1686; AVX512VPOPCNTDQ-BW:       # %bb.0:1687; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1688; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21689; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1690; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1691; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21692; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm01693; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01694; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01695; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01696; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm11697; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01698; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm01699; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01700; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm01701; AVX512VPOPCNTDQ-BW-NEXT:    retq1702;1703; BITALG-LABEL: ult_5_v32i16:1704; BITALG:       # %bb.0:1705; BITALG-NEXT:    vpopcntw %zmm0, %zmm01706; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01707; BITALG-NEXT:    vpmovm2w %k0, %zmm01708; BITALG-NEXT:    retq1709  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)1710  %3 = icmp ult <32 x i16> %2, <i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5>1711  %4 = sext <32 x i1> %3 to <32 x i16>1712  ret <32 x i16> %41713}1714 1715define <32 x i16> @ugt_5_v32i16(<32 x i16> %0) {1716; AVX512F-LABEL: ugt_5_v32i16:1717; AVX512F:       # %bb.0:1718; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1719; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm21720; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1721; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]1722; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm21723; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm41724; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm41725; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41726; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21727; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm41728; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21729; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm21730; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm01731; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm41732; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41733; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm01734; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm01735; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm01736; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm01737; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm11738; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm01739; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm01740; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]1741; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm01742; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm11743; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01744; AVX512F-NEXT:    retq1745;1746; AVX512BW-LABEL: ugt_5_v32i16:1747; AVX512BW:       # %bb.0:1748; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1749; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21750; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1751; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1752; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21753; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm01754; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01755; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01756; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01757; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm11758; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01759; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm01760; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01761; AVX512BW-NEXT:    vpmovm2w %k0, %zmm01762; AVX512BW-NEXT:    retq1763;1764; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_5_v32i16:1765; AVX512VPOPCNTDQ-NOBW:       # %bb.0:1766; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1767; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm11768; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm11769; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm01770; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1771; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm01772; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm01773; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]1774; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm01775; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm11776; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01777; AVX512VPOPCNTDQ-NOBW-NEXT:    retq1778;1779; AVX512VPOPCNTDQ-BW-LABEL: ugt_5_v32i16:1780; AVX512VPOPCNTDQ-BW:       # %bb.0:1781; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1782; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21783; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1784; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1785; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21786; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm01787; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01788; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01789; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01790; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm11791; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01792; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm01793; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01794; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm01795; AVX512VPOPCNTDQ-BW-NEXT:    retq1796;1797; BITALG-LABEL: ugt_5_v32i16:1798; BITALG:       # %bb.0:1799; BITALG-NEXT:    vpopcntw %zmm0, %zmm01800; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01801; BITALG-NEXT:    vpmovm2w %k0, %zmm01802; BITALG-NEXT:    retq1803  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)1804  %3 = icmp ugt <32 x i16> %2, <i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5>1805  %4 = sext <32 x i1> %3 to <32 x i16>1806  ret <32 x i16> %41807}1808 1809define <32 x i16> @ult_6_v32i16(<32 x i16> %0) {1810; AVX512F-LABEL: ult_6_v32i16:1811; AVX512F:       # %bb.0:1812; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1813; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm21814; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1815; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]1816; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm21817; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm41818; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm41819; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41820; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21821; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm41822; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21823; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm21824; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm01825; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm41826; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41827; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm01828; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm01829; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm01830; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm01831; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm11832; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm01833; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm01834; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]1835; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm01836; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm11837; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01838; AVX512F-NEXT:    retq1839;1840; AVX512BW-LABEL: ult_6_v32i16:1841; AVX512BW:       # %bb.0:1842; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1843; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21844; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1845; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1846; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21847; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm01848; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01849; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01850; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01851; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm11852; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01853; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm01854; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01855; AVX512BW-NEXT:    vpmovm2w %k0, %zmm01856; AVX512BW-NEXT:    retq1857;1858; AVX512VPOPCNTDQ-NOBW-LABEL: ult_6_v32i16:1859; AVX512VPOPCNTDQ-NOBW:       # %bb.0:1860; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1861; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm11862; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm11863; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm01864; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1865; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm01866; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm01867; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]1868; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm01869; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm11870; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01871; AVX512VPOPCNTDQ-NOBW-NEXT:    retq1872;1873; AVX512VPOPCNTDQ-BW-LABEL: ult_6_v32i16:1874; AVX512VPOPCNTDQ-BW:       # %bb.0:1875; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1876; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21877; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1878; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1879; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21880; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm01881; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01882; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01883; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01884; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm11885; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01886; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm01887; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01888; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm01889; AVX512VPOPCNTDQ-BW-NEXT:    retq1890;1891; BITALG-LABEL: ult_6_v32i16:1892; BITALG:       # %bb.0:1893; BITALG-NEXT:    vpopcntw %zmm0, %zmm01894; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01895; BITALG-NEXT:    vpmovm2w %k0, %zmm01896; BITALG-NEXT:    retq1897  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)1898  %3 = icmp ult <32 x i16> %2, <i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6>1899  %4 = sext <32 x i1> %3 to <32 x i16>1900  ret <32 x i16> %41901}1902 1903define <32 x i16> @ugt_6_v32i16(<32 x i16> %0) {1904; AVX512F-LABEL: ugt_6_v32i16:1905; AVX512F:       # %bb.0:1906; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1907; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm21908; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1909; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]1910; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm21911; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm41912; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm41913; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41914; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21915; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm41916; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm21917; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm21918; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm01919; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm41920; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm41921; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm01922; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm01923; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm01924; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm01925; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm11926; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm01927; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm01928; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]1929; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm01930; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm11931; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01932; AVX512F-NEXT:    retq1933;1934; AVX512BW-LABEL: ugt_6_v32i16:1935; AVX512BW:       # %bb.0:1936; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1937; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21938; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1939; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1940; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21941; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm01942; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01943; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01944; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01945; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm11946; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01947; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm01948; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01949; AVX512BW-NEXT:    vpmovm2w %k0, %zmm01950; AVX512BW-NEXT:    retq1951;1952; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_6_v32i16:1953; AVX512VPOPCNTDQ-NOBW:       # %bb.0:1954; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1955; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm11956; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm11957; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm01958; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero1959; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm01960; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm01961; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]1962; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm01963; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm11964; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm01965; AVX512VPOPCNTDQ-NOBW-NEXT:    retq1966;1967; AVX512VPOPCNTDQ-BW-LABEL: ugt_6_v32i16:1968; AVX512VPOPCNTDQ-BW:       # %bb.0:1969; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]1970; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm21971; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]1972; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]1973; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm21974; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm01975; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm01976; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm01977; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm01978; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm11979; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm01980; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm01981; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01982; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm01983; AVX512VPOPCNTDQ-BW-NEXT:    retq1984;1985; BITALG-LABEL: ugt_6_v32i16:1986; BITALG:       # %bb.0:1987; BITALG-NEXT:    vpopcntw %zmm0, %zmm01988; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k01989; BITALG-NEXT:    vpmovm2w %k0, %zmm01990; BITALG-NEXT:    retq1991  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)1992  %3 = icmp ugt <32 x i16> %2, <i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6>1993  %4 = sext <32 x i1> %3 to <32 x i16>1994  ret <32 x i16> %41995}1996 1997define <32 x i16> @ult_7_v32i16(<32 x i16> %0) {1998; AVX512F-LABEL: ult_7_v32i16:1999; AVX512F:       # %bb.0:2000; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2001; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm22002; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2003; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]2004; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm22005; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm42006; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm42007; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42008; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22009; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm42010; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22011; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm22012; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm02013; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm42014; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42015; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm02016; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm02017; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm02018; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm02019; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm12020; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm02021; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm02022; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]2023; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm02024; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm12025; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02026; AVX512F-NEXT:    retq2027;2028; AVX512BW-LABEL: ult_7_v32i16:2029; AVX512BW:       # %bb.0:2030; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2031; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22032; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2033; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2034; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22035; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm02036; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02037; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02038; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02039; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm12040; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02041; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm02042; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02043; AVX512BW-NEXT:    vpmovm2w %k0, %zmm02044; AVX512BW-NEXT:    retq2045;2046; AVX512VPOPCNTDQ-NOBW-LABEL: ult_7_v32i16:2047; AVX512VPOPCNTDQ-NOBW:       # %bb.0:2048; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2049; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm12050; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm12051; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm02052; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2053; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm02054; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm02055; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]2056; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm02057; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm12058; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02059; AVX512VPOPCNTDQ-NOBW-NEXT:    retq2060;2061; AVX512VPOPCNTDQ-BW-LABEL: ult_7_v32i16:2062; AVX512VPOPCNTDQ-BW:       # %bb.0:2063; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2064; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22065; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2066; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2067; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22068; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm02069; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02070; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02071; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02072; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm12073; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02074; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm02075; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02076; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm02077; AVX512VPOPCNTDQ-BW-NEXT:    retq2078;2079; BITALG-LABEL: ult_7_v32i16:2080; BITALG:       # %bb.0:2081; BITALG-NEXT:    vpopcntw %zmm0, %zmm02082; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02083; BITALG-NEXT:    vpmovm2w %k0, %zmm02084; BITALG-NEXT:    retq2085  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)2086  %3 = icmp ult <32 x i16> %2, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>2087  %4 = sext <32 x i1> %3 to <32 x i16>2088  ret <32 x i16> %42089}2090 2091define <32 x i16> @ugt_7_v32i16(<32 x i16> %0) {2092; AVX512F-LABEL: ugt_7_v32i16:2093; AVX512F:       # %bb.0:2094; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2095; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm22096; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2097; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]2098; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm22099; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm42100; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm42101; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42102; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22103; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm42104; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22105; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm22106; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm02107; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm42108; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42109; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm02110; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm02111; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm02112; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm02113; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm12114; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm02115; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm02116; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]2117; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm02118; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm12119; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02120; AVX512F-NEXT:    retq2121;2122; AVX512BW-LABEL: ugt_7_v32i16:2123; AVX512BW:       # %bb.0:2124; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2125; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22126; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2127; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2128; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22129; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm02130; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02131; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02132; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02133; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm12134; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02135; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm02136; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02137; AVX512BW-NEXT:    vpmovm2w %k0, %zmm02138; AVX512BW-NEXT:    retq2139;2140; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_7_v32i16:2141; AVX512VPOPCNTDQ-NOBW:       # %bb.0:2142; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2143; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm12144; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm12145; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm02146; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2147; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm02148; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm02149; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]2150; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm02151; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm12152; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02153; AVX512VPOPCNTDQ-NOBW-NEXT:    retq2154;2155; AVX512VPOPCNTDQ-BW-LABEL: ugt_7_v32i16:2156; AVX512VPOPCNTDQ-BW:       # %bb.0:2157; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2158; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22159; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2160; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2161; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22162; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm02163; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02164; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02165; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02166; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm12167; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02168; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm02169; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02170; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm02171; AVX512VPOPCNTDQ-BW-NEXT:    retq2172;2173; BITALG-LABEL: ugt_7_v32i16:2174; BITALG:       # %bb.0:2175; BITALG-NEXT:    vpopcntw %zmm0, %zmm02176; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02177; BITALG-NEXT:    vpmovm2w %k0, %zmm02178; BITALG-NEXT:    retq2179  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)2180  %3 = icmp ugt <32 x i16> %2, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>2181  %4 = sext <32 x i1> %3 to <32 x i16>2182  ret <32 x i16> %42183}2184 2185define <32 x i16> @ult_8_v32i16(<32 x i16> %0) {2186; AVX512F-LABEL: ult_8_v32i16:2187; AVX512F:       # %bb.0:2188; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2189; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm22190; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2191; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]2192; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm22193; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm42194; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm42195; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42196; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22197; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm42198; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22199; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm22200; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm02201; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm42202; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42203; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm02204; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm02205; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm02206; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm02207; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm12208; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm02209; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm02210; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]2211; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm02212; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm12213; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02214; AVX512F-NEXT:    retq2215;2216; AVX512BW-LABEL: ult_8_v32i16:2217; AVX512BW:       # %bb.0:2218; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2219; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22220; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2221; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2222; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22223; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm02224; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02225; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02226; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02227; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm12228; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02229; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm02230; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02231; AVX512BW-NEXT:    vpmovm2w %k0, %zmm02232; AVX512BW-NEXT:    retq2233;2234; AVX512VPOPCNTDQ-NOBW-LABEL: ult_8_v32i16:2235; AVX512VPOPCNTDQ-NOBW:       # %bb.0:2236; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2237; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm12238; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm12239; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm02240; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2241; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm02242; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm02243; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]2244; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm02245; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm12246; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02247; AVX512VPOPCNTDQ-NOBW-NEXT:    retq2248;2249; AVX512VPOPCNTDQ-BW-LABEL: ult_8_v32i16:2250; AVX512VPOPCNTDQ-BW:       # %bb.0:2251; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2252; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22253; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2254; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2255; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22256; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm02257; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02258; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02259; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02260; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm12261; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02262; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm02263; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02264; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm02265; AVX512VPOPCNTDQ-BW-NEXT:    retq2266;2267; BITALG-LABEL: ult_8_v32i16:2268; BITALG:       # %bb.0:2269; BITALG-NEXT:    vpopcntw %zmm0, %zmm02270; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02271; BITALG-NEXT:    vpmovm2w %k0, %zmm02272; BITALG-NEXT:    retq2273  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)2274  %3 = icmp ult <32 x i16> %2, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>2275  %4 = sext <32 x i1> %3 to <32 x i16>2276  ret <32 x i16> %42277}2278 2279define <32 x i16> @ugt_8_v32i16(<32 x i16> %0) {2280; AVX512F-LABEL: ugt_8_v32i16:2281; AVX512F:       # %bb.0:2282; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2283; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm22284; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2285; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]2286; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm22287; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm42288; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm42289; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42290; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22291; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm42292; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22293; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm22294; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm02295; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm42296; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42297; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm02298; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm02299; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm02300; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm02301; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm12302; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm02303; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm02304; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]2305; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm02306; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm12307; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02308; AVX512F-NEXT:    retq2309;2310; AVX512BW-LABEL: ugt_8_v32i16:2311; AVX512BW:       # %bb.0:2312; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2313; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22314; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2315; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2316; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22317; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm02318; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02319; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02320; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02321; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm12322; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02323; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm02324; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02325; AVX512BW-NEXT:    vpmovm2w %k0, %zmm02326; AVX512BW-NEXT:    retq2327;2328; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_8_v32i16:2329; AVX512VPOPCNTDQ-NOBW:       # %bb.0:2330; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2331; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm12332; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm12333; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm02334; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2335; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm02336; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm02337; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]2338; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm02339; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm12340; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02341; AVX512VPOPCNTDQ-NOBW-NEXT:    retq2342;2343; AVX512VPOPCNTDQ-BW-LABEL: ugt_8_v32i16:2344; AVX512VPOPCNTDQ-BW:       # %bb.0:2345; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2346; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22347; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2348; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2349; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22350; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm02351; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02352; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02353; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02354; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm12355; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02356; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm02357; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02358; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm02359; AVX512VPOPCNTDQ-BW-NEXT:    retq2360;2361; BITALG-LABEL: ugt_8_v32i16:2362; BITALG:       # %bb.0:2363; BITALG-NEXT:    vpopcntw %zmm0, %zmm02364; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02365; BITALG-NEXT:    vpmovm2w %k0, %zmm02366; BITALG-NEXT:    retq2367  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)2368  %3 = icmp ugt <32 x i16> %2, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>2369  %4 = sext <32 x i1> %3 to <32 x i16>2370  ret <32 x i16> %42371}2372 2373define <32 x i16> @ult_9_v32i16(<32 x i16> %0) {2374; AVX512F-LABEL: ult_9_v32i16:2375; AVX512F:       # %bb.0:2376; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2377; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm22378; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2379; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]2380; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm22381; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm42382; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm42383; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42384; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22385; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm42386; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22387; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm22388; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm02389; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm42390; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42391; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm02392; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm02393; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm02394; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm02395; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm12396; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm02397; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm02398; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9]2399; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm02400; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm12401; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02402; AVX512F-NEXT:    retq2403;2404; AVX512BW-LABEL: ult_9_v32i16:2405; AVX512BW:       # %bb.0:2406; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2407; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22408; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2409; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2410; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22411; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm02412; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02413; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02414; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02415; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm12416; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02417; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm02418; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02419; AVX512BW-NEXT:    vpmovm2w %k0, %zmm02420; AVX512BW-NEXT:    retq2421;2422; AVX512VPOPCNTDQ-NOBW-LABEL: ult_9_v32i16:2423; AVX512VPOPCNTDQ-NOBW:       # %bb.0:2424; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2425; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm12426; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm12427; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm02428; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2429; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm02430; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm02431; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9]2432; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm02433; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm12434; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02435; AVX512VPOPCNTDQ-NOBW-NEXT:    retq2436;2437; AVX512VPOPCNTDQ-BW-LABEL: ult_9_v32i16:2438; AVX512VPOPCNTDQ-BW:       # %bb.0:2439; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2440; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22441; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2442; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2443; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22444; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm02445; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02446; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02447; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02448; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm12449; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02450; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm02451; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02452; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm02453; AVX512VPOPCNTDQ-BW-NEXT:    retq2454;2455; BITALG-LABEL: ult_9_v32i16:2456; BITALG:       # %bb.0:2457; BITALG-NEXT:    vpopcntw %zmm0, %zmm02458; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02459; BITALG-NEXT:    vpmovm2w %k0, %zmm02460; BITALG-NEXT:    retq2461  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)2462  %3 = icmp ult <32 x i16> %2, <i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9>2463  %4 = sext <32 x i1> %3 to <32 x i16>2464  ret <32 x i16> %42465}2466 2467define <32 x i16> @ugt_9_v32i16(<32 x i16> %0) {2468; AVX512F-LABEL: ugt_9_v32i16:2469; AVX512F:       # %bb.0:2470; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2471; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm22472; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2473; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]2474; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm22475; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm42476; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm42477; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42478; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22479; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm42480; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22481; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm22482; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm02483; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm42484; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42485; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm02486; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm02487; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm02488; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm02489; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm12490; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm02491; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm02492; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9]2493; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm02494; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm12495; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02496; AVX512F-NEXT:    retq2497;2498; AVX512BW-LABEL: ugt_9_v32i16:2499; AVX512BW:       # %bb.0:2500; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2501; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22502; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2503; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2504; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22505; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm02506; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02507; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02508; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02509; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm12510; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02511; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm02512; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02513; AVX512BW-NEXT:    vpmovm2w %k0, %zmm02514; AVX512BW-NEXT:    retq2515;2516; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_9_v32i16:2517; AVX512VPOPCNTDQ-NOBW:       # %bb.0:2518; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2519; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm12520; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm12521; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm02522; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2523; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm02524; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm02525; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9]2526; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm02527; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm12528; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02529; AVX512VPOPCNTDQ-NOBW-NEXT:    retq2530;2531; AVX512VPOPCNTDQ-BW-LABEL: ugt_9_v32i16:2532; AVX512VPOPCNTDQ-BW:       # %bb.0:2533; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2534; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22535; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2536; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2537; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22538; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm02539; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02540; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02541; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02542; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm12543; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02544; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm02545; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02546; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm02547; AVX512VPOPCNTDQ-BW-NEXT:    retq2548;2549; BITALG-LABEL: ugt_9_v32i16:2550; BITALG:       # %bb.0:2551; BITALG-NEXT:    vpopcntw %zmm0, %zmm02552; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02553; BITALG-NEXT:    vpmovm2w %k0, %zmm02554; BITALG-NEXT:    retq2555  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)2556  %3 = icmp ugt <32 x i16> %2, <i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9>2557  %4 = sext <32 x i1> %3 to <32 x i16>2558  ret <32 x i16> %42559}2560 2561define <32 x i16> @ult_10_v32i16(<32 x i16> %0) {2562; AVX512F-LABEL: ult_10_v32i16:2563; AVX512F:       # %bb.0:2564; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2565; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm22566; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2567; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]2568; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm22569; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm42570; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm42571; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42572; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22573; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm42574; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22575; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm22576; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm02577; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm42578; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42579; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm02580; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm02581; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm02582; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm02583; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm12584; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm02585; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm02586; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]2587; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm02588; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm12589; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02590; AVX512F-NEXT:    retq2591;2592; AVX512BW-LABEL: ult_10_v32i16:2593; AVX512BW:       # %bb.0:2594; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2595; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22596; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2597; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2598; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22599; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm02600; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02601; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02602; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02603; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm12604; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02605; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm02606; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02607; AVX512BW-NEXT:    vpmovm2w %k0, %zmm02608; AVX512BW-NEXT:    retq2609;2610; AVX512VPOPCNTDQ-NOBW-LABEL: ult_10_v32i16:2611; AVX512VPOPCNTDQ-NOBW:       # %bb.0:2612; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2613; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm12614; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm12615; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm02616; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2617; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm02618; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm02619; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]2620; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm02621; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm12622; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02623; AVX512VPOPCNTDQ-NOBW-NEXT:    retq2624;2625; AVX512VPOPCNTDQ-BW-LABEL: ult_10_v32i16:2626; AVX512VPOPCNTDQ-BW:       # %bb.0:2627; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2628; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22629; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2630; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2631; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22632; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm02633; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02634; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02635; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02636; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm12637; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02638; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm02639; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02640; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm02641; AVX512VPOPCNTDQ-BW-NEXT:    retq2642;2643; BITALG-LABEL: ult_10_v32i16:2644; BITALG:       # %bb.0:2645; BITALG-NEXT:    vpopcntw %zmm0, %zmm02646; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02647; BITALG-NEXT:    vpmovm2w %k0, %zmm02648; BITALG-NEXT:    retq2649  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)2650  %3 = icmp ult <32 x i16> %2, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10>2651  %4 = sext <32 x i1> %3 to <32 x i16>2652  ret <32 x i16> %42653}2654 2655define <32 x i16> @ugt_10_v32i16(<32 x i16> %0) {2656; AVX512F-LABEL: ugt_10_v32i16:2657; AVX512F:       # %bb.0:2658; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2659; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm22660; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2661; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]2662; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm22663; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm42664; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm42665; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42666; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22667; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm42668; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22669; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm22670; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm02671; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm42672; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42673; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm02674; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm02675; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm02676; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm02677; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm12678; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm02679; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm02680; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]2681; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm02682; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm12683; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02684; AVX512F-NEXT:    retq2685;2686; AVX512BW-LABEL: ugt_10_v32i16:2687; AVX512BW:       # %bb.0:2688; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2689; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22690; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2691; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2692; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22693; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm02694; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02695; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02696; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02697; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm12698; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02699; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm02700; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02701; AVX512BW-NEXT:    vpmovm2w %k0, %zmm02702; AVX512BW-NEXT:    retq2703;2704; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_10_v32i16:2705; AVX512VPOPCNTDQ-NOBW:       # %bb.0:2706; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2707; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm12708; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm12709; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm02710; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2711; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm02712; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm02713; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]2714; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm02715; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm12716; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02717; AVX512VPOPCNTDQ-NOBW-NEXT:    retq2718;2719; AVX512VPOPCNTDQ-BW-LABEL: ugt_10_v32i16:2720; AVX512VPOPCNTDQ-BW:       # %bb.0:2721; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2722; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22723; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2724; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2725; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22726; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm02727; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02728; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02729; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02730; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm12731; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02732; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm02733; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02734; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm02735; AVX512VPOPCNTDQ-BW-NEXT:    retq2736;2737; BITALG-LABEL: ugt_10_v32i16:2738; BITALG:       # %bb.0:2739; BITALG-NEXT:    vpopcntw %zmm0, %zmm02740; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02741; BITALG-NEXT:    vpmovm2w %k0, %zmm02742; BITALG-NEXT:    retq2743  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)2744  %3 = icmp ugt <32 x i16> %2, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10>2745  %4 = sext <32 x i1> %3 to <32 x i16>2746  ret <32 x i16> %42747}2748 2749define <32 x i16> @ult_11_v32i16(<32 x i16> %0) {2750; AVX512F-LABEL: ult_11_v32i16:2751; AVX512F:       # %bb.0:2752; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2753; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm22754; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2755; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]2756; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm22757; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm42758; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm42759; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42760; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22761; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm42762; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22763; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm22764; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm02765; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm42766; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42767; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm02768; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm02769; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm02770; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm02771; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm12772; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm02773; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm02774; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11]2775; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm02776; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm12777; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02778; AVX512F-NEXT:    retq2779;2780; AVX512BW-LABEL: ult_11_v32i16:2781; AVX512BW:       # %bb.0:2782; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2783; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22784; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2785; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2786; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22787; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm02788; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02789; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02790; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02791; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm12792; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02793; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm02794; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02795; AVX512BW-NEXT:    vpmovm2w %k0, %zmm02796; AVX512BW-NEXT:    retq2797;2798; AVX512VPOPCNTDQ-NOBW-LABEL: ult_11_v32i16:2799; AVX512VPOPCNTDQ-NOBW:       # %bb.0:2800; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2801; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm12802; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm12803; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm02804; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2805; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm02806; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm02807; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11]2808; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm02809; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm12810; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02811; AVX512VPOPCNTDQ-NOBW-NEXT:    retq2812;2813; AVX512VPOPCNTDQ-BW-LABEL: ult_11_v32i16:2814; AVX512VPOPCNTDQ-BW:       # %bb.0:2815; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2816; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22817; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2818; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2819; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22820; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm02821; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02822; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02823; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02824; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm12825; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02826; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm02827; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02828; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm02829; AVX512VPOPCNTDQ-BW-NEXT:    retq2830;2831; BITALG-LABEL: ult_11_v32i16:2832; BITALG:       # %bb.0:2833; BITALG-NEXT:    vpopcntw %zmm0, %zmm02834; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02835; BITALG-NEXT:    vpmovm2w %k0, %zmm02836; BITALG-NEXT:    retq2837  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)2838  %3 = icmp ult <32 x i16> %2, <i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11>2839  %4 = sext <32 x i1> %3 to <32 x i16>2840  ret <32 x i16> %42841}2842 2843define <32 x i16> @ugt_11_v32i16(<32 x i16> %0) {2844; AVX512F-LABEL: ugt_11_v32i16:2845; AVX512F:       # %bb.0:2846; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2847; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm22848; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2849; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]2850; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm22851; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm42852; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm42853; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42854; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22855; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm42856; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22857; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm22858; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm02859; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm42860; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42861; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm02862; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm02863; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm02864; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm02865; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm12866; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm02867; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm02868; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11]2869; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm02870; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm12871; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02872; AVX512F-NEXT:    retq2873;2874; AVX512BW-LABEL: ugt_11_v32i16:2875; AVX512BW:       # %bb.0:2876; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2877; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22878; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2879; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2880; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22881; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm02882; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02883; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02884; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02885; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm12886; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02887; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm02888; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02889; AVX512BW-NEXT:    vpmovm2w %k0, %zmm02890; AVX512BW-NEXT:    retq2891;2892; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_11_v32i16:2893; AVX512VPOPCNTDQ-NOBW:       # %bb.0:2894; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2895; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm12896; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm12897; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm02898; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2899; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm02900; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm02901; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11]2902; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm02903; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm12904; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02905; AVX512VPOPCNTDQ-NOBW-NEXT:    retq2906;2907; AVX512VPOPCNTDQ-BW-LABEL: ugt_11_v32i16:2908; AVX512VPOPCNTDQ-BW:       # %bb.0:2909; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2910; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22911; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2912; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2913; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22914; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm02915; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02916; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02917; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02918; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm12919; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02920; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm02921; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02922; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm02923; AVX512VPOPCNTDQ-BW-NEXT:    retq2924;2925; BITALG-LABEL: ugt_11_v32i16:2926; BITALG:       # %bb.0:2927; BITALG-NEXT:    vpopcntw %zmm0, %zmm02928; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02929; BITALG-NEXT:    vpmovm2w %k0, %zmm02930; BITALG-NEXT:    retq2931  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)2932  %3 = icmp ugt <32 x i16> %2, <i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11>2933  %4 = sext <32 x i1> %3 to <32 x i16>2934  ret <32 x i16> %42935}2936 2937define <32 x i16> @ult_12_v32i16(<32 x i16> %0) {2938; AVX512F-LABEL: ult_12_v32i16:2939; AVX512F:       # %bb.0:2940; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2941; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm22942; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2943; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]2944; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm22945; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm42946; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm42947; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42948; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22949; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm42950; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm22951; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm22952; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm02953; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm42954; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm42955; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm02956; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm02957; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm02958; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm02959; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm12960; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm02961; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm02962; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12]2963; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm02964; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm12965; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02966; AVX512F-NEXT:    retq2967;2968; AVX512BW-LABEL: ult_12_v32i16:2969; AVX512BW:       # %bb.0:2970; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]2971; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm22972; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]2973; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]2974; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm22975; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm02976; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm02977; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm02978; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm02979; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm12980; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm02981; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm02982; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k02983; AVX512BW-NEXT:    vpmovm2w %k0, %zmm02984; AVX512BW-NEXT:    retq2985;2986; AVX512VPOPCNTDQ-NOBW-LABEL: ult_12_v32i16:2987; AVX512VPOPCNTDQ-NOBW:       # %bb.0:2988; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2989; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm12990; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm12991; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm02992; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero2993; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm02994; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm02995; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12]2996; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm02997; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm12998; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm02999; AVX512VPOPCNTDQ-NOBW-NEXT:    retq3000;3001; AVX512VPOPCNTDQ-BW-LABEL: ult_12_v32i16:3002; AVX512VPOPCNTDQ-BW:       # %bb.0:3003; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3004; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23005; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3006; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3007; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23008; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm03009; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03010; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03011; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03012; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm13013; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03014; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm03015; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03016; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm03017; AVX512VPOPCNTDQ-BW-NEXT:    retq3018;3019; BITALG-LABEL: ult_12_v32i16:3020; BITALG:       # %bb.0:3021; BITALG-NEXT:    vpopcntw %zmm0, %zmm03022; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03023; BITALG-NEXT:    vpmovm2w %k0, %zmm03024; BITALG-NEXT:    retq3025  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)3026  %3 = icmp ult <32 x i16> %2, <i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12>3027  %4 = sext <32 x i1> %3 to <32 x i16>3028  ret <32 x i16> %43029}3030 3031define <32 x i16> @ugt_12_v32i16(<32 x i16> %0) {3032; AVX512F-LABEL: ugt_12_v32i16:3033; AVX512F:       # %bb.0:3034; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3035; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm23036; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3037; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]3038; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm23039; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm43040; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm43041; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm43042; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm23043; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm43044; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm23045; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm23046; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm03047; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm43048; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm43049; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm03050; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm03051; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm03052; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm03053; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm13054; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm03055; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm03056; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12]3057; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm03058; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm13059; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm03060; AVX512F-NEXT:    retq3061;3062; AVX512BW-LABEL: ugt_12_v32i16:3063; AVX512BW:       # %bb.0:3064; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3065; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23066; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3067; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3068; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23069; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm03070; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03071; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03072; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03073; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm13074; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03075; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm03076; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03077; AVX512BW-NEXT:    vpmovm2w %k0, %zmm03078; AVX512BW-NEXT:    retq3079;3080; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_12_v32i16:3081; AVX512VPOPCNTDQ-NOBW:       # %bb.0:3082; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero3083; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm13084; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm13085; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm03086; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero3087; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm03088; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm03089; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12]3090; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm03091; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm13092; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm03093; AVX512VPOPCNTDQ-NOBW-NEXT:    retq3094;3095; AVX512VPOPCNTDQ-BW-LABEL: ugt_12_v32i16:3096; AVX512VPOPCNTDQ-BW:       # %bb.0:3097; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3098; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23099; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3100; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3101; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23102; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm03103; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03104; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03105; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03106; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm13107; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03108; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm03109; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03110; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm03111; AVX512VPOPCNTDQ-BW-NEXT:    retq3112;3113; BITALG-LABEL: ugt_12_v32i16:3114; BITALG:       # %bb.0:3115; BITALG-NEXT:    vpopcntw %zmm0, %zmm03116; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03117; BITALG-NEXT:    vpmovm2w %k0, %zmm03118; BITALG-NEXT:    retq3119  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)3120  %3 = icmp ugt <32 x i16> %2, <i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12>3121  %4 = sext <32 x i1> %3 to <32 x i16>3122  ret <32 x i16> %43123}3124 3125define <32 x i16> @ult_13_v32i16(<32 x i16> %0) {3126; AVX512F-LABEL: ult_13_v32i16:3127; AVX512F:       # %bb.0:3128; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3129; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm23130; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3131; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]3132; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm23133; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm43134; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm43135; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm43136; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm23137; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm43138; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm23139; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm23140; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm03141; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm43142; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm43143; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm03144; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm03145; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm03146; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm03147; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm13148; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm03149; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm03150; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13]3151; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm03152; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm13153; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm03154; AVX512F-NEXT:    retq3155;3156; AVX512BW-LABEL: ult_13_v32i16:3157; AVX512BW:       # %bb.0:3158; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3159; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23160; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3161; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3162; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23163; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm03164; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03165; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03166; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03167; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm13168; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03169; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm03170; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03171; AVX512BW-NEXT:    vpmovm2w %k0, %zmm03172; AVX512BW-NEXT:    retq3173;3174; AVX512VPOPCNTDQ-NOBW-LABEL: ult_13_v32i16:3175; AVX512VPOPCNTDQ-NOBW:       # %bb.0:3176; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero3177; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm13178; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm13179; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm03180; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero3181; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm03182; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm03183; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13]3184; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm03185; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm13186; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm03187; AVX512VPOPCNTDQ-NOBW-NEXT:    retq3188;3189; AVX512VPOPCNTDQ-BW-LABEL: ult_13_v32i16:3190; AVX512VPOPCNTDQ-BW:       # %bb.0:3191; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3192; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23193; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3194; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3195; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23196; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm03197; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03198; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03199; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03200; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm13201; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03202; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm03203; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03204; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm03205; AVX512VPOPCNTDQ-BW-NEXT:    retq3206;3207; BITALG-LABEL: ult_13_v32i16:3208; BITALG:       # %bb.0:3209; BITALG-NEXT:    vpopcntw %zmm0, %zmm03210; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03211; BITALG-NEXT:    vpmovm2w %k0, %zmm03212; BITALG-NEXT:    retq3213  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)3214  %3 = icmp ult <32 x i16> %2, <i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13>3215  %4 = sext <32 x i1> %3 to <32 x i16>3216  ret <32 x i16> %43217}3218 3219define <32 x i16> @ugt_13_v32i16(<32 x i16> %0) {3220; AVX512F-LABEL: ugt_13_v32i16:3221; AVX512F:       # %bb.0:3222; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3223; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm23224; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3225; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]3226; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm23227; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm43228; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm43229; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm43230; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm23231; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm43232; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm23233; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm23234; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm03235; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm43236; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm43237; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm03238; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm03239; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm03240; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm03241; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm13242; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm03243; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm03244; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13]3245; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm03246; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm13247; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm03248; AVX512F-NEXT:    retq3249;3250; AVX512BW-LABEL: ugt_13_v32i16:3251; AVX512BW:       # %bb.0:3252; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3253; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23254; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3255; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3256; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23257; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm03258; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03259; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03260; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03261; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm13262; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03263; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm03264; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03265; AVX512BW-NEXT:    vpmovm2w %k0, %zmm03266; AVX512BW-NEXT:    retq3267;3268; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_13_v32i16:3269; AVX512VPOPCNTDQ-NOBW:       # %bb.0:3270; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero3271; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm13272; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm13273; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm03274; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero3275; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm03276; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm03277; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13]3278; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm03279; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm13280; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm03281; AVX512VPOPCNTDQ-NOBW-NEXT:    retq3282;3283; AVX512VPOPCNTDQ-BW-LABEL: ugt_13_v32i16:3284; AVX512VPOPCNTDQ-BW:       # %bb.0:3285; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3286; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23287; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3288; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3289; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23290; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm03291; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03292; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03293; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03294; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm13295; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03296; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm03297; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03298; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm03299; AVX512VPOPCNTDQ-BW-NEXT:    retq3300;3301; BITALG-LABEL: ugt_13_v32i16:3302; BITALG:       # %bb.0:3303; BITALG-NEXT:    vpopcntw %zmm0, %zmm03304; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03305; BITALG-NEXT:    vpmovm2w %k0, %zmm03306; BITALG-NEXT:    retq3307  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)3308  %3 = icmp ugt <32 x i16> %2, <i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13>3309  %4 = sext <32 x i1> %3 to <32 x i16>3310  ret <32 x i16> %43311}3312 3313define <32 x i16> @ult_14_v32i16(<32 x i16> %0) {3314; AVX512F-LABEL: ult_14_v32i16:3315; AVX512F:       # %bb.0:3316; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3317; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm23318; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3319; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]3320; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm23321; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm43322; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm43323; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm43324; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm23325; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm43326; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm23327; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm23328; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm03329; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm43330; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm43331; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm03332; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm03333; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm03334; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm03335; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm13336; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm03337; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm03338; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14]3339; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm03340; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm13341; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm03342; AVX512F-NEXT:    retq3343;3344; AVX512BW-LABEL: ult_14_v32i16:3345; AVX512BW:       # %bb.0:3346; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3347; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23348; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3349; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3350; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23351; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm03352; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03353; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03354; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03355; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm13356; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03357; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm03358; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03359; AVX512BW-NEXT:    vpmovm2w %k0, %zmm03360; AVX512BW-NEXT:    retq3361;3362; AVX512VPOPCNTDQ-NOBW-LABEL: ult_14_v32i16:3363; AVX512VPOPCNTDQ-NOBW:       # %bb.0:3364; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero3365; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm13366; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm13367; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm03368; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero3369; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm03370; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm03371; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14]3372; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm03373; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm13374; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm03375; AVX512VPOPCNTDQ-NOBW-NEXT:    retq3376;3377; AVX512VPOPCNTDQ-BW-LABEL: ult_14_v32i16:3378; AVX512VPOPCNTDQ-BW:       # %bb.0:3379; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3380; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23381; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3382; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3383; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23384; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm03385; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03386; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03387; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03388; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm13389; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03390; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm03391; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03392; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm03393; AVX512VPOPCNTDQ-BW-NEXT:    retq3394;3395; BITALG-LABEL: ult_14_v32i16:3396; BITALG:       # %bb.0:3397; BITALG-NEXT:    vpopcntw %zmm0, %zmm03398; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03399; BITALG-NEXT:    vpmovm2w %k0, %zmm03400; BITALG-NEXT:    retq3401  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)3402  %3 = icmp ult <32 x i16> %2, <i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14>3403  %4 = sext <32 x i1> %3 to <32 x i16>3404  ret <32 x i16> %43405}3406 3407define <32 x i16> @ugt_14_v32i16(<32 x i16> %0) {3408; AVX512F-LABEL: ugt_14_v32i16:3409; AVX512F:       # %bb.0:3410; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3411; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm23412; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3413; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]3414; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm23415; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm43416; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm43417; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm43418; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm23419; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm43420; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm23421; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm23422; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm03423; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm43424; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm43425; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm03426; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm03427; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm03428; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm03429; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm13430; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm03431; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm03432; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14]3433; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm0, %ymm03434; AVX512F-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm13435; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm03436; AVX512F-NEXT:    retq3437;3438; AVX512BW-LABEL: ugt_14_v32i16:3439; AVX512BW:       # %bb.0:3440; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3441; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23442; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3443; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3444; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23445; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm03446; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03447; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03448; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03449; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm13450; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03451; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm03452; AVX512BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03453; AVX512BW-NEXT:    vpmovm2w %k0, %zmm03454; AVX512BW-NEXT:    retq3455;3456; AVX512VPOPCNTDQ-NOBW-LABEL: ugt_14_v32i16:3457; AVX512VPOPCNTDQ-NOBW:       # %bb.0:3458; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero3459; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm13460; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm13461; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm03462; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero3463; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm03464; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm03465; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14]3466; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm0, %ymm03467; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm13468; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm03469; AVX512VPOPCNTDQ-NOBW-NEXT:    retq3470;3471; AVX512VPOPCNTDQ-BW-LABEL: ugt_14_v32i16:3472; AVX512VPOPCNTDQ-BW:       # %bb.0:3473; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3474; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23475; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3476; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3477; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23478; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm03479; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03480; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03481; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03482; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm13483; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03484; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm03485; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03486; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm03487; AVX512VPOPCNTDQ-BW-NEXT:    retq3488;3489; BITALG-LABEL: ugt_14_v32i16:3490; BITALG:       # %bb.0:3491; BITALG-NEXT:    vpopcntw %zmm0, %zmm03492; BITALG-NEXT:    vpcmpgtw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03493; BITALG-NEXT:    vpmovm2w %k0, %zmm03494; BITALG-NEXT:    retq3495  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)3496  %3 = icmp ugt <32 x i16> %2, <i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14>3497  %4 = sext <32 x i1> %3 to <32 x i16>3498  ret <32 x i16> %43499}3500 3501define <32 x i16> @ult_15_v32i16(<32 x i16> %0) {3502; AVX512F-LABEL: ult_15_v32i16:3503; AVX512F:       # %bb.0:3504; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3505; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm23506; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3507; AVX512F-NEXT:    # ymm3 = mem[0,1,0,1]3508; AVX512F-NEXT:    vpshufb %ymm2, %ymm3, %ymm23509; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm43510; AVX512F-NEXT:    vpand %ymm1, %ymm4, %ymm43511; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm43512; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm23513; AVX512F-NEXT:    vpsllw $8, %ymm2, %ymm43514; AVX512F-NEXT:    vpaddb %ymm2, %ymm4, %ymm23515; AVX512F-NEXT:    vpsrlw $8, %ymm2, %ymm23516; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm03517; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm43518; AVX512F-NEXT:    vpshufb %ymm4, %ymm3, %ymm43519; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm03520; AVX512F-NEXT:    vpand %ymm1, %ymm0, %ymm03521; AVX512F-NEXT:    vpshufb %ymm0, %ymm3, %ymm03522; AVX512F-NEXT:    vpaddb %ymm4, %ymm0, %ymm03523; AVX512F-NEXT:    vpsllw $8, %ymm0, %ymm13524; AVX512F-NEXT:    vpaddb %ymm0, %ymm1, %ymm03525; AVX512F-NEXT:    vpsrlw $8, %ymm0, %ymm03526; AVX512F-NEXT:    vpbroadcastw {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3527; AVX512F-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm03528; AVX512F-NEXT:    vpcmpgtw %ymm2, %ymm1, %ymm13529; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm03530; AVX512F-NEXT:    retq3531;3532; AVX512BW-LABEL: ult_15_v32i16:3533; AVX512BW:       # %bb.0:3534; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3535; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23536; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3537; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3538; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23539; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm03540; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03541; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03542; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03543; AVX512BW-NEXT:    vpsllw $8, %zmm0, %zmm13544; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03545; AVX512BW-NEXT:    vpsrlw $8, %zmm0, %zmm03546; AVX512BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03547; AVX512BW-NEXT:    vpmovm2w %k0, %zmm03548; AVX512BW-NEXT:    retq3549;3550; AVX512VPOPCNTDQ-NOBW-LABEL: ult_15_v32i16:3551; AVX512VPOPCNTDQ-NOBW:       # %bb.0:3552; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm1 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero3553; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm1, %zmm13554; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm1, %ymm13555; AVX512VPOPCNTDQ-NOBW-NEXT:    vextracti64x4 $1, %zmm0, %ymm03556; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero3557; AVX512VPOPCNTDQ-NOBW-NEXT:    vpopcntd %zmm0, %zmm03558; AVX512VPOPCNTDQ-NOBW-NEXT:    vpmovdw %zmm0, %ymm03559; AVX512VPOPCNTDQ-NOBW-NEXT:    vpbroadcastw {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3560; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm0, %ymm2, %ymm03561; AVX512VPOPCNTDQ-NOBW-NEXT:    vpcmpgtw %ymm1, %ymm2, %ymm13562; AVX512VPOPCNTDQ-NOBW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm03563; AVX512VPOPCNTDQ-NOBW-NEXT:    retq3564;3565; AVX512VPOPCNTDQ-BW-LABEL: ult_15_v32i16:3566; AVX512VPOPCNTDQ-BW:       # %bb.0:3567; AVX512VPOPCNTDQ-BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3568; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23569; AVX512VPOPCNTDQ-BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3570; AVX512VPOPCNTDQ-BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3571; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23572; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $4, %zmm0, %zmm03573; AVX512VPOPCNTDQ-BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03574; AVX512VPOPCNTDQ-BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03575; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03576; AVX512VPOPCNTDQ-BW-NEXT:    vpsllw $8, %zmm0, %zmm13577; AVX512VPOPCNTDQ-BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm03578; AVX512VPOPCNTDQ-BW-NEXT:    vpsrlw $8, %zmm0, %zmm03579; AVX512VPOPCNTDQ-BW-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03580; AVX512VPOPCNTDQ-BW-NEXT:    vpmovm2w %k0, %zmm03581; AVX512VPOPCNTDQ-BW-NEXT:    retq3582;3583; BITALG-LABEL: ult_15_v32i16:3584; BITALG:       # %bb.0:3585; BITALG-NEXT:    vpopcntw %zmm0, %zmm03586; BITALG-NEXT:    vpcmpltw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %k03587; BITALG-NEXT:    vpmovm2w %k0, %zmm03588; BITALG-NEXT:    retq3589  %2 = tail call <32 x i16> @llvm.ctpop.v32i16(<32 x i16> %0)3590  %3 = icmp ult <32 x i16> %2, <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15>3591  %4 = sext <32 x i1> %3 to <32 x i16>3592  ret <32 x i16> %43593}3594 3595define <16 x i32> @ugt_1_v16i32(<16 x i32> %0) {3596; AVX512F-LABEL: ugt_1_v16i32:3597; AVX512F:       # %bb.0:3598; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm1 = -13599; AVX512F-NEXT:    vpaddd %zmm1, %zmm0, %zmm13600; AVX512F-NEXT:    vptestmd %zmm1, %zmm0, %k13601; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13602; AVX512F-NEXT:    retq3603;3604; AVX512BW-LABEL: ugt_1_v16i32:3605; AVX512BW:       # %bb.0:3606; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm1 = -13607; AVX512BW-NEXT:    vpaddd %zmm1, %zmm0, %zmm13608; AVX512BW-NEXT:    vptestmd %zmm1, %zmm0, %k13609; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13610; AVX512BW-NEXT:    retq3611;3612; AVX512VPOPCNTDQ-LABEL: ugt_1_v16i32:3613; AVX512VPOPCNTDQ:       # %bb.0:3614; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm03615; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13616; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13617; AVX512VPOPCNTDQ-NEXT:    retq3618;3619; BITALG-LABEL: ugt_1_v16i32:3620; BITALG:       # %bb.0:3621; BITALG-NEXT:    vpternlogd {{.*#+}} zmm1 = -13622; BITALG-NEXT:    vpaddd %zmm1, %zmm0, %zmm13623; BITALG-NEXT:    vptestmd %zmm1, %zmm0, %k13624; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13625; BITALG-NEXT:    retq3626  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)3627  %3 = icmp ugt <16 x i32> %2, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>3628  %4 = sext <16 x i1> %3 to <16 x i32>3629  ret <16 x i32> %43630}3631 3632define <16 x i32> @ult_2_v16i32(<16 x i32> %0) {3633; AVX512F-LABEL: ult_2_v16i32:3634; AVX512F:       # %bb.0:3635; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm1 = -13636; AVX512F-NEXT:    vpaddd %zmm1, %zmm0, %zmm13637; AVX512F-NEXT:    vptestnmd %zmm1, %zmm0, %k13638; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13639; AVX512F-NEXT:    retq3640;3641; AVX512BW-LABEL: ult_2_v16i32:3642; AVX512BW:       # %bb.0:3643; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm1 = -13644; AVX512BW-NEXT:    vpaddd %zmm1, %zmm0, %zmm13645; AVX512BW-NEXT:    vptestnmd %zmm1, %zmm0, %k13646; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13647; AVX512BW-NEXT:    retq3648;3649; AVX512VPOPCNTDQ-LABEL: ult_2_v16i32:3650; AVX512VPOPCNTDQ:       # %bb.0:3651; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm03652; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13653; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13654; AVX512VPOPCNTDQ-NEXT:    retq3655;3656; BITALG-LABEL: ult_2_v16i32:3657; BITALG:       # %bb.0:3658; BITALG-NEXT:    vpternlogd {{.*#+}} zmm1 = -13659; BITALG-NEXT:    vpaddd %zmm1, %zmm0, %zmm13660; BITALG-NEXT:    vptestnmd %zmm1, %zmm0, %k13661; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13662; BITALG-NEXT:    retq3663  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)3664  %3 = icmp ult <16 x i32> %2, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2>3665  %4 = sext <16 x i1> %3 to <16 x i32>3666  ret <16 x i32> %43667}3668 3669define <16 x i32> @ugt_2_v16i32(<16 x i32> %0) {3670; AVX512F-LABEL: ugt_2_v16i32:3671; AVX512F:       # %bb.0:3672; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm13673; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3674; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm33675; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3676; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]3677; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm33678; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm13679; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm13680; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm13681; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm13682; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm33683; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]3684; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm53685; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]3686; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm13687; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm13688; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm53689; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm53690; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm03691; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm03692; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm03693; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm03694; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]3695; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm23696; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]3697; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm03698; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm03699; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm03700; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13701; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13702; AVX512F-NEXT:    retq3703;3704; AVX512BW-LABEL: ugt_2_v16i32:3705; AVX512BW:       # %bb.0:3706; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3707; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23708; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3709; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3710; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23711; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm03712; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03713; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03714; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03715; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm13716; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]3717; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm23718; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]3719; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm03720; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm03721; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13722; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13723; AVX512BW-NEXT:    retq3724;3725; AVX512VPOPCNTDQ-LABEL: ugt_2_v16i32:3726; AVX512VPOPCNTDQ:       # %bb.0:3727; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm03728; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13729; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13730; AVX512VPOPCNTDQ-NEXT:    retq3731;3732; BITALG-LABEL: ugt_2_v16i32:3733; BITALG:       # %bb.0:3734; BITALG-NEXT:    vpopcntb %zmm0, %zmm03735; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm13736; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]3737; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm23738; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]3739; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm03740; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm03741; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13742; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13743; BITALG-NEXT:    retq3744  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)3745  %3 = icmp ugt <16 x i32> %2, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2>3746  %4 = sext <16 x i1> %3 to <16 x i32>3747  ret <16 x i32> %43748}3749 3750define <16 x i32> @ult_3_v16i32(<16 x i32> %0) {3751; AVX512F-LABEL: ult_3_v16i32:3752; AVX512F:       # %bb.0:3753; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm13754; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3755; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm33756; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3757; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]3758; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm33759; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm13760; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm13761; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm13762; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm13763; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm33764; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]3765; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm53766; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]3767; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm13768; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm13769; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm53770; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm53771; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm03772; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm03773; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm03774; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm03775; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]3776; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm23777; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]3778; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm03779; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm03780; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm03781; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13782; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13783; AVX512F-NEXT:    retq3784;3785; AVX512BW-LABEL: ult_3_v16i32:3786; AVX512BW:       # %bb.0:3787; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3788; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23789; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3790; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3791; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23792; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm03793; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03794; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03795; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03796; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm13797; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]3798; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm23799; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]3800; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm03801; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm03802; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13803; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13804; AVX512BW-NEXT:    retq3805;3806; AVX512VPOPCNTDQ-LABEL: ult_3_v16i32:3807; AVX512VPOPCNTDQ:       # %bb.0:3808; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm03809; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13810; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13811; AVX512VPOPCNTDQ-NEXT:    retq3812;3813; BITALG-LABEL: ult_3_v16i32:3814; BITALG:       # %bb.0:3815; BITALG-NEXT:    vpopcntb %zmm0, %zmm03816; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm13817; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]3818; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm23819; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]3820; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm03821; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm03822; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13823; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13824; BITALG-NEXT:    retq3825  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)3826  %3 = icmp ult <16 x i32> %2, <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>3827  %4 = sext <16 x i1> %3 to <16 x i32>3828  ret <16 x i32> %43829}3830 3831define <16 x i32> @ugt_3_v16i32(<16 x i32> %0) {3832; AVX512F-LABEL: ugt_3_v16i32:3833; AVX512F:       # %bb.0:3834; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm13835; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3836; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm33837; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3838; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]3839; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm33840; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm13841; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm13842; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm13843; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm13844; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm33845; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]3846; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm53847; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]3848; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm13849; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm13850; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm53851; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm53852; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm03853; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm03854; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm03855; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm03856; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]3857; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm23858; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]3859; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm03860; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm03861; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm03862; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13863; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13864; AVX512F-NEXT:    retq3865;3866; AVX512BW-LABEL: ugt_3_v16i32:3867; AVX512BW:       # %bb.0:3868; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3869; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23870; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3871; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3872; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23873; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm03874; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03875; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03876; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03877; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm13878; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]3879; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm23880; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]3881; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm03882; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm03883; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13884; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13885; AVX512BW-NEXT:    retq3886;3887; AVX512VPOPCNTDQ-LABEL: ugt_3_v16i32:3888; AVX512VPOPCNTDQ:       # %bb.0:3889; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm03890; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13891; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13892; AVX512VPOPCNTDQ-NEXT:    retq3893;3894; BITALG-LABEL: ugt_3_v16i32:3895; BITALG:       # %bb.0:3896; BITALG-NEXT:    vpopcntb %zmm0, %zmm03897; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm13898; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]3899; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm23900; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]3901; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm03902; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm03903; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13904; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13905; BITALG-NEXT:    retq3906  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)3907  %3 = icmp ugt <16 x i32> %2, <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>3908  %4 = sext <16 x i1> %3 to <16 x i32>3909  ret <16 x i32> %43910}3911 3912define <16 x i32> @ult_4_v16i32(<16 x i32> %0) {3913; AVX512F-LABEL: ult_4_v16i32:3914; AVX512F:       # %bb.0:3915; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm13916; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3917; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm33918; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3919; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]3920; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm33921; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm13922; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm13923; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm13924; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm13925; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm33926; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]3927; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm53928; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]3929; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm13930; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm13931; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm53932; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm53933; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm03934; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm03935; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm03936; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm03937; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]3938; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm23939; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]3940; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm03941; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm03942; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm03943; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13944; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13945; AVX512F-NEXT:    retq3946;3947; AVX512BW-LABEL: ult_4_v16i32:3948; AVX512BW:       # %bb.0:3949; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3950; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm23951; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]3952; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]3953; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm23954; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm03955; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm03956; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm03957; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm03958; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm13959; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]3960; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm23961; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]3962; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm03963; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm03964; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13965; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13966; AVX512BW-NEXT:    retq3967;3968; AVX512VPOPCNTDQ-LABEL: ult_4_v16i32:3969; AVX512VPOPCNTDQ:       # %bb.0:3970; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm03971; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13972; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13973; AVX512VPOPCNTDQ-NEXT:    retq3974;3975; BITALG-LABEL: ult_4_v16i32:3976; BITALG:       # %bb.0:3977; BITALG-NEXT:    vpopcntb %zmm0, %zmm03978; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm13979; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]3980; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm23981; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]3982; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm03983; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm03984; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k13985; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -13986; BITALG-NEXT:    retq3987  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)3988  %3 = icmp ult <16 x i32> %2, <i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4>3989  %4 = sext <16 x i1> %3 to <16 x i32>3990  ret <16 x i32> %43991}3992 3993define <16 x i32> @ugt_4_v16i32(<16 x i32> %0) {3994; AVX512F-LABEL: ugt_4_v16i32:3995; AVX512F:       # %bb.0:3996; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm13997; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]3998; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm33999; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4000; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4001; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34002; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14003; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14004; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14005; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14006; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34007; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4008; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54009; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4010; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14011; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14012; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54013; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54014; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04015; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04016; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04017; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04018; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4019; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24020; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4021; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04022; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04023; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04024; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14025; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14026; AVX512F-NEXT:    retq4027;4028; AVX512BW-LABEL: ugt_4_v16i32:4029; AVX512BW:       # %bb.0:4030; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4031; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm24032; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4033; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]4034; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm24035; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm04036; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm04037; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm04038; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm04039; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm14040; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4041; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24042; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4043; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04044; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04045; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14046; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14047; AVX512BW-NEXT:    retq4048;4049; AVX512VPOPCNTDQ-LABEL: ugt_4_v16i32:4050; AVX512VPOPCNTDQ:       # %bb.0:4051; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm04052; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14053; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14054; AVX512VPOPCNTDQ-NEXT:    retq4055;4056; BITALG-LABEL: ugt_4_v16i32:4057; BITALG:       # %bb.0:4058; BITALG-NEXT:    vpopcntb %zmm0, %zmm04059; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm14060; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4061; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24062; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4063; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04064; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04065; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14066; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14067; BITALG-NEXT:    retq4068  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)4069  %3 = icmp ugt <16 x i32> %2, <i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4>4070  %4 = sext <16 x i1> %3 to <16 x i32>4071  ret <16 x i32> %44072}4073 4074define <16 x i32> @ult_5_v16i32(<16 x i32> %0) {4075; AVX512F-LABEL: ult_5_v16i32:4076; AVX512F:       # %bb.0:4077; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm14078; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4079; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm34080; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4081; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4082; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34083; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14084; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14085; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14086; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14087; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34088; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4089; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54090; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4091; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14092; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14093; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54094; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54095; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04096; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04097; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04098; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04099; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4100; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24101; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4102; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04103; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04104; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04105; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14106; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14107; AVX512F-NEXT:    retq4108;4109; AVX512BW-LABEL: ult_5_v16i32:4110; AVX512BW:       # %bb.0:4111; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4112; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm24113; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4114; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]4115; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm24116; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm04117; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm04118; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm04119; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm04120; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm14121; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4122; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24123; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4124; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04125; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04126; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14127; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14128; AVX512BW-NEXT:    retq4129;4130; AVX512VPOPCNTDQ-LABEL: ult_5_v16i32:4131; AVX512VPOPCNTDQ:       # %bb.0:4132; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm04133; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14134; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14135; AVX512VPOPCNTDQ-NEXT:    retq4136;4137; BITALG-LABEL: ult_5_v16i32:4138; BITALG:       # %bb.0:4139; BITALG-NEXT:    vpopcntb %zmm0, %zmm04140; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm14141; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4142; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24143; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4144; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04145; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04146; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14147; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14148; BITALG-NEXT:    retq4149  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)4150  %3 = icmp ult <16 x i32> %2, <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>4151  %4 = sext <16 x i1> %3 to <16 x i32>4152  ret <16 x i32> %44153}4154 4155define <16 x i32> @ugt_5_v16i32(<16 x i32> %0) {4156; AVX512F-LABEL: ugt_5_v16i32:4157; AVX512F:       # %bb.0:4158; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm14159; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4160; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm34161; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4162; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4163; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34164; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14165; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14166; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14167; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14168; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34169; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4170; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54171; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4172; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14173; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14174; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54175; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54176; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04177; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04178; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04179; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04180; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4181; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24182; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4183; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04184; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04185; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04186; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14187; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14188; AVX512F-NEXT:    retq4189;4190; AVX512BW-LABEL: ugt_5_v16i32:4191; AVX512BW:       # %bb.0:4192; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4193; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm24194; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4195; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]4196; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm24197; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm04198; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm04199; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm04200; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm04201; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm14202; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4203; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24204; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4205; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04206; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04207; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14208; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14209; AVX512BW-NEXT:    retq4210;4211; AVX512VPOPCNTDQ-LABEL: ugt_5_v16i32:4212; AVX512VPOPCNTDQ:       # %bb.0:4213; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm04214; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14215; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14216; AVX512VPOPCNTDQ-NEXT:    retq4217;4218; BITALG-LABEL: ugt_5_v16i32:4219; BITALG:       # %bb.0:4220; BITALG-NEXT:    vpopcntb %zmm0, %zmm04221; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm14222; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4223; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24224; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4225; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04226; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04227; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14228; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14229; BITALG-NEXT:    retq4230  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)4231  %3 = icmp ugt <16 x i32> %2, <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>4232  %4 = sext <16 x i1> %3 to <16 x i32>4233  ret <16 x i32> %44234}4235 4236define <16 x i32> @ult_6_v16i32(<16 x i32> %0) {4237; AVX512F-LABEL: ult_6_v16i32:4238; AVX512F:       # %bb.0:4239; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm14240; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4241; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm34242; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4243; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4244; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34245; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14246; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14247; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14248; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14249; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34250; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4251; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54252; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4253; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14254; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14255; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54256; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54257; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04258; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04259; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04260; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04261; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4262; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24263; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4264; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04265; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04266; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04267; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14268; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14269; AVX512F-NEXT:    retq4270;4271; AVX512BW-LABEL: ult_6_v16i32:4272; AVX512BW:       # %bb.0:4273; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4274; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm24275; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4276; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]4277; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm24278; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm04279; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm04280; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm04281; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm04282; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm14283; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4284; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24285; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4286; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04287; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04288; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14289; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14290; AVX512BW-NEXT:    retq4291;4292; AVX512VPOPCNTDQ-LABEL: ult_6_v16i32:4293; AVX512VPOPCNTDQ:       # %bb.0:4294; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm04295; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14296; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14297; AVX512VPOPCNTDQ-NEXT:    retq4298;4299; BITALG-LABEL: ult_6_v16i32:4300; BITALG:       # %bb.0:4301; BITALG-NEXT:    vpopcntb %zmm0, %zmm04302; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm14303; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4304; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24305; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4306; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04307; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04308; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14309; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14310; BITALG-NEXT:    retq4311  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)4312  %3 = icmp ult <16 x i32> %2, <i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6>4313  %4 = sext <16 x i1> %3 to <16 x i32>4314  ret <16 x i32> %44315}4316 4317define <16 x i32> @ugt_6_v16i32(<16 x i32> %0) {4318; AVX512F-LABEL: ugt_6_v16i32:4319; AVX512F:       # %bb.0:4320; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm14321; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4322; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm34323; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4324; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4325; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34326; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14327; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14328; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14329; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14330; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34331; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4332; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54333; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4334; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14335; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14336; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54337; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54338; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04339; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04340; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04341; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04342; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4343; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24344; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4345; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04346; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04347; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04348; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14349; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14350; AVX512F-NEXT:    retq4351;4352; AVX512BW-LABEL: ugt_6_v16i32:4353; AVX512BW:       # %bb.0:4354; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4355; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm24356; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4357; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]4358; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm24359; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm04360; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm04361; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm04362; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm04363; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm14364; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4365; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24366; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4367; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04368; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04369; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14370; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14371; AVX512BW-NEXT:    retq4372;4373; AVX512VPOPCNTDQ-LABEL: ugt_6_v16i32:4374; AVX512VPOPCNTDQ:       # %bb.0:4375; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm04376; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14377; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14378; AVX512VPOPCNTDQ-NEXT:    retq4379;4380; BITALG-LABEL: ugt_6_v16i32:4381; BITALG:       # %bb.0:4382; BITALG-NEXT:    vpopcntb %zmm0, %zmm04383; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm14384; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4385; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24386; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4387; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04388; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04389; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14390; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14391; BITALG-NEXT:    retq4392  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)4393  %3 = icmp ugt <16 x i32> %2, <i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6>4394  %4 = sext <16 x i1> %3 to <16 x i32>4395  ret <16 x i32> %44396}4397 4398define <16 x i32> @ult_7_v16i32(<16 x i32> %0) {4399; AVX512F-LABEL: ult_7_v16i32:4400; AVX512F:       # %bb.0:4401; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm14402; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4403; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm34404; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4405; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4406; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34407; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14408; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14409; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14410; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14411; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34412; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4413; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54414; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4415; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14416; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14417; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54418; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54419; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04420; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04421; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04422; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04423; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4424; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24425; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4426; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04427; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04428; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04429; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14430; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14431; AVX512F-NEXT:    retq4432;4433; AVX512BW-LABEL: ult_7_v16i32:4434; AVX512BW:       # %bb.0:4435; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4436; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm24437; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4438; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]4439; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm24440; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm04441; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm04442; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm04443; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm04444; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm14445; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4446; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24447; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4448; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04449; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04450; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14451; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14452; AVX512BW-NEXT:    retq4453;4454; AVX512VPOPCNTDQ-LABEL: ult_7_v16i32:4455; AVX512VPOPCNTDQ:       # %bb.0:4456; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm04457; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14458; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14459; AVX512VPOPCNTDQ-NEXT:    retq4460;4461; BITALG-LABEL: ult_7_v16i32:4462; BITALG:       # %bb.0:4463; BITALG-NEXT:    vpopcntb %zmm0, %zmm04464; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm14465; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4466; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24467; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4468; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04469; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04470; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14471; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14472; BITALG-NEXT:    retq4473  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)4474  %3 = icmp ult <16 x i32> %2, <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>4475  %4 = sext <16 x i1> %3 to <16 x i32>4476  ret <16 x i32> %44477}4478 4479define <16 x i32> @ugt_7_v16i32(<16 x i32> %0) {4480; AVX512F-LABEL: ugt_7_v16i32:4481; AVX512F:       # %bb.0:4482; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm14483; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4484; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm34485; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4486; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4487; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34488; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14489; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14490; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14491; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14492; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34493; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4494; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54495; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4496; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14497; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14498; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54499; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54500; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04501; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04502; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04503; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04504; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4505; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24506; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4507; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04508; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04509; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04510; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14511; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14512; AVX512F-NEXT:    retq4513;4514; AVX512BW-LABEL: ugt_7_v16i32:4515; AVX512BW:       # %bb.0:4516; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4517; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm24518; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4519; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]4520; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm24521; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm04522; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm04523; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm04524; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm04525; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm14526; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4527; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24528; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4529; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04530; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04531; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14532; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14533; AVX512BW-NEXT:    retq4534;4535; AVX512VPOPCNTDQ-LABEL: ugt_7_v16i32:4536; AVX512VPOPCNTDQ:       # %bb.0:4537; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm04538; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14539; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14540; AVX512VPOPCNTDQ-NEXT:    retq4541;4542; BITALG-LABEL: ugt_7_v16i32:4543; BITALG:       # %bb.0:4544; BITALG-NEXT:    vpopcntb %zmm0, %zmm04545; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm14546; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4547; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24548; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4549; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04550; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04551; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14552; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14553; BITALG-NEXT:    retq4554  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)4555  %3 = icmp ugt <16 x i32> %2, <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>4556  %4 = sext <16 x i1> %3 to <16 x i32>4557  ret <16 x i32> %44558}4559 4560define <16 x i32> @ult_8_v16i32(<16 x i32> %0) {4561; AVX512F-LABEL: ult_8_v16i32:4562; AVX512F:       # %bb.0:4563; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm14564; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4565; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm34566; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4567; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4568; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34569; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14570; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14571; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14572; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14573; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34574; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4575; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54576; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4577; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14578; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14579; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54580; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54581; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04582; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04583; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04584; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04585; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4586; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24587; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4588; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04589; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04590; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04591; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14592; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14593; AVX512F-NEXT:    retq4594;4595; AVX512BW-LABEL: ult_8_v16i32:4596; AVX512BW:       # %bb.0:4597; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4598; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm24599; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4600; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]4601; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm24602; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm04603; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm04604; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm04605; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm04606; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm14607; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4608; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24609; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4610; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04611; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04612; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14613; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14614; AVX512BW-NEXT:    retq4615;4616; AVX512VPOPCNTDQ-LABEL: ult_8_v16i32:4617; AVX512VPOPCNTDQ:       # %bb.0:4618; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm04619; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14620; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14621; AVX512VPOPCNTDQ-NEXT:    retq4622;4623; BITALG-LABEL: ult_8_v16i32:4624; BITALG:       # %bb.0:4625; BITALG-NEXT:    vpopcntb %zmm0, %zmm04626; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm14627; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4628; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24629; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4630; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04631; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04632; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14633; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14634; BITALG-NEXT:    retq4635  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)4636  %3 = icmp ult <16 x i32> %2, <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>4637  %4 = sext <16 x i1> %3 to <16 x i32>4638  ret <16 x i32> %44639}4640 4641define <16 x i32> @ugt_8_v16i32(<16 x i32> %0) {4642; AVX512F-LABEL: ugt_8_v16i32:4643; AVX512F:       # %bb.0:4644; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm14645; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4646; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm34647; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4648; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4649; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34650; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14651; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14652; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14653; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14654; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34655; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4656; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54657; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4658; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14659; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14660; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54661; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54662; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04663; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04664; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04665; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04666; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4667; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24668; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4669; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04670; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04671; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04672; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14673; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14674; AVX512F-NEXT:    retq4675;4676; AVX512BW-LABEL: ugt_8_v16i32:4677; AVX512BW:       # %bb.0:4678; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4679; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm24680; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4681; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]4682; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm24683; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm04684; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm04685; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm04686; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm04687; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm14688; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4689; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24690; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4691; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04692; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04693; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14694; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14695; AVX512BW-NEXT:    retq4696;4697; AVX512VPOPCNTDQ-LABEL: ugt_8_v16i32:4698; AVX512VPOPCNTDQ:       # %bb.0:4699; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm04700; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14701; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14702; AVX512VPOPCNTDQ-NEXT:    retq4703;4704; BITALG-LABEL: ugt_8_v16i32:4705; BITALG:       # %bb.0:4706; BITALG-NEXT:    vpopcntb %zmm0, %zmm04707; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm14708; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4709; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24710; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4711; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04712; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04713; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14714; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14715; BITALG-NEXT:    retq4716  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)4717  %3 = icmp ugt <16 x i32> %2, <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>4718  %4 = sext <16 x i1> %3 to <16 x i32>4719  ret <16 x i32> %44720}4721 4722define <16 x i32> @ult_9_v16i32(<16 x i32> %0) {4723; AVX512F-LABEL: ult_9_v16i32:4724; AVX512F:       # %bb.0:4725; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm14726; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4727; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm34728; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4729; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4730; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34731; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14732; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14733; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14734; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14735; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34736; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4737; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54738; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4739; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14740; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14741; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54742; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54743; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04744; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04745; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04746; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04747; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4748; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24749; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4750; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04751; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04752; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04753; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14754; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14755; AVX512F-NEXT:    retq4756;4757; AVX512BW-LABEL: ult_9_v16i32:4758; AVX512BW:       # %bb.0:4759; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4760; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm24761; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4762; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]4763; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm24764; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm04765; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm04766; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm04767; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm04768; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm14769; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4770; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24771; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4772; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04773; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04774; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14775; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14776; AVX512BW-NEXT:    retq4777;4778; AVX512VPOPCNTDQ-LABEL: ult_9_v16i32:4779; AVX512VPOPCNTDQ:       # %bb.0:4780; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm04781; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14782; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14783; AVX512VPOPCNTDQ-NEXT:    retq4784;4785; BITALG-LABEL: ult_9_v16i32:4786; BITALG:       # %bb.0:4787; BITALG-NEXT:    vpopcntb %zmm0, %zmm04788; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm14789; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4790; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24791; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4792; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04793; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04794; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14795; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14796; BITALG-NEXT:    retq4797  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)4798  %3 = icmp ult <16 x i32> %2, <i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9>4799  %4 = sext <16 x i1> %3 to <16 x i32>4800  ret <16 x i32> %44801}4802 4803define <16 x i32> @ugt_9_v16i32(<16 x i32> %0) {4804; AVX512F-LABEL: ugt_9_v16i32:4805; AVX512F:       # %bb.0:4806; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm14807; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4808; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm34809; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4810; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4811; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34812; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14813; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14814; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14815; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14816; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34817; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4818; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54819; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4820; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14821; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14822; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54823; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54824; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04825; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04826; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04827; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04828; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4829; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24830; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4831; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04832; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04833; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04834; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14835; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14836; AVX512F-NEXT:    retq4837;4838; AVX512BW-LABEL: ugt_9_v16i32:4839; AVX512BW:       # %bb.0:4840; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4841; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm24842; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4843; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]4844; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm24845; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm04846; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm04847; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm04848; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm04849; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm14850; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4851; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24852; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4853; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04854; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04855; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14856; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14857; AVX512BW-NEXT:    retq4858;4859; AVX512VPOPCNTDQ-LABEL: ugt_9_v16i32:4860; AVX512VPOPCNTDQ:       # %bb.0:4861; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm04862; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14863; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14864; AVX512VPOPCNTDQ-NEXT:    retq4865;4866; BITALG-LABEL: ugt_9_v16i32:4867; BITALG:       # %bb.0:4868; BITALG-NEXT:    vpopcntb %zmm0, %zmm04869; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm14870; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4871; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24872; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4873; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04874; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04875; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14876; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14877; BITALG-NEXT:    retq4878  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)4879  %3 = icmp ugt <16 x i32> %2, <i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9>4880  %4 = sext <16 x i1> %3 to <16 x i32>4881  ret <16 x i32> %44882}4883 4884define <16 x i32> @ult_10_v16i32(<16 x i32> %0) {4885; AVX512F-LABEL: ult_10_v16i32:4886; AVX512F:       # %bb.0:4887; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm14888; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4889; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm34890; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4891; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4892; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34893; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14894; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14895; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14896; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14897; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34898; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4899; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54900; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4901; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14902; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14903; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54904; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54905; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04906; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04907; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04908; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04909; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4910; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24911; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4912; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04913; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04914; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04915; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14916; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14917; AVX512F-NEXT:    retq4918;4919; AVX512BW-LABEL: ult_10_v16i32:4920; AVX512BW:       # %bb.0:4921; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4922; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm24923; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4924; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]4925; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm24926; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm04927; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm04928; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm04929; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm04930; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm14931; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4932; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24933; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4934; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04935; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04936; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14937; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14938; AVX512BW-NEXT:    retq4939;4940; AVX512VPOPCNTDQ-LABEL: ult_10_v16i32:4941; AVX512VPOPCNTDQ:       # %bb.0:4942; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm04943; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14944; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14945; AVX512VPOPCNTDQ-NEXT:    retq4946;4947; BITALG-LABEL: ult_10_v16i32:4948; BITALG:       # %bb.0:4949; BITALG-NEXT:    vpopcntb %zmm0, %zmm04950; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm14951; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]4952; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm24953; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]4954; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm04955; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm04956; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14957; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14958; BITALG-NEXT:    retq4959  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)4960  %3 = icmp ult <16 x i32> %2, <i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10>4961  %4 = sext <16 x i1> %3 to <16 x i32>4962  ret <16 x i32> %44963}4964 4965define <16 x i32> @ugt_10_v16i32(<16 x i32> %0) {4966; AVX512F-LABEL: ugt_10_v16i32:4967; AVX512F:       # %bb.0:4968; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm14969; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]4970; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm34971; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]4972; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]4973; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm34974; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm14975; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm14976; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm14977; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm14978; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm34979; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]4980; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm54981; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]4982; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm14983; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm14984; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm54985; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm54986; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm04987; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm04988; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm04989; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm04990; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]4991; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm24992; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]4993; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm04994; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm04995; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm04996; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k14997; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -14998; AVX512F-NEXT:    retq4999;5000; AVX512BW-LABEL: ugt_10_v16i32:5001; AVX512BW:       # %bb.0:5002; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5003; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25004; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5005; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5006; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25007; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05008; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05009; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05010; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05011; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15012; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5013; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25014; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5015; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05016; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05017; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15018; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15019; AVX512BW-NEXT:    retq5020;5021; AVX512VPOPCNTDQ-LABEL: ugt_10_v16i32:5022; AVX512VPOPCNTDQ:       # %bb.0:5023; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05024; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15025; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15026; AVX512VPOPCNTDQ-NEXT:    retq5027;5028; BITALG-LABEL: ugt_10_v16i32:5029; BITALG:       # %bb.0:5030; BITALG-NEXT:    vpopcntb %zmm0, %zmm05031; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm15032; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5033; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25034; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5035; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05036; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05037; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15038; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15039; BITALG-NEXT:    retq5040  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)5041  %3 = icmp ugt <16 x i32> %2, <i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10>5042  %4 = sext <16 x i1> %3 to <16 x i32>5043  ret <16 x i32> %45044}5045 5046define <16 x i32> @ult_11_v16i32(<16 x i32> %0) {5047; AVX512F-LABEL: ult_11_v16i32:5048; AVX512F:       # %bb.0:5049; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm15050; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5051; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm35052; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5053; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]5054; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm35055; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm15056; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm15057; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm15058; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm15059; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm35060; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]5061; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm55062; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]5063; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm15064; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm15065; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm55066; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm55067; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm05068; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm05069; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm05070; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm05071; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]5072; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm25073; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]5074; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm05075; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm05076; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm05077; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15078; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15079; AVX512F-NEXT:    retq5080;5081; AVX512BW-LABEL: ult_11_v16i32:5082; AVX512BW:       # %bb.0:5083; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5084; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25085; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5086; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5087; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25088; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05089; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05090; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05091; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05092; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15093; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5094; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25095; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5096; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05097; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05098; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15099; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15100; AVX512BW-NEXT:    retq5101;5102; AVX512VPOPCNTDQ-LABEL: ult_11_v16i32:5103; AVX512VPOPCNTDQ:       # %bb.0:5104; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05105; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15106; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15107; AVX512VPOPCNTDQ-NEXT:    retq5108;5109; BITALG-LABEL: ult_11_v16i32:5110; BITALG:       # %bb.0:5111; BITALG-NEXT:    vpopcntb %zmm0, %zmm05112; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm15113; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5114; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25115; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5116; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05117; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05118; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15119; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15120; BITALG-NEXT:    retq5121  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)5122  %3 = icmp ult <16 x i32> %2, <i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11>5123  %4 = sext <16 x i1> %3 to <16 x i32>5124  ret <16 x i32> %45125}5126 5127define <16 x i32> @ugt_11_v16i32(<16 x i32> %0) {5128; AVX512F-LABEL: ugt_11_v16i32:5129; AVX512F:       # %bb.0:5130; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm15131; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5132; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm35133; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5134; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]5135; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm35136; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm15137; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm15138; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm15139; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm15140; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm35141; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]5142; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm55143; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]5144; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm15145; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm15146; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm55147; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm55148; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm05149; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm05150; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm05151; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm05152; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]5153; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm25154; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]5155; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm05156; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm05157; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm05158; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15159; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15160; AVX512F-NEXT:    retq5161;5162; AVX512BW-LABEL: ugt_11_v16i32:5163; AVX512BW:       # %bb.0:5164; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5165; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25166; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5167; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5168; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25169; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05170; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05171; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05172; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05173; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15174; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5175; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25176; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5177; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05178; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05179; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15180; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15181; AVX512BW-NEXT:    retq5182;5183; AVX512VPOPCNTDQ-LABEL: ugt_11_v16i32:5184; AVX512VPOPCNTDQ:       # %bb.0:5185; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05186; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15187; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15188; AVX512VPOPCNTDQ-NEXT:    retq5189;5190; BITALG-LABEL: ugt_11_v16i32:5191; BITALG:       # %bb.0:5192; BITALG-NEXT:    vpopcntb %zmm0, %zmm05193; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm15194; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5195; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25196; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5197; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05198; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05199; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15200; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15201; BITALG-NEXT:    retq5202  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)5203  %3 = icmp ugt <16 x i32> %2, <i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11>5204  %4 = sext <16 x i1> %3 to <16 x i32>5205  ret <16 x i32> %45206}5207 5208define <16 x i32> @ult_12_v16i32(<16 x i32> %0) {5209; AVX512F-LABEL: ult_12_v16i32:5210; AVX512F:       # %bb.0:5211; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm15212; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5213; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm35214; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5215; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]5216; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm35217; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm15218; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm15219; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm15220; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm15221; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm35222; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]5223; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm55224; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]5225; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm15226; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm15227; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm55228; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm55229; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm05230; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm05231; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm05232; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm05233; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]5234; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm25235; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]5236; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm05237; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm05238; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm05239; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15240; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15241; AVX512F-NEXT:    retq5242;5243; AVX512BW-LABEL: ult_12_v16i32:5244; AVX512BW:       # %bb.0:5245; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5246; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25247; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5248; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5249; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25250; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05251; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05252; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05253; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05254; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15255; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5256; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25257; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5258; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05259; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05260; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15261; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15262; AVX512BW-NEXT:    retq5263;5264; AVX512VPOPCNTDQ-LABEL: ult_12_v16i32:5265; AVX512VPOPCNTDQ:       # %bb.0:5266; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05267; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15268; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15269; AVX512VPOPCNTDQ-NEXT:    retq5270;5271; BITALG-LABEL: ult_12_v16i32:5272; BITALG:       # %bb.0:5273; BITALG-NEXT:    vpopcntb %zmm0, %zmm05274; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm15275; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5276; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25277; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5278; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05279; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05280; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15281; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15282; BITALG-NEXT:    retq5283  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)5284  %3 = icmp ult <16 x i32> %2, <i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12>5285  %4 = sext <16 x i1> %3 to <16 x i32>5286  ret <16 x i32> %45287}5288 5289define <16 x i32> @ugt_12_v16i32(<16 x i32> %0) {5290; AVX512F-LABEL: ugt_12_v16i32:5291; AVX512F:       # %bb.0:5292; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm15293; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5294; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm35295; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5296; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]5297; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm35298; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm15299; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm15300; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm15301; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm15302; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm35303; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]5304; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm55305; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]5306; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm15307; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm15308; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm55309; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm55310; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm05311; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm05312; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm05313; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm05314; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]5315; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm25316; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]5317; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm05318; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm05319; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm05320; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15321; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15322; AVX512F-NEXT:    retq5323;5324; AVX512BW-LABEL: ugt_12_v16i32:5325; AVX512BW:       # %bb.0:5326; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5327; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25328; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5329; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5330; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25331; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05332; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05333; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05334; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05335; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15336; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5337; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25338; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5339; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05340; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05341; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15342; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15343; AVX512BW-NEXT:    retq5344;5345; AVX512VPOPCNTDQ-LABEL: ugt_12_v16i32:5346; AVX512VPOPCNTDQ:       # %bb.0:5347; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05348; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15349; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15350; AVX512VPOPCNTDQ-NEXT:    retq5351;5352; BITALG-LABEL: ugt_12_v16i32:5353; BITALG:       # %bb.0:5354; BITALG-NEXT:    vpopcntb %zmm0, %zmm05355; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm15356; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5357; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25358; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5359; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05360; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05361; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15362; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15363; BITALG-NEXT:    retq5364  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)5365  %3 = icmp ugt <16 x i32> %2, <i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12>5366  %4 = sext <16 x i1> %3 to <16 x i32>5367  ret <16 x i32> %45368}5369 5370define <16 x i32> @ult_13_v16i32(<16 x i32> %0) {5371; AVX512F-LABEL: ult_13_v16i32:5372; AVX512F:       # %bb.0:5373; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm15374; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5375; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm35376; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5377; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]5378; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm35379; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm15380; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm15381; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm15382; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm15383; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm35384; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]5385; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm55386; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]5387; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm15388; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm15389; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm55390; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm55391; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm05392; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm05393; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm05394; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm05395; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]5396; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm25397; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]5398; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm05399; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm05400; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm05401; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15402; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15403; AVX512F-NEXT:    retq5404;5405; AVX512BW-LABEL: ult_13_v16i32:5406; AVX512BW:       # %bb.0:5407; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5408; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25409; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5410; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5411; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25412; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05413; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05414; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05415; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05416; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15417; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5418; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25419; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5420; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05421; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05422; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15423; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15424; AVX512BW-NEXT:    retq5425;5426; AVX512VPOPCNTDQ-LABEL: ult_13_v16i32:5427; AVX512VPOPCNTDQ:       # %bb.0:5428; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05429; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15430; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15431; AVX512VPOPCNTDQ-NEXT:    retq5432;5433; BITALG-LABEL: ult_13_v16i32:5434; BITALG:       # %bb.0:5435; BITALG-NEXT:    vpopcntb %zmm0, %zmm05436; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm15437; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5438; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25439; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5440; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05441; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05442; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15443; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15444; BITALG-NEXT:    retq5445  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)5446  %3 = icmp ult <16 x i32> %2, <i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13>5447  %4 = sext <16 x i1> %3 to <16 x i32>5448  ret <16 x i32> %45449}5450 5451define <16 x i32> @ugt_13_v16i32(<16 x i32> %0) {5452; AVX512F-LABEL: ugt_13_v16i32:5453; AVX512F:       # %bb.0:5454; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm15455; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5456; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm35457; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5458; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]5459; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm35460; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm15461; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm15462; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm15463; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm15464; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm35465; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]5466; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm55467; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]5468; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm15469; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm15470; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm55471; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm55472; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm05473; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm05474; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm05475; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm05476; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]5477; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm25478; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]5479; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm05480; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm05481; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm05482; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15483; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15484; AVX512F-NEXT:    retq5485;5486; AVX512BW-LABEL: ugt_13_v16i32:5487; AVX512BW:       # %bb.0:5488; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5489; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25490; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5491; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5492; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25493; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05494; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05495; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05496; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05497; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15498; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5499; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25500; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5501; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05502; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05503; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15504; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15505; AVX512BW-NEXT:    retq5506;5507; AVX512VPOPCNTDQ-LABEL: ugt_13_v16i32:5508; AVX512VPOPCNTDQ:       # %bb.0:5509; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05510; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15511; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15512; AVX512VPOPCNTDQ-NEXT:    retq5513;5514; BITALG-LABEL: ugt_13_v16i32:5515; BITALG:       # %bb.0:5516; BITALG-NEXT:    vpopcntb %zmm0, %zmm05517; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm15518; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5519; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25520; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5521; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05522; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05523; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15524; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15525; BITALG-NEXT:    retq5526  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)5527  %3 = icmp ugt <16 x i32> %2, <i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13>5528  %4 = sext <16 x i1> %3 to <16 x i32>5529  ret <16 x i32> %45530}5531 5532define <16 x i32> @ult_14_v16i32(<16 x i32> %0) {5533; AVX512F-LABEL: ult_14_v16i32:5534; AVX512F:       # %bb.0:5535; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm15536; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5537; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm35538; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5539; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]5540; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm35541; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm15542; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm15543; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm15544; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm15545; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm35546; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]5547; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm55548; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]5549; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm15550; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm15551; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm55552; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm55553; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm05554; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm05555; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm05556; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm05557; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]5558; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm25559; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]5560; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm05561; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm05562; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm05563; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15564; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15565; AVX512F-NEXT:    retq5566;5567; AVX512BW-LABEL: ult_14_v16i32:5568; AVX512BW:       # %bb.0:5569; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5570; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25571; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5572; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5573; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25574; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05575; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05576; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05577; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05578; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15579; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5580; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25581; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5582; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05583; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05584; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15585; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15586; AVX512BW-NEXT:    retq5587;5588; AVX512VPOPCNTDQ-LABEL: ult_14_v16i32:5589; AVX512VPOPCNTDQ:       # %bb.0:5590; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05591; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15592; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15593; AVX512VPOPCNTDQ-NEXT:    retq5594;5595; BITALG-LABEL: ult_14_v16i32:5596; BITALG:       # %bb.0:5597; BITALG-NEXT:    vpopcntb %zmm0, %zmm05598; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm15599; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5600; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25601; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5602; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05603; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05604; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15605; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15606; BITALG-NEXT:    retq5607  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)5608  %3 = icmp ult <16 x i32> %2, <i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14>5609  %4 = sext <16 x i1> %3 to <16 x i32>5610  ret <16 x i32> %45611}5612 5613define <16 x i32> @ugt_14_v16i32(<16 x i32> %0) {5614; AVX512F-LABEL: ugt_14_v16i32:5615; AVX512F:       # %bb.0:5616; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm15617; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5618; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm35619; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5620; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]5621; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm35622; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm15623; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm15624; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm15625; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm15626; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm35627; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]5628; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm55629; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]5630; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm15631; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm15632; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm55633; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm55634; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm05635; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm05636; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm05637; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm05638; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]5639; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm25640; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]5641; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm05642; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm05643; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm05644; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15645; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15646; AVX512F-NEXT:    retq5647;5648; AVX512BW-LABEL: ugt_14_v16i32:5649; AVX512BW:       # %bb.0:5650; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5651; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25652; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5653; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5654; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25655; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05656; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05657; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05658; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05659; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15660; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5661; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25662; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5663; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05664; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05665; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15666; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15667; AVX512BW-NEXT:    retq5668;5669; AVX512VPOPCNTDQ-LABEL: ugt_14_v16i32:5670; AVX512VPOPCNTDQ:       # %bb.0:5671; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05672; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15673; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15674; AVX512VPOPCNTDQ-NEXT:    retq5675;5676; BITALG-LABEL: ugt_14_v16i32:5677; BITALG:       # %bb.0:5678; BITALG-NEXT:    vpopcntb %zmm0, %zmm05679; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm15680; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5681; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25682; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5683; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05684; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05685; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15686; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15687; BITALG-NEXT:    retq5688  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)5689  %3 = icmp ugt <16 x i32> %2, <i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14>5690  %4 = sext <16 x i1> %3 to <16 x i32>5691  ret <16 x i32> %45692}5693 5694define <16 x i32> @ult_15_v16i32(<16 x i32> %0) {5695; AVX512F-LABEL: ult_15_v16i32:5696; AVX512F:       # %bb.0:5697; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm15698; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5699; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm35700; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5701; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]5702; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm35703; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm15704; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm15705; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm15706; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm15707; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm35708; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]5709; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm55710; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]5711; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm15712; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm15713; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm55714; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm55715; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm05716; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm05717; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm05718; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm05719; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]5720; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm25721; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]5722; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm05723; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm05724; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm05725; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15726; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15727; AVX512F-NEXT:    retq5728;5729; AVX512BW-LABEL: ult_15_v16i32:5730; AVX512BW:       # %bb.0:5731; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5732; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25733; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5734; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5735; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25736; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05737; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05738; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05739; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05740; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15741; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5742; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25743; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5744; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05745; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05746; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15747; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15748; AVX512BW-NEXT:    retq5749;5750; AVX512VPOPCNTDQ-LABEL: ult_15_v16i32:5751; AVX512VPOPCNTDQ:       # %bb.0:5752; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05753; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15754; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15755; AVX512VPOPCNTDQ-NEXT:    retq5756;5757; BITALG-LABEL: ult_15_v16i32:5758; BITALG:       # %bb.0:5759; BITALG-NEXT:    vpopcntb %zmm0, %zmm05760; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm15761; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5762; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25763; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5764; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05765; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05766; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15767; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15768; BITALG-NEXT:    retq5769  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)5770  %3 = icmp ult <16 x i32> %2, <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>5771  %4 = sext <16 x i1> %3 to <16 x i32>5772  ret <16 x i32> %45773}5774 5775define <16 x i32> @ugt_15_v16i32(<16 x i32> %0) {5776; AVX512F-LABEL: ugt_15_v16i32:5777; AVX512F:       # %bb.0:5778; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm15779; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5780; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm35781; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5782; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]5783; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm35784; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm15785; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm15786; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm15787; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm15788; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm35789; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]5790; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm55791; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]5792; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm15793; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm15794; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm55795; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm55796; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm05797; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm05798; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm05799; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm05800; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]5801; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm25802; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]5803; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm05804; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm05805; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm05806; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15807; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15808; AVX512F-NEXT:    retq5809;5810; AVX512BW-LABEL: ugt_15_v16i32:5811; AVX512BW:       # %bb.0:5812; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5813; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25814; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5815; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5816; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25817; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05818; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05819; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05820; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05821; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15822; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5823; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25824; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5825; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05826; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05827; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15828; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15829; AVX512BW-NEXT:    retq5830;5831; AVX512VPOPCNTDQ-LABEL: ugt_15_v16i32:5832; AVX512VPOPCNTDQ:       # %bb.0:5833; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05834; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15835; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15836; AVX512VPOPCNTDQ-NEXT:    retq5837;5838; BITALG-LABEL: ugt_15_v16i32:5839; BITALG:       # %bb.0:5840; BITALG-NEXT:    vpopcntb %zmm0, %zmm05841; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm15842; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5843; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25844; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5845; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05846; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05847; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15848; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15849; BITALG-NEXT:    retq5850  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)5851  %3 = icmp ugt <16 x i32> %2, <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>5852  %4 = sext <16 x i1> %3 to <16 x i32>5853  ret <16 x i32> %45854}5855 5856define <16 x i32> @ult_16_v16i32(<16 x i32> %0) {5857; AVX512F-LABEL: ult_16_v16i32:5858; AVX512F:       # %bb.0:5859; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm15860; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5861; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm35862; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5863; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]5864; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm35865; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm15866; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm15867; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm15868; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm15869; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm35870; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]5871; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm55872; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]5873; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm15874; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm15875; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm55876; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm55877; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm05878; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm05879; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm05880; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm05881; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]5882; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm25883; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]5884; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm05885; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm05886; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm05887; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15888; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15889; AVX512F-NEXT:    retq5890;5891; AVX512BW-LABEL: ult_16_v16i32:5892; AVX512BW:       # %bb.0:5893; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5894; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25895; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5896; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5897; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25898; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05899; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05900; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05901; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05902; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15903; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5904; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25905; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5906; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05907; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05908; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15909; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15910; AVX512BW-NEXT:    retq5911;5912; AVX512VPOPCNTDQ-LABEL: ult_16_v16i32:5913; AVX512VPOPCNTDQ:       # %bb.0:5914; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05915; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15916; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15917; AVX512VPOPCNTDQ-NEXT:    retq5918;5919; BITALG-LABEL: ult_16_v16i32:5920; BITALG:       # %bb.0:5921; BITALG-NEXT:    vpopcntb %zmm0, %zmm05922; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm15923; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5924; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25925; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5926; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05927; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05928; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15929; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15930; BITALG-NEXT:    retq5931  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)5932  %3 = icmp ult <16 x i32> %2, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>5933  %4 = sext <16 x i1> %3 to <16 x i32>5934  ret <16 x i32> %45935}5936 5937define <16 x i32> @ugt_16_v16i32(<16 x i32> %0) {5938; AVX512F-LABEL: ugt_16_v16i32:5939; AVX512F:       # %bb.0:5940; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm15941; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5942; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm35943; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5944; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]5945; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm35946; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm15947; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm15948; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm15949; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm15950; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm35951; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]5952; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm55953; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]5954; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm15955; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm15956; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm55957; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm55958; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm05959; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm05960; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm05961; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm05962; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]5963; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm25964; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]5965; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm05966; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm05967; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm05968; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15969; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15970; AVX512F-NEXT:    retq5971;5972; AVX512BW-LABEL: ugt_16_v16i32:5973; AVX512BW:       # %bb.0:5974; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]5975; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm25976; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]5977; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]5978; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm25979; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm05980; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm05981; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm05982; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm05983; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm15984; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]5985; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm25986; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]5987; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm05988; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm05989; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15990; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15991; AVX512BW-NEXT:    retq5992;5993; AVX512VPOPCNTDQ-LABEL: ugt_16_v16i32:5994; AVX512VPOPCNTDQ:       # %bb.0:5995; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm05996; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k15997; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -15998; AVX512VPOPCNTDQ-NEXT:    retq5999;6000; BITALG-LABEL: ugt_16_v16i32:6001; BITALG:       # %bb.0:6002; BITALG-NEXT:    vpopcntb %zmm0, %zmm06003; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16004; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6005; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26006; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6007; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06008; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06009; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16010; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16011; BITALG-NEXT:    retq6012  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6013  %3 = icmp ugt <16 x i32> %2, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>6014  %4 = sext <16 x i1> %3 to <16 x i32>6015  ret <16 x i32> %46016}6017 6018define <16 x i32> @ult_17_v16i32(<16 x i32> %0) {6019; AVX512F-LABEL: ult_17_v16i32:6020; AVX512F:       # %bb.0:6021; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16022; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6023; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36024; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6025; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6026; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36027; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm16028; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm16029; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm16030; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm16031; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm36032; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]6033; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm56034; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]6035; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm16036; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm16037; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm56038; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm56039; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm06040; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm06041; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm06042; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm06043; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]6044; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm26045; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]6046; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm06047; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm06048; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm06049; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16050; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16051; AVX512F-NEXT:    retq6052;6053; AVX512BW-LABEL: ult_17_v16i32:6054; AVX512BW:       # %bb.0:6055; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6056; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm26057; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6058; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]6059; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm26060; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm06061; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm06062; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm06063; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm06064; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm16065; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6066; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26067; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6068; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06069; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06070; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16071; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16072; AVX512BW-NEXT:    retq6073;6074; AVX512VPOPCNTDQ-LABEL: ult_17_v16i32:6075; AVX512VPOPCNTDQ:       # %bb.0:6076; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm06077; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16078; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16079; AVX512VPOPCNTDQ-NEXT:    retq6080;6081; BITALG-LABEL: ult_17_v16i32:6082; BITALG:       # %bb.0:6083; BITALG-NEXT:    vpopcntb %zmm0, %zmm06084; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16085; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6086; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26087; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6088; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06089; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06090; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16091; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16092; BITALG-NEXT:    retq6093  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6094  %3 = icmp ult <16 x i32> %2, <i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17>6095  %4 = sext <16 x i1> %3 to <16 x i32>6096  ret <16 x i32> %46097}6098 6099define <16 x i32> @ugt_17_v16i32(<16 x i32> %0) {6100; AVX512F-LABEL: ugt_17_v16i32:6101; AVX512F:       # %bb.0:6102; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16103; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6104; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36105; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6106; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6107; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36108; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm16109; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm16110; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm16111; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm16112; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm36113; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]6114; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm56115; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]6116; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm16117; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm16118; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm56119; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm56120; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm06121; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm06122; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm06123; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm06124; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]6125; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm26126; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]6127; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm06128; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm06129; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm06130; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16131; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16132; AVX512F-NEXT:    retq6133;6134; AVX512BW-LABEL: ugt_17_v16i32:6135; AVX512BW:       # %bb.0:6136; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6137; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm26138; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6139; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]6140; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm26141; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm06142; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm06143; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm06144; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm06145; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm16146; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6147; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26148; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6149; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06150; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06151; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16152; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16153; AVX512BW-NEXT:    retq6154;6155; AVX512VPOPCNTDQ-LABEL: ugt_17_v16i32:6156; AVX512VPOPCNTDQ:       # %bb.0:6157; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm06158; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16159; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16160; AVX512VPOPCNTDQ-NEXT:    retq6161;6162; BITALG-LABEL: ugt_17_v16i32:6163; BITALG:       # %bb.0:6164; BITALG-NEXT:    vpopcntb %zmm0, %zmm06165; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16166; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6167; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26168; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6169; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06170; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06171; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16172; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16173; BITALG-NEXT:    retq6174  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6175  %3 = icmp ugt <16 x i32> %2, <i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17>6176  %4 = sext <16 x i1> %3 to <16 x i32>6177  ret <16 x i32> %46178}6179 6180define <16 x i32> @ult_18_v16i32(<16 x i32> %0) {6181; AVX512F-LABEL: ult_18_v16i32:6182; AVX512F:       # %bb.0:6183; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16184; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6185; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36186; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6187; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6188; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36189; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm16190; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm16191; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm16192; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm16193; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm36194; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]6195; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm56196; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]6197; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm16198; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm16199; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm56200; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm56201; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm06202; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm06203; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm06204; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm06205; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]6206; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm26207; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]6208; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm06209; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm06210; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm06211; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16212; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16213; AVX512F-NEXT:    retq6214;6215; AVX512BW-LABEL: ult_18_v16i32:6216; AVX512BW:       # %bb.0:6217; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6218; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm26219; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6220; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]6221; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm26222; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm06223; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm06224; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm06225; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm06226; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm16227; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6228; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26229; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6230; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06231; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06232; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16233; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16234; AVX512BW-NEXT:    retq6235;6236; AVX512VPOPCNTDQ-LABEL: ult_18_v16i32:6237; AVX512VPOPCNTDQ:       # %bb.0:6238; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm06239; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16240; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16241; AVX512VPOPCNTDQ-NEXT:    retq6242;6243; BITALG-LABEL: ult_18_v16i32:6244; BITALG:       # %bb.0:6245; BITALG-NEXT:    vpopcntb %zmm0, %zmm06246; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16247; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6248; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26249; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6250; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06251; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06252; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16253; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16254; BITALG-NEXT:    retq6255  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6256  %3 = icmp ult <16 x i32> %2, <i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18>6257  %4 = sext <16 x i1> %3 to <16 x i32>6258  ret <16 x i32> %46259}6260 6261define <16 x i32> @ugt_18_v16i32(<16 x i32> %0) {6262; AVX512F-LABEL: ugt_18_v16i32:6263; AVX512F:       # %bb.0:6264; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16265; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6266; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36267; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6268; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6269; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36270; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm16271; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm16272; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm16273; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm16274; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm36275; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]6276; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm56277; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]6278; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm16279; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm16280; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm56281; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm56282; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm06283; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm06284; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm06285; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm06286; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]6287; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm26288; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]6289; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm06290; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm06291; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm06292; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16293; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16294; AVX512F-NEXT:    retq6295;6296; AVX512BW-LABEL: ugt_18_v16i32:6297; AVX512BW:       # %bb.0:6298; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6299; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm26300; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6301; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]6302; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm26303; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm06304; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm06305; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm06306; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm06307; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm16308; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6309; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26310; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6311; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06312; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06313; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16314; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16315; AVX512BW-NEXT:    retq6316;6317; AVX512VPOPCNTDQ-LABEL: ugt_18_v16i32:6318; AVX512VPOPCNTDQ:       # %bb.0:6319; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm06320; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16321; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16322; AVX512VPOPCNTDQ-NEXT:    retq6323;6324; BITALG-LABEL: ugt_18_v16i32:6325; BITALG:       # %bb.0:6326; BITALG-NEXT:    vpopcntb %zmm0, %zmm06327; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16328; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6329; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26330; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6331; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06332; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06333; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16334; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16335; BITALG-NEXT:    retq6336  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6337  %3 = icmp ugt <16 x i32> %2, <i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18>6338  %4 = sext <16 x i1> %3 to <16 x i32>6339  ret <16 x i32> %46340}6341 6342define <16 x i32> @ult_19_v16i32(<16 x i32> %0) {6343; AVX512F-LABEL: ult_19_v16i32:6344; AVX512F:       # %bb.0:6345; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16346; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6347; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36348; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6349; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6350; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36351; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm16352; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm16353; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm16354; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm16355; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm36356; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]6357; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm56358; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]6359; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm16360; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm16361; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm56362; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm56363; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm06364; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm06365; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm06366; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm06367; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]6368; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm26369; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]6370; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm06371; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm06372; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm06373; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16374; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16375; AVX512F-NEXT:    retq6376;6377; AVX512BW-LABEL: ult_19_v16i32:6378; AVX512BW:       # %bb.0:6379; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6380; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm26381; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6382; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]6383; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm26384; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm06385; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm06386; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm06387; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm06388; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm16389; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6390; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26391; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6392; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06393; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06394; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16395; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16396; AVX512BW-NEXT:    retq6397;6398; AVX512VPOPCNTDQ-LABEL: ult_19_v16i32:6399; AVX512VPOPCNTDQ:       # %bb.0:6400; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm06401; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16402; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16403; AVX512VPOPCNTDQ-NEXT:    retq6404;6405; BITALG-LABEL: ult_19_v16i32:6406; BITALG:       # %bb.0:6407; BITALG-NEXT:    vpopcntb %zmm0, %zmm06408; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16409; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6410; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26411; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6412; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06413; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06414; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16415; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16416; BITALG-NEXT:    retq6417  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6418  %3 = icmp ult <16 x i32> %2, <i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19>6419  %4 = sext <16 x i1> %3 to <16 x i32>6420  ret <16 x i32> %46421}6422 6423define <16 x i32> @ugt_19_v16i32(<16 x i32> %0) {6424; AVX512F-LABEL: ugt_19_v16i32:6425; AVX512F:       # %bb.0:6426; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16427; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6428; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36429; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6430; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6431; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36432; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm16433; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm16434; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm16435; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm16436; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm36437; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]6438; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm56439; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]6440; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm16441; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm16442; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm56443; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm56444; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm06445; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm06446; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm06447; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm06448; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]6449; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm26450; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]6451; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm06452; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm06453; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm06454; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16455; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16456; AVX512F-NEXT:    retq6457;6458; AVX512BW-LABEL: ugt_19_v16i32:6459; AVX512BW:       # %bb.0:6460; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6461; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm26462; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6463; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]6464; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm26465; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm06466; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm06467; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm06468; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm06469; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm16470; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6471; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26472; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6473; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06474; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06475; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16476; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16477; AVX512BW-NEXT:    retq6478;6479; AVX512VPOPCNTDQ-LABEL: ugt_19_v16i32:6480; AVX512VPOPCNTDQ:       # %bb.0:6481; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm06482; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16483; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16484; AVX512VPOPCNTDQ-NEXT:    retq6485;6486; BITALG-LABEL: ugt_19_v16i32:6487; BITALG:       # %bb.0:6488; BITALG-NEXT:    vpopcntb %zmm0, %zmm06489; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16490; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6491; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26492; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6493; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06494; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06495; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16496; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16497; BITALG-NEXT:    retq6498  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6499  %3 = icmp ugt <16 x i32> %2, <i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19>6500  %4 = sext <16 x i1> %3 to <16 x i32>6501  ret <16 x i32> %46502}6503 6504define <16 x i32> @ult_20_v16i32(<16 x i32> %0) {6505; AVX512F-LABEL: ult_20_v16i32:6506; AVX512F:       # %bb.0:6507; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16508; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6509; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36510; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6511; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6512; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36513; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm16514; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm16515; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm16516; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm16517; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm36518; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]6519; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm56520; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]6521; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm16522; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm16523; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm56524; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm56525; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm06526; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm06527; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm06528; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm06529; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]6530; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm26531; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]6532; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm06533; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm06534; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm06535; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16536; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16537; AVX512F-NEXT:    retq6538;6539; AVX512BW-LABEL: ult_20_v16i32:6540; AVX512BW:       # %bb.0:6541; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6542; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm26543; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6544; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]6545; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm26546; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm06547; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm06548; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm06549; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm06550; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm16551; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6552; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26553; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6554; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06555; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06556; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16557; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16558; AVX512BW-NEXT:    retq6559;6560; AVX512VPOPCNTDQ-LABEL: ult_20_v16i32:6561; AVX512VPOPCNTDQ:       # %bb.0:6562; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm06563; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16564; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16565; AVX512VPOPCNTDQ-NEXT:    retq6566;6567; BITALG-LABEL: ult_20_v16i32:6568; BITALG:       # %bb.0:6569; BITALG-NEXT:    vpopcntb %zmm0, %zmm06570; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16571; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6572; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26573; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6574; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06575; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06576; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16577; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16578; BITALG-NEXT:    retq6579  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6580  %3 = icmp ult <16 x i32> %2, <i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20>6581  %4 = sext <16 x i1> %3 to <16 x i32>6582  ret <16 x i32> %46583}6584 6585define <16 x i32> @ugt_20_v16i32(<16 x i32> %0) {6586; AVX512F-LABEL: ugt_20_v16i32:6587; AVX512F:       # %bb.0:6588; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16589; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6590; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36591; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6592; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6593; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36594; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm16595; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm16596; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm16597; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm16598; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm36599; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]6600; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm56601; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]6602; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm16603; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm16604; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm56605; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm56606; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm06607; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm06608; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm06609; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm06610; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]6611; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm26612; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]6613; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm06614; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm06615; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm06616; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16617; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16618; AVX512F-NEXT:    retq6619;6620; AVX512BW-LABEL: ugt_20_v16i32:6621; AVX512BW:       # %bb.0:6622; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6623; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm26624; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6625; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]6626; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm26627; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm06628; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm06629; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm06630; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm06631; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm16632; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6633; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26634; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6635; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06636; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06637; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16638; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16639; AVX512BW-NEXT:    retq6640;6641; AVX512VPOPCNTDQ-LABEL: ugt_20_v16i32:6642; AVX512VPOPCNTDQ:       # %bb.0:6643; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm06644; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16645; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16646; AVX512VPOPCNTDQ-NEXT:    retq6647;6648; BITALG-LABEL: ugt_20_v16i32:6649; BITALG:       # %bb.0:6650; BITALG-NEXT:    vpopcntb %zmm0, %zmm06651; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16652; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6653; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26654; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6655; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06656; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06657; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16658; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16659; BITALG-NEXT:    retq6660  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6661  %3 = icmp ugt <16 x i32> %2, <i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20>6662  %4 = sext <16 x i1> %3 to <16 x i32>6663  ret <16 x i32> %46664}6665 6666define <16 x i32> @ult_21_v16i32(<16 x i32> %0) {6667; AVX512F-LABEL: ult_21_v16i32:6668; AVX512F:       # %bb.0:6669; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16670; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6671; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36672; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6673; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6674; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36675; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm16676; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm16677; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm16678; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm16679; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm36680; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]6681; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm56682; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]6683; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm16684; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm16685; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm56686; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm56687; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm06688; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm06689; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm06690; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm06691; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]6692; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm26693; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]6694; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm06695; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm06696; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm06697; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16698; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16699; AVX512F-NEXT:    retq6700;6701; AVX512BW-LABEL: ult_21_v16i32:6702; AVX512BW:       # %bb.0:6703; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6704; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm26705; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6706; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]6707; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm26708; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm06709; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm06710; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm06711; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm06712; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm16713; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6714; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26715; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6716; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06717; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06718; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16719; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16720; AVX512BW-NEXT:    retq6721;6722; AVX512VPOPCNTDQ-LABEL: ult_21_v16i32:6723; AVX512VPOPCNTDQ:       # %bb.0:6724; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm06725; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16726; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16727; AVX512VPOPCNTDQ-NEXT:    retq6728;6729; BITALG-LABEL: ult_21_v16i32:6730; BITALG:       # %bb.0:6731; BITALG-NEXT:    vpopcntb %zmm0, %zmm06732; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16733; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6734; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26735; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6736; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06737; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06738; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16739; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16740; BITALG-NEXT:    retq6741  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6742  %3 = icmp ult <16 x i32> %2, <i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21>6743  %4 = sext <16 x i1> %3 to <16 x i32>6744  ret <16 x i32> %46745}6746 6747define <16 x i32> @ugt_21_v16i32(<16 x i32> %0) {6748; AVX512F-LABEL: ugt_21_v16i32:6749; AVX512F:       # %bb.0:6750; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16751; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6752; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36753; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6754; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6755; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36756; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm16757; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm16758; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm16759; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm16760; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm36761; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]6762; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm56763; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]6764; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm16765; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm16766; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm56767; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm56768; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm06769; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm06770; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm06771; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm06772; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]6773; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm26774; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]6775; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm06776; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm06777; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm06778; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16779; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16780; AVX512F-NEXT:    retq6781;6782; AVX512BW-LABEL: ugt_21_v16i32:6783; AVX512BW:       # %bb.0:6784; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6785; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm26786; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6787; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]6788; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm26789; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm06790; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm06791; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm06792; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm06793; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm16794; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6795; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26796; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6797; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06798; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06799; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16800; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16801; AVX512BW-NEXT:    retq6802;6803; AVX512VPOPCNTDQ-LABEL: ugt_21_v16i32:6804; AVX512VPOPCNTDQ:       # %bb.0:6805; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm06806; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16807; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16808; AVX512VPOPCNTDQ-NEXT:    retq6809;6810; BITALG-LABEL: ugt_21_v16i32:6811; BITALG:       # %bb.0:6812; BITALG-NEXT:    vpopcntb %zmm0, %zmm06813; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16814; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6815; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26816; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6817; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06818; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06819; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16820; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16821; BITALG-NEXT:    retq6822  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6823  %3 = icmp ugt <16 x i32> %2, <i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21>6824  %4 = sext <16 x i1> %3 to <16 x i32>6825  ret <16 x i32> %46826}6827 6828define <16 x i32> @ult_22_v16i32(<16 x i32> %0) {6829; AVX512F-LABEL: ult_22_v16i32:6830; AVX512F:       # %bb.0:6831; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16832; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6833; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36834; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6835; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6836; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36837; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm16838; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm16839; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm16840; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm16841; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm36842; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]6843; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm56844; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]6845; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm16846; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm16847; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm56848; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm56849; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm06850; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm06851; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm06852; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm06853; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]6854; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm26855; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]6856; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm06857; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm06858; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm06859; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16860; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16861; AVX512F-NEXT:    retq6862;6863; AVX512BW-LABEL: ult_22_v16i32:6864; AVX512BW:       # %bb.0:6865; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6866; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm26867; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6868; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]6869; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm26870; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm06871; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm06872; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm06873; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm06874; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm16875; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6876; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26877; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6878; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06879; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06880; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16881; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16882; AVX512BW-NEXT:    retq6883;6884; AVX512VPOPCNTDQ-LABEL: ult_22_v16i32:6885; AVX512VPOPCNTDQ:       # %bb.0:6886; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm06887; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16888; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16889; AVX512VPOPCNTDQ-NEXT:    retq6890;6891; BITALG-LABEL: ult_22_v16i32:6892; BITALG:       # %bb.0:6893; BITALG-NEXT:    vpopcntb %zmm0, %zmm06894; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16895; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6896; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26897; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6898; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06899; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06900; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16901; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16902; BITALG-NEXT:    retq6903  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6904  %3 = icmp ult <16 x i32> %2, <i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22>6905  %4 = sext <16 x i1> %3 to <16 x i32>6906  ret <16 x i32> %46907}6908 6909define <16 x i32> @ugt_22_v16i32(<16 x i32> %0) {6910; AVX512F-LABEL: ugt_22_v16i32:6911; AVX512F:       # %bb.0:6912; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16913; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6914; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36915; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6916; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6917; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36918; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm16919; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm16920; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm16921; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm16922; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm36923; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]6924; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm56925; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]6926; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm16927; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm16928; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm56929; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm56930; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm06931; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm06932; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm06933; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm06934; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]6935; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm26936; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]6937; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm06938; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm06939; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm06940; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16941; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16942; AVX512F-NEXT:    retq6943;6944; AVX512BW-LABEL: ugt_22_v16i32:6945; AVX512BW:       # %bb.0:6946; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6947; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm26948; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6949; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]6950; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm26951; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm06952; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm06953; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm06954; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm06955; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm16956; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6957; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26958; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6959; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06960; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06961; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16962; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16963; AVX512BW-NEXT:    retq6964;6965; AVX512VPOPCNTDQ-LABEL: ugt_22_v16i32:6966; AVX512VPOPCNTDQ:       # %bb.0:6967; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm06968; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16969; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16970; AVX512VPOPCNTDQ-NEXT:    retq6971;6972; BITALG-LABEL: ugt_22_v16i32:6973; BITALG:       # %bb.0:6974; BITALG-NEXT:    vpopcntb %zmm0, %zmm06975; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm16976; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]6977; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm26978; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]6979; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm06980; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm06981; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k16982; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -16983; BITALG-NEXT:    retq6984  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)6985  %3 = icmp ugt <16 x i32> %2, <i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22>6986  %4 = sext <16 x i1> %3 to <16 x i32>6987  ret <16 x i32> %46988}6989 6990define <16 x i32> @ult_23_v16i32(<16 x i32> %0) {6991; AVX512F-LABEL: ult_23_v16i32:6992; AVX512F:       # %bb.0:6993; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm16994; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]6995; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm36996; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]6997; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]6998; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm36999; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17000; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17001; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17002; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17003; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37004; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7005; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57006; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7007; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17008; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17009; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57010; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57011; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07012; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07013; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07014; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07015; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7016; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27017; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7018; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07019; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07020; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07021; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17022; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17023; AVX512F-NEXT:    retq7024;7025; AVX512BW-LABEL: ult_23_v16i32:7026; AVX512BW:       # %bb.0:7027; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7028; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm27029; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7030; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]7031; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm27032; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm07033; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm07034; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm07035; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm07036; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm17037; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7038; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27039; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7040; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07041; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07042; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17043; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17044; AVX512BW-NEXT:    retq7045;7046; AVX512VPOPCNTDQ-LABEL: ult_23_v16i32:7047; AVX512VPOPCNTDQ:       # %bb.0:7048; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm07049; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17050; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17051; AVX512VPOPCNTDQ-NEXT:    retq7052;7053; BITALG-LABEL: ult_23_v16i32:7054; BITALG:       # %bb.0:7055; BITALG-NEXT:    vpopcntb %zmm0, %zmm07056; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm17057; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7058; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27059; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7060; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07061; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07062; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17063; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17064; BITALG-NEXT:    retq7065  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)7066  %3 = icmp ult <16 x i32> %2, <i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23>7067  %4 = sext <16 x i1> %3 to <16 x i32>7068  ret <16 x i32> %47069}7070 7071define <16 x i32> @ugt_23_v16i32(<16 x i32> %0) {7072; AVX512F-LABEL: ugt_23_v16i32:7073; AVX512F:       # %bb.0:7074; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm17075; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7076; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm37077; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7078; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]7079; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm37080; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17081; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17082; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17083; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17084; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37085; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7086; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57087; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7088; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17089; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17090; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57091; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57092; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07093; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07094; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07095; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07096; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7097; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27098; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7099; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07100; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07101; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07102; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17103; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17104; AVX512F-NEXT:    retq7105;7106; AVX512BW-LABEL: ugt_23_v16i32:7107; AVX512BW:       # %bb.0:7108; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7109; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm27110; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7111; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]7112; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm27113; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm07114; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm07115; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm07116; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm07117; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm17118; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7119; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27120; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7121; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07122; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07123; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17124; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17125; AVX512BW-NEXT:    retq7126;7127; AVX512VPOPCNTDQ-LABEL: ugt_23_v16i32:7128; AVX512VPOPCNTDQ:       # %bb.0:7129; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm07130; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17131; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17132; AVX512VPOPCNTDQ-NEXT:    retq7133;7134; BITALG-LABEL: ugt_23_v16i32:7135; BITALG:       # %bb.0:7136; BITALG-NEXT:    vpopcntb %zmm0, %zmm07137; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm17138; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7139; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27140; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7141; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07142; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07143; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17144; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17145; BITALG-NEXT:    retq7146  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)7147  %3 = icmp ugt <16 x i32> %2, <i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23>7148  %4 = sext <16 x i1> %3 to <16 x i32>7149  ret <16 x i32> %47150}7151 7152define <16 x i32> @ult_24_v16i32(<16 x i32> %0) {7153; AVX512F-LABEL: ult_24_v16i32:7154; AVX512F:       # %bb.0:7155; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm17156; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7157; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm37158; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7159; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]7160; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm37161; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17162; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17163; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17164; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17165; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37166; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7167; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57168; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7169; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17170; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17171; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57172; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57173; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07174; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07175; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07176; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07177; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7178; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27179; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7180; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07181; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07182; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07183; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17184; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17185; AVX512F-NEXT:    retq7186;7187; AVX512BW-LABEL: ult_24_v16i32:7188; AVX512BW:       # %bb.0:7189; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7190; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm27191; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7192; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]7193; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm27194; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm07195; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm07196; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm07197; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm07198; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm17199; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7200; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27201; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7202; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07203; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07204; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17205; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17206; AVX512BW-NEXT:    retq7207;7208; AVX512VPOPCNTDQ-LABEL: ult_24_v16i32:7209; AVX512VPOPCNTDQ:       # %bb.0:7210; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm07211; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17212; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17213; AVX512VPOPCNTDQ-NEXT:    retq7214;7215; BITALG-LABEL: ult_24_v16i32:7216; BITALG:       # %bb.0:7217; BITALG-NEXT:    vpopcntb %zmm0, %zmm07218; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm17219; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7220; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27221; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7222; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07223; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07224; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17225; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17226; BITALG-NEXT:    retq7227  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)7228  %3 = icmp ult <16 x i32> %2, <i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24>7229  %4 = sext <16 x i1> %3 to <16 x i32>7230  ret <16 x i32> %47231}7232 7233define <16 x i32> @ugt_24_v16i32(<16 x i32> %0) {7234; AVX512F-LABEL: ugt_24_v16i32:7235; AVX512F:       # %bb.0:7236; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm17237; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7238; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm37239; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7240; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]7241; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm37242; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17243; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17244; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17245; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17246; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37247; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7248; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57249; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7250; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17251; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17252; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57253; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57254; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07255; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07256; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07257; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07258; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7259; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27260; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7261; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07262; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07263; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07264; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17265; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17266; AVX512F-NEXT:    retq7267;7268; AVX512BW-LABEL: ugt_24_v16i32:7269; AVX512BW:       # %bb.0:7270; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7271; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm27272; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7273; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]7274; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm27275; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm07276; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm07277; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm07278; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm07279; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm17280; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7281; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27282; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7283; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07284; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07285; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17286; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17287; AVX512BW-NEXT:    retq7288;7289; AVX512VPOPCNTDQ-LABEL: ugt_24_v16i32:7290; AVX512VPOPCNTDQ:       # %bb.0:7291; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm07292; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17293; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17294; AVX512VPOPCNTDQ-NEXT:    retq7295;7296; BITALG-LABEL: ugt_24_v16i32:7297; BITALG:       # %bb.0:7298; BITALG-NEXT:    vpopcntb %zmm0, %zmm07299; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm17300; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7301; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27302; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7303; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07304; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07305; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17306; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17307; BITALG-NEXT:    retq7308  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)7309  %3 = icmp ugt <16 x i32> %2, <i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24>7310  %4 = sext <16 x i1> %3 to <16 x i32>7311  ret <16 x i32> %47312}7313 7314define <16 x i32> @ult_25_v16i32(<16 x i32> %0) {7315; AVX512F-LABEL: ult_25_v16i32:7316; AVX512F:       # %bb.0:7317; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm17318; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7319; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm37320; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7321; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]7322; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm37323; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17324; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17325; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17326; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17327; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37328; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7329; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57330; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7331; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17332; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17333; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57334; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57335; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07336; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07337; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07338; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07339; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7340; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27341; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7342; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07343; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07344; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07345; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17346; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17347; AVX512F-NEXT:    retq7348;7349; AVX512BW-LABEL: ult_25_v16i32:7350; AVX512BW:       # %bb.0:7351; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7352; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm27353; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7354; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]7355; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm27356; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm07357; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm07358; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm07359; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm07360; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm17361; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7362; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27363; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7364; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07365; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07366; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17367; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17368; AVX512BW-NEXT:    retq7369;7370; AVX512VPOPCNTDQ-LABEL: ult_25_v16i32:7371; AVX512VPOPCNTDQ:       # %bb.0:7372; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm07373; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17374; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17375; AVX512VPOPCNTDQ-NEXT:    retq7376;7377; BITALG-LABEL: ult_25_v16i32:7378; BITALG:       # %bb.0:7379; BITALG-NEXT:    vpopcntb %zmm0, %zmm07380; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm17381; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7382; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27383; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7384; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07385; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07386; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17387; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17388; BITALG-NEXT:    retq7389  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)7390  %3 = icmp ult <16 x i32> %2, <i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25>7391  %4 = sext <16 x i1> %3 to <16 x i32>7392  ret <16 x i32> %47393}7394 7395define <16 x i32> @ugt_25_v16i32(<16 x i32> %0) {7396; AVX512F-LABEL: ugt_25_v16i32:7397; AVX512F:       # %bb.0:7398; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm17399; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7400; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm37401; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7402; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]7403; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm37404; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17405; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17406; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17407; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17408; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37409; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7410; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57411; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7412; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17413; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17414; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57415; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57416; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07417; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07418; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07419; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07420; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7421; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27422; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7423; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07424; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07425; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07426; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17427; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17428; AVX512F-NEXT:    retq7429;7430; AVX512BW-LABEL: ugt_25_v16i32:7431; AVX512BW:       # %bb.0:7432; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7433; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm27434; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7435; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]7436; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm27437; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm07438; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm07439; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm07440; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm07441; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm17442; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7443; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27444; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7445; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07446; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07447; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17448; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17449; AVX512BW-NEXT:    retq7450;7451; AVX512VPOPCNTDQ-LABEL: ugt_25_v16i32:7452; AVX512VPOPCNTDQ:       # %bb.0:7453; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm07454; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17455; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17456; AVX512VPOPCNTDQ-NEXT:    retq7457;7458; BITALG-LABEL: ugt_25_v16i32:7459; BITALG:       # %bb.0:7460; BITALG-NEXT:    vpopcntb %zmm0, %zmm07461; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm17462; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7463; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27464; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7465; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07466; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07467; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17468; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17469; BITALG-NEXT:    retq7470  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)7471  %3 = icmp ugt <16 x i32> %2, <i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25>7472  %4 = sext <16 x i1> %3 to <16 x i32>7473  ret <16 x i32> %47474}7475 7476define <16 x i32> @ult_26_v16i32(<16 x i32> %0) {7477; AVX512F-LABEL: ult_26_v16i32:7478; AVX512F:       # %bb.0:7479; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm17480; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7481; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm37482; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7483; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]7484; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm37485; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17486; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17487; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17488; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17489; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37490; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7491; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57492; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7493; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17494; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17495; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57496; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57497; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07498; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07499; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07500; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07501; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7502; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27503; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7504; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07505; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07506; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07507; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17508; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17509; AVX512F-NEXT:    retq7510;7511; AVX512BW-LABEL: ult_26_v16i32:7512; AVX512BW:       # %bb.0:7513; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7514; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm27515; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7516; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]7517; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm27518; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm07519; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm07520; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm07521; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm07522; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm17523; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7524; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27525; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7526; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07527; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07528; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17529; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17530; AVX512BW-NEXT:    retq7531;7532; AVX512VPOPCNTDQ-LABEL: ult_26_v16i32:7533; AVX512VPOPCNTDQ:       # %bb.0:7534; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm07535; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17536; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17537; AVX512VPOPCNTDQ-NEXT:    retq7538;7539; BITALG-LABEL: ult_26_v16i32:7540; BITALG:       # %bb.0:7541; BITALG-NEXT:    vpopcntb %zmm0, %zmm07542; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm17543; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7544; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27545; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7546; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07547; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07548; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17549; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17550; BITALG-NEXT:    retq7551  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)7552  %3 = icmp ult <16 x i32> %2, <i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26>7553  %4 = sext <16 x i1> %3 to <16 x i32>7554  ret <16 x i32> %47555}7556 7557define <16 x i32> @ugt_26_v16i32(<16 x i32> %0) {7558; AVX512F-LABEL: ugt_26_v16i32:7559; AVX512F:       # %bb.0:7560; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm17561; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7562; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm37563; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7564; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]7565; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm37566; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17567; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17568; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17569; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17570; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37571; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7572; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57573; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7574; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17575; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17576; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57577; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57578; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07579; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07580; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07581; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07582; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7583; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27584; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7585; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07586; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07587; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07588; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17589; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17590; AVX512F-NEXT:    retq7591;7592; AVX512BW-LABEL: ugt_26_v16i32:7593; AVX512BW:       # %bb.0:7594; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7595; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm27596; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7597; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]7598; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm27599; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm07600; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm07601; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm07602; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm07603; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm17604; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7605; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27606; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7607; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07608; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07609; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17610; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17611; AVX512BW-NEXT:    retq7612;7613; AVX512VPOPCNTDQ-LABEL: ugt_26_v16i32:7614; AVX512VPOPCNTDQ:       # %bb.0:7615; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm07616; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17617; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17618; AVX512VPOPCNTDQ-NEXT:    retq7619;7620; BITALG-LABEL: ugt_26_v16i32:7621; BITALG:       # %bb.0:7622; BITALG-NEXT:    vpopcntb %zmm0, %zmm07623; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm17624; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7625; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27626; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7627; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07628; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07629; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17630; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17631; BITALG-NEXT:    retq7632  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)7633  %3 = icmp ugt <16 x i32> %2, <i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26>7634  %4 = sext <16 x i1> %3 to <16 x i32>7635  ret <16 x i32> %47636}7637 7638define <16 x i32> @ult_27_v16i32(<16 x i32> %0) {7639; AVX512F-LABEL: ult_27_v16i32:7640; AVX512F:       # %bb.0:7641; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm17642; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7643; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm37644; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7645; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]7646; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm37647; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17648; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17649; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17650; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17651; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37652; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7653; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57654; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7655; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17656; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17657; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57658; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57659; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07660; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07661; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07662; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07663; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7664; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27665; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7666; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07667; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07668; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07669; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17670; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17671; AVX512F-NEXT:    retq7672;7673; AVX512BW-LABEL: ult_27_v16i32:7674; AVX512BW:       # %bb.0:7675; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7676; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm27677; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7678; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]7679; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm27680; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm07681; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm07682; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm07683; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm07684; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm17685; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7686; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27687; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7688; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07689; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07690; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17691; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17692; AVX512BW-NEXT:    retq7693;7694; AVX512VPOPCNTDQ-LABEL: ult_27_v16i32:7695; AVX512VPOPCNTDQ:       # %bb.0:7696; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm07697; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17698; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17699; AVX512VPOPCNTDQ-NEXT:    retq7700;7701; BITALG-LABEL: ult_27_v16i32:7702; BITALG:       # %bb.0:7703; BITALG-NEXT:    vpopcntb %zmm0, %zmm07704; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm17705; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7706; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27707; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7708; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07709; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07710; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17711; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17712; BITALG-NEXT:    retq7713  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)7714  %3 = icmp ult <16 x i32> %2, <i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27>7715  %4 = sext <16 x i1> %3 to <16 x i32>7716  ret <16 x i32> %47717}7718 7719define <16 x i32> @ugt_27_v16i32(<16 x i32> %0) {7720; AVX512F-LABEL: ugt_27_v16i32:7721; AVX512F:       # %bb.0:7722; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm17723; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7724; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm37725; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7726; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]7727; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm37728; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17729; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17730; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17731; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17732; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37733; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7734; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57735; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7736; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17737; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17738; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57739; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57740; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07741; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07742; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07743; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07744; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7745; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27746; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7747; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07748; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07749; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07750; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17751; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17752; AVX512F-NEXT:    retq7753;7754; AVX512BW-LABEL: ugt_27_v16i32:7755; AVX512BW:       # %bb.0:7756; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7757; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm27758; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7759; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]7760; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm27761; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm07762; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm07763; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm07764; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm07765; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm17766; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7767; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27768; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7769; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07770; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07771; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17772; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17773; AVX512BW-NEXT:    retq7774;7775; AVX512VPOPCNTDQ-LABEL: ugt_27_v16i32:7776; AVX512VPOPCNTDQ:       # %bb.0:7777; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm07778; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17779; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17780; AVX512VPOPCNTDQ-NEXT:    retq7781;7782; BITALG-LABEL: ugt_27_v16i32:7783; BITALG:       # %bb.0:7784; BITALG-NEXT:    vpopcntb %zmm0, %zmm07785; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm17786; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7787; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27788; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7789; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07790; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07791; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17792; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17793; BITALG-NEXT:    retq7794  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)7795  %3 = icmp ugt <16 x i32> %2, <i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27>7796  %4 = sext <16 x i1> %3 to <16 x i32>7797  ret <16 x i32> %47798}7799 7800define <16 x i32> @ult_28_v16i32(<16 x i32> %0) {7801; AVX512F-LABEL: ult_28_v16i32:7802; AVX512F:       # %bb.0:7803; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm17804; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7805; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm37806; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7807; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]7808; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm37809; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17810; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17811; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17812; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17813; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37814; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7815; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57816; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7817; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17818; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17819; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57820; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57821; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07822; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07823; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07824; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07825; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7826; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27827; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7828; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07829; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07830; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07831; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17832; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17833; AVX512F-NEXT:    retq7834;7835; AVX512BW-LABEL: ult_28_v16i32:7836; AVX512BW:       # %bb.0:7837; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7838; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm27839; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7840; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]7841; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm27842; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm07843; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm07844; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm07845; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm07846; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm17847; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7848; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27849; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7850; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07851; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07852; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17853; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17854; AVX512BW-NEXT:    retq7855;7856; AVX512VPOPCNTDQ-LABEL: ult_28_v16i32:7857; AVX512VPOPCNTDQ:       # %bb.0:7858; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm07859; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17860; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17861; AVX512VPOPCNTDQ-NEXT:    retq7862;7863; BITALG-LABEL: ult_28_v16i32:7864; BITALG:       # %bb.0:7865; BITALG-NEXT:    vpopcntb %zmm0, %zmm07866; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm17867; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7868; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27869; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7870; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07871; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07872; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17873; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17874; BITALG-NEXT:    retq7875  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)7876  %3 = icmp ult <16 x i32> %2, <i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28>7877  %4 = sext <16 x i1> %3 to <16 x i32>7878  ret <16 x i32> %47879}7880 7881define <16 x i32> @ugt_28_v16i32(<16 x i32> %0) {7882; AVX512F-LABEL: ugt_28_v16i32:7883; AVX512F:       # %bb.0:7884; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm17885; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7886; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm37887; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7888; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]7889; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm37890; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17891; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17892; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17893; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17894; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37895; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7896; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57897; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7898; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17899; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17900; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57901; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57902; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07903; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07904; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07905; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07906; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7907; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27908; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7909; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07910; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07911; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07912; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17913; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17914; AVX512F-NEXT:    retq7915;7916; AVX512BW-LABEL: ugt_28_v16i32:7917; AVX512BW:       # %bb.0:7918; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7919; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm27920; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7921; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]7922; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm27923; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm07924; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm07925; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm07926; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm07927; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm17928; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7929; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27930; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7931; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07932; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07933; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17934; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17935; AVX512BW-NEXT:    retq7936;7937; AVX512VPOPCNTDQ-LABEL: ugt_28_v16i32:7938; AVX512VPOPCNTDQ:       # %bb.0:7939; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm07940; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17941; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17942; AVX512VPOPCNTDQ-NEXT:    retq7943;7944; BITALG-LABEL: ugt_28_v16i32:7945; BITALG:       # %bb.0:7946; BITALG-NEXT:    vpopcntb %zmm0, %zmm07947; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm17948; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]7949; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm27950; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]7951; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm07952; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm07953; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17954; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17955; BITALG-NEXT:    retq7956  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)7957  %3 = icmp ugt <16 x i32> %2, <i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28>7958  %4 = sext <16 x i1> %3 to <16 x i32>7959  ret <16 x i32> %47960}7961 7962define <16 x i32> @ult_29_v16i32(<16 x i32> %0) {7963; AVX512F-LABEL: ult_29_v16i32:7964; AVX512F:       # %bb.0:7965; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm17966; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]7967; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm37968; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]7969; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]7970; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm37971; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm17972; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm17973; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm17974; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm17975; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm37976; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]7977; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm57978; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]7979; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm17980; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm17981; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm57982; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm57983; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm07984; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm07985; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm07986; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm07987; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]7988; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm27989; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]7990; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm07991; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm07992; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm07993; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k17994; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -17995; AVX512F-NEXT:    retq7996;7997; AVX512BW-LABEL: ult_29_v16i32:7998; AVX512BW:       # %bb.0:7999; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8000; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28001; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8002; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8003; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28004; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08005; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08006; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08007; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08008; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18009; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]8010; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm28011; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]8012; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08013; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm08014; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18015; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18016; AVX512BW-NEXT:    retq8017;8018; AVX512VPOPCNTDQ-LABEL: ult_29_v16i32:8019; AVX512VPOPCNTDQ:       # %bb.0:8020; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm08021; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18022; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18023; AVX512VPOPCNTDQ-NEXT:    retq8024;8025; BITALG-LABEL: ult_29_v16i32:8026; BITALG:       # %bb.0:8027; BITALG-NEXT:    vpopcntb %zmm0, %zmm08028; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18029; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]8030; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm28031; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]8032; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08033; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm08034; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18035; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18036; BITALG-NEXT:    retq8037  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)8038  %3 = icmp ult <16 x i32> %2, <i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29>8039  %4 = sext <16 x i1> %3 to <16 x i32>8040  ret <16 x i32> %48041}8042 8043define <16 x i32> @ugt_29_v16i32(<16 x i32> %0) {8044; AVX512F-LABEL: ugt_29_v16i32:8045; AVX512F:       # %bb.0:8046; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18047; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8048; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38049; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8050; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8051; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38052; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18053; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18054; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18055; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18056; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38057; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]8058; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm58059; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]8060; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18061; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm18062; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58063; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58064; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08065; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08066; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08067; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08068; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]8069; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm28070; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]8071; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08072; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm08073; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08074; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18075; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18076; AVX512F-NEXT:    retq8077;8078; AVX512BW-LABEL: ugt_29_v16i32:8079; AVX512BW:       # %bb.0:8080; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8081; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28082; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8083; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8084; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28085; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08086; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08087; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08088; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08089; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18090; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]8091; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm28092; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]8093; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08094; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm08095; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18096; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18097; AVX512BW-NEXT:    retq8098;8099; AVX512VPOPCNTDQ-LABEL: ugt_29_v16i32:8100; AVX512VPOPCNTDQ:       # %bb.0:8101; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm08102; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18103; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18104; AVX512VPOPCNTDQ-NEXT:    retq8105;8106; BITALG-LABEL: ugt_29_v16i32:8107; BITALG:       # %bb.0:8108; BITALG-NEXT:    vpopcntb %zmm0, %zmm08109; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18110; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]8111; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm28112; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]8113; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08114; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm08115; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18116; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18117; BITALG-NEXT:    retq8118  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)8119  %3 = icmp ugt <16 x i32> %2, <i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29>8120  %4 = sext <16 x i1> %3 to <16 x i32>8121  ret <16 x i32> %48122}8123 8124define <16 x i32> @ult_30_v16i32(<16 x i32> %0) {8125; AVX512F-LABEL: ult_30_v16i32:8126; AVX512F:       # %bb.0:8127; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18128; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8129; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38130; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8131; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8132; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38133; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18134; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18135; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18136; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18137; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38138; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]8139; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm58140; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]8141; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18142; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm18143; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58144; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58145; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08146; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08147; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08148; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08149; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]8150; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm28151; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]8152; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08153; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm08154; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08155; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18156; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18157; AVX512F-NEXT:    retq8158;8159; AVX512BW-LABEL: ult_30_v16i32:8160; AVX512BW:       # %bb.0:8161; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8162; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28163; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8164; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8165; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28166; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08167; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08168; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08169; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08170; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18171; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]8172; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm28173; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]8174; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08175; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm08176; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18177; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18178; AVX512BW-NEXT:    retq8179;8180; AVX512VPOPCNTDQ-LABEL: ult_30_v16i32:8181; AVX512VPOPCNTDQ:       # %bb.0:8182; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm08183; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18184; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18185; AVX512VPOPCNTDQ-NEXT:    retq8186;8187; BITALG-LABEL: ult_30_v16i32:8188; BITALG:       # %bb.0:8189; BITALG-NEXT:    vpopcntb %zmm0, %zmm08190; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18191; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]8192; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm28193; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]8194; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08195; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm08196; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18197; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18198; BITALG-NEXT:    retq8199  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)8200  %3 = icmp ult <16 x i32> %2, <i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30>8201  %4 = sext <16 x i1> %3 to <16 x i32>8202  ret <16 x i32> %48203}8204 8205define <16 x i32> @ugt_30_v16i32(<16 x i32> %0) {8206; AVX512F-LABEL: ugt_30_v16i32:8207; AVX512F:       # %bb.0:8208; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18209; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8210; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38211; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8212; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8213; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38214; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18215; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18216; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18217; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18218; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38219; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]8220; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm58221; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]8222; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18223; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm18224; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58225; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58226; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08227; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08228; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08229; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08230; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]8231; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm28232; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]8233; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08234; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm08235; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08236; AVX512F-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18237; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18238; AVX512F-NEXT:    retq8239;8240; AVX512BW-LABEL: ugt_30_v16i32:8241; AVX512BW:       # %bb.0:8242; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8243; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28244; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8245; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8246; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28247; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08248; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08249; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08250; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08251; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18252; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]8253; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm28254; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]8255; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08256; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm08257; AVX512BW-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18258; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18259; AVX512BW-NEXT:    retq8260;8261; AVX512VPOPCNTDQ-LABEL: ugt_30_v16i32:8262; AVX512VPOPCNTDQ:       # %bb.0:8263; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm08264; AVX512VPOPCNTDQ-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18265; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18266; AVX512VPOPCNTDQ-NEXT:    retq8267;8268; BITALG-LABEL: ugt_30_v16i32:8269; BITALG:       # %bb.0:8270; BITALG-NEXT:    vpopcntb %zmm0, %zmm08271; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18272; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]8273; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm28274; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]8275; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08276; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm08277; BITALG-NEXT:    vpcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18278; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18279; BITALG-NEXT:    retq8280  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)8281  %3 = icmp ugt <16 x i32> %2, <i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30>8282  %4 = sext <16 x i1> %3 to <16 x i32>8283  ret <16 x i32> %48284}8285 8286define <16 x i32> @ult_31_v16i32(<16 x i32> %0) {8287; AVX512F-LABEL: ult_31_v16i32:8288; AVX512F:       # %bb.0:8289; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18290; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8291; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38292; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8293; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8294; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38295; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18296; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18297; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18298; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18299; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38300; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1[7],ymm3[7]8301; AVX512F-NEXT:    vpsadbw %ymm3, %ymm5, %ymm58302; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1[5],ymm3[5]8303; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18304; AVX512F-NEXT:    vpackuswb %ymm5, %ymm1, %ymm18305; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58306; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58307; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08308; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08309; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08310; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08311; AVX512F-NEXT:    vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0[7],ymm3[7]8312; AVX512F-NEXT:    vpsadbw %ymm3, %ymm2, %ymm28313; AVX512F-NEXT:    vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0[5],ymm3[5]8314; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08315; AVX512F-NEXT:    vpackuswb %ymm2, %ymm0, %ymm08316; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08317; AVX512F-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18318; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18319; AVX512F-NEXT:    retq8320;8321; AVX512BW-LABEL: ult_31_v16i32:8322; AVX512BW:       # %bb.0:8323; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8324; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28325; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8326; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8327; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28328; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08329; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08330; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08331; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08332; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18333; AVX512BW-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]8334; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm2, %zmm28335; AVX512BW-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]8336; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08337; AVX512BW-NEXT:    vpackuswb %zmm2, %zmm0, %zmm08338; AVX512BW-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18339; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18340; AVX512BW-NEXT:    retq8341;8342; AVX512VPOPCNTDQ-LABEL: ult_31_v16i32:8343; AVX512VPOPCNTDQ:       # %bb.0:8344; AVX512VPOPCNTDQ-NEXT:    vpopcntd %zmm0, %zmm08345; AVX512VPOPCNTDQ-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18346; AVX512VPOPCNTDQ-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18347; AVX512VPOPCNTDQ-NEXT:    retq8348;8349; BITALG-LABEL: ult_31_v16i32:8350; BITALG:       # %bb.0:8351; BITALG-NEXT:    vpopcntb %zmm0, %zmm08352; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18353; BITALG-NEXT:    vpunpckhdq {{.*#+}} zmm2 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15]8354; BITALG-NEXT:    vpsadbw %zmm1, %zmm2, %zmm28355; BITALG-NEXT:    vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13]8356; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08357; BITALG-NEXT:    vpackuswb %zmm2, %zmm0, %zmm08358; BITALG-NEXT:    vpcmpltd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %k18359; BITALG-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -18360; BITALG-NEXT:    retq8361  %2 = tail call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %0)8362  %3 = icmp ult <16 x i32> %2, <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>8363  %4 = sext <16 x i1> %3 to <16 x i32>8364  ret <16 x i32> %48365}8366 8367define <8 x i64> @ugt_1_v8i64(<8 x i64> %0) {8368; AVX512F-LABEL: ugt_1_v8i64:8369; AVX512F:       # %bb.0:8370; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm1 = -18371; AVX512F-NEXT:    vpaddq %zmm1, %zmm0, %zmm18372; AVX512F-NEXT:    vptestmq %zmm1, %zmm0, %k18373; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18374; AVX512F-NEXT:    retq8375;8376; AVX512BW-LABEL: ugt_1_v8i64:8377; AVX512BW:       # %bb.0:8378; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm1 = -18379; AVX512BW-NEXT:    vpaddq %zmm1, %zmm0, %zmm18380; AVX512BW-NEXT:    vptestmq %zmm1, %zmm0, %k18381; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18382; AVX512BW-NEXT:    retq8383;8384; AVX512VPOPCNTDQ-LABEL: ugt_1_v8i64:8385; AVX512VPOPCNTDQ:       # %bb.0:8386; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm08387; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18388; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18389; AVX512VPOPCNTDQ-NEXT:    retq8390;8391; BITALG-LABEL: ugt_1_v8i64:8392; BITALG:       # %bb.0:8393; BITALG-NEXT:    vpternlogd {{.*#+}} zmm1 = -18394; BITALG-NEXT:    vpaddq %zmm1, %zmm0, %zmm18395; BITALG-NEXT:    vptestmq %zmm1, %zmm0, %k18396; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18397; BITALG-NEXT:    retq8398  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)8399  %3 = icmp ugt <8 x i64> %2, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>8400  %4 = sext <8 x i1> %3 to <8 x i64>8401  ret <8 x i64> %48402}8403 8404define <8 x i64> @ult_2_v8i64(<8 x i64> %0) {8405; AVX512F-LABEL: ult_2_v8i64:8406; AVX512F:       # %bb.0:8407; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm1 = -18408; AVX512F-NEXT:    vpaddq %zmm1, %zmm0, %zmm18409; AVX512F-NEXT:    vptestnmq %zmm1, %zmm0, %k18410; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18411; AVX512F-NEXT:    retq8412;8413; AVX512BW-LABEL: ult_2_v8i64:8414; AVX512BW:       # %bb.0:8415; AVX512BW-NEXT:    vpternlogd {{.*#+}} zmm1 = -18416; AVX512BW-NEXT:    vpaddq %zmm1, %zmm0, %zmm18417; AVX512BW-NEXT:    vptestnmq %zmm1, %zmm0, %k18418; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18419; AVX512BW-NEXT:    retq8420;8421; AVX512VPOPCNTDQ-LABEL: ult_2_v8i64:8422; AVX512VPOPCNTDQ:       # %bb.0:8423; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm08424; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18425; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18426; AVX512VPOPCNTDQ-NEXT:    retq8427;8428; BITALG-LABEL: ult_2_v8i64:8429; BITALG:       # %bb.0:8430; BITALG-NEXT:    vpternlogd {{.*#+}} zmm1 = -18431; BITALG-NEXT:    vpaddq %zmm1, %zmm0, %zmm18432; BITALG-NEXT:    vptestnmq %zmm1, %zmm0, %k18433; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18434; BITALG-NEXT:    retq8435  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)8436  %3 = icmp ult <8 x i64> %2, <i64 2, i64 2, i64 2, i64 2, i64 2, i64 2, i64 2, i64 2>8437  %4 = sext <8 x i1> %3 to <8 x i64>8438  ret <8 x i64> %48439}8440 8441define <8 x i64> @ugt_2_v8i64(<8 x i64> %0) {8442; AVX512F-LABEL: ugt_2_v8i64:8443; AVX512F:       # %bb.0:8444; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18445; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8446; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38447; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8448; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8449; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38450; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18451; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18452; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18453; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18454; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38455; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18456; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58457; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58458; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08459; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08460; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08461; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08462; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08463; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08464; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18465; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18466; AVX512F-NEXT:    retq8467;8468; AVX512BW-LABEL: ugt_2_v8i64:8469; AVX512BW:       # %bb.0:8470; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8471; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28472; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8473; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8474; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28475; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08476; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08477; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08478; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08479; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18480; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08481; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18482; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18483; AVX512BW-NEXT:    retq8484;8485; AVX512VPOPCNTDQ-LABEL: ugt_2_v8i64:8486; AVX512VPOPCNTDQ:       # %bb.0:8487; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm08488; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18489; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18490; AVX512VPOPCNTDQ-NEXT:    retq8491;8492; BITALG-LABEL: ugt_2_v8i64:8493; BITALG:       # %bb.0:8494; BITALG-NEXT:    vpopcntb %zmm0, %zmm08495; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18496; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08497; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18498; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18499; BITALG-NEXT:    retq8500  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)8501  %3 = icmp ugt <8 x i64> %2, <i64 2, i64 2, i64 2, i64 2, i64 2, i64 2, i64 2, i64 2>8502  %4 = sext <8 x i1> %3 to <8 x i64>8503  ret <8 x i64> %48504}8505 8506define <8 x i64> @ult_3_v8i64(<8 x i64> %0) {8507; AVX512F-LABEL: ult_3_v8i64:8508; AVX512F:       # %bb.0:8509; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18510; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8511; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38512; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8513; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8514; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38515; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18516; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18517; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18518; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18519; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38520; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18521; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58522; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58523; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08524; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08525; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08526; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08527; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08528; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08529; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18530; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18531; AVX512F-NEXT:    retq8532;8533; AVX512BW-LABEL: ult_3_v8i64:8534; AVX512BW:       # %bb.0:8535; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8536; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28537; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8538; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8539; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28540; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08541; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08542; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08543; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08544; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18545; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08546; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18547; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18548; AVX512BW-NEXT:    retq8549;8550; AVX512VPOPCNTDQ-LABEL: ult_3_v8i64:8551; AVX512VPOPCNTDQ:       # %bb.0:8552; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm08553; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18554; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18555; AVX512VPOPCNTDQ-NEXT:    retq8556;8557; BITALG-LABEL: ult_3_v8i64:8558; BITALG:       # %bb.0:8559; BITALG-NEXT:    vpopcntb %zmm0, %zmm08560; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18561; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08562; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18563; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18564; BITALG-NEXT:    retq8565  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)8566  %3 = icmp ult <8 x i64> %2, <i64 3, i64 3, i64 3, i64 3, i64 3, i64 3, i64 3, i64 3>8567  %4 = sext <8 x i1> %3 to <8 x i64>8568  ret <8 x i64> %48569}8570 8571define <8 x i64> @ugt_3_v8i64(<8 x i64> %0) {8572; AVX512F-LABEL: ugt_3_v8i64:8573; AVX512F:       # %bb.0:8574; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18575; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8576; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38577; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8578; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8579; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38580; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18581; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18582; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18583; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18584; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38585; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18586; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58587; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58588; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08589; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08590; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08591; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08592; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08593; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08594; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18595; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18596; AVX512F-NEXT:    retq8597;8598; AVX512BW-LABEL: ugt_3_v8i64:8599; AVX512BW:       # %bb.0:8600; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8601; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28602; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8603; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8604; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28605; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08606; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08607; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08608; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08609; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18610; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08611; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18612; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18613; AVX512BW-NEXT:    retq8614;8615; AVX512VPOPCNTDQ-LABEL: ugt_3_v8i64:8616; AVX512VPOPCNTDQ:       # %bb.0:8617; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm08618; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18619; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18620; AVX512VPOPCNTDQ-NEXT:    retq8621;8622; BITALG-LABEL: ugt_3_v8i64:8623; BITALG:       # %bb.0:8624; BITALG-NEXT:    vpopcntb %zmm0, %zmm08625; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18626; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08627; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18628; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18629; BITALG-NEXT:    retq8630  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)8631  %3 = icmp ugt <8 x i64> %2, <i64 3, i64 3, i64 3, i64 3, i64 3, i64 3, i64 3, i64 3>8632  %4 = sext <8 x i1> %3 to <8 x i64>8633  ret <8 x i64> %48634}8635 8636define <8 x i64> @ult_4_v8i64(<8 x i64> %0) {8637; AVX512F-LABEL: ult_4_v8i64:8638; AVX512F:       # %bb.0:8639; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18640; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8641; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38642; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8643; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8644; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38645; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18646; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18647; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18648; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18649; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38650; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18651; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58652; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58653; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08654; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08655; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08656; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08657; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08658; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08659; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18660; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18661; AVX512F-NEXT:    retq8662;8663; AVX512BW-LABEL: ult_4_v8i64:8664; AVX512BW:       # %bb.0:8665; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8666; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28667; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8668; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8669; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28670; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08671; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08672; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08673; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08674; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18675; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08676; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18677; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18678; AVX512BW-NEXT:    retq8679;8680; AVX512VPOPCNTDQ-LABEL: ult_4_v8i64:8681; AVX512VPOPCNTDQ:       # %bb.0:8682; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm08683; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18684; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18685; AVX512VPOPCNTDQ-NEXT:    retq8686;8687; BITALG-LABEL: ult_4_v8i64:8688; BITALG:       # %bb.0:8689; BITALG-NEXT:    vpopcntb %zmm0, %zmm08690; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18691; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08692; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18693; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18694; BITALG-NEXT:    retq8695  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)8696  %3 = icmp ult <8 x i64> %2, <i64 4, i64 4, i64 4, i64 4, i64 4, i64 4, i64 4, i64 4>8697  %4 = sext <8 x i1> %3 to <8 x i64>8698  ret <8 x i64> %48699}8700 8701define <8 x i64> @ugt_4_v8i64(<8 x i64> %0) {8702; AVX512F-LABEL: ugt_4_v8i64:8703; AVX512F:       # %bb.0:8704; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18705; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8706; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38707; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8708; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8709; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38710; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18711; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18712; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18713; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18714; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38715; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18716; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58717; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58718; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08719; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08720; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08721; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08722; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08723; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08724; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18725; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18726; AVX512F-NEXT:    retq8727;8728; AVX512BW-LABEL: ugt_4_v8i64:8729; AVX512BW:       # %bb.0:8730; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8731; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28732; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8733; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8734; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28735; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08736; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08737; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08738; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08739; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18740; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08741; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18742; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18743; AVX512BW-NEXT:    retq8744;8745; AVX512VPOPCNTDQ-LABEL: ugt_4_v8i64:8746; AVX512VPOPCNTDQ:       # %bb.0:8747; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm08748; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18749; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18750; AVX512VPOPCNTDQ-NEXT:    retq8751;8752; BITALG-LABEL: ugt_4_v8i64:8753; BITALG:       # %bb.0:8754; BITALG-NEXT:    vpopcntb %zmm0, %zmm08755; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18756; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08757; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18758; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18759; BITALG-NEXT:    retq8760  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)8761  %3 = icmp ugt <8 x i64> %2, <i64 4, i64 4, i64 4, i64 4, i64 4, i64 4, i64 4, i64 4>8762  %4 = sext <8 x i1> %3 to <8 x i64>8763  ret <8 x i64> %48764}8765 8766define <8 x i64> @ult_5_v8i64(<8 x i64> %0) {8767; AVX512F-LABEL: ult_5_v8i64:8768; AVX512F:       # %bb.0:8769; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18770; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8771; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38772; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8773; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8774; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38775; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18776; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18777; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18778; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18779; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38780; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18781; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58782; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58783; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08784; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08785; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08786; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08787; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08788; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08789; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18790; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18791; AVX512F-NEXT:    retq8792;8793; AVX512BW-LABEL: ult_5_v8i64:8794; AVX512BW:       # %bb.0:8795; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8796; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28797; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8798; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8799; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28800; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08801; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08802; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08803; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08804; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18805; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08806; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18807; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18808; AVX512BW-NEXT:    retq8809;8810; AVX512VPOPCNTDQ-LABEL: ult_5_v8i64:8811; AVX512VPOPCNTDQ:       # %bb.0:8812; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm08813; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18814; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18815; AVX512VPOPCNTDQ-NEXT:    retq8816;8817; BITALG-LABEL: ult_5_v8i64:8818; BITALG:       # %bb.0:8819; BITALG-NEXT:    vpopcntb %zmm0, %zmm08820; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18821; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08822; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18823; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18824; BITALG-NEXT:    retq8825  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)8826  %3 = icmp ult <8 x i64> %2, <i64 5, i64 5, i64 5, i64 5, i64 5, i64 5, i64 5, i64 5>8827  %4 = sext <8 x i1> %3 to <8 x i64>8828  ret <8 x i64> %48829}8830 8831define <8 x i64> @ugt_5_v8i64(<8 x i64> %0) {8832; AVX512F-LABEL: ugt_5_v8i64:8833; AVX512F:       # %bb.0:8834; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18835; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8836; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38837; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8838; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8839; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38840; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18841; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18842; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18843; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18844; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38845; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18846; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58847; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58848; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08849; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08850; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08851; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08852; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08853; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08854; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18855; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18856; AVX512F-NEXT:    retq8857;8858; AVX512BW-LABEL: ugt_5_v8i64:8859; AVX512BW:       # %bb.0:8860; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8861; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28862; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8863; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8864; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28865; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08866; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08867; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08868; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08869; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18870; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08871; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18872; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18873; AVX512BW-NEXT:    retq8874;8875; AVX512VPOPCNTDQ-LABEL: ugt_5_v8i64:8876; AVX512VPOPCNTDQ:       # %bb.0:8877; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm08878; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18879; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18880; AVX512VPOPCNTDQ-NEXT:    retq8881;8882; BITALG-LABEL: ugt_5_v8i64:8883; BITALG:       # %bb.0:8884; BITALG-NEXT:    vpopcntb %zmm0, %zmm08885; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18886; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08887; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18888; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18889; BITALG-NEXT:    retq8890  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)8891  %3 = icmp ugt <8 x i64> %2, <i64 5, i64 5, i64 5, i64 5, i64 5, i64 5, i64 5, i64 5>8892  %4 = sext <8 x i1> %3 to <8 x i64>8893  ret <8 x i64> %48894}8895 8896define <8 x i64> @ult_6_v8i64(<8 x i64> %0) {8897; AVX512F-LABEL: ult_6_v8i64:8898; AVX512F:       # %bb.0:8899; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18900; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8901; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38902; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8903; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8904; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38905; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18906; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18907; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18908; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18909; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38910; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18911; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58912; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58913; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08914; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08915; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08916; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08917; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08918; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08919; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18920; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18921; AVX512F-NEXT:    retq8922;8923; AVX512BW-LABEL: ult_6_v8i64:8924; AVX512BW:       # %bb.0:8925; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8926; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28927; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8928; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8929; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28930; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08931; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08932; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08933; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08934; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm18935; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08936; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18937; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18938; AVX512BW-NEXT:    retq8939;8940; AVX512VPOPCNTDQ-LABEL: ult_6_v8i64:8941; AVX512VPOPCNTDQ:       # %bb.0:8942; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm08943; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18944; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18945; AVX512VPOPCNTDQ-NEXT:    retq8946;8947; BITALG-LABEL: ult_6_v8i64:8948; BITALG:       # %bb.0:8949; BITALG-NEXT:    vpopcntb %zmm0, %zmm08950; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm18951; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm08952; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18953; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18954; BITALG-NEXT:    retq8955  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)8956  %3 = icmp ult <8 x i64> %2, <i64 6, i64 6, i64 6, i64 6, i64 6, i64 6, i64 6, i64 6>8957  %4 = sext <8 x i1> %3 to <8 x i64>8958  ret <8 x i64> %48959}8960 8961define <8 x i64> @ugt_6_v8i64(<8 x i64> %0) {8962; AVX512F-LABEL: ugt_6_v8i64:8963; AVX512F:       # %bb.0:8964; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm18965; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8966; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm38967; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8968; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]8969; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm38970; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm18971; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm18972; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm18973; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm18974; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm38975; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm18976; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm58977; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm58978; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm08979; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm08980; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm08981; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm08982; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm08983; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm08984; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k18985; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -18986; AVX512F-NEXT:    retq8987;8988; AVX512BW-LABEL: ugt_6_v8i64:8989; AVX512BW:       # %bb.0:8990; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]8991; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm28992; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]8993; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]8994; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm28995; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm08996; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm08997; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm08998; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm08999; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19000; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09001; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19002; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19003; AVX512BW-NEXT:    retq9004;9005; AVX512VPOPCNTDQ-LABEL: ugt_6_v8i64:9006; AVX512VPOPCNTDQ:       # %bb.0:9007; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09008; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19009; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19010; AVX512VPOPCNTDQ-NEXT:    retq9011;9012; BITALG-LABEL: ugt_6_v8i64:9013; BITALG:       # %bb.0:9014; BITALG-NEXT:    vpopcntb %zmm0, %zmm09015; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19016; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09017; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19018; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19019; BITALG-NEXT:    retq9020  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9021  %3 = icmp ugt <8 x i64> %2, <i64 6, i64 6, i64 6, i64 6, i64 6, i64 6, i64 6, i64 6>9022  %4 = sext <8 x i1> %3 to <8 x i64>9023  ret <8 x i64> %49024}9025 9026define <8 x i64> @ult_7_v8i64(<8 x i64> %0) {9027; AVX512F-LABEL: ult_7_v8i64:9028; AVX512F:       # %bb.0:9029; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19030; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9031; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39032; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9033; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9034; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39035; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19036; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19037; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19038; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19039; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39040; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19041; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59042; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59043; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09044; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09045; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09046; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09047; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09048; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09049; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19050; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19051; AVX512F-NEXT:    retq9052;9053; AVX512BW-LABEL: ult_7_v8i64:9054; AVX512BW:       # %bb.0:9055; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9056; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29057; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9058; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9059; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29060; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09061; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09062; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09063; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09064; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19065; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09066; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19067; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19068; AVX512BW-NEXT:    retq9069;9070; AVX512VPOPCNTDQ-LABEL: ult_7_v8i64:9071; AVX512VPOPCNTDQ:       # %bb.0:9072; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09073; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19074; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19075; AVX512VPOPCNTDQ-NEXT:    retq9076;9077; BITALG-LABEL: ult_7_v8i64:9078; BITALG:       # %bb.0:9079; BITALG-NEXT:    vpopcntb %zmm0, %zmm09080; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19081; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09082; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19083; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19084; BITALG-NEXT:    retq9085  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9086  %3 = icmp ult <8 x i64> %2, <i64 7, i64 7, i64 7, i64 7, i64 7, i64 7, i64 7, i64 7>9087  %4 = sext <8 x i1> %3 to <8 x i64>9088  ret <8 x i64> %49089}9090 9091define <8 x i64> @ugt_7_v8i64(<8 x i64> %0) {9092; AVX512F-LABEL: ugt_7_v8i64:9093; AVX512F:       # %bb.0:9094; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19095; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9096; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39097; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9098; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9099; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39100; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19101; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19102; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19103; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19104; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39105; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19106; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59107; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59108; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09109; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09110; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09111; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09112; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09113; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09114; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19115; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19116; AVX512F-NEXT:    retq9117;9118; AVX512BW-LABEL: ugt_7_v8i64:9119; AVX512BW:       # %bb.0:9120; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9121; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29122; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9123; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9124; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29125; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09126; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09127; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09128; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09129; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19130; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09131; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19132; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19133; AVX512BW-NEXT:    retq9134;9135; AVX512VPOPCNTDQ-LABEL: ugt_7_v8i64:9136; AVX512VPOPCNTDQ:       # %bb.0:9137; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09138; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19139; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19140; AVX512VPOPCNTDQ-NEXT:    retq9141;9142; BITALG-LABEL: ugt_7_v8i64:9143; BITALG:       # %bb.0:9144; BITALG-NEXT:    vpopcntb %zmm0, %zmm09145; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19146; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09147; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19148; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19149; BITALG-NEXT:    retq9150  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9151  %3 = icmp ugt <8 x i64> %2, <i64 7, i64 7, i64 7, i64 7, i64 7, i64 7, i64 7, i64 7>9152  %4 = sext <8 x i1> %3 to <8 x i64>9153  ret <8 x i64> %49154}9155 9156define <8 x i64> @ult_8_v8i64(<8 x i64> %0) {9157; AVX512F-LABEL: ult_8_v8i64:9158; AVX512F:       # %bb.0:9159; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19160; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9161; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39162; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9163; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9164; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39165; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19166; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19167; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19168; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19169; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39170; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19171; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59172; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59173; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09174; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09175; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09176; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09177; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09178; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09179; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19180; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19181; AVX512F-NEXT:    retq9182;9183; AVX512BW-LABEL: ult_8_v8i64:9184; AVX512BW:       # %bb.0:9185; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9186; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29187; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9188; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9189; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29190; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09191; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09192; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09193; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09194; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19195; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09196; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19197; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19198; AVX512BW-NEXT:    retq9199;9200; AVX512VPOPCNTDQ-LABEL: ult_8_v8i64:9201; AVX512VPOPCNTDQ:       # %bb.0:9202; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09203; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19204; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19205; AVX512VPOPCNTDQ-NEXT:    retq9206;9207; BITALG-LABEL: ult_8_v8i64:9208; BITALG:       # %bb.0:9209; BITALG-NEXT:    vpopcntb %zmm0, %zmm09210; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19211; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09212; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19213; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19214; BITALG-NEXT:    retq9215  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9216  %3 = icmp ult <8 x i64> %2, <i64 8, i64 8, i64 8, i64 8, i64 8, i64 8, i64 8, i64 8>9217  %4 = sext <8 x i1> %3 to <8 x i64>9218  ret <8 x i64> %49219}9220 9221define <8 x i64> @ugt_8_v8i64(<8 x i64> %0) {9222; AVX512F-LABEL: ugt_8_v8i64:9223; AVX512F:       # %bb.0:9224; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19225; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9226; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39227; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9228; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9229; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39230; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19231; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19232; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19233; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19234; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39235; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19236; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59237; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59238; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09239; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09240; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09241; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09242; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09243; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09244; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19245; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19246; AVX512F-NEXT:    retq9247;9248; AVX512BW-LABEL: ugt_8_v8i64:9249; AVX512BW:       # %bb.0:9250; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9251; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29252; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9253; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9254; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29255; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09256; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09257; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09258; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09259; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19260; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09261; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19262; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19263; AVX512BW-NEXT:    retq9264;9265; AVX512VPOPCNTDQ-LABEL: ugt_8_v8i64:9266; AVX512VPOPCNTDQ:       # %bb.0:9267; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09268; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19269; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19270; AVX512VPOPCNTDQ-NEXT:    retq9271;9272; BITALG-LABEL: ugt_8_v8i64:9273; BITALG:       # %bb.0:9274; BITALG-NEXT:    vpopcntb %zmm0, %zmm09275; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19276; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09277; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19278; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19279; BITALG-NEXT:    retq9280  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9281  %3 = icmp ugt <8 x i64> %2, <i64 8, i64 8, i64 8, i64 8, i64 8, i64 8, i64 8, i64 8>9282  %4 = sext <8 x i1> %3 to <8 x i64>9283  ret <8 x i64> %49284}9285 9286define <8 x i64> @ult_9_v8i64(<8 x i64> %0) {9287; AVX512F-LABEL: ult_9_v8i64:9288; AVX512F:       # %bb.0:9289; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19290; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9291; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39292; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9293; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9294; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39295; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19296; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19297; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19298; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19299; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39300; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19301; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59302; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59303; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09304; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09305; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09306; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09307; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09308; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09309; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19310; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19311; AVX512F-NEXT:    retq9312;9313; AVX512BW-LABEL: ult_9_v8i64:9314; AVX512BW:       # %bb.0:9315; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9316; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29317; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9318; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9319; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29320; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09321; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09322; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09323; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09324; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19325; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09326; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19327; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19328; AVX512BW-NEXT:    retq9329;9330; AVX512VPOPCNTDQ-LABEL: ult_9_v8i64:9331; AVX512VPOPCNTDQ:       # %bb.0:9332; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09333; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19334; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19335; AVX512VPOPCNTDQ-NEXT:    retq9336;9337; BITALG-LABEL: ult_9_v8i64:9338; BITALG:       # %bb.0:9339; BITALG-NEXT:    vpopcntb %zmm0, %zmm09340; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19341; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09342; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19343; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19344; BITALG-NEXT:    retq9345  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9346  %3 = icmp ult <8 x i64> %2, <i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9>9347  %4 = sext <8 x i1> %3 to <8 x i64>9348  ret <8 x i64> %49349}9350 9351define <8 x i64> @ugt_9_v8i64(<8 x i64> %0) {9352; AVX512F-LABEL: ugt_9_v8i64:9353; AVX512F:       # %bb.0:9354; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19355; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9356; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39357; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9358; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9359; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39360; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19361; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19362; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19363; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19364; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39365; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19366; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59367; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59368; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09369; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09370; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09371; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09372; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09373; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09374; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19375; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19376; AVX512F-NEXT:    retq9377;9378; AVX512BW-LABEL: ugt_9_v8i64:9379; AVX512BW:       # %bb.0:9380; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9381; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29382; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9383; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9384; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29385; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09386; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09387; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09388; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09389; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19390; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09391; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19392; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19393; AVX512BW-NEXT:    retq9394;9395; AVX512VPOPCNTDQ-LABEL: ugt_9_v8i64:9396; AVX512VPOPCNTDQ:       # %bb.0:9397; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09398; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19399; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19400; AVX512VPOPCNTDQ-NEXT:    retq9401;9402; BITALG-LABEL: ugt_9_v8i64:9403; BITALG:       # %bb.0:9404; BITALG-NEXT:    vpopcntb %zmm0, %zmm09405; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19406; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09407; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19408; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19409; BITALG-NEXT:    retq9410  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9411  %3 = icmp ugt <8 x i64> %2, <i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9>9412  %4 = sext <8 x i1> %3 to <8 x i64>9413  ret <8 x i64> %49414}9415 9416define <8 x i64> @ult_10_v8i64(<8 x i64> %0) {9417; AVX512F-LABEL: ult_10_v8i64:9418; AVX512F:       # %bb.0:9419; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19420; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9421; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39422; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9423; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9424; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39425; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19426; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19427; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19428; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19429; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39430; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19431; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59432; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59433; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09434; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09435; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09436; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09437; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09438; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09439; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19440; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19441; AVX512F-NEXT:    retq9442;9443; AVX512BW-LABEL: ult_10_v8i64:9444; AVX512BW:       # %bb.0:9445; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9446; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29447; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9448; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9449; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29450; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09451; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09452; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09453; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09454; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19455; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09456; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19457; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19458; AVX512BW-NEXT:    retq9459;9460; AVX512VPOPCNTDQ-LABEL: ult_10_v8i64:9461; AVX512VPOPCNTDQ:       # %bb.0:9462; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09463; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19464; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19465; AVX512VPOPCNTDQ-NEXT:    retq9466;9467; BITALG-LABEL: ult_10_v8i64:9468; BITALG:       # %bb.0:9469; BITALG-NEXT:    vpopcntb %zmm0, %zmm09470; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19471; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09472; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19473; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19474; BITALG-NEXT:    retq9475  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9476  %3 = icmp ult <8 x i64> %2, <i64 10, i64 10, i64 10, i64 10, i64 10, i64 10, i64 10, i64 10>9477  %4 = sext <8 x i1> %3 to <8 x i64>9478  ret <8 x i64> %49479}9480 9481define <8 x i64> @ugt_10_v8i64(<8 x i64> %0) {9482; AVX512F-LABEL: ugt_10_v8i64:9483; AVX512F:       # %bb.0:9484; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19485; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9486; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39487; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9488; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9489; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39490; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19491; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19492; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19493; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19494; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39495; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19496; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59497; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59498; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09499; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09500; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09501; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09502; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09503; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09504; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19505; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19506; AVX512F-NEXT:    retq9507;9508; AVX512BW-LABEL: ugt_10_v8i64:9509; AVX512BW:       # %bb.0:9510; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9511; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29512; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9513; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9514; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29515; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09516; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09517; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09518; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09519; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19520; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09521; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19522; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19523; AVX512BW-NEXT:    retq9524;9525; AVX512VPOPCNTDQ-LABEL: ugt_10_v8i64:9526; AVX512VPOPCNTDQ:       # %bb.0:9527; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09528; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19529; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19530; AVX512VPOPCNTDQ-NEXT:    retq9531;9532; BITALG-LABEL: ugt_10_v8i64:9533; BITALG:       # %bb.0:9534; BITALG-NEXT:    vpopcntb %zmm0, %zmm09535; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19536; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09537; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19538; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19539; BITALG-NEXT:    retq9540  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9541  %3 = icmp ugt <8 x i64> %2, <i64 10, i64 10, i64 10, i64 10, i64 10, i64 10, i64 10, i64 10>9542  %4 = sext <8 x i1> %3 to <8 x i64>9543  ret <8 x i64> %49544}9545 9546define <8 x i64> @ult_11_v8i64(<8 x i64> %0) {9547; AVX512F-LABEL: ult_11_v8i64:9548; AVX512F:       # %bb.0:9549; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19550; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9551; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39552; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9553; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9554; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39555; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19556; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19557; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19558; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19559; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39560; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19561; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59562; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59563; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09564; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09565; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09566; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09567; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09568; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09569; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19570; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19571; AVX512F-NEXT:    retq9572;9573; AVX512BW-LABEL: ult_11_v8i64:9574; AVX512BW:       # %bb.0:9575; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9576; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29577; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9578; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9579; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29580; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09581; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09582; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09583; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09584; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19585; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09586; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19587; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19588; AVX512BW-NEXT:    retq9589;9590; AVX512VPOPCNTDQ-LABEL: ult_11_v8i64:9591; AVX512VPOPCNTDQ:       # %bb.0:9592; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09593; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19594; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19595; AVX512VPOPCNTDQ-NEXT:    retq9596;9597; BITALG-LABEL: ult_11_v8i64:9598; BITALG:       # %bb.0:9599; BITALG-NEXT:    vpopcntb %zmm0, %zmm09600; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19601; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09602; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19603; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19604; BITALG-NEXT:    retq9605  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9606  %3 = icmp ult <8 x i64> %2, <i64 11, i64 11, i64 11, i64 11, i64 11, i64 11, i64 11, i64 11>9607  %4 = sext <8 x i1> %3 to <8 x i64>9608  ret <8 x i64> %49609}9610 9611define <8 x i64> @ugt_11_v8i64(<8 x i64> %0) {9612; AVX512F-LABEL: ugt_11_v8i64:9613; AVX512F:       # %bb.0:9614; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19615; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9616; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39617; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9618; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9619; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39620; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19621; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19622; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19623; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19624; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39625; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19626; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59627; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59628; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09629; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09630; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09631; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09632; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09633; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09634; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19635; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19636; AVX512F-NEXT:    retq9637;9638; AVX512BW-LABEL: ugt_11_v8i64:9639; AVX512BW:       # %bb.0:9640; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9641; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29642; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9643; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9644; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29645; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09646; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09647; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09648; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09649; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19650; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09651; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19652; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19653; AVX512BW-NEXT:    retq9654;9655; AVX512VPOPCNTDQ-LABEL: ugt_11_v8i64:9656; AVX512VPOPCNTDQ:       # %bb.0:9657; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09658; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19659; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19660; AVX512VPOPCNTDQ-NEXT:    retq9661;9662; BITALG-LABEL: ugt_11_v8i64:9663; BITALG:       # %bb.0:9664; BITALG-NEXT:    vpopcntb %zmm0, %zmm09665; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19666; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09667; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19668; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19669; BITALG-NEXT:    retq9670  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9671  %3 = icmp ugt <8 x i64> %2, <i64 11, i64 11, i64 11, i64 11, i64 11, i64 11, i64 11, i64 11>9672  %4 = sext <8 x i1> %3 to <8 x i64>9673  ret <8 x i64> %49674}9675 9676define <8 x i64> @ult_12_v8i64(<8 x i64> %0) {9677; AVX512F-LABEL: ult_12_v8i64:9678; AVX512F:       # %bb.0:9679; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19680; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9681; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39682; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9683; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9684; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39685; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19686; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19687; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19688; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19689; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39690; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19691; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59692; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59693; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09694; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09695; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09696; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09697; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09698; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09699; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19700; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19701; AVX512F-NEXT:    retq9702;9703; AVX512BW-LABEL: ult_12_v8i64:9704; AVX512BW:       # %bb.0:9705; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9706; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29707; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9708; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9709; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29710; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09711; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09712; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09713; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09714; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19715; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09716; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19717; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19718; AVX512BW-NEXT:    retq9719;9720; AVX512VPOPCNTDQ-LABEL: ult_12_v8i64:9721; AVX512VPOPCNTDQ:       # %bb.0:9722; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09723; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19724; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19725; AVX512VPOPCNTDQ-NEXT:    retq9726;9727; BITALG-LABEL: ult_12_v8i64:9728; BITALG:       # %bb.0:9729; BITALG-NEXT:    vpopcntb %zmm0, %zmm09730; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19731; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09732; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19733; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19734; BITALG-NEXT:    retq9735  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9736  %3 = icmp ult <8 x i64> %2, <i64 12, i64 12, i64 12, i64 12, i64 12, i64 12, i64 12, i64 12>9737  %4 = sext <8 x i1> %3 to <8 x i64>9738  ret <8 x i64> %49739}9740 9741define <8 x i64> @ugt_12_v8i64(<8 x i64> %0) {9742; AVX512F-LABEL: ugt_12_v8i64:9743; AVX512F:       # %bb.0:9744; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19745; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9746; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39747; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9748; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9749; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39750; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19751; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19752; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19753; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19754; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39755; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19756; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59757; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59758; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09759; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09760; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09761; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09762; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09763; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09764; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19765; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19766; AVX512F-NEXT:    retq9767;9768; AVX512BW-LABEL: ugt_12_v8i64:9769; AVX512BW:       # %bb.0:9770; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9771; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29772; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9773; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9774; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29775; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09776; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09777; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09778; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09779; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19780; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09781; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19782; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19783; AVX512BW-NEXT:    retq9784;9785; AVX512VPOPCNTDQ-LABEL: ugt_12_v8i64:9786; AVX512VPOPCNTDQ:       # %bb.0:9787; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09788; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19789; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19790; AVX512VPOPCNTDQ-NEXT:    retq9791;9792; BITALG-LABEL: ugt_12_v8i64:9793; BITALG:       # %bb.0:9794; BITALG-NEXT:    vpopcntb %zmm0, %zmm09795; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19796; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09797; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19798; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19799; BITALG-NEXT:    retq9800  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9801  %3 = icmp ugt <8 x i64> %2, <i64 12, i64 12, i64 12, i64 12, i64 12, i64 12, i64 12, i64 12>9802  %4 = sext <8 x i1> %3 to <8 x i64>9803  ret <8 x i64> %49804}9805 9806define <8 x i64> @ult_13_v8i64(<8 x i64> %0) {9807; AVX512F-LABEL: ult_13_v8i64:9808; AVX512F:       # %bb.0:9809; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19810; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9811; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39812; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9813; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9814; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39815; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19816; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19817; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19818; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19819; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39820; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19821; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59822; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59823; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09824; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09825; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09826; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09827; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09828; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09829; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19830; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19831; AVX512F-NEXT:    retq9832;9833; AVX512BW-LABEL: ult_13_v8i64:9834; AVX512BW:       # %bb.0:9835; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9836; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29837; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9838; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9839; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29840; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09841; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09842; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09843; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09844; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19845; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09846; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19847; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19848; AVX512BW-NEXT:    retq9849;9850; AVX512VPOPCNTDQ-LABEL: ult_13_v8i64:9851; AVX512VPOPCNTDQ:       # %bb.0:9852; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09853; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19854; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19855; AVX512VPOPCNTDQ-NEXT:    retq9856;9857; BITALG-LABEL: ult_13_v8i64:9858; BITALG:       # %bb.0:9859; BITALG-NEXT:    vpopcntb %zmm0, %zmm09860; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19861; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09862; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19863; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19864; BITALG-NEXT:    retq9865  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9866  %3 = icmp ult <8 x i64> %2, <i64 13, i64 13, i64 13, i64 13, i64 13, i64 13, i64 13, i64 13>9867  %4 = sext <8 x i1> %3 to <8 x i64>9868  ret <8 x i64> %49869}9870 9871define <8 x i64> @ugt_13_v8i64(<8 x i64> %0) {9872; AVX512F-LABEL: ugt_13_v8i64:9873; AVX512F:       # %bb.0:9874; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19875; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9876; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39877; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9878; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9879; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39880; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19881; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19882; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19883; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19884; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39885; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19886; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59887; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59888; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09889; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09890; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09891; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09892; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09893; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09894; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19895; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19896; AVX512F-NEXT:    retq9897;9898; AVX512BW-LABEL: ugt_13_v8i64:9899; AVX512BW:       # %bb.0:9900; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9901; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29902; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9903; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9904; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29905; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09906; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09907; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09908; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09909; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19910; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09911; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19912; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19913; AVX512BW-NEXT:    retq9914;9915; AVX512VPOPCNTDQ-LABEL: ugt_13_v8i64:9916; AVX512VPOPCNTDQ:       # %bb.0:9917; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09918; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19919; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19920; AVX512VPOPCNTDQ-NEXT:    retq9921;9922; BITALG-LABEL: ugt_13_v8i64:9923; BITALG:       # %bb.0:9924; BITALG-NEXT:    vpopcntb %zmm0, %zmm09925; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19926; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09927; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19928; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19929; BITALG-NEXT:    retq9930  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9931  %3 = icmp ugt <8 x i64> %2, <i64 13, i64 13, i64 13, i64 13, i64 13, i64 13, i64 13, i64 13>9932  %4 = sext <8 x i1> %3 to <8 x i64>9933  ret <8 x i64> %49934}9935 9936define <8 x i64> @ult_14_v8i64(<8 x i64> %0) {9937; AVX512F-LABEL: ult_14_v8i64:9938; AVX512F:       # %bb.0:9939; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm19940; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9941; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm39942; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9943; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]9944; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm39945; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm19946; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm19947; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm19948; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm19949; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm39950; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm19951; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm59952; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm59953; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm09954; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm09955; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm09956; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm09957; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm09958; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm09959; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19960; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19961; AVX512F-NEXT:    retq9962;9963; AVX512BW-LABEL: ult_14_v8i64:9964; AVX512BW:       # %bb.0:9965; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]9966; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm29967; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]9968; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]9969; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm29970; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm09971; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm09972; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm09973; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm09974; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm19975; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09976; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19977; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19978; AVX512BW-NEXT:    retq9979;9980; AVX512VPOPCNTDQ-LABEL: ult_14_v8i64:9981; AVX512VPOPCNTDQ:       # %bb.0:9982; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm09983; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19984; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19985; AVX512VPOPCNTDQ-NEXT:    retq9986;9987; BITALG-LABEL: ult_14_v8i64:9988; BITALG:       # %bb.0:9989; BITALG-NEXT:    vpopcntb %zmm0, %zmm09990; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm19991; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm09992; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k19993; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -19994; BITALG-NEXT:    retq9995  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)9996  %3 = icmp ult <8 x i64> %2, <i64 14, i64 14, i64 14, i64 14, i64 14, i64 14, i64 14, i64 14>9997  %4 = sext <8 x i1> %3 to <8 x i64>9998  ret <8 x i64> %49999}10000 10001define <8 x i64> @ugt_14_v8i64(<8 x i64> %0) {10002; AVX512F-LABEL: ugt_14_v8i64:10003; AVX512F:       # %bb.0:10004; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110005; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10006; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310007; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10008; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10009; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310010; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110011; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110012; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110013; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110014; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310015; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110016; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510017; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510018; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010019; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010020; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010021; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010022; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010023; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010024; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110025; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110026; AVX512F-NEXT:    retq10027;10028; AVX512BW-LABEL: ugt_14_v8i64:10029; AVX512BW:       # %bb.0:10030; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10031; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210032; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10033; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10034; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210035; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010036; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010037; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010038; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010039; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110040; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010041; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110042; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110043; AVX512BW-NEXT:    retq10044;10045; AVX512VPOPCNTDQ-LABEL: ugt_14_v8i64:10046; AVX512VPOPCNTDQ:       # %bb.0:10047; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010048; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110049; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110050; AVX512VPOPCNTDQ-NEXT:    retq10051;10052; BITALG-LABEL: ugt_14_v8i64:10053; BITALG:       # %bb.0:10054; BITALG-NEXT:    vpopcntb %zmm0, %zmm010055; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110056; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010057; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110058; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110059; BITALG-NEXT:    retq10060  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10061  %3 = icmp ugt <8 x i64> %2, <i64 14, i64 14, i64 14, i64 14, i64 14, i64 14, i64 14, i64 14>10062  %4 = sext <8 x i1> %3 to <8 x i64>10063  ret <8 x i64> %410064}10065 10066define <8 x i64> @ult_15_v8i64(<8 x i64> %0) {10067; AVX512F-LABEL: ult_15_v8i64:10068; AVX512F:       # %bb.0:10069; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110070; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10071; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310072; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10073; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10074; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310075; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110076; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110077; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110078; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110079; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310080; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110081; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510082; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510083; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010084; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010085; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010086; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010087; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010088; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010089; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110090; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110091; AVX512F-NEXT:    retq10092;10093; AVX512BW-LABEL: ult_15_v8i64:10094; AVX512BW:       # %bb.0:10095; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10096; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210097; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10098; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10099; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210100; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010101; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010102; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010103; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010104; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110105; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010106; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110107; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110108; AVX512BW-NEXT:    retq10109;10110; AVX512VPOPCNTDQ-LABEL: ult_15_v8i64:10111; AVX512VPOPCNTDQ:       # %bb.0:10112; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010113; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110114; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110115; AVX512VPOPCNTDQ-NEXT:    retq10116;10117; BITALG-LABEL: ult_15_v8i64:10118; BITALG:       # %bb.0:10119; BITALG-NEXT:    vpopcntb %zmm0, %zmm010120; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110121; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010122; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110123; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110124; BITALG-NEXT:    retq10125  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10126  %3 = icmp ult <8 x i64> %2, <i64 15, i64 15, i64 15, i64 15, i64 15, i64 15, i64 15, i64 15>10127  %4 = sext <8 x i1> %3 to <8 x i64>10128  ret <8 x i64> %410129}10130 10131define <8 x i64> @ugt_15_v8i64(<8 x i64> %0) {10132; AVX512F-LABEL: ugt_15_v8i64:10133; AVX512F:       # %bb.0:10134; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110135; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10136; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310137; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10138; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10139; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310140; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110141; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110142; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110143; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110144; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310145; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110146; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510147; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510148; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010149; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010150; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010151; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010152; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010153; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010154; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110155; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110156; AVX512F-NEXT:    retq10157;10158; AVX512BW-LABEL: ugt_15_v8i64:10159; AVX512BW:       # %bb.0:10160; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10161; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210162; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10163; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10164; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210165; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010166; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010167; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010168; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010169; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110170; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010171; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110172; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110173; AVX512BW-NEXT:    retq10174;10175; AVX512VPOPCNTDQ-LABEL: ugt_15_v8i64:10176; AVX512VPOPCNTDQ:       # %bb.0:10177; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010178; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110179; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110180; AVX512VPOPCNTDQ-NEXT:    retq10181;10182; BITALG-LABEL: ugt_15_v8i64:10183; BITALG:       # %bb.0:10184; BITALG-NEXT:    vpopcntb %zmm0, %zmm010185; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110186; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010187; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110188; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110189; BITALG-NEXT:    retq10190  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10191  %3 = icmp ugt <8 x i64> %2, <i64 15, i64 15, i64 15, i64 15, i64 15, i64 15, i64 15, i64 15>10192  %4 = sext <8 x i1> %3 to <8 x i64>10193  ret <8 x i64> %410194}10195 10196define <8 x i64> @ult_16_v8i64(<8 x i64> %0) {10197; AVX512F-LABEL: ult_16_v8i64:10198; AVX512F:       # %bb.0:10199; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110200; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10201; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310202; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10203; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10204; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310205; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110206; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110207; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110208; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110209; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310210; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110211; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510212; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510213; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010214; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010215; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010216; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010217; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010218; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010219; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110220; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110221; AVX512F-NEXT:    retq10222;10223; AVX512BW-LABEL: ult_16_v8i64:10224; AVX512BW:       # %bb.0:10225; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10226; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210227; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10228; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10229; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210230; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010231; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010232; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010233; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010234; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110235; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010236; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110237; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110238; AVX512BW-NEXT:    retq10239;10240; AVX512VPOPCNTDQ-LABEL: ult_16_v8i64:10241; AVX512VPOPCNTDQ:       # %bb.0:10242; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010243; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110244; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110245; AVX512VPOPCNTDQ-NEXT:    retq10246;10247; BITALG-LABEL: ult_16_v8i64:10248; BITALG:       # %bb.0:10249; BITALG-NEXT:    vpopcntb %zmm0, %zmm010250; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110251; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010252; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110253; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110254; BITALG-NEXT:    retq10255  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10256  %3 = icmp ult <8 x i64> %2, <i64 16, i64 16, i64 16, i64 16, i64 16, i64 16, i64 16, i64 16>10257  %4 = sext <8 x i1> %3 to <8 x i64>10258  ret <8 x i64> %410259}10260 10261define <8 x i64> @ugt_16_v8i64(<8 x i64> %0) {10262; AVX512F-LABEL: ugt_16_v8i64:10263; AVX512F:       # %bb.0:10264; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110265; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10266; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310267; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10268; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10269; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310270; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110271; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110272; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110273; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110274; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310275; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110276; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510277; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510278; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010279; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010280; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010281; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010282; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010283; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010284; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110285; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110286; AVX512F-NEXT:    retq10287;10288; AVX512BW-LABEL: ugt_16_v8i64:10289; AVX512BW:       # %bb.0:10290; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10291; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210292; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10293; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10294; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210295; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010296; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010297; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010298; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010299; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110300; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010301; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110302; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110303; AVX512BW-NEXT:    retq10304;10305; AVX512VPOPCNTDQ-LABEL: ugt_16_v8i64:10306; AVX512VPOPCNTDQ:       # %bb.0:10307; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010308; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110309; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110310; AVX512VPOPCNTDQ-NEXT:    retq10311;10312; BITALG-LABEL: ugt_16_v8i64:10313; BITALG:       # %bb.0:10314; BITALG-NEXT:    vpopcntb %zmm0, %zmm010315; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110316; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010317; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110318; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110319; BITALG-NEXT:    retq10320  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10321  %3 = icmp ugt <8 x i64> %2, <i64 16, i64 16, i64 16, i64 16, i64 16, i64 16, i64 16, i64 16>10322  %4 = sext <8 x i1> %3 to <8 x i64>10323  ret <8 x i64> %410324}10325 10326define <8 x i64> @ult_17_v8i64(<8 x i64> %0) {10327; AVX512F-LABEL: ult_17_v8i64:10328; AVX512F:       # %bb.0:10329; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110330; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10331; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310332; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10333; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10334; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310335; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110336; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110337; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110338; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110339; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310340; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110341; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510342; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510343; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010344; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010345; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010346; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010347; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010348; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010349; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110350; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110351; AVX512F-NEXT:    retq10352;10353; AVX512BW-LABEL: ult_17_v8i64:10354; AVX512BW:       # %bb.0:10355; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10356; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210357; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10358; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10359; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210360; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010361; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010362; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010363; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010364; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110365; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010366; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110367; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110368; AVX512BW-NEXT:    retq10369;10370; AVX512VPOPCNTDQ-LABEL: ult_17_v8i64:10371; AVX512VPOPCNTDQ:       # %bb.0:10372; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010373; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110374; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110375; AVX512VPOPCNTDQ-NEXT:    retq10376;10377; BITALG-LABEL: ult_17_v8i64:10378; BITALG:       # %bb.0:10379; BITALG-NEXT:    vpopcntb %zmm0, %zmm010380; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110381; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010382; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110383; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110384; BITALG-NEXT:    retq10385  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10386  %3 = icmp ult <8 x i64> %2, <i64 17, i64 17, i64 17, i64 17, i64 17, i64 17, i64 17, i64 17>10387  %4 = sext <8 x i1> %3 to <8 x i64>10388  ret <8 x i64> %410389}10390 10391define <8 x i64> @ugt_17_v8i64(<8 x i64> %0) {10392; AVX512F-LABEL: ugt_17_v8i64:10393; AVX512F:       # %bb.0:10394; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110395; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10396; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310397; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10398; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10399; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310400; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110401; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110402; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110403; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110404; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310405; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110406; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510407; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510408; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010409; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010410; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010411; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010412; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010413; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010414; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110415; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110416; AVX512F-NEXT:    retq10417;10418; AVX512BW-LABEL: ugt_17_v8i64:10419; AVX512BW:       # %bb.0:10420; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10421; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210422; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10423; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10424; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210425; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010426; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010427; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010428; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010429; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110430; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010431; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110432; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110433; AVX512BW-NEXT:    retq10434;10435; AVX512VPOPCNTDQ-LABEL: ugt_17_v8i64:10436; AVX512VPOPCNTDQ:       # %bb.0:10437; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010438; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110439; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110440; AVX512VPOPCNTDQ-NEXT:    retq10441;10442; BITALG-LABEL: ugt_17_v8i64:10443; BITALG:       # %bb.0:10444; BITALG-NEXT:    vpopcntb %zmm0, %zmm010445; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110446; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010447; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110448; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110449; BITALG-NEXT:    retq10450  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10451  %3 = icmp ugt <8 x i64> %2, <i64 17, i64 17, i64 17, i64 17, i64 17, i64 17, i64 17, i64 17>10452  %4 = sext <8 x i1> %3 to <8 x i64>10453  ret <8 x i64> %410454}10455 10456define <8 x i64> @ult_18_v8i64(<8 x i64> %0) {10457; AVX512F-LABEL: ult_18_v8i64:10458; AVX512F:       # %bb.0:10459; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110460; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10461; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310462; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10463; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10464; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310465; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110466; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110467; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110468; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110469; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310470; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110471; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510472; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510473; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010474; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010475; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010476; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010477; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010478; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010479; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110480; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110481; AVX512F-NEXT:    retq10482;10483; AVX512BW-LABEL: ult_18_v8i64:10484; AVX512BW:       # %bb.0:10485; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10486; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210487; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10488; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10489; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210490; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010491; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010492; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010493; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010494; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110495; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010496; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110497; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110498; AVX512BW-NEXT:    retq10499;10500; AVX512VPOPCNTDQ-LABEL: ult_18_v8i64:10501; AVX512VPOPCNTDQ:       # %bb.0:10502; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010503; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110504; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110505; AVX512VPOPCNTDQ-NEXT:    retq10506;10507; BITALG-LABEL: ult_18_v8i64:10508; BITALG:       # %bb.0:10509; BITALG-NEXT:    vpopcntb %zmm0, %zmm010510; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110511; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010512; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110513; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110514; BITALG-NEXT:    retq10515  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10516  %3 = icmp ult <8 x i64> %2, <i64 18, i64 18, i64 18, i64 18, i64 18, i64 18, i64 18, i64 18>10517  %4 = sext <8 x i1> %3 to <8 x i64>10518  ret <8 x i64> %410519}10520 10521define <8 x i64> @ugt_18_v8i64(<8 x i64> %0) {10522; AVX512F-LABEL: ugt_18_v8i64:10523; AVX512F:       # %bb.0:10524; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110525; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10526; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310527; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10528; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10529; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310530; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110531; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110532; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110533; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110534; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310535; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110536; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510537; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510538; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010539; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010540; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010541; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010542; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010543; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010544; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110545; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110546; AVX512F-NEXT:    retq10547;10548; AVX512BW-LABEL: ugt_18_v8i64:10549; AVX512BW:       # %bb.0:10550; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10551; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210552; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10553; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10554; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210555; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010556; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010557; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010558; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010559; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110560; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010561; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110562; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110563; AVX512BW-NEXT:    retq10564;10565; AVX512VPOPCNTDQ-LABEL: ugt_18_v8i64:10566; AVX512VPOPCNTDQ:       # %bb.0:10567; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010568; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110569; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110570; AVX512VPOPCNTDQ-NEXT:    retq10571;10572; BITALG-LABEL: ugt_18_v8i64:10573; BITALG:       # %bb.0:10574; BITALG-NEXT:    vpopcntb %zmm0, %zmm010575; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110576; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010577; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110578; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110579; BITALG-NEXT:    retq10580  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10581  %3 = icmp ugt <8 x i64> %2, <i64 18, i64 18, i64 18, i64 18, i64 18, i64 18, i64 18, i64 18>10582  %4 = sext <8 x i1> %3 to <8 x i64>10583  ret <8 x i64> %410584}10585 10586define <8 x i64> @ult_19_v8i64(<8 x i64> %0) {10587; AVX512F-LABEL: ult_19_v8i64:10588; AVX512F:       # %bb.0:10589; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110590; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10591; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310592; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10593; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10594; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310595; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110596; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110597; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110598; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110599; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310600; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110601; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510602; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510603; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010604; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010605; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010606; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010607; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010608; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010609; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110610; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110611; AVX512F-NEXT:    retq10612;10613; AVX512BW-LABEL: ult_19_v8i64:10614; AVX512BW:       # %bb.0:10615; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10616; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210617; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10618; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10619; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210620; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010621; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010622; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010623; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010624; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110625; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010626; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110627; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110628; AVX512BW-NEXT:    retq10629;10630; AVX512VPOPCNTDQ-LABEL: ult_19_v8i64:10631; AVX512VPOPCNTDQ:       # %bb.0:10632; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010633; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110634; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110635; AVX512VPOPCNTDQ-NEXT:    retq10636;10637; BITALG-LABEL: ult_19_v8i64:10638; BITALG:       # %bb.0:10639; BITALG-NEXT:    vpopcntb %zmm0, %zmm010640; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110641; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010642; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110643; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110644; BITALG-NEXT:    retq10645  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10646  %3 = icmp ult <8 x i64> %2, <i64 19, i64 19, i64 19, i64 19, i64 19, i64 19, i64 19, i64 19>10647  %4 = sext <8 x i1> %3 to <8 x i64>10648  ret <8 x i64> %410649}10650 10651define <8 x i64> @ugt_19_v8i64(<8 x i64> %0) {10652; AVX512F-LABEL: ugt_19_v8i64:10653; AVX512F:       # %bb.0:10654; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110655; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10656; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310657; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10658; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10659; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310660; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110661; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110662; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110663; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110664; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310665; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110666; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510667; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510668; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010669; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010670; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010671; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010672; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010673; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010674; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110675; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110676; AVX512F-NEXT:    retq10677;10678; AVX512BW-LABEL: ugt_19_v8i64:10679; AVX512BW:       # %bb.0:10680; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10681; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210682; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10683; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10684; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210685; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010686; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010687; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010688; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010689; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110690; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010691; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110692; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110693; AVX512BW-NEXT:    retq10694;10695; AVX512VPOPCNTDQ-LABEL: ugt_19_v8i64:10696; AVX512VPOPCNTDQ:       # %bb.0:10697; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010698; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110699; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110700; AVX512VPOPCNTDQ-NEXT:    retq10701;10702; BITALG-LABEL: ugt_19_v8i64:10703; BITALG:       # %bb.0:10704; BITALG-NEXT:    vpopcntb %zmm0, %zmm010705; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110706; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010707; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110708; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110709; BITALG-NEXT:    retq10710  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10711  %3 = icmp ugt <8 x i64> %2, <i64 19, i64 19, i64 19, i64 19, i64 19, i64 19, i64 19, i64 19>10712  %4 = sext <8 x i1> %3 to <8 x i64>10713  ret <8 x i64> %410714}10715 10716define <8 x i64> @ult_20_v8i64(<8 x i64> %0) {10717; AVX512F-LABEL: ult_20_v8i64:10718; AVX512F:       # %bb.0:10719; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110720; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10721; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310722; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10723; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10724; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310725; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110726; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110727; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110728; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110729; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310730; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110731; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510732; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510733; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010734; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010735; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010736; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010737; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010738; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010739; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110740; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110741; AVX512F-NEXT:    retq10742;10743; AVX512BW-LABEL: ult_20_v8i64:10744; AVX512BW:       # %bb.0:10745; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10746; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210747; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10748; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10749; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210750; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010751; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010752; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010753; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010754; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110755; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010756; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110757; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110758; AVX512BW-NEXT:    retq10759;10760; AVX512VPOPCNTDQ-LABEL: ult_20_v8i64:10761; AVX512VPOPCNTDQ:       # %bb.0:10762; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010763; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110764; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110765; AVX512VPOPCNTDQ-NEXT:    retq10766;10767; BITALG-LABEL: ult_20_v8i64:10768; BITALG:       # %bb.0:10769; BITALG-NEXT:    vpopcntb %zmm0, %zmm010770; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110771; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010772; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110773; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110774; BITALG-NEXT:    retq10775  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10776  %3 = icmp ult <8 x i64> %2, <i64 20, i64 20, i64 20, i64 20, i64 20, i64 20, i64 20, i64 20>10777  %4 = sext <8 x i1> %3 to <8 x i64>10778  ret <8 x i64> %410779}10780 10781define <8 x i64> @ugt_20_v8i64(<8 x i64> %0) {10782; AVX512F-LABEL: ugt_20_v8i64:10783; AVX512F:       # %bb.0:10784; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110785; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10786; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310787; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10788; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10789; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310790; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110791; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110792; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110793; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110794; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310795; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110796; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510797; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510798; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010799; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010800; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010801; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010802; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010803; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010804; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110805; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110806; AVX512F-NEXT:    retq10807;10808; AVX512BW-LABEL: ugt_20_v8i64:10809; AVX512BW:       # %bb.0:10810; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10811; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210812; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10813; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10814; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210815; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010816; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010817; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010818; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010819; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110820; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010821; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110822; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110823; AVX512BW-NEXT:    retq10824;10825; AVX512VPOPCNTDQ-LABEL: ugt_20_v8i64:10826; AVX512VPOPCNTDQ:       # %bb.0:10827; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010828; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110829; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110830; AVX512VPOPCNTDQ-NEXT:    retq10831;10832; BITALG-LABEL: ugt_20_v8i64:10833; BITALG:       # %bb.0:10834; BITALG-NEXT:    vpopcntb %zmm0, %zmm010835; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110836; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010837; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110838; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110839; BITALG-NEXT:    retq10840  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10841  %3 = icmp ugt <8 x i64> %2, <i64 20, i64 20, i64 20, i64 20, i64 20, i64 20, i64 20, i64 20>10842  %4 = sext <8 x i1> %3 to <8 x i64>10843  ret <8 x i64> %410844}10845 10846define <8 x i64> @ult_21_v8i64(<8 x i64> %0) {10847; AVX512F-LABEL: ult_21_v8i64:10848; AVX512F:       # %bb.0:10849; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110850; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10851; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310852; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10853; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10854; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310855; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110856; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110857; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110858; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110859; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310860; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110861; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510862; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510863; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010864; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010865; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010866; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010867; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010868; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010869; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110870; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110871; AVX512F-NEXT:    retq10872;10873; AVX512BW-LABEL: ult_21_v8i64:10874; AVX512BW:       # %bb.0:10875; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10876; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210877; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10878; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10879; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210880; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010881; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010882; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010883; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010884; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110885; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010886; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110887; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110888; AVX512BW-NEXT:    retq10889;10890; AVX512VPOPCNTDQ-LABEL: ult_21_v8i64:10891; AVX512VPOPCNTDQ:       # %bb.0:10892; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010893; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110894; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110895; AVX512VPOPCNTDQ-NEXT:    retq10896;10897; BITALG-LABEL: ult_21_v8i64:10898; BITALG:       # %bb.0:10899; BITALG-NEXT:    vpopcntb %zmm0, %zmm010900; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110901; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010902; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110903; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110904; BITALG-NEXT:    retq10905  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10906  %3 = icmp ult <8 x i64> %2, <i64 21, i64 21, i64 21, i64 21, i64 21, i64 21, i64 21, i64 21>10907  %4 = sext <8 x i1> %3 to <8 x i64>10908  ret <8 x i64> %410909}10910 10911define <8 x i64> @ugt_21_v8i64(<8 x i64> %0) {10912; AVX512F-LABEL: ugt_21_v8i64:10913; AVX512F:       # %bb.0:10914; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110915; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10916; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310917; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10918; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10919; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310920; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110921; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110922; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110923; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110924; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310925; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110926; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510927; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510928; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010929; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010930; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010931; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010932; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010933; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010934; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110935; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110936; AVX512F-NEXT:    retq10937;10938; AVX512BW-LABEL: ugt_21_v8i64:10939; AVX512BW:       # %bb.0:10940; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10941; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm210942; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10943; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]10944; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm210945; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm010946; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm010947; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm010948; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm010949; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm110950; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010951; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110952; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110953; AVX512BW-NEXT:    retq10954;10955; AVX512VPOPCNTDQ-LABEL: ugt_21_v8i64:10956; AVX512VPOPCNTDQ:       # %bb.0:10957; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm010958; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110959; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110960; AVX512VPOPCNTDQ-NEXT:    retq10961;10962; BITALG-LABEL: ugt_21_v8i64:10963; BITALG:       # %bb.0:10964; BITALG-NEXT:    vpopcntb %zmm0, %zmm010965; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm110966; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm010967; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k110968; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -110969; BITALG-NEXT:    retq10970  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)10971  %3 = icmp ugt <8 x i64> %2, <i64 21, i64 21, i64 21, i64 21, i64 21, i64 21, i64 21, i64 21>10972  %4 = sext <8 x i1> %3 to <8 x i64>10973  ret <8 x i64> %410974}10975 10976define <8 x i64> @ult_22_v8i64(<8 x i64> %0) {10977; AVX512F-LABEL: ult_22_v8i64:10978; AVX512F:       # %bb.0:10979; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm110980; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]10981; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm310982; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]10983; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]10984; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm310985; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm110986; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm110987; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm110988; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm110989; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm310990; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm110991; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm510992; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm510993; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm010994; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm010995; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm010996; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm010997; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm010998; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm010999; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111000; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111001; AVX512F-NEXT:    retq11002;11003; AVX512BW-LABEL: ult_22_v8i64:11004; AVX512BW:       # %bb.0:11005; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11006; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211007; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11008; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11009; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211010; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011011; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011012; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011013; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011014; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111015; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011016; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111017; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111018; AVX512BW-NEXT:    retq11019;11020; AVX512VPOPCNTDQ-LABEL: ult_22_v8i64:11021; AVX512VPOPCNTDQ:       # %bb.0:11022; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011023; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111024; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111025; AVX512VPOPCNTDQ-NEXT:    retq11026;11027; BITALG-LABEL: ult_22_v8i64:11028; BITALG:       # %bb.0:11029; BITALG-NEXT:    vpopcntb %zmm0, %zmm011030; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111031; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011032; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111033; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111034; BITALG-NEXT:    retq11035  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11036  %3 = icmp ult <8 x i64> %2, <i64 22, i64 22, i64 22, i64 22, i64 22, i64 22, i64 22, i64 22>11037  %4 = sext <8 x i1> %3 to <8 x i64>11038  ret <8 x i64> %411039}11040 11041define <8 x i64> @ugt_22_v8i64(<8 x i64> %0) {11042; AVX512F-LABEL: ugt_22_v8i64:11043; AVX512F:       # %bb.0:11044; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111045; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11046; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311047; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11048; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11049; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311050; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111051; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111052; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111053; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111054; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311055; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111056; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511057; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511058; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011059; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011060; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011061; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011062; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011063; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011064; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111065; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111066; AVX512F-NEXT:    retq11067;11068; AVX512BW-LABEL: ugt_22_v8i64:11069; AVX512BW:       # %bb.0:11070; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11071; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211072; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11073; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11074; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211075; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011076; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011077; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011078; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011079; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111080; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011081; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111082; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111083; AVX512BW-NEXT:    retq11084;11085; AVX512VPOPCNTDQ-LABEL: ugt_22_v8i64:11086; AVX512VPOPCNTDQ:       # %bb.0:11087; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011088; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111089; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111090; AVX512VPOPCNTDQ-NEXT:    retq11091;11092; BITALG-LABEL: ugt_22_v8i64:11093; BITALG:       # %bb.0:11094; BITALG-NEXT:    vpopcntb %zmm0, %zmm011095; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111096; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011097; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111098; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111099; BITALG-NEXT:    retq11100  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11101  %3 = icmp ugt <8 x i64> %2, <i64 22, i64 22, i64 22, i64 22, i64 22, i64 22, i64 22, i64 22>11102  %4 = sext <8 x i1> %3 to <8 x i64>11103  ret <8 x i64> %411104}11105 11106define <8 x i64> @ult_23_v8i64(<8 x i64> %0) {11107; AVX512F-LABEL: ult_23_v8i64:11108; AVX512F:       # %bb.0:11109; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111110; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11111; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311112; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11113; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11114; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311115; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111116; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111117; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111118; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111119; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311120; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111121; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511122; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511123; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011124; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011125; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011126; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011127; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011128; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011129; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111130; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111131; AVX512F-NEXT:    retq11132;11133; AVX512BW-LABEL: ult_23_v8i64:11134; AVX512BW:       # %bb.0:11135; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11136; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211137; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11138; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11139; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211140; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011141; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011142; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011143; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011144; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111145; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011146; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111147; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111148; AVX512BW-NEXT:    retq11149;11150; AVX512VPOPCNTDQ-LABEL: ult_23_v8i64:11151; AVX512VPOPCNTDQ:       # %bb.0:11152; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011153; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111154; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111155; AVX512VPOPCNTDQ-NEXT:    retq11156;11157; BITALG-LABEL: ult_23_v8i64:11158; BITALG:       # %bb.0:11159; BITALG-NEXT:    vpopcntb %zmm0, %zmm011160; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111161; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011162; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111163; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111164; BITALG-NEXT:    retq11165  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11166  %3 = icmp ult <8 x i64> %2, <i64 23, i64 23, i64 23, i64 23, i64 23, i64 23, i64 23, i64 23>11167  %4 = sext <8 x i1> %3 to <8 x i64>11168  ret <8 x i64> %411169}11170 11171define <8 x i64> @ugt_23_v8i64(<8 x i64> %0) {11172; AVX512F-LABEL: ugt_23_v8i64:11173; AVX512F:       # %bb.0:11174; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111175; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11176; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311177; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11178; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11179; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311180; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111181; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111182; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111183; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111184; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311185; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111186; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511187; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511188; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011189; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011190; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011191; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011192; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011193; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011194; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111195; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111196; AVX512F-NEXT:    retq11197;11198; AVX512BW-LABEL: ugt_23_v8i64:11199; AVX512BW:       # %bb.0:11200; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11201; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211202; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11203; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11204; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211205; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011206; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011207; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011208; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011209; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111210; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011211; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111212; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111213; AVX512BW-NEXT:    retq11214;11215; AVX512VPOPCNTDQ-LABEL: ugt_23_v8i64:11216; AVX512VPOPCNTDQ:       # %bb.0:11217; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011218; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111219; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111220; AVX512VPOPCNTDQ-NEXT:    retq11221;11222; BITALG-LABEL: ugt_23_v8i64:11223; BITALG:       # %bb.0:11224; BITALG-NEXT:    vpopcntb %zmm0, %zmm011225; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111226; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011227; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111228; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111229; BITALG-NEXT:    retq11230  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11231  %3 = icmp ugt <8 x i64> %2, <i64 23, i64 23, i64 23, i64 23, i64 23, i64 23, i64 23, i64 23>11232  %4 = sext <8 x i1> %3 to <8 x i64>11233  ret <8 x i64> %411234}11235 11236define <8 x i64> @ult_24_v8i64(<8 x i64> %0) {11237; AVX512F-LABEL: ult_24_v8i64:11238; AVX512F:       # %bb.0:11239; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111240; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11241; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311242; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11243; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11244; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311245; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111246; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111247; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111248; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111249; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311250; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111251; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511252; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511253; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011254; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011255; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011256; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011257; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011258; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011259; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111260; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111261; AVX512F-NEXT:    retq11262;11263; AVX512BW-LABEL: ult_24_v8i64:11264; AVX512BW:       # %bb.0:11265; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11266; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211267; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11268; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11269; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211270; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011271; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011272; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011273; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011274; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111275; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011276; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111277; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111278; AVX512BW-NEXT:    retq11279;11280; AVX512VPOPCNTDQ-LABEL: ult_24_v8i64:11281; AVX512VPOPCNTDQ:       # %bb.0:11282; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011283; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111284; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111285; AVX512VPOPCNTDQ-NEXT:    retq11286;11287; BITALG-LABEL: ult_24_v8i64:11288; BITALG:       # %bb.0:11289; BITALG-NEXT:    vpopcntb %zmm0, %zmm011290; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111291; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011292; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111293; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111294; BITALG-NEXT:    retq11295  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11296  %3 = icmp ult <8 x i64> %2, <i64 24, i64 24, i64 24, i64 24, i64 24, i64 24, i64 24, i64 24>11297  %4 = sext <8 x i1> %3 to <8 x i64>11298  ret <8 x i64> %411299}11300 11301define <8 x i64> @ugt_24_v8i64(<8 x i64> %0) {11302; AVX512F-LABEL: ugt_24_v8i64:11303; AVX512F:       # %bb.0:11304; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111305; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11306; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311307; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11308; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11309; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311310; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111311; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111312; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111313; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111314; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311315; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111316; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511317; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511318; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011319; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011320; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011321; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011322; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011323; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011324; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111325; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111326; AVX512F-NEXT:    retq11327;11328; AVX512BW-LABEL: ugt_24_v8i64:11329; AVX512BW:       # %bb.0:11330; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11331; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211332; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11333; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11334; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211335; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011336; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011337; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011338; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011339; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111340; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011341; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111342; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111343; AVX512BW-NEXT:    retq11344;11345; AVX512VPOPCNTDQ-LABEL: ugt_24_v8i64:11346; AVX512VPOPCNTDQ:       # %bb.0:11347; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011348; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111349; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111350; AVX512VPOPCNTDQ-NEXT:    retq11351;11352; BITALG-LABEL: ugt_24_v8i64:11353; BITALG:       # %bb.0:11354; BITALG-NEXT:    vpopcntb %zmm0, %zmm011355; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111356; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011357; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111358; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111359; BITALG-NEXT:    retq11360  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11361  %3 = icmp ugt <8 x i64> %2, <i64 24, i64 24, i64 24, i64 24, i64 24, i64 24, i64 24, i64 24>11362  %4 = sext <8 x i1> %3 to <8 x i64>11363  ret <8 x i64> %411364}11365 11366define <8 x i64> @ult_25_v8i64(<8 x i64> %0) {11367; AVX512F-LABEL: ult_25_v8i64:11368; AVX512F:       # %bb.0:11369; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111370; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11371; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311372; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11373; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11374; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311375; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111376; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111377; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111378; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111379; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311380; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111381; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511382; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511383; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011384; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011385; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011386; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011387; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011388; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011389; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111390; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111391; AVX512F-NEXT:    retq11392;11393; AVX512BW-LABEL: ult_25_v8i64:11394; AVX512BW:       # %bb.0:11395; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11396; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211397; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11398; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11399; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211400; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011401; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011402; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011403; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011404; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111405; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011406; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111407; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111408; AVX512BW-NEXT:    retq11409;11410; AVX512VPOPCNTDQ-LABEL: ult_25_v8i64:11411; AVX512VPOPCNTDQ:       # %bb.0:11412; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011413; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111414; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111415; AVX512VPOPCNTDQ-NEXT:    retq11416;11417; BITALG-LABEL: ult_25_v8i64:11418; BITALG:       # %bb.0:11419; BITALG-NEXT:    vpopcntb %zmm0, %zmm011420; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111421; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011422; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111423; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111424; BITALG-NEXT:    retq11425  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11426  %3 = icmp ult <8 x i64> %2, <i64 25, i64 25, i64 25, i64 25, i64 25, i64 25, i64 25, i64 25>11427  %4 = sext <8 x i1> %3 to <8 x i64>11428  ret <8 x i64> %411429}11430 11431define <8 x i64> @ugt_25_v8i64(<8 x i64> %0) {11432; AVX512F-LABEL: ugt_25_v8i64:11433; AVX512F:       # %bb.0:11434; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111435; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11436; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311437; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11438; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11439; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311440; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111441; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111442; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111443; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111444; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311445; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111446; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511447; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511448; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011449; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011450; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011451; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011452; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011453; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011454; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111455; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111456; AVX512F-NEXT:    retq11457;11458; AVX512BW-LABEL: ugt_25_v8i64:11459; AVX512BW:       # %bb.0:11460; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11461; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211462; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11463; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11464; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211465; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011466; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011467; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011468; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011469; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111470; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011471; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111472; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111473; AVX512BW-NEXT:    retq11474;11475; AVX512VPOPCNTDQ-LABEL: ugt_25_v8i64:11476; AVX512VPOPCNTDQ:       # %bb.0:11477; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011478; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111479; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111480; AVX512VPOPCNTDQ-NEXT:    retq11481;11482; BITALG-LABEL: ugt_25_v8i64:11483; BITALG:       # %bb.0:11484; BITALG-NEXT:    vpopcntb %zmm0, %zmm011485; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111486; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011487; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111488; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111489; BITALG-NEXT:    retq11490  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11491  %3 = icmp ugt <8 x i64> %2, <i64 25, i64 25, i64 25, i64 25, i64 25, i64 25, i64 25, i64 25>11492  %4 = sext <8 x i1> %3 to <8 x i64>11493  ret <8 x i64> %411494}11495 11496define <8 x i64> @ult_26_v8i64(<8 x i64> %0) {11497; AVX512F-LABEL: ult_26_v8i64:11498; AVX512F:       # %bb.0:11499; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111500; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11501; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311502; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11503; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11504; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311505; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111506; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111507; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111508; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111509; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311510; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111511; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511512; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511513; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011514; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011515; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011516; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011517; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011518; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011519; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111520; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111521; AVX512F-NEXT:    retq11522;11523; AVX512BW-LABEL: ult_26_v8i64:11524; AVX512BW:       # %bb.0:11525; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11526; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211527; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11528; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11529; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211530; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011531; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011532; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011533; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011534; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111535; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011536; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111537; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111538; AVX512BW-NEXT:    retq11539;11540; AVX512VPOPCNTDQ-LABEL: ult_26_v8i64:11541; AVX512VPOPCNTDQ:       # %bb.0:11542; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011543; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111544; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111545; AVX512VPOPCNTDQ-NEXT:    retq11546;11547; BITALG-LABEL: ult_26_v8i64:11548; BITALG:       # %bb.0:11549; BITALG-NEXT:    vpopcntb %zmm0, %zmm011550; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111551; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011552; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111553; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111554; BITALG-NEXT:    retq11555  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11556  %3 = icmp ult <8 x i64> %2, <i64 26, i64 26, i64 26, i64 26, i64 26, i64 26, i64 26, i64 26>11557  %4 = sext <8 x i1> %3 to <8 x i64>11558  ret <8 x i64> %411559}11560 11561define <8 x i64> @ugt_26_v8i64(<8 x i64> %0) {11562; AVX512F-LABEL: ugt_26_v8i64:11563; AVX512F:       # %bb.0:11564; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111565; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11566; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311567; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11568; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11569; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311570; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111571; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111572; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111573; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111574; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311575; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111576; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511577; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511578; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011579; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011580; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011581; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011582; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011583; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011584; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111585; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111586; AVX512F-NEXT:    retq11587;11588; AVX512BW-LABEL: ugt_26_v8i64:11589; AVX512BW:       # %bb.0:11590; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11591; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211592; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11593; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11594; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211595; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011596; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011597; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011598; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011599; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111600; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011601; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111602; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111603; AVX512BW-NEXT:    retq11604;11605; AVX512VPOPCNTDQ-LABEL: ugt_26_v8i64:11606; AVX512VPOPCNTDQ:       # %bb.0:11607; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011608; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111609; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111610; AVX512VPOPCNTDQ-NEXT:    retq11611;11612; BITALG-LABEL: ugt_26_v8i64:11613; BITALG:       # %bb.0:11614; BITALG-NEXT:    vpopcntb %zmm0, %zmm011615; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111616; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011617; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111618; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111619; BITALG-NEXT:    retq11620  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11621  %3 = icmp ugt <8 x i64> %2, <i64 26, i64 26, i64 26, i64 26, i64 26, i64 26, i64 26, i64 26>11622  %4 = sext <8 x i1> %3 to <8 x i64>11623  ret <8 x i64> %411624}11625 11626define <8 x i64> @ult_27_v8i64(<8 x i64> %0) {11627; AVX512F-LABEL: ult_27_v8i64:11628; AVX512F:       # %bb.0:11629; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111630; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11631; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311632; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11633; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11634; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311635; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111636; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111637; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111638; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111639; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311640; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111641; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511642; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511643; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011644; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011645; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011646; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011647; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011648; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011649; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111650; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111651; AVX512F-NEXT:    retq11652;11653; AVX512BW-LABEL: ult_27_v8i64:11654; AVX512BW:       # %bb.0:11655; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11656; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211657; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11658; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11659; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211660; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011661; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011662; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011663; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011664; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111665; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011666; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111667; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111668; AVX512BW-NEXT:    retq11669;11670; AVX512VPOPCNTDQ-LABEL: ult_27_v8i64:11671; AVX512VPOPCNTDQ:       # %bb.0:11672; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011673; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111674; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111675; AVX512VPOPCNTDQ-NEXT:    retq11676;11677; BITALG-LABEL: ult_27_v8i64:11678; BITALG:       # %bb.0:11679; BITALG-NEXT:    vpopcntb %zmm0, %zmm011680; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111681; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011682; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111683; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111684; BITALG-NEXT:    retq11685  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11686  %3 = icmp ult <8 x i64> %2, <i64 27, i64 27, i64 27, i64 27, i64 27, i64 27, i64 27, i64 27>11687  %4 = sext <8 x i1> %3 to <8 x i64>11688  ret <8 x i64> %411689}11690 11691define <8 x i64> @ugt_27_v8i64(<8 x i64> %0) {11692; AVX512F-LABEL: ugt_27_v8i64:11693; AVX512F:       # %bb.0:11694; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111695; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11696; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311697; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11698; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11699; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311700; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111701; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111702; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111703; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111704; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311705; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111706; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511707; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511708; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011709; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011710; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011711; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011712; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011713; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011714; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111715; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111716; AVX512F-NEXT:    retq11717;11718; AVX512BW-LABEL: ugt_27_v8i64:11719; AVX512BW:       # %bb.0:11720; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11721; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211722; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11723; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11724; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211725; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011726; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011727; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011728; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011729; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111730; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011731; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111732; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111733; AVX512BW-NEXT:    retq11734;11735; AVX512VPOPCNTDQ-LABEL: ugt_27_v8i64:11736; AVX512VPOPCNTDQ:       # %bb.0:11737; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011738; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111739; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111740; AVX512VPOPCNTDQ-NEXT:    retq11741;11742; BITALG-LABEL: ugt_27_v8i64:11743; BITALG:       # %bb.0:11744; BITALG-NEXT:    vpopcntb %zmm0, %zmm011745; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111746; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011747; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111748; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111749; BITALG-NEXT:    retq11750  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11751  %3 = icmp ugt <8 x i64> %2, <i64 27, i64 27, i64 27, i64 27, i64 27, i64 27, i64 27, i64 27>11752  %4 = sext <8 x i1> %3 to <8 x i64>11753  ret <8 x i64> %411754}11755 11756define <8 x i64> @ult_28_v8i64(<8 x i64> %0) {11757; AVX512F-LABEL: ult_28_v8i64:11758; AVX512F:       # %bb.0:11759; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111760; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11761; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311762; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11763; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11764; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311765; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111766; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111767; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111768; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111769; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311770; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111771; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511772; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511773; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011774; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011775; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011776; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011777; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011778; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011779; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111780; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111781; AVX512F-NEXT:    retq11782;11783; AVX512BW-LABEL: ult_28_v8i64:11784; AVX512BW:       # %bb.0:11785; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11786; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211787; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11788; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11789; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211790; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011791; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011792; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011793; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011794; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111795; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011796; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111797; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111798; AVX512BW-NEXT:    retq11799;11800; AVX512VPOPCNTDQ-LABEL: ult_28_v8i64:11801; AVX512VPOPCNTDQ:       # %bb.0:11802; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011803; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111804; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111805; AVX512VPOPCNTDQ-NEXT:    retq11806;11807; BITALG-LABEL: ult_28_v8i64:11808; BITALG:       # %bb.0:11809; BITALG-NEXT:    vpopcntb %zmm0, %zmm011810; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111811; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011812; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111813; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111814; BITALG-NEXT:    retq11815  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11816  %3 = icmp ult <8 x i64> %2, <i64 28, i64 28, i64 28, i64 28, i64 28, i64 28, i64 28, i64 28>11817  %4 = sext <8 x i1> %3 to <8 x i64>11818  ret <8 x i64> %411819}11820 11821define <8 x i64> @ugt_28_v8i64(<8 x i64> %0) {11822; AVX512F-LABEL: ugt_28_v8i64:11823; AVX512F:       # %bb.0:11824; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111825; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11826; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311827; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11828; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11829; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311830; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111831; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111832; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111833; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111834; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311835; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111836; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511837; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511838; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011839; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011840; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011841; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011842; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011843; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011844; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111845; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111846; AVX512F-NEXT:    retq11847;11848; AVX512BW-LABEL: ugt_28_v8i64:11849; AVX512BW:       # %bb.0:11850; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11851; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211852; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11853; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11854; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211855; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011856; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011857; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011858; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011859; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111860; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011861; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111862; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111863; AVX512BW-NEXT:    retq11864;11865; AVX512VPOPCNTDQ-LABEL: ugt_28_v8i64:11866; AVX512VPOPCNTDQ:       # %bb.0:11867; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011868; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111869; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111870; AVX512VPOPCNTDQ-NEXT:    retq11871;11872; BITALG-LABEL: ugt_28_v8i64:11873; BITALG:       # %bb.0:11874; BITALG-NEXT:    vpopcntb %zmm0, %zmm011875; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111876; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011877; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111878; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111879; BITALG-NEXT:    retq11880  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11881  %3 = icmp ugt <8 x i64> %2, <i64 28, i64 28, i64 28, i64 28, i64 28, i64 28, i64 28, i64 28>11882  %4 = sext <8 x i1> %3 to <8 x i64>11883  ret <8 x i64> %411884}11885 11886define <8 x i64> @ult_29_v8i64(<8 x i64> %0) {11887; AVX512F-LABEL: ult_29_v8i64:11888; AVX512F:       # %bb.0:11889; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111890; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11891; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311892; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11893; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11894; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311895; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111896; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111897; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111898; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111899; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311900; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111901; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511902; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511903; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011904; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011905; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011906; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011907; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011908; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011909; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111910; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111911; AVX512F-NEXT:    retq11912;11913; AVX512BW-LABEL: ult_29_v8i64:11914; AVX512BW:       # %bb.0:11915; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11916; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211917; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11918; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11919; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211920; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011921; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011922; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011923; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011924; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111925; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011926; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111927; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111928; AVX512BW-NEXT:    retq11929;11930; AVX512VPOPCNTDQ-LABEL: ult_29_v8i64:11931; AVX512VPOPCNTDQ:       # %bb.0:11932; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011933; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111934; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111935; AVX512VPOPCNTDQ-NEXT:    retq11936;11937; BITALG-LABEL: ult_29_v8i64:11938; BITALG:       # %bb.0:11939; BITALG-NEXT:    vpopcntb %zmm0, %zmm011940; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm111941; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011942; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111943; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111944; BITALG-NEXT:    retq11945  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)11946  %3 = icmp ult <8 x i64> %2, <i64 29, i64 29, i64 29, i64 29, i64 29, i64 29, i64 29, i64 29>11947  %4 = sext <8 x i1> %3 to <8 x i64>11948  ret <8 x i64> %411949}11950 11951define <8 x i64> @ugt_29_v8i64(<8 x i64> %0) {11952; AVX512F-LABEL: ugt_29_v8i64:11953; AVX512F:       # %bb.0:11954; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm111955; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11956; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm311957; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11958; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]11959; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm311960; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm111961; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm111962; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm111963; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm111964; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm311965; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm111966; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm511967; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm511968; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm011969; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm011970; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm011971; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm011972; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm011973; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm011974; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111975; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111976; AVX512F-NEXT:    retq11977;11978; AVX512BW-LABEL: ugt_29_v8i64:11979; AVX512BW:       # %bb.0:11980; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]11981; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm211982; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]11983; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]11984; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm211985; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm011986; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm011987; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm011988; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm011989; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm111990; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm011991; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111992; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -111993; AVX512BW-NEXT:    retq11994;11995; AVX512VPOPCNTDQ-LABEL: ugt_29_v8i64:11996; AVX512VPOPCNTDQ:       # %bb.0:11997; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm011998; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k111999; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112000; AVX512VPOPCNTDQ-NEXT:    retq12001;12002; BITALG-LABEL: ugt_29_v8i64:12003; BITALG:       # %bb.0:12004; BITALG-NEXT:    vpopcntb %zmm0, %zmm012005; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112006; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012007; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112008; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112009; BITALG-NEXT:    retq12010  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12011  %3 = icmp ugt <8 x i64> %2, <i64 29, i64 29, i64 29, i64 29, i64 29, i64 29, i64 29, i64 29>12012  %4 = sext <8 x i1> %3 to <8 x i64>12013  ret <8 x i64> %412014}12015 12016define <8 x i64> @ult_30_v8i64(<8 x i64> %0) {12017; AVX512F-LABEL: ult_30_v8i64:12018; AVX512F:       # %bb.0:12019; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112020; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12021; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312022; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12023; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12024; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312025; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112026; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112027; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112028; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112029; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312030; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112031; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512032; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512033; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012034; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012035; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012036; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012037; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012038; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012039; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112040; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112041; AVX512F-NEXT:    retq12042;12043; AVX512BW-LABEL: ult_30_v8i64:12044; AVX512BW:       # %bb.0:12045; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12046; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212047; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12048; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12049; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212050; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012051; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012052; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012053; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012054; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112055; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012056; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112057; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112058; AVX512BW-NEXT:    retq12059;12060; AVX512VPOPCNTDQ-LABEL: ult_30_v8i64:12061; AVX512VPOPCNTDQ:       # %bb.0:12062; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012063; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112064; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112065; AVX512VPOPCNTDQ-NEXT:    retq12066;12067; BITALG-LABEL: ult_30_v8i64:12068; BITALG:       # %bb.0:12069; BITALG-NEXT:    vpopcntb %zmm0, %zmm012070; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112071; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012072; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112073; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112074; BITALG-NEXT:    retq12075  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12076  %3 = icmp ult <8 x i64> %2, <i64 30, i64 30, i64 30, i64 30, i64 30, i64 30, i64 30, i64 30>12077  %4 = sext <8 x i1> %3 to <8 x i64>12078  ret <8 x i64> %412079}12080 12081define <8 x i64> @ugt_30_v8i64(<8 x i64> %0) {12082; AVX512F-LABEL: ugt_30_v8i64:12083; AVX512F:       # %bb.0:12084; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112085; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12086; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312087; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12088; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12089; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312090; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112091; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112092; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112093; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112094; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312095; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112096; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512097; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512098; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012099; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012100; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012101; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012102; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012103; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012104; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112105; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112106; AVX512F-NEXT:    retq12107;12108; AVX512BW-LABEL: ugt_30_v8i64:12109; AVX512BW:       # %bb.0:12110; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12111; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212112; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12113; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12114; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212115; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012116; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012117; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012118; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012119; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112120; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012121; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112122; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112123; AVX512BW-NEXT:    retq12124;12125; AVX512VPOPCNTDQ-LABEL: ugt_30_v8i64:12126; AVX512VPOPCNTDQ:       # %bb.0:12127; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012128; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112129; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112130; AVX512VPOPCNTDQ-NEXT:    retq12131;12132; BITALG-LABEL: ugt_30_v8i64:12133; BITALG:       # %bb.0:12134; BITALG-NEXT:    vpopcntb %zmm0, %zmm012135; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112136; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012137; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112138; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112139; BITALG-NEXT:    retq12140  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12141  %3 = icmp ugt <8 x i64> %2, <i64 30, i64 30, i64 30, i64 30, i64 30, i64 30, i64 30, i64 30>12142  %4 = sext <8 x i1> %3 to <8 x i64>12143  ret <8 x i64> %412144}12145 12146define <8 x i64> @ult_31_v8i64(<8 x i64> %0) {12147; AVX512F-LABEL: ult_31_v8i64:12148; AVX512F:       # %bb.0:12149; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112150; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12151; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312152; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12153; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12154; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312155; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112156; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112157; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112158; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112159; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312160; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112161; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512162; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512163; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012164; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012165; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012166; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012167; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012168; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012169; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112170; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112171; AVX512F-NEXT:    retq12172;12173; AVX512BW-LABEL: ult_31_v8i64:12174; AVX512BW:       # %bb.0:12175; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12176; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212177; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12178; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12179; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212180; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012181; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012182; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012183; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012184; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112185; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012186; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112187; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112188; AVX512BW-NEXT:    retq12189;12190; AVX512VPOPCNTDQ-LABEL: ult_31_v8i64:12191; AVX512VPOPCNTDQ:       # %bb.0:12192; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012193; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112194; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112195; AVX512VPOPCNTDQ-NEXT:    retq12196;12197; BITALG-LABEL: ult_31_v8i64:12198; BITALG:       # %bb.0:12199; BITALG-NEXT:    vpopcntb %zmm0, %zmm012200; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112201; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012202; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112203; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112204; BITALG-NEXT:    retq12205  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12206  %3 = icmp ult <8 x i64> %2, <i64 31, i64 31, i64 31, i64 31, i64 31, i64 31, i64 31, i64 31>12207  %4 = sext <8 x i1> %3 to <8 x i64>12208  ret <8 x i64> %412209}12210 12211define <8 x i64> @ugt_31_v8i64(<8 x i64> %0) {12212; AVX512F-LABEL: ugt_31_v8i64:12213; AVX512F:       # %bb.0:12214; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112215; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12216; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312217; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12218; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12219; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312220; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112221; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112222; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112223; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112224; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312225; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112226; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512227; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512228; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012229; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012230; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012231; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012232; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012233; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012234; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112235; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112236; AVX512F-NEXT:    retq12237;12238; AVX512BW-LABEL: ugt_31_v8i64:12239; AVX512BW:       # %bb.0:12240; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12241; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212242; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12243; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12244; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212245; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012246; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012247; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012248; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012249; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112250; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012251; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112252; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112253; AVX512BW-NEXT:    retq12254;12255; AVX512VPOPCNTDQ-LABEL: ugt_31_v8i64:12256; AVX512VPOPCNTDQ:       # %bb.0:12257; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012258; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112259; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112260; AVX512VPOPCNTDQ-NEXT:    retq12261;12262; BITALG-LABEL: ugt_31_v8i64:12263; BITALG:       # %bb.0:12264; BITALG-NEXT:    vpopcntb %zmm0, %zmm012265; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112266; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012267; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112268; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112269; BITALG-NEXT:    retq12270  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12271  %3 = icmp ugt <8 x i64> %2, <i64 31, i64 31, i64 31, i64 31, i64 31, i64 31, i64 31, i64 31>12272  %4 = sext <8 x i1> %3 to <8 x i64>12273  ret <8 x i64> %412274}12275 12276define <8 x i64> @ult_32_v8i64(<8 x i64> %0) {12277; AVX512F-LABEL: ult_32_v8i64:12278; AVX512F:       # %bb.0:12279; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112280; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12281; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312282; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12283; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12284; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312285; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112286; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112287; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112288; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112289; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312290; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112291; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512292; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512293; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012294; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012295; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012296; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012297; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012298; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012299; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112300; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112301; AVX512F-NEXT:    retq12302;12303; AVX512BW-LABEL: ult_32_v8i64:12304; AVX512BW:       # %bb.0:12305; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12306; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212307; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12308; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12309; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212310; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012311; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012312; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012313; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012314; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112315; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012316; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112317; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112318; AVX512BW-NEXT:    retq12319;12320; AVX512VPOPCNTDQ-LABEL: ult_32_v8i64:12321; AVX512VPOPCNTDQ:       # %bb.0:12322; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012323; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112324; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112325; AVX512VPOPCNTDQ-NEXT:    retq12326;12327; BITALG-LABEL: ult_32_v8i64:12328; BITALG:       # %bb.0:12329; BITALG-NEXT:    vpopcntb %zmm0, %zmm012330; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112331; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012332; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112333; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112334; BITALG-NEXT:    retq12335  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12336  %3 = icmp ult <8 x i64> %2, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>12337  %4 = sext <8 x i1> %3 to <8 x i64>12338  ret <8 x i64> %412339}12340 12341define <8 x i64> @ugt_32_v8i64(<8 x i64> %0) {12342; AVX512F-LABEL: ugt_32_v8i64:12343; AVX512F:       # %bb.0:12344; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112345; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12346; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312347; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12348; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12349; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312350; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112351; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112352; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112353; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112354; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312355; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112356; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512357; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512358; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012359; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012360; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012361; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012362; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012363; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012364; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112365; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112366; AVX512F-NEXT:    retq12367;12368; AVX512BW-LABEL: ugt_32_v8i64:12369; AVX512BW:       # %bb.0:12370; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12371; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212372; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12373; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12374; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212375; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012376; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012377; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012378; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012379; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112380; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012381; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112382; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112383; AVX512BW-NEXT:    retq12384;12385; AVX512VPOPCNTDQ-LABEL: ugt_32_v8i64:12386; AVX512VPOPCNTDQ:       # %bb.0:12387; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012388; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112389; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112390; AVX512VPOPCNTDQ-NEXT:    retq12391;12392; BITALG-LABEL: ugt_32_v8i64:12393; BITALG:       # %bb.0:12394; BITALG-NEXT:    vpopcntb %zmm0, %zmm012395; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112396; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012397; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112398; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112399; BITALG-NEXT:    retq12400  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12401  %3 = icmp ugt <8 x i64> %2, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>12402  %4 = sext <8 x i1> %3 to <8 x i64>12403  ret <8 x i64> %412404}12405 12406define <8 x i64> @ult_33_v8i64(<8 x i64> %0) {12407; AVX512F-LABEL: ult_33_v8i64:12408; AVX512F:       # %bb.0:12409; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112410; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12411; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312412; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12413; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12414; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312415; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112416; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112417; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112418; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112419; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312420; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112421; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512422; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512423; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012424; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012425; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012426; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012427; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012428; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012429; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112430; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112431; AVX512F-NEXT:    retq12432;12433; AVX512BW-LABEL: ult_33_v8i64:12434; AVX512BW:       # %bb.0:12435; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12436; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212437; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12438; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12439; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212440; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012441; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012442; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012443; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012444; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112445; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012446; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112447; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112448; AVX512BW-NEXT:    retq12449;12450; AVX512VPOPCNTDQ-LABEL: ult_33_v8i64:12451; AVX512VPOPCNTDQ:       # %bb.0:12452; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012453; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112454; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112455; AVX512VPOPCNTDQ-NEXT:    retq12456;12457; BITALG-LABEL: ult_33_v8i64:12458; BITALG:       # %bb.0:12459; BITALG-NEXT:    vpopcntb %zmm0, %zmm012460; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112461; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012462; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112463; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112464; BITALG-NEXT:    retq12465  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12466  %3 = icmp ult <8 x i64> %2, <i64 33, i64 33, i64 33, i64 33, i64 33, i64 33, i64 33, i64 33>12467  %4 = sext <8 x i1> %3 to <8 x i64>12468  ret <8 x i64> %412469}12470 12471define <8 x i64> @ugt_33_v8i64(<8 x i64> %0) {12472; AVX512F-LABEL: ugt_33_v8i64:12473; AVX512F:       # %bb.0:12474; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112475; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12476; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312477; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12478; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12479; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312480; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112481; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112482; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112483; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112484; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312485; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112486; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512487; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512488; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012489; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012490; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012491; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012492; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012493; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012494; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112495; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112496; AVX512F-NEXT:    retq12497;12498; AVX512BW-LABEL: ugt_33_v8i64:12499; AVX512BW:       # %bb.0:12500; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12501; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212502; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12503; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12504; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212505; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012506; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012507; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012508; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012509; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112510; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012511; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112512; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112513; AVX512BW-NEXT:    retq12514;12515; AVX512VPOPCNTDQ-LABEL: ugt_33_v8i64:12516; AVX512VPOPCNTDQ:       # %bb.0:12517; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012518; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112519; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112520; AVX512VPOPCNTDQ-NEXT:    retq12521;12522; BITALG-LABEL: ugt_33_v8i64:12523; BITALG:       # %bb.0:12524; BITALG-NEXT:    vpopcntb %zmm0, %zmm012525; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112526; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012527; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112528; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112529; BITALG-NEXT:    retq12530  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12531  %3 = icmp ugt <8 x i64> %2, <i64 33, i64 33, i64 33, i64 33, i64 33, i64 33, i64 33, i64 33>12532  %4 = sext <8 x i1> %3 to <8 x i64>12533  ret <8 x i64> %412534}12535 12536define <8 x i64> @ult_34_v8i64(<8 x i64> %0) {12537; AVX512F-LABEL: ult_34_v8i64:12538; AVX512F:       # %bb.0:12539; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112540; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12541; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312542; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12543; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12544; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312545; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112546; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112547; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112548; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112549; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312550; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112551; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512552; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512553; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012554; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012555; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012556; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012557; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012558; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012559; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112560; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112561; AVX512F-NEXT:    retq12562;12563; AVX512BW-LABEL: ult_34_v8i64:12564; AVX512BW:       # %bb.0:12565; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12566; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212567; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12568; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12569; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212570; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012571; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012572; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012573; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012574; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112575; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012576; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112577; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112578; AVX512BW-NEXT:    retq12579;12580; AVX512VPOPCNTDQ-LABEL: ult_34_v8i64:12581; AVX512VPOPCNTDQ:       # %bb.0:12582; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012583; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112584; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112585; AVX512VPOPCNTDQ-NEXT:    retq12586;12587; BITALG-LABEL: ult_34_v8i64:12588; BITALG:       # %bb.0:12589; BITALG-NEXT:    vpopcntb %zmm0, %zmm012590; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112591; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012592; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112593; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112594; BITALG-NEXT:    retq12595  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12596  %3 = icmp ult <8 x i64> %2, <i64 34, i64 34, i64 34, i64 34, i64 34, i64 34, i64 34, i64 34>12597  %4 = sext <8 x i1> %3 to <8 x i64>12598  ret <8 x i64> %412599}12600 12601define <8 x i64> @ugt_34_v8i64(<8 x i64> %0) {12602; AVX512F-LABEL: ugt_34_v8i64:12603; AVX512F:       # %bb.0:12604; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112605; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12606; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312607; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12608; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12609; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312610; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112611; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112612; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112613; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112614; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312615; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112616; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512617; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512618; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012619; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012620; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012621; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012622; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012623; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012624; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112625; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112626; AVX512F-NEXT:    retq12627;12628; AVX512BW-LABEL: ugt_34_v8i64:12629; AVX512BW:       # %bb.0:12630; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12631; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212632; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12633; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12634; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212635; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012636; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012637; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012638; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012639; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112640; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012641; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112642; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112643; AVX512BW-NEXT:    retq12644;12645; AVX512VPOPCNTDQ-LABEL: ugt_34_v8i64:12646; AVX512VPOPCNTDQ:       # %bb.0:12647; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012648; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112649; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112650; AVX512VPOPCNTDQ-NEXT:    retq12651;12652; BITALG-LABEL: ugt_34_v8i64:12653; BITALG:       # %bb.0:12654; BITALG-NEXT:    vpopcntb %zmm0, %zmm012655; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112656; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012657; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112658; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112659; BITALG-NEXT:    retq12660  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12661  %3 = icmp ugt <8 x i64> %2, <i64 34, i64 34, i64 34, i64 34, i64 34, i64 34, i64 34, i64 34>12662  %4 = sext <8 x i1> %3 to <8 x i64>12663  ret <8 x i64> %412664}12665 12666define <8 x i64> @ult_35_v8i64(<8 x i64> %0) {12667; AVX512F-LABEL: ult_35_v8i64:12668; AVX512F:       # %bb.0:12669; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112670; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12671; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312672; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12673; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12674; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312675; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112676; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112677; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112678; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112679; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312680; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112681; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512682; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512683; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012684; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012685; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012686; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012687; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012688; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012689; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112690; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112691; AVX512F-NEXT:    retq12692;12693; AVX512BW-LABEL: ult_35_v8i64:12694; AVX512BW:       # %bb.0:12695; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12696; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212697; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12698; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12699; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212700; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012701; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012702; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012703; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012704; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112705; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012706; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112707; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112708; AVX512BW-NEXT:    retq12709;12710; AVX512VPOPCNTDQ-LABEL: ult_35_v8i64:12711; AVX512VPOPCNTDQ:       # %bb.0:12712; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012713; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112714; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112715; AVX512VPOPCNTDQ-NEXT:    retq12716;12717; BITALG-LABEL: ult_35_v8i64:12718; BITALG:       # %bb.0:12719; BITALG-NEXT:    vpopcntb %zmm0, %zmm012720; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112721; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012722; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112723; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112724; BITALG-NEXT:    retq12725  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12726  %3 = icmp ult <8 x i64> %2, <i64 35, i64 35, i64 35, i64 35, i64 35, i64 35, i64 35, i64 35>12727  %4 = sext <8 x i1> %3 to <8 x i64>12728  ret <8 x i64> %412729}12730 12731define <8 x i64> @ugt_35_v8i64(<8 x i64> %0) {12732; AVX512F-LABEL: ugt_35_v8i64:12733; AVX512F:       # %bb.0:12734; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112735; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12736; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312737; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12738; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12739; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312740; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112741; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112742; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112743; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112744; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312745; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112746; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512747; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512748; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012749; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012750; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012751; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012752; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012753; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012754; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112755; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112756; AVX512F-NEXT:    retq12757;12758; AVX512BW-LABEL: ugt_35_v8i64:12759; AVX512BW:       # %bb.0:12760; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12761; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212762; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12763; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12764; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212765; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012766; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012767; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012768; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012769; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112770; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012771; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112772; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112773; AVX512BW-NEXT:    retq12774;12775; AVX512VPOPCNTDQ-LABEL: ugt_35_v8i64:12776; AVX512VPOPCNTDQ:       # %bb.0:12777; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012778; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112779; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112780; AVX512VPOPCNTDQ-NEXT:    retq12781;12782; BITALG-LABEL: ugt_35_v8i64:12783; BITALG:       # %bb.0:12784; BITALG-NEXT:    vpopcntb %zmm0, %zmm012785; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112786; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012787; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112788; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112789; BITALG-NEXT:    retq12790  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12791  %3 = icmp ugt <8 x i64> %2, <i64 35, i64 35, i64 35, i64 35, i64 35, i64 35, i64 35, i64 35>12792  %4 = sext <8 x i1> %3 to <8 x i64>12793  ret <8 x i64> %412794}12795 12796define <8 x i64> @ult_36_v8i64(<8 x i64> %0) {12797; AVX512F-LABEL: ult_36_v8i64:12798; AVX512F:       # %bb.0:12799; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112800; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12801; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312802; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12803; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12804; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312805; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112806; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112807; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112808; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112809; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312810; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112811; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512812; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512813; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012814; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012815; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012816; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012817; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012818; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012819; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112820; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112821; AVX512F-NEXT:    retq12822;12823; AVX512BW-LABEL: ult_36_v8i64:12824; AVX512BW:       # %bb.0:12825; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12826; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212827; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12828; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12829; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212830; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012831; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012832; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012833; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012834; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112835; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012836; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112837; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112838; AVX512BW-NEXT:    retq12839;12840; AVX512VPOPCNTDQ-LABEL: ult_36_v8i64:12841; AVX512VPOPCNTDQ:       # %bb.0:12842; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012843; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112844; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112845; AVX512VPOPCNTDQ-NEXT:    retq12846;12847; BITALG-LABEL: ult_36_v8i64:12848; BITALG:       # %bb.0:12849; BITALG-NEXT:    vpopcntb %zmm0, %zmm012850; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112851; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012852; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112853; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112854; BITALG-NEXT:    retq12855  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12856  %3 = icmp ult <8 x i64> %2, <i64 36, i64 36, i64 36, i64 36, i64 36, i64 36, i64 36, i64 36>12857  %4 = sext <8 x i1> %3 to <8 x i64>12858  ret <8 x i64> %412859}12860 12861define <8 x i64> @ugt_36_v8i64(<8 x i64> %0) {12862; AVX512F-LABEL: ugt_36_v8i64:12863; AVX512F:       # %bb.0:12864; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112865; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12866; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312867; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12868; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12869; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312870; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112871; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112872; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112873; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112874; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312875; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112876; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512877; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512878; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012879; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012880; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012881; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012882; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012883; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012884; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112885; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112886; AVX512F-NEXT:    retq12887;12888; AVX512BW-LABEL: ugt_36_v8i64:12889; AVX512BW:       # %bb.0:12890; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12891; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212892; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12893; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12894; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212895; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012896; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012897; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012898; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012899; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112900; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012901; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112902; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112903; AVX512BW-NEXT:    retq12904;12905; AVX512VPOPCNTDQ-LABEL: ugt_36_v8i64:12906; AVX512VPOPCNTDQ:       # %bb.0:12907; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012908; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112909; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112910; AVX512VPOPCNTDQ-NEXT:    retq12911;12912; BITALG-LABEL: ugt_36_v8i64:12913; BITALG:       # %bb.0:12914; BITALG-NEXT:    vpopcntb %zmm0, %zmm012915; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112916; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012917; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112918; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112919; BITALG-NEXT:    retq12920  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12921  %3 = icmp ugt <8 x i64> %2, <i64 36, i64 36, i64 36, i64 36, i64 36, i64 36, i64 36, i64 36>12922  %4 = sext <8 x i1> %3 to <8 x i64>12923  ret <8 x i64> %412924}12925 12926define <8 x i64> @ult_37_v8i64(<8 x i64> %0) {12927; AVX512F-LABEL: ult_37_v8i64:12928; AVX512F:       # %bb.0:12929; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112930; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12931; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312932; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12933; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12934; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm312935; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm112936; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm112937; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm112938; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm112939; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm312940; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm112941; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm512942; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm512943; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm012944; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm012945; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm012946; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm012947; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm012948; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm012949; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112950; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112951; AVX512F-NEXT:    retq12952;12953; AVX512BW-LABEL: ult_37_v8i64:12954; AVX512BW:       # %bb.0:12955; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12956; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm212957; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12958; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]12959; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm212960; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm012961; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm012962; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm012963; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm012964; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm112965; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012966; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112967; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112968; AVX512BW-NEXT:    retq12969;12970; AVX512VPOPCNTDQ-LABEL: ult_37_v8i64:12971; AVX512VPOPCNTDQ:       # %bb.0:12972; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm012973; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112974; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112975; AVX512VPOPCNTDQ-NEXT:    retq12976;12977; BITALG-LABEL: ult_37_v8i64:12978; BITALG:       # %bb.0:12979; BITALG-NEXT:    vpopcntb %zmm0, %zmm012980; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm112981; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm012982; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k112983; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -112984; BITALG-NEXT:    retq12985  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)12986  %3 = icmp ult <8 x i64> %2, <i64 37, i64 37, i64 37, i64 37, i64 37, i64 37, i64 37, i64 37>12987  %4 = sext <8 x i1> %3 to <8 x i64>12988  ret <8 x i64> %412989}12990 12991define <8 x i64> @ugt_37_v8i64(<8 x i64> %0) {12992; AVX512F-LABEL: ugt_37_v8i64:12993; AVX512F:       # %bb.0:12994; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm112995; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]12996; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm312997; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]12998; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]12999; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313000; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113001; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113002; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113003; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113004; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313005; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113006; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513007; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513008; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013009; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013010; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013011; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013012; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013013; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013014; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113015; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113016; AVX512F-NEXT:    retq13017;13018; AVX512BW-LABEL: ugt_37_v8i64:13019; AVX512BW:       # %bb.0:13020; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13021; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213022; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13023; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13024; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213025; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013026; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013027; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013028; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013029; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113030; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013031; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113032; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113033; AVX512BW-NEXT:    retq13034;13035; AVX512VPOPCNTDQ-LABEL: ugt_37_v8i64:13036; AVX512VPOPCNTDQ:       # %bb.0:13037; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013038; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113039; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113040; AVX512VPOPCNTDQ-NEXT:    retq13041;13042; BITALG-LABEL: ugt_37_v8i64:13043; BITALG:       # %bb.0:13044; BITALG-NEXT:    vpopcntb %zmm0, %zmm013045; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113046; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013047; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113048; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113049; BITALG-NEXT:    retq13050  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13051  %3 = icmp ugt <8 x i64> %2, <i64 37, i64 37, i64 37, i64 37, i64 37, i64 37, i64 37, i64 37>13052  %4 = sext <8 x i1> %3 to <8 x i64>13053  ret <8 x i64> %413054}13055 13056define <8 x i64> @ult_38_v8i64(<8 x i64> %0) {13057; AVX512F-LABEL: ult_38_v8i64:13058; AVX512F:       # %bb.0:13059; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113060; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13061; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313062; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13063; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13064; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313065; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113066; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113067; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113068; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113069; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313070; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113071; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513072; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513073; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013074; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013075; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013076; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013077; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013078; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013079; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113080; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113081; AVX512F-NEXT:    retq13082;13083; AVX512BW-LABEL: ult_38_v8i64:13084; AVX512BW:       # %bb.0:13085; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13086; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213087; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13088; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13089; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213090; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013091; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013092; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013093; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013094; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113095; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013096; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113097; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113098; AVX512BW-NEXT:    retq13099;13100; AVX512VPOPCNTDQ-LABEL: ult_38_v8i64:13101; AVX512VPOPCNTDQ:       # %bb.0:13102; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013103; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113104; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113105; AVX512VPOPCNTDQ-NEXT:    retq13106;13107; BITALG-LABEL: ult_38_v8i64:13108; BITALG:       # %bb.0:13109; BITALG-NEXT:    vpopcntb %zmm0, %zmm013110; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113111; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013112; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113113; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113114; BITALG-NEXT:    retq13115  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13116  %3 = icmp ult <8 x i64> %2, <i64 38, i64 38, i64 38, i64 38, i64 38, i64 38, i64 38, i64 38>13117  %4 = sext <8 x i1> %3 to <8 x i64>13118  ret <8 x i64> %413119}13120 13121define <8 x i64> @ugt_38_v8i64(<8 x i64> %0) {13122; AVX512F-LABEL: ugt_38_v8i64:13123; AVX512F:       # %bb.0:13124; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113125; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13126; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313127; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13128; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13129; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313130; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113131; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113132; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113133; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113134; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313135; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113136; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513137; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513138; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013139; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013140; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013141; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013142; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013143; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013144; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113145; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113146; AVX512F-NEXT:    retq13147;13148; AVX512BW-LABEL: ugt_38_v8i64:13149; AVX512BW:       # %bb.0:13150; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13151; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213152; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13153; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13154; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213155; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013156; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013157; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013158; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013159; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113160; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013161; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113162; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113163; AVX512BW-NEXT:    retq13164;13165; AVX512VPOPCNTDQ-LABEL: ugt_38_v8i64:13166; AVX512VPOPCNTDQ:       # %bb.0:13167; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013168; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113169; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113170; AVX512VPOPCNTDQ-NEXT:    retq13171;13172; BITALG-LABEL: ugt_38_v8i64:13173; BITALG:       # %bb.0:13174; BITALG-NEXT:    vpopcntb %zmm0, %zmm013175; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113176; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013177; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113178; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113179; BITALG-NEXT:    retq13180  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13181  %3 = icmp ugt <8 x i64> %2, <i64 38, i64 38, i64 38, i64 38, i64 38, i64 38, i64 38, i64 38>13182  %4 = sext <8 x i1> %3 to <8 x i64>13183  ret <8 x i64> %413184}13185 13186define <8 x i64> @ult_39_v8i64(<8 x i64> %0) {13187; AVX512F-LABEL: ult_39_v8i64:13188; AVX512F:       # %bb.0:13189; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113190; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13191; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313192; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13193; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13194; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313195; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113196; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113197; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113198; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113199; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313200; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113201; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513202; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513203; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013204; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013205; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013206; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013207; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013208; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013209; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113210; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113211; AVX512F-NEXT:    retq13212;13213; AVX512BW-LABEL: ult_39_v8i64:13214; AVX512BW:       # %bb.0:13215; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13216; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213217; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13218; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13219; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213220; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013221; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013222; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013223; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013224; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113225; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013226; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113227; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113228; AVX512BW-NEXT:    retq13229;13230; AVX512VPOPCNTDQ-LABEL: ult_39_v8i64:13231; AVX512VPOPCNTDQ:       # %bb.0:13232; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013233; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113234; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113235; AVX512VPOPCNTDQ-NEXT:    retq13236;13237; BITALG-LABEL: ult_39_v8i64:13238; BITALG:       # %bb.0:13239; BITALG-NEXT:    vpopcntb %zmm0, %zmm013240; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113241; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013242; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113243; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113244; BITALG-NEXT:    retq13245  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13246  %3 = icmp ult <8 x i64> %2, <i64 39, i64 39, i64 39, i64 39, i64 39, i64 39, i64 39, i64 39>13247  %4 = sext <8 x i1> %3 to <8 x i64>13248  ret <8 x i64> %413249}13250 13251define <8 x i64> @ugt_39_v8i64(<8 x i64> %0) {13252; AVX512F-LABEL: ugt_39_v8i64:13253; AVX512F:       # %bb.0:13254; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113255; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13256; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313257; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13258; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13259; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313260; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113261; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113262; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113263; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113264; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313265; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113266; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513267; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513268; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013269; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013270; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013271; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013272; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013273; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013274; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113275; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113276; AVX512F-NEXT:    retq13277;13278; AVX512BW-LABEL: ugt_39_v8i64:13279; AVX512BW:       # %bb.0:13280; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13281; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213282; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13283; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13284; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213285; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013286; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013287; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013288; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013289; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113290; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013291; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113292; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113293; AVX512BW-NEXT:    retq13294;13295; AVX512VPOPCNTDQ-LABEL: ugt_39_v8i64:13296; AVX512VPOPCNTDQ:       # %bb.0:13297; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013298; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113299; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113300; AVX512VPOPCNTDQ-NEXT:    retq13301;13302; BITALG-LABEL: ugt_39_v8i64:13303; BITALG:       # %bb.0:13304; BITALG-NEXT:    vpopcntb %zmm0, %zmm013305; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113306; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013307; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113308; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113309; BITALG-NEXT:    retq13310  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13311  %3 = icmp ugt <8 x i64> %2, <i64 39, i64 39, i64 39, i64 39, i64 39, i64 39, i64 39, i64 39>13312  %4 = sext <8 x i1> %3 to <8 x i64>13313  ret <8 x i64> %413314}13315 13316define <8 x i64> @ult_40_v8i64(<8 x i64> %0) {13317; AVX512F-LABEL: ult_40_v8i64:13318; AVX512F:       # %bb.0:13319; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113320; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13321; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313322; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13323; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13324; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313325; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113326; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113327; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113328; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113329; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313330; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113331; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513332; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513333; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013334; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013335; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013336; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013337; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013338; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013339; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113340; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113341; AVX512F-NEXT:    retq13342;13343; AVX512BW-LABEL: ult_40_v8i64:13344; AVX512BW:       # %bb.0:13345; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13346; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213347; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13348; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13349; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213350; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013351; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013352; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013353; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013354; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113355; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013356; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113357; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113358; AVX512BW-NEXT:    retq13359;13360; AVX512VPOPCNTDQ-LABEL: ult_40_v8i64:13361; AVX512VPOPCNTDQ:       # %bb.0:13362; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013363; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113364; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113365; AVX512VPOPCNTDQ-NEXT:    retq13366;13367; BITALG-LABEL: ult_40_v8i64:13368; BITALG:       # %bb.0:13369; BITALG-NEXT:    vpopcntb %zmm0, %zmm013370; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113371; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013372; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113373; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113374; BITALG-NEXT:    retq13375  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13376  %3 = icmp ult <8 x i64> %2, <i64 40, i64 40, i64 40, i64 40, i64 40, i64 40, i64 40, i64 40>13377  %4 = sext <8 x i1> %3 to <8 x i64>13378  ret <8 x i64> %413379}13380 13381define <8 x i64> @ugt_40_v8i64(<8 x i64> %0) {13382; AVX512F-LABEL: ugt_40_v8i64:13383; AVX512F:       # %bb.0:13384; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113385; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13386; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313387; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13388; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13389; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313390; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113391; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113392; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113393; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113394; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313395; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113396; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513397; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513398; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013399; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013400; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013401; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013402; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013403; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013404; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113405; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113406; AVX512F-NEXT:    retq13407;13408; AVX512BW-LABEL: ugt_40_v8i64:13409; AVX512BW:       # %bb.0:13410; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13411; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213412; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13413; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13414; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213415; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013416; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013417; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013418; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013419; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113420; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013421; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113422; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113423; AVX512BW-NEXT:    retq13424;13425; AVX512VPOPCNTDQ-LABEL: ugt_40_v8i64:13426; AVX512VPOPCNTDQ:       # %bb.0:13427; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013428; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113429; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113430; AVX512VPOPCNTDQ-NEXT:    retq13431;13432; BITALG-LABEL: ugt_40_v8i64:13433; BITALG:       # %bb.0:13434; BITALG-NEXT:    vpopcntb %zmm0, %zmm013435; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113436; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013437; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113438; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113439; BITALG-NEXT:    retq13440  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13441  %3 = icmp ugt <8 x i64> %2, <i64 40, i64 40, i64 40, i64 40, i64 40, i64 40, i64 40, i64 40>13442  %4 = sext <8 x i1> %3 to <8 x i64>13443  ret <8 x i64> %413444}13445 13446define <8 x i64> @ult_41_v8i64(<8 x i64> %0) {13447; AVX512F-LABEL: ult_41_v8i64:13448; AVX512F:       # %bb.0:13449; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113450; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13451; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313452; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13453; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13454; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313455; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113456; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113457; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113458; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113459; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313460; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113461; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513462; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513463; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013464; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013465; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013466; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013467; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013468; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013469; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113470; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113471; AVX512F-NEXT:    retq13472;13473; AVX512BW-LABEL: ult_41_v8i64:13474; AVX512BW:       # %bb.0:13475; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13476; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213477; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13478; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13479; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213480; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013481; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013482; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013483; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013484; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113485; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013486; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113487; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113488; AVX512BW-NEXT:    retq13489;13490; AVX512VPOPCNTDQ-LABEL: ult_41_v8i64:13491; AVX512VPOPCNTDQ:       # %bb.0:13492; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013493; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113494; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113495; AVX512VPOPCNTDQ-NEXT:    retq13496;13497; BITALG-LABEL: ult_41_v8i64:13498; BITALG:       # %bb.0:13499; BITALG-NEXT:    vpopcntb %zmm0, %zmm013500; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113501; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013502; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113503; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113504; BITALG-NEXT:    retq13505  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13506  %3 = icmp ult <8 x i64> %2, <i64 41, i64 41, i64 41, i64 41, i64 41, i64 41, i64 41, i64 41>13507  %4 = sext <8 x i1> %3 to <8 x i64>13508  ret <8 x i64> %413509}13510 13511define <8 x i64> @ugt_41_v8i64(<8 x i64> %0) {13512; AVX512F-LABEL: ugt_41_v8i64:13513; AVX512F:       # %bb.0:13514; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113515; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13516; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313517; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13518; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13519; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313520; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113521; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113522; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113523; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113524; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313525; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113526; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513527; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513528; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013529; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013530; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013531; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013532; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013533; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013534; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113535; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113536; AVX512F-NEXT:    retq13537;13538; AVX512BW-LABEL: ugt_41_v8i64:13539; AVX512BW:       # %bb.0:13540; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13541; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213542; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13543; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13544; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213545; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013546; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013547; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013548; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013549; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113550; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013551; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113552; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113553; AVX512BW-NEXT:    retq13554;13555; AVX512VPOPCNTDQ-LABEL: ugt_41_v8i64:13556; AVX512VPOPCNTDQ:       # %bb.0:13557; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013558; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113559; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113560; AVX512VPOPCNTDQ-NEXT:    retq13561;13562; BITALG-LABEL: ugt_41_v8i64:13563; BITALG:       # %bb.0:13564; BITALG-NEXT:    vpopcntb %zmm0, %zmm013565; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113566; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013567; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113568; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113569; BITALG-NEXT:    retq13570  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13571  %3 = icmp ugt <8 x i64> %2, <i64 41, i64 41, i64 41, i64 41, i64 41, i64 41, i64 41, i64 41>13572  %4 = sext <8 x i1> %3 to <8 x i64>13573  ret <8 x i64> %413574}13575 13576define <8 x i64> @ult_42_v8i64(<8 x i64> %0) {13577; AVX512F-LABEL: ult_42_v8i64:13578; AVX512F:       # %bb.0:13579; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113580; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13581; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313582; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13583; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13584; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313585; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113586; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113587; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113588; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113589; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313590; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113591; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513592; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513593; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013594; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013595; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013596; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013597; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013598; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013599; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113600; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113601; AVX512F-NEXT:    retq13602;13603; AVX512BW-LABEL: ult_42_v8i64:13604; AVX512BW:       # %bb.0:13605; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13606; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213607; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13608; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13609; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213610; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013611; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013612; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013613; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013614; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113615; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013616; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113617; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113618; AVX512BW-NEXT:    retq13619;13620; AVX512VPOPCNTDQ-LABEL: ult_42_v8i64:13621; AVX512VPOPCNTDQ:       # %bb.0:13622; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013623; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113624; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113625; AVX512VPOPCNTDQ-NEXT:    retq13626;13627; BITALG-LABEL: ult_42_v8i64:13628; BITALG:       # %bb.0:13629; BITALG-NEXT:    vpopcntb %zmm0, %zmm013630; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113631; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013632; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113633; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113634; BITALG-NEXT:    retq13635  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13636  %3 = icmp ult <8 x i64> %2, <i64 42, i64 42, i64 42, i64 42, i64 42, i64 42, i64 42, i64 42>13637  %4 = sext <8 x i1> %3 to <8 x i64>13638  ret <8 x i64> %413639}13640 13641define <8 x i64> @ugt_42_v8i64(<8 x i64> %0) {13642; AVX512F-LABEL: ugt_42_v8i64:13643; AVX512F:       # %bb.0:13644; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113645; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13646; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313647; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13648; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13649; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313650; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113651; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113652; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113653; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113654; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313655; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113656; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513657; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513658; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013659; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013660; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013661; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013662; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013663; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013664; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113665; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113666; AVX512F-NEXT:    retq13667;13668; AVX512BW-LABEL: ugt_42_v8i64:13669; AVX512BW:       # %bb.0:13670; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13671; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213672; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13673; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13674; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213675; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013676; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013677; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013678; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013679; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113680; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013681; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113682; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113683; AVX512BW-NEXT:    retq13684;13685; AVX512VPOPCNTDQ-LABEL: ugt_42_v8i64:13686; AVX512VPOPCNTDQ:       # %bb.0:13687; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013688; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113689; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113690; AVX512VPOPCNTDQ-NEXT:    retq13691;13692; BITALG-LABEL: ugt_42_v8i64:13693; BITALG:       # %bb.0:13694; BITALG-NEXT:    vpopcntb %zmm0, %zmm013695; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113696; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013697; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113698; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113699; BITALG-NEXT:    retq13700  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13701  %3 = icmp ugt <8 x i64> %2, <i64 42, i64 42, i64 42, i64 42, i64 42, i64 42, i64 42, i64 42>13702  %4 = sext <8 x i1> %3 to <8 x i64>13703  ret <8 x i64> %413704}13705 13706define <8 x i64> @ult_43_v8i64(<8 x i64> %0) {13707; AVX512F-LABEL: ult_43_v8i64:13708; AVX512F:       # %bb.0:13709; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113710; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13711; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313712; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13713; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13714; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313715; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113716; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113717; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113718; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113719; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313720; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113721; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513722; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513723; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013724; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013725; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013726; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013727; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013728; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013729; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113730; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113731; AVX512F-NEXT:    retq13732;13733; AVX512BW-LABEL: ult_43_v8i64:13734; AVX512BW:       # %bb.0:13735; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13736; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213737; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13738; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13739; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213740; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013741; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013742; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013743; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013744; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113745; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013746; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113747; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113748; AVX512BW-NEXT:    retq13749;13750; AVX512VPOPCNTDQ-LABEL: ult_43_v8i64:13751; AVX512VPOPCNTDQ:       # %bb.0:13752; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013753; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113754; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113755; AVX512VPOPCNTDQ-NEXT:    retq13756;13757; BITALG-LABEL: ult_43_v8i64:13758; BITALG:       # %bb.0:13759; BITALG-NEXT:    vpopcntb %zmm0, %zmm013760; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113761; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013762; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113763; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113764; BITALG-NEXT:    retq13765  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13766  %3 = icmp ult <8 x i64> %2, <i64 43, i64 43, i64 43, i64 43, i64 43, i64 43, i64 43, i64 43>13767  %4 = sext <8 x i1> %3 to <8 x i64>13768  ret <8 x i64> %413769}13770 13771define <8 x i64> @ugt_43_v8i64(<8 x i64> %0) {13772; AVX512F-LABEL: ugt_43_v8i64:13773; AVX512F:       # %bb.0:13774; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113775; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13776; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313777; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13778; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13779; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313780; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113781; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113782; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113783; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113784; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313785; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113786; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513787; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513788; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013789; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013790; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013791; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013792; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013793; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013794; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113795; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113796; AVX512F-NEXT:    retq13797;13798; AVX512BW-LABEL: ugt_43_v8i64:13799; AVX512BW:       # %bb.0:13800; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13801; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213802; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13803; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13804; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213805; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013806; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013807; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013808; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013809; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113810; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013811; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113812; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113813; AVX512BW-NEXT:    retq13814;13815; AVX512VPOPCNTDQ-LABEL: ugt_43_v8i64:13816; AVX512VPOPCNTDQ:       # %bb.0:13817; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013818; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113819; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113820; AVX512VPOPCNTDQ-NEXT:    retq13821;13822; BITALG-LABEL: ugt_43_v8i64:13823; BITALG:       # %bb.0:13824; BITALG-NEXT:    vpopcntb %zmm0, %zmm013825; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113826; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013827; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113828; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113829; BITALG-NEXT:    retq13830  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13831  %3 = icmp ugt <8 x i64> %2, <i64 43, i64 43, i64 43, i64 43, i64 43, i64 43, i64 43, i64 43>13832  %4 = sext <8 x i1> %3 to <8 x i64>13833  ret <8 x i64> %413834}13835 13836define <8 x i64> @ult_44_v8i64(<8 x i64> %0) {13837; AVX512F-LABEL: ult_44_v8i64:13838; AVX512F:       # %bb.0:13839; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113840; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13841; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313842; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13843; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13844; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313845; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113846; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113847; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113848; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113849; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313850; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113851; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513852; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513853; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013854; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013855; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013856; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013857; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013858; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013859; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113860; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113861; AVX512F-NEXT:    retq13862;13863; AVX512BW-LABEL: ult_44_v8i64:13864; AVX512BW:       # %bb.0:13865; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13866; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213867; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13868; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13869; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213870; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013871; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013872; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013873; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013874; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113875; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013876; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113877; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113878; AVX512BW-NEXT:    retq13879;13880; AVX512VPOPCNTDQ-LABEL: ult_44_v8i64:13881; AVX512VPOPCNTDQ:       # %bb.0:13882; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013883; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113884; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113885; AVX512VPOPCNTDQ-NEXT:    retq13886;13887; BITALG-LABEL: ult_44_v8i64:13888; BITALG:       # %bb.0:13889; BITALG-NEXT:    vpopcntb %zmm0, %zmm013890; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113891; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013892; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113893; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113894; BITALG-NEXT:    retq13895  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13896  %3 = icmp ult <8 x i64> %2, <i64 44, i64 44, i64 44, i64 44, i64 44, i64 44, i64 44, i64 44>13897  %4 = sext <8 x i1> %3 to <8 x i64>13898  ret <8 x i64> %413899}13900 13901define <8 x i64> @ugt_44_v8i64(<8 x i64> %0) {13902; AVX512F-LABEL: ugt_44_v8i64:13903; AVX512F:       # %bb.0:13904; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113905; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13906; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313907; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13908; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13909; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313910; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113911; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113912; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113913; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113914; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313915; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113916; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513917; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513918; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013919; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013920; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013921; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013922; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013923; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013924; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113925; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113926; AVX512F-NEXT:    retq13927;13928; AVX512BW-LABEL: ugt_44_v8i64:13929; AVX512BW:       # %bb.0:13930; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13931; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213932; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13933; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13934; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm213935; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm013936; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm013937; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm013938; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm013939; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm113940; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013941; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113942; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113943; AVX512BW-NEXT:    retq13944;13945; AVX512VPOPCNTDQ-LABEL: ugt_44_v8i64:13946; AVX512VPOPCNTDQ:       # %bb.0:13947; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm013948; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113949; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113950; AVX512VPOPCNTDQ-NEXT:    retq13951;13952; BITALG-LABEL: ugt_44_v8i64:13953; BITALG:       # %bb.0:13954; BITALG-NEXT:    vpopcntb %zmm0, %zmm013955; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm113956; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm013957; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113958; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113959; BITALG-NEXT:    retq13960  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)13961  %3 = icmp ugt <8 x i64> %2, <i64 44, i64 44, i64 44, i64 44, i64 44, i64 44, i64 44, i64 44>13962  %4 = sext <8 x i1> %3 to <8 x i64>13963  ret <8 x i64> %413964}13965 13966define <8 x i64> @ult_45_v8i64(<8 x i64> %0) {13967; AVX512F-LABEL: ult_45_v8i64:13968; AVX512F:       # %bb.0:13969; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm113970; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13971; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm313972; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13973; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]13974; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm313975; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm113976; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm113977; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm113978; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm113979; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm313980; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm113981; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm513982; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm513983; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm013984; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm013985; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm013986; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm013987; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm013988; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm013989; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k113990; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -113991; AVX512F-NEXT:    retq13992;13993; AVX512BW-LABEL: ult_45_v8i64:13994; AVX512BW:       # %bb.0:13995; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]13996; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm213997; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]13998; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]13999; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214000; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014001; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014002; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014003; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014004; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114005; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014006; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114007; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114008; AVX512BW-NEXT:    retq14009;14010; AVX512VPOPCNTDQ-LABEL: ult_45_v8i64:14011; AVX512VPOPCNTDQ:       # %bb.0:14012; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014013; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114014; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114015; AVX512VPOPCNTDQ-NEXT:    retq14016;14017; BITALG-LABEL: ult_45_v8i64:14018; BITALG:       # %bb.0:14019; BITALG-NEXT:    vpopcntb %zmm0, %zmm014020; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114021; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014022; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114023; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114024; BITALG-NEXT:    retq14025  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14026  %3 = icmp ult <8 x i64> %2, <i64 45, i64 45, i64 45, i64 45, i64 45, i64 45, i64 45, i64 45>14027  %4 = sext <8 x i1> %3 to <8 x i64>14028  ret <8 x i64> %414029}14030 14031define <8 x i64> @ugt_45_v8i64(<8 x i64> %0) {14032; AVX512F-LABEL: ugt_45_v8i64:14033; AVX512F:       # %bb.0:14034; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114035; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14036; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314037; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14038; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14039; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314040; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114041; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114042; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114043; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114044; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314045; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114046; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514047; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514048; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014049; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014050; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014051; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014052; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014053; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014054; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114055; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114056; AVX512F-NEXT:    retq14057;14058; AVX512BW-LABEL: ugt_45_v8i64:14059; AVX512BW:       # %bb.0:14060; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14061; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214062; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14063; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14064; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214065; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014066; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014067; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014068; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014069; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114070; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014071; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114072; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114073; AVX512BW-NEXT:    retq14074;14075; AVX512VPOPCNTDQ-LABEL: ugt_45_v8i64:14076; AVX512VPOPCNTDQ:       # %bb.0:14077; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014078; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114079; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114080; AVX512VPOPCNTDQ-NEXT:    retq14081;14082; BITALG-LABEL: ugt_45_v8i64:14083; BITALG:       # %bb.0:14084; BITALG-NEXT:    vpopcntb %zmm0, %zmm014085; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114086; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014087; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114088; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114089; BITALG-NEXT:    retq14090  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14091  %3 = icmp ugt <8 x i64> %2, <i64 45, i64 45, i64 45, i64 45, i64 45, i64 45, i64 45, i64 45>14092  %4 = sext <8 x i1> %3 to <8 x i64>14093  ret <8 x i64> %414094}14095 14096define <8 x i64> @ult_46_v8i64(<8 x i64> %0) {14097; AVX512F-LABEL: ult_46_v8i64:14098; AVX512F:       # %bb.0:14099; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114100; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14101; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314102; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14103; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14104; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314105; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114106; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114107; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114108; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114109; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314110; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114111; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514112; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514113; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014114; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014115; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014116; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014117; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014118; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014119; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114120; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114121; AVX512F-NEXT:    retq14122;14123; AVX512BW-LABEL: ult_46_v8i64:14124; AVX512BW:       # %bb.0:14125; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14126; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214127; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14128; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14129; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214130; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014131; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014132; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014133; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014134; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114135; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014136; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114137; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114138; AVX512BW-NEXT:    retq14139;14140; AVX512VPOPCNTDQ-LABEL: ult_46_v8i64:14141; AVX512VPOPCNTDQ:       # %bb.0:14142; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014143; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114144; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114145; AVX512VPOPCNTDQ-NEXT:    retq14146;14147; BITALG-LABEL: ult_46_v8i64:14148; BITALG:       # %bb.0:14149; BITALG-NEXT:    vpopcntb %zmm0, %zmm014150; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114151; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014152; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114153; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114154; BITALG-NEXT:    retq14155  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14156  %3 = icmp ult <8 x i64> %2, <i64 46, i64 46, i64 46, i64 46, i64 46, i64 46, i64 46, i64 46>14157  %4 = sext <8 x i1> %3 to <8 x i64>14158  ret <8 x i64> %414159}14160 14161define <8 x i64> @ugt_46_v8i64(<8 x i64> %0) {14162; AVX512F-LABEL: ugt_46_v8i64:14163; AVX512F:       # %bb.0:14164; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114165; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14166; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314167; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14168; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14169; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314170; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114171; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114172; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114173; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114174; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314175; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114176; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514177; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514178; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014179; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014180; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014181; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014182; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014183; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014184; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114185; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114186; AVX512F-NEXT:    retq14187;14188; AVX512BW-LABEL: ugt_46_v8i64:14189; AVX512BW:       # %bb.0:14190; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14191; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214192; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14193; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14194; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214195; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014196; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014197; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014198; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014199; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114200; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014201; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114202; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114203; AVX512BW-NEXT:    retq14204;14205; AVX512VPOPCNTDQ-LABEL: ugt_46_v8i64:14206; AVX512VPOPCNTDQ:       # %bb.0:14207; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014208; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114209; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114210; AVX512VPOPCNTDQ-NEXT:    retq14211;14212; BITALG-LABEL: ugt_46_v8i64:14213; BITALG:       # %bb.0:14214; BITALG-NEXT:    vpopcntb %zmm0, %zmm014215; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114216; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014217; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114218; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114219; BITALG-NEXT:    retq14220  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14221  %3 = icmp ugt <8 x i64> %2, <i64 46, i64 46, i64 46, i64 46, i64 46, i64 46, i64 46, i64 46>14222  %4 = sext <8 x i1> %3 to <8 x i64>14223  ret <8 x i64> %414224}14225 14226define <8 x i64> @ult_47_v8i64(<8 x i64> %0) {14227; AVX512F-LABEL: ult_47_v8i64:14228; AVX512F:       # %bb.0:14229; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114230; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14231; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314232; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14233; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14234; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314235; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114236; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114237; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114238; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114239; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314240; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114241; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514242; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514243; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014244; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014245; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014246; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014247; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014248; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014249; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114250; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114251; AVX512F-NEXT:    retq14252;14253; AVX512BW-LABEL: ult_47_v8i64:14254; AVX512BW:       # %bb.0:14255; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14256; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214257; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14258; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14259; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214260; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014261; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014262; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014263; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014264; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114265; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014266; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114267; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114268; AVX512BW-NEXT:    retq14269;14270; AVX512VPOPCNTDQ-LABEL: ult_47_v8i64:14271; AVX512VPOPCNTDQ:       # %bb.0:14272; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014273; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114274; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114275; AVX512VPOPCNTDQ-NEXT:    retq14276;14277; BITALG-LABEL: ult_47_v8i64:14278; BITALG:       # %bb.0:14279; BITALG-NEXT:    vpopcntb %zmm0, %zmm014280; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114281; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014282; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114283; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114284; BITALG-NEXT:    retq14285  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14286  %3 = icmp ult <8 x i64> %2, <i64 47, i64 47, i64 47, i64 47, i64 47, i64 47, i64 47, i64 47>14287  %4 = sext <8 x i1> %3 to <8 x i64>14288  ret <8 x i64> %414289}14290 14291define <8 x i64> @ugt_47_v8i64(<8 x i64> %0) {14292; AVX512F-LABEL: ugt_47_v8i64:14293; AVX512F:       # %bb.0:14294; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114295; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14296; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314297; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14298; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14299; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314300; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114301; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114302; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114303; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114304; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314305; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114306; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514307; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514308; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014309; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014310; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014311; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014312; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014313; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014314; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114315; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114316; AVX512F-NEXT:    retq14317;14318; AVX512BW-LABEL: ugt_47_v8i64:14319; AVX512BW:       # %bb.0:14320; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14321; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214322; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14323; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14324; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214325; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014326; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014327; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014328; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014329; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114330; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014331; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114332; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114333; AVX512BW-NEXT:    retq14334;14335; AVX512VPOPCNTDQ-LABEL: ugt_47_v8i64:14336; AVX512VPOPCNTDQ:       # %bb.0:14337; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014338; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114339; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114340; AVX512VPOPCNTDQ-NEXT:    retq14341;14342; BITALG-LABEL: ugt_47_v8i64:14343; BITALG:       # %bb.0:14344; BITALG-NEXT:    vpopcntb %zmm0, %zmm014345; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114346; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014347; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114348; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114349; BITALG-NEXT:    retq14350  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14351  %3 = icmp ugt <8 x i64> %2, <i64 47, i64 47, i64 47, i64 47, i64 47, i64 47, i64 47, i64 47>14352  %4 = sext <8 x i1> %3 to <8 x i64>14353  ret <8 x i64> %414354}14355 14356define <8 x i64> @ult_48_v8i64(<8 x i64> %0) {14357; AVX512F-LABEL: ult_48_v8i64:14358; AVX512F:       # %bb.0:14359; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114360; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14361; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314362; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14363; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14364; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314365; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114366; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114367; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114368; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114369; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314370; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114371; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514372; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514373; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014374; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014375; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014376; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014377; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014378; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014379; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114380; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114381; AVX512F-NEXT:    retq14382;14383; AVX512BW-LABEL: ult_48_v8i64:14384; AVX512BW:       # %bb.0:14385; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14386; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214387; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14388; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14389; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214390; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014391; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014392; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014393; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014394; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114395; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014396; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114397; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114398; AVX512BW-NEXT:    retq14399;14400; AVX512VPOPCNTDQ-LABEL: ult_48_v8i64:14401; AVX512VPOPCNTDQ:       # %bb.0:14402; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014403; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114404; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114405; AVX512VPOPCNTDQ-NEXT:    retq14406;14407; BITALG-LABEL: ult_48_v8i64:14408; BITALG:       # %bb.0:14409; BITALG-NEXT:    vpopcntb %zmm0, %zmm014410; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114411; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014412; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114413; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114414; BITALG-NEXT:    retq14415  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14416  %3 = icmp ult <8 x i64> %2, <i64 48, i64 48, i64 48, i64 48, i64 48, i64 48, i64 48, i64 48>14417  %4 = sext <8 x i1> %3 to <8 x i64>14418  ret <8 x i64> %414419}14420 14421define <8 x i64> @ugt_48_v8i64(<8 x i64> %0) {14422; AVX512F-LABEL: ugt_48_v8i64:14423; AVX512F:       # %bb.0:14424; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114425; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14426; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314427; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14428; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14429; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314430; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114431; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114432; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114433; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114434; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314435; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114436; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514437; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514438; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014439; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014440; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014441; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014442; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014443; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014444; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114445; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114446; AVX512F-NEXT:    retq14447;14448; AVX512BW-LABEL: ugt_48_v8i64:14449; AVX512BW:       # %bb.0:14450; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14451; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214452; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14453; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14454; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214455; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014456; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014457; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014458; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014459; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114460; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014461; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114462; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114463; AVX512BW-NEXT:    retq14464;14465; AVX512VPOPCNTDQ-LABEL: ugt_48_v8i64:14466; AVX512VPOPCNTDQ:       # %bb.0:14467; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014468; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114469; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114470; AVX512VPOPCNTDQ-NEXT:    retq14471;14472; BITALG-LABEL: ugt_48_v8i64:14473; BITALG:       # %bb.0:14474; BITALG-NEXT:    vpopcntb %zmm0, %zmm014475; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114476; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014477; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114478; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114479; BITALG-NEXT:    retq14480  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14481  %3 = icmp ugt <8 x i64> %2, <i64 48, i64 48, i64 48, i64 48, i64 48, i64 48, i64 48, i64 48>14482  %4 = sext <8 x i1> %3 to <8 x i64>14483  ret <8 x i64> %414484}14485 14486define <8 x i64> @ult_49_v8i64(<8 x i64> %0) {14487; AVX512F-LABEL: ult_49_v8i64:14488; AVX512F:       # %bb.0:14489; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114490; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14491; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314492; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14493; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14494; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314495; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114496; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114497; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114498; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114499; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314500; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114501; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514502; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514503; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014504; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014505; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014506; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014507; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014508; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014509; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114510; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114511; AVX512F-NEXT:    retq14512;14513; AVX512BW-LABEL: ult_49_v8i64:14514; AVX512BW:       # %bb.0:14515; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14516; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214517; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14518; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14519; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214520; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014521; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014522; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014523; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014524; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114525; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014526; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114527; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114528; AVX512BW-NEXT:    retq14529;14530; AVX512VPOPCNTDQ-LABEL: ult_49_v8i64:14531; AVX512VPOPCNTDQ:       # %bb.0:14532; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014533; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114534; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114535; AVX512VPOPCNTDQ-NEXT:    retq14536;14537; BITALG-LABEL: ult_49_v8i64:14538; BITALG:       # %bb.0:14539; BITALG-NEXT:    vpopcntb %zmm0, %zmm014540; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114541; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014542; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114543; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114544; BITALG-NEXT:    retq14545  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14546  %3 = icmp ult <8 x i64> %2, <i64 49, i64 49, i64 49, i64 49, i64 49, i64 49, i64 49, i64 49>14547  %4 = sext <8 x i1> %3 to <8 x i64>14548  ret <8 x i64> %414549}14550 14551define <8 x i64> @ugt_49_v8i64(<8 x i64> %0) {14552; AVX512F-LABEL: ugt_49_v8i64:14553; AVX512F:       # %bb.0:14554; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114555; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14556; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314557; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14558; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14559; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314560; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114561; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114562; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114563; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114564; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314565; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114566; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514567; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514568; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014569; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014570; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014571; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014572; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014573; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014574; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114575; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114576; AVX512F-NEXT:    retq14577;14578; AVX512BW-LABEL: ugt_49_v8i64:14579; AVX512BW:       # %bb.0:14580; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14581; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214582; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14583; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14584; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214585; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014586; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014587; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014588; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014589; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114590; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014591; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114592; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114593; AVX512BW-NEXT:    retq14594;14595; AVX512VPOPCNTDQ-LABEL: ugt_49_v8i64:14596; AVX512VPOPCNTDQ:       # %bb.0:14597; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014598; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114599; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114600; AVX512VPOPCNTDQ-NEXT:    retq14601;14602; BITALG-LABEL: ugt_49_v8i64:14603; BITALG:       # %bb.0:14604; BITALG-NEXT:    vpopcntb %zmm0, %zmm014605; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114606; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014607; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114608; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114609; BITALG-NEXT:    retq14610  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14611  %3 = icmp ugt <8 x i64> %2, <i64 49, i64 49, i64 49, i64 49, i64 49, i64 49, i64 49, i64 49>14612  %4 = sext <8 x i1> %3 to <8 x i64>14613  ret <8 x i64> %414614}14615 14616define <8 x i64> @ult_50_v8i64(<8 x i64> %0) {14617; AVX512F-LABEL: ult_50_v8i64:14618; AVX512F:       # %bb.0:14619; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114620; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14621; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314622; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14623; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14624; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314625; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114626; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114627; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114628; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114629; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314630; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114631; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514632; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514633; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014634; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014635; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014636; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014637; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014638; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014639; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114640; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114641; AVX512F-NEXT:    retq14642;14643; AVX512BW-LABEL: ult_50_v8i64:14644; AVX512BW:       # %bb.0:14645; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14646; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214647; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14648; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14649; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214650; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014651; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014652; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014653; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014654; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114655; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014656; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114657; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114658; AVX512BW-NEXT:    retq14659;14660; AVX512VPOPCNTDQ-LABEL: ult_50_v8i64:14661; AVX512VPOPCNTDQ:       # %bb.0:14662; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014663; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114664; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114665; AVX512VPOPCNTDQ-NEXT:    retq14666;14667; BITALG-LABEL: ult_50_v8i64:14668; BITALG:       # %bb.0:14669; BITALG-NEXT:    vpopcntb %zmm0, %zmm014670; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114671; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014672; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114673; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114674; BITALG-NEXT:    retq14675  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14676  %3 = icmp ult <8 x i64> %2, <i64 50, i64 50, i64 50, i64 50, i64 50, i64 50, i64 50, i64 50>14677  %4 = sext <8 x i1> %3 to <8 x i64>14678  ret <8 x i64> %414679}14680 14681define <8 x i64> @ugt_50_v8i64(<8 x i64> %0) {14682; AVX512F-LABEL: ugt_50_v8i64:14683; AVX512F:       # %bb.0:14684; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114685; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14686; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314687; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14688; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14689; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314690; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114691; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114692; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114693; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114694; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314695; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114696; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514697; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514698; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014699; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014700; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014701; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014702; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014703; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014704; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114705; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114706; AVX512F-NEXT:    retq14707;14708; AVX512BW-LABEL: ugt_50_v8i64:14709; AVX512BW:       # %bb.0:14710; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14711; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214712; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14713; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14714; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214715; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014716; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014717; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014718; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014719; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114720; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014721; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114722; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114723; AVX512BW-NEXT:    retq14724;14725; AVX512VPOPCNTDQ-LABEL: ugt_50_v8i64:14726; AVX512VPOPCNTDQ:       # %bb.0:14727; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014728; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114729; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114730; AVX512VPOPCNTDQ-NEXT:    retq14731;14732; BITALG-LABEL: ugt_50_v8i64:14733; BITALG:       # %bb.0:14734; BITALG-NEXT:    vpopcntb %zmm0, %zmm014735; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114736; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014737; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114738; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114739; BITALG-NEXT:    retq14740  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14741  %3 = icmp ugt <8 x i64> %2, <i64 50, i64 50, i64 50, i64 50, i64 50, i64 50, i64 50, i64 50>14742  %4 = sext <8 x i1> %3 to <8 x i64>14743  ret <8 x i64> %414744}14745 14746define <8 x i64> @ult_51_v8i64(<8 x i64> %0) {14747; AVX512F-LABEL: ult_51_v8i64:14748; AVX512F:       # %bb.0:14749; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114750; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14751; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314752; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14753; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14754; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314755; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114756; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114757; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114758; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114759; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314760; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114761; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514762; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514763; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014764; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014765; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014766; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014767; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014768; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014769; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114770; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114771; AVX512F-NEXT:    retq14772;14773; AVX512BW-LABEL: ult_51_v8i64:14774; AVX512BW:       # %bb.0:14775; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14776; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214777; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14778; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14779; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214780; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014781; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014782; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014783; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014784; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114785; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014786; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114787; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114788; AVX512BW-NEXT:    retq14789;14790; AVX512VPOPCNTDQ-LABEL: ult_51_v8i64:14791; AVX512VPOPCNTDQ:       # %bb.0:14792; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014793; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114794; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114795; AVX512VPOPCNTDQ-NEXT:    retq14796;14797; BITALG-LABEL: ult_51_v8i64:14798; BITALG:       # %bb.0:14799; BITALG-NEXT:    vpopcntb %zmm0, %zmm014800; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114801; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014802; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114803; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114804; BITALG-NEXT:    retq14805  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14806  %3 = icmp ult <8 x i64> %2, <i64 51, i64 51, i64 51, i64 51, i64 51, i64 51, i64 51, i64 51>14807  %4 = sext <8 x i1> %3 to <8 x i64>14808  ret <8 x i64> %414809}14810 14811define <8 x i64> @ugt_51_v8i64(<8 x i64> %0) {14812; AVX512F-LABEL: ugt_51_v8i64:14813; AVX512F:       # %bb.0:14814; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114815; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14816; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314817; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14818; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14819; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314820; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114821; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114822; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114823; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114824; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314825; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114826; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514827; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514828; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014829; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014830; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014831; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014832; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014833; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014834; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114835; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114836; AVX512F-NEXT:    retq14837;14838; AVX512BW-LABEL: ugt_51_v8i64:14839; AVX512BW:       # %bb.0:14840; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14841; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214842; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14843; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14844; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214845; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014846; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014847; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014848; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014849; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114850; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014851; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114852; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114853; AVX512BW-NEXT:    retq14854;14855; AVX512VPOPCNTDQ-LABEL: ugt_51_v8i64:14856; AVX512VPOPCNTDQ:       # %bb.0:14857; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014858; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114859; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114860; AVX512VPOPCNTDQ-NEXT:    retq14861;14862; BITALG-LABEL: ugt_51_v8i64:14863; BITALG:       # %bb.0:14864; BITALG-NEXT:    vpopcntb %zmm0, %zmm014865; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114866; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014867; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114868; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114869; BITALG-NEXT:    retq14870  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14871  %3 = icmp ugt <8 x i64> %2, <i64 51, i64 51, i64 51, i64 51, i64 51, i64 51, i64 51, i64 51>14872  %4 = sext <8 x i1> %3 to <8 x i64>14873  ret <8 x i64> %414874}14875 14876define <8 x i64> @ult_52_v8i64(<8 x i64> %0) {14877; AVX512F-LABEL: ult_52_v8i64:14878; AVX512F:       # %bb.0:14879; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114880; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14881; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314882; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14883; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14884; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314885; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114886; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114887; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114888; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114889; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314890; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114891; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514892; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514893; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014894; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014895; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014896; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014897; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014898; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014899; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114900; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114901; AVX512F-NEXT:    retq14902;14903; AVX512BW-LABEL: ult_52_v8i64:14904; AVX512BW:       # %bb.0:14905; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14906; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214907; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14908; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14909; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214910; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014911; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014912; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014913; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014914; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114915; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014916; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114917; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114918; AVX512BW-NEXT:    retq14919;14920; AVX512VPOPCNTDQ-LABEL: ult_52_v8i64:14921; AVX512VPOPCNTDQ:       # %bb.0:14922; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014923; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114924; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114925; AVX512VPOPCNTDQ-NEXT:    retq14926;14927; BITALG-LABEL: ult_52_v8i64:14928; BITALG:       # %bb.0:14929; BITALG-NEXT:    vpopcntb %zmm0, %zmm014930; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114931; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014932; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114933; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114934; BITALG-NEXT:    retq14935  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)14936  %3 = icmp ult <8 x i64> %2, <i64 52, i64 52, i64 52, i64 52, i64 52, i64 52, i64 52, i64 52>14937  %4 = sext <8 x i1> %3 to <8 x i64>14938  ret <8 x i64> %414939}14940 14941define <8 x i64> @ugt_52_v8i64(<8 x i64> %0) {14942; AVX512F-LABEL: ugt_52_v8i64:14943; AVX512F:       # %bb.0:14944; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm114945; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14946; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm314947; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14948; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]14949; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm314950; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm114951; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm114952; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm114953; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm114954; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm314955; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm114956; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm514957; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm514958; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm014959; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm014960; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm014961; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm014962; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm014963; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm014964; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114965; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114966; AVX512F-NEXT:    retq14967;14968; AVX512BW-LABEL: ugt_52_v8i64:14969; AVX512BW:       # %bb.0:14970; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]14971; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm214972; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]14973; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]14974; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm214975; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm014976; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm014977; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm014978; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm014979; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm114980; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014981; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114982; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114983; AVX512BW-NEXT:    retq14984;14985; AVX512VPOPCNTDQ-LABEL: ugt_52_v8i64:14986; AVX512VPOPCNTDQ:       # %bb.0:14987; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm014988; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114989; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114990; AVX512VPOPCNTDQ-NEXT:    retq14991;14992; BITALG-LABEL: ugt_52_v8i64:14993; BITALG:       # %bb.0:14994; BITALG-NEXT:    vpopcntb %zmm0, %zmm014995; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm114996; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm014997; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k114998; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -114999; BITALG-NEXT:    retq15000  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15001  %3 = icmp ugt <8 x i64> %2, <i64 52, i64 52, i64 52, i64 52, i64 52, i64 52, i64 52, i64 52>15002  %4 = sext <8 x i1> %3 to <8 x i64>15003  ret <8 x i64> %415004}15005 15006define <8 x i64> @ult_53_v8i64(<8 x i64> %0) {15007; AVX512F-LABEL: ult_53_v8i64:15008; AVX512F:       # %bb.0:15009; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115010; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15011; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315012; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15013; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15014; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315015; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115016; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115017; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115018; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115019; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315020; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115021; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515022; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515023; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015024; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015025; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015026; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015027; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015028; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015029; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115030; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115031; AVX512F-NEXT:    retq15032;15033; AVX512BW-LABEL: ult_53_v8i64:15034; AVX512BW:       # %bb.0:15035; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15036; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215037; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15038; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15039; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215040; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015041; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015042; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015043; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015044; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115045; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015046; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115047; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115048; AVX512BW-NEXT:    retq15049;15050; AVX512VPOPCNTDQ-LABEL: ult_53_v8i64:15051; AVX512VPOPCNTDQ:       # %bb.0:15052; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015053; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115054; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115055; AVX512VPOPCNTDQ-NEXT:    retq15056;15057; BITALG-LABEL: ult_53_v8i64:15058; BITALG:       # %bb.0:15059; BITALG-NEXT:    vpopcntb %zmm0, %zmm015060; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115061; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015062; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115063; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115064; BITALG-NEXT:    retq15065  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15066  %3 = icmp ult <8 x i64> %2, <i64 53, i64 53, i64 53, i64 53, i64 53, i64 53, i64 53, i64 53>15067  %4 = sext <8 x i1> %3 to <8 x i64>15068  ret <8 x i64> %415069}15070 15071define <8 x i64> @ugt_53_v8i64(<8 x i64> %0) {15072; AVX512F-LABEL: ugt_53_v8i64:15073; AVX512F:       # %bb.0:15074; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115075; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15076; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315077; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15078; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15079; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315080; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115081; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115082; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115083; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115084; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315085; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115086; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515087; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515088; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015089; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015090; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015091; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015092; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015093; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015094; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115095; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115096; AVX512F-NEXT:    retq15097;15098; AVX512BW-LABEL: ugt_53_v8i64:15099; AVX512BW:       # %bb.0:15100; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15101; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215102; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15103; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15104; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215105; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015106; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015107; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015108; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015109; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115110; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015111; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115112; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115113; AVX512BW-NEXT:    retq15114;15115; AVX512VPOPCNTDQ-LABEL: ugt_53_v8i64:15116; AVX512VPOPCNTDQ:       # %bb.0:15117; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015118; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115119; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115120; AVX512VPOPCNTDQ-NEXT:    retq15121;15122; BITALG-LABEL: ugt_53_v8i64:15123; BITALG:       # %bb.0:15124; BITALG-NEXT:    vpopcntb %zmm0, %zmm015125; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115126; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015127; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115128; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115129; BITALG-NEXT:    retq15130  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15131  %3 = icmp ugt <8 x i64> %2, <i64 53, i64 53, i64 53, i64 53, i64 53, i64 53, i64 53, i64 53>15132  %4 = sext <8 x i1> %3 to <8 x i64>15133  ret <8 x i64> %415134}15135 15136define <8 x i64> @ult_54_v8i64(<8 x i64> %0) {15137; AVX512F-LABEL: ult_54_v8i64:15138; AVX512F:       # %bb.0:15139; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115140; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15141; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315142; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15143; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15144; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315145; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115146; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115147; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115148; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115149; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315150; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115151; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515152; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515153; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015154; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015155; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015156; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015157; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015158; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015159; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115160; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115161; AVX512F-NEXT:    retq15162;15163; AVX512BW-LABEL: ult_54_v8i64:15164; AVX512BW:       # %bb.0:15165; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15166; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215167; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15168; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15169; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215170; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015171; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015172; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015173; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015174; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115175; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015176; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115177; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115178; AVX512BW-NEXT:    retq15179;15180; AVX512VPOPCNTDQ-LABEL: ult_54_v8i64:15181; AVX512VPOPCNTDQ:       # %bb.0:15182; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015183; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115184; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115185; AVX512VPOPCNTDQ-NEXT:    retq15186;15187; BITALG-LABEL: ult_54_v8i64:15188; BITALG:       # %bb.0:15189; BITALG-NEXT:    vpopcntb %zmm0, %zmm015190; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115191; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015192; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115193; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115194; BITALG-NEXT:    retq15195  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15196  %3 = icmp ult <8 x i64> %2, <i64 54, i64 54, i64 54, i64 54, i64 54, i64 54, i64 54, i64 54>15197  %4 = sext <8 x i1> %3 to <8 x i64>15198  ret <8 x i64> %415199}15200 15201define <8 x i64> @ugt_54_v8i64(<8 x i64> %0) {15202; AVX512F-LABEL: ugt_54_v8i64:15203; AVX512F:       # %bb.0:15204; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115205; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15206; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315207; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15208; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15209; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315210; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115211; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115212; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115213; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115214; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315215; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115216; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515217; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515218; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015219; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015220; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015221; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015222; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015223; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015224; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115225; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115226; AVX512F-NEXT:    retq15227;15228; AVX512BW-LABEL: ugt_54_v8i64:15229; AVX512BW:       # %bb.0:15230; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15231; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215232; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15233; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15234; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215235; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015236; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015237; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015238; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015239; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115240; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015241; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115242; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115243; AVX512BW-NEXT:    retq15244;15245; AVX512VPOPCNTDQ-LABEL: ugt_54_v8i64:15246; AVX512VPOPCNTDQ:       # %bb.0:15247; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015248; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115249; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115250; AVX512VPOPCNTDQ-NEXT:    retq15251;15252; BITALG-LABEL: ugt_54_v8i64:15253; BITALG:       # %bb.0:15254; BITALG-NEXT:    vpopcntb %zmm0, %zmm015255; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115256; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015257; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115258; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115259; BITALG-NEXT:    retq15260  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15261  %3 = icmp ugt <8 x i64> %2, <i64 54, i64 54, i64 54, i64 54, i64 54, i64 54, i64 54, i64 54>15262  %4 = sext <8 x i1> %3 to <8 x i64>15263  ret <8 x i64> %415264}15265 15266define <8 x i64> @ult_55_v8i64(<8 x i64> %0) {15267; AVX512F-LABEL: ult_55_v8i64:15268; AVX512F:       # %bb.0:15269; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115270; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15271; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315272; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15273; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15274; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315275; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115276; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115277; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115278; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115279; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315280; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115281; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515282; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515283; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015284; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015285; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015286; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015287; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015288; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015289; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115290; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115291; AVX512F-NEXT:    retq15292;15293; AVX512BW-LABEL: ult_55_v8i64:15294; AVX512BW:       # %bb.0:15295; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15296; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215297; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15298; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15299; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215300; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015301; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015302; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015303; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015304; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115305; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015306; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115307; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115308; AVX512BW-NEXT:    retq15309;15310; AVX512VPOPCNTDQ-LABEL: ult_55_v8i64:15311; AVX512VPOPCNTDQ:       # %bb.0:15312; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015313; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115314; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115315; AVX512VPOPCNTDQ-NEXT:    retq15316;15317; BITALG-LABEL: ult_55_v8i64:15318; BITALG:       # %bb.0:15319; BITALG-NEXT:    vpopcntb %zmm0, %zmm015320; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115321; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015322; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115323; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115324; BITALG-NEXT:    retq15325  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15326  %3 = icmp ult <8 x i64> %2, <i64 55, i64 55, i64 55, i64 55, i64 55, i64 55, i64 55, i64 55>15327  %4 = sext <8 x i1> %3 to <8 x i64>15328  ret <8 x i64> %415329}15330 15331define <8 x i64> @ugt_55_v8i64(<8 x i64> %0) {15332; AVX512F-LABEL: ugt_55_v8i64:15333; AVX512F:       # %bb.0:15334; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115335; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15336; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315337; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15338; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15339; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315340; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115341; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115342; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115343; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115344; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315345; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115346; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515347; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515348; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015349; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015350; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015351; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015352; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015353; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015354; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115355; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115356; AVX512F-NEXT:    retq15357;15358; AVX512BW-LABEL: ugt_55_v8i64:15359; AVX512BW:       # %bb.0:15360; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15361; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215362; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15363; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15364; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215365; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015366; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015367; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015368; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015369; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115370; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015371; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115372; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115373; AVX512BW-NEXT:    retq15374;15375; AVX512VPOPCNTDQ-LABEL: ugt_55_v8i64:15376; AVX512VPOPCNTDQ:       # %bb.0:15377; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015378; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115379; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115380; AVX512VPOPCNTDQ-NEXT:    retq15381;15382; BITALG-LABEL: ugt_55_v8i64:15383; BITALG:       # %bb.0:15384; BITALG-NEXT:    vpopcntb %zmm0, %zmm015385; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115386; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015387; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115388; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115389; BITALG-NEXT:    retq15390  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15391  %3 = icmp ugt <8 x i64> %2, <i64 55, i64 55, i64 55, i64 55, i64 55, i64 55, i64 55, i64 55>15392  %4 = sext <8 x i1> %3 to <8 x i64>15393  ret <8 x i64> %415394}15395 15396define <8 x i64> @ult_56_v8i64(<8 x i64> %0) {15397; AVX512F-LABEL: ult_56_v8i64:15398; AVX512F:       # %bb.0:15399; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115400; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15401; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315402; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15403; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15404; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315405; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115406; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115407; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115408; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115409; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315410; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115411; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515412; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515413; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015414; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015415; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015416; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015417; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015418; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015419; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115420; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115421; AVX512F-NEXT:    retq15422;15423; AVX512BW-LABEL: ult_56_v8i64:15424; AVX512BW:       # %bb.0:15425; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15426; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215427; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15428; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15429; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215430; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015431; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015432; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015433; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015434; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115435; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015436; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115437; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115438; AVX512BW-NEXT:    retq15439;15440; AVX512VPOPCNTDQ-LABEL: ult_56_v8i64:15441; AVX512VPOPCNTDQ:       # %bb.0:15442; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015443; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115444; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115445; AVX512VPOPCNTDQ-NEXT:    retq15446;15447; BITALG-LABEL: ult_56_v8i64:15448; BITALG:       # %bb.0:15449; BITALG-NEXT:    vpopcntb %zmm0, %zmm015450; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115451; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015452; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115453; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115454; BITALG-NEXT:    retq15455  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15456  %3 = icmp ult <8 x i64> %2, <i64 56, i64 56, i64 56, i64 56, i64 56, i64 56, i64 56, i64 56>15457  %4 = sext <8 x i1> %3 to <8 x i64>15458  ret <8 x i64> %415459}15460 15461define <8 x i64> @ugt_56_v8i64(<8 x i64> %0) {15462; AVX512F-LABEL: ugt_56_v8i64:15463; AVX512F:       # %bb.0:15464; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115465; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15466; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315467; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15468; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15469; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315470; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115471; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115472; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115473; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115474; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315475; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115476; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515477; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515478; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015479; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015480; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015481; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015482; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015483; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015484; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115485; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115486; AVX512F-NEXT:    retq15487;15488; AVX512BW-LABEL: ugt_56_v8i64:15489; AVX512BW:       # %bb.0:15490; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15491; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215492; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15493; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15494; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215495; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015496; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015497; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015498; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015499; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115500; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015501; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115502; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115503; AVX512BW-NEXT:    retq15504;15505; AVX512VPOPCNTDQ-LABEL: ugt_56_v8i64:15506; AVX512VPOPCNTDQ:       # %bb.0:15507; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015508; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115509; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115510; AVX512VPOPCNTDQ-NEXT:    retq15511;15512; BITALG-LABEL: ugt_56_v8i64:15513; BITALG:       # %bb.0:15514; BITALG-NEXT:    vpopcntb %zmm0, %zmm015515; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115516; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015517; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115518; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115519; BITALG-NEXT:    retq15520  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15521  %3 = icmp ugt <8 x i64> %2, <i64 56, i64 56, i64 56, i64 56, i64 56, i64 56, i64 56, i64 56>15522  %4 = sext <8 x i1> %3 to <8 x i64>15523  ret <8 x i64> %415524}15525 15526define <8 x i64> @ult_57_v8i64(<8 x i64> %0) {15527; AVX512F-LABEL: ult_57_v8i64:15528; AVX512F:       # %bb.0:15529; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115530; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15531; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315532; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15533; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15534; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315535; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115536; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115537; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115538; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115539; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315540; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115541; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515542; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515543; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015544; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015545; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015546; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015547; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015548; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015549; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115550; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115551; AVX512F-NEXT:    retq15552;15553; AVX512BW-LABEL: ult_57_v8i64:15554; AVX512BW:       # %bb.0:15555; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15556; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215557; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15558; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15559; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215560; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015561; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015562; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015563; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015564; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115565; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015566; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115567; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115568; AVX512BW-NEXT:    retq15569;15570; AVX512VPOPCNTDQ-LABEL: ult_57_v8i64:15571; AVX512VPOPCNTDQ:       # %bb.0:15572; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015573; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115574; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115575; AVX512VPOPCNTDQ-NEXT:    retq15576;15577; BITALG-LABEL: ult_57_v8i64:15578; BITALG:       # %bb.0:15579; BITALG-NEXT:    vpopcntb %zmm0, %zmm015580; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115581; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015582; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115583; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115584; BITALG-NEXT:    retq15585  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15586  %3 = icmp ult <8 x i64> %2, <i64 57, i64 57, i64 57, i64 57, i64 57, i64 57, i64 57, i64 57>15587  %4 = sext <8 x i1> %3 to <8 x i64>15588  ret <8 x i64> %415589}15590 15591define <8 x i64> @ugt_57_v8i64(<8 x i64> %0) {15592; AVX512F-LABEL: ugt_57_v8i64:15593; AVX512F:       # %bb.0:15594; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115595; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15596; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315597; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15598; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15599; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315600; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115601; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115602; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115603; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115604; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315605; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115606; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515607; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515608; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015609; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015610; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015611; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015612; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015613; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015614; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115615; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115616; AVX512F-NEXT:    retq15617;15618; AVX512BW-LABEL: ugt_57_v8i64:15619; AVX512BW:       # %bb.0:15620; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15621; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215622; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15623; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15624; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215625; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015626; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015627; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015628; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015629; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115630; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015631; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115632; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115633; AVX512BW-NEXT:    retq15634;15635; AVX512VPOPCNTDQ-LABEL: ugt_57_v8i64:15636; AVX512VPOPCNTDQ:       # %bb.0:15637; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015638; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115639; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115640; AVX512VPOPCNTDQ-NEXT:    retq15641;15642; BITALG-LABEL: ugt_57_v8i64:15643; BITALG:       # %bb.0:15644; BITALG-NEXT:    vpopcntb %zmm0, %zmm015645; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115646; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015647; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115648; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115649; BITALG-NEXT:    retq15650  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15651  %3 = icmp ugt <8 x i64> %2, <i64 57, i64 57, i64 57, i64 57, i64 57, i64 57, i64 57, i64 57>15652  %4 = sext <8 x i1> %3 to <8 x i64>15653  ret <8 x i64> %415654}15655 15656define <8 x i64> @ult_58_v8i64(<8 x i64> %0) {15657; AVX512F-LABEL: ult_58_v8i64:15658; AVX512F:       # %bb.0:15659; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115660; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15661; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315662; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15663; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15664; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315665; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115666; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115667; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115668; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115669; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315670; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115671; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515672; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515673; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015674; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015675; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015676; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015677; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015678; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015679; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115680; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115681; AVX512F-NEXT:    retq15682;15683; AVX512BW-LABEL: ult_58_v8i64:15684; AVX512BW:       # %bb.0:15685; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15686; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215687; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15688; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15689; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215690; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015691; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015692; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015693; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015694; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115695; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015696; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115697; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115698; AVX512BW-NEXT:    retq15699;15700; AVX512VPOPCNTDQ-LABEL: ult_58_v8i64:15701; AVX512VPOPCNTDQ:       # %bb.0:15702; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015703; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115704; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115705; AVX512VPOPCNTDQ-NEXT:    retq15706;15707; BITALG-LABEL: ult_58_v8i64:15708; BITALG:       # %bb.0:15709; BITALG-NEXT:    vpopcntb %zmm0, %zmm015710; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115711; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015712; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115713; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115714; BITALG-NEXT:    retq15715  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15716  %3 = icmp ult <8 x i64> %2, <i64 58, i64 58, i64 58, i64 58, i64 58, i64 58, i64 58, i64 58>15717  %4 = sext <8 x i1> %3 to <8 x i64>15718  ret <8 x i64> %415719}15720 15721define <8 x i64> @ugt_58_v8i64(<8 x i64> %0) {15722; AVX512F-LABEL: ugt_58_v8i64:15723; AVX512F:       # %bb.0:15724; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115725; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15726; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315727; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15728; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15729; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315730; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115731; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115732; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115733; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115734; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315735; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115736; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515737; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515738; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015739; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015740; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015741; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015742; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015743; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015744; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115745; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115746; AVX512F-NEXT:    retq15747;15748; AVX512BW-LABEL: ugt_58_v8i64:15749; AVX512BW:       # %bb.0:15750; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15751; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215752; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15753; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15754; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215755; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015756; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015757; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015758; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015759; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115760; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015761; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115762; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115763; AVX512BW-NEXT:    retq15764;15765; AVX512VPOPCNTDQ-LABEL: ugt_58_v8i64:15766; AVX512VPOPCNTDQ:       # %bb.0:15767; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015768; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115769; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115770; AVX512VPOPCNTDQ-NEXT:    retq15771;15772; BITALG-LABEL: ugt_58_v8i64:15773; BITALG:       # %bb.0:15774; BITALG-NEXT:    vpopcntb %zmm0, %zmm015775; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115776; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015777; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115778; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115779; BITALG-NEXT:    retq15780  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15781  %3 = icmp ugt <8 x i64> %2, <i64 58, i64 58, i64 58, i64 58, i64 58, i64 58, i64 58, i64 58>15782  %4 = sext <8 x i1> %3 to <8 x i64>15783  ret <8 x i64> %415784}15785 15786define <8 x i64> @ult_59_v8i64(<8 x i64> %0) {15787; AVX512F-LABEL: ult_59_v8i64:15788; AVX512F:       # %bb.0:15789; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115790; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15791; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315792; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15793; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15794; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315795; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115796; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115797; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115798; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115799; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315800; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115801; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515802; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515803; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015804; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015805; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015806; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015807; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015808; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015809; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115810; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115811; AVX512F-NEXT:    retq15812;15813; AVX512BW-LABEL: ult_59_v8i64:15814; AVX512BW:       # %bb.0:15815; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15816; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215817; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15818; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15819; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215820; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015821; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015822; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015823; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015824; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115825; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015826; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115827; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115828; AVX512BW-NEXT:    retq15829;15830; AVX512VPOPCNTDQ-LABEL: ult_59_v8i64:15831; AVX512VPOPCNTDQ:       # %bb.0:15832; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015833; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115834; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115835; AVX512VPOPCNTDQ-NEXT:    retq15836;15837; BITALG-LABEL: ult_59_v8i64:15838; BITALG:       # %bb.0:15839; BITALG-NEXT:    vpopcntb %zmm0, %zmm015840; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115841; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015842; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115843; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115844; BITALG-NEXT:    retq15845  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15846  %3 = icmp ult <8 x i64> %2, <i64 59, i64 59, i64 59, i64 59, i64 59, i64 59, i64 59, i64 59>15847  %4 = sext <8 x i1> %3 to <8 x i64>15848  ret <8 x i64> %415849}15850 15851define <8 x i64> @ugt_59_v8i64(<8 x i64> %0) {15852; AVX512F-LABEL: ugt_59_v8i64:15853; AVX512F:       # %bb.0:15854; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115855; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15856; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315857; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15858; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15859; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315860; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115861; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115862; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115863; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115864; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315865; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115866; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515867; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515868; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015869; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015870; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015871; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015872; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015873; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015874; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115875; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115876; AVX512F-NEXT:    retq15877;15878; AVX512BW-LABEL: ugt_59_v8i64:15879; AVX512BW:       # %bb.0:15880; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15881; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215882; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15883; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15884; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215885; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015886; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015887; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015888; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015889; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115890; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015891; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115892; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115893; AVX512BW-NEXT:    retq15894;15895; AVX512VPOPCNTDQ-LABEL: ugt_59_v8i64:15896; AVX512VPOPCNTDQ:       # %bb.0:15897; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015898; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115899; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115900; AVX512VPOPCNTDQ-NEXT:    retq15901;15902; BITALG-LABEL: ugt_59_v8i64:15903; BITALG:       # %bb.0:15904; BITALG-NEXT:    vpopcntb %zmm0, %zmm015905; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115906; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015907; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115908; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115909; BITALG-NEXT:    retq15910  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15911  %3 = icmp ugt <8 x i64> %2, <i64 59, i64 59, i64 59, i64 59, i64 59, i64 59, i64 59, i64 59>15912  %4 = sext <8 x i1> %3 to <8 x i64>15913  ret <8 x i64> %415914}15915 15916define <8 x i64> @ult_60_v8i64(<8 x i64> %0) {15917; AVX512F-LABEL: ult_60_v8i64:15918; AVX512F:       # %bb.0:15919; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115920; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15921; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315922; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15923; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15924; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315925; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115926; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115927; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115928; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115929; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315930; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115931; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515932; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515933; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015934; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm015935; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm015936; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm015937; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm015938; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm015939; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115940; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115941; AVX512F-NEXT:    retq15942;15943; AVX512BW-LABEL: ult_60_v8i64:15944; AVX512BW:       # %bb.0:15945; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15946; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm215947; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15948; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]15949; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm215950; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm015951; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm015952; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm015953; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm015954; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm115955; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015956; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115957; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115958; AVX512BW-NEXT:    retq15959;15960; AVX512VPOPCNTDQ-LABEL: ult_60_v8i64:15961; AVX512VPOPCNTDQ:       # %bb.0:15962; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm015963; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115964; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115965; AVX512VPOPCNTDQ-NEXT:    retq15966;15967; BITALG-LABEL: ult_60_v8i64:15968; BITALG:       # %bb.0:15969; BITALG-NEXT:    vpopcntb %zmm0, %zmm015970; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm115971; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm015972; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k115973; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -115974; BITALG-NEXT:    retq15975  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)15976  %3 = icmp ult <8 x i64> %2, <i64 60, i64 60, i64 60, i64 60, i64 60, i64 60, i64 60, i64 60>15977  %4 = sext <8 x i1> %3 to <8 x i64>15978  ret <8 x i64> %415979}15980 15981define <8 x i64> @ugt_60_v8i64(<8 x i64> %0) {15982; AVX512F-LABEL: ugt_60_v8i64:15983; AVX512F:       # %bb.0:15984; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm115985; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]15986; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm315987; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]15988; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]15989; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm315990; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm115991; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm115992; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm115993; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm115994; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm315995; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm115996; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm515997; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm515998; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm015999; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm016000; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm016001; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm016002; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm016003; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm016004; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116005; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116006; AVX512F-NEXT:    retq16007;16008; AVX512BW-LABEL: ugt_60_v8i64:16009; AVX512BW:       # %bb.0:16010; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]16011; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm216012; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]16013; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]16014; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm216015; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm016016; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm016017; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm016018; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm016019; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm116020; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm016021; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116022; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116023; AVX512BW-NEXT:    retq16024;16025; AVX512VPOPCNTDQ-LABEL: ugt_60_v8i64:16026; AVX512VPOPCNTDQ:       # %bb.0:16027; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm016028; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116029; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116030; AVX512VPOPCNTDQ-NEXT:    retq16031;16032; BITALG-LABEL: ugt_60_v8i64:16033; BITALG:       # %bb.0:16034; BITALG-NEXT:    vpopcntb %zmm0, %zmm016035; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm116036; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm016037; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116038; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116039; BITALG-NEXT:    retq16040  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)16041  %3 = icmp ugt <8 x i64> %2, <i64 60, i64 60, i64 60, i64 60, i64 60, i64 60, i64 60, i64 60>16042  %4 = sext <8 x i1> %3 to <8 x i64>16043  ret <8 x i64> %416044}16045 16046define <8 x i64> @ult_61_v8i64(<8 x i64> %0) {16047; AVX512F-LABEL: ult_61_v8i64:16048; AVX512F:       # %bb.0:16049; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm116050; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]16051; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm316052; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]16053; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]16054; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm316055; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm116056; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm116057; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm116058; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm116059; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm316060; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm116061; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm516062; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm516063; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm016064; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm016065; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm016066; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm016067; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm016068; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm016069; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116070; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116071; AVX512F-NEXT:    retq16072;16073; AVX512BW-LABEL: ult_61_v8i64:16074; AVX512BW:       # %bb.0:16075; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]16076; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm216077; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]16078; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]16079; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm216080; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm016081; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm016082; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm016083; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm016084; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm116085; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm016086; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116087; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116088; AVX512BW-NEXT:    retq16089;16090; AVX512VPOPCNTDQ-LABEL: ult_61_v8i64:16091; AVX512VPOPCNTDQ:       # %bb.0:16092; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm016093; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116094; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116095; AVX512VPOPCNTDQ-NEXT:    retq16096;16097; BITALG-LABEL: ult_61_v8i64:16098; BITALG:       # %bb.0:16099; BITALG-NEXT:    vpopcntb %zmm0, %zmm016100; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm116101; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm016102; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116103; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116104; BITALG-NEXT:    retq16105  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)16106  %3 = icmp ult <8 x i64> %2, <i64 61, i64 61, i64 61, i64 61, i64 61, i64 61, i64 61, i64 61>16107  %4 = sext <8 x i1> %3 to <8 x i64>16108  ret <8 x i64> %416109}16110 16111define <8 x i64> @ugt_61_v8i64(<8 x i64> %0) {16112; AVX512F-LABEL: ugt_61_v8i64:16113; AVX512F:       # %bb.0:16114; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm116115; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]16116; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm316117; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]16118; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]16119; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm316120; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm116121; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm116122; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm116123; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm116124; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm316125; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm116126; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm516127; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm516128; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm016129; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm016130; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm016131; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm016132; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm016133; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm016134; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116135; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116136; AVX512F-NEXT:    retq16137;16138; AVX512BW-LABEL: ugt_61_v8i64:16139; AVX512BW:       # %bb.0:16140; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]16141; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm216142; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]16143; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]16144; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm216145; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm016146; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm016147; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm016148; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm016149; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm116150; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm016151; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116152; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116153; AVX512BW-NEXT:    retq16154;16155; AVX512VPOPCNTDQ-LABEL: ugt_61_v8i64:16156; AVX512VPOPCNTDQ:       # %bb.0:16157; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm016158; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116159; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116160; AVX512VPOPCNTDQ-NEXT:    retq16161;16162; BITALG-LABEL: ugt_61_v8i64:16163; BITALG:       # %bb.0:16164; BITALG-NEXT:    vpopcntb %zmm0, %zmm016165; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm116166; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm016167; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116168; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116169; BITALG-NEXT:    retq16170  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)16171  %3 = icmp ugt <8 x i64> %2, <i64 61, i64 61, i64 61, i64 61, i64 61, i64 61, i64 61, i64 61>16172  %4 = sext <8 x i1> %3 to <8 x i64>16173  ret <8 x i64> %416174}16175 16176define <8 x i64> @ult_62_v8i64(<8 x i64> %0) {16177; AVX512F-LABEL: ult_62_v8i64:16178; AVX512F:       # %bb.0:16179; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm116180; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]16181; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm316182; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]16183; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]16184; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm316185; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm116186; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm116187; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm116188; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm116189; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm316190; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm116191; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm516192; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm516193; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm016194; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm016195; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm016196; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm016197; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm016198; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm016199; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116200; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116201; AVX512F-NEXT:    retq16202;16203; AVX512BW-LABEL: ult_62_v8i64:16204; AVX512BW:       # %bb.0:16205; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]16206; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm216207; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]16208; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]16209; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm216210; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm016211; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm016212; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm016213; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm016214; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm116215; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm016216; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116217; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116218; AVX512BW-NEXT:    retq16219;16220; AVX512VPOPCNTDQ-LABEL: ult_62_v8i64:16221; AVX512VPOPCNTDQ:       # %bb.0:16222; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm016223; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116224; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116225; AVX512VPOPCNTDQ-NEXT:    retq16226;16227; BITALG-LABEL: ult_62_v8i64:16228; BITALG:       # %bb.0:16229; BITALG-NEXT:    vpopcntb %zmm0, %zmm016230; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm116231; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm016232; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116233; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116234; BITALG-NEXT:    retq16235  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)16236  %3 = icmp ult <8 x i64> %2, <i64 62, i64 62, i64 62, i64 62, i64 62, i64 62, i64 62, i64 62>16237  %4 = sext <8 x i1> %3 to <8 x i64>16238  ret <8 x i64> %416239}16240 16241define <8 x i64> @ugt_62_v8i64(<8 x i64> %0) {16242; AVX512F-LABEL: ugt_62_v8i64:16243; AVX512F:       # %bb.0:16244; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm116245; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]16246; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm316247; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]16248; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]16249; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm316250; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm116251; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm116252; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm116253; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm116254; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm316255; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm116256; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm516257; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm516258; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm016259; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm016260; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm016261; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm016262; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm016263; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm016264; AVX512F-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116265; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116266; AVX512F-NEXT:    retq16267;16268; AVX512BW-LABEL: ugt_62_v8i64:16269; AVX512BW:       # %bb.0:16270; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]16271; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm216272; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]16273; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]16274; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm216275; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm016276; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm016277; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm016278; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm016279; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm116280; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm016281; AVX512BW-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116282; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116283; AVX512BW-NEXT:    retq16284;16285; AVX512VPOPCNTDQ-LABEL: ugt_62_v8i64:16286; AVX512VPOPCNTDQ:       # %bb.0:16287; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm016288; AVX512VPOPCNTDQ-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116289; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116290; AVX512VPOPCNTDQ-NEXT:    retq16291;16292; BITALG-LABEL: ugt_62_v8i64:16293; BITALG:       # %bb.0:16294; BITALG-NEXT:    vpopcntb %zmm0, %zmm016295; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm116296; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm016297; BITALG-NEXT:    vpcmpgtq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116298; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116299; BITALG-NEXT:    retq16300  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)16301  %3 = icmp ugt <8 x i64> %2, <i64 62, i64 62, i64 62, i64 62, i64 62, i64 62, i64 62, i64 62>16302  %4 = sext <8 x i1> %3 to <8 x i64>16303  ret <8 x i64> %416304}16305 16306define <8 x i64> @ult_63_v8i64(<8 x i64> %0) {16307; AVX512F-LABEL: ult_63_v8i64:16308; AVX512F:       # %bb.0:16309; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm116310; AVX512F-NEXT:    vpbroadcastb {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]16311; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm316312; AVX512F-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]16313; AVX512F-NEXT:    # ymm4 = mem[0,1,0,1]16314; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm316315; AVX512F-NEXT:    vpsrlw $4, %ymm1, %ymm116316; AVX512F-NEXT:    vpand %ymm2, %ymm1, %ymm116317; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm116318; AVX512F-NEXT:    vpaddb %ymm3, %ymm1, %ymm116319; AVX512F-NEXT:    vpxor %xmm3, %xmm3, %xmm316320; AVX512F-NEXT:    vpsadbw %ymm3, %ymm1, %ymm116321; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm516322; AVX512F-NEXT:    vpshufb %ymm5, %ymm4, %ymm516323; AVX512F-NEXT:    vpsrlw $4, %ymm0, %ymm016324; AVX512F-NEXT:    vpand %ymm2, %ymm0, %ymm016325; AVX512F-NEXT:    vpshufb %ymm0, %ymm4, %ymm016326; AVX512F-NEXT:    vpaddb %ymm5, %ymm0, %ymm016327; AVX512F-NEXT:    vpsadbw %ymm3, %ymm0, %ymm016328; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm016329; AVX512F-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116330; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116331; AVX512F-NEXT:    retq16332;16333; AVX512BW-LABEL: ult_63_v8i64:16334; AVX512BW:       # %bb.0:16335; AVX512BW-NEXT:    vpbroadcastb {{.*#+}} zmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]16336; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm216337; AVX512BW-NEXT:    vbroadcasti32x4 {{.*#+}} zmm3 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4]16338; AVX512BW-NEXT:    # zmm3 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]16339; AVX512BW-NEXT:    vpshufb %zmm2, %zmm3, %zmm216340; AVX512BW-NEXT:    vpsrlw $4, %zmm0, %zmm016341; AVX512BW-NEXT:    vpandq %zmm1, %zmm0, %zmm016342; AVX512BW-NEXT:    vpshufb %zmm0, %zmm3, %zmm016343; AVX512BW-NEXT:    vpaddb %zmm2, %zmm0, %zmm016344; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm116345; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm016346; AVX512BW-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116347; AVX512BW-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116348; AVX512BW-NEXT:    retq16349;16350; AVX512VPOPCNTDQ-LABEL: ult_63_v8i64:16351; AVX512VPOPCNTDQ:       # %bb.0:16352; AVX512VPOPCNTDQ-NEXT:    vpopcntq %zmm0, %zmm016353; AVX512VPOPCNTDQ-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116354; AVX512VPOPCNTDQ-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116355; AVX512VPOPCNTDQ-NEXT:    retq16356;16357; BITALG-LABEL: ult_63_v8i64:16358; BITALG:       # %bb.0:16359; BITALG-NEXT:    vpopcntb %zmm0, %zmm016360; BITALG-NEXT:    vpxor %xmm1, %xmm1, %xmm116361; BITALG-NEXT:    vpsadbw %zmm1, %zmm0, %zmm016362; BITALG-NEXT:    vpcmpltq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %k116363; BITALG-NEXT:    vpternlogq {{.*#+}} zmm0 {%k1} {z} = -116364; BITALG-NEXT:    retq16365  %2 = tail call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %0)16366  %3 = icmp ult <8 x i64> %2, <i64 63, i64 63, i64 63, i64 63, i64 63, i64 63, i64 63, i64 63>16367  %4 = sext <8 x i1> %3 to <8 x i64>16368  ret <8 x i64> %416369}16370 16371declare <64 x i8> @llvm.ctpop.v64i8(<64 x i8>)16372declare <32 x i16> @llvm.ctpop.v32i16(<32 x i16>)16373declare <16 x i32> @llvm.ctpop.v16i32(<16 x i32>)16374declare <8 x i64> @llvm.ctpop.v8i64(<8 x i64>)16375