brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 08cf482 Raw
120 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4define i8 @shl_add_nuw(i8 %amt_in, i8 %cnt_in) {5; CHECK-LABEL: @shl_add_nuw(6; CHECK-NEXT:    [[AMT:%.*]] = and i8 [[AMT_IN:%.*]], 637; CHECK-NEXT:    [[CNT:%.*]] = and i8 [[CNT_IN:%.*]], 28; CHECK-NEXT:    [[R:%.*]] = shl nuw i8 [[AMT]], [[CNT]]9; CHECK-NEXT:    ret i8 [[R]]10;11  %amt = and i8 %amt_in, 6312  %cnt = and i8 %cnt_in, 213  %r = shl i8 %amt, %cnt14  ret i8 %r15}16 17define i8 @shl_add_nuw_fail(i8 %amt_in, i8 %cnt_in) {18; CHECK-LABEL: @shl_add_nuw_fail(19; CHECK-NEXT:    [[AMT:%.*]] = and i8 [[AMT_IN:%.*]], 6320; CHECK-NEXT:    [[CNT:%.*]] = and i8 [[CNT_IN:%.*]], 321; CHECK-NEXT:    [[R:%.*]] = shl i8 [[AMT]], [[CNT]]22; CHECK-NEXT:    ret i8 [[R]]23;24  %amt = and i8 %amt_in, 6325  %cnt = and i8 %cnt_in, 326  %r = shl i8 %amt, %cnt27  ret i8 %r28}29 30define i8 @shl_add_nuw_and_nsw(i8 %amt_in, i8 %cnt_in) {31; CHECK-LABEL: @shl_add_nuw_and_nsw(32; CHECK-NEXT:    [[AMT:%.*]] = and i8 [[AMT_IN:%.*]], 3133; CHECK-NEXT:    [[CNT:%.*]] = and i8 [[CNT_IN:%.*]], 234; CHECK-NEXT:    [[R:%.*]] = shl nuw nsw i8 [[AMT]], [[CNT]]35; CHECK-NEXT:    ret i8 [[R]]36;37  %amt = and i8 %amt_in, 3138  %cnt = and i8 %cnt_in, 239  %r = shl i8 %amt, %cnt40  ret i8 %r41}42 43define i8 @shl_add_nsw(i8 %amt_in, i8 %cnt_in) {44; CHECK-LABEL: @shl_add_nsw(45; CHECK-NEXT:    [[AMT:%.*]] = or i8 [[AMT_IN:%.*]], -3246; CHECK-NEXT:    [[CNT:%.*]] = and i8 [[CNT_IN:%.*]], 247; CHECK-NEXT:    [[R:%.*]] = shl nsw i8 [[AMT]], [[CNT]]48; CHECK-NEXT:    ret i8 [[R]]49;50  %amt = or i8 %amt_in, 22451  %cnt = and i8 %cnt_in, 252  %r = shl i8 %amt, %cnt53  ret i8 %r54}55 56define i8 @shl_add_nsw_fail(i8 %amt_in, i8 %cnt_in) {57; CHECK-LABEL: @shl_add_nsw_fail(58; CHECK-NEXT:    [[AMT:%.*]] = or i8 [[AMT_IN:%.*]], -6459; CHECK-NEXT:    [[CNT:%.*]] = and i8 [[CNT_IN:%.*]], 260; CHECK-NEXT:    [[R:%.*]] = shl i8 [[AMT]], [[CNT]]61; CHECK-NEXT:    ret i8 [[R]]62;63  %amt = or i8 %amt_in, 19264  %cnt = and i8 %cnt_in, 265  %r = shl i8 %amt, %cnt66  ret i8 %r67}68 69define i8 @lshr_add_exact(i8 %amt_in, i8 %cnt_in) {70; CHECK-LABEL: @lshr_add_exact(71; CHECK-NEXT:    [[AMT:%.*]] = and i8 [[AMT_IN:%.*]], -472; CHECK-NEXT:    [[CNT:%.*]] = and i8 [[CNT_IN:%.*]], 273; CHECK-NEXT:    [[R:%.*]] = lshr exact i8 [[AMT]], [[CNT]]74; CHECK-NEXT:    ret i8 [[R]]75;76  %amt = and i8 %amt_in, -477  %cnt = and i8 %cnt_in, 278  %r = lshr i8 %amt, %cnt79  ret i8 %r80}81 82define i8 @lshr_add_exact_fail(i8 %amt_in, i8 %cnt_in) {83; CHECK-LABEL: @lshr_add_exact_fail(84; CHECK-NEXT:    [[AMT:%.*]] = and i8 [[AMT_IN:%.*]], -785; CHECK-NEXT:    [[CNT:%.*]] = and i8 [[CNT_IN:%.*]], 286; CHECK-NEXT:    [[R:%.*]] = lshr i8 [[AMT]], [[CNT]]87; CHECK-NEXT:    ret i8 [[R]]88;89  %amt = and i8 %amt_in, -790  %cnt = and i8 %cnt_in, 291  %r = lshr i8 %amt, %cnt92  ret i8 %r93}94 95define i8 @ashr_add_exact(i8 %amt_in, i8 %cnt_in) {96; CHECK-LABEL: @ashr_add_exact(97; CHECK-NEXT:    [[AMT:%.*]] = and i8 [[AMT_IN:%.*]], -1498; CHECK-NEXT:    [[CNT:%.*]] = and i8 [[CNT_IN:%.*]], 199; CHECK-NEXT:    [[R:%.*]] = ashr exact i8 [[AMT]], [[CNT]]100; CHECK-NEXT:    ret i8 [[R]]101;102  %amt = and i8 %amt_in, -14103  %cnt = and i8 %cnt_in, 1104  %r = ashr i8 %amt, %cnt105  ret i8 %r106}107 108define i8 @ashr_add_exact_fail(i8 %amt_in, i8 %cnt_in) {109; CHECK-LABEL: @ashr_add_exact_fail(110; CHECK-NEXT:    [[AMT:%.*]] = and i8 [[AMT_IN:%.*]], -14111; CHECK-NEXT:    [[CNT:%.*]] = and i8 [[CNT_IN:%.*]], 2112; CHECK-NEXT:    [[R:%.*]] = ashr i8 [[AMT]], [[CNT]]113; CHECK-NEXT:    ret i8 [[R]]114;115  %amt = and i8 %amt_in, -14116  %cnt = and i8 %cnt_in, 2117  %r = ashr i8 %amt, %cnt118  ret i8 %r119}120