[PATCH] D67178: [SCEV] Use loop guard info when computing the max BE taken count in howFarToZero.

Florian Hahn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 4 08:14:36 PDT 2019


fhahn created this revision.
fhahn added reviewers: sanjoy.google, reames, efriedma.
Herald added subscribers: hiraditya, javed.absar.
Herald added a project: LLVM.

For some expressions, we can use information from loop guards when
we are looking for a maximum. This patch applies information from
loop guards to the expression used to compute the maximum backedge
taken count in howFarToZero. It currently replaces an unknown
expression X with UMin(X, Y), if the loop is guarded by
X ult Y.

This patch is minimal in what conditions it applies, and there
are a few TODOs to generalize.

This partly addresses PR40961. We will also need an update to
LV to address it completely.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D67178

Files:
  llvm/include/llvm/Analysis/ScalarEvolution.h
  llvm/lib/Analysis/ScalarEvolution.cpp
  llvm/test/Transforms/LoopVectorize/AArch64/pr36032.ll
  llvm/unittests/Analysis/ScalarEvolutionTest.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D67178.218713.patch
Type: text/x-patch
Size: 12330 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190904/95091d61/attachment.bin>


More information about the llvm-commits mailing list