brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · c440cfa Raw
233 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=instsimplify < %s -S | FileCheck %s3 4define i1 @shl_C_X_ugt(i8 %x) {5; CHECK-LABEL: @shl_C_X_ugt(6; CHECK-NEXT:    ret i1 false7;8  %shl = shl i8 7, %x9  %r = icmp ugt i8 %shl, 22410  ret i1 %r11}12 13define i1 @shl_C_X_ugt2(i8 %x) {14; CHECK-LABEL: @shl_C_X_ugt2(15; CHECK-NEXT:    ret i1 false16;17  %shl = shl i8 5, %x18  %r = icmp ugt i8 %shl, 19219  ret i1 %r20}21 22define i1 @shl_C_X_ugt_fail(i8 %x) {23; CHECK-LABEL: @shl_C_X_ugt_fail(24; CHECK-NEXT:    [[SHL:%.*]] = shl i8 1, [[X:%.*]]25; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[SHL]], 12726; CHECK-NEXT:    ret i1 [[R]]27;28  %shl = shl i8 1, %x29  %r = icmp ugt i8 %shl, 12730  ret i1 %r31}32 33define i1 @shl_C_X_ugt_fail2(i8 %x) {34; CHECK-LABEL: @shl_C_X_ugt_fail2(35; CHECK-NEXT:    [[SHL:%.*]] = shl i8 3, [[X:%.*]]36; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[SHL]], -6637; CHECK-NEXT:    ret i1 [[R]]38;39  %shl = shl i8 3, %x40  %r = icmp ugt i8 %shl, 19041  ret i1 %r42}43 44define i1 @shl_C_X_ugt_fail3(i8 %x) {45; CHECK-LABEL: @shl_C_X_ugt_fail3(46; CHECK-NEXT:    [[SHL:%.*]] = shl i8 -1, [[X:%.*]]47; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[SHL]], -248; CHECK-NEXT:    ret i1 [[R]]49;50  %shl = shl i8 -1, %x51  %r = icmp ugt i8 %shl, 25452  ret i1 %r53}54 55define i1 @shl_C_X_ugt_todo(i8 %x) {56; CHECK-LABEL: @shl_C_X_ugt_todo(57; CHECK-NEXT:    [[SHL:%.*]] = shl i8 -127, [[X:%.*]]58; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[SHL]], -11659; CHECK-NEXT:    ret i1 [[R]]60;61  %shl = shl i8 129, %x62  %r = icmp ugt i8 %shl, 14063  ret i1 %r64}65 66define i1 @shl_X_C_ugt(i8 %x) {67; CHECK-LABEL: @shl_X_C_ugt(68; CHECK-NEXT:    ret i1 false69;70  %shl = shl i8 %x, 671  %r = icmp ugt i8 %shl, 19272  ret i1 %r73}74 75define i1 @shl_X_C_ugt_fail(i8 %x) {76; CHECK-LABEL: @shl_X_C_ugt_fail(77; CHECK-NEXT:    [[SHL:%.*]] = shl i8 [[X:%.*]], 678; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[SHL]], -6579; CHECK-NEXT:    ret i1 [[R]]80;81  %shl = shl i8 %x, 682  %r = icmp ugt i8 %shl, 19183  ret i1 %r84}85 86define i1 @shl_X_C_ugt_fail2(i8 %x) {87; CHECK-LABEL: @shl_X_C_ugt_fail2(88; CHECK-NEXT:    [[SHL:%.*]] = shl i8 [[X:%.*]], 589; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[SHL]], -6490; CHECK-NEXT:    ret i1 [[R]]91;92  %shl = shl i8 %x, 593  %r = icmp ugt i8 %shl, 19294  ret i1 %r95}96 97define i1 @and_ugt(i8 %xx) {98; CHECK-LABEL: @and_ugt(99; CHECK-NEXT:    ret i1 false100;101  %x = mul i8 %xx, %xx  ; thwart complexity-based canonicalization102  %negx = sub i8 0, %x103  %x_p2 = and i8 %negx, %x104  %r = icmp ugt i8 %x_p2, 128105  ret i1 %r106}107 108define i1 @and_ugt2(i8 %xx) {109; CHECK-LABEL: @and_ugt2(110; CHECK-NEXT:    ret i1 false111;112  %x = mul i8 %xx, %xx  ; thwart complexity-based canonicalization113  %negx = sub i8 0, %x114  %x_p2 = and i8 %x, %negx115  %r = icmp ugt i8 %x_p2, 128116  ret i1 %r117}118 119define i1 @and_ugt_fail(i8 %xx) {120; CHECK-LABEL: @and_ugt_fail(121; CHECK-NEXT:    [[X:%.*]] = mul i8 [[XX:%.*]], [[XX]]122; CHECK-NEXT:    [[NEGX:%.*]] = sub i8 0, [[X]]123; CHECK-NEXT:    [[X_P2:%.*]] = and i8 [[X]], [[NEGX]]124; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[X_P2]], 127125; CHECK-NEXT:    ret i1 [[R]]126;127  %x = mul i8 %xx, %xx  ; thwart complexity-based canonicalization128  %negx = sub i8 0, %x129  %x_p2 = and i8 %x, %negx130  %r = icmp ugt i8 %x_p2, 127131  ret i1 %r132}133 134define i1 @urem_okay(i8 %x) {135; CHECK-LABEL: @urem_okay(136; CHECK-NEXT:    ret i1 true137;138  %val = urem i8 34, %x139  %r = icmp ule i8 %val, 35140  ret i1 %r141}142 143define i1 @urem_fail(i8 %x) {144; CHECK-LABEL: @urem_fail(145; CHECK-NEXT:    [[VAL:%.*]] = urem i8 34, [[X:%.*]]146; CHECK-NEXT:    [[R:%.*]] = icmp ule i8 [[VAL]], 33147; CHECK-NEXT:    ret i1 [[R]]148;149  %val = urem i8 34, %x150  %r = icmp ule i8 %val, 33151  ret i1 %r152}153 154define i1 @srem_posC_okay0(i8 %x) {155; CHECK-LABEL: @srem_posC_okay0(156; CHECK-NEXT:    ret i1 true157;158  %val = srem i8 34, %x159  %r = icmp sle i8 %val, 34160  ret i1 %r161}162 163define i1 @srem_posC_okay1(i8 %x) {164; CHECK-LABEL: @srem_posC_okay1(165; CHECK-NEXT:    ret i1 true166;167  %val = srem i8 34, %x168  %r = icmp sge i8 %val, -3169  ret i1 %r170}171 172define i1 @srem_negC_okay0(i8 %x) {173; CHECK-LABEL: @srem_negC_okay0(174; CHECK-NEXT:    ret i1 true175;176  %val = srem i8 -34, %x177  %r = icmp sle i8 %val, 0178  ret i1 %r179}180 181define i1 @srem_negC_okay1(i8 %x) {182; CHECK-LABEL: @srem_negC_okay1(183; CHECK-NEXT:    ret i1 true184;185  %val = srem i8 -34, %x186  %r = icmp sge i8 %val, -34187  ret i1 %r188}189 190define i1 @srem_posC_fail0(i8 %x) {191; CHECK-LABEL: @srem_posC_fail0(192; CHECK-NEXT:    [[VAL:%.*]] = srem i8 34, [[X:%.*]]193; CHECK-NEXT:    [[R:%.*]] = icmp sle i8 [[VAL]], 32194; CHECK-NEXT:    ret i1 [[R]]195;196  %val = srem i8 34, %x197  %r = icmp sle i8 %val, 32198  ret i1 %r199}200 201define i1 @srem_posC_fail1(i8 %x) {202; CHECK-LABEL: @srem_posC_fail1(203; CHECK-NEXT:    [[VAL:%.*]] = srem i8 34, [[X:%.*]]204; CHECK-NEXT:    [[R:%.*]] = icmp sge i8 [[VAL]], 1205; CHECK-NEXT:    ret i1 [[R]]206;207  %val = srem i8 34, %x208  %r = icmp sge i8 %val, 1209  ret i1 %r210}211 212define i1 @srem_negC_fail0(i8 %x) {213; CHECK-LABEL: @srem_negC_fail0(214; CHECK-NEXT:    [[VAL:%.*]] = srem i8 -34, [[X:%.*]]215; CHECK-NEXT:    [[R:%.*]] = icmp sle i8 [[VAL]], -1216; CHECK-NEXT:    ret i1 [[R]]217;218  %val = srem i8 -34, %x219  %r = icmp sle i8 %val, -1220  ret i1 %r221}222 223define i1 @srem_negC_fail1(i8 %x) {224; CHECK-LABEL: @srem_negC_fail1(225; CHECK-NEXT:    [[VAL:%.*]] = srem i8 -34, [[X:%.*]]226; CHECK-NEXT:    [[R:%.*]] = icmp sge i8 [[VAL]], -33227; CHECK-NEXT:    ret i1 [[R]]228;229  %val = srem i8 -34, %x230  %r = icmp sge i8 %val, -33231  ret i1 %r232}233