aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/LoopUtils.cpp
diff options
context:
space:
mode:
authorRoman Lebedev <lebedev.ri@gmail.com>2020-02-25 21:52:07 +0300
committerRoman Lebedev <lebedev.ri@gmail.com>2020-02-25 23:05:58 +0300
commitcc29600b908ba3aefb41e53398922319841fdb37 (patch)
tree18dd05f6de1a9c7aa74aae4c81dc021a1a723d14 /llvm/lib/Transforms/Utils/LoopUtils.cpp
parentb8abdf9a176116271ed121ebd9c6b2194930e5e7 (diff)
downloadllvm-cc29600b908ba3aefb41e53398922319841fdb37.zip
llvm-cc29600b908ba3aefb41e53398922319841fdb37.tar.gz
llvm-cc29600b908ba3aefb41e53398922319841fdb37.tar.bz2
[SCEV] SCEVExpander::isHighCostExpansionHelper(): cost-model plain UDiv
Summary: If we don't believe this UDiv is actually a LShr in disguise, things are much worse. First, we try to see if this UDiv actually originates from user code, by looking for `S + 1`, and if found considering this UDiv to be free. But otherwise, we always considered this UDiv to be high-cost. However that is no longer the case with TTI-driven cost model: our default budget is 4, which matches the default cost of UDiv, so now we allow a single UDiv to not be counted as high-cost. While that is the case, it is evident this is actually a regression due to the fact that cost-modelling is incomplete - we did not account for the `add`, `mul` costs yet. That is being addressed in D73728. Cost-modelling for UDiv also seems pretty straight-forward: subtract cost of the UDiv itself, and recurse into both the LHS and RHS. Reviewers: reames, mkazantsev, wmi, sanjoy Reviewed By: mkazantsev Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D73722
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUtils.cpp')
0 files changed, 0 insertions, 0 deletions