brintos

brintos / llvm-project-archived public Read only

0
0
Text · 74.6 KiB · 70f2539 Raw
3862 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4define i1 @lshrugt_01_00(i4 %x) {5; CHECK-LABEL: @lshrugt_01_00(6; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], 17; CHECK-NEXT:    ret i1 [[C]]8;9  %s = lshr i4 %x, 110  %c = icmp ugt i4 %s, 011  ret i1 %c12}13 14define i1 @lshrugt_01_01(i4 %x) {15; CHECK-LABEL: @lshrugt_01_01(16; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], 317; CHECK-NEXT:    ret i1 [[C]]18;19  %s = lshr i4 %x, 120  %c = icmp ugt i4 %s, 121  ret i1 %c22}23 24define i1 @lshrugt_01_02(i4 %x) {25; CHECK-LABEL: @lshrugt_01_02(26; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], 527; CHECK-NEXT:    ret i1 [[C]]28;29  %s = lshr i4 %x, 130  %c = icmp ugt i4 %s, 231  ret i1 %c32}33 34define i1 @lshrugt_01_03(i4 %x) {35; CHECK-LABEL: @lshrugt_01_03(36; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 037; CHECK-NEXT:    ret i1 [[C]]38;39  %s = lshr i4 %x, 140  %c = icmp ugt i4 %s, 341  ret i1 %c42}43 44define i1 @lshrugt_01_04(i4 %x) {45; CHECK-LABEL: @lshrugt_01_04(46; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], -747; CHECK-NEXT:    ret i1 [[C]]48;49  %s = lshr i4 %x, 150  %c = icmp ugt i4 %s, 451  ret i1 %c52}53 54define i1 @lshrugt_01_05(i4 %x) {55; CHECK-LABEL: @lshrugt_01_05(56; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], -557; CHECK-NEXT:    ret i1 [[C]]58;59  %s = lshr i4 %x, 160  %c = icmp ugt i4 %s, 561  ret i1 %c62}63 64define i1 @lshrugt_01_06(i4 %x) {65; CHECK-LABEL: @lshrugt_01_06(66; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], -367; CHECK-NEXT:    ret i1 [[C]]68;69  %s = lshr i4 %x, 170  %c = icmp ugt i4 %s, 671  ret i1 %c72}73 74define i1 @lshrugt_01_07(i4 %x) {75; CHECK-LABEL: @lshrugt_01_07(76; CHECK-NEXT:    ret i1 false77;78  %s = lshr i4 %x, 179  %c = icmp ugt i4 %s, 780  ret i1 %c81}82 83define i1 @lshrugt_01_08(i4 %x) {84; CHECK-LABEL: @lshrugt_01_08(85; CHECK-NEXT:    ret i1 false86;87  %s = lshr i4 %x, 188  %c = icmp ugt i4 %s, 889  ret i1 %c90}91 92define i1 @lshrugt_01_09(i4 %x) {93; CHECK-LABEL: @lshrugt_01_09(94; CHECK-NEXT:    ret i1 false95;96  %s = lshr i4 %x, 197  %c = icmp ugt i4 %s, 998  ret i1 %c99}100 101define i1 @lshrugt_01_10(i4 %x) {102; CHECK-LABEL: @lshrugt_01_10(103; CHECK-NEXT:    ret i1 false104;105  %s = lshr i4 %x, 1106  %c = icmp ugt i4 %s, 10107  ret i1 %c108}109 110define i1 @lshrugt_01_11(i4 %x) {111; CHECK-LABEL: @lshrugt_01_11(112; CHECK-NEXT:    ret i1 false113;114  %s = lshr i4 %x, 1115  %c = icmp ugt i4 %s, 11116  ret i1 %c117}118 119define i1 @lshrugt_01_12(i4 %x) {120; CHECK-LABEL: @lshrugt_01_12(121; CHECK-NEXT:    ret i1 false122;123  %s = lshr i4 %x, 1124  %c = icmp ugt i4 %s, 12125  ret i1 %c126}127 128define i1 @lshrugt_01_13(i4 %x) {129; CHECK-LABEL: @lshrugt_01_13(130; CHECK-NEXT:    ret i1 false131;132  %s = lshr i4 %x, 1133  %c = icmp ugt i4 %s, 13134  ret i1 %c135}136 137define i1 @lshrugt_01_14(i4 %x) {138; CHECK-LABEL: @lshrugt_01_14(139; CHECK-NEXT:    ret i1 false140;141  %s = lshr i4 %x, 1142  %c = icmp ugt i4 %s, 14143  ret i1 %c144}145 146define i1 @lshrugt_01_15(i4 %x) {147; CHECK-LABEL: @lshrugt_01_15(148; CHECK-NEXT:    ret i1 false149;150  %s = lshr i4 %x, 1151  %c = icmp ugt i4 %s, 15152  ret i1 %c153}154 155define i1 @lshrugt_02_00(i4 %x) {156; CHECK-LABEL: @lshrugt_02_00(157; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], 3158; CHECK-NEXT:    ret i1 [[C]]159;160  %s = lshr i4 %x, 2161  %c = icmp ugt i4 %s, 0162  ret i1 %c163}164 165define i1 @lshrugt_02_01(i4 %x) {166; CHECK-LABEL: @lshrugt_02_01(167; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 0168; CHECK-NEXT:    ret i1 [[C]]169;170  %s = lshr i4 %x, 2171  %c = icmp ugt i4 %s, 1172  ret i1 %c173}174 175define i1 @lshrugt_02_02(i4 %x) {176; CHECK-LABEL: @lshrugt_02_02(177; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], -5178; CHECK-NEXT:    ret i1 [[C]]179;180  %s = lshr i4 %x, 2181  %c = icmp ugt i4 %s, 2182  ret i1 %c183}184 185define i1 @lshrugt_02_03(i4 %x) {186; CHECK-LABEL: @lshrugt_02_03(187; CHECK-NEXT:    ret i1 false188;189  %s = lshr i4 %x, 2190  %c = icmp ugt i4 %s, 3191  ret i1 %c192}193 194define i1 @lshrugt_02_04(i4 %x) {195; CHECK-LABEL: @lshrugt_02_04(196; CHECK-NEXT:    ret i1 false197;198  %s = lshr i4 %x, 2199  %c = icmp ugt i4 %s, 4200  ret i1 %c201}202 203define i1 @lshrugt_02_05(i4 %x) {204; CHECK-LABEL: @lshrugt_02_05(205; CHECK-NEXT:    ret i1 false206;207  %s = lshr i4 %x, 2208  %c = icmp ugt i4 %s, 5209  ret i1 %c210}211 212define i1 @lshrugt_02_06(i4 %x) {213; CHECK-LABEL: @lshrugt_02_06(214; CHECK-NEXT:    ret i1 false215;216  %s = lshr i4 %x, 2217  %c = icmp ugt i4 %s, 6218  ret i1 %c219}220 221define i1 @lshrugt_02_07(i4 %x) {222; CHECK-LABEL: @lshrugt_02_07(223; CHECK-NEXT:    ret i1 false224;225  %s = lshr i4 %x, 2226  %c = icmp ugt i4 %s, 7227  ret i1 %c228}229 230define i1 @lshrugt_02_08(i4 %x) {231; CHECK-LABEL: @lshrugt_02_08(232; CHECK-NEXT:    ret i1 false233;234  %s = lshr i4 %x, 2235  %c = icmp ugt i4 %s, 8236  ret i1 %c237}238 239define i1 @lshrugt_02_09(i4 %x) {240; CHECK-LABEL: @lshrugt_02_09(241; CHECK-NEXT:    ret i1 false242;243  %s = lshr i4 %x, 2244  %c = icmp ugt i4 %s, 9245  ret i1 %c246}247 248define i1 @lshrugt_02_10(i4 %x) {249; CHECK-LABEL: @lshrugt_02_10(250; CHECK-NEXT:    ret i1 false251;252  %s = lshr i4 %x, 2253  %c = icmp ugt i4 %s, 10254  ret i1 %c255}256 257define i1 @lshrugt_02_11(i4 %x) {258; CHECK-LABEL: @lshrugt_02_11(259; CHECK-NEXT:    ret i1 false260;261  %s = lshr i4 %x, 2262  %c = icmp ugt i4 %s, 11263  ret i1 %c264}265 266define i1 @lshrugt_02_12(i4 %x) {267; CHECK-LABEL: @lshrugt_02_12(268; CHECK-NEXT:    ret i1 false269;270  %s = lshr i4 %x, 2271  %c = icmp ugt i4 %s, 12272  ret i1 %c273}274 275define i1 @lshrugt_02_13(i4 %x) {276; CHECK-LABEL: @lshrugt_02_13(277; CHECK-NEXT:    ret i1 false278;279  %s = lshr i4 %x, 2280  %c = icmp ugt i4 %s, 13281  ret i1 %c282}283 284define i1 @lshrugt_02_14(i4 %x) {285; CHECK-LABEL: @lshrugt_02_14(286; CHECK-NEXT:    ret i1 false287;288  %s = lshr i4 %x, 2289  %c = icmp ugt i4 %s, 14290  ret i1 %c291}292 293define i1 @lshrugt_02_15(i4 %x) {294; CHECK-LABEL: @lshrugt_02_15(295; CHECK-NEXT:    ret i1 false296;297  %s = lshr i4 %x, 2298  %c = icmp ugt i4 %s, 15299  ret i1 %c300}301 302define i1 @lshrugt_03_00(i4 %x) {303; CHECK-LABEL: @lshrugt_03_00(304; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 0305; CHECK-NEXT:    ret i1 [[C]]306;307  %s = lshr i4 %x, 3308  %c = icmp ugt i4 %s, 0309  ret i1 %c310}311 312define i1 @lshrugt_03_01(i4 %x) {313; CHECK-LABEL: @lshrugt_03_01(314; CHECK-NEXT:    ret i1 false315;316  %s = lshr i4 %x, 3317  %c = icmp ugt i4 %s, 1318  ret i1 %c319}320 321define i1 @lshrugt_03_02(i4 %x) {322; CHECK-LABEL: @lshrugt_03_02(323; CHECK-NEXT:    ret i1 false324;325  %s = lshr i4 %x, 3326  %c = icmp ugt i4 %s, 2327  ret i1 %c328}329 330define i1 @lshrugt_03_03(i4 %x) {331; CHECK-LABEL: @lshrugt_03_03(332; CHECK-NEXT:    ret i1 false333;334  %s = lshr i4 %x, 3335  %c = icmp ugt i4 %s, 3336  ret i1 %c337}338 339define i1 @lshrugt_03_04(i4 %x) {340; CHECK-LABEL: @lshrugt_03_04(341; CHECK-NEXT:    ret i1 false342;343  %s = lshr i4 %x, 3344  %c = icmp ugt i4 %s, 4345  ret i1 %c346}347 348define i1 @lshrugt_03_05(i4 %x) {349; CHECK-LABEL: @lshrugt_03_05(350; CHECK-NEXT:    ret i1 false351;352  %s = lshr i4 %x, 3353  %c = icmp ugt i4 %s, 5354  ret i1 %c355}356 357define i1 @lshrugt_03_06(i4 %x) {358; CHECK-LABEL: @lshrugt_03_06(359; CHECK-NEXT:    ret i1 false360;361  %s = lshr i4 %x, 3362  %c = icmp ugt i4 %s, 6363  ret i1 %c364}365 366define i1 @lshrugt_03_07(i4 %x) {367; CHECK-LABEL: @lshrugt_03_07(368; CHECK-NEXT:    ret i1 false369;370  %s = lshr i4 %x, 3371  %c = icmp ugt i4 %s, 7372  ret i1 %c373}374 375define i1 @lshrugt_03_08(i4 %x) {376; CHECK-LABEL: @lshrugt_03_08(377; CHECK-NEXT:    ret i1 false378;379  %s = lshr i4 %x, 3380  %c = icmp ugt i4 %s, 8381  ret i1 %c382}383 384define i1 @lshrugt_03_09(i4 %x) {385; CHECK-LABEL: @lshrugt_03_09(386; CHECK-NEXT:    ret i1 false387;388  %s = lshr i4 %x, 3389  %c = icmp ugt i4 %s, 9390  ret i1 %c391}392 393define i1 @lshrugt_03_10(i4 %x) {394; CHECK-LABEL: @lshrugt_03_10(395; CHECK-NEXT:    ret i1 false396;397  %s = lshr i4 %x, 3398  %c = icmp ugt i4 %s, 10399  ret i1 %c400}401 402define i1 @lshrugt_03_11(i4 %x) {403; CHECK-LABEL: @lshrugt_03_11(404; CHECK-NEXT:    ret i1 false405;406  %s = lshr i4 %x, 3407  %c = icmp ugt i4 %s, 11408  ret i1 %c409}410 411define i1 @lshrugt_03_12(i4 %x) {412; CHECK-LABEL: @lshrugt_03_12(413; CHECK-NEXT:    ret i1 false414;415  %s = lshr i4 %x, 3416  %c = icmp ugt i4 %s, 12417  ret i1 %c418}419 420define i1 @lshrugt_03_13(i4 %x) {421; CHECK-LABEL: @lshrugt_03_13(422; CHECK-NEXT:    ret i1 false423;424  %s = lshr i4 %x, 3425  %c = icmp ugt i4 %s, 13426  ret i1 %c427}428 429define i1 @lshrugt_03_14(i4 %x) {430; CHECK-LABEL: @lshrugt_03_14(431; CHECK-NEXT:    ret i1 false432;433  %s = lshr i4 %x, 3434  %c = icmp ugt i4 %s, 14435  ret i1 %c436}437 438define i1 @lshrugt_03_15(i4 %x) {439; CHECK-LABEL: @lshrugt_03_15(440; CHECK-NEXT:    ret i1 false441;442  %s = lshr i4 %x, 3443  %c = icmp ugt i4 %s, 15444  ret i1 %c445}446 447define i1 @lshrult_01_00(i4 %x) {448; CHECK-LABEL: @lshrult_01_00(449; CHECK-NEXT:    ret i1 false450;451  %s = lshr i4 %x, 1452  %c = icmp ult i4 %s, 0453  ret i1 %c454}455 456define i1 @lshrult_01_01(i4 %x) {457; CHECK-LABEL: @lshrult_01_01(458; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 [[X:%.*]], 2459; CHECK-NEXT:    ret i1 [[C]]460;461  %s = lshr i4 %x, 1462  %c = icmp ult i4 %s, 1463  ret i1 %c464}465 466define i1 @lshrult_01_02(i4 %x) {467; CHECK-LABEL: @lshrult_01_02(468; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 [[X:%.*]], 4469; CHECK-NEXT:    ret i1 [[C]]470;471  %s = lshr i4 %x, 1472  %c = icmp ult i4 %s, 2473  ret i1 %c474}475 476define i1 @lshrult_01_03(i4 %x) {477; CHECK-LABEL: @lshrult_01_03(478; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 [[X:%.*]], 6479; CHECK-NEXT:    ret i1 [[C]]480;481  %s = lshr i4 %x, 1482  %c = icmp ult i4 %s, 3483  ret i1 %c484}485 486define i1 @lshrult_01_04(i4 %x) {487; CHECK-LABEL: @lshrult_01_04(488; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1489; CHECK-NEXT:    ret i1 [[C]]490;491  %s = lshr i4 %x, 1492  %c = icmp ult i4 %s, 4493  ret i1 %c494}495 496define i1 @lshrult_01_05(i4 %x) {497; CHECK-LABEL: @lshrult_01_05(498; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 [[X:%.*]], -6499; CHECK-NEXT:    ret i1 [[C]]500;501  %s = lshr i4 %x, 1502  %c = icmp ult i4 %s, 5503  ret i1 %c504}505 506define i1 @lshrult_01_06(i4 %x) {507; CHECK-LABEL: @lshrult_01_06(508; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 [[X:%.*]], -4509; CHECK-NEXT:    ret i1 [[C]]510;511  %s = lshr i4 %x, 1512  %c = icmp ult i4 %s, 6513  ret i1 %c514}515 516define i1 @lshrult_01_07(i4 %x) {517; CHECK-LABEL: @lshrult_01_07(518; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 [[X:%.*]], -2519; CHECK-NEXT:    ret i1 [[C]]520;521  %s = lshr i4 %x, 1522  %c = icmp ult i4 %s, 7523  ret i1 %c524}525 526define i1 @lshrult_01_08(i4 %x) {527; CHECK-LABEL: @lshrult_01_08(528; CHECK-NEXT:    ret i1 true529;530  %s = lshr i4 %x, 1531  %c = icmp ult i4 %s, 8532  ret i1 %c533}534 535define i1 @lshrult_01_09(i4 %x) {536; CHECK-LABEL: @lshrult_01_09(537; CHECK-NEXT:    ret i1 true538;539  %s = lshr i4 %x, 1540  %c = icmp ult i4 %s, 9541  ret i1 %c542}543 544define i1 @lshrult_01_10(i4 %x) {545; CHECK-LABEL: @lshrult_01_10(546; CHECK-NEXT:    ret i1 true547;548  %s = lshr i4 %x, 1549  %c = icmp ult i4 %s, 10550  ret i1 %c551}552 553define i1 @lshrult_01_11(i4 %x) {554; CHECK-LABEL: @lshrult_01_11(555; CHECK-NEXT:    ret i1 true556;557  %s = lshr i4 %x, 1558  %c = icmp ult i4 %s, 11559  ret i1 %c560}561 562define i1 @lshrult_01_12(i4 %x) {563; CHECK-LABEL: @lshrult_01_12(564; CHECK-NEXT:    ret i1 true565;566  %s = lshr i4 %x, 1567  %c = icmp ult i4 %s, 12568  ret i1 %c569}570 571define i1 @lshrult_01_13(i4 %x) {572; CHECK-LABEL: @lshrult_01_13(573; CHECK-NEXT:    ret i1 true574;575  %s = lshr i4 %x, 1576  %c = icmp ult i4 %s, 13577  ret i1 %c578}579 580define i1 @lshrult_01_14(i4 %x) {581; CHECK-LABEL: @lshrult_01_14(582; CHECK-NEXT:    ret i1 true583;584  %s = lshr i4 %x, 1585  %c = icmp ult i4 %s, 14586  ret i1 %c587}588 589define i1 @lshrult_01_15(i4 %x) {590; CHECK-LABEL: @lshrult_01_15(591; CHECK-NEXT:    ret i1 true592;593  %s = lshr i4 %x, 1594  %c = icmp ult i4 %s, 15595  ret i1 %c596}597 598define i1 @lshrult_02_00(i4 %x) {599; CHECK-LABEL: @lshrult_02_00(600; CHECK-NEXT:    ret i1 false601;602  %s = lshr i4 %x, 2603  %c = icmp ult i4 %s, 0604  ret i1 %c605}606 607define i1 @lshrult_02_01(i4 %x) {608; CHECK-LABEL: @lshrult_02_01(609; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 [[X:%.*]], 4610; CHECK-NEXT:    ret i1 [[C]]611;612  %s = lshr i4 %x, 2613  %c = icmp ult i4 %s, 1614  ret i1 %c615}616 617define i1 @lshrult_02_02(i4 %x) {618; CHECK-LABEL: @lshrult_02_02(619; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1620; CHECK-NEXT:    ret i1 [[C]]621;622  %s = lshr i4 %x, 2623  %c = icmp ult i4 %s, 2624  ret i1 %c625}626 627define i1 @lshrult_02_03(i4 %x) {628; CHECK-LABEL: @lshrult_02_03(629; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 [[X:%.*]], -4630; CHECK-NEXT:    ret i1 [[C]]631;632  %s = lshr i4 %x, 2633  %c = icmp ult i4 %s, 3634  ret i1 %c635}636 637define i1 @lshrult_02_04(i4 %x) {638; CHECK-LABEL: @lshrult_02_04(639; CHECK-NEXT:    ret i1 true640;641  %s = lshr i4 %x, 2642  %c = icmp ult i4 %s, 4643  ret i1 %c644}645 646define i1 @lshrult_02_05(i4 %x) {647; CHECK-LABEL: @lshrult_02_05(648; CHECK-NEXT:    ret i1 true649;650  %s = lshr i4 %x, 2651  %c = icmp ult i4 %s, 5652  ret i1 %c653}654 655define i1 @lshrult_02_06(i4 %x) {656; CHECK-LABEL: @lshrult_02_06(657; CHECK-NEXT:    ret i1 true658;659  %s = lshr i4 %x, 2660  %c = icmp ult i4 %s, 6661  ret i1 %c662}663 664define i1 @lshrult_02_07(i4 %x) {665; CHECK-LABEL: @lshrult_02_07(666; CHECK-NEXT:    ret i1 true667;668  %s = lshr i4 %x, 2669  %c = icmp ult i4 %s, 7670  ret i1 %c671}672 673define i1 @lshrult_02_08(i4 %x) {674; CHECK-LABEL: @lshrult_02_08(675; CHECK-NEXT:    ret i1 true676;677  %s = lshr i4 %x, 2678  %c = icmp ult i4 %s, 8679  ret i1 %c680}681 682define i1 @lshrult_02_09(i4 %x) {683; CHECK-LABEL: @lshrult_02_09(684; CHECK-NEXT:    ret i1 true685;686  %s = lshr i4 %x, 2687  %c = icmp ult i4 %s, 9688  ret i1 %c689}690 691define i1 @lshrult_02_10(i4 %x) {692; CHECK-LABEL: @lshrult_02_10(693; CHECK-NEXT:    ret i1 true694;695  %s = lshr i4 %x, 2696  %c = icmp ult i4 %s, 10697  ret i1 %c698}699 700define i1 @lshrult_02_11(i4 %x) {701; CHECK-LABEL: @lshrult_02_11(702; CHECK-NEXT:    ret i1 true703;704  %s = lshr i4 %x, 2705  %c = icmp ult i4 %s, 11706  ret i1 %c707}708 709define i1 @lshrult_02_12(i4 %x) {710; CHECK-LABEL: @lshrult_02_12(711; CHECK-NEXT:    ret i1 true712;713  %s = lshr i4 %x, 2714  %c = icmp ult i4 %s, 12715  ret i1 %c716}717 718define i1 @lshrult_02_13(i4 %x) {719; CHECK-LABEL: @lshrult_02_13(720; CHECK-NEXT:    ret i1 true721;722  %s = lshr i4 %x, 2723  %c = icmp ult i4 %s, 13724  ret i1 %c725}726 727define i1 @lshrult_02_14(i4 %x) {728; CHECK-LABEL: @lshrult_02_14(729; CHECK-NEXT:    ret i1 true730;731  %s = lshr i4 %x, 2732  %c = icmp ult i4 %s, 14733  ret i1 %c734}735 736define i1 @lshrult_02_15(i4 %x) {737; CHECK-LABEL: @lshrult_02_15(738; CHECK-NEXT:    ret i1 true739;740  %s = lshr i4 %x, 2741  %c = icmp ult i4 %s, 15742  ret i1 %c743}744 745define i1 @lshrult_03_00(i4 %x) {746; CHECK-LABEL: @lshrult_03_00(747; CHECK-NEXT:    ret i1 false748;749  %s = lshr i4 %x, 3750  %c = icmp ult i4 %s, 0751  ret i1 %c752}753 754define i1 @lshrult_03_01(i4 %x) {755; CHECK-LABEL: @lshrult_03_01(756; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1757; CHECK-NEXT:    ret i1 [[C]]758;759  %s = lshr i4 %x, 3760  %c = icmp ult i4 %s, 1761  ret i1 %c762}763 764define i1 @lshrult_03_02(i4 %x) {765; CHECK-LABEL: @lshrult_03_02(766; CHECK-NEXT:    ret i1 true767;768  %s = lshr i4 %x, 3769  %c = icmp ult i4 %s, 2770  ret i1 %c771}772 773define i1 @lshrult_03_03(i4 %x) {774; CHECK-LABEL: @lshrult_03_03(775; CHECK-NEXT:    ret i1 true776;777  %s = lshr i4 %x, 3778  %c = icmp ult i4 %s, 3779  ret i1 %c780}781 782define i1 @lshrult_03_04(i4 %x) {783; CHECK-LABEL: @lshrult_03_04(784; CHECK-NEXT:    ret i1 true785;786  %s = lshr i4 %x, 3787  %c = icmp ult i4 %s, 4788  ret i1 %c789}790 791define i1 @lshrult_03_05(i4 %x) {792; CHECK-LABEL: @lshrult_03_05(793; CHECK-NEXT:    ret i1 true794;795  %s = lshr i4 %x, 3796  %c = icmp ult i4 %s, 5797  ret i1 %c798}799 800define i1 @lshrult_03_06(i4 %x) {801; CHECK-LABEL: @lshrult_03_06(802; CHECK-NEXT:    ret i1 true803;804  %s = lshr i4 %x, 3805  %c = icmp ult i4 %s, 6806  ret i1 %c807}808 809define i1 @lshrult_03_07(i4 %x) {810; CHECK-LABEL: @lshrult_03_07(811; CHECK-NEXT:    ret i1 true812;813  %s = lshr i4 %x, 3814  %c = icmp ult i4 %s, 7815  ret i1 %c816}817 818define i1 @lshrult_03_08(i4 %x) {819; CHECK-LABEL: @lshrult_03_08(820; CHECK-NEXT:    ret i1 true821;822  %s = lshr i4 %x, 3823  %c = icmp ult i4 %s, 8824  ret i1 %c825}826 827define i1 @lshrult_03_09(i4 %x) {828; CHECK-LABEL: @lshrult_03_09(829; CHECK-NEXT:    ret i1 true830;831  %s = lshr i4 %x, 3832  %c = icmp ult i4 %s, 9833  ret i1 %c834}835 836define i1 @lshrult_03_10(i4 %x) {837; CHECK-LABEL: @lshrult_03_10(838; CHECK-NEXT:    ret i1 true839;840  %s = lshr i4 %x, 3841  %c = icmp ult i4 %s, 10842  ret i1 %c843}844 845define i1 @lshrult_03_11(i4 %x) {846; CHECK-LABEL: @lshrult_03_11(847; CHECK-NEXT:    ret i1 true848;849  %s = lshr i4 %x, 3850  %c = icmp ult i4 %s, 11851  ret i1 %c852}853 854define i1 @lshrult_03_12(i4 %x) {855; CHECK-LABEL: @lshrult_03_12(856; CHECK-NEXT:    ret i1 true857;858  %s = lshr i4 %x, 3859  %c = icmp ult i4 %s, 12860  ret i1 %c861}862 863define i1 @lshrult_03_13(i4 %x) {864; CHECK-LABEL: @lshrult_03_13(865; CHECK-NEXT:    ret i1 true866;867  %s = lshr i4 %x, 3868  %c = icmp ult i4 %s, 13869  ret i1 %c870}871 872define i1 @lshrult_03_14(i4 %x) {873; CHECK-LABEL: @lshrult_03_14(874; CHECK-NEXT:    ret i1 true875;876  %s = lshr i4 %x, 3877  %c = icmp ult i4 %s, 14878  ret i1 %c879}880 881define i1 @lshrult_03_15(i4 %x) {882; CHECK-LABEL: @lshrult_03_15(883; CHECK-NEXT:    ret i1 true884;885  %s = lshr i4 %x, 3886  %c = icmp ult i4 %s, 15887  ret i1 %c888}889 890define i1 @ashrsgt_01_00(i4 %x) {891; CHECK-LABEL: @ashrsgt_01_00(892; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], 1893; CHECK-NEXT:    ret i1 [[C]]894;895  %s = ashr i4 %x, 1896  %c = icmp sgt i4 %s, 0897  ret i1 %c898}899 900define i1 @ashrsgt_01_00_multiuse(i4 %x, ptr %p) {901; CHECK-LABEL: @ashrsgt_01_00_multiuse(902; CHECK-NEXT:    [[S:%.*]] = ashr i4 [[X:%.*]], 1903; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[S]], 0904; CHECK-NEXT:    store i4 [[S]], ptr [[P:%.*]], align 1905; CHECK-NEXT:    ret i1 [[C]]906;907  %s = ashr i4 %x, 1908  %c = icmp sgt i4 %s, 0909  store i4 %s, ptr %p910  ret i1 %c911}912 913define i1 @ashrsgt_01_01(i4 %x) {914; CHECK-LABEL: @ashrsgt_01_01(915; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], 3916; CHECK-NEXT:    ret i1 [[C]]917;918  %s = ashr i4 %x, 1919  %c = icmp sgt i4 %s, 1920  ret i1 %c921}922 923define i1 @ashrsgt_01_02(i4 %x) {924; CHECK-LABEL: @ashrsgt_01_02(925; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], 5926; CHECK-NEXT:    ret i1 [[C]]927;928  %s = ashr i4 %x, 1929  %c = icmp sgt i4 %s, 2930  ret i1 %c931}932 933define i1 @ashrsgt_01_03(i4 %x) {934; CHECK-LABEL: @ashrsgt_01_03(935; CHECK-NEXT:    ret i1 false936;937  %s = ashr i4 %x, 1938  %c = icmp sgt i4 %s, 3939  ret i1 %c940}941 942define i1 @ashrsgt_01_04(i4 %x) {943; CHECK-LABEL: @ashrsgt_01_04(944; CHECK-NEXT:    ret i1 false945;946  %s = ashr i4 %x, 1947  %c = icmp sgt i4 %s, 4948  ret i1 %c949}950 951define i1 @ashrsgt_01_05(i4 %x) {952; CHECK-LABEL: @ashrsgt_01_05(953; CHECK-NEXT:    ret i1 false954;955  %s = ashr i4 %x, 1956  %c = icmp sgt i4 %s, 5957  ret i1 %c958}959 960define i1 @ashrsgt_01_06(i4 %x) {961; CHECK-LABEL: @ashrsgt_01_06(962; CHECK-NEXT:    ret i1 false963;964  %s = ashr i4 %x, 1965  %c = icmp sgt i4 %s, 6966  ret i1 %c967}968 969define i1 @ashrsgt_01_07(i4 %x) {970; CHECK-LABEL: @ashrsgt_01_07(971; CHECK-NEXT:    ret i1 false972;973  %s = ashr i4 %x, 1974  %c = icmp sgt i4 %s, 7975  ret i1 %c976}977 978define i1 @ashrsgt_01_08(i4 %x) {979; CHECK-LABEL: @ashrsgt_01_08(980; CHECK-NEXT:    ret i1 true981;982  %s = ashr i4 %x, 1983  %c = icmp sgt i4 %s, 8984  ret i1 %c985}986 987define i1 @ashrsgt_01_09(i4 %x) {988; CHECK-LABEL: @ashrsgt_01_09(989; CHECK-NEXT:    ret i1 true990;991  %s = ashr i4 %x, 1992  %c = icmp sgt i4 %s, 9993  ret i1 %c994}995 996define i1 @ashrsgt_01_10(i4 %x) {997; CHECK-LABEL: @ashrsgt_01_10(998; CHECK-NEXT:    ret i1 true999;1000  %s = ashr i4 %x, 11001  %c = icmp sgt i4 %s, 101002  ret i1 %c1003}1004 1005define i1 @ashrsgt_01_11(i4 %x) {1006; CHECK-LABEL: @ashrsgt_01_11(1007; CHECK-NEXT:    ret i1 true1008;1009  %s = ashr i4 %x, 11010  %c = icmp sgt i4 %s, 111011  ret i1 %c1012}1013 1014define i1 @ashrsgt_01_12(i4 %x) {1015; CHECK-LABEL: @ashrsgt_01_12(1016; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -71017; CHECK-NEXT:    ret i1 [[C]]1018;1019  %s = ashr i4 %x, 11020  %c = icmp sgt i4 %s, 121021  ret i1 %c1022}1023 1024define i1 @ashrsgt_01_13(i4 %x) {1025; CHECK-LABEL: @ashrsgt_01_13(1026; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -51027; CHECK-NEXT:    ret i1 [[C]]1028;1029  %s = ashr i4 %x, 11030  %c = icmp sgt i4 %s, 131031  ret i1 %c1032}1033 1034define i1 @ashrsgt_01_14(i4 %x) {1035; CHECK-LABEL: @ashrsgt_01_14(1036; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -31037; CHECK-NEXT:    ret i1 [[C]]1038;1039  %s = ashr i4 %x, 11040  %c = icmp sgt i4 %s, 141041  ret i1 %c1042}1043 1044define i1 @ashrsgt_01_15(i4 %x) {1045; CHECK-LABEL: @ashrsgt_01_15(1046; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -11047; CHECK-NEXT:    ret i1 [[C]]1048;1049  %s = ashr i4 %x, 11050  %c = icmp sgt i4 %s, 151051  ret i1 %c1052}1053 1054define i1 @ashrsgt_02_00(i4 %x) {1055; CHECK-LABEL: @ashrsgt_02_00(1056; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], 31057; CHECK-NEXT:    ret i1 [[C]]1058;1059  %s = ashr i4 %x, 21060  %c = icmp sgt i4 %s, 01061  ret i1 %c1062}1063 1064define i1 @ashrsgt_02_01(i4 %x) {1065; CHECK-LABEL: @ashrsgt_02_01(1066; CHECK-NEXT:    ret i1 false1067;1068  %s = ashr i4 %x, 21069  %c = icmp sgt i4 %s, 11070  ret i1 %c1071}1072 1073define i1 @ashrsgt_02_02(i4 %x) {1074; CHECK-LABEL: @ashrsgt_02_02(1075; CHECK-NEXT:    ret i1 false1076;1077  %s = ashr i4 %x, 21078  %c = icmp sgt i4 %s, 21079  ret i1 %c1080}1081 1082define i1 @ashrsgt_02_03(i4 %x) {1083; CHECK-LABEL: @ashrsgt_02_03(1084; CHECK-NEXT:    ret i1 false1085;1086  %s = ashr i4 %x, 21087  %c = icmp sgt i4 %s, 31088  ret i1 %c1089}1090 1091define i1 @ashrsgt_02_04(i4 %x) {1092; CHECK-LABEL: @ashrsgt_02_04(1093; CHECK-NEXT:    ret i1 false1094;1095  %s = ashr i4 %x, 21096  %c = icmp sgt i4 %s, 41097  ret i1 %c1098}1099 1100define i1 @ashrsgt_02_05(i4 %x) {1101; CHECK-LABEL: @ashrsgt_02_05(1102; CHECK-NEXT:    ret i1 false1103;1104  %s = ashr i4 %x, 21105  %c = icmp sgt i4 %s, 51106  ret i1 %c1107}1108 1109define i1 @ashrsgt_02_06(i4 %x) {1110; CHECK-LABEL: @ashrsgt_02_06(1111; CHECK-NEXT:    ret i1 false1112;1113  %s = ashr i4 %x, 21114  %c = icmp sgt i4 %s, 61115  ret i1 %c1116}1117 1118define i1 @ashrsgt_02_07(i4 %x) {1119; CHECK-LABEL: @ashrsgt_02_07(1120; CHECK-NEXT:    ret i1 false1121;1122  %s = ashr i4 %x, 21123  %c = icmp sgt i4 %s, 71124  ret i1 %c1125}1126 1127define i1 @ashrsgt_02_08(i4 %x) {1128; CHECK-LABEL: @ashrsgt_02_08(1129; CHECK-NEXT:    ret i1 true1130;1131  %s = ashr i4 %x, 21132  %c = icmp sgt i4 %s, 81133  ret i1 %c1134}1135 1136define i1 @ashrsgt_02_09(i4 %x) {1137; CHECK-LABEL: @ashrsgt_02_09(1138; CHECK-NEXT:    ret i1 true1139;1140  %s = ashr i4 %x, 21141  %c = icmp sgt i4 %s, 91142  ret i1 %c1143}1144 1145define i1 @ashrsgt_02_10(i4 %x) {1146; CHECK-LABEL: @ashrsgt_02_10(1147; CHECK-NEXT:    ret i1 true1148;1149  %s = ashr i4 %x, 21150  %c = icmp sgt i4 %s, 101151  ret i1 %c1152}1153 1154define i1 @ashrsgt_02_11(i4 %x) {1155; CHECK-LABEL: @ashrsgt_02_11(1156; CHECK-NEXT:    ret i1 true1157;1158  %s = ashr i4 %x, 21159  %c = icmp sgt i4 %s, 111160  ret i1 %c1161}1162 1163define i1 @ashrsgt_02_12(i4 %x) {1164; CHECK-LABEL: @ashrsgt_02_12(1165; CHECK-NEXT:    ret i1 true1166;1167  %s = ashr i4 %x, 21168  %c = icmp sgt i4 %s, 121169  ret i1 %c1170}1171 1172define i1 @ashrsgt_02_13(i4 %x) {1173; CHECK-LABEL: @ashrsgt_02_13(1174; CHECK-NEXT:    ret i1 true1175;1176  %s = ashr i4 %x, 21177  %c = icmp sgt i4 %s, 131178  ret i1 %c1179}1180 1181define i1 @ashrsgt_02_14(i4 %x) {1182; CHECK-LABEL: @ashrsgt_02_14(1183; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -51184; CHECK-NEXT:    ret i1 [[C]]1185;1186  %s = ashr i4 %x, 21187  %c = icmp sgt i4 %s, 141188  ret i1 %c1189}1190 1191define i1 @ashrsgt_02_15(i4 %x) {1192; CHECK-LABEL: @ashrsgt_02_15(1193; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -11194; CHECK-NEXT:    ret i1 [[C]]1195;1196  %s = ashr i4 %x, 21197  %c = icmp sgt i4 %s, 151198  ret i1 %c1199}1200 1201define i1 @ashrsgt_03_00(i4 %x) {1202; CHECK-LABEL: @ashrsgt_03_00(1203; CHECK-NEXT:    ret i1 false1204;1205  %s = ashr i4 %x, 31206  %c = icmp sgt i4 %s, 01207  ret i1 %c1208}1209 1210define i1 @ashrsgt_03_01(i4 %x) {1211; CHECK-LABEL: @ashrsgt_03_01(1212; CHECK-NEXT:    ret i1 false1213;1214  %s = ashr i4 %x, 31215  %c = icmp sgt i4 %s, 11216  ret i1 %c1217}1218 1219define i1 @ashrsgt_03_02(i4 %x) {1220; CHECK-LABEL: @ashrsgt_03_02(1221; CHECK-NEXT:    ret i1 false1222;1223  %s = ashr i4 %x, 31224  %c = icmp sgt i4 %s, 21225  ret i1 %c1226}1227 1228define i1 @ashrsgt_03_03(i4 %x) {1229; CHECK-LABEL: @ashrsgt_03_03(1230; CHECK-NEXT:    ret i1 false1231;1232  %s = ashr i4 %x, 31233  %c = icmp sgt i4 %s, 31234  ret i1 %c1235}1236 1237define i1 @ashrsgt_03_04(i4 %x) {1238; CHECK-LABEL: @ashrsgt_03_04(1239; CHECK-NEXT:    ret i1 false1240;1241  %s = ashr i4 %x, 31242  %c = icmp sgt i4 %s, 41243  ret i1 %c1244}1245 1246define i1 @ashrsgt_03_05(i4 %x) {1247; CHECK-LABEL: @ashrsgt_03_05(1248; CHECK-NEXT:    ret i1 false1249;1250  %s = ashr i4 %x, 31251  %c = icmp sgt i4 %s, 51252  ret i1 %c1253}1254 1255define i1 @ashrsgt_03_06(i4 %x) {1256; CHECK-LABEL: @ashrsgt_03_06(1257; CHECK-NEXT:    ret i1 false1258;1259  %s = ashr i4 %x, 31260  %c = icmp sgt i4 %s, 61261  ret i1 %c1262}1263 1264define i1 @ashrsgt_03_07(i4 %x) {1265; CHECK-LABEL: @ashrsgt_03_07(1266; CHECK-NEXT:    ret i1 false1267;1268  %s = ashr i4 %x, 31269  %c = icmp sgt i4 %s, 71270  ret i1 %c1271}1272 1273define i1 @ashrsgt_03_08(i4 %x) {1274; CHECK-LABEL: @ashrsgt_03_08(1275; CHECK-NEXT:    ret i1 true1276;1277  %s = ashr i4 %x, 31278  %c = icmp sgt i4 %s, 81279  ret i1 %c1280}1281 1282define i1 @ashrsgt_03_09(i4 %x) {1283; CHECK-LABEL: @ashrsgt_03_09(1284; CHECK-NEXT:    ret i1 true1285;1286  %s = ashr i4 %x, 31287  %c = icmp sgt i4 %s, 91288  ret i1 %c1289}1290 1291define i1 @ashrsgt_03_10(i4 %x) {1292; CHECK-LABEL: @ashrsgt_03_10(1293; CHECK-NEXT:    ret i1 true1294;1295  %s = ashr i4 %x, 31296  %c = icmp sgt i4 %s, 101297  ret i1 %c1298}1299 1300define i1 @ashrsgt_03_11(i4 %x) {1301; CHECK-LABEL: @ashrsgt_03_11(1302; CHECK-NEXT:    ret i1 true1303;1304  %s = ashr i4 %x, 31305  %c = icmp sgt i4 %s, 111306  ret i1 %c1307}1308 1309define i1 @ashrsgt_03_12(i4 %x) {1310; CHECK-LABEL: @ashrsgt_03_12(1311; CHECK-NEXT:    ret i1 true1312;1313  %s = ashr i4 %x, 31314  %c = icmp sgt i4 %s, 121315  ret i1 %c1316}1317 1318define i1 @ashrsgt_03_13(i4 %x) {1319; CHECK-LABEL: @ashrsgt_03_13(1320; CHECK-NEXT:    ret i1 true1321;1322  %s = ashr i4 %x, 31323  %c = icmp sgt i4 %s, 131324  ret i1 %c1325}1326 1327define i1 @ashrsgt_03_14(i4 %x) {1328; CHECK-LABEL: @ashrsgt_03_14(1329; CHECK-NEXT:    ret i1 true1330;1331  %s = ashr i4 %x, 31332  %c = icmp sgt i4 %s, 141333  ret i1 %c1334}1335 1336define i1 @ashrsgt_03_15(i4 %x) {1337; CHECK-LABEL: @ashrsgt_03_15(1338; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -11339; CHECK-NEXT:    ret i1 [[C]]1340;1341  %s = ashr i4 %x, 31342  %c = icmp sgt i4 %s, 151343  ret i1 %c1344}1345 1346define i1 @ashrslt_01_00(i4 %x) {1347; CHECK-LABEL: @ashrslt_01_00(1348; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 01349; CHECK-NEXT:    ret i1 [[C]]1350;1351  %s = ashr i4 %x, 11352  %c = icmp slt i4 %s, 01353  ret i1 %c1354}1355 1356define i1 @ashrslt_01_01(i4 %x) {1357; CHECK-LABEL: @ashrslt_01_01(1358; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 21359; CHECK-NEXT:    ret i1 [[C]]1360;1361  %s = ashr i4 %x, 11362  %c = icmp slt i4 %s, 11363  ret i1 %c1364}1365 1366define i1 @ashrslt_01_02(i4 %x) {1367; CHECK-LABEL: @ashrslt_01_02(1368; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 41369; CHECK-NEXT:    ret i1 [[C]]1370;1371  %s = ashr i4 %x, 11372  %c = icmp slt i4 %s, 21373  ret i1 %c1374}1375 1376define i1 @ashrslt_01_03(i4 %x) {1377; CHECK-LABEL: @ashrslt_01_03(1378; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 61379; CHECK-NEXT:    ret i1 [[C]]1380;1381  %s = ashr i4 %x, 11382  %c = icmp slt i4 %s, 31383  ret i1 %c1384}1385 1386define i1 @ashrslt_01_04(i4 %x) {1387; CHECK-LABEL: @ashrslt_01_04(1388; CHECK-NEXT:    ret i1 true1389;1390  %s = ashr i4 %x, 11391  %c = icmp slt i4 %s, 41392  ret i1 %c1393}1394 1395define i1 @ashrslt_01_05(i4 %x) {1396; CHECK-LABEL: @ashrslt_01_05(1397; CHECK-NEXT:    ret i1 true1398;1399  %s = ashr i4 %x, 11400  %c = icmp slt i4 %s, 51401  ret i1 %c1402}1403 1404define i1 @ashrslt_01_06(i4 %x) {1405; CHECK-LABEL: @ashrslt_01_06(1406; CHECK-NEXT:    ret i1 true1407;1408  %s = ashr i4 %x, 11409  %c = icmp slt i4 %s, 61410  ret i1 %c1411}1412 1413define i1 @ashrslt_01_07(i4 %x) {1414; CHECK-LABEL: @ashrslt_01_07(1415; CHECK-NEXT:    ret i1 true1416;1417  %s = ashr i4 %x, 11418  %c = icmp slt i4 %s, 71419  ret i1 %c1420}1421 1422define i1 @ashrslt_01_08(i4 %x) {1423; CHECK-LABEL: @ashrslt_01_08(1424; CHECK-NEXT:    ret i1 false1425;1426  %s = ashr i4 %x, 11427  %c = icmp slt i4 %s, 81428  ret i1 %c1429}1430 1431define i1 @ashrslt_01_09(i4 %x) {1432; CHECK-LABEL: @ashrslt_01_09(1433; CHECK-NEXT:    ret i1 false1434;1435  %s = ashr i4 %x, 11436  %c = icmp slt i4 %s, 91437  ret i1 %c1438}1439 1440define i1 @ashrslt_01_10(i4 %x) {1441; CHECK-LABEL: @ashrslt_01_10(1442; CHECK-NEXT:    ret i1 false1443;1444  %s = ashr i4 %x, 11445  %c = icmp slt i4 %s, 101446  ret i1 %c1447}1448 1449define i1 @ashrslt_01_11(i4 %x) {1450; CHECK-LABEL: @ashrslt_01_11(1451; CHECK-NEXT:    ret i1 false1452;1453  %s = ashr i4 %x, 11454  %c = icmp slt i4 %s, 111455  ret i1 %c1456}1457 1458define i1 @ashrslt_01_12(i4 %x) {1459; CHECK-LABEL: @ashrslt_01_12(1460; CHECK-NEXT:    ret i1 false1461;1462  %s = ashr i4 %x, 11463  %c = icmp slt i4 %s, 121464  ret i1 %c1465}1466 1467define i1 @ashrslt_01_13(i4 %x) {1468; CHECK-LABEL: @ashrslt_01_13(1469; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], -61470; CHECK-NEXT:    ret i1 [[C]]1471;1472  %s = ashr i4 %x, 11473  %c = icmp slt i4 %s, 131474  ret i1 %c1475}1476 1477define i1 @ashrslt_01_14(i4 %x) {1478; CHECK-LABEL: @ashrslt_01_14(1479; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], -41480; CHECK-NEXT:    ret i1 [[C]]1481;1482  %s = ashr i4 %x, 11483  %c = icmp slt i4 %s, 141484  ret i1 %c1485}1486 1487define i1 @ashrslt_01_15(i4 %x) {1488; CHECK-LABEL: @ashrslt_01_15(1489; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], -21490; CHECK-NEXT:    ret i1 [[C]]1491;1492  %s = ashr i4 %x, 11493  %c = icmp slt i4 %s, 151494  ret i1 %c1495}1496 1497define i1 @ashrslt_02_00(i4 %x) {1498; CHECK-LABEL: @ashrslt_02_00(1499; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 01500; CHECK-NEXT:    ret i1 [[C]]1501;1502  %s = ashr i4 %x, 21503  %c = icmp slt i4 %s, 01504  ret i1 %c1505}1506 1507define i1 @ashrslt_02_01(i4 %x) {1508; CHECK-LABEL: @ashrslt_02_01(1509; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 41510; CHECK-NEXT:    ret i1 [[C]]1511;1512  %s = ashr i4 %x, 21513  %c = icmp slt i4 %s, 11514  ret i1 %c1515}1516 1517define i1 @ashrslt_02_02(i4 %x) {1518; CHECK-LABEL: @ashrslt_02_02(1519; CHECK-NEXT:    ret i1 true1520;1521  %s = ashr i4 %x, 21522  %c = icmp slt i4 %s, 21523  ret i1 %c1524}1525 1526define i1 @ashrslt_02_03(i4 %x) {1527; CHECK-LABEL: @ashrslt_02_03(1528; CHECK-NEXT:    ret i1 true1529;1530  %s = ashr i4 %x, 21531  %c = icmp slt i4 %s, 31532  ret i1 %c1533}1534 1535define i1 @ashrslt_02_04(i4 %x) {1536; CHECK-LABEL: @ashrslt_02_04(1537; CHECK-NEXT:    ret i1 true1538;1539  %s = ashr i4 %x, 21540  %c = icmp slt i4 %s, 41541  ret i1 %c1542}1543 1544define i1 @ashrslt_02_05(i4 %x) {1545; CHECK-LABEL: @ashrslt_02_05(1546; CHECK-NEXT:    ret i1 true1547;1548  %s = ashr i4 %x, 21549  %c = icmp slt i4 %s, 51550  ret i1 %c1551}1552 1553define i1 @ashrslt_02_06(i4 %x) {1554; CHECK-LABEL: @ashrslt_02_06(1555; CHECK-NEXT:    ret i1 true1556;1557  %s = ashr i4 %x, 21558  %c = icmp slt i4 %s, 61559  ret i1 %c1560}1561 1562define i1 @ashrslt_02_07(i4 %x) {1563; CHECK-LABEL: @ashrslt_02_07(1564; CHECK-NEXT:    ret i1 true1565;1566  %s = ashr i4 %x, 21567  %c = icmp slt i4 %s, 71568  ret i1 %c1569}1570 1571define i1 @ashrslt_02_08(i4 %x) {1572; CHECK-LABEL: @ashrslt_02_08(1573; CHECK-NEXT:    ret i1 false1574;1575  %s = ashr i4 %x, 21576  %c = icmp slt i4 %s, 81577  ret i1 %c1578}1579 1580define i1 @ashrslt_02_09(i4 %x) {1581; CHECK-LABEL: @ashrslt_02_09(1582; CHECK-NEXT:    ret i1 false1583;1584  %s = ashr i4 %x, 21585  %c = icmp slt i4 %s, 91586  ret i1 %c1587}1588 1589define i1 @ashrslt_02_10(i4 %x) {1590; CHECK-LABEL: @ashrslt_02_10(1591; CHECK-NEXT:    ret i1 false1592;1593  %s = ashr i4 %x, 21594  %c = icmp slt i4 %s, 101595  ret i1 %c1596}1597 1598define i1 @ashrslt_02_11(i4 %x) {1599; CHECK-LABEL: @ashrslt_02_11(1600; CHECK-NEXT:    ret i1 false1601;1602  %s = ashr i4 %x, 21603  %c = icmp slt i4 %s, 111604  ret i1 %c1605}1606 1607define i1 @ashrslt_02_12(i4 %x) {1608; CHECK-LABEL: @ashrslt_02_12(1609; CHECK-NEXT:    ret i1 false1610;1611  %s = ashr i4 %x, 21612  %c = icmp slt i4 %s, 121613  ret i1 %c1614}1615 1616define i1 @ashrslt_02_13(i4 %x) {1617; CHECK-LABEL: @ashrslt_02_13(1618; CHECK-NEXT:    ret i1 false1619;1620  %s = ashr i4 %x, 21621  %c = icmp slt i4 %s, 131622  ret i1 %c1623}1624 1625define i1 @ashrslt_02_14(i4 %x) {1626; CHECK-LABEL: @ashrslt_02_14(1627; CHECK-NEXT:    ret i1 false1628;1629  %s = ashr i4 %x, 21630  %c = icmp slt i4 %s, 141631  ret i1 %c1632}1633 1634define i1 @ashrslt_02_15(i4 %x) {1635; CHECK-LABEL: @ashrslt_02_15(1636; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], -41637; CHECK-NEXT:    ret i1 [[C]]1638;1639  %s = ashr i4 %x, 21640  %c = icmp slt i4 %s, 151641  ret i1 %c1642}1643 1644define i1 @ashrslt_03_00(i4 %x) {1645; CHECK-LABEL: @ashrslt_03_00(1646; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 01647; CHECK-NEXT:    ret i1 [[C]]1648;1649  %s = ashr i4 %x, 31650  %c = icmp slt i4 %s, 01651  ret i1 %c1652}1653 1654define i1 @ashrslt_03_01(i4 %x) {1655; CHECK-LABEL: @ashrslt_03_01(1656; CHECK-NEXT:    ret i1 true1657;1658  %s = ashr i4 %x, 31659  %c = icmp slt i4 %s, 11660  ret i1 %c1661}1662 1663define i1 @ashrslt_03_02(i4 %x) {1664; CHECK-LABEL: @ashrslt_03_02(1665; CHECK-NEXT:    ret i1 true1666;1667  %s = ashr i4 %x, 31668  %c = icmp slt i4 %s, 21669  ret i1 %c1670}1671 1672define i1 @ashrslt_03_03(i4 %x) {1673; CHECK-LABEL: @ashrslt_03_03(1674; CHECK-NEXT:    ret i1 true1675;1676  %s = ashr i4 %x, 31677  %c = icmp slt i4 %s, 31678  ret i1 %c1679}1680 1681define i1 @ashrslt_03_04(i4 %x) {1682; CHECK-LABEL: @ashrslt_03_04(1683; CHECK-NEXT:    ret i1 true1684;1685  %s = ashr i4 %x, 31686  %c = icmp slt i4 %s, 41687  ret i1 %c1688}1689 1690define i1 @ashrslt_03_05(i4 %x) {1691; CHECK-LABEL: @ashrslt_03_05(1692; CHECK-NEXT:    ret i1 true1693;1694  %s = ashr i4 %x, 31695  %c = icmp slt i4 %s, 51696  ret i1 %c1697}1698 1699define i1 @ashrslt_03_06(i4 %x) {1700; CHECK-LABEL: @ashrslt_03_06(1701; CHECK-NEXT:    ret i1 true1702;1703  %s = ashr i4 %x, 31704  %c = icmp slt i4 %s, 61705  ret i1 %c1706}1707 1708define i1 @ashrslt_03_07(i4 %x) {1709; CHECK-LABEL: @ashrslt_03_07(1710; CHECK-NEXT:    ret i1 true1711;1712  %s = ashr i4 %x, 31713  %c = icmp slt i4 %s, 71714  ret i1 %c1715}1716 1717define i1 @ashrslt_03_08(i4 %x) {1718; CHECK-LABEL: @ashrslt_03_08(1719; CHECK-NEXT:    ret i1 false1720;1721  %s = ashr i4 %x, 31722  %c = icmp slt i4 %s, 81723  ret i1 %c1724}1725 1726define i1 @ashrslt_03_09(i4 %x) {1727; CHECK-LABEL: @ashrslt_03_09(1728; CHECK-NEXT:    ret i1 false1729;1730  %s = ashr i4 %x, 31731  %c = icmp slt i4 %s, 91732  ret i1 %c1733}1734 1735define i1 @ashrslt_03_10(i4 %x) {1736; CHECK-LABEL: @ashrslt_03_10(1737; CHECK-NEXT:    ret i1 false1738;1739  %s = ashr i4 %x, 31740  %c = icmp slt i4 %s, 101741  ret i1 %c1742}1743 1744define i1 @ashrslt_03_11(i4 %x) {1745; CHECK-LABEL: @ashrslt_03_11(1746; CHECK-NEXT:    ret i1 false1747;1748  %s = ashr i4 %x, 31749  %c = icmp slt i4 %s, 111750  ret i1 %c1751}1752 1753define i1 @ashrslt_03_12(i4 %x) {1754; CHECK-LABEL: @ashrslt_03_12(1755; CHECK-NEXT:    ret i1 false1756;1757  %s = ashr i4 %x, 31758  %c = icmp slt i4 %s, 121759  ret i1 %c1760}1761 1762define i1 @ashrslt_03_13(i4 %x) {1763; CHECK-LABEL: @ashrslt_03_13(1764; CHECK-NEXT:    ret i1 false1765;1766  %s = ashr i4 %x, 31767  %c = icmp slt i4 %s, 131768  ret i1 %c1769}1770 1771define i1 @ashrslt_03_14(i4 %x) {1772; CHECK-LABEL: @ashrslt_03_14(1773; CHECK-NEXT:    ret i1 false1774;1775  %s = ashr i4 %x, 31776  %c = icmp slt i4 %s, 141777  ret i1 %c1778}1779 1780define i1 @ashrslt_03_15(i4 %x) {1781; CHECK-LABEL: @ashrslt_03_15(1782; CHECK-NEXT:    ret i1 false1783;1784  %s = ashr i4 %x, 31785  %c = icmp slt i4 %s, 151786  ret i1 %c1787}1788 1789define i1 @lshrugt_01_00_exact(i4 %x) {1790; CHECK-LABEL: @lshrugt_01_00_exact(1791; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 [[X:%.*]], 01792; CHECK-NEXT:    ret i1 [[C]]1793;1794  %s = lshr exact i4 %x, 11795  %c = icmp ugt i4 %s, 01796  ret i1 %c1797}1798 1799define i1 @lshrugt_01_01_exact(i4 %x) {1800; CHECK-LABEL: @lshrugt_01_01_exact(1801; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], 21802; CHECK-NEXT:    ret i1 [[C]]1803;1804  %s = lshr exact i4 %x, 11805  %c = icmp ugt i4 %s, 11806  ret i1 %c1807}1808 1809define i1 @lshrugt_01_02_exact(i4 %x) {1810; CHECK-LABEL: @lshrugt_01_02_exact(1811; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], 41812; CHECK-NEXT:    ret i1 [[C]]1813;1814  %s = lshr exact i4 %x, 11815  %c = icmp ugt i4 %s, 21816  ret i1 %c1817}1818 1819define i1 @lshrugt_01_03_exact(i4 %x) {1820; CHECK-LABEL: @lshrugt_01_03_exact(1821; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], 61822; CHECK-NEXT:    ret i1 [[C]]1823;1824  %s = lshr exact i4 %x, 11825  %c = icmp ugt i4 %s, 31826  ret i1 %c1827}1828 1829define i1 @lshrugt_01_04_exact(i4 %x) {1830; CHECK-LABEL: @lshrugt_01_04_exact(1831; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], -81832; CHECK-NEXT:    ret i1 [[C]]1833;1834  %s = lshr exact i4 %x, 11835  %c = icmp ugt i4 %s, 41836  ret i1 %c1837}1838 1839define i1 @lshrugt_01_05_exact(i4 %x) {1840; CHECK-LABEL: @lshrugt_01_05_exact(1841; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], -61842; CHECK-NEXT:    ret i1 [[C]]1843;1844  %s = lshr exact i4 %x, 11845  %c = icmp ugt i4 %s, 51846  ret i1 %c1847}1848 1849define i1 @lshrugt_01_06_exact(i4 %x) {1850; CHECK-LABEL: @lshrugt_01_06_exact(1851; CHECK-NEXT:    [[C:%.*]] = icmp eq i4 [[X:%.*]], -21852; CHECK-NEXT:    ret i1 [[C]]1853;1854  %s = lshr exact i4 %x, 11855  %c = icmp ugt i4 %s, 61856  ret i1 %c1857}1858 1859define i1 @lshrugt_01_07_exact(i4 %x) {1860; CHECK-LABEL: @lshrugt_01_07_exact(1861; CHECK-NEXT:    ret i1 false1862;1863  %s = lshr exact i4 %x, 11864  %c = icmp ugt i4 %s, 71865  ret i1 %c1866}1867 1868define i1 @lshrugt_01_08_exact(i4 %x) {1869; CHECK-LABEL: @lshrugt_01_08_exact(1870; CHECK-NEXT:    ret i1 false1871;1872  %s = lshr exact i4 %x, 11873  %c = icmp ugt i4 %s, 81874  ret i1 %c1875}1876 1877define i1 @lshrugt_01_09_exact(i4 %x) {1878; CHECK-LABEL: @lshrugt_01_09_exact(1879; CHECK-NEXT:    ret i1 false1880;1881  %s = lshr exact i4 %x, 11882  %c = icmp ugt i4 %s, 91883  ret i1 %c1884}1885 1886define i1 @lshrugt_01_10_exact(i4 %x) {1887; CHECK-LABEL: @lshrugt_01_10_exact(1888; CHECK-NEXT:    ret i1 false1889;1890  %s = lshr exact i4 %x, 11891  %c = icmp ugt i4 %s, 101892  ret i1 %c1893}1894 1895define i1 @lshrugt_01_11_exact(i4 %x) {1896; CHECK-LABEL: @lshrugt_01_11_exact(1897; CHECK-NEXT:    ret i1 false1898;1899  %s = lshr exact i4 %x, 11900  %c = icmp ugt i4 %s, 111901  ret i1 %c1902}1903 1904define i1 @lshrugt_01_12_exact(i4 %x) {1905; CHECK-LABEL: @lshrugt_01_12_exact(1906; CHECK-NEXT:    ret i1 false1907;1908  %s = lshr exact i4 %x, 11909  %c = icmp ugt i4 %s, 121910  ret i1 %c1911}1912 1913define i1 @lshrugt_01_13_exact(i4 %x) {1914; CHECK-LABEL: @lshrugt_01_13_exact(1915; CHECK-NEXT:    ret i1 false1916;1917  %s = lshr exact i4 %x, 11918  %c = icmp ugt i4 %s, 131919  ret i1 %c1920}1921 1922define i1 @lshrugt_01_14_exact(i4 %x) {1923; CHECK-LABEL: @lshrugt_01_14_exact(1924; CHECK-NEXT:    ret i1 false1925;1926  %s = lshr exact i4 %x, 11927  %c = icmp ugt i4 %s, 141928  ret i1 %c1929}1930 1931define i1 @lshrugt_01_15_exact(i4 %x) {1932; CHECK-LABEL: @lshrugt_01_15_exact(1933; CHECK-NEXT:    ret i1 false1934;1935  %s = lshr exact i4 %x, 11936  %c = icmp ugt i4 %s, 151937  ret i1 %c1938}1939 1940define i1 @lshrugt_02_00_exact(i4 %x) {1941; CHECK-LABEL: @lshrugt_02_00_exact(1942; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 [[X:%.*]], 01943; CHECK-NEXT:    ret i1 [[C]]1944;1945  %s = lshr exact i4 %x, 21946  %c = icmp ugt i4 %s, 01947  ret i1 %c1948}1949 1950define i1 @lshrugt_02_01_exact(i4 %x) {1951; CHECK-LABEL: @lshrugt_02_01_exact(1952; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 [[X:%.*]], 41953; CHECK-NEXT:    ret i1 [[C]]1954;1955  %s = lshr exact i4 %x, 21956  %c = icmp ugt i4 %s, 11957  ret i1 %c1958}1959 1960define i1 @lshrugt_02_02_exact(i4 %x) {1961; CHECK-LABEL: @lshrugt_02_02_exact(1962; CHECK-NEXT:    [[C:%.*]] = icmp eq i4 [[X:%.*]], -41963; CHECK-NEXT:    ret i1 [[C]]1964;1965  %s = lshr exact i4 %x, 21966  %c = icmp ugt i4 %s, 21967  ret i1 %c1968}1969 1970define i1 @lshrugt_02_03_exact(i4 %x) {1971; CHECK-LABEL: @lshrugt_02_03_exact(1972; CHECK-NEXT:    ret i1 false1973;1974  %s = lshr exact i4 %x, 21975  %c = icmp ugt i4 %s, 31976  ret i1 %c1977}1978 1979define i1 @lshrugt_02_04_exact(i4 %x) {1980; CHECK-LABEL: @lshrugt_02_04_exact(1981; CHECK-NEXT:    ret i1 false1982;1983  %s = lshr exact i4 %x, 21984  %c = icmp ugt i4 %s, 41985  ret i1 %c1986}1987 1988define i1 @lshrugt_02_05_exact(i4 %x) {1989; CHECK-LABEL: @lshrugt_02_05_exact(1990; CHECK-NEXT:    ret i1 false1991;1992  %s = lshr exact i4 %x, 21993  %c = icmp ugt i4 %s, 51994  ret i1 %c1995}1996 1997define i1 @lshrugt_02_06_exact(i4 %x) {1998; CHECK-LABEL: @lshrugt_02_06_exact(1999; CHECK-NEXT:    ret i1 false2000;2001  %s = lshr exact i4 %x, 22002  %c = icmp ugt i4 %s, 62003  ret i1 %c2004}2005 2006define i1 @lshrugt_02_07_exact(i4 %x) {2007; CHECK-LABEL: @lshrugt_02_07_exact(2008; CHECK-NEXT:    ret i1 false2009;2010  %s = lshr exact i4 %x, 22011  %c = icmp ugt i4 %s, 72012  ret i1 %c2013}2014 2015define i1 @lshrugt_02_08_exact(i4 %x) {2016; CHECK-LABEL: @lshrugt_02_08_exact(2017; CHECK-NEXT:    ret i1 false2018;2019  %s = lshr exact i4 %x, 22020  %c = icmp ugt i4 %s, 82021  ret i1 %c2022}2023 2024define i1 @lshrugt_02_09_exact(i4 %x) {2025; CHECK-LABEL: @lshrugt_02_09_exact(2026; CHECK-NEXT:    ret i1 false2027;2028  %s = lshr exact i4 %x, 22029  %c = icmp ugt i4 %s, 92030  ret i1 %c2031}2032 2033define i1 @lshrugt_02_10_exact(i4 %x) {2034; CHECK-LABEL: @lshrugt_02_10_exact(2035; CHECK-NEXT:    ret i1 false2036;2037  %s = lshr exact i4 %x, 22038  %c = icmp ugt i4 %s, 102039  ret i1 %c2040}2041 2042define i1 @lshrugt_02_11_exact(i4 %x) {2043; CHECK-LABEL: @lshrugt_02_11_exact(2044; CHECK-NEXT:    ret i1 false2045;2046  %s = lshr exact i4 %x, 22047  %c = icmp ugt i4 %s, 112048  ret i1 %c2049}2050 2051define i1 @lshrugt_02_12_exact(i4 %x) {2052; CHECK-LABEL: @lshrugt_02_12_exact(2053; CHECK-NEXT:    ret i1 false2054;2055  %s = lshr exact i4 %x, 22056  %c = icmp ugt i4 %s, 122057  ret i1 %c2058}2059 2060define i1 @lshrugt_02_13_exact(i4 %x) {2061; CHECK-LABEL: @lshrugt_02_13_exact(2062; CHECK-NEXT:    ret i1 false2063;2064  %s = lshr exact i4 %x, 22065  %c = icmp ugt i4 %s, 132066  ret i1 %c2067}2068 2069define i1 @lshrugt_02_14_exact(i4 %x) {2070; CHECK-LABEL: @lshrugt_02_14_exact(2071; CHECK-NEXT:    ret i1 false2072;2073  %s = lshr exact i4 %x, 22074  %c = icmp ugt i4 %s, 142075  ret i1 %c2076}2077 2078define i1 @lshrugt_02_15_exact(i4 %x) {2079; CHECK-LABEL: @lshrugt_02_15_exact(2080; CHECK-NEXT:    ret i1 false2081;2082  %s = lshr exact i4 %x, 22083  %c = icmp ugt i4 %s, 152084  ret i1 %c2085}2086 2087define i1 @lshrugt_03_00_exact(i4 %x) {2088; CHECK-LABEL: @lshrugt_03_00_exact(2089; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 [[X:%.*]], 02090; CHECK-NEXT:    ret i1 [[C]]2091;2092  %s = lshr exact i4 %x, 32093  %c = icmp ugt i4 %s, 02094  ret i1 %c2095}2096 2097define i1 @lshrugt_03_01_exact(i4 %x) {2098; CHECK-LABEL: @lshrugt_03_01_exact(2099; CHECK-NEXT:    ret i1 false2100;2101  %s = lshr exact i4 %x, 32102  %c = icmp ugt i4 %s, 12103  ret i1 %c2104}2105 2106define i1 @lshrugt_03_02_exact(i4 %x) {2107; CHECK-LABEL: @lshrugt_03_02_exact(2108; CHECK-NEXT:    ret i1 false2109;2110  %s = lshr exact i4 %x, 32111  %c = icmp ugt i4 %s, 22112  ret i1 %c2113}2114 2115define i1 @lshrugt_03_03_exact(i4 %x) {2116; CHECK-LABEL: @lshrugt_03_03_exact(2117; CHECK-NEXT:    ret i1 false2118;2119  %s = lshr exact i4 %x, 32120  %c = icmp ugt i4 %s, 32121  ret i1 %c2122}2123 2124define i1 @lshrugt_03_04_exact(i4 %x) {2125; CHECK-LABEL: @lshrugt_03_04_exact(2126; CHECK-NEXT:    ret i1 false2127;2128  %s = lshr exact i4 %x, 32129  %c = icmp ugt i4 %s, 42130  ret i1 %c2131}2132 2133define i1 @lshrugt_03_05_exact(i4 %x) {2134; CHECK-LABEL: @lshrugt_03_05_exact(2135; CHECK-NEXT:    ret i1 false2136;2137  %s = lshr exact i4 %x, 32138  %c = icmp ugt i4 %s, 52139  ret i1 %c2140}2141 2142define i1 @lshrugt_03_06_exact(i4 %x) {2143; CHECK-LABEL: @lshrugt_03_06_exact(2144; CHECK-NEXT:    ret i1 false2145;2146  %s = lshr exact i4 %x, 32147  %c = icmp ugt i4 %s, 62148  ret i1 %c2149}2150 2151define i1 @lshrugt_03_07_exact(i4 %x) {2152; CHECK-LABEL: @lshrugt_03_07_exact(2153; CHECK-NEXT:    ret i1 false2154;2155  %s = lshr exact i4 %x, 32156  %c = icmp ugt i4 %s, 72157  ret i1 %c2158}2159 2160define i1 @lshrugt_03_08_exact(i4 %x) {2161; CHECK-LABEL: @lshrugt_03_08_exact(2162; CHECK-NEXT:    ret i1 false2163;2164  %s = lshr exact i4 %x, 32165  %c = icmp ugt i4 %s, 82166  ret i1 %c2167}2168 2169define i1 @lshrugt_03_09_exact(i4 %x) {2170; CHECK-LABEL: @lshrugt_03_09_exact(2171; CHECK-NEXT:    ret i1 false2172;2173  %s = lshr exact i4 %x, 32174  %c = icmp ugt i4 %s, 92175  ret i1 %c2176}2177 2178define i1 @lshrugt_03_10_exact(i4 %x) {2179; CHECK-LABEL: @lshrugt_03_10_exact(2180; CHECK-NEXT:    ret i1 false2181;2182  %s = lshr exact i4 %x, 32183  %c = icmp ugt i4 %s, 102184  ret i1 %c2185}2186 2187define i1 @lshrugt_03_11_exact(i4 %x) {2188; CHECK-LABEL: @lshrugt_03_11_exact(2189; CHECK-NEXT:    ret i1 false2190;2191  %s = lshr exact i4 %x, 32192  %c = icmp ugt i4 %s, 112193  ret i1 %c2194}2195 2196define i1 @lshrugt_03_12_exact(i4 %x) {2197; CHECK-LABEL: @lshrugt_03_12_exact(2198; CHECK-NEXT:    ret i1 false2199;2200  %s = lshr exact i4 %x, 32201  %c = icmp ugt i4 %s, 122202  ret i1 %c2203}2204 2205define i1 @lshrugt_03_13_exact(i4 %x) {2206; CHECK-LABEL: @lshrugt_03_13_exact(2207; CHECK-NEXT:    ret i1 false2208;2209  %s = lshr exact i4 %x, 32210  %c = icmp ugt i4 %s, 132211  ret i1 %c2212}2213 2214define i1 @lshrugt_03_14_exact(i4 %x) {2215; CHECK-LABEL: @lshrugt_03_14_exact(2216; CHECK-NEXT:    ret i1 false2217;2218  %s = lshr exact i4 %x, 32219  %c = icmp ugt i4 %s, 142220  ret i1 %c2221}2222 2223define i1 @lshrugt_03_15_exact(i4 %x) {2224; CHECK-LABEL: @lshrugt_03_15_exact(2225; CHECK-NEXT:    ret i1 false2226;2227  %s = lshr exact i4 %x, 32228  %c = icmp ugt i4 %s, 152229  ret i1 %c2230}2231 2232define i1 @ashr_eq_exact(i8 %x) {2233; CHECK-LABEL: @ashr_eq_exact(2234; CHECK-NEXT:    [[C:%.*]] = icmp eq i8 [[X:%.*]], 802235; CHECK-NEXT:    ret i1 [[C]]2236;2237  %s = ashr exact i8 %x, 32238  %c = icmp eq i8 %s, 102239  ret i1 %c2240}2241 2242define i1 @ashr_ne_exact(i8 %x) {2243; CHECK-LABEL: @ashr_ne_exact(2244; CHECK-NEXT:    [[C:%.*]] = icmp ne i8 [[X:%.*]], 802245; CHECK-NEXT:    ret i1 [[C]]2246;2247  %s = ashr exact i8 %x, 32248  %c = icmp ne i8 %s, 102249  ret i1 %c2250}2251 2252define i1 @ashr_ugt_exact(i8 %x) {2253; CHECK-LABEL: @ashr_ugt_exact(2254; CHECK-NEXT:    [[C:%.*]] = icmp ugt i8 [[X:%.*]], 802255; CHECK-NEXT:    ret i1 [[C]]2256;2257  %s = ashr exact i8 %x, 32258  %c = icmp ugt i8 %s, 102259  ret i1 %c2260}2261 2262 2263define i1 @ashr_uge_exact(i8 %x) {2264; CHECK-LABEL: @ashr_uge_exact(2265; CHECK-NEXT:    [[C:%.*]] = icmp ugt i8 [[X:%.*]], 722266; CHECK-NEXT:    ret i1 [[C]]2267;2268  %s = ashr exact i8 %x, 32269  %c = icmp uge i8 %s, 102270  ret i1 %c2271}2272 2273define i1 @ashr_ult_exact(i8 %x) {2274; CHECK-LABEL: @ashr_ult_exact(2275; CHECK-NEXT:    [[C:%.*]] = icmp ult i8 [[X:%.*]], 802276; CHECK-NEXT:    ret i1 [[C]]2277;2278  %s = ashr exact i8 %x, 32279  %c = icmp ult i8 %s, 102280  ret i1 %c2281}2282 2283 2284define i1 @ashr_ule_exact(i8 %x) {2285; CHECK-LABEL: @ashr_ule_exact(2286; CHECK-NEXT:    [[C:%.*]] = icmp ult i8 [[X:%.*]], 882287; CHECK-NEXT:    ret i1 [[C]]2288;2289  %s = ashr exact i8 %x, 32290  %c = icmp ule i8 %s, 102291  ret i1 %c2292}2293 2294 2295define i1 @ashr_sgt_exact(i8 %x) {2296; CHECK-LABEL: @ashr_sgt_exact(2297; CHECK-NEXT:    [[C:%.*]] = icmp sgt i8 [[X:%.*]], 802298; CHECK-NEXT:    ret i1 [[C]]2299;2300  %s = ashr exact i8 %x, 32301  %c = icmp sgt i8 %s, 102302  ret i1 %c2303}2304 2305 2306define i1 @ashr_sge_exact(i8 %x) {2307; CHECK-LABEL: @ashr_sge_exact(2308; CHECK-NEXT:    [[C:%.*]] = icmp sgt i8 [[X:%.*]], 722309; CHECK-NEXT:    ret i1 [[C]]2310;2311  %s = ashr exact i8 %x, 32312  %c = icmp sge i8 %s, 102313  ret i1 %c2314}2315 2316define i1 @ashr_slt_exact(i8 %x) {2317; CHECK-LABEL: @ashr_slt_exact(2318; CHECK-NEXT:    [[C:%.*]] = icmp slt i8 [[X:%.*]], 802319; CHECK-NEXT:    ret i1 [[C]]2320;2321  %s = ashr exact i8 %x, 32322  %c = icmp slt i8 %s, 102323  ret i1 %c2324}2325 2326define i1 @ashr_sle_exact(i8 %x) {2327; CHECK-LABEL: @ashr_sle_exact(2328; CHECK-NEXT:    [[C:%.*]] = icmp slt i8 [[X:%.*]], 882329; CHECK-NEXT:    ret i1 [[C]]2330;2331  %s = ashr exact i8 %x, 32332  %c = icmp sle i8 %s, 102333  ret i1 %c2334}2335 2336define i1 @ashr_eq_noexact(i8 %x) {2337; CHECK-LABEL: @ashr_eq_noexact(2338; CHECK-NEXT:    [[S_MASK:%.*]] = and i8 [[X:%.*]], -82339; CHECK-NEXT:    [[C:%.*]] = icmp eq i8 [[S_MASK]], 802340; CHECK-NEXT:    ret i1 [[C]]2341;2342  %s = ashr i8 %x, 32343  %c = icmp eq i8 %s, 102344  ret i1 %c2345}2346 2347define i1 @ashr_ne_noexact(i8 %x) {2348; CHECK-LABEL: @ashr_ne_noexact(2349; CHECK-NEXT:    [[S_MASK:%.*]] = and i8 [[X:%.*]], -82350; CHECK-NEXT:    [[C:%.*]] = icmp ne i8 [[S_MASK]], 802351; CHECK-NEXT:    ret i1 [[C]]2352;2353  %s = ashr i8 %x, 32354  %c = icmp ne i8 %s, 102355  ret i1 %c2356}2357 2358define i1 @ashr_ugt_noexact(i8 %x) {2359; CHECK-LABEL: @ashr_ugt_noexact(2360; CHECK-NEXT:    [[C:%.*]] = icmp ugt i8 [[X:%.*]], 872361; CHECK-NEXT:    ret i1 [[C]]2362;2363  %s = ashr i8 %x, 32364  %c = icmp ugt i8 %s, 102365  ret i1 %c2366}2367 2368 2369define i1 @ashr_uge_noexact(i8 %x) {2370; CHECK-LABEL: @ashr_uge_noexact(2371; CHECK-NEXT:    [[C:%.*]] = icmp ugt i8 [[X:%.*]], 792372; CHECK-NEXT:    ret i1 [[C]]2373;2374  %s = ashr i8 %x, 32375  %c = icmp uge i8 %s, 102376  ret i1 %c2377}2378 2379define i1 @ashr_ult_noexact(i8 %x) {2380; CHECK-LABEL: @ashr_ult_noexact(2381; CHECK-NEXT:    [[C:%.*]] = icmp ult i8 [[X:%.*]], 802382; CHECK-NEXT:    ret i1 [[C]]2383;2384  %s = ashr i8 %x, 32385  %c = icmp ult i8 %s, 102386  ret i1 %c2387}2388 2389 2390define i1 @ashr_ule_noexact(i8 %x) {2391; CHECK-LABEL: @ashr_ule_noexact(2392; CHECK-NEXT:    [[C:%.*]] = icmp ult i8 [[X:%.*]], 882393; CHECK-NEXT:    ret i1 [[C]]2394;2395  %s = ashr i8 %x, 32396  %c = icmp ule i8 %s, 102397  ret i1 %c2398}2399 2400 2401define i1 @ashr_sgt_noexact(i8 %x) {2402; CHECK-LABEL: @ashr_sgt_noexact(2403; CHECK-NEXT:    [[C:%.*]] = icmp sgt i8 [[X:%.*]], 872404; CHECK-NEXT:    ret i1 [[C]]2405;2406  %s = ashr i8 %x, 32407  %c = icmp sgt i8 %s, 102408  ret i1 %c2409}2410 2411 2412define i1 @ashr_sge_noexact(i8 %x) {2413; CHECK-LABEL: @ashr_sge_noexact(2414; CHECK-NEXT:    [[C:%.*]] = icmp sgt i8 [[X:%.*]], 792415; CHECK-NEXT:    ret i1 [[C]]2416;2417  %s = ashr i8 %x, 32418  %c = icmp sge i8 %s, 102419  ret i1 %c2420}2421 2422define i1 @ashr_slt_noexact(i8 %x) {2423; CHECK-LABEL: @ashr_slt_noexact(2424; CHECK-NEXT:    [[C:%.*]] = icmp slt i8 [[X:%.*]], 802425; CHECK-NEXT:    ret i1 [[C]]2426;2427  %s = ashr i8 %x, 32428  %c = icmp slt i8 %s, 102429  ret i1 %c2430}2431 2432define i1 @ashr_sle_noexact(i8 %x) {2433; CHECK-LABEL: @ashr_sle_noexact(2434; CHECK-NEXT:    [[C:%.*]] = icmp slt i8 [[X:%.*]], 882435; CHECK-NEXT:    ret i1 [[C]]2436;2437  %s = ashr i8 %x, 32438  %c = icmp sle i8 %s, 102439  ret i1 %c2440}2441 2442define i1 @ashr_00_00_ashr_extra_use(i8 %x, ptr %ptr) {2443; CHECK-LABEL: @ashr_00_00_ashr_extra_use(2444; CHECK-NEXT:    [[S:%.*]] = ashr exact i8 [[X:%.*]], 32445; CHECK-NEXT:    [[C:%.*]] = icmp ult i8 [[S]], 112446; CHECK-NEXT:    store i8 [[S]], ptr [[PTR:%.*]], align 12447; CHECK-NEXT:    ret i1 [[C]]2448;2449  %s = ashr exact i8 %x, 32450  %c = icmp ule i8 %s, 102451  store i8 %s, ptr %ptr2452  ret i1 %c2453}2454 2455define <4 x i1> @ashr_00_00_vec(<4 x i8> %x) {2456; CHECK-LABEL: @ashr_00_00_vec(2457; CHECK-NEXT:    [[C:%.*]] = icmp ult <4 x i8> [[X:%.*]], splat (i8 88)2458; CHECK-NEXT:    ret <4 x i1> [[C]]2459;2460  %s = ashr exact <4 x i8> %x, <i8 3,i8 3, i8 3, i8 3>2461  %c = icmp ule <4 x i8> %s, <i8 10,i8 10,i8 10,i8 10>2462  ret <4 x i1> %c2463}2464 2465define i1 @ashr_sgt_overflow(i8 %x) {2466; CHECK-LABEL: @ashr_sgt_overflow(2467; CHECK-NEXT:    ret i1 false2468;2469  %s = ashr i8 %x, 12470  %c = icmp sgt i8 %s, 632471  ret i1 %c2472}2473 2474define i1 @lshrult_01_00_exact(i4 %x) {2475; CHECK-LABEL: @lshrult_01_00_exact(2476; CHECK-NEXT:    ret i1 false2477;2478  %s = lshr exact i4 %x, 12479  %c = icmp ult i4 %s, 02480  ret i1 %c2481}2482 2483define i1 @lshrult_01_01_exact(i4 %x) {2484; CHECK-LABEL: @lshrult_01_01_exact(2485; CHECK-NEXT:    [[C:%.*]] = icmp eq i4 [[X:%.*]], 02486; CHECK-NEXT:    ret i1 [[C]]2487;2488  %s = lshr exact i4 %x, 12489  %c = icmp ult i4 %s, 12490  ret i1 %c2491}2492 2493define i1 @lshrult_01_02_exact(i4 %x) {2494; CHECK-LABEL: @lshrult_01_02_exact(2495; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 [[X:%.*]], 42496; CHECK-NEXT:    ret i1 [[C]]2497;2498  %s = lshr exact i4 %x, 12499  %c = icmp ult i4 %s, 22500  ret i1 %c2501}2502 2503define i1 @lshrult_01_03_exact(i4 %x) {2504; CHECK-LABEL: @lshrult_01_03_exact(2505; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 [[X:%.*]], 62506; CHECK-NEXT:    ret i1 [[C]]2507;2508  %s = lshr exact i4 %x, 12509  %c = icmp ult i4 %s, 32510  ret i1 %c2511}2512 2513define i1 @lshrult_01_04_exact(i4 %x) {2514; CHECK-LABEL: @lshrult_01_04_exact(2515; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -12516; CHECK-NEXT:    ret i1 [[C]]2517;2518  %s = lshr exact i4 %x, 12519  %c = icmp ult i4 %s, 42520  ret i1 %c2521}2522 2523define i1 @lshrult_01_05_exact(i4 %x) {2524; CHECK-LABEL: @lshrult_01_05_exact(2525; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 [[X:%.*]], -62526; CHECK-NEXT:    ret i1 [[C]]2527;2528  %s = lshr exact i4 %x, 12529  %c = icmp ult i4 %s, 52530  ret i1 %c2531}2532 2533define i1 @lshrult_01_06_exact(i4 %x) {2534; CHECK-LABEL: @lshrult_01_06_exact(2535; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 [[X:%.*]], -42536; CHECK-NEXT:    ret i1 [[C]]2537;2538  %s = lshr exact i4 %x, 12539  %c = icmp ult i4 %s, 62540  ret i1 %c2541}2542 2543define i1 @lshrult_01_07_exact(i4 %x) {2544; CHECK-LABEL: @lshrult_01_07_exact(2545; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 [[X:%.*]], -22546; CHECK-NEXT:    ret i1 [[C]]2547;2548  %s = lshr exact i4 %x, 12549  %c = icmp ult i4 %s, 72550  ret i1 %c2551}2552 2553define i1 @lshrult_01_08_exact(i4 %x) {2554; CHECK-LABEL: @lshrult_01_08_exact(2555; CHECK-NEXT:    ret i1 true2556;2557  %s = lshr exact i4 %x, 12558  %c = icmp ult i4 %s, 82559  ret i1 %c2560}2561 2562define i1 @lshrult_01_09_exact(i4 %x) {2563; CHECK-LABEL: @lshrult_01_09_exact(2564; CHECK-NEXT:    ret i1 true2565;2566  %s = lshr exact i4 %x, 12567  %c = icmp ult i4 %s, 92568  ret i1 %c2569}2570 2571define i1 @lshrult_01_10_exact(i4 %x) {2572; CHECK-LABEL: @lshrult_01_10_exact(2573; CHECK-NEXT:    ret i1 true2574;2575  %s = lshr exact i4 %x, 12576  %c = icmp ult i4 %s, 102577  ret i1 %c2578}2579 2580define i1 @lshrult_01_11_exact(i4 %x) {2581; CHECK-LABEL: @lshrult_01_11_exact(2582; CHECK-NEXT:    ret i1 true2583;2584  %s = lshr exact i4 %x, 12585  %c = icmp ult i4 %s, 112586  ret i1 %c2587}2588 2589define i1 @lshrult_01_12_exact(i4 %x) {2590; CHECK-LABEL: @lshrult_01_12_exact(2591; CHECK-NEXT:    ret i1 true2592;2593  %s = lshr exact i4 %x, 12594  %c = icmp ult i4 %s, 122595  ret i1 %c2596}2597 2598define i1 @lshrult_01_13_exact(i4 %x) {2599; CHECK-LABEL: @lshrult_01_13_exact(2600; CHECK-NEXT:    ret i1 true2601;2602  %s = lshr exact i4 %x, 12603  %c = icmp ult i4 %s, 132604  ret i1 %c2605}2606 2607define i1 @lshrult_01_14_exact(i4 %x) {2608; CHECK-LABEL: @lshrult_01_14_exact(2609; CHECK-NEXT:    ret i1 true2610;2611  %s = lshr exact i4 %x, 12612  %c = icmp ult i4 %s, 142613  ret i1 %c2614}2615 2616define i1 @lshrult_01_15_exact(i4 %x) {2617; CHECK-LABEL: @lshrult_01_15_exact(2618; CHECK-NEXT:    ret i1 true2619;2620  %s = lshr exact i4 %x, 12621  %c = icmp ult i4 %s, 152622  ret i1 %c2623}2624 2625define i1 @lshrult_02_00_exact(i4 %x) {2626; CHECK-LABEL: @lshrult_02_00_exact(2627; CHECK-NEXT:    ret i1 false2628;2629  %s = lshr exact i4 %x, 22630  %c = icmp ult i4 %s, 02631  ret i1 %c2632}2633 2634define i1 @lshrult_02_01_exact(i4 %x) {2635; CHECK-LABEL: @lshrult_02_01_exact(2636; CHECK-NEXT:    [[C:%.*]] = icmp eq i4 [[X:%.*]], 02637; CHECK-NEXT:    ret i1 [[C]]2638;2639  %s = lshr exact i4 %x, 22640  %c = icmp ult i4 %s, 12641  ret i1 %c2642}2643 2644define i1 @lshrult_02_02_exact(i4 %x) {2645; CHECK-LABEL: @lshrult_02_02_exact(2646; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -12647; CHECK-NEXT:    ret i1 [[C]]2648;2649  %s = lshr exact i4 %x, 22650  %c = icmp ult i4 %s, 22651  ret i1 %c2652}2653 2654define i1 @lshrult_02_03_exact(i4 %x) {2655; CHECK-LABEL: @lshrult_02_03_exact(2656; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 [[X:%.*]], -42657; CHECK-NEXT:    ret i1 [[C]]2658;2659  %s = lshr exact i4 %x, 22660  %c = icmp ult i4 %s, 32661  ret i1 %c2662}2663 2664define i1 @lshrult_02_04_exact(i4 %x) {2665; CHECK-LABEL: @lshrult_02_04_exact(2666; CHECK-NEXT:    ret i1 true2667;2668  %s = lshr exact i4 %x, 22669  %c = icmp ult i4 %s, 42670  ret i1 %c2671}2672 2673define i1 @lshrult_02_05_exact(i4 %x) {2674; CHECK-LABEL: @lshrult_02_05_exact(2675; CHECK-NEXT:    ret i1 true2676;2677  %s = lshr exact i4 %x, 22678  %c = icmp ult i4 %s, 52679  ret i1 %c2680}2681 2682define i1 @lshrult_02_06_exact(i4 %x) {2683; CHECK-LABEL: @lshrult_02_06_exact(2684; CHECK-NEXT:    ret i1 true2685;2686  %s = lshr exact i4 %x, 22687  %c = icmp ult i4 %s, 62688  ret i1 %c2689}2690 2691define i1 @lshrult_02_07_exact(i4 %x) {2692; CHECK-LABEL: @lshrult_02_07_exact(2693; CHECK-NEXT:    ret i1 true2694;2695  %s = lshr exact i4 %x, 22696  %c = icmp ult i4 %s, 72697  ret i1 %c2698}2699 2700define i1 @lshrult_02_08_exact(i4 %x) {2701; CHECK-LABEL: @lshrult_02_08_exact(2702; CHECK-NEXT:    ret i1 true2703;2704  %s = lshr exact i4 %x, 22705  %c = icmp ult i4 %s, 82706  ret i1 %c2707}2708 2709define i1 @lshrult_02_09_exact(i4 %x) {2710; CHECK-LABEL: @lshrult_02_09_exact(2711; CHECK-NEXT:    ret i1 true2712;2713  %s = lshr exact i4 %x, 22714  %c = icmp ult i4 %s, 92715  ret i1 %c2716}2717 2718define i1 @lshrult_02_10_exact(i4 %x) {2719; CHECK-LABEL: @lshrult_02_10_exact(2720; CHECK-NEXT:    ret i1 true2721;2722  %s = lshr exact i4 %x, 22723  %c = icmp ult i4 %s, 102724  ret i1 %c2725}2726 2727define i1 @lshrult_02_11_exact(i4 %x) {2728; CHECK-LABEL: @lshrult_02_11_exact(2729; CHECK-NEXT:    ret i1 true2730;2731  %s = lshr exact i4 %x, 22732  %c = icmp ult i4 %s, 112733  ret i1 %c2734}2735 2736define i1 @lshrult_02_12_exact(i4 %x) {2737; CHECK-LABEL: @lshrult_02_12_exact(2738; CHECK-NEXT:    ret i1 true2739;2740  %s = lshr exact i4 %x, 22741  %c = icmp ult i4 %s, 122742  ret i1 %c2743}2744 2745define i1 @lshrult_02_13_exact(i4 %x) {2746; CHECK-LABEL: @lshrult_02_13_exact(2747; CHECK-NEXT:    ret i1 true2748;2749  %s = lshr exact i4 %x, 22750  %c = icmp ult i4 %s, 132751  ret i1 %c2752}2753 2754define i1 @lshrult_02_14_exact(i4 %x) {2755; CHECK-LABEL: @lshrult_02_14_exact(2756; CHECK-NEXT:    ret i1 true2757;2758  %s = lshr exact i4 %x, 22759  %c = icmp ult i4 %s, 142760  ret i1 %c2761}2762 2763define i1 @lshrult_02_15_exact(i4 %x) {2764; CHECK-LABEL: @lshrult_02_15_exact(2765; CHECK-NEXT:    ret i1 true2766;2767  %s = lshr exact i4 %x, 22768  %c = icmp ult i4 %s, 152769  ret i1 %c2770}2771 2772define i1 @lshrult_03_00_exact(i4 %x) {2773; CHECK-LABEL: @lshrult_03_00_exact(2774; CHECK-NEXT:    ret i1 false2775;2776  %s = lshr exact i4 %x, 32777  %c = icmp ult i4 %s, 02778  ret i1 %c2779}2780 2781define i1 @lshrult_03_01_exact(i4 %x) {2782; CHECK-LABEL: @lshrult_03_01_exact(2783; CHECK-NEXT:    [[C:%.*]] = icmp eq i4 [[X:%.*]], 02784; CHECK-NEXT:    ret i1 [[C]]2785;2786  %s = lshr exact i4 %x, 32787  %c = icmp ult i4 %s, 12788  ret i1 %c2789}2790 2791define i1 @lshrult_03_02_exact(i4 %x) {2792; CHECK-LABEL: @lshrult_03_02_exact(2793; CHECK-NEXT:    ret i1 true2794;2795  %s = lshr exact i4 %x, 32796  %c = icmp ult i4 %s, 22797  ret i1 %c2798}2799 2800define i1 @lshrult_03_03_exact(i4 %x) {2801; CHECK-LABEL: @lshrult_03_03_exact(2802; CHECK-NEXT:    ret i1 true2803;2804  %s = lshr exact i4 %x, 32805  %c = icmp ult i4 %s, 32806  ret i1 %c2807}2808 2809define i1 @lshrult_03_04_exact(i4 %x) {2810; CHECK-LABEL: @lshrult_03_04_exact(2811; CHECK-NEXT:    ret i1 true2812;2813  %s = lshr exact i4 %x, 32814  %c = icmp ult i4 %s, 42815  ret i1 %c2816}2817 2818define i1 @lshrult_03_05_exact(i4 %x) {2819; CHECK-LABEL: @lshrult_03_05_exact(2820; CHECK-NEXT:    ret i1 true2821;2822  %s = lshr exact i4 %x, 32823  %c = icmp ult i4 %s, 52824  ret i1 %c2825}2826 2827define i1 @lshrult_03_06_exact(i4 %x) {2828; CHECK-LABEL: @lshrult_03_06_exact(2829; CHECK-NEXT:    ret i1 true2830;2831  %s = lshr exact i4 %x, 32832  %c = icmp ult i4 %s, 62833  ret i1 %c2834}2835 2836define i1 @lshrult_03_07_exact(i4 %x) {2837; CHECK-LABEL: @lshrult_03_07_exact(2838; CHECK-NEXT:    ret i1 true2839;2840  %s = lshr exact i4 %x, 32841  %c = icmp ult i4 %s, 72842  ret i1 %c2843}2844 2845define i1 @lshrult_03_08_exact(i4 %x) {2846; CHECK-LABEL: @lshrult_03_08_exact(2847; CHECK-NEXT:    ret i1 true2848;2849  %s = lshr exact i4 %x, 32850  %c = icmp ult i4 %s, 82851  ret i1 %c2852}2853 2854define i1 @lshrult_03_09_exact(i4 %x) {2855; CHECK-LABEL: @lshrult_03_09_exact(2856; CHECK-NEXT:    ret i1 true2857;2858  %s = lshr exact i4 %x, 32859  %c = icmp ult i4 %s, 92860  ret i1 %c2861}2862 2863define i1 @lshrult_03_10_exact(i4 %x) {2864; CHECK-LABEL: @lshrult_03_10_exact(2865; CHECK-NEXT:    ret i1 true2866;2867  %s = lshr exact i4 %x, 32868  %c = icmp ult i4 %s, 102869  ret i1 %c2870}2871 2872define i1 @lshrult_03_11_exact(i4 %x) {2873; CHECK-LABEL: @lshrult_03_11_exact(2874; CHECK-NEXT:    ret i1 true2875;2876  %s = lshr exact i4 %x, 32877  %c = icmp ult i4 %s, 112878  ret i1 %c2879}2880 2881define i1 @lshrult_03_12_exact(i4 %x) {2882; CHECK-LABEL: @lshrult_03_12_exact(2883; CHECK-NEXT:    ret i1 true2884;2885  %s = lshr exact i4 %x, 32886  %c = icmp ult i4 %s, 122887  ret i1 %c2888}2889 2890define i1 @lshrult_03_13_exact(i4 %x) {2891; CHECK-LABEL: @lshrult_03_13_exact(2892; CHECK-NEXT:    ret i1 true2893;2894  %s = lshr exact i4 %x, 32895  %c = icmp ult i4 %s, 132896  ret i1 %c2897}2898 2899define i1 @lshrult_03_14_exact(i4 %x) {2900; CHECK-LABEL: @lshrult_03_14_exact(2901; CHECK-NEXT:    ret i1 true2902;2903  %s = lshr exact i4 %x, 32904  %c = icmp ult i4 %s, 142905  ret i1 %c2906}2907 2908define i1 @lshrult_03_15_exact(i4 %x) {2909; CHECK-LABEL: @lshrult_03_15_exact(2910; CHECK-NEXT:    ret i1 true2911;2912  %s = lshr exact i4 %x, 32913  %c = icmp ult i4 %s, 152914  ret i1 %c2915}2916 2917define i1 @ashrsgt_01_00_exact(i4 %x) {2918; CHECK-LABEL: @ashrsgt_01_00_exact(2919; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], 02920; CHECK-NEXT:    ret i1 [[C]]2921;2922  %s = ashr exact i4 %x, 12923  %c = icmp sgt i4 %s, 02924  ret i1 %c2925}2926 2927define i1 @ashrsgt_01_01_exact(i4 %x) {2928; CHECK-LABEL: @ashrsgt_01_01_exact(2929; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], 22930; CHECK-NEXT:    ret i1 [[C]]2931;2932  %s = ashr exact i4 %x, 12933  %c = icmp sgt i4 %s, 12934  ret i1 %c2935}2936 2937define i1 @ashrsgt_01_02_exact(i4 %x) {2938; CHECK-LABEL: @ashrsgt_01_02_exact(2939; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], 42940; CHECK-NEXT:    ret i1 [[C]]2941;2942  %s = ashr exact i4 %x, 12943  %c = icmp sgt i4 %s, 22944  ret i1 %c2945}2946 2947define i1 @ashrsgt_01_03_exact(i4 %x) {2948; CHECK-LABEL: @ashrsgt_01_03_exact(2949; CHECK-NEXT:    ret i1 false2950;2951  %s = ashr exact i4 %x, 12952  %c = icmp sgt i4 %s, 32953  ret i1 %c2954}2955 2956define i1 @ashrsgt_01_04_exact(i4 %x) {2957; CHECK-LABEL: @ashrsgt_01_04_exact(2958; CHECK-NEXT:    ret i1 false2959;2960  %s = ashr exact i4 %x, 12961  %c = icmp sgt i4 %s, 42962  ret i1 %c2963}2964 2965define i1 @ashrsgt_01_05_exact(i4 %x) {2966; CHECK-LABEL: @ashrsgt_01_05_exact(2967; CHECK-NEXT:    ret i1 false2968;2969  %s = ashr exact i4 %x, 12970  %c = icmp sgt i4 %s, 52971  ret i1 %c2972}2973 2974define i1 @ashrsgt_01_06_exact(i4 %x) {2975; CHECK-LABEL: @ashrsgt_01_06_exact(2976; CHECK-NEXT:    ret i1 false2977;2978  %s = ashr exact i4 %x, 12979  %c = icmp sgt i4 %s, 62980  ret i1 %c2981}2982 2983define i1 @ashrsgt_01_07_exact(i4 %x) {2984; CHECK-LABEL: @ashrsgt_01_07_exact(2985; CHECK-NEXT:    ret i1 false2986;2987  %s = ashr exact i4 %x, 12988  %c = icmp sgt i4 %s, 72989  ret i1 %c2990}2991 2992define i1 @ashrsgt_01_08_exact(i4 %x) {2993; CHECK-LABEL: @ashrsgt_01_08_exact(2994; CHECK-NEXT:    ret i1 true2995;2996  %s = ashr exact i4 %x, 12997  %c = icmp sgt i4 %s, 82998  ret i1 %c2999}3000 3001define i1 @ashrsgt_01_09_exact(i4 %x) {3002; CHECK-LABEL: @ashrsgt_01_09_exact(3003; CHECK-NEXT:    ret i1 true3004;3005  %s = ashr exact i4 %x, 13006  %c = icmp sgt i4 %s, 93007  ret i1 %c3008}3009 3010define i1 @ashrsgt_01_10_exact(i4 %x) {3011; CHECK-LABEL: @ashrsgt_01_10_exact(3012; CHECK-NEXT:    ret i1 true3013;3014  %s = ashr exact i4 %x, 13015  %c = icmp sgt i4 %s, 103016  ret i1 %c3017}3018 3019define i1 @ashrsgt_01_11_exact(i4 %x) {3020; CHECK-LABEL: @ashrsgt_01_11_exact(3021; CHECK-NEXT:    ret i1 true3022;3023  %s = ashr exact i4 %x, 13024  %c = icmp sgt i4 %s, 113025  ret i1 %c3026}3027 3028define i1 @ashrsgt_01_12_exact(i4 %x) {3029; CHECK-LABEL: @ashrsgt_01_12_exact(3030; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 [[X:%.*]], -83031; CHECK-NEXT:    ret i1 [[C]]3032;3033  %s = ashr exact i4 %x, 13034  %c = icmp sgt i4 %s, 123035  ret i1 %c3036}3037 3038define i1 @ashrsgt_01_13_exact(i4 %x) {3039; CHECK-LABEL: @ashrsgt_01_13_exact(3040; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -63041; CHECK-NEXT:    ret i1 [[C]]3042;3043  %s = ashr exact i4 %x, 13044  %c = icmp sgt i4 %s, 133045  ret i1 %c3046}3047 3048define i1 @ashrsgt_01_14_exact(i4 %x) {3049; CHECK-LABEL: @ashrsgt_01_14_exact(3050; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -43051; CHECK-NEXT:    ret i1 [[C]]3052;3053  %s = ashr exact i4 %x, 13054  %c = icmp sgt i4 %s, 143055  ret i1 %c3056}3057 3058define i1 @ashrsgt_01_15_exact(i4 %x) {3059; CHECK-LABEL: @ashrsgt_01_15_exact(3060; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -13061; CHECK-NEXT:    ret i1 [[C]]3062;3063  %s = ashr exact i4 %x, 13064  %c = icmp sgt i4 %s, 153065  ret i1 %c3066}3067 3068define i1 @ashrsgt_02_00_exact(i4 %x) {3069; CHECK-LABEL: @ashrsgt_02_00_exact(3070; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], 03071; CHECK-NEXT:    ret i1 [[C]]3072;3073  %s = ashr exact i4 %x, 23074  %c = icmp sgt i4 %s, 03075  ret i1 %c3076}3077 3078define i1 @ashrsgt_02_01_exact(i4 %x) {3079; CHECK-LABEL: @ashrsgt_02_01_exact(3080; CHECK-NEXT:    ret i1 false3081;3082  %s = ashr exact i4 %x, 23083  %c = icmp sgt i4 %s, 13084  ret i1 %c3085}3086 3087define i1 @ashrsgt_02_02_exact(i4 %x) {3088; CHECK-LABEL: @ashrsgt_02_02_exact(3089; CHECK-NEXT:    ret i1 false3090;3091  %s = ashr exact i4 %x, 23092  %c = icmp sgt i4 %s, 23093  ret i1 %c3094}3095 3096define i1 @ashrsgt_02_03_exact(i4 %x) {3097; CHECK-LABEL: @ashrsgt_02_03_exact(3098; CHECK-NEXT:    ret i1 false3099;3100  %s = ashr exact i4 %x, 23101  %c = icmp sgt i4 %s, 33102  ret i1 %c3103}3104 3105define i1 @ashrsgt_02_04_exact(i4 %x) {3106; CHECK-LABEL: @ashrsgt_02_04_exact(3107; CHECK-NEXT:    ret i1 false3108;3109  %s = ashr exact i4 %x, 23110  %c = icmp sgt i4 %s, 43111  ret i1 %c3112}3113 3114define i1 @ashrsgt_02_05_exact(i4 %x) {3115; CHECK-LABEL: @ashrsgt_02_05_exact(3116; CHECK-NEXT:    ret i1 false3117;3118  %s = ashr exact i4 %x, 23119  %c = icmp sgt i4 %s, 53120  ret i1 %c3121}3122 3123define i1 @ashrsgt_02_06_exact(i4 %x) {3124; CHECK-LABEL: @ashrsgt_02_06_exact(3125; CHECK-NEXT:    ret i1 false3126;3127  %s = ashr exact i4 %x, 23128  %c = icmp sgt i4 %s, 63129  ret i1 %c3130}3131 3132define i1 @ashrsgt_02_07_exact(i4 %x) {3133; CHECK-LABEL: @ashrsgt_02_07_exact(3134; CHECK-NEXT:    ret i1 false3135;3136  %s = ashr exact i4 %x, 23137  %c = icmp sgt i4 %s, 73138  ret i1 %c3139}3140 3141define i1 @ashrsgt_02_08_exact(i4 %x) {3142; CHECK-LABEL: @ashrsgt_02_08_exact(3143; CHECK-NEXT:    ret i1 true3144;3145  %s = ashr exact i4 %x, 23146  %c = icmp sgt i4 %s, 83147  ret i1 %c3148}3149 3150define i1 @ashrsgt_02_09_exact(i4 %x) {3151; CHECK-LABEL: @ashrsgt_02_09_exact(3152; CHECK-NEXT:    ret i1 true3153;3154  %s = ashr exact i4 %x, 23155  %c = icmp sgt i4 %s, 93156  ret i1 %c3157}3158 3159define i1 @ashrsgt_02_10_exact(i4 %x) {3160; CHECK-LABEL: @ashrsgt_02_10_exact(3161; CHECK-NEXT:    ret i1 true3162;3163  %s = ashr exact i4 %x, 23164  %c = icmp sgt i4 %s, 103165  ret i1 %c3166}3167 3168define i1 @ashrsgt_02_11_exact(i4 %x) {3169; CHECK-LABEL: @ashrsgt_02_11_exact(3170; CHECK-NEXT:    ret i1 true3171;3172  %s = ashr exact i4 %x, 23173  %c = icmp sgt i4 %s, 113174  ret i1 %c3175}3176 3177define i1 @ashrsgt_02_12_exact(i4 %x) {3178; CHECK-LABEL: @ashrsgt_02_12_exact(3179; CHECK-NEXT:    ret i1 true3180;3181  %s = ashr exact i4 %x, 23182  %c = icmp sgt i4 %s, 123183  ret i1 %c3184}3185 3186define i1 @ashrsgt_02_13_exact(i4 %x) {3187; CHECK-LABEL: @ashrsgt_02_13_exact(3188; CHECK-NEXT:    ret i1 true3189;3190  %s = ashr exact i4 %x, 23191  %c = icmp sgt i4 %s, 133192  ret i1 %c3193}3194 3195define i1 @ashrsgt_02_14_exact(i4 %x) {3196; CHECK-LABEL: @ashrsgt_02_14_exact(3197; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 [[X:%.*]], -83198; CHECK-NEXT:    ret i1 [[C]]3199;3200  %s = ashr exact i4 %x, 23201  %c = icmp sgt i4 %s, 143202  ret i1 %c3203}3204 3205define i1 @ashrsgt_02_15_exact(i4 %x) {3206; CHECK-LABEL: @ashrsgt_02_15_exact(3207; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -13208; CHECK-NEXT:    ret i1 [[C]]3209;3210  %s = ashr exact i4 %x, 23211  %c = icmp sgt i4 %s, 153212  ret i1 %c3213}3214 3215define i1 @ashrsgt_03_00_exact(i4 %x) {3216; CHECK-LABEL: @ashrsgt_03_00_exact(3217; CHECK-NEXT:    ret i1 false3218;3219  %s = ashr exact i4 %x, 33220  %c = icmp sgt i4 %s, 03221  ret i1 %c3222}3223 3224define i1 @ashrsgt_03_01_exact(i4 %x) {3225; CHECK-LABEL: @ashrsgt_03_01_exact(3226; CHECK-NEXT:    ret i1 false3227;3228  %s = ashr exact i4 %x, 33229  %c = icmp sgt i4 %s, 13230  ret i1 %c3231}3232 3233define i1 @ashrsgt_03_02_exact(i4 %x) {3234; CHECK-LABEL: @ashrsgt_03_02_exact(3235; CHECK-NEXT:    ret i1 false3236;3237  %s = ashr exact i4 %x, 33238  %c = icmp sgt i4 %s, 23239  ret i1 %c3240}3241 3242define i1 @ashrsgt_03_03_exact(i4 %x) {3243; CHECK-LABEL: @ashrsgt_03_03_exact(3244; CHECK-NEXT:    ret i1 false3245;3246  %s = ashr exact i4 %x, 33247  %c = icmp sgt i4 %s, 33248  ret i1 %c3249}3250 3251define i1 @ashrsgt_03_04_exact(i4 %x) {3252; CHECK-LABEL: @ashrsgt_03_04_exact(3253; CHECK-NEXT:    ret i1 false3254;3255  %s = ashr exact i4 %x, 33256  %c = icmp sgt i4 %s, 43257  ret i1 %c3258}3259 3260define i1 @ashrsgt_03_05_exact(i4 %x) {3261; CHECK-LABEL: @ashrsgt_03_05_exact(3262; CHECK-NEXT:    ret i1 false3263;3264  %s = ashr exact i4 %x, 33265  %c = icmp sgt i4 %s, 53266  ret i1 %c3267}3268 3269define i1 @ashrsgt_03_06_exact(i4 %x) {3270; CHECK-LABEL: @ashrsgt_03_06_exact(3271; CHECK-NEXT:    ret i1 false3272;3273  %s = ashr exact i4 %x, 33274  %c = icmp sgt i4 %s, 63275  ret i1 %c3276}3277 3278define i1 @ashrsgt_03_07_exact(i4 %x) {3279; CHECK-LABEL: @ashrsgt_03_07_exact(3280; CHECK-NEXT:    ret i1 false3281;3282  %s = ashr exact i4 %x, 33283  %c = icmp sgt i4 %s, 73284  ret i1 %c3285}3286 3287define i1 @ashrsgt_03_08_exact(i4 %x) {3288; CHECK-LABEL: @ashrsgt_03_08_exact(3289; CHECK-NEXT:    ret i1 true3290;3291  %s = ashr exact i4 %x, 33292  %c = icmp sgt i4 %s, 83293  ret i1 %c3294}3295 3296define i1 @ashrsgt_03_09_exact(i4 %x) {3297; CHECK-LABEL: @ashrsgt_03_09_exact(3298; CHECK-NEXT:    ret i1 true3299;3300  %s = ashr exact i4 %x, 33301  %c = icmp sgt i4 %s, 93302  ret i1 %c3303}3304 3305define i1 @ashrsgt_03_10_exact(i4 %x) {3306; CHECK-LABEL: @ashrsgt_03_10_exact(3307; CHECK-NEXT:    ret i1 true3308;3309  %s = ashr exact i4 %x, 33310  %c = icmp sgt i4 %s, 103311  ret i1 %c3312}3313 3314define i1 @ashrsgt_03_11_exact(i4 %x) {3315; CHECK-LABEL: @ashrsgt_03_11_exact(3316; CHECK-NEXT:    ret i1 true3317;3318  %s = ashr exact i4 %x, 33319  %c = icmp sgt i4 %s, 113320  ret i1 %c3321}3322 3323define i1 @ashrsgt_03_12_exact(i4 %x) {3324; CHECK-LABEL: @ashrsgt_03_12_exact(3325; CHECK-NEXT:    ret i1 true3326;3327  %s = ashr exact i4 %x, 33328  %c = icmp sgt i4 %s, 123329  ret i1 %c3330}3331 3332define i1 @ashrsgt_03_13_exact(i4 %x) {3333; CHECK-LABEL: @ashrsgt_03_13_exact(3334; CHECK-NEXT:    ret i1 true3335;3336  %s = ashr exact i4 %x, 33337  %c = icmp sgt i4 %s, 133338  ret i1 %c3339}3340 3341define i1 @ashrsgt_03_14_exact(i4 %x) {3342; CHECK-LABEL: @ashrsgt_03_14_exact(3343; CHECK-NEXT:    ret i1 true3344;3345  %s = ashr exact i4 %x, 33346  %c = icmp sgt i4 %s, 143347  ret i1 %c3348}3349 3350define i1 @ashrsgt_03_15_exact(i4 %x) {3351; CHECK-LABEL: @ashrsgt_03_15_exact(3352; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 [[X:%.*]], -13353; CHECK-NEXT:    ret i1 [[C]]3354;3355  %s = ashr exact i4 %x, 33356  %c = icmp sgt i4 %s, 153357  ret i1 %c3358}3359 3360define i1 @ashrslt_01_00_exact(i4 %x) {3361; CHECK-LABEL: @ashrslt_01_00_exact(3362; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 03363; CHECK-NEXT:    ret i1 [[C]]3364;3365  %s = ashr exact i4 %x, 13366  %c = icmp slt i4 %s, 03367  ret i1 %c3368}3369 3370define i1 @ashrslt_01_01_exact(i4 %x) {3371; CHECK-LABEL: @ashrslt_01_01_exact(3372; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 23373; CHECK-NEXT:    ret i1 [[C]]3374;3375  %s = ashr exact i4 %x, 13376  %c = icmp slt i4 %s, 13377  ret i1 %c3378}3379 3380define i1 @ashrslt_01_02_exact(i4 %x) {3381; CHECK-LABEL: @ashrslt_01_02_exact(3382; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 33383; CHECK-NEXT:    ret i1 [[C]]3384;3385  %s = ashr exact i4 %x, 13386  %c = icmp slt i4 %s, 23387  ret i1 %c3388}3389 3390define i1 @ashrslt_01_03_exact(i4 %x) {3391; CHECK-LABEL: @ashrslt_01_03_exact(3392; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 53393; CHECK-NEXT:    ret i1 [[C]]3394;3395  %s = ashr exact i4 %x, 13396  %c = icmp slt i4 %s, 33397  ret i1 %c3398}3399 3400define i1 @ashrslt_01_04_exact(i4 %x) {3401; CHECK-LABEL: @ashrslt_01_04_exact(3402; CHECK-NEXT:    ret i1 true3403;3404  %s = ashr exact i4 %x, 13405  %c = icmp slt i4 %s, 43406  ret i1 %c3407}3408 3409define i1 @ashrslt_01_05_exact(i4 %x) {3410; CHECK-LABEL: @ashrslt_01_05_exact(3411; CHECK-NEXT:    ret i1 true3412;3413  %s = ashr exact i4 %x, 13414  %c = icmp slt i4 %s, 53415  ret i1 %c3416}3417 3418define i1 @ashrslt_01_06_exact(i4 %x) {3419; CHECK-LABEL: @ashrslt_01_06_exact(3420; CHECK-NEXT:    ret i1 true3421;3422  %s = ashr exact i4 %x, 13423  %c = icmp slt i4 %s, 63424  ret i1 %c3425}3426 3427define i1 @ashrslt_01_07_exact(i4 %x) {3428; CHECK-LABEL: @ashrslt_01_07_exact(3429; CHECK-NEXT:    ret i1 true3430;3431  %s = ashr exact i4 %x, 13432  %c = icmp slt i4 %s, 73433  ret i1 %c3434}3435 3436define i1 @ashrslt_01_08_exact(i4 %x) {3437; CHECK-LABEL: @ashrslt_01_08_exact(3438; CHECK-NEXT:    ret i1 false3439;3440  %s = ashr exact i4 %x, 13441  %c = icmp slt i4 %s, 83442  ret i1 %c3443}3444 3445define i1 @ashrslt_01_09_exact(i4 %x) {3446; CHECK-LABEL: @ashrslt_01_09_exact(3447; CHECK-NEXT:    ret i1 false3448;3449  %s = ashr exact i4 %x, 13450  %c = icmp slt i4 %s, 93451  ret i1 %c3452}3453 3454define i1 @ashrslt_01_10_exact(i4 %x) {3455; CHECK-LABEL: @ashrslt_01_10_exact(3456; CHECK-NEXT:    ret i1 false3457;3458  %s = ashr exact i4 %x, 13459  %c = icmp slt i4 %s, 103460  ret i1 %c3461}3462 3463define i1 @ashrslt_01_11_exact(i4 %x) {3464; CHECK-LABEL: @ashrslt_01_11_exact(3465; CHECK-NEXT:    ret i1 false3466;3467  %s = ashr exact i4 %x, 13468  %c = icmp slt i4 %s, 113469  ret i1 %c3470}3471 3472define i1 @ashrslt_01_12_exact(i4 %x) {3473; CHECK-LABEL: @ashrslt_01_12_exact(3474; CHECK-NEXT:    ret i1 false3475;3476  %s = ashr exact i4 %x, 13477  %c = icmp slt i4 %s, 123478  ret i1 %c3479}3480 3481define i1 @ashrslt_01_13_exact(i4 %x) {3482; CHECK-LABEL: @ashrslt_01_13_exact(3483; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], -63484; CHECK-NEXT:    ret i1 [[C]]3485;3486  %s = ashr exact i4 %x, 13487  %c = icmp slt i4 %s, 133488  ret i1 %c3489}3490 3491define i1 @ashrslt_01_14_exact(i4 %x) {3492; CHECK-LABEL: @ashrslt_01_14_exact(3493; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], -43494; CHECK-NEXT:    ret i1 [[C]]3495;3496  %s = ashr exact i4 %x, 13497  %c = icmp slt i4 %s, 143498  ret i1 %c3499}3500 3501define i1 @ashrslt_01_15_exact(i4 %x) {3502; CHECK-LABEL: @ashrslt_01_15_exact(3503; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], -23504; CHECK-NEXT:    ret i1 [[C]]3505;3506  %s = ashr exact i4 %x, 13507  %c = icmp slt i4 %s, 153508  ret i1 %c3509}3510 3511define i1 @ashrslt_02_00_exact(i4 %x) {3512; CHECK-LABEL: @ashrslt_02_00_exact(3513; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 03514; CHECK-NEXT:    ret i1 [[C]]3515;3516  %s = ashr exact i4 %x, 23517  %c = icmp slt i4 %s, 03518  ret i1 %c3519}3520 3521define i1 @ashrslt_02_01_exact(i4 %x) {3522; CHECK-LABEL: @ashrslt_02_01_exact(3523; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 43524; CHECK-NEXT:    ret i1 [[C]]3525;3526  %s = ashr exact i4 %x, 23527  %c = icmp slt i4 %s, 13528  ret i1 %c3529}3530 3531define i1 @ashrslt_02_02_exact(i4 %x) {3532; CHECK-LABEL: @ashrslt_02_02_exact(3533; CHECK-NEXT:    ret i1 true3534;3535  %s = ashr exact i4 %x, 23536  %c = icmp slt i4 %s, 23537  ret i1 %c3538}3539 3540define i1 @ashrslt_02_03_exact(i4 %x) {3541; CHECK-LABEL: @ashrslt_02_03_exact(3542; CHECK-NEXT:    ret i1 true3543;3544  %s = ashr exact i4 %x, 23545  %c = icmp slt i4 %s, 33546  ret i1 %c3547}3548 3549define i1 @ashrslt_02_04_exact(i4 %x) {3550; CHECK-LABEL: @ashrslt_02_04_exact(3551; CHECK-NEXT:    ret i1 true3552;3553  %s = ashr exact i4 %x, 23554  %c = icmp slt i4 %s, 43555  ret i1 %c3556}3557 3558define i1 @ashrslt_02_05_exact(i4 %x) {3559; CHECK-LABEL: @ashrslt_02_05_exact(3560; CHECK-NEXT:    ret i1 true3561;3562  %s = ashr exact i4 %x, 23563  %c = icmp slt i4 %s, 53564  ret i1 %c3565}3566 3567define i1 @ashrslt_02_06_exact(i4 %x) {3568; CHECK-LABEL: @ashrslt_02_06_exact(3569; CHECK-NEXT:    ret i1 true3570;3571  %s = ashr exact i4 %x, 23572  %c = icmp slt i4 %s, 63573  ret i1 %c3574}3575 3576define i1 @ashrslt_02_07_exact(i4 %x) {3577; CHECK-LABEL: @ashrslt_02_07_exact(3578; CHECK-NEXT:    ret i1 true3579;3580  %s = ashr exact i4 %x, 23581  %c = icmp slt i4 %s, 73582  ret i1 %c3583}3584 3585define i1 @ashrslt_02_08_exact(i4 %x) {3586; CHECK-LABEL: @ashrslt_02_08_exact(3587; CHECK-NEXT:    ret i1 false3588;3589  %s = ashr exact i4 %x, 23590  %c = icmp slt i4 %s, 83591  ret i1 %c3592}3593 3594define i1 @ashrslt_02_09_exact(i4 %x) {3595; CHECK-LABEL: @ashrslt_02_09_exact(3596; CHECK-NEXT:    ret i1 false3597;3598  %s = ashr exact i4 %x, 23599  %c = icmp slt i4 %s, 93600  ret i1 %c3601}3602 3603define i1 @ashrslt_02_10_exact(i4 %x) {3604; CHECK-LABEL: @ashrslt_02_10_exact(3605; CHECK-NEXT:    ret i1 false3606;3607  %s = ashr exact i4 %x, 23608  %c = icmp slt i4 %s, 103609  ret i1 %c3610}3611 3612define i1 @ashrslt_02_11_exact(i4 %x) {3613; CHECK-LABEL: @ashrslt_02_11_exact(3614; CHECK-NEXT:    ret i1 false3615;3616  %s = ashr exact i4 %x, 23617  %c = icmp slt i4 %s, 113618  ret i1 %c3619}3620 3621define i1 @ashrslt_02_12_exact(i4 %x) {3622; CHECK-LABEL: @ashrslt_02_12_exact(3623; CHECK-NEXT:    ret i1 false3624;3625  %s = ashr exact i4 %x, 23626  %c = icmp slt i4 %s, 123627  ret i1 %c3628}3629 3630define i1 @ashrslt_02_13_exact(i4 %x) {3631; CHECK-LABEL: @ashrslt_02_13_exact(3632; CHECK-NEXT:    ret i1 false3633;3634  %s = ashr exact i4 %x, 23635  %c = icmp slt i4 %s, 133636  ret i1 %c3637}3638 3639define i1 @ashrslt_02_14_exact(i4 %x) {3640; CHECK-LABEL: @ashrslt_02_14_exact(3641; CHECK-NEXT:    ret i1 false3642;3643  %s = ashr exact i4 %x, 23644  %c = icmp slt i4 %s, 143645  ret i1 %c3646}3647 3648define i1 @ashrslt_02_15_exact(i4 %x) {3649; CHECK-LABEL: @ashrslt_02_15_exact(3650; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], -43651; CHECK-NEXT:    ret i1 [[C]]3652;3653  %s = ashr exact i4 %x, 23654  %c = icmp slt i4 %s, 153655  ret i1 %c3656}3657 3658define i1 @ashrslt_03_00_exact(i4 %x) {3659; CHECK-LABEL: @ashrslt_03_00_exact(3660; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 [[X:%.*]], 03661; CHECK-NEXT:    ret i1 [[C]]3662;3663  %s = ashr exact i4 %x, 33664  %c = icmp slt i4 %s, 03665  ret i1 %c3666}3667 3668define i1 @ashrslt_03_01_exact(i4 %x) {3669; CHECK-LABEL: @ashrslt_03_01_exact(3670; CHECK-NEXT:    ret i1 true3671;3672  %s = ashr exact i4 %x, 33673  %c = icmp slt i4 %s, 13674  ret i1 %c3675}3676 3677define i1 @ashrslt_03_02_exact(i4 %x) {3678; CHECK-LABEL: @ashrslt_03_02_exact(3679; CHECK-NEXT:    ret i1 true3680;3681  %s = ashr exact i4 %x, 33682  %c = icmp slt i4 %s, 23683  ret i1 %c3684}3685 3686define i1 @ashrslt_03_03_exact(i4 %x) {3687; CHECK-LABEL: @ashrslt_03_03_exact(3688; CHECK-NEXT:    ret i1 true3689;3690  %s = ashr exact i4 %x, 33691  %c = icmp slt i4 %s, 33692  ret i1 %c3693}3694 3695define i1 @ashrslt_03_04_exact(i4 %x) {3696; CHECK-LABEL: @ashrslt_03_04_exact(3697; CHECK-NEXT:    ret i1 true3698;3699  %s = ashr exact i4 %x, 33700  %c = icmp slt i4 %s, 43701  ret i1 %c3702}3703 3704define i1 @ashrslt_03_05_exact(i4 %x) {3705; CHECK-LABEL: @ashrslt_03_05_exact(3706; CHECK-NEXT:    ret i1 true3707;3708  %s = ashr exact i4 %x, 33709  %c = icmp slt i4 %s, 53710  ret i1 %c3711}3712 3713define i1 @ashrslt_03_06_exact(i4 %x) {3714; CHECK-LABEL: @ashrslt_03_06_exact(3715; CHECK-NEXT:    ret i1 true3716;3717  %s = ashr exact i4 %x, 33718  %c = icmp slt i4 %s, 63719  ret i1 %c3720}3721 3722define i1 @ashrslt_03_07_exact(i4 %x) {3723; CHECK-LABEL: @ashrslt_03_07_exact(3724; CHECK-NEXT:    ret i1 true3725;3726  %s = ashr exact i4 %x, 33727  %c = icmp slt i4 %s, 73728  ret i1 %c3729}3730 3731define i1 @ashrslt_03_08_exact(i4 %x) {3732; CHECK-LABEL: @ashrslt_03_08_exact(3733; CHECK-NEXT:    ret i1 false3734;3735  %s = ashr exact i4 %x, 33736  %c = icmp slt i4 %s, 83737  ret i1 %c3738}3739 3740define i1 @ashrslt_03_09_exact(i4 %x) {3741; CHECK-LABEL: @ashrslt_03_09_exact(3742; CHECK-NEXT:    ret i1 false3743;3744  %s = ashr exact i4 %x, 33745  %c = icmp slt i4 %s, 93746  ret i1 %c3747}3748 3749define i1 @ashrslt_03_10_exact(i4 %x) {3750; CHECK-LABEL: @ashrslt_03_10_exact(3751; CHECK-NEXT:    ret i1 false3752;3753  %s = ashr exact i4 %x, 33754  %c = icmp slt i4 %s, 103755  ret i1 %c3756}3757 3758define i1 @ashrslt_03_11_exact(i4 %x) {3759; CHECK-LABEL: @ashrslt_03_11_exact(3760; CHECK-NEXT:    ret i1 false3761;3762  %s = ashr exact i4 %x, 33763  %c = icmp slt i4 %s, 113764  ret i1 %c3765}3766 3767define i1 @ashrslt_03_12_exact(i4 %x) {3768; CHECK-LABEL: @ashrslt_03_12_exact(3769; CHECK-NEXT:    ret i1 false3770;3771  %s = ashr exact i4 %x, 33772  %c = icmp slt i4 %s, 123773  ret i1 %c3774}3775 3776define i1 @ashrslt_03_13_exact(i4 %x) {3777; CHECK-LABEL: @ashrslt_03_13_exact(3778; CHECK-NEXT:    ret i1 false3779;3780  %s = ashr exact i4 %x, 33781  %c = icmp slt i4 %s, 133782  ret i1 %c3783}3784 3785define i1 @ashrslt_03_14_exact(i4 %x) {3786; CHECK-LABEL: @ashrslt_03_14_exact(3787; CHECK-NEXT:    ret i1 false3788;3789  %s = ashr exact i4 %x, 33790  %c = icmp slt i4 %s, 143791  ret i1 %c3792}3793 3794define i1 @ashrslt_03_15_exact(i4 %x) {3795; CHECK-LABEL: @ashrslt_03_15_exact(3796; CHECK-NEXT:    ret i1 false3797;3798  %s = ashr exact i4 %x, 33799  %c = icmp slt i4 %s, 153800  ret i1 %c3801}3802 3803define i1 @ashr_slt_exact_near_pow2_cmpval(i8 %x) {3804; CHECK-LABEL: @ashr_slt_exact_near_pow2_cmpval(3805; CHECK-NEXT:    [[C:%.*]] = icmp slt i8 [[X:%.*]], 93806; CHECK-NEXT:    ret i1 [[C]]3807;3808  %s = ashr exact i8 %x, 13809  %c = icmp slt i8 %s, 53810  ret i1 %c3811}3812 3813define i1 @ashr_ult_exact_near_pow2_cmpval(i8 %x) {3814; CHECK-LABEL: @ashr_ult_exact_near_pow2_cmpval(3815; CHECK-NEXT:    [[C:%.*]] = icmp ult i8 [[X:%.*]], 93816; CHECK-NEXT:    ret i1 [[C]]3817;3818  %s = ashr exact i8 %x, 13819  %c = icmp ult i8 %s, 53820  ret i1 %c3821}3822 3823define i1 @negtest_near_pow2_cmpval_ashr_slt_noexact(i8 %x) {3824; CHECK-LABEL: @negtest_near_pow2_cmpval_ashr_slt_noexact(3825; CHECK-NEXT:    [[C:%.*]] = icmp slt i8 [[X:%.*]], 103826; CHECK-NEXT:    ret i1 [[C]]3827;3828  %s = ashr i8 %x, 13829  %c = icmp slt i8 %s, 53830  ret i1 %c3831}3832 3833define i1 @negtest_near_pow2_cmpval_ashr_wrong_cmp_pred(i8 %x) {3834; CHECK-LABEL: @negtest_near_pow2_cmpval_ashr_wrong_cmp_pred(3835; CHECK-NEXT:    [[C:%.*]] = icmp eq i8 [[X:%.*]], 103836; CHECK-NEXT:    ret i1 [[C]]3837;3838  %s = ashr exact i8 %x, 13839  %c = icmp eq i8 %s, 53840  ret i1 %c3841}3842 3843define i1 @negtest_near_pow2_cmpval_isnt_close_to_pow2(i8 %x) {3844; CHECK-LABEL: @negtest_near_pow2_cmpval_isnt_close_to_pow2(3845; CHECK-NEXT:    [[C:%.*]] = icmp slt i8 [[X:%.*]], 123846; CHECK-NEXT:    ret i1 [[C]]3847;3848  %s = ashr exact i8 %x, 13849  %c = icmp slt i8 %s, 63850  ret i1 %c3851}3852 3853define i1 @negtest_near_pow2_cmpval_would_overflow_into_signbit(i8 %x) {3854; CHECK-LABEL: @negtest_near_pow2_cmpval_would_overflow_into_signbit(3855; CHECK-NEXT:    [[C:%.*]] = icmp sgt i8 [[X:%.*]], -13856; CHECK-NEXT:    ret i1 [[C]]3857;3858  %s = ashr exact i8 %x, 23859  %c = icmp ult i8 %s, 333860  ret i1 %c3861}3862