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