[PATCH] D68827: [DDG] Data Dependence Graph - Pi Block

Bardia Mahjour via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 10 13:16:18 PDT 2019


bmahjour created this revision.
bmahjour added reviewers: Meinersbur, fhahn, myhsu, xtian, dmgreen, kbarton, jdoerfert.
bmahjour added a project: LLVM.

This patch adds Pi Blocks to the DDG. A pi-block represents a group of DDG nodes that are part of a strongly-connected component of the graph. Replacing all the SCCs with pi-blocks results in an acyclic representation of the DDG. For example if we have:

  {a -> b}, {b -> c, d}, {c -> a}

the cycle `a -> b -> c -> a` is abstracted into a pi-block "p" as follows:

  {p -> d} with "p" containing: {a -> b}, {b -> c}, {c -> a}

In this implementation the edges between nodes that are part of the pi-block are preserved. The crossing edges (edges where one end of the edge is in the set of nodes belonging to an SCC and the other end is outside that set) are replaced with corresponding edges to/from the pi-block node instead.


Repository:
  rL LLVM

https://reviews.llvm.org/D68827

Files:
  llvm/include/llvm/Analysis/DDG.h
  llvm/include/llvm/Analysis/DependenceGraphBuilder.h
  llvm/lib/Analysis/DDG.cpp
  llvm/lib/Analysis/DependenceGraphBuilder.cpp
  llvm/test/Analysis/DDG/basic-a.ll
  llvm/test/Analysis/DDG/basic-b.ll
  llvm/test/Analysis/DDG/basic-loopnest.ll
  llvm/test/Analysis/DDG/root-node.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D68827.224454.patch
Type: text/x-patch
Size: 59853 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191010/86fba576/attachment.bin>


More information about the llvm-commits mailing list