brintos

brintos / llvm-project-archived public Read only

0
0
Text · 55.3 KiB · cc55c4a Raw
2162 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4; There are 12 basic patterns (or 6 with DeMorganized equivalent) with5;    2 (commute logic op) *6;    2 (swap compare operands) *7;    2 (signed/unsigned)8; variations for a total of 96 tests.9 10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11;12; (X == MAX) && (X < Y) --> false13;14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15 16define i1 @slt_and_max(i8 %x, i8 %y)  {17; CHECK-LABEL: @slt_and_max(18; CHECK-NEXT:    ret i1 false19;20  %cmp = icmp slt i8 %x, %y21  %cmpeq = icmp eq i8 %x, 12722  %r = and i1 %cmp, %cmpeq23  ret i1 %r24}25 26define i1 @slt_and_max_logical(i8 %x, i8 %y)  {27; CHECK-LABEL: @slt_and_max_logical(28; CHECK-NEXT:    ret i1 false29;30  %cmp = icmp slt i8 %x, %y31  %cmpeq = icmp eq i8 %x, 12732  %r = select i1 %cmp, i1 %cmpeq, i1 false33  ret i1 %r34}35 36define <2 x i1> @slt_and_max_commute(<2 x i8> %x, <2 x i8> %y)  {37; CHECK-LABEL: @slt_and_max_commute(38; CHECK-NEXT:    ret <2 x i1> zeroinitializer39;40  %cmp = icmp slt <2 x i8> %x, %y41  %cmpeq = icmp eq <2 x i8> %x, <i8 127, i8 127>42  %r = and <2 x i1> %cmpeq, %cmp43  ret <2 x i1> %r44}45 46define i1 @slt_swap_and_max(i8 %x, i8 %y)  {47; CHECK-LABEL: @slt_swap_and_max(48; CHECK-NEXT:    ret i1 false49;50  %cmp = icmp sgt i8 %y, %x51  %cmpeq = icmp eq i8 %x, 12752  %r = and i1 %cmp, %cmpeq53  ret i1 %r54}55 56define i1 @slt_swap_and_max_logical(i8 %x, i8 %y)  {57; CHECK-LABEL: @slt_swap_and_max_logical(58; CHECK-NEXT:    ret i1 false59;60  %cmp = icmp sgt i8 %y, %x61  %cmpeq = icmp eq i8 %x, 12762  %r = select i1 %cmp, i1 %cmpeq, i1 false63  ret i1 %r64}65 66define i1 @slt_swap_and_max_commute(i8 %x, i8 %y)  {67; CHECK-LABEL: @slt_swap_and_max_commute(68; CHECK-NEXT:    ret i1 false69;70  %cmp = icmp sgt i8 %y, %x71  %cmpeq = icmp eq i8 %x, 12772  %r = and i1 %cmpeq, %cmp73  ret i1 %r74}75 76define i1 @slt_swap_and_max_commute_logical(i8 %x, i8 %y)  {77; CHECK-LABEL: @slt_swap_and_max_commute_logical(78; CHECK-NEXT:    ret i1 false79;80  %cmp = icmp sgt i8 %y, %x81  %cmpeq = icmp eq i8 %x, 12782  %r = select i1 %cmpeq, i1 %cmp, i1 false83  ret i1 %r84}85 86define i1 @ult_and_max(i8 %x, i8 %y)  {87; CHECK-LABEL: @ult_and_max(88; CHECK-NEXT:    ret i1 false89;90  %cmp = icmp ult i8 %x, %y91  %cmpeq = icmp eq i8 %x, 25592  %r = and i1 %cmp, %cmpeq93  ret i1 %r94}95 96define i1 @ult_and_max_logical(i8 %x, i8 %y)  {97; CHECK-LABEL: @ult_and_max_logical(98; CHECK-NEXT:    ret i1 false99;100  %cmp = icmp ult i8 %x, %y101  %cmpeq = icmp eq i8 %x, 255102  %r = select i1 %cmp, i1 %cmpeq, i1 false103  ret i1 %r104}105 106define i1 @ult_and_max_commute(i8 %x, i8 %y)  {107; CHECK-LABEL: @ult_and_max_commute(108; CHECK-NEXT:    ret i1 false109;110  %cmp = icmp ult i8 %x, %y111  %cmpeq = icmp eq i8 %x, 255112  %r = and i1 %cmpeq, %cmp113  ret i1 %r114}115 116define i1 @ult_and_max_commute_logical(i8 %x, i8 %y)  {117; CHECK-LABEL: @ult_and_max_commute_logical(118; CHECK-NEXT:    ret i1 false119;120  %cmp = icmp ult i8 %x, %y121  %cmpeq = icmp eq i8 %x, 255122  %r = select i1 %cmpeq, i1 %cmp, i1 false123  ret i1 %r124}125 126define i1 @ult_swap_and_max(i8 %x, i8 %y)  {127; CHECK-LABEL: @ult_swap_and_max(128; CHECK-NEXT:    ret i1 false129;130  %cmp = icmp ugt i8 %y, %x131  %cmpeq = icmp eq i8 %x, 255132  %r = and i1 %cmp, %cmpeq133  ret i1 %r134}135 136define i1 @ult_swap_and_max_logical(i8 %x, i8 %y)  {137; CHECK-LABEL: @ult_swap_and_max_logical(138; CHECK-NEXT:    ret i1 false139;140  %cmp = icmp ugt i8 %y, %x141  %cmpeq = icmp eq i8 %x, 255142  %r = select i1 %cmp, i1 %cmpeq, i1 false143  ret i1 %r144}145 146define i1 @ult_swap_and_max_commute(i8 %x, i8 %y)  {147; CHECK-LABEL: @ult_swap_and_max_commute(148; CHECK-NEXT:    ret i1 false149;150  %cmp = icmp ugt i8 %y, %x151  %cmpeq = icmp eq i8 %x, 255152  %r = and i1 %cmpeq, %cmp153  ret i1 %r154}155 156define i1 @ult_swap_and_max_commute_logical(i8 %x, i8 %y)  {157; CHECK-LABEL: @ult_swap_and_max_commute_logical(158; CHECK-NEXT:    ret i1 false159;160  %cmp = icmp ugt i8 %y, %x161  %cmpeq = icmp eq i8 %x, 255162  %r = select i1 %cmpeq, i1 %cmp, i1 false163  ret i1 %r164}165 166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;167;168; (X == MIN) && (X > Y) --> false169;170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;171 172define i1 @sgt_and_min(i9 %x, i9 %y)  {173; CHECK-LABEL: @sgt_and_min(174; CHECK-NEXT:    ret i1 false175;176  %cmp = icmp sgt i9 %x, %y177  %cmpeq = icmp eq i9 %x, 256178  %r = and i1 %cmp, %cmpeq179  ret i1 %r180}181 182define i1 @sgt_and_min_logical(i9 %x, i9 %y)  {183; CHECK-LABEL: @sgt_and_min_logical(184; CHECK-NEXT:    ret i1 false185;186  %cmp = icmp sgt i9 %x, %y187  %cmpeq = icmp eq i9 %x, 256188  %r = select i1 %cmp, i1 %cmpeq, i1 false189  ret i1 %r190}191 192define i1 @sgt_and_min_commute(i8 %x, i8 %y)  {193; CHECK-LABEL: @sgt_and_min_commute(194; CHECK-NEXT:    ret i1 false195;196  %cmp = icmp sgt i8 %x, %y197  %cmpeq = icmp eq i8 %x, 128198  %r = and i1 %cmpeq, %cmp199  ret i1 %r200}201 202define i1 @sgt_and_min_commute_logical(i8 %x, i8 %y)  {203; CHECK-LABEL: @sgt_and_min_commute_logical(204; CHECK-NEXT:    ret i1 false205;206  %cmp = icmp sgt i8 %x, %y207  %cmpeq = icmp eq i8 %x, 128208  %r = select i1 %cmpeq, i1 %cmp, i1 false209  ret i1 %r210}211 212define i1 @sgt_swap_and_min(i8 %x, i8 %y)  {213; CHECK-LABEL: @sgt_swap_and_min(214; CHECK-NEXT:    ret i1 false215;216  %cmp = icmp slt i8 %y, %x217  %cmpeq = icmp eq i8 %x, 128218  %r = and i1 %cmp, %cmpeq219  ret i1 %r220}221 222define i1 @sgt_swap_and_min_logical(i8 %x, i8 %y)  {223; CHECK-LABEL: @sgt_swap_and_min_logical(224; CHECK-NEXT:    ret i1 false225;226  %cmp = icmp slt i8 %y, %x227  %cmpeq = icmp eq i8 %x, 128228  %r = select i1 %cmp, i1 %cmpeq, i1 false229  ret i1 %r230}231 232define i1 @sgt_swap_and_min_commute(i8 %x, i8 %y)  {233; CHECK-LABEL: @sgt_swap_and_min_commute(234; CHECK-NEXT:    ret i1 false235;236  %cmp = icmp slt i8 %y, %x237  %cmpeq = icmp eq i8 %x, 128238  %r = and i1 %cmpeq, %cmp239  ret i1 %r240}241 242define i1 @sgt_swap_and_min_commute_logical(i8 %x, i8 %y)  {243; CHECK-LABEL: @sgt_swap_and_min_commute_logical(244; CHECK-NEXT:    ret i1 false245;246  %cmp = icmp slt i8 %y, %x247  %cmpeq = icmp eq i8 %x, 128248  %r = select i1 %cmpeq, i1 %cmp, i1 false249  ret i1 %r250}251 252define i1 @ugt_and_min(i8 %x, i8 %y)  {253; CHECK-LABEL: @ugt_and_min(254; CHECK-NEXT:    ret i1 false255;256  %cmp = icmp ugt i8 %x, %y257  %cmpeq = icmp eq i8 %x, 0258  %r = and i1 %cmp, %cmpeq259  ret i1 %r260}261 262define i1 @ugt_and_min_logical(i8 %x, i8 %y)  {263; CHECK-LABEL: @ugt_and_min_logical(264; CHECK-NEXT:    ret i1 false265;266  %cmp = icmp ugt i8 %x, %y267  %cmpeq = icmp eq i8 %x, 0268  %r = select i1 %cmp, i1 %cmpeq, i1 false269  ret i1 %r270}271 272define i1 @ugt_and_min_commute(i8 %x, i8 %y)  {273; CHECK-LABEL: @ugt_and_min_commute(274; CHECK-NEXT:    ret i1 false275;276  %cmp = icmp ugt i8 %x, %y277  %cmpeq = icmp eq i8 %x, 0278  %r = and i1 %cmpeq, %cmp279  ret i1 %r280}281 282define i1 @ugt_and_min_commute_logical(i8 %x, i8 %y)  {283; CHECK-LABEL: @ugt_and_min_commute_logical(284; CHECK-NEXT:    ret i1 false285;286  %cmp = icmp ugt i8 %x, %y287  %cmpeq = icmp eq i8 %x, 0288  %r = select i1 %cmpeq, i1 %cmp, i1 false289  ret i1 %r290}291 292define i1 @ugt_swap_and_min(i8 %x, i8 %y)  {293; CHECK-LABEL: @ugt_swap_and_min(294; CHECK-NEXT:    ret i1 false295;296  %cmp = icmp ult i8 %y, %x297  %cmpeq = icmp eq i8 %x, 0298  %r = and i1 %cmp, %cmpeq299  ret i1 %r300}301 302define i1 @ugt_swap_and_min_logical(i8 %x, i8 %y)  {303; CHECK-LABEL: @ugt_swap_and_min_logical(304; CHECK-NEXT:    ret i1 false305;306  %cmp = icmp ult i8 %y, %x307  %cmpeq = icmp eq i8 %x, 0308  %r = select i1 %cmp, i1 %cmpeq, i1 false309  ret i1 %r310}311 312define i1 @ugt_swap_and_min_commute(i8 %x, i8 %y)  {313; CHECK-LABEL: @ugt_swap_and_min_commute(314; CHECK-NEXT:    ret i1 false315;316  %cmp = icmp ult i8 %y, %x317  %cmpeq = icmp eq i8 %x, 0318  %r = and i1 %cmpeq, %cmp319  ret i1 %r320}321 322define i1 @ugt_swap_and_min_commute_logical(i8 %x, i8 %y)  {323; CHECK-LABEL: @ugt_swap_and_min_commute_logical(324; CHECK-NEXT:    ret i1 false325;326  %cmp = icmp ult i8 %y, %x327  %cmpeq = icmp eq i8 %x, 0328  %r = select i1 %cmpeq, i1 %cmp, i1 false329  ret i1 %r330}331 332;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;333;334; (X != MAX) || (X >= Y) --> true335;336;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337 338define i1 @sge_or_not_max(i8 %x, i8 %y)  {339; CHECK-LABEL: @sge_or_not_max(340; CHECK-NEXT:    ret i1 true341;342  %cmp = icmp sge i8 %x, %y343  %cmpeq = icmp ne i8 %x, 127344  %r = or i1 %cmp, %cmpeq345  ret i1 %r346}347 348define i1 @sge_or_not_max_logical(i8 %x, i8 %y)  {349; CHECK-LABEL: @sge_or_not_max_logical(350; CHECK-NEXT:    ret i1 true351;352  %cmp = icmp sge i8 %x, %y353  %cmpeq = icmp ne i8 %x, 127354  %r = select i1 %cmp, i1 true, i1 %cmpeq355  ret i1 %r356}357 358define i1 @sge_or_not_max_commute(i8 %x, i8 %y)  {359; CHECK-LABEL: @sge_or_not_max_commute(360; CHECK-NEXT:    ret i1 true361;362  %cmp = icmp sge i8 %x, %y363  %cmpeq = icmp ne i8 %x, 127364  %r = or i1 %cmpeq, %cmp365  ret i1 %r366}367 368define i1 @sge_or_not_max_commute_logical(i8 %x, i8 %y)  {369; CHECK-LABEL: @sge_or_not_max_commute_logical(370; CHECK-NEXT:    ret i1 true371;372  %cmp = icmp sge i8 %x, %y373  %cmpeq = icmp ne i8 %x, 127374  %r = select i1 %cmpeq, i1 true, i1 %cmp375  ret i1 %r376}377 378define i1 @sge_swap_or_not_max(i8 %x, i8 %y)  {379; CHECK-LABEL: @sge_swap_or_not_max(380; CHECK-NEXT:    ret i1 true381;382  %cmp = icmp sle i8 %y, %x383  %cmpeq = icmp ne i8 %x, 127384  %r = or i1 %cmp, %cmpeq385  ret i1 %r386}387 388define i1 @sge_swap_or_not_max_logical(i8 %x, i8 %y)  {389; CHECK-LABEL: @sge_swap_or_not_max_logical(390; CHECK-NEXT:    ret i1 true391;392  %cmp = icmp sle i8 %y, %x393  %cmpeq = icmp ne i8 %x, 127394  %r = select i1 %cmp, i1 true, i1 %cmpeq395  ret i1 %r396}397 398define i1 @sge_swap_or_not_max_commute(i8 %x, i8 %y)  {399; CHECK-LABEL: @sge_swap_or_not_max_commute(400; CHECK-NEXT:    ret i1 true401;402  %cmp = icmp sle i8 %y, %x403  %cmpeq = icmp ne i8 %x, 127404  %r = or i1 %cmpeq, %cmp405  ret i1 %r406}407 408define i1 @sge_swap_or_not_max_commute_logical(i8 %x, i8 %y)  {409; CHECK-LABEL: @sge_swap_or_not_max_commute_logical(410; CHECK-NEXT:    ret i1 true411;412  %cmp = icmp sle i8 %y, %x413  %cmpeq = icmp ne i8 %x, 127414  %r = select i1 %cmpeq, i1 true, i1 %cmp415  ret i1 %r416}417 418define i1 @uge_or_not_max(i8 %x, i8 %y)  {419; CHECK-LABEL: @uge_or_not_max(420; CHECK-NEXT:    ret i1 true421;422  %cmp = icmp uge i8 %x, %y423  %cmpeq = icmp ne i8 %x, 255424  %r = or i1 %cmp, %cmpeq425  ret i1 %r426}427 428define i1 @uge_or_not_max_logical(i8 %x, i8 %y)  {429; CHECK-LABEL: @uge_or_not_max_logical(430; CHECK-NEXT:    ret i1 true431;432  %cmp = icmp uge i8 %x, %y433  %cmpeq = icmp ne i8 %x, 255434  %r = select i1 %cmp, i1 true, i1 %cmpeq435  ret i1 %r436}437 438define i1 @uge_or_not_max_commute(i8 %x, i8 %y)  {439; CHECK-LABEL: @uge_or_not_max_commute(440; CHECK-NEXT:    ret i1 true441;442  %cmp = icmp uge i8 %x, %y443  %cmpeq = icmp ne i8 %x, 255444  %r = or i1 %cmpeq, %cmp445  ret i1 %r446}447 448define i1 @uge_or_not_max_commute_logical(i8 %x, i8 %y)  {449; CHECK-LABEL: @uge_or_not_max_commute_logical(450; CHECK-NEXT:    ret i1 true451;452  %cmp = icmp uge i8 %x, %y453  %cmpeq = icmp ne i8 %x, 255454  %r = select i1 %cmpeq, i1 true, i1 %cmp455  ret i1 %r456}457 458define i1 @uge_swap_or_not_max(i8 %x, i8 %y)  {459; CHECK-LABEL: @uge_swap_or_not_max(460; CHECK-NEXT:    ret i1 true461;462  %cmp = icmp ule i8 %y, %x463  %cmpeq = icmp ne i8 %x, 255464  %r = or i1 %cmp, %cmpeq465  ret i1 %r466}467 468define i1 @uge_swap_or_not_max_logical(i8 %x, i8 %y)  {469; CHECK-LABEL: @uge_swap_or_not_max_logical(470; CHECK-NEXT:    ret i1 true471;472  %cmp = icmp ule i8 %y, %x473  %cmpeq = icmp ne i8 %x, 255474  %r = select i1 %cmp, i1 true, i1 %cmpeq475  ret i1 %r476}477 478define i1 @uge_swap_or_not_max_commute(i8 %x, i8 %y)  {479; CHECK-LABEL: @uge_swap_or_not_max_commute(480; CHECK-NEXT:    ret i1 true481;482  %cmp = icmp ule i8 %y, %x483  %cmpeq = icmp ne i8 %x, 255484  %r = or i1 %cmpeq, %cmp485  ret i1 %r486}487 488define i1 @uge_swap_or_not_max_commute_logical(i8 %x, i8 %y)  {489; CHECK-LABEL: @uge_swap_or_not_max_commute_logical(490; CHECK-NEXT:    ret i1 true491;492  %cmp = icmp ule i8 %y, %x493  %cmpeq = icmp ne i8 %x, 255494  %r = select i1 %cmpeq, i1 true, i1 %cmp495  ret i1 %r496}497 498;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;499;500; (X != MIN) || (X <= Y) --> true501;502;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;503 504define i1 @sle_or_not_min(i8 %x, i8 %y)  {505; CHECK-LABEL: @sle_or_not_min(506; CHECK-NEXT:    ret i1 true507;508  %cmp = icmp sle i8 %x, %y509  %cmpeq = icmp ne i8 %x, 128510  %r = or i1 %cmp, %cmpeq511  ret i1 %r512}513 514define i1 @sle_or_not_min_logical(i8 %x, i8 %y)  {515; CHECK-LABEL: @sle_or_not_min_logical(516; CHECK-NEXT:    ret i1 true517;518  %cmp = icmp sle i8 %x, %y519  %cmpeq = icmp ne i8 %x, 128520  %r = select i1 %cmp, i1 true, i1 %cmpeq521  ret i1 %r522}523 524define i1 @sle_or_not_min_commute(i8 %x, i8 %y)  {525; CHECK-LABEL: @sle_or_not_min_commute(526; CHECK-NEXT:    ret i1 true527;528  %cmp = icmp sle i8 %x, %y529  %cmpeq = icmp ne i8 %x, 128530  %r = or i1 %cmpeq, %cmp531  ret i1 %r532}533 534define i1 @sle_or_not_min_commute_logical(i8 %x, i8 %y)  {535; CHECK-LABEL: @sle_or_not_min_commute_logical(536; CHECK-NEXT:    ret i1 true537;538  %cmp = icmp sle i8 %x, %y539  %cmpeq = icmp ne i8 %x, 128540  %r = select i1 %cmpeq, i1 true, i1 %cmp541  ret i1 %r542}543 544define i1 @sle_swap_or_not_min(i8 %x, i8 %y)  {545; CHECK-LABEL: @sle_swap_or_not_min(546; CHECK-NEXT:    ret i1 true547;548  %cmp = icmp sge i8 %y, %x549  %cmpeq = icmp ne i8 %x, 128550  %r = or i1 %cmp, %cmpeq551  ret i1 %r552}553 554define i1 @sle_swap_or_not_min_logical(i8 %x, i8 %y)  {555; CHECK-LABEL: @sle_swap_or_not_min_logical(556; CHECK-NEXT:    ret i1 true557;558  %cmp = icmp sge i8 %y, %x559  %cmpeq = icmp ne i8 %x, 128560  %r = select i1 %cmp, i1 true, i1 %cmpeq561  ret i1 %r562}563 564define i1 @sle_swap_or_not_min_commute(i8 %x, i8 %y)  {565; CHECK-LABEL: @sle_swap_or_not_min_commute(566; CHECK-NEXT:    ret i1 true567;568  %cmp = icmp sge i8 %y, %x569  %cmpeq = icmp ne i8 %x, 128570  %r = or i1 %cmpeq, %cmp571  ret i1 %r572}573 574define i1 @sle_swap_or_not_min_commute_logical(i8 %x, i8 %y)  {575; CHECK-LABEL: @sle_swap_or_not_min_commute_logical(576; CHECK-NEXT:    ret i1 true577;578  %cmp = icmp sge i8 %y, %x579  %cmpeq = icmp ne i8 %x, 128580  %r = select i1 %cmpeq, i1 true, i1 %cmp581  ret i1 %r582}583 584define i1 @ule_or_not_min(i427 %x, i427 %y)  {585; CHECK-LABEL: @ule_or_not_min(586; CHECK-NEXT:    ret i1 true587;588  %cmp = icmp ule i427 %x, %y589  %cmpeq = icmp ne i427 %x, 0590  %r = or i1 %cmp, %cmpeq591  ret i1 %r592}593 594define i1 @ule_or_not_min_logical(i427 %x, i427 %y)  {595; CHECK-LABEL: @ule_or_not_min_logical(596; CHECK-NEXT:    ret i1 true597;598  %cmp = icmp ule i427 %x, %y599  %cmpeq = icmp ne i427 %x, 0600  %r = select i1 %cmp, i1 true, i1 %cmpeq601  ret i1 %r602}603 604define i1 @ule_or_not_min_commute(i8 %x, i8 %y)  {605; CHECK-LABEL: @ule_or_not_min_commute(606; CHECK-NEXT:    ret i1 true607;608  %cmp = icmp ule i8 %x, %y609  %cmpeq = icmp ne i8 %x, 0610  %r = or i1 %cmpeq, %cmp611  ret i1 %r612}613 614define i1 @ule_or_not_min_commute_logical(i8 %x, i8 %y)  {615; CHECK-LABEL: @ule_or_not_min_commute_logical(616; CHECK-NEXT:    ret i1 true617;618  %cmp = icmp ule i8 %x, %y619  %cmpeq = icmp ne i8 %x, 0620  %r = select i1 %cmpeq, i1 true, i1 %cmp621  ret i1 %r622}623 624define i1 @ule_swap_or_not_min(i8 %x, i8 %y)  {625; CHECK-LABEL: @ule_swap_or_not_min(626; CHECK-NEXT:    ret i1 true627;628  %cmp = icmp uge i8 %y, %x629  %cmpeq = icmp ne i8 %x, 0630  %r = or i1 %cmp, %cmpeq631  ret i1 %r632}633 634define i1 @ule_swap_or_not_min_logical(i8 %x, i8 %y)  {635; CHECK-LABEL: @ule_swap_or_not_min_logical(636; CHECK-NEXT:    ret i1 true637;638  %cmp = icmp uge i8 %y, %x639  %cmpeq = icmp ne i8 %x, 0640  %r = select i1 %cmp, i1 true, i1 %cmpeq641  ret i1 %r642}643 644define i1 @ule_swap_or_not_min_commute(i8 %x, i8 %y)  {645; CHECK-LABEL: @ule_swap_or_not_min_commute(646; CHECK-NEXT:    ret i1 true647;648  %cmp = icmp uge i8 %y, %x649  %cmpeq = icmp ne i8 %x, 0650  %r = or i1 %cmpeq, %cmp651  ret i1 %r652}653 654define i1 @ule_swap_or_not_min_commute_logical(i8 %x, i8 %y)  {655; CHECK-LABEL: @ule_swap_or_not_min_commute_logical(656; CHECK-NEXT:    ret i1 true657;658  %cmp = icmp uge i8 %y, %x659  %cmpeq = icmp ne i8 %x, 0660  %r = select i1 %cmpeq, i1 true, i1 %cmp661  ret i1 %r662}663 664;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;665;666; (X == MAX) && (X >= Y) --> X == MAX667;668;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;669 670define i1 @sge_and_max(i8 %x, i8 %y)  {671; CHECK-LABEL: @sge_and_max(672; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 127673; CHECK-NEXT:    ret i1 [[CMPEQ]]674;675  %cmp = icmp sge i8 %x, %y676  %cmpeq = icmp eq i8 %x, 127677  %r = and i1 %cmp, %cmpeq678  ret i1 %r679}680 681define i1 @sge_and_max_logical(i8 %x, i8 %y)  {682; CHECK-LABEL: @sge_and_max_logical(683; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 127684; CHECK-NEXT:    ret i1 [[CMPEQ]]685;686  %cmp = icmp sge i8 %x, %y687  %cmpeq = icmp eq i8 %x, 127688  %r = select i1 %cmp, i1 %cmpeq, i1 false689  ret i1 %r690}691 692define i1 @sge_and_max_logical_samesign(i8 %x, i8 %y)  {693; CHECK-LABEL: @sge_and_max_logical_samesign(694; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 127695; CHECK-NEXT:    ret i1 [[CMPEQ]]696;697  %cmp = icmp sge i8 %x, %y698  %cmpeq = icmp samesign eq i8 %x, 127699  %r = select i1 %cmp, i1 %cmpeq, i1 false700  ret i1 %r701}702 703define i1 @sge_and_max_commute(i8 %x, i8 %y)  {704; CHECK-LABEL: @sge_and_max_commute(705; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 127706; CHECK-NEXT:    ret i1 [[CMPEQ]]707;708  %cmp = icmp sge i8 %x, %y709  %cmpeq = icmp eq i8 %x, 127710  %r = and i1 %cmpeq, %cmp711  ret i1 %r712}713 714define i1 @sge_and_max_commute_logical(i8 %x, i8 %y)  {715; CHECK-LABEL: @sge_and_max_commute_logical(716; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 127717; CHECK-NEXT:    ret i1 [[CMPEQ]]718;719  %cmp = icmp sge i8 %x, %y720  %cmpeq = icmp eq i8 %x, 127721  %r = select i1 %cmpeq, i1 %cmp, i1 false722  ret i1 %r723}724 725define i1 @sge_swap_and_max(i8 %x, i8 %y)  {726; CHECK-LABEL: @sge_swap_and_max(727; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 127728; CHECK-NEXT:    ret i1 [[CMPEQ]]729;730  %cmp = icmp sle i8 %y, %x731  %cmpeq = icmp eq i8 %x, 127732  %r = and i1 %cmp, %cmpeq733  ret i1 %r734}735 736define i1 @sge_swap_and_max_logical(i8 %x, i8 %y)  {737; CHECK-LABEL: @sge_swap_and_max_logical(738; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 127739; CHECK-NEXT:    ret i1 [[CMPEQ]]740;741  %cmp = icmp sle i8 %y, %x742  %cmpeq = icmp eq i8 %x, 127743  %r = select i1 %cmp, i1 %cmpeq, i1 false744  ret i1 %r745}746 747define i1 @sge_swap_and_max_commute(i8 %x, i8 %y)  {748; CHECK-LABEL: @sge_swap_and_max_commute(749; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 127750; CHECK-NEXT:    ret i1 [[CMPEQ]]751;752  %cmp = icmp sle i8 %y, %x753  %cmpeq = icmp eq i8 %x, 127754  %r = and i1 %cmpeq, %cmp755  ret i1 %r756}757 758define i1 @sge_swap_and_max_commute_logical(i8 %x, i8 %y)  {759; CHECK-LABEL: @sge_swap_and_max_commute_logical(760; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 127761; CHECK-NEXT:    ret i1 [[CMPEQ]]762;763  %cmp = icmp sle i8 %y, %x764  %cmpeq = icmp eq i8 %x, 127765  %r = select i1 %cmpeq, i1 %cmp, i1 false766  ret i1 %r767}768 769define i1 @uge_and_max(i8 %x, i8 %y)  {770; CHECK-LABEL: @uge_and_max(771; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -1772; CHECK-NEXT:    ret i1 [[CMPEQ]]773;774  %cmp = icmp uge i8 %x, %y775  %cmpeq = icmp eq i8 %x, 255776  %r = and i1 %cmp, %cmpeq777  ret i1 %r778}779 780define i1 @uge_and_max_logical(i8 %x, i8 %y)  {781; CHECK-LABEL: @uge_and_max_logical(782; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -1783; CHECK-NEXT:    ret i1 [[CMPEQ]]784;785  %cmp = icmp uge i8 %x, %y786  %cmpeq = icmp eq i8 %x, 255787  %r = select i1 %cmp, i1 %cmpeq, i1 false788  ret i1 %r789}790 791define i1 @uge_and_max_commute(i8 %x, i8 %y)  {792; CHECK-LABEL: @uge_and_max_commute(793; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -1794; CHECK-NEXT:    ret i1 [[CMPEQ]]795;796  %cmp = icmp uge i8 %x, %y797  %cmpeq = icmp eq i8 %x, 255798  %r = and i1 %cmpeq, %cmp799  ret i1 %r800}801 802define i1 @uge_and_max_commute_logical(i8 %x, i8 %y)  {803; CHECK-LABEL: @uge_and_max_commute_logical(804; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -1805; CHECK-NEXT:    ret i1 [[CMPEQ]]806;807  %cmp = icmp uge i8 %x, %y808  %cmpeq = icmp eq i8 %x, 255809  %r = select i1 %cmpeq, i1 %cmp, i1 false810  ret i1 %r811}812 813define i1 @uge_swap_and_max(i8 %x, i8 %y)  {814; CHECK-LABEL: @uge_swap_and_max(815; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -1816; CHECK-NEXT:    ret i1 [[CMPEQ]]817;818  %cmp = icmp ule i8 %y, %x819  %cmpeq = icmp eq i8 %x, 255820  %r = and i1 %cmp, %cmpeq821  ret i1 %r822}823 824define i1 @uge_swap_and_max_logical(i8 %x, i8 %y)  {825; CHECK-LABEL: @uge_swap_and_max_logical(826; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -1827; CHECK-NEXT:    ret i1 [[CMPEQ]]828;829  %cmp = icmp ule i8 %y, %x830  %cmpeq = icmp eq i8 %x, 255831  %r = select i1 %cmp, i1 %cmpeq, i1 false832  ret i1 %r833}834 835define i1 @uge_swap_and_max_commute(i8 %x, i8 %y)  {836; CHECK-LABEL: @uge_swap_and_max_commute(837; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -1838; CHECK-NEXT:    ret i1 [[CMPEQ]]839;840  %cmp = icmp ule i8 %y, %x841  %cmpeq = icmp eq i8 %x, 255842  %r = and i1 %cmpeq, %cmp843  ret i1 %r844}845 846define i1 @uge_swap_and_max_commute_logical(i8 %x, i8 %y)  {847; CHECK-LABEL: @uge_swap_and_max_commute_logical(848; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -1849; CHECK-NEXT:    ret i1 [[CMPEQ]]850;851  %cmp = icmp ule i8 %y, %x852  %cmpeq = icmp eq i8 %x, 255853  %r = select i1 %cmpeq, i1 %cmp, i1 false854  ret i1 %r855}856 857;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;858;859; (X == MIN) && (X <= Y) --> X == MIN860;861;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;862 863define i1 @sle_and_min(i8 %x, i8 %y)  {864; CHECK-LABEL: @sle_and_min(865; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -128866; CHECK-NEXT:    ret i1 [[CMPEQ]]867;868  %cmp = icmp sle i8 %x, %y869  %cmpeq = icmp eq i8 %x, 128870  %r = and i1 %cmp, %cmpeq871  ret i1 %r872}873 874define i1 @sle_and_min_logical(i8 %x, i8 %y)  {875; CHECK-LABEL: @sle_and_min_logical(876; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -128877; CHECK-NEXT:    ret i1 [[CMPEQ]]878;879  %cmp = icmp sle i8 %x, %y880  %cmpeq = icmp eq i8 %x, 128881  %r = select i1 %cmp, i1 %cmpeq, i1 false882  ret i1 %r883}884 885define i1 @sle_and_min_commute(i8 %x, i8 %y)  {886; CHECK-LABEL: @sle_and_min_commute(887; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -128888; CHECK-NEXT:    ret i1 [[CMPEQ]]889;890  %cmp = icmp sle i8 %x, %y891  %cmpeq = icmp eq i8 %x, 128892  %r = and i1 %cmpeq, %cmp893  ret i1 %r894}895 896define i1 @sle_and_min_commute_logical(i8 %x, i8 %y)  {897; CHECK-LABEL: @sle_and_min_commute_logical(898; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -128899; CHECK-NEXT:    ret i1 [[CMPEQ]]900;901  %cmp = icmp sle i8 %x, %y902  %cmpeq = icmp eq i8 %x, 128903  %r = select i1 %cmpeq, i1 %cmp, i1 false904  ret i1 %r905}906 907define i1 @sle_swap_and_min(i8 %x, i8 %y)  {908; CHECK-LABEL: @sle_swap_and_min(909; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -128910; CHECK-NEXT:    ret i1 [[CMPEQ]]911;912  %cmp = icmp sge i8 %y, %x913  %cmpeq = icmp eq i8 %x, 128914  %r = and i1 %cmp, %cmpeq915  ret i1 %r916}917 918define i1 @sle_swap_and_min_logical(i8 %x, i8 %y)  {919; CHECK-LABEL: @sle_swap_and_min_logical(920; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -128921; CHECK-NEXT:    ret i1 [[CMPEQ]]922;923  %cmp = icmp sge i8 %y, %x924  %cmpeq = icmp eq i8 %x, 128925  %r = select i1 %cmp, i1 %cmpeq, i1 false926  ret i1 %r927}928 929define i1 @sle_swap_and_min_commute(i8 %x, i8 %y)  {930; CHECK-LABEL: @sle_swap_and_min_commute(931; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -128932; CHECK-NEXT:    ret i1 [[CMPEQ]]933;934  %cmp = icmp sge i8 %y, %x935  %cmpeq = icmp eq i8 %x, 128936  %r = and i1 %cmpeq, %cmp937  ret i1 %r938}939 940define i1 @sle_swap_and_min_commute_logical(i8 %x, i8 %y)  {941; CHECK-LABEL: @sle_swap_and_min_commute_logical(942; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], -128943; CHECK-NEXT:    ret i1 [[CMPEQ]]944;945  %cmp = icmp sge i8 %y, %x946  %cmpeq = icmp eq i8 %x, 128947  %r = select i1 %cmpeq, i1 %cmp, i1 false948  ret i1 %r949}950 951define i1 @ule_and_min(i8 %x, i8 %y)  {952; CHECK-LABEL: @ule_and_min(953; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 0954; CHECK-NEXT:    ret i1 [[CMPEQ]]955;956  %cmp = icmp ule i8 %x, %y957  %cmpeq = icmp eq i8 %x, 0958  %r = and i1 %cmp, %cmpeq959  ret i1 %r960}961 962define i1 @ule_and_min_logical(i8 %x, i8 %y)  {963; CHECK-LABEL: @ule_and_min_logical(964; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 0965; CHECK-NEXT:    ret i1 [[CMPEQ]]966;967  %cmp = icmp ule i8 %x, %y968  %cmpeq = icmp eq i8 %x, 0969  %r = select i1 %cmp, i1 %cmpeq, i1 false970  ret i1 %r971}972 973define i1 @ule_and_min_commute(i8 %x, i8 %y)  {974; CHECK-LABEL: @ule_and_min_commute(975; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 0976; CHECK-NEXT:    ret i1 [[CMPEQ]]977;978  %cmp = icmp ule i8 %x, %y979  %cmpeq = icmp eq i8 %x, 0980  %r = and i1 %cmpeq, %cmp981  ret i1 %r982}983 984define i1 @ule_and_min_commute_logical(i8 %x, i8 %y)  {985; CHECK-LABEL: @ule_and_min_commute_logical(986; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 0987; CHECK-NEXT:    ret i1 [[CMPEQ]]988;989  %cmp = icmp ule i8 %x, %y990  %cmpeq = icmp eq i8 %x, 0991  %r = select i1 %cmpeq, i1 %cmp, i1 false992  ret i1 %r993}994 995define i1 @ule_swap_and_min(i8 %x, i8 %y)  {996; CHECK-LABEL: @ule_swap_and_min(997; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 0998; CHECK-NEXT:    ret i1 [[CMPEQ]]999;1000  %cmp = icmp uge i8 %y, %x1001  %cmpeq = icmp eq i8 %x, 01002  %r = and i1 %cmp, %cmpeq1003  ret i1 %r1004}1005 1006define i1 @ule_swap_and_min_logical(i8 %x, i8 %y)  {1007; CHECK-LABEL: @ule_swap_and_min_logical(1008; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 01009; CHECK-NEXT:    ret i1 [[CMPEQ]]1010;1011  %cmp = icmp uge i8 %y, %x1012  %cmpeq = icmp eq i8 %x, 01013  %r = select i1 %cmp, i1 %cmpeq, i1 false1014  ret i1 %r1015}1016 1017define i1 @ule_swap_and_min_commute(i8 %x, i8 %y)  {1018; CHECK-LABEL: @ule_swap_and_min_commute(1019; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 01020; CHECK-NEXT:    ret i1 [[CMPEQ]]1021;1022  %cmp = icmp uge i8 %y, %x1023  %cmpeq = icmp eq i8 %x, 01024  %r = and i1 %cmpeq, %cmp1025  ret i1 %r1026}1027 1028define i1 @ule_swap_and_min_commute_logical(i8 %x, i8 %y)  {1029; CHECK-LABEL: @ule_swap_and_min_commute_logical(1030; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 01031; CHECK-NEXT:    ret i1 [[CMPEQ]]1032;1033  %cmp = icmp uge i8 %y, %x1034  %cmpeq = icmp eq i8 %x, 01035  %r = select i1 %cmpeq, i1 %cmp, i1 false1036  ret i1 %r1037}1038 1039;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1040;1041; (X == MAX) || (X >= Y) --> X >= Y1042;1043;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1044 1045define i1 @sge_or_max(i8 %x, i8 %y)  {1046; CHECK-LABEL: @sge_or_max(1047; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[X:%.*]], [[Y:%.*]]1048; CHECK-NEXT:    ret i1 [[CMP]]1049;1050  %cmp = icmp sge i8 %x, %y1051  %cmpeq = icmp eq i8 %x, 1271052  %r = or i1 %cmp, %cmpeq1053  ret i1 %r1054}1055 1056define i1 @sge_or_max_logical(i8 %x, i8 %y)  {1057; CHECK-LABEL: @sge_or_max_logical(1058; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[X:%.*]], [[Y:%.*]]1059; CHECK-NEXT:    ret i1 [[CMP]]1060;1061  %cmp = icmp sge i8 %x, %y1062  %cmpeq = icmp eq i8 %x, 1271063  %r = select i1 %cmp, i1 true, i1 %cmpeq1064  ret i1 %r1065}1066 1067define i1 @sge_or_max_commute(i8 %x, i8 %y)  {1068; CHECK-LABEL: @sge_or_max_commute(1069; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[X:%.*]], [[Y:%.*]]1070; CHECK-NEXT:    ret i1 [[CMP]]1071;1072  %cmp = icmp sge i8 %x, %y1073  %cmpeq = icmp eq i8 %x, 1271074  %r = or i1 %cmpeq, %cmp1075  ret i1 %r1076}1077 1078define i1 @sge_or_max_commute_logical(i8 %x, i8 %y)  {1079; CHECK-LABEL: @sge_or_max_commute_logical(1080; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[X:%.*]], [[Y:%.*]]1081; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 1271082; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 true, i1 [[CMP]]1083; CHECK-NEXT:    ret i1 [[R]]1084;1085  %cmp = icmp sge i8 %x, %y1086  %cmpeq = icmp eq i8 %x, 1271087  %r = select i1 %cmpeq, i1 true, i1 %cmp1088  ret i1 %r1089}1090 1091define i1 @sge_swap_or_max(i8 %x, i8 %y)  {1092; CHECK-LABEL: @sge_swap_or_max(1093; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[X:%.*]]1094; CHECK-NEXT:    ret i1 [[CMP]]1095;1096  %cmp = icmp sle i8 %y, %x1097  %cmpeq = icmp eq i8 %x, 1271098  %r = or i1 %cmp, %cmpeq1099  ret i1 %r1100}1101 1102define i1 @sge_swap_or_max_logical(i8 %x, i8 %y)  {1103; CHECK-LABEL: @sge_swap_or_max_logical(1104; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[X:%.*]]1105; CHECK-NEXT:    ret i1 [[CMP]]1106;1107  %cmp = icmp sle i8 %y, %x1108  %cmpeq = icmp eq i8 %x, 1271109  %r = select i1 %cmp, i1 true, i1 %cmpeq1110  ret i1 %r1111}1112 1113define i1 @sge_swap_or_max_commute(i8 %x, i8 %y)  {1114; CHECK-LABEL: @sge_swap_or_max_commute(1115; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[X:%.*]]1116; CHECK-NEXT:    ret i1 [[CMP]]1117;1118  %cmp = icmp sle i8 %y, %x1119  %cmpeq = icmp eq i8 %x, 1271120  %r = or i1 %cmpeq, %cmp1121  ret i1 %r1122}1123 1124define i1 @sge_swap_or_max_commute_logical(i8 %x, i8 %y)  {1125; CHECK-LABEL: @sge_swap_or_max_commute_logical(1126; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[X:%.*]]1127; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 1271128; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 true, i1 [[CMP]]1129; CHECK-NEXT:    ret i1 [[R]]1130;1131  %cmp = icmp sle i8 %y, %x1132  %cmpeq = icmp eq i8 %x, 1271133  %r = select i1 %cmpeq, i1 true, i1 %cmp1134  ret i1 %r1135}1136 1137define i1 @uge_or_max(i8 %x, i8 %y)  {1138; CHECK-LABEL: @uge_or_max(1139; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[X:%.*]], [[Y:%.*]]1140; CHECK-NEXT:    ret i1 [[CMP]]1141;1142  %cmp = icmp uge i8 %x, %y1143  %cmpeq = icmp eq i8 %x, 2551144  %r = or i1 %cmp, %cmpeq1145  ret i1 %r1146}1147 1148define i1 @uge_or_max_logical(i8 %x, i8 %y)  {1149; CHECK-LABEL: @uge_or_max_logical(1150; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[X:%.*]], [[Y:%.*]]1151; CHECK-NEXT:    ret i1 [[CMP]]1152;1153  %cmp = icmp uge i8 %x, %y1154  %cmpeq = icmp eq i8 %x, 2551155  %r = select i1 %cmp, i1 true, i1 %cmpeq1156  ret i1 %r1157}1158 1159define i1 @uge_or_max_commute(i8 %x, i8 %y)  {1160; CHECK-LABEL: @uge_or_max_commute(1161; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[X:%.*]], [[Y:%.*]]1162; CHECK-NEXT:    ret i1 [[CMP]]1163;1164  %cmp = icmp uge i8 %x, %y1165  %cmpeq = icmp eq i8 %x, 2551166  %r = or i1 %cmpeq, %cmp1167  ret i1 %r1168}1169 1170define i1 @uge_or_max_commute_logical(i8 %x, i8 %y)  {1171; CHECK-LABEL: @uge_or_max_commute_logical(1172; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[X:%.*]], [[Y:%.*]]1173; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -11174; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 true, i1 [[CMP]]1175; CHECK-NEXT:    ret i1 [[R]]1176;1177  %cmp = icmp uge i8 %x, %y1178  %cmpeq = icmp eq i8 %x, 2551179  %r = select i1 %cmpeq, i1 true, i1 %cmp1180  ret i1 %r1181}1182 1183define i1 @uge_swap_or_max(i8 %x, i8 %y)  {1184; CHECK-LABEL: @uge_swap_or_max(1185; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[X:%.*]]1186; CHECK-NEXT:    ret i1 [[CMP]]1187;1188  %cmp = icmp ule i8 %y, %x1189  %cmpeq = icmp eq i8 %x, 2551190  %r = or i1 %cmp, %cmpeq1191  ret i1 %r1192}1193 1194define i1 @uge_swap_or_max_logical(i8 %x, i8 %y)  {1195; CHECK-LABEL: @uge_swap_or_max_logical(1196; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[X:%.*]]1197; CHECK-NEXT:    ret i1 [[CMP]]1198;1199  %cmp = icmp ule i8 %y, %x1200  %cmpeq = icmp eq i8 %x, 2551201  %r = select i1 %cmp, i1 true, i1 %cmpeq1202  ret i1 %r1203}1204 1205define i1 @uge_swap_or_max_commute(i8 %x, i8 %y)  {1206; CHECK-LABEL: @uge_swap_or_max_commute(1207; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[X:%.*]]1208; CHECK-NEXT:    ret i1 [[CMP]]1209;1210  %cmp = icmp ule i8 %y, %x1211  %cmpeq = icmp eq i8 %x, 2551212  %r = or i1 %cmpeq, %cmp1213  ret i1 %r1214}1215 1216define i1 @uge_swap_or_max_commute_logical(i8 %x, i8 %y)  {1217; CHECK-LABEL: @uge_swap_or_max_commute_logical(1218; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[X:%.*]]1219; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -11220; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 true, i1 [[CMP]]1221; CHECK-NEXT:    ret i1 [[R]]1222;1223  %cmp = icmp ule i8 %y, %x1224  %cmpeq = icmp eq i8 %x, 2551225  %r = select i1 %cmpeq, i1 true, i1 %cmp1226  ret i1 %r1227}1228 1229;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1230;1231; (X == MIN) || (X <= Y) --> X <= Y1232;1233;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1234 1235define i1 @sle_or_min(i8 %x, i8 %y)  {1236; CHECK-LABEL: @sle_or_min(1237; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[X:%.*]], [[Y:%.*]]1238; CHECK-NEXT:    ret i1 [[CMP]]1239;1240  %cmp = icmp sle i8 %x, %y1241  %cmpeq = icmp eq i8 %x, 1281242  %r = or i1 %cmp, %cmpeq1243  ret i1 %r1244}1245 1246define i1 @sle_or_min_logical(i8 %x, i8 %y)  {1247; CHECK-LABEL: @sle_or_min_logical(1248; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[X:%.*]], [[Y:%.*]]1249; CHECK-NEXT:    ret i1 [[CMP]]1250;1251  %cmp = icmp sle i8 %x, %y1252  %cmpeq = icmp eq i8 %x, 1281253  %r = select i1 %cmp, i1 true, i1 %cmpeq1254  ret i1 %r1255}1256 1257define i1 @sle_or_min_commute(i8 %x, i8 %y)  {1258; CHECK-LABEL: @sle_or_min_commute(1259; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[X:%.*]], [[Y:%.*]]1260; CHECK-NEXT:    ret i1 [[CMP]]1261;1262  %cmp = icmp sle i8 %x, %y1263  %cmpeq = icmp eq i8 %x, 1281264  %r = or i1 %cmpeq, %cmp1265  ret i1 %r1266}1267 1268define i1 @sle_or_min_commute_logical(i8 %x, i8 %y)  {1269; CHECK-LABEL: @sle_or_min_commute_logical(1270; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[X:%.*]], [[Y:%.*]]1271; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1281272; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 true, i1 [[CMP]]1273; CHECK-NEXT:    ret i1 [[R]]1274;1275  %cmp = icmp sle i8 %x, %y1276  %cmpeq = icmp eq i8 %x, 1281277  %r = select i1 %cmpeq, i1 true, i1 %cmp1278  ret i1 %r1279}1280 1281define i1 @sle_swap_or_min(i8 %x, i8 %y)  {1282; CHECK-LABEL: @sle_swap_or_min(1283; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[X:%.*]]1284; CHECK-NEXT:    ret i1 [[CMP]]1285;1286  %cmp = icmp sge i8 %y, %x1287  %cmpeq = icmp eq i8 %x, 1281288  %r = or i1 %cmp, %cmpeq1289  ret i1 %r1290}1291 1292define i1 @sle_swap_or_min_logical(i8 %x, i8 %y)  {1293; CHECK-LABEL: @sle_swap_or_min_logical(1294; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[X:%.*]]1295; CHECK-NEXT:    ret i1 [[CMP]]1296;1297  %cmp = icmp sge i8 %y, %x1298  %cmpeq = icmp eq i8 %x, 1281299  %r = select i1 %cmp, i1 true, i1 %cmpeq1300  ret i1 %r1301}1302 1303define i1 @sle_swap_or_min_commute(i8 %x, i8 %y)  {1304; CHECK-LABEL: @sle_swap_or_min_commute(1305; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[X:%.*]]1306; CHECK-NEXT:    ret i1 [[CMP]]1307;1308  %cmp = icmp sge i8 %y, %x1309  %cmpeq = icmp eq i8 %x, 1281310  %r = or i1 %cmpeq, %cmp1311  ret i1 %r1312}1313 1314define i1 @sle_swap_or_min_commute_logical(i8 %x, i8 %y)  {1315; CHECK-LABEL: @sle_swap_or_min_commute_logical(1316; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[X:%.*]]1317; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1281318; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 true, i1 [[CMP]]1319; CHECK-NEXT:    ret i1 [[R]]1320;1321  %cmp = icmp sge i8 %y, %x1322  %cmpeq = icmp eq i8 %x, 1281323  %r = select i1 %cmpeq, i1 true, i1 %cmp1324  ret i1 %r1325}1326 1327define i1 @ule_or_min(i8 %x, i8 %y)  {1328; CHECK-LABEL: @ule_or_min(1329; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[X:%.*]], [[Y:%.*]]1330; CHECK-NEXT:    ret i1 [[CMP]]1331;1332  %cmp = icmp ule i8 %x, %y1333  %cmpeq = icmp eq i8 %x, 01334  %r = or i1 %cmp, %cmpeq1335  ret i1 %r1336}1337 1338define i1 @ule_or_min_logical(i8 %x, i8 %y)  {1339; CHECK-LABEL: @ule_or_min_logical(1340; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[X:%.*]], [[Y:%.*]]1341; CHECK-NEXT:    ret i1 [[CMP]]1342;1343  %cmp = icmp ule i8 %x, %y1344  %cmpeq = icmp eq i8 %x, 01345  %r = select i1 %cmp, i1 true, i1 %cmpeq1346  ret i1 %r1347}1348 1349define i1 @ule_or_min_commute(i8 %x, i8 %y)  {1350; CHECK-LABEL: @ule_or_min_commute(1351; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[X:%.*]], [[Y:%.*]]1352; CHECK-NEXT:    ret i1 [[CMP]]1353;1354  %cmp = icmp ule i8 %x, %y1355  %cmpeq = icmp eq i8 %x, 01356  %r = or i1 %cmpeq, %cmp1357  ret i1 %r1358}1359 1360define i1 @ule_or_min_commute_logical(i8 %x, i8 %y)  {1361; CHECK-LABEL: @ule_or_min_commute_logical(1362; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[X:%.*]], [[Y:%.*]]1363; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 01364; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 true, i1 [[CMP]]1365; CHECK-NEXT:    ret i1 [[R]]1366;1367  %cmp = icmp ule i8 %x, %y1368  %cmpeq = icmp eq i8 %x, 01369  %r = select i1 %cmpeq, i1 true, i1 %cmp1370  ret i1 %r1371}1372 1373define i1 @ule_swap_or_min(i8 %x, i8 %y)  {1374; CHECK-LABEL: @ule_swap_or_min(1375; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[Y:%.*]], [[X:%.*]]1376; CHECK-NEXT:    ret i1 [[CMP]]1377;1378  %cmp = icmp uge i8 %y, %x1379  %cmpeq = icmp eq i8 %x, 01380  %r = or i1 %cmp, %cmpeq1381  ret i1 %r1382}1383 1384define i1 @ule_swap_or_min_logical(i8 %x, i8 %y)  {1385; CHECK-LABEL: @ule_swap_or_min_logical(1386; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[Y:%.*]], [[X:%.*]]1387; CHECK-NEXT:    ret i1 [[CMP]]1388;1389  %cmp = icmp uge i8 %y, %x1390  %cmpeq = icmp eq i8 %x, 01391  %r = select i1 %cmp, i1 true, i1 %cmpeq1392  ret i1 %r1393}1394 1395define i1 @ule_swap_or_min_commute(i8 %x, i8 %y)  {1396; CHECK-LABEL: @ule_swap_or_min_commute(1397; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[Y:%.*]], [[X:%.*]]1398; CHECK-NEXT:    ret i1 [[CMP]]1399;1400  %cmp = icmp uge i8 %y, %x1401  %cmpeq = icmp eq i8 %x, 01402  %r = or i1 %cmpeq, %cmp1403  ret i1 %r1404}1405 1406define i1 @ule_swap_or_min_commute_logical(i8 %x, i8 %y)  {1407; CHECK-LABEL: @ule_swap_or_min_commute_logical(1408; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[Y:%.*]], [[X:%.*]]1409; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 01410; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 true, i1 [[CMP]]1411; CHECK-NEXT:    ret i1 [[R]]1412;1413  %cmp = icmp uge i8 %y, %x1414  %cmpeq = icmp eq i8 %x, 01415  %r = select i1 %cmpeq, i1 true, i1 %cmp1416  ret i1 %r1417}1418 1419;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1420;1421; (X != MAX) && (X < Y) --> X < Y1422;1423;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1424 1425define i1 @slt_and_not_max(i8 %x, i8 %y)  {1426; CHECK-LABEL: @slt_and_not_max(1427; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[X:%.*]], [[Y:%.*]]1428; CHECK-NEXT:    ret i1 [[CMP]]1429;1430  %cmp = icmp slt i8 %x, %y1431  %cmpeq = icmp ne i8 %x, 1271432  %r = and i1 %cmp, %cmpeq1433  ret i1 %r1434}1435 1436define i1 @slt_and_not_max_logical(i8 %x, i8 %y)  {1437; CHECK-LABEL: @slt_and_not_max_logical(1438; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[X:%.*]], [[Y:%.*]]1439; CHECK-NEXT:    ret i1 [[CMP]]1440;1441  %cmp = icmp slt i8 %x, %y1442  %cmpeq = icmp ne i8 %x, 1271443  %r = select i1 %cmp, i1 %cmpeq, i1 false1444  ret i1 %r1445}1446 1447define i1 @slt_and_not_max_commute(i8 %x, i8 %y)  {1448; CHECK-LABEL: @slt_and_not_max_commute(1449; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[X:%.*]], [[Y:%.*]]1450; CHECK-NEXT:    ret i1 [[CMP]]1451;1452  %cmp = icmp slt i8 %x, %y1453  %cmpeq = icmp ne i8 %x, 1271454  %r = and i1 %cmpeq, %cmp1455  ret i1 %r1456}1457 1458define i1 @slt_and_not_max_commute_logical(i8 %x, i8 %y)  {1459; CHECK-LABEL: @slt_and_not_max_commute_logical(1460; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[X:%.*]], [[Y:%.*]]1461; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 1271462; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 [[CMP]], i1 false1463; CHECK-NEXT:    ret i1 [[R]]1464;1465  %cmp = icmp slt i8 %x, %y1466  %cmpeq = icmp ne i8 %x, 1271467  %r = select i1 %cmpeq, i1 %cmp, i1 false1468  ret i1 %r1469}1470 1471define i1 @slt_swap_and_not_max(i8 %x, i8 %y)  {1472; CHECK-LABEL: @slt_swap_and_not_max(1473; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[X:%.*]]1474; CHECK-NEXT:    ret i1 [[CMP]]1475;1476  %cmp = icmp sgt i8 %y, %x1477  %cmpeq = icmp ne i8 %x, 1271478  %r = and i1 %cmp, %cmpeq1479  ret i1 %r1480}1481 1482define i1 @slt_swap_and_not_max_logical(i8 %x, i8 %y)  {1483; CHECK-LABEL: @slt_swap_and_not_max_logical(1484; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[X:%.*]]1485; CHECK-NEXT:    ret i1 [[CMP]]1486;1487  %cmp = icmp sgt i8 %y, %x1488  %cmpeq = icmp ne i8 %x, 1271489  %r = select i1 %cmp, i1 %cmpeq, i1 false1490  ret i1 %r1491}1492 1493define i1 @slt_swap_and_not_max_commute(i8 %x, i8 %y)  {1494; CHECK-LABEL: @slt_swap_and_not_max_commute(1495; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[X:%.*]]1496; CHECK-NEXT:    ret i1 [[CMP]]1497;1498  %cmp = icmp sgt i8 %y, %x1499  %cmpeq = icmp ne i8 %x, 1271500  %r = and i1 %cmpeq, %cmp1501  ret i1 %r1502}1503 1504define i1 @slt_swap_and_not_max_commute_logical(i8 %x, i8 %y)  {1505; CHECK-LABEL: @slt_swap_and_not_max_commute_logical(1506; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[X:%.*]]1507; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 1271508; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 [[CMP]], i1 false1509; CHECK-NEXT:    ret i1 [[R]]1510;1511  %cmp = icmp sgt i8 %y, %x1512  %cmpeq = icmp ne i8 %x, 1271513  %r = select i1 %cmpeq, i1 %cmp, i1 false1514  ret i1 %r1515}1516 1517define i1 @ult_and_not_max(i8 %x, i8 %y)  {1518; CHECK-LABEL: @ult_and_not_max(1519; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[X:%.*]], [[Y:%.*]]1520; CHECK-NEXT:    ret i1 [[CMP]]1521;1522  %cmp = icmp ult i8 %x, %y1523  %cmpeq = icmp ne i8 %x, 2551524  %r = and i1 %cmp, %cmpeq1525  ret i1 %r1526}1527 1528define i1 @ult_and_not_max_logical(i8 %x, i8 %y)  {1529; CHECK-LABEL: @ult_and_not_max_logical(1530; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[X:%.*]], [[Y:%.*]]1531; CHECK-NEXT:    ret i1 [[CMP]]1532;1533  %cmp = icmp ult i8 %x, %y1534  %cmpeq = icmp ne i8 %x, 2551535  %r = select i1 %cmp, i1 %cmpeq, i1 false1536  ret i1 %r1537}1538 1539define i1 @ult_and_not_max_commute(i8 %x, i8 %y)  {1540; CHECK-LABEL: @ult_and_not_max_commute(1541; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[X:%.*]], [[Y:%.*]]1542; CHECK-NEXT:    ret i1 [[CMP]]1543;1544  %cmp = icmp ult i8 %x, %y1545  %cmpeq = icmp ne i8 %x, 2551546  %r = and i1 %cmpeq, %cmp1547  ret i1 %r1548}1549 1550define i1 @ult_and_not_max_commute_logical(i8 %x, i8 %y)  {1551; CHECK-LABEL: @ult_and_not_max_commute_logical(1552; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[X:%.*]], [[Y:%.*]]1553; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -11554; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 [[CMP]], i1 false1555; CHECK-NEXT:    ret i1 [[R]]1556;1557  %cmp = icmp ult i8 %x, %y1558  %cmpeq = icmp ne i8 %x, 2551559  %r = select i1 %cmpeq, i1 %cmp, i1 false1560  ret i1 %r1561}1562 1563define i1 @ult_swap_and_not_max(i8 %x, i8 %y)  {1564; CHECK-LABEL: @ult_swap_and_not_max(1565; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[X:%.*]]1566; CHECK-NEXT:    ret i1 [[CMP]]1567;1568  %cmp = icmp ugt i8 %y, %x1569  %cmpeq = icmp ne i8 %x, 2551570  %r = and i1 %cmp, %cmpeq1571  ret i1 %r1572}1573 1574define i1 @ult_swap_and_not_max_logical(i8 %x, i8 %y)  {1575; CHECK-LABEL: @ult_swap_and_not_max_logical(1576; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[X:%.*]]1577; CHECK-NEXT:    ret i1 [[CMP]]1578;1579  %cmp = icmp ugt i8 %y, %x1580  %cmpeq = icmp ne i8 %x, 2551581  %r = select i1 %cmp, i1 %cmpeq, i1 false1582  ret i1 %r1583}1584 1585define i1 @ult_swap_and_not_max_commute(i8 %x, i8 %y)  {1586; CHECK-LABEL: @ult_swap_and_not_max_commute(1587; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[X:%.*]]1588; CHECK-NEXT:    ret i1 [[CMP]]1589;1590  %cmp = icmp ugt i8 %y, %x1591  %cmpeq = icmp ne i8 %x, 2551592  %r = and i1 %cmpeq, %cmp1593  ret i1 %r1594}1595 1596define i1 @ult_swap_and_not_max_commute_logical(i8 %x, i8 %y)  {1597; CHECK-LABEL: @ult_swap_and_not_max_commute_logical(1598; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[X:%.*]]1599; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -11600; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 [[CMP]], i1 false1601; CHECK-NEXT:    ret i1 [[R]]1602;1603  %cmp = icmp ugt i8 %y, %x1604  %cmpeq = icmp ne i8 %x, 2551605  %r = select i1 %cmpeq, i1 %cmp, i1 false1606  ret i1 %r1607}1608 1609;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1610;1611; (X != MIN) && (X > Y) --> X > Y1612;1613;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1614 1615define i1 @sgt_and_not_min(i8 %x, i8 %y)  {1616; CHECK-LABEL: @sgt_and_not_min(1617; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[X:%.*]], [[Y:%.*]]1618; CHECK-NEXT:    ret i1 [[CMP]]1619;1620  %cmp = icmp sgt i8 %x, %y1621  %cmpeq = icmp ne i8 %x, 1281622  %r = and i1 %cmp, %cmpeq1623  ret i1 %r1624}1625 1626define i1 @sgt_and_not_min_logical(i8 %x, i8 %y)  {1627; CHECK-LABEL: @sgt_and_not_min_logical(1628; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[X:%.*]], [[Y:%.*]]1629; CHECK-NEXT:    ret i1 [[CMP]]1630;1631  %cmp = icmp sgt i8 %x, %y1632  %cmpeq = icmp ne i8 %x, 1281633  %r = select i1 %cmp, i1 %cmpeq, i1 false1634  ret i1 %r1635}1636 1637define i1 @sgt_and_not_min_commute(i8 %x, i8 %y)  {1638; CHECK-LABEL: @sgt_and_not_min_commute(1639; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[X:%.*]], [[Y:%.*]]1640; CHECK-NEXT:    ret i1 [[CMP]]1641;1642  %cmp = icmp sgt i8 %x, %y1643  %cmpeq = icmp ne i8 %x, 1281644  %r = and i1 %cmpeq, %cmp1645  ret i1 %r1646}1647 1648define i1 @sgt_and_not_min_commute_logical(i8 %x, i8 %y)  {1649; CHECK-LABEL: @sgt_and_not_min_commute_logical(1650; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[X:%.*]], [[Y:%.*]]1651; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1281652; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 [[CMP]], i1 false1653; CHECK-NEXT:    ret i1 [[R]]1654;1655  %cmp = icmp sgt i8 %x, %y1656  %cmpeq = icmp ne i8 %x, 1281657  %r = select i1 %cmpeq, i1 %cmp, i1 false1658  ret i1 %r1659}1660 1661define i1 @sgt_swap_and_not_min(i8 %x, i8 %y)  {1662; CHECK-LABEL: @sgt_swap_and_not_min(1663; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[X:%.*]]1664; CHECK-NEXT:    ret i1 [[CMP]]1665;1666  %cmp = icmp slt i8 %y, %x1667  %cmpeq = icmp ne i8 %x, 1281668  %r = and i1 %cmp, %cmpeq1669  ret i1 %r1670}1671 1672define i1 @sgt_swap_and_not_min_logical(i8 %x, i8 %y)  {1673; CHECK-LABEL: @sgt_swap_and_not_min_logical(1674; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[X:%.*]]1675; CHECK-NEXT:    ret i1 [[CMP]]1676;1677  %cmp = icmp slt i8 %y, %x1678  %cmpeq = icmp ne i8 %x, 1281679  %r = select i1 %cmp, i1 %cmpeq, i1 false1680  ret i1 %r1681}1682 1683define i1 @sgt_swap_and_not_min_commute(i8 %x, i8 %y)  {1684; CHECK-LABEL: @sgt_swap_and_not_min_commute(1685; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[X:%.*]]1686; CHECK-NEXT:    ret i1 [[CMP]]1687;1688  %cmp = icmp slt i8 %y, %x1689  %cmpeq = icmp ne i8 %x, 1281690  %r = and i1 %cmpeq, %cmp1691  ret i1 %r1692}1693 1694define i1 @sgt_swap_and_not_min_commute_logical(i8 %x, i8 %y)  {1695; CHECK-LABEL: @sgt_swap_and_not_min_commute_logical(1696; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[X:%.*]]1697; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1281698; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 [[CMP]], i1 false1699; CHECK-NEXT:    ret i1 [[R]]1700;1701  %cmp = icmp slt i8 %y, %x1702  %cmpeq = icmp ne i8 %x, 1281703  %r = select i1 %cmpeq, i1 %cmp, i1 false1704  ret i1 %r1705}1706 1707define i1 @ugt_and_not_min(i8 %x, i8 %y)  {1708; CHECK-LABEL: @ugt_and_not_min(1709; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[X:%.*]], [[Y:%.*]]1710; CHECK-NEXT:    ret i1 [[CMP]]1711;1712  %cmp = icmp ugt i8 %x, %y1713  %cmpeq = icmp ne i8 %x, 01714  %r = and i1 %cmp, %cmpeq1715  ret i1 %r1716}1717 1718define i1 @ugt_and_not_min_logical(i8 %x, i8 %y)  {1719; CHECK-LABEL: @ugt_and_not_min_logical(1720; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[X:%.*]], [[Y:%.*]]1721; CHECK-NEXT:    ret i1 [[CMP]]1722;1723  %cmp = icmp ugt i8 %x, %y1724  %cmpeq = icmp ne i8 %x, 01725  %r = select i1 %cmp, i1 %cmpeq, i1 false1726  ret i1 %r1727}1728 1729define i1 @ugt_and_not_min_commute(i8 %x, i8 %y)  {1730; CHECK-LABEL: @ugt_and_not_min_commute(1731; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[X:%.*]], [[Y:%.*]]1732; CHECK-NEXT:    ret i1 [[CMP]]1733;1734  %cmp = icmp ugt i8 %x, %y1735  %cmpeq = icmp ne i8 %x, 01736  %r = and i1 %cmpeq, %cmp1737  ret i1 %r1738}1739 1740define i1 @ugt_and_not_min_commute_logical(i8 %x, i8 %y)  {1741; CHECK-LABEL: @ugt_and_not_min_commute_logical(1742; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[X:%.*]], [[Y:%.*]]1743; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 01744; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 [[CMP]], i1 false1745; CHECK-NEXT:    ret i1 [[R]]1746;1747  %cmp = icmp ugt i8 %x, %y1748  %cmpeq = icmp ne i8 %x, 01749  %r = select i1 %cmpeq, i1 %cmp, i1 false1750  ret i1 %r1751}1752 1753define i1 @ugt_swap_and_not_min(i8 %x, i8 %y)  {1754; CHECK-LABEL: @ugt_swap_and_not_min(1755; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[Y:%.*]], [[X:%.*]]1756; CHECK-NEXT:    ret i1 [[CMP]]1757;1758  %cmp = icmp ult i8 %y, %x1759  %cmpeq = icmp ne i8 %x, 01760  %r = and i1 %cmp, %cmpeq1761  ret i1 %r1762}1763 1764define i1 @ugt_swap_and_not_min_logical(i8 %x, i8 %y)  {1765; CHECK-LABEL: @ugt_swap_and_not_min_logical(1766; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[Y:%.*]], [[X:%.*]]1767; CHECK-NEXT:    ret i1 [[CMP]]1768;1769  %cmp = icmp ult i8 %y, %x1770  %cmpeq = icmp ne i8 %x, 01771  %r = select i1 %cmp, i1 %cmpeq, i1 false1772  ret i1 %r1773}1774 1775define i1 @ugt_swap_and_not_min_commute(i8 %x, i8 %y)  {1776; CHECK-LABEL: @ugt_swap_and_not_min_commute(1777; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[Y:%.*]], [[X:%.*]]1778; CHECK-NEXT:    ret i1 [[CMP]]1779;1780  %cmp = icmp ult i8 %y, %x1781  %cmpeq = icmp ne i8 %x, 01782  %r = and i1 %cmpeq, %cmp1783  ret i1 %r1784}1785 1786define i1 @ugt_swap_and_not_min_commute_logical(i8 %x, i8 %y)  {1787; CHECK-LABEL: @ugt_swap_and_not_min_commute_logical(1788; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[Y:%.*]], [[X:%.*]]1789; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 01790; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMPEQ]], i1 [[CMP]], i1 false1791; CHECK-NEXT:    ret i1 [[R]]1792;1793  %cmp = icmp ult i8 %y, %x1794  %cmpeq = icmp ne i8 %x, 01795  %r = select i1 %cmpeq, i1 %cmp, i1 false1796  ret i1 %r1797}1798 1799;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1800;1801; (X != MAX) || (X < Y) --> X != MAX1802;1803;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1804 1805define i1 @slt_or_not_max(i8 %x, i8 %y)  {1806; CHECK-LABEL: @slt_or_not_max(1807; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 1271808; CHECK-NEXT:    ret i1 [[CMPEQ]]1809;1810  %cmp = icmp slt i8 %x, %y1811  %cmpeq = icmp ne i8 %x, 1271812  %r = or i1 %cmp, %cmpeq1813  ret i1 %r1814}1815 1816define i1 @slt_or_not_max_logical(i8 %x, i8 %y)  {1817; CHECK-LABEL: @slt_or_not_max_logical(1818; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 1271819; CHECK-NEXT:    ret i1 [[CMPEQ]]1820;1821  %cmp = icmp slt i8 %x, %y1822  %cmpeq = icmp ne i8 %x, 1271823  %r = select i1 %cmp, i1 true, i1 %cmpeq1824  ret i1 %r1825}1826 1827define i1 @slt_or_not_max_commute(i8 %x, i8 %y)  {1828; CHECK-LABEL: @slt_or_not_max_commute(1829; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 1271830; CHECK-NEXT:    ret i1 [[CMPEQ]]1831;1832  %cmp = icmp slt i8 %x, %y1833  %cmpeq = icmp ne i8 %x, 1271834  %r = or i1 %cmpeq, %cmp1835  ret i1 %r1836}1837 1838define i1 @slt_or_not_max_commute_logical(i8 %x, i8 %y)  {1839; CHECK-LABEL: @slt_or_not_max_commute_logical(1840; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 1271841; CHECK-NEXT:    ret i1 [[CMPEQ]]1842;1843  %cmp = icmp slt i8 %x, %y1844  %cmpeq = icmp ne i8 %x, 1271845  %r = select i1 %cmpeq, i1 true, i1 %cmp1846  ret i1 %r1847}1848 1849define i1 @slt_swap_or_not_max(i8 %x, i8 %y)  {1850; CHECK-LABEL: @slt_swap_or_not_max(1851; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 1271852; CHECK-NEXT:    ret i1 [[CMPEQ]]1853;1854  %cmp = icmp sgt i8 %y, %x1855  %cmpeq = icmp ne i8 %x, 1271856  %r = or i1 %cmp, %cmpeq1857  ret i1 %r1858}1859 1860define i1 @slt_swap_or_not_max_logical(i8 %x, i8 %y)  {1861; CHECK-LABEL: @slt_swap_or_not_max_logical(1862; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 1271863; CHECK-NEXT:    ret i1 [[CMPEQ]]1864;1865  %cmp = icmp sgt i8 %y, %x1866  %cmpeq = icmp ne i8 %x, 1271867  %r = select i1 %cmp, i1 true, i1 %cmpeq1868  ret i1 %r1869}1870 1871define i1 @slt_swap_or_not_max_commute(i8 %x, i8 %y)  {1872; CHECK-LABEL: @slt_swap_or_not_max_commute(1873; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 1271874; CHECK-NEXT:    ret i1 [[CMPEQ]]1875;1876  %cmp = icmp sgt i8 %y, %x1877  %cmpeq = icmp ne i8 %x, 1271878  %r = or i1 %cmpeq, %cmp1879  ret i1 %r1880}1881 1882define i1 @slt_swap_or_not_max_commute_logical(i8 %x, i8 %y)  {1883; CHECK-LABEL: @slt_swap_or_not_max_commute_logical(1884; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 1271885; CHECK-NEXT:    ret i1 [[CMPEQ]]1886;1887  %cmp = icmp sgt i8 %y, %x1888  %cmpeq = icmp ne i8 %x, 1271889  %r = select i1 %cmpeq, i1 true, i1 %cmp1890  ret i1 %r1891}1892 1893define i1 @ult_or_not_max(i8 %x, i8 %y)  {1894; CHECK-LABEL: @ult_or_not_max(1895; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -11896; CHECK-NEXT:    ret i1 [[CMPEQ]]1897;1898  %cmp = icmp ult i8 %x, %y1899  %cmpeq = icmp ne i8 %x, 2551900  %r = or i1 %cmp, %cmpeq1901  ret i1 %r1902}1903 1904define i1 @ult_or_not_max_logical(i8 %x, i8 %y)  {1905; CHECK-LABEL: @ult_or_not_max_logical(1906; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -11907; CHECK-NEXT:    ret i1 [[CMPEQ]]1908;1909  %cmp = icmp ult i8 %x, %y1910  %cmpeq = icmp ne i8 %x, 2551911  %r = select i1 %cmp, i1 true, i1 %cmpeq1912  ret i1 %r1913}1914 1915define i1 @ult_or_not_max_commute(i8 %x, i8 %y)  {1916; CHECK-LABEL: @ult_or_not_max_commute(1917; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -11918; CHECK-NEXT:    ret i1 [[CMPEQ]]1919;1920  %cmp = icmp ult i8 %x, %y1921  %cmpeq = icmp ne i8 %x, 2551922  %r = or i1 %cmpeq, %cmp1923  ret i1 %r1924}1925 1926define i1 @ult_or_not_max_commute_logical(i8 %x, i8 %y)  {1927; CHECK-LABEL: @ult_or_not_max_commute_logical(1928; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -11929; CHECK-NEXT:    ret i1 [[CMPEQ]]1930;1931  %cmp = icmp ult i8 %x, %y1932  %cmpeq = icmp ne i8 %x, 2551933  %r = select i1 %cmpeq, i1 true, i1 %cmp1934  ret i1 %r1935}1936 1937define i1 @ult_swap_or_not_max(i8 %x, i8 %y)  {1938; CHECK-LABEL: @ult_swap_or_not_max(1939; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -11940; CHECK-NEXT:    ret i1 [[CMPEQ]]1941;1942  %cmp = icmp ugt i8 %y, %x1943  %cmpeq = icmp ne i8 %x, 2551944  %r = or i1 %cmp, %cmpeq1945  ret i1 %r1946}1947 1948define i1 @ult_swap_or_not_max_logical(i8 %x, i8 %y)  {1949; CHECK-LABEL: @ult_swap_or_not_max_logical(1950; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -11951; CHECK-NEXT:    ret i1 [[CMPEQ]]1952;1953  %cmp = icmp ugt i8 %y, %x1954  %cmpeq = icmp ne i8 %x, 2551955  %r = select i1 %cmp, i1 true, i1 %cmpeq1956  ret i1 %r1957}1958 1959define i1 @ult_swap_or_not_max_commute(i8 %x, i8 %y)  {1960; CHECK-LABEL: @ult_swap_or_not_max_commute(1961; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -11962; CHECK-NEXT:    ret i1 [[CMPEQ]]1963;1964  %cmp = icmp ugt i8 %y, %x1965  %cmpeq = icmp ne i8 %x, 2551966  %r = or i1 %cmpeq, %cmp1967  ret i1 %r1968}1969 1970define i1 @ult_swap_or_not_max_commute_logical(i8 %x, i8 %y)  {1971; CHECK-LABEL: @ult_swap_or_not_max_commute_logical(1972; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -11973; CHECK-NEXT:    ret i1 [[CMPEQ]]1974;1975  %cmp = icmp ugt i8 %y, %x1976  %cmpeq = icmp ne i8 %x, 2551977  %r = select i1 %cmpeq, i1 true, i1 %cmp1978  ret i1 %r1979}1980 1981;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1982;1983; (X != MIN) || (X > Y) --> X != MIN1984;1985;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1986 1987define i1 @sgt_or_not_min(i8 %x, i8 %y)  {1988; CHECK-LABEL: @sgt_or_not_min(1989; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -1281990; CHECK-NEXT:    ret i1 [[CMPEQ]]1991;1992  %cmp = icmp sgt i8 %x, %y1993  %cmpeq = icmp ne i8 %x, 1281994  %r = or i1 %cmp, %cmpeq1995  ret i1 %r1996}1997 1998define i1 @sgt_or_not_min_logical(i8 %x, i8 %y)  {1999; CHECK-LABEL: @sgt_or_not_min_logical(2000; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -1282001; CHECK-NEXT:    ret i1 [[CMPEQ]]2002;2003  %cmp = icmp sgt i8 %x, %y2004  %cmpeq = icmp ne i8 %x, 1282005  %r = select i1 %cmp, i1 true, i1 %cmpeq2006  ret i1 %r2007}2008 2009define i1 @sgt_or_not_min_commute(i8 %x, i8 %y)  {2010; CHECK-LABEL: @sgt_or_not_min_commute(2011; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -1282012; CHECK-NEXT:    ret i1 [[CMPEQ]]2013;2014  %cmp = icmp sgt i8 %x, %y2015  %cmpeq = icmp ne i8 %x, 1282016  %r = or i1 %cmpeq, %cmp2017  ret i1 %r2018}2019 2020define i1 @sgt_or_not_min_commute_logical(i8 %x, i8 %y)  {2021; CHECK-LABEL: @sgt_or_not_min_commute_logical(2022; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -1282023; CHECK-NEXT:    ret i1 [[CMPEQ]]2024;2025  %cmp = icmp sgt i8 %x, %y2026  %cmpeq = icmp ne i8 %x, 1282027  %r = select i1 %cmpeq, i1 true, i1 %cmp2028  ret i1 %r2029}2030 2031define i1 @sgt_swap_or_not_min(i8 %x, i8 %y)  {2032; CHECK-LABEL: @sgt_swap_or_not_min(2033; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -1282034; CHECK-NEXT:    ret i1 [[CMPEQ]]2035;2036  %cmp = icmp slt i8 %y, %x2037  %cmpeq = icmp ne i8 %x, 1282038  %r = or i1 %cmp, %cmpeq2039  ret i1 %r2040}2041 2042define i1 @sgt_swap_or_not_min_logical(i8 %x, i8 %y)  {2043; CHECK-LABEL: @sgt_swap_or_not_min_logical(2044; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -1282045; CHECK-NEXT:    ret i1 [[CMPEQ]]2046;2047  %cmp = icmp slt i8 %y, %x2048  %cmpeq = icmp ne i8 %x, 1282049  %r = select i1 %cmp, i1 true, i1 %cmpeq2050  ret i1 %r2051}2052 2053define i1 @sgt_swap_or_not_min_commute(i8 %x, i8 %y)  {2054; CHECK-LABEL: @sgt_swap_or_not_min_commute(2055; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -1282056; CHECK-NEXT:    ret i1 [[CMPEQ]]2057;2058  %cmp = icmp slt i8 %y, %x2059  %cmpeq = icmp ne i8 %x, 1282060  %r = or i1 %cmpeq, %cmp2061  ret i1 %r2062}2063 2064define i1 @sgt_swap_or_not_min_commute_logical(i8 %x, i8 %y)  {2065; CHECK-LABEL: @sgt_swap_or_not_min_commute_logical(2066; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], -1282067; CHECK-NEXT:    ret i1 [[CMPEQ]]2068;2069  %cmp = icmp slt i8 %y, %x2070  %cmpeq = icmp ne i8 %x, 1282071  %r = select i1 %cmpeq, i1 true, i1 %cmp2072  ret i1 %r2073}2074 2075define i1 @ugt_or_not_min(i8 %x, i8 %y)  {2076; CHECK-LABEL: @ugt_or_not_min(2077; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 02078; CHECK-NEXT:    ret i1 [[CMPEQ]]2079;2080  %cmp = icmp ugt i8 %x, %y2081  %cmpeq = icmp ne i8 %x, 02082  %r = or i1 %cmp, %cmpeq2083  ret i1 %r2084}2085 2086define i1 @ugt_or_not_min_logical(i8 %x, i8 %y)  {2087; CHECK-LABEL: @ugt_or_not_min_logical(2088; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 02089; CHECK-NEXT:    ret i1 [[CMPEQ]]2090;2091  %cmp = icmp ugt i8 %x, %y2092  %cmpeq = icmp ne i8 %x, 02093  %r = select i1 %cmp, i1 true, i1 %cmpeq2094  ret i1 %r2095}2096 2097define i1 @ugt_or_not_min_commute(i8 %x, i8 %y)  {2098; CHECK-LABEL: @ugt_or_not_min_commute(2099; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 02100; CHECK-NEXT:    ret i1 [[CMPEQ]]2101;2102  %cmp = icmp ugt i8 %x, %y2103  %cmpeq = icmp ne i8 %x, 02104  %r = or i1 %cmpeq, %cmp2105  ret i1 %r2106}2107 2108define i1 @ugt_or_not_min_commute_logical(i8 %x, i8 %y)  {2109; CHECK-LABEL: @ugt_or_not_min_commute_logical(2110; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 02111; CHECK-NEXT:    ret i1 [[CMPEQ]]2112;2113  %cmp = icmp ugt i8 %x, %y2114  %cmpeq = icmp ne i8 %x, 02115  %r = select i1 %cmpeq, i1 true, i1 %cmp2116  ret i1 %r2117}2118 2119define i1 @ugt_swap_or_not_min(i8 %x, i8 %y)  {2120; CHECK-LABEL: @ugt_swap_or_not_min(2121; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 02122; CHECK-NEXT:    ret i1 [[CMPEQ]]2123;2124  %cmp = icmp ult i8 %y, %x2125  %cmpeq = icmp ne i8 %x, 02126  %r = or i1 %cmp, %cmpeq2127  ret i1 %r2128}2129 2130define i1 @ugt_swap_or_not_min_logical(i8 %x, i8 %y)  {2131; CHECK-LABEL: @ugt_swap_or_not_min_logical(2132; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 02133; CHECK-NEXT:    ret i1 [[CMPEQ]]2134;2135  %cmp = icmp ult i8 %y, %x2136  %cmpeq = icmp ne i8 %x, 02137  %r = select i1 %cmp, i1 true, i1 %cmpeq2138  ret i1 %r2139}2140 2141define i1 @ugt_swap_or_not_min_commute(i823 %x, i823 %y)  {2142; CHECK-LABEL: @ugt_swap_or_not_min_commute(2143; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i823 [[X:%.*]], 02144; CHECK-NEXT:    ret i1 [[CMPEQ]]2145;2146  %cmp = icmp ult i823 %y, %x2147  %cmpeq = icmp ne i823 %x, 02148  %r = or i1 %cmpeq, %cmp2149  ret i1 %r2150}2151 2152define i1 @ugt_swap_or_not_min_commute_logical(i823 %x, i823 %y)  {2153; CHECK-LABEL: @ugt_swap_or_not_min_commute_logical(2154; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i823 [[X:%.*]], 02155; CHECK-NEXT:    ret i1 [[CMPEQ]]2156;2157  %cmp = icmp ult i823 %y, %x2158  %cmpeq = icmp ne i823 %x, 02159  %r = select i1 %cmpeq, i1 true, i1 %cmp2160  ret i1 %r2161}2162