brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.3 KiB · 7f2cca4 Raw
458 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4define i1 @compare_unsigned_min(i8 %x, i8 %y) {5; CHECK-LABEL: define i1 @compare_unsigned_min(6; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {7; CHECK-NEXT:  [[START:.*:]]8; CHECK-NEXT:    [[TMP2:%.*]] = icmp ult i8 [[X]], [[Y]]9; CHECK-NEXT:    ret i1 [[TMP2]]10;11start:12  %cmp1 = icmp eq i8 %x, 013  %cmp2 = icmp ne i8 %y, 014  %cmp3 = icmp ult i8 %x, %y15  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp316  ret i1 %result17}18 19define i1 @compare_signed_min(i8 %x, i8 %y) {20; CHECK-LABEL: define i1 @compare_signed_min(21; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {22; CHECK-NEXT:  [[START:.*:]]23; CHECK-NEXT:    [[TMP4:%.*]] = icmp slt i8 [[X]], [[Y]]24; CHECK-NEXT:    ret i1 [[TMP4]]25;26start:27  %cmp1 = icmp eq i8 %x, -12828  %cmp2 = icmp ne i8 %y, -12829  %cmp3 = icmp slt i8 %x, %y30  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp331  ret i1 %result32}33 34define i1 @compare_unsigned_max(i8 %x, i8 %y) {35; CHECK-LABEL: define i1 @compare_unsigned_max(36; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {37; CHECK-NEXT:  [[START:.*:]]38; CHECK-NEXT:    [[TMP4:%.*]] = icmp ugt i8 [[X]], [[Y]]39; CHECK-NEXT:    ret i1 [[TMP4]]40;41start:42  %cmp1 = icmp eq i8 %x, 25543  %cmp2 = icmp ne i8 %y, 25544  %cmp3 = icmp ugt i8 %x, %y45  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp346  ret i1 %result47}48 49define i1 @compare_signed_max(i8 %x, i8 %y) {50; CHECK-LABEL: define i1 @compare_signed_max(51; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {52; CHECK-NEXT:  [[START:.*:]]53; CHECK-NEXT:    [[TMP4:%.*]] = icmp sgt i8 [[X]], [[Y]]54; CHECK-NEXT:    ret i1 [[TMP4]]55;56start:57  %cmp1 = icmp eq i8 %x, 12758  %cmp2 = icmp ne i8 %y, 12759  %cmp3 = icmp sgt i8 %x, %y60  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp361  ret i1 %result62}63 64define i1 @relational_cmp_unsigned_min(i8 %x, i8 %y) {65; CHECK-LABEL: define i1 @relational_cmp_unsigned_min(66; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {67; CHECK-NEXT:  [[START:.*:]]68; CHECK-NEXT:    [[TMP4:%.*]] = icmp ult i8 [[X]], [[Y]]69; CHECK-NEXT:    ret i1 [[TMP4]]70;71start:72  %cmp1 = icmp ule i8 %x, 073  %cmp2 = icmp ugt i8 %y, 074  %cmp3 = icmp ult i8 %x, %y75  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp376  ret i1 %result77}78 79define i1 @relational_cmp_signed_min(i8 %x, i8 %y) {80; CHECK-LABEL: define i1 @relational_cmp_signed_min(81; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {82; CHECK-NEXT:  [[START:.*:]]83; CHECK-NEXT:    [[TMP4:%.*]] = icmp slt i8 [[X]], [[Y]]84; CHECK-NEXT:    ret i1 [[TMP4]]85;86start:87  %cmp1 = icmp sle i8 %x, -12888  %cmp2 = icmp sgt i8 %y, -12889  %cmp3 = icmp slt i8 %x, %y90  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp391  ret i1 %result92}93 94define i1 @relational_cmp_unsigned_max(i8 %x, i8 %y) {95; CHECK-LABEL: define i1 @relational_cmp_unsigned_max(96; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {97; CHECK-NEXT:  [[START:.*:]]98; CHECK-NEXT:    [[TMP4:%.*]] = icmp ugt i8 [[X]], [[Y]]99; CHECK-NEXT:    ret i1 [[TMP4]]100;101start:102  %cmp1 = icmp uge i8 %x, 255103  %cmp2 = icmp ult i8 %y, 255104  %cmp3 = icmp ugt i8 %x, %y105  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3106  ret i1 %result107}108 109define i1 @relational_cmp_signed_max(i8 %x, i8 %y) {110; CHECK-LABEL: define i1 @relational_cmp_signed_max(111; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {112; CHECK-NEXT:  [[START:.*:]]113; CHECK-NEXT:    [[TMP4:%.*]] = icmp sgt i8 [[X]], [[Y]]114; CHECK-NEXT:    ret i1 [[TMP4]]115;116start:117  %cmp1 = icmp sge i8 %x, 127118  %cmp2 = icmp slt i8 %y, 127119  %cmp3 = icmp sgt i8 %x, %y120  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3121  ret i1 %result122}123 124declare void @use(i1)125 126define i1 @compare_signed_max_multiuse(i8 %x, i8 %y) {127; CHECK-LABEL: define i1 @compare_signed_max_multiuse(128; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {129; CHECK-NEXT:  [[START:.*:]]130; CHECK-NEXT:    [[TMP4:%.*]] = icmp sgt i8 [[X]], [[Y]]131; CHECK-NEXT:    call void @use(i1 [[TMP4]])132; CHECK-NEXT:    [[RESULT:%.*]] = icmp sgt i8 [[X]], [[Y]]133; CHECK-NEXT:    ret i1 [[RESULT]]134;135start:136  %cmp1 = icmp eq i8 %x, 127137  %cmp2 = icmp ne i8 %y, 127138  %cmp3 = icmp sgt i8 %x, %y139  call void @use(i1 %cmp3)140  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3141  ret i1 %result142}143 144define i1 @compare_signed_min_samesign(i8 %x, i8 %y) {145; CHECK-LABEL: define i1 @compare_signed_min_samesign(146; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {147; CHECK-NEXT:  [[START:.*:]]148; CHECK-NEXT:    [[RESULT:%.*]] = icmp slt i8 [[X]], [[Y]]149; CHECK-NEXT:    ret i1 [[RESULT]]150;151start:152  %cmp1 = icmp eq i8 %x, -128153  %cmp2 = icmp ne i8 %y, -128154  %cmp3 = icmp samesign slt i8 %x, %y155  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3156  ret i1 %result157}158 159define i1 @compare_flipped(i8 %x, i8 %y) {160; CHECK-LABEL: define i1 @compare_flipped(161; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {162; CHECK-NEXT:  [[START:.*:]]163; CHECK-NEXT:    [[RESULT:%.*]] = icmp ult i8 [[X]], [[Y]]164; CHECK-NEXT:    ret i1 [[RESULT]]165;166start:167  %cmp1 = icmp eq i8 %x, 0168  %cmp2 = icmp ne i8 %y, 0169  %cmp3 = icmp ugt i8 %y, %x170  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3171  ret i1 %result172}173 174define i1 @compare_swapped(i8 %x, i8 %y) {175; CHECK-LABEL: define i1 @compare_swapped(176; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {177; CHECK-NEXT:  [[START:.*:]]178; CHECK-NEXT:    [[RESULT:%.*]] = icmp ult i8 [[X]], [[Y]]179; CHECK-NEXT:    ret i1 [[RESULT]]180;181start:182  %cmp1 = icmp ne i8 %x, 0183  %cmp2 = icmp ne i8 %y, 0184  %cmp3 = icmp ult i8 %x, %y185  %result = select i1 %cmp1, i1 %cmp3, i1 %cmp2186  ret i1 %result187}188 189define i1 @compare_swapped_flipped_unsigned_max(i8 %x, i8 %y) {190; CHECK-LABEL: define i1 @compare_swapped_flipped_unsigned_max(191; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {192; CHECK-NEXT:  [[START:.*:]]193; CHECK-NEXT:    [[RESULT:%.*]] = icmp ugt i8 [[X]], [[Y]]194; CHECK-NEXT:    ret i1 [[RESULT]]195;196start:197  %cmp1 = icmp ne i8 %x, 255198  %cmp2 = icmp ne i8 %y, 255199  %cmp3 = icmp ult i8 %y, %x200  %result = select i1 %cmp1, i1 %cmp3, i1 %cmp2201  ret i1 %result202}203 204define i1 @compare_unsigned_min_illegal_type(i9 %x, i9 %y) {205; CHECK-LABEL: define i1 @compare_unsigned_min_illegal_type(206; CHECK-SAME: i9 [[X:%.*]], i9 [[Y:%.*]]) {207; CHECK-NEXT:  [[START:.*:]]208; CHECK-NEXT:    [[TMP2:%.*]] = icmp ult i9 [[X]], [[Y]]209; CHECK-NEXT:    ret i1 [[TMP2]]210;211start:212  %cmp1 = icmp eq i9 %x, 0213  %cmp2 = icmp ne i9 %y, 0214  %cmp3 = icmp ult i9 %x, %y215  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3216  ret i1 %result217}218 219define i1 @compare_true_poison(i8 %x, i8 %y) {220; CHECK-LABEL: define i1 @compare_true_poison(221; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {222; CHECK-NEXT:  [[START:.*:]]223; CHECK-NEXT:    [[CMP3:%.*]] = icmp ult i8 [[X]], [[Y]]224; CHECK-NEXT:    ret i1 [[CMP3]]225;226start:227  %cmp1 = icmp eq i8 %x, 0228  %cmp2 = icmp ne i8 %y, 0229  %cmp3 = icmp ult i8 %x, %y230  %result = select i1 %cmp1, i1 poison, i1 %cmp3231  ret i1 %result232}233 234define <2 x i1> @compare_vector(<2 x i8> %x, <2 x i8> %y) {235; CHECK-LABEL: define <2 x i1> @compare_vector(236; CHECK-SAME: <2 x i8> [[X:%.*]], <2 x i8> [[Y:%.*]]) {237; CHECK-NEXT:    [[TMP1:%.*]] = icmp ult <2 x i8> [[X]], [[Y]]238; CHECK-NEXT:    ret <2 x i1> [[TMP1]]239;240  %cmp1 = icmp eq <2 x i8> %x, zeroinitializer241  %cmp2 = icmp ne <2 x i8> %y, zeroinitializer242  %cmp3 = icmp ult <2 x i8> %x, %y243  %result = select <2 x i1> %cmp1, <2 x i1> %cmp2, <2 x i1> %cmp3244  ret <2 x i1> %result245}246 247define i1 @compare_pointer_negative(ptr %x, ptr %y) {248; CHECK-LABEL: define i1 @compare_pointer_negative(249; CHECK-SAME: ptr [[X:%.*]], ptr [[Y:%.*]]) {250; CHECK-NEXT:  [[START:.*:]]251; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[X]], inttoptr (i8 127 to ptr)252; CHECK-NEXT:    [[TMP3:%.*]] = icmp ne ptr [[Y]], inttoptr (i8 127 to ptr)253; CHECK-NEXT:    [[TMP4:%.*]] = icmp sgt ptr [[X]], [[Y]]254; CHECK-NEXT:    [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]255; CHECK-NEXT:    ret i1 [[RESULT]]256;257start:258  %X = inttoptr i8 127 to ptr259  %cmp1 = icmp eq ptr %x, %X260  %cmp2 = icmp ne ptr %y, %X261  %cmp3 = icmp sgt ptr %x, %y262  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3263  ret i1 %result264}265 266define i1 @compare_float_negative(half %x, half %y) {267; CHECK-LABEL: define i1 @compare_float_negative(268; CHECK-SAME: half [[X:%.*]], half [[Y:%.*]]) {269; CHECK-NEXT:  [[START:.*:]]270; CHECK-NEXT:    [[TMP2:%.*]] = fcmp oeq half [[X]], 0xH0000271; CHECK-NEXT:    [[TMP3:%.*]] = fcmp one half [[Y]], 0xH0000272; CHECK-NEXT:    [[TMP4:%.*]] = fcmp ult half [[X]], [[Y]]273; CHECK-NEXT:    [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]274; CHECK-NEXT:    ret i1 [[RESULT]]275;276start:277  %cmp1 = fcmp oeq half %x, 0.0278  %cmp2 = fcmp one half %y, 0.0279  %cmp3 = fcmp ult half %x, %y280  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3281  ret i1 %result282}283 284define i1 @compare_unsigned_max_swapped_lhs_rhs_negative(i8 %x, i8 %y) {285; CHECK-LABEL: define i1 @compare_unsigned_max_swapped_lhs_rhs_negative(286; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {287; CHECK-NEXT:  [[START:.*:]]288; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i8 [[X]], -1289; CHECK-NEXT:    [[DOTNOT:%.*]] = icmp ne i8 [[Y]], -1290; CHECK-NEXT:    [[RESULT:%.*]] = select i1 [[DOTNOT]], i1 [[TMP2]], i1 false291; CHECK-NEXT:    ret i1 [[RESULT]]292;293start:294  %cmp1 = icmp eq i8 %x, 255295  %cmp2 = icmp ne i8 %y, 255296  %cmp3 = icmp ugt i8 %x, %y297  %result = select i1 %cmp2, i1 %cmp1, i1 %cmp3298  ret i1 %result299}300 301define i1 @compare_signed_min_negative(i8 %x, i8 %y) {302; CHECK-LABEL: define i1 @compare_signed_min_negative(303; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {304; CHECK-NEXT:  [[START:.*:]]305; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i8 [[X]], -127306; CHECK-NEXT:    [[TMP3:%.*]] = icmp ne i8 [[Y]], -127307; CHECK-NEXT:    [[TMP4:%.*]] = icmp slt i8 [[X]], [[Y]]308; CHECK-NEXT:    [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]309; CHECK-NEXT:    ret i1 [[RESULT]]310;311start:312  %cmp1 = icmp eq i8 %x, -127313  %cmp2 = icmp ne i8 %y, -127314  %cmp3 = icmp slt i8 %x, %y315  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3316  ret i1 %result317}318 319define i1 @compare_unsigned_max_negative(i8 %x, i8 %y) {320; CHECK-LABEL: define i1 @compare_unsigned_max_negative(321; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {322; CHECK-NEXT:  [[START:.*:]]323; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i8 [[X]], -1324; CHECK-NEXT:    [[TMP3:%.*]] = icmp ne i8 [[Y]], -1325; CHECK-NEXT:    [[TMP4:%.*]] = icmp ult i8 [[X]], [[Y]]326; CHECK-NEXT:    [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]327; CHECK-NEXT:    ret i1 [[RESULT]]328;329start:330  %cmp1 = icmp eq i8 %x, 255331  %cmp2 = icmp ne i8 %y, 255332  %cmp3 = icmp ult i8 %x, %y333  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3334  ret i1 %result335}336 337define i1 @non_strict_op_negative(i8 %x, i8 %y) {338; CHECK-LABEL: define i1 @non_strict_op_negative(339; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {340; CHECK-NEXT:  [[START:.*:]]341; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i8 [[X]], 0342; CHECK-NEXT:    [[TMP3:%.*]] = icmp ne i8 [[Y]], 0343; CHECK-NEXT:    [[TMP4:%.*]] = icmp ule i8 [[X]], [[Y]]344; CHECK-NEXT:    [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]345; CHECK-NEXT:    ret i1 [[RESULT]]346;347start:348  %cmp1 = icmp eq i8 %x, 0349  %cmp2 = icmp ne i8 %y, 0350  %cmp3 = icmp ule i8 %x, %y351  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3352  ret i1 %result353}354 355define i1 @compare_poison_negative(i8 %x, i8 %y) {356; CHECK-LABEL: define i1 @compare_poison_negative(357; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {358; CHECK-NEXT:  [[START:.*:]]359; CHECK-NEXT:    [[CMP2:%.*]] = icmp ne i8 [[Y]], 0360; CHECK-NEXT:    ret i1 [[CMP2]]361;362start:363  %cmp1 = icmp eq i8 %x, 0364  %cmp2 = icmp ne i8 %y, 0365  %result = select i1 %cmp1, i1 %cmp2, i1 poison366  ret i1 %result367}368 369define i1 @mismatched_cond_lhs_negative(i8 %x, i8 %y, i8 %z) {370; CHECK-LABEL: define i1 @mismatched_cond_lhs_negative(371; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]], i8 [[Z:%.*]]) {372; CHECK-NEXT:  [[START:.*:]]373; CHECK-NEXT:    [[CMP1:%.*]] = icmp eq i8 [[X]], 0374; CHECK-NEXT:    [[CMP2:%.*]] = icmp ne i8 [[Y]], 0375; CHECK-NEXT:    [[CMP3:%.*]] = icmp ult i8 [[Z]], [[Y]]376; CHECK-NEXT:    [[RESULT:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 [[CMP3]]377; CHECK-NEXT:    ret i1 [[RESULT]]378;379start:380  %cmp1 = icmp eq i8 %x, 0381  %cmp2 = icmp ne i8 %y, 0382  %cmp3 = icmp ult i8 %z, %y383  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3384  ret i1 %result385}386 387define i1 @mismatched_trueval_lhs_negative(i8 %x, i8 %y, i8 %z) {388; CHECK-LABEL: define i1 @mismatched_trueval_lhs_negative(389; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]], i8 [[Z:%.*]]) {390; CHECK-NEXT:  [[START:.*:]]391; CHECK-NEXT:    [[CMP1:%.*]] = icmp eq i8 [[X]], 0392; CHECK-NEXT:    [[CMP2:%.*]] = icmp ne i8 [[Y]], 0393; CHECK-NEXT:    [[CMP3:%.*]] = icmp ult i8 [[X]], [[Z]]394; CHECK-NEXT:    [[RESULT:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 [[CMP3]]395; CHECK-NEXT:    ret i1 [[RESULT]]396;397start:398  %cmp1 = icmp eq i8 %x, 0399  %cmp2 = icmp ne i8 %y, 0400  %cmp3 = icmp ult i8 %x, %z401  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3402  ret i1 %result403}404 405define i1 @mismatched_constant_negative(i8 %x, i8 %y) {406; CHECK-LABEL: define i1 @mismatched_constant_negative(407; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {408; CHECK-NEXT:  [[START:.*:]]409; CHECK-NEXT:    [[CMP1:%.*]] = icmp eq i8 [[X]], 0410; CHECK-NEXT:    [[CMP2:%.*]] = icmp ne i8 [[Y]], 2411; CHECK-NEXT:    [[CMP3:%.*]] = icmp ult i8 [[X]], [[Y]]412; CHECK-NEXT:    [[RESULT:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 [[CMP3]]413; CHECK-NEXT:    ret i1 [[RESULT]]414;415start:416  %cmp1 = icmp eq i8 %x, 0417  %cmp2 = icmp ne i8 %y, 2418  %cmp3 = icmp ult i8 %x, %y419  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3420  ret i1 %result421}422 423define i1 @mismatched_constant_two_negative(i8 %x, i8 %y) {424; CHECK-LABEL: define i1 @mismatched_constant_two_negative(425; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {426; CHECK-NEXT:  [[START:.*:]]427; CHECK-NEXT:    [[CMP1:%.*]] = icmp eq i8 [[X]], 2428; CHECK-NEXT:    [[CMP2:%.*]] = icmp ne i8 [[Y]], 0429; CHECK-NEXT:    [[CMP3:%.*]] = icmp ult i8 [[X]], [[Y]]430; CHECK-NEXT:    [[RESULT:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 [[CMP3]]431; CHECK-NEXT:    ret i1 [[RESULT]]432;433start:434  %cmp1 = icmp eq i8 %x, 2435  %cmp2 = icmp ne i8 %y, 0436  %cmp3 = icmp ult i8 %x, %y437  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3438  ret i1 %result439}440 441define i1 @compare_eq_eq_negative(i8 %x, i8 %y) {442; CHECK-LABEL: define i1 @compare_eq_eq_negative(443; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {444; CHECK-NEXT:  [[START:.*:]]445; CHECK-NEXT:    [[CMP1:%.*]] = icmp eq i8 [[X]], 0446; CHECK-NEXT:    [[CMP2:%.*]] = icmp eq i8 [[Y]], 0447; CHECK-NEXT:    [[CMP3:%.*]] = icmp ult i8 [[X]], [[Y]]448; CHECK-NEXT:    [[RESULT:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 [[CMP3]]449; CHECK-NEXT:    ret i1 [[RESULT]]450;451start:452  %cmp1 = icmp eq i8 %x, 0453  %cmp2 = icmp eq i8 %y, 0454  %cmp3 = icmp ult i8 %x, %y455  %result = select i1 %cmp1, i1 %cmp2, i1 %cmp3456  ret i1 %result457}458