[all-commits] [llvm/llvm-project] 76be55: [DependenceAnalysis][PR56275] Normalize negative d...

CongzheUalberta via All-commits all-commits at lists.llvm.org
Wed Aug 3 17:00:28 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 76be5549318a9e5aa3bdc2b3e0ae8ed5a16bfe59
      https://github.com/llvm/llvm-project/commit/76be5549318a9e5aa3bdc2b3e0ae8ed5a16bfe59
  Author: Congzhe Cao <congzhe.cao at huawei.com>
  Date:   2022-08-03 (Wed, 03 Aug 2022)

  Changed paths:
    M llvm/include/llvm/Analysis/DependenceAnalysis.h
    M llvm/lib/Analysis/DependenceAnalysis.cpp
    M llvm/lib/Passes/PassBuilder.cpp
    M llvm/lib/Passes/PassRegistry.def
    M llvm/test/Analysis/DependenceAnalysis/Banerjee.ll

  Log Message:
  -----------
  [DependenceAnalysis][PR56275] Normalize negative dependence analysis results

This patch is the first of the two-patch series (D130188, D130179) that
resolve PR56275 (https://github.com/llvm/llvm-project/issues/56275)
which is a missed opportunity, where a perfrectly valid case for loop
interchange failed interchange legality.

If the distance/direction vector produced by dependence analysis (DA) is
negative, it needs to be normalized (reversed). This patch provides helper
functions `isDirectionNegative()` and `normalize()` in DA that does the
normalization, and clients can query DA to do normalization if needed.

A pass option `<normalized-results>` is added to DependenceAnalysisPrinterPass,
and we leverage it to update DA test cases to make sure of test coverage. The
test cases added in `Banerjee.ll` shows that negative vectors are normalized
with `print<da><normalized-results>`.

Reviewed By: bmahjour, Meinersbur, #loopoptwg

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


  Commit: 8dc4b2edfad7f097f1628c9db8a6ab2264bb480d
      https://github.com/llvm/llvm-project/commit/8dc4b2edfad7f097f1628c9db8a6ab2264bb480d
  Author: Congzhe Cao <congzhe.cao at huawei.com>
  Date:   2022-08-03 (Wed, 03 Aug 2022)

  Changed paths:
    M llvm/lib/Transforms/Scalar/LoopInterchange.cpp
    A llvm/test/Transforms/LoopInterchange/pr56275.ll

  Log Message:
  -----------
  [LoopInterchange][PR56275] Fix legality with negative dependence vectors

This is the 2nd patch of the two-patch series (D130188, D130189) that
fix PR56275 (https://github.com/llvm/llvm-project/issues/56275) which
is a missed opportunity for loop interchange.

As follow-up on the dependence analysis (DA) patch D130188, this patch
normalizes DA results in loop interchange, such that negative dependence
vectors queried by loop interchange are reversed to be non-negative.

Now all tests in PR56275 can get interchanged. Those tests are added
in lit test as `pr56275.ll`.

Reviewed By: kawashima-fj, bmahjour, Meinersbur, #loopoptwg

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


Compare: https://github.com/llvm/llvm-project/compare/a243af52bb66...8dc4b2edfad7


More information about the All-commits mailing list