This patch adds a topological sort utility and pass. A topological sort reorders the operations in a block without SSA dominance such that, as much as possible, users of values come after their producers. The utility function sorts topologically the operation range in a given block with an optional user-provided callback that can be used to virtually break cycles. The toposort pass itself recursively sorts graph regions under the target op. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D125063
20 lines
404 B
CMake
20 lines
404 B
CMake
add_mlir_library(MLIRTransformUtils
|
|
ControlFlowSinkUtils.cpp
|
|
DialectConversion.cpp
|
|
FoldUtils.cpp
|
|
GreedyPatternRewriteDriver.cpp
|
|
InliningUtils.cpp
|
|
LoopInvariantCodeMotionUtils.cpp
|
|
RegionUtils.cpp
|
|
SideEffectUtils.cpp
|
|
TopologicalSortUtils.cpp
|
|
|
|
ADDITIONAL_HEADER_DIRS
|
|
${MLIR_MAIN_INCLUDE_DIR}/mlir/Transforms
|
|
|
|
LINK_LIBS PUBLIC
|
|
MLIRAnalysis
|
|
MLIRLoopLikeInterface
|
|
MLIRRewrite
|
|
)
|