[all-commits] [llvm/llvm-project] d4ddf6: [SCEV] Use loop guard info when computing the max ...

Florian Hahn via All-commits all-commits at lists.llvm.org
Thu Sep 24 03:14:27 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: d4ddf63fc40cfbbc348adcc45cdc6f6d78268c5c
      https://github.com/llvm/llvm-project/commit/d4ddf63fc40cfbbc348adcc45cdc6f6d78268c5c
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2020-09-24 (Thu, 24 Sep 2020)

  Changed paths:
    M llvm/include/llvm/Analysis/ScalarEvolution.h
    M llvm/lib/Analysis/ScalarEvolution.cpp
    M llvm/test/Analysis/ScalarEvolution/max-backedge-taken-count-guard-info.ll
    M llvm/test/Transforms/LoopVectorize/AArch64/pr36032.ll
    M llvm/unittests/Analysis/ScalarEvolutionTest.cpp

  Log Message:
  -----------
  [SCEV] Use loop guard info when computing the max BE taken count in howFarToZero.

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.

Reviewed By: reames

Differential Revision: https://reviews.llvm.org/D67178




More information about the All-commits mailing list