brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.8 KiB · e2400fb Raw
716 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=AVX5123; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX14; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX25; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse4.1 | FileCheck %s --check-prefixes=SSE416; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s --check-prefixes=SSE27 8declare void @use.v4.i32(<4 x i32>)9 10define <4 x i32> @eq_or_eq_ult_2(<4 x i32> %x) {11; AVX512-LABEL: eq_or_eq_ult_2:12; AVX512:       # %bb.0:13; AVX512-NEXT:    vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm014; AVX512-NEXT:    vpcmpltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k115; AVX512-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm016; AVX512-NEXT:    vmovdqa32 %xmm0, %xmm0 {%k1} {z}17; AVX512-NEXT:    retq18;19; AVX1-LABEL: eq_or_eq_ult_2:20; AVX1:       # %bb.0:21; AVX1-NEXT:    vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm122; AVX1-NEXT:    vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm023; AVX1-NEXT:    vpor %xmm1, %xmm0, %xmm024; AVX1-NEXT:    retq25;26; AVX2-LABEL: eq_or_eq_ult_2:27; AVX2:       # %bb.0:28; AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [6,6,6,6]29; AVX2-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm130; AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm2 = [5,5,5,5]31; AVX2-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm032; AVX2-NEXT:    vpor %xmm1, %xmm0, %xmm033; AVX2-NEXT:    retq34;35; SSE41-LABEL: eq_or_eq_ult_2:36; SSE41:       # %bb.0:37; SSE41-NEXT:    pmovsxbd {{.*#+}} xmm1 = [6,6,6,6]38; SSE41-NEXT:    pcmpeqd %xmm0, %xmm139; SSE41-NEXT:    pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm040; SSE41-NEXT:    por %xmm1, %xmm041; SSE41-NEXT:    retq42;43; SSE2-LABEL: eq_or_eq_ult_2:44; SSE2:       # %bb.0:45; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [6,6,6,6]46; SSE2-NEXT:    pcmpeqd %xmm0, %xmm147; SSE2-NEXT:    pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm048; SSE2-NEXT:    por %xmm1, %xmm049; SSE2-NEXT:    retq50  %x_adj = add <4 x i32> %x, <i32 -5, i32 -5, i32 -5, i32 -5>51  %cmp = icmp ult <4 x i32> %x_adj, <i32 2, i32 2, i32 2, i32 2>52  %r = sext <4 x i1> %cmp to <4 x i32>53  ret <4 x i32> %r54}55 56define <4 x i32> @eq_or_eq_ult_2_only_transform_sse2(<4 x i32> %x) {57; AVX512-LABEL: eq_or_eq_ult_2_only_transform_sse2:58; AVX512:       # %bb.0:59; AVX512-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm160; AVX512-NEXT:    vpaddd %xmm1, %xmm0, %xmm061; AVX512-NEXT:    vpcmpltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k162; AVX512-NEXT:    vmovdqa32 %xmm1, %xmm0 {%k1} {z}63; AVX512-NEXT:    retq64;65; AVX1-LABEL: eq_or_eq_ult_2_only_transform_sse2:66; AVX1:       # %bb.0:67; AVX1-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm168; AVX1-NEXT:    vpaddd %xmm1, %xmm0, %xmm069; AVX1-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm170; AVX1-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm071; AVX1-NEXT:    retq72;73; AVX2-LABEL: eq_or_eq_ult_2_only_transform_sse2:74; AVX2:       # %bb.0:75; AVX2-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm176; AVX2-NEXT:    vpaddd %xmm1, %xmm0, %xmm077; AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [1,1,1,1]78; AVX2-NEXT:    vpminud %xmm1, %xmm0, %xmm179; AVX2-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm080; AVX2-NEXT:    retq81;82; SSE41-LABEL: eq_or_eq_ult_2_only_transform_sse2:83; SSE41:       # %bb.0:84; SSE41-NEXT:    pcmpeqd %xmm1, %xmm185; SSE41-NEXT:    paddd %xmm1, %xmm086; SSE41-NEXT:    pmovsxbd {{.*#+}} xmm1 = [1,1,1,1]87; SSE41-NEXT:    pminud %xmm0, %xmm188; SSE41-NEXT:    pcmpeqd %xmm1, %xmm089; SSE41-NEXT:    retq90;91; SSE2-LABEL: eq_or_eq_ult_2_only_transform_sse2:92; SSE2:       # %bb.0:93; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [2,2,2,2]94; SSE2-NEXT:    pcmpeqd %xmm0, %xmm195; SSE2-NEXT:    pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm096; SSE2-NEXT:    por %xmm1, %xmm097; SSE2-NEXT:    retq98  %x_adj = add <4 x i32> %x, <i32 -1, i32 -1, i32 -1, i32 -1>99  %cmp = icmp ult <4 x i32> %x_adj, <i32 2, i32 2, i32 2, i32 2>100  %r = sext <4 x i1> %cmp to <4 x i32>101  ret <4 x i32> %r102}103 104define <4 x i32> @eq_or_eq_ult_2_fail_multiuse(<4 x i32> %x) {105; AVX512-LABEL: eq_or_eq_ult_2_fail_multiuse:106; AVX512:       # %bb.0:107; AVX512-NEXT:    subq $24, %rsp108; AVX512-NEXT:    .cfi_def_cfa_offset 32109; AVX512-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1110; AVX512-NEXT:    vpaddd %xmm1, %xmm0, %xmm0111; AVX512-NEXT:    vmovdqa %xmm0, (%rsp) # 16-byte Spill112; AVX512-NEXT:    callq use.v4.i32@PLT113; AVX512-NEXT:    vmovdqa (%rsp), %xmm0 # 16-byte Reload114; AVX512-NEXT:    vpcmpltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k1115; AVX512-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0116; AVX512-NEXT:    vmovdqa32 %xmm0, %xmm0 {%k1} {z}117; AVX512-NEXT:    addq $24, %rsp118; AVX512-NEXT:    .cfi_def_cfa_offset 8119; AVX512-NEXT:    retq120;121; AVX1-LABEL: eq_or_eq_ult_2_fail_multiuse:122; AVX1:       # %bb.0:123; AVX1-NEXT:    subq $24, %rsp124; AVX1-NEXT:    .cfi_def_cfa_offset 32125; AVX1-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1126; AVX1-NEXT:    vpaddd %xmm1, %xmm0, %xmm0127; AVX1-NEXT:    vmovdqa %xmm0, (%rsp) # 16-byte Spill128; AVX1-NEXT:    callq use.v4.i32@PLT129; AVX1-NEXT:    vmovdqa (%rsp), %xmm1 # 16-byte Reload130; AVX1-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm0131; AVX1-NEXT:    vpcmpeqd %xmm0, %xmm1, %xmm0132; AVX1-NEXT:    addq $24, %rsp133; AVX1-NEXT:    .cfi_def_cfa_offset 8134; AVX1-NEXT:    retq135;136; AVX2-LABEL: eq_or_eq_ult_2_fail_multiuse:137; AVX2:       # %bb.0:138; AVX2-NEXT:    subq $24, %rsp139; AVX2-NEXT:    .cfi_def_cfa_offset 32140; AVX2-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1141; AVX2-NEXT:    vpaddd %xmm1, %xmm0, %xmm0142; AVX2-NEXT:    vmovdqa %xmm0, (%rsp) # 16-byte Spill143; AVX2-NEXT:    callq use.v4.i32@PLT144; AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm0 = [1,1,1,1]145; AVX2-NEXT:    vmovdqa (%rsp), %xmm1 # 16-byte Reload146; AVX2-NEXT:    vpminud %xmm0, %xmm1, %xmm0147; AVX2-NEXT:    vpcmpeqd %xmm0, %xmm1, %xmm0148; AVX2-NEXT:    addq $24, %rsp149; AVX2-NEXT:    .cfi_def_cfa_offset 8150; AVX2-NEXT:    retq151;152; SSE41-LABEL: eq_or_eq_ult_2_fail_multiuse:153; SSE41:       # %bb.0:154; SSE41-NEXT:    subq $24, %rsp155; SSE41-NEXT:    .cfi_def_cfa_offset 32156; SSE41-NEXT:    pcmpeqd %xmm1, %xmm1157; SSE41-NEXT:    paddd %xmm1, %xmm0158; SSE41-NEXT:    movdqa %xmm0, (%rsp) # 16-byte Spill159; SSE41-NEXT:    callq use.v4.i32@PLT160; SSE41-NEXT:    pmovsxbd {{.*#+}} xmm0 = [1,1,1,1]161; SSE41-NEXT:    movdqa (%rsp), %xmm1 # 16-byte Reload162; SSE41-NEXT:    pminud %xmm1, %xmm0163; SSE41-NEXT:    pcmpeqd %xmm1, %xmm0164; SSE41-NEXT:    addq $24, %rsp165; SSE41-NEXT:    .cfi_def_cfa_offset 8166; SSE41-NEXT:    retq167;168; SSE2-LABEL: eq_or_eq_ult_2_fail_multiuse:169; SSE2:       # %bb.0:170; SSE2-NEXT:    subq $24, %rsp171; SSE2-NEXT:    .cfi_def_cfa_offset 32172; SSE2-NEXT:    pcmpeqd %xmm1, %xmm1173; SSE2-NEXT:    paddd %xmm0, %xmm1174; SSE2-NEXT:    movdqa %xmm1, (%rsp) # 16-byte Spill175; SSE2-NEXT:    movdqa %xmm1, %xmm0176; SSE2-NEXT:    callq use.v4.i32@PLT177; SSE2-NEXT:    movdqa (%rsp), %xmm1 # 16-byte Reload178; SSE2-NEXT:    pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1179; SSE2-NEXT:    movdqa {{.*#+}} xmm0 = [2147483650,2147483650,2147483650,2147483650]180; SSE2-NEXT:    pcmpgtd %xmm1, %xmm0181; SSE2-NEXT:    addq $24, %rsp182; SSE2-NEXT:    .cfi_def_cfa_offset 8183; SSE2-NEXT:    retq184  %x_adj = add <4 x i32> %x, <i32 -1, i32 -1, i32 -1, i32 -1>185  call void @use.v4.i32(<4 x i32> %x_adj)186  %cmp = icmp ult <4 x i32> %x_adj, <i32 2, i32 2, i32 2, i32 2>187  %r = sext <4 x i1> %cmp to <4 x i32>188  ret <4 x i32> %r189}190 191define <4 x i32> @eq_or_eq_ult_3_fail(<4 x i32> %x) {192; AVX512-LABEL: eq_or_eq_ult_3_fail:193; AVX512:       # %bb.0:194; AVX512-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1195; AVX512-NEXT:    vpaddd %xmm1, %xmm0, %xmm0196; AVX512-NEXT:    vpcmpltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k1197; AVX512-NEXT:    vmovdqa32 %xmm1, %xmm0 {%k1} {z}198; AVX512-NEXT:    retq199;200; AVX1-LABEL: eq_or_eq_ult_3_fail:201; AVX1:       # %bb.0:202; AVX1-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1203; AVX1-NEXT:    vpaddd %xmm1, %xmm0, %xmm0204; AVX1-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1205; AVX1-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0206; AVX1-NEXT:    retq207;208; AVX2-LABEL: eq_or_eq_ult_3_fail:209; AVX2:       # %bb.0:210; AVX2-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1211; AVX2-NEXT:    vpaddd %xmm1, %xmm0, %xmm0212; AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [2,2,2,2]213; AVX2-NEXT:    vpminud %xmm1, %xmm0, %xmm1214; AVX2-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0215; AVX2-NEXT:    retq216;217; SSE41-LABEL: eq_or_eq_ult_3_fail:218; SSE41:       # %bb.0:219; SSE41-NEXT:    pcmpeqd %xmm1, %xmm1220; SSE41-NEXT:    paddd %xmm1, %xmm0221; SSE41-NEXT:    pmovsxbd {{.*#+}} xmm1 = [2,2,2,2]222; SSE41-NEXT:    pminud %xmm0, %xmm1223; SSE41-NEXT:    pcmpeqd %xmm1, %xmm0224; SSE41-NEXT:    retq225;226; SSE2-LABEL: eq_or_eq_ult_3_fail:227; SSE2:       # %bb.0:228; SSE2-NEXT:    pcmpeqd %xmm1, %xmm1229; SSE2-NEXT:    paddd %xmm0, %xmm1230; SSE2-NEXT:    pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1231; SSE2-NEXT:    movdqa {{.*#+}} xmm0 = [2147483651,2147483651,2147483651,2147483651]232; SSE2-NEXT:    pcmpgtd %xmm1, %xmm0233; SSE2-NEXT:    retq234  %x_adj = add <4 x i32> %x, <i32 -1, i32 -1, i32 -1, i32 -1>235  %cmp = icmp ult <4 x i32> %x_adj, <i32 3, i32 3, i32 3, i32 3>236  %r = sext <4 x i1> %cmp to <4 x i32>237  ret <4 x i32> %r238}239 240define <4 x i32> @eq_or_eq_ugt_m3(<4 x i32> %x) {241; AVX512-LABEL: eq_or_eq_ugt_m3:242; AVX512:       # %bb.0:243; AVX512-NEXT:    vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0244; AVX512-NEXT:    vpcmpnleud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k1245; AVX512-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0246; AVX512-NEXT:    vmovdqa32 %xmm0, %xmm0 {%k1} {z}247; AVX512-NEXT:    retq248;249; AVX-LABEL: eq_or_eq_ugt_m3:250; AVX:       # %bb.0:251; AVX-NEXT:    vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1252; AVX-NEXT:    vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0253; AVX-NEXT:    vpor %xmm1, %xmm0, %xmm0254; AVX-NEXT:    retq255;256; SSE41-LABEL: eq_or_eq_ugt_m3:257; SSE41:       # %bb.0:258; SSE41-NEXT:    pmovsxbd {{.*#+}} xmm1 = [9,12,9,9]259; SSE41-NEXT:    pcmpeqd %xmm0, %xmm1260; SSE41-NEXT:    pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0261; SSE41-NEXT:    por %xmm1, %xmm0262; SSE41-NEXT:    retq263;264; SSE2-LABEL: eq_or_eq_ugt_m3:265; SSE2:       # %bb.0:266; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [9,12,9,9]267; SSE2-NEXT:    pcmpeqd %xmm0, %xmm1268; SSE2-NEXT:    pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0269; SSE2-NEXT:    por %xmm1, %xmm0270; SSE2-NEXT:    retq271  %x_adj = add <4 x i32> %x, <i32 -11, i32 -14, i32 -11, i32 -11>272  %cmp = icmp ugt <4 x i32> %x_adj, <i32 -3, i32 -3, i32 -3, i32 -3>273  %r = sext <4 x i1> %cmp to <4 x i32>274  ret <4 x i32> %r275}276 277define <4 x i32> @eq_or_eq_ule_1(<4 x i32> %x) {278; AVX512-LABEL: eq_or_eq_ule_1:279; AVX512:       # %bb.0:280; AVX512-NEXT:    vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0281; AVX512-NEXT:    vpcmpleud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k1282; AVX512-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0283; AVX512-NEXT:    vmovdqa32 %xmm0, %xmm0 {%k1} {z}284; AVX512-NEXT:    retq285;286; AVX-LABEL: eq_or_eq_ule_1:287; AVX:       # %bb.0:288; AVX-NEXT:    vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1289; AVX-NEXT:    vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0290; AVX-NEXT:    vpor %xmm1, %xmm0, %xmm0291; AVX-NEXT:    retq292;293; SSE41-LABEL: eq_or_eq_ule_1:294; SSE41:       # %bb.0:295; SSE41-NEXT:    pmovsxbd {{.*#+}} xmm1 = [0,4294967295,4294967294,4294967293]296; SSE41-NEXT:    pcmpeqd %xmm0, %xmm1297; SSE41-NEXT:    pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0298; SSE41-NEXT:    por %xmm1, %xmm0299; SSE41-NEXT:    retq300;301; SSE2-LABEL: eq_or_eq_ule_1:302; SSE2:       # %bb.0:303; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [0,4294967295,4294967294,4294967293]304; SSE2-NEXT:    pcmpeqd %xmm0, %xmm1305; SSE2-NEXT:    pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0306; SSE2-NEXT:    por %xmm1, %xmm0307; SSE2-NEXT:    retq308  %x_adj = add <4 x i32> %x, <i32 1, i32 2, i32 3, i32 4>309  %cmp = icmp ule <4 x i32> %x_adj, <i32 1, i32 1, i32 1, i32 1>310  %r = sext <4 x i1> %cmp to <4 x i32>311  ret <4 x i32> %r312}313 314define <2 x i64> @eq_or_eq_uge_m2_i64(<2 x i64> %x) {315; AVX512-LABEL: eq_or_eq_uge_m2_i64:316; AVX512:       # %bb.0:317; AVX512-NEXT:    vpaddq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0318; AVX512-NEXT:    vpcmpnltuq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %k1319; AVX512-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0320; AVX512-NEXT:    vmovdqa64 %xmm0, %xmm0 {%k1} {z}321; AVX512-NEXT:    retq322;323; AVX-LABEL: eq_or_eq_uge_m2_i64:324; AVX:       # %bb.0:325; AVX-NEXT:    vpcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1326; AVX-NEXT:    vpcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0327; AVX-NEXT:    vpor %xmm1, %xmm0, %xmm0328; AVX-NEXT:    retq329;330; SSE41-LABEL: eq_or_eq_uge_m2_i64:331; SSE41:       # %bb.0:332; SSE41-NEXT:    pmovsxbq {{.*#+}} xmm1 = [18446744073709551613,18446744073709551612]333; SSE41-NEXT:    pcmpeqq %xmm0, %xmm1334; SSE41-NEXT:    pcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0335; SSE41-NEXT:    por %xmm1, %xmm0336; SSE41-NEXT:    retq337;338; SSE2-LABEL: eq_or_eq_uge_m2_i64:339; SSE2:       # %bb.0:340; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [18446744073709551613,18446744073709551612]341; SSE2-NEXT:    pcmpeqd %xmm0, %xmm1342; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[1,0,3,2]343; SSE2-NEXT:    pand %xmm1, %xmm2344; SSE2-NEXT:    pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0345; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[1,0,3,2]346; SSE2-NEXT:    pand %xmm1, %xmm0347; SSE2-NEXT:    por %xmm2, %xmm0348; SSE2-NEXT:    retq349  %x_adj = add <2 x i64> %x, <i64 1, i64 2>350  %cmp = icmp uge <2 x i64> %x_adj, <i64 -2, i64 -2>351  %r = sext <2 x i1> %cmp to <2 x i64>352  ret <2 x i64> %r353}354 355 356define <2 x i64> @eq_or_eq_uge_m2_i64_m1(<2 x i64> %x) {357; AVX512-LABEL: eq_or_eq_uge_m2_i64_m1:358; AVX512:       # %bb.0:359; AVX512-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1360; AVX512-NEXT:    vpaddq %xmm1, %xmm0, %xmm0361; AVX512-NEXT:    vpcmpnltuq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %k1362; AVX512-NEXT:    vmovdqa64 %xmm1, %xmm0 {%k1} {z}363; AVX512-NEXT:    retq364;365; AVX-LABEL: eq_or_eq_uge_m2_i64_m1:366; AVX:       # %bb.0:367; AVX-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1368; AVX-NEXT:    vpcmpeqq %xmm1, %xmm0, %xmm1369; AVX-NEXT:    vpxor %xmm2, %xmm2, %xmm2370; AVX-NEXT:    vpcmpeqq %xmm2, %xmm0, %xmm0371; AVX-NEXT:    vpor %xmm1, %xmm0, %xmm0372; AVX-NEXT:    retq373;374; SSE41-LABEL: eq_or_eq_uge_m2_i64_m1:375; SSE41:       # %bb.0:376; SSE41-NEXT:    pcmpeqd %xmm1, %xmm1377; SSE41-NEXT:    pcmpeqq %xmm0, %xmm1378; SSE41-NEXT:    pxor %xmm2, %xmm2379; SSE41-NEXT:    pcmpeqq %xmm2, %xmm0380; SSE41-NEXT:    por %xmm1, %xmm0381; SSE41-NEXT:    retq382;383; SSE2-LABEL: eq_or_eq_uge_m2_i64_m1:384; SSE2:       # %bb.0:385; SSE2-NEXT:    pcmpeqd %xmm1, %xmm1386; SSE2-NEXT:    pcmpeqd %xmm0, %xmm1387; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[1,0,3,2]388; SSE2-NEXT:    pand %xmm1, %xmm2389; SSE2-NEXT:    pxor %xmm1, %xmm1390; SSE2-NEXT:    pcmpeqd %xmm1, %xmm0391; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[1,0,3,2]392; SSE2-NEXT:    pand %xmm1, %xmm0393; SSE2-NEXT:    por %xmm2, %xmm0394; SSE2-NEXT:    retq395  %x_adj = add <2 x i64> %x, <i64 -1, i64 -1>396  %cmp = icmp uge <2 x i64> %x_adj, <i64 -2, i64 -2>397  %r = sext <2 x i1> %cmp to <2 x i64>398  ret <2 x i64> %r399}400 401define <4 x i32> @eq_or_eq_uge_2_fail_(<4 x i32> %x) {402; AVX512-LABEL: eq_or_eq_uge_2_fail_:403; AVX512:       # %bb.0:404; AVX512-NEXT:    vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0405; AVX512-NEXT:    vpcmpnltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k1406; AVX512-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0407; AVX512-NEXT:    vmovdqa32 %xmm0, %xmm0 {%k1} {z}408; AVX512-NEXT:    retq409;410; AVX1-LABEL: eq_or_eq_uge_2_fail_:411; AVX1:       # %bb.0:412; AVX1-NEXT:    vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0413; AVX1-NEXT:    vpmaxud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1414; AVX1-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0415; AVX1-NEXT:    retq416;417; AVX2-LABEL: eq_or_eq_uge_2_fail_:418; AVX2:       # %bb.0:419; AVX2-NEXT:    vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0420; AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [2,2,2,2]421; AVX2-NEXT:    vpmaxud %xmm1, %xmm0, %xmm1422; AVX2-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0423; AVX2-NEXT:    retq424;425; SSE41-LABEL: eq_or_eq_uge_2_fail_:426; SSE41:       # %bb.0:427; SSE41-NEXT:    paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0428; SSE41-NEXT:    pmovsxbd {{.*#+}} xmm1 = [2,2,2,2]429; SSE41-NEXT:    pmaxud %xmm0, %xmm1430; SSE41-NEXT:    pcmpeqd %xmm1, %xmm0431; SSE41-NEXT:    retq432;433; SSE2-LABEL: eq_or_eq_uge_2_fail_:434; SSE2:       # %bb.0:435; SSE2-NEXT:    paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0436; SSE2-NEXT:    pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0437; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [2147483650,2147483650,2147483650,2147483650]438; SSE2-NEXT:    pcmpgtd %xmm0, %xmm1439; SSE2-NEXT:    pcmpeqd %xmm0, %xmm0440; SSE2-NEXT:    pxor %xmm1, %xmm0441; SSE2-NEXT:    retq442  %x_adj = add <4 x i32> %x, <i32 1, i32 2, i32 3, i32 4>443  %cmp = icmp uge <4 x i32> %x_adj, <i32 2, i32 2, i32 2, i32 2>444  %r = sext <4 x i1> %cmp to <4 x i32>445  ret <4 x i32> %r446}447 448 449define <8 x i32> @eq_or_eq_ult_2_256(<8 x i32> %x) {450; AVX512-LABEL: eq_or_eq_ult_2_256:451; AVX512:       # %bb.0:452; AVX512-NEXT:    vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0453; AVX512-NEXT:    vpcmpltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1454; AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0455; AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}456; AVX512-NEXT:    retq457;458; AVX1-LABEL: eq_or_eq_ult_2_256:459; AVX1:       # %bb.0:460; AVX1-NEXT:    vbroadcastss {{.*#+}} xmm1 = [4294967291,4294967291,4294967291,4294967291]461; AVX1-NEXT:    vpaddd %xmm1, %xmm0, %xmm2462; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0463; AVX1-NEXT:    vpaddd %xmm1, %xmm0, %xmm0464; AVX1-NEXT:    vbroadcastss {{.*#+}} xmm1 = [1,1,1,1]465; AVX1-NEXT:    vpminud %xmm1, %xmm0, %xmm3466; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm0, %xmm0467; AVX1-NEXT:    vpminud %xmm1, %xmm2, %xmm1468; AVX1-NEXT:    vpcmpeqd %xmm1, %xmm2, %xmm1469; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0470; AVX1-NEXT:    retq471;472; AVX2-LABEL: eq_or_eq_ult_2_256:473; AVX2:       # %bb.0:474; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm1 = [6,6,6,6,6,6,6,6]475; AVX2-NEXT:    vpcmpeqd %ymm1, %ymm0, %ymm1476; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm2 = [5,5,5,5,5,5,5,5]477; AVX2-NEXT:    vpcmpeqd %ymm2, %ymm0, %ymm0478; AVX2-NEXT:    vpor %ymm1, %ymm0, %ymm0479; AVX2-NEXT:    retq480;481; SSE41-LABEL: eq_or_eq_ult_2_256:482; SSE41:       # %bb.0:483; SSE41-NEXT:    pmovsxbd {{.*#+}} xmm2 = [6,6,6,6]484; SSE41-NEXT:    movdqa %xmm0, %xmm3485; SSE41-NEXT:    pcmpeqd %xmm2, %xmm3486; SSE41-NEXT:    pmovsxbd {{.*#+}} xmm4 = [5,5,5,5]487; SSE41-NEXT:    pcmpeqd %xmm4, %xmm0488; SSE41-NEXT:    por %xmm3, %xmm0489; SSE41-NEXT:    pcmpeqd %xmm1, %xmm2490; SSE41-NEXT:    pcmpeqd %xmm4, %xmm1491; SSE41-NEXT:    por %xmm2, %xmm1492; SSE41-NEXT:    retq493;494; SSE2-LABEL: eq_or_eq_ult_2_256:495; SSE2:       # %bb.0:496; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [6,6,6,6]497; SSE2-NEXT:    movdqa %xmm0, %xmm3498; SSE2-NEXT:    pcmpeqd %xmm2, %xmm3499; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [5,5,5,5]500; SSE2-NEXT:    pcmpeqd %xmm4, %xmm0501; SSE2-NEXT:    por %xmm3, %xmm0502; SSE2-NEXT:    pcmpeqd %xmm1, %xmm2503; SSE2-NEXT:    pcmpeqd %xmm4, %xmm1504; SSE2-NEXT:    por %xmm2, %xmm1505; SSE2-NEXT:    retq506  %x_adj = add <8 x i32> %x, <i32 -5, i32 -5, i32 -5, i32 -5, i32 -5, i32 -5, i32 -5, i32 -5>507  %cmp = icmp ult <8 x i32> %x_adj, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2>508  %r = sext <8 x i1> %cmp to <8 x i32>509  ret <8 x i32> %r510}511 512 513define <8 x i32> @eq_or_eq_ult_2_256_m1(<8 x i32> %x) {514; AVX512-LABEL: eq_or_eq_ult_2_256_m1:515; AVX512:       # %bb.0:516; AVX512-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1517; AVX512-NEXT:    vpaddd %ymm1, %ymm0, %ymm0518; AVX512-NEXT:    vpcmpltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1519; AVX512-NEXT:    vmovdqa32 %ymm1, %ymm0 {%k1} {z}520; AVX512-NEXT:    retq521;522; AVX1-LABEL: eq_or_eq_ult_2_256_m1:523; AVX1:       # %bb.0:524; AVX1-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1525; AVX1-NEXT:    vpaddd %xmm1, %xmm0, %xmm2526; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0527; AVX1-NEXT:    vpaddd %xmm1, %xmm0, %xmm0528; AVX1-NEXT:    vbroadcastss {{.*#+}} xmm1 = [1,1,1,1]529; AVX1-NEXT:    vpminud %xmm1, %xmm0, %xmm3530; AVX1-NEXT:    vpcmpeqd %xmm3, %xmm0, %xmm0531; AVX1-NEXT:    vpminud %xmm1, %xmm2, %xmm1532; AVX1-NEXT:    vpcmpeqd %xmm1, %xmm2, %xmm1533; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0534; AVX1-NEXT:    retq535;536; AVX2-LABEL: eq_or_eq_ult_2_256_m1:537; AVX2:       # %bb.0:538; AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1539; AVX2-NEXT:    vpaddd %ymm1, %ymm0, %ymm0540; AVX2-NEXT:    vpbroadcastd {{.*#+}} ymm1 = [1,1,1,1,1,1,1,1]541; AVX2-NEXT:    vpminud %ymm1, %ymm0, %ymm1542; AVX2-NEXT:    vpcmpeqd %ymm1, %ymm0, %ymm0543; AVX2-NEXT:    retq544;545; SSE41-LABEL: eq_or_eq_ult_2_256_m1:546; SSE41:       # %bb.0:547; SSE41-NEXT:    pmovsxbd {{.*#+}} xmm2 = [2,2,2,2]548; SSE41-NEXT:    movdqa %xmm0, %xmm3549; SSE41-NEXT:    pcmpeqd %xmm2, %xmm3550; SSE41-NEXT:    pmovsxbd {{.*#+}} xmm4 = [1,1,1,1]551; SSE41-NEXT:    pcmpeqd %xmm4, %xmm0552; SSE41-NEXT:    por %xmm3, %xmm0553; SSE41-NEXT:    pcmpeqd %xmm1, %xmm2554; SSE41-NEXT:    pcmpeqd %xmm4, %xmm1555; SSE41-NEXT:    por %xmm2, %xmm1556; SSE41-NEXT:    retq557;558; SSE2-LABEL: eq_or_eq_ult_2_256_m1:559; SSE2:       # %bb.0:560; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2,2,2,2]561; SSE2-NEXT:    movdqa %xmm0, %xmm3562; SSE2-NEXT:    pcmpeqd %xmm2, %xmm3563; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [1,1,1,1]564; SSE2-NEXT:    pcmpeqd %xmm4, %xmm0565; SSE2-NEXT:    por %xmm3, %xmm0566; SSE2-NEXT:    pcmpeqd %xmm1, %xmm2567; SSE2-NEXT:    pcmpeqd %xmm4, %xmm1568; SSE2-NEXT:    por %xmm2, %xmm1569; SSE2-NEXT:    retq570  %x_adj = add <8 x i32> %x, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>571  %cmp = icmp ult <8 x i32> %x_adj, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2>572  %r = sext <8 x i1> %cmp to <8 x i32>573  ret <8 x i32> %r574}575 576 577define <32 x i8> @eq_or_eq_ult_2_256_i8_m1(<32 x i8> %x) {578; AVX512-LABEL: eq_or_eq_ult_2_256_i8_m1:579; AVX512:       # %bb.0:580; AVX512-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1581; AVX512-NEXT:    vpaddb %ymm1, %ymm0, %ymm0582; AVX512-NEXT:    vpminub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm1583; AVX512-NEXT:    vpcmpeqb %ymm1, %ymm0, %ymm0584; AVX512-NEXT:    retq585;586; AVX1-LABEL: eq_or_eq_ult_2_256_i8_m1:587; AVX1:       # %bb.0:588; AVX1-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1589; AVX1-NEXT:    vpaddb %xmm1, %xmm0, %xmm2590; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0591; AVX1-NEXT:    vpaddb %xmm1, %xmm0, %xmm0592; AVX1-NEXT:    vbroadcastss {{.*#+}} xmm1 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]593; AVX1-NEXT:    vpminub %xmm1, %xmm0, %xmm3594; AVX1-NEXT:    vpcmpeqb %xmm3, %xmm0, %xmm0595; AVX1-NEXT:    vpminub %xmm1, %xmm2, %xmm1596; AVX1-NEXT:    vpcmpeqb %xmm1, %xmm2, %xmm1597; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0598; AVX1-NEXT:    retq599;600; AVX2-LABEL: eq_or_eq_ult_2_256_i8_m1:601; AVX2:       # %bb.0:602; AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1603; AVX2-NEXT:    vpaddb %ymm1, %ymm0, %ymm0604; AVX2-NEXT:    vpminub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm1605; AVX2-NEXT:    vpcmpeqb %ymm1, %ymm0, %ymm0606; AVX2-NEXT:    retq607;608; SSE41-LABEL: eq_or_eq_ult_2_256_i8_m1:609; SSE41:       # %bb.0:610; SSE41-NEXT:    movdqa {{.*#+}} xmm2 = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]611; SSE41-NEXT:    movdqa %xmm0, %xmm3612; SSE41-NEXT:    pcmpeqb %xmm2, %xmm3613; SSE41-NEXT:    movdqa {{.*#+}} xmm4 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]614; SSE41-NEXT:    pcmpeqb %xmm4, %xmm0615; SSE41-NEXT:    por %xmm3, %xmm0616; SSE41-NEXT:    pcmpeqb %xmm1, %xmm2617; SSE41-NEXT:    pcmpeqb %xmm4, %xmm1618; SSE41-NEXT:    por %xmm2, %xmm1619; SSE41-NEXT:    retq620;621; SSE2-LABEL: eq_or_eq_ult_2_256_i8_m1:622; SSE2:       # %bb.0:623; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]624; SSE2-NEXT:    movdqa %xmm0, %xmm3625; SSE2-NEXT:    pcmpeqb %xmm2, %xmm3626; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]627; SSE2-NEXT:    pcmpeqb %xmm4, %xmm0628; SSE2-NEXT:    por %xmm3, %xmm0629; SSE2-NEXT:    pcmpeqb %xmm1, %xmm2630; SSE2-NEXT:    pcmpeqb %xmm4, %xmm1631; SSE2-NEXT:    por %xmm2, %xmm1632; SSE2-NEXT:    retq633  %x_adj = add <32 x i8> %x, <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>634  %cmp = icmp ult <32 x i8> %x_adj, <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>635  %r = sext <32 x i1> %cmp to <32 x i8>636  ret <32 x i8> %r637}638 639 640define <16 x i8> @eq_or_eq_ult_2_128_i8_m1(<16 x i8> %x) {641; AVX512-LABEL: eq_or_eq_ult_2_128_i8_m1:642; AVX512:       # %bb.0:643; AVX512-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1644; AVX512-NEXT:    vpaddb %xmm1, %xmm0, %xmm0645; AVX512-NEXT:    vpminub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1646; AVX512-NEXT:    vpcmpeqb %xmm1, %xmm0, %xmm0647; AVX512-NEXT:    retq648;649; AVX-LABEL: eq_or_eq_ult_2_128_i8_m1:650; AVX:       # %bb.0:651; AVX-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1652; AVX-NEXT:    vpaddb %xmm1, %xmm0, %xmm0653; AVX-NEXT:    vpminub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1654; AVX-NEXT:    vpcmpeqb %xmm1, %xmm0, %xmm0655; AVX-NEXT:    retq656;657; SSE41-LABEL: eq_or_eq_ult_2_128_i8_m1:658; SSE41:       # %bb.0:659; SSE41-NEXT:    pcmpeqd %xmm1, %xmm1660; SSE41-NEXT:    paddb %xmm1, %xmm0661; SSE41-NEXT:    movdqa {{.*#+}} xmm1 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]662; SSE41-NEXT:    pminub %xmm0, %xmm1663; SSE41-NEXT:    pcmpeqb %xmm1, %xmm0664; SSE41-NEXT:    retq665;666; SSE2-LABEL: eq_or_eq_ult_2_128_i8_m1:667; SSE2:       # %bb.0:668; SSE2-NEXT:    pcmpeqd %xmm1, %xmm1669; SSE2-NEXT:    paddb %xmm1, %xmm0670; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]671; SSE2-NEXT:    pminub %xmm0, %xmm1672; SSE2-NEXT:    pcmpeqb %xmm1, %xmm0673; SSE2-NEXT:    retq674  %x_adj = add <16 x i8> %x, <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>675  %cmp = icmp ult <16 x i8> %x_adj, <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>676  %r = sext <16 x i1> %cmp to <16 x i8>677  ret <16 x i8> %r678}679 680 681define <16 x i8> @eq_or_eq_ult_2_128_i8(<16 x i8> %x) {682; AVX512-LABEL: eq_or_eq_ult_2_128_i8:683; AVX512:       # %bb.0:684; AVX512-NEXT:    vpaddb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0685; AVX512-NEXT:    vpminub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1686; AVX512-NEXT:    vpcmpeqb %xmm1, %xmm0, %xmm0687; AVX512-NEXT:    retq688;689; AVX-LABEL: eq_or_eq_ult_2_128_i8:690; AVX:       # %bb.0:691; AVX-NEXT:    vpcmpeqb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1692; AVX-NEXT:    vpcmpeqb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0693; AVX-NEXT:    vpor %xmm1, %xmm0, %xmm0694; AVX-NEXT:    retq695;696; SSE41-LABEL: eq_or_eq_ult_2_128_i8:697; SSE41:       # %bb.0:698; SSE41-NEXT:    movdqa {{.*#+}} xmm1 = [232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232]699; SSE41-NEXT:    pcmpeqb %xmm0, %xmm1700; SSE41-NEXT:    pcmpeqb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0701; SSE41-NEXT:    por %xmm1, %xmm0702; SSE41-NEXT:    retq703;704; SSE2-LABEL: eq_or_eq_ult_2_128_i8:705; SSE2:       # %bb.0:706; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232]707; SSE2-NEXT:    pcmpeqb %xmm0, %xmm1708; SSE2-NEXT:    pcmpeqb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0709; SSE2-NEXT:    por %xmm1, %xmm0710; SSE2-NEXT:    retq711  %x_adj = add <16 x i8> %x, <i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25>712  %cmp = icmp ult <16 x i8> %x_adj, <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>713  %r = sext <16 x i1> %cmp to <16 x i8>714  ret <16 x i8> %r715}716