[PATCH] D76132: [LoopUnrollAndJam] Changed safety checks to consider more than 2-levels loop nest.

Whitney Tsang via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 26 08:38:57 PDT 2020


Whitney updated this revision to Diff 252851.
Whitney added a comment.

Thanks @Meinersbur ! I mostly used your code directly, except

  for (unsigned d = 1; d < UnrollLevel; ++d) {
        // Check if dependence is carried by an outer loop.
        // That is, changing
        //   (0,>,>,*,*)
        // to
        //   (0,>,>=,*,*)
        // will still not violate the dependency.
        if (D->getDirection(d) == Dependence::DVEntry::GT)
          return true;
      }

which I think should be safe as long as the one dependence is not EQ then should be safe.

  for i
    for j        <= unroll loop
      for k
         A[i][j][k]
         A[i-1][j+1][k]

Loop-j should be safe to unroll and jam. Am I right?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76132/new/

https://reviews.llvm.org/D76132

Files:
  llvm/include/llvm/Transforms/Utils/UnrollLoop.h
  llvm/lib/Transforms/Scalar/LoopUnrollAndJamPass.cpp
  llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp
  llvm/test/Transforms/LoopUnrollAndJam/dependencies.ll
  llvm/test/Transforms/LoopUnrollAndJam/dependencies_multidims.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D76132.252851.patch
Type: text/x-patch
Size: 29532 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200326/b7acf3ac/attachment-0001.bin>


More information about the llvm-commits mailing list