KKazu Hirata[mlir] Don't use Optional::getValue (NFC)
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[mlir][transforms] Add a topological sort utility and pass 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 | 4 年前 | |
[mlir] Refactor LICM into a utility LICM is refactored into a utility that is application on any region. The implementation is moved to Transform/Utils. | 4 年前 | |
[mlir] Don't use Optional::getValue (NFC) | 3 年前 | |
Reland [GreedPatternRewriter] Preprocess constants while building worklist when not processing top down Reland Note: Adds a fix to properly mark a commutative operation as folded if we change the order of its operands. This was uncovered by the fact that we no longer re-process constants. This avoids accidentally reversing the order of constants during successive application, e.g. when running the canonicalizer. This helps reduce the number of iterations, and also avoids unnecessary changes to input IR. Fixes #51892 Differential Revision: https://reviews.llvm.org/D122692 | 4 年前 | |
[mlir:MultiOpDriver] Add operands to worklist should be checked Operand's defining op may not be valid for adding to the worklist under stict mode Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D127180 | 3 年前 | |
[mlir] Move the Builtin FuncOp to the Func dialect This commit moves FuncOp out of the builtin dialect, and into the Func dialect. This move has been planned in some capacity from the moment we made FuncOp an operation (years ago). This commit handles the functional aspects of the move, but various aspects are left untouched to ease migration: func::FuncOp is re-exported into mlir to reduce the actual API churn, the assembly format still accepts the unqualified func. These temporary measures will remain for a little while to simplify migration before being removed. Differential Revision: https://reviews.llvm.org/D121266 | 4 年前 | |
[mlir][licm] Fix debug output with newlines | 4 年前 | |
[mlir] Add support for operation-produced successor arguments in BranchOpInterface This patch revamps the BranchOpInterface a bit and allows a proper implementation of what was previously getMutableSuccessorOperands for operations, which internally produce arguments to some of the block arguments. A motivating example for this would be an invoke op with a error handling path: invoke %function(%0) label ^success ^error(%1 : i32) ^error(%e: !error, %arg0 : i32): ... The advantages of this are that any users of BranchOpInterface can still argue over remaining block argument operands (such as %1 in the example above), as well as make use of the modifying capabilities to add more operands, erase an operand etc. The way this patch implements that functionality is via a new class called SuccessorOperands, which is now returned by getSuccessorOperands. It basically contains an unsigned denoting how many operator produced operands exist, as well as a MutableOperandRange, which are the usual forwarded operands we are used to. The produced operands are assumed to the first few block arguments, followed by the forwarded operands afterwards. The role of SuccessorOperands is to provide various utility functions to modify and query the successor arguments from a BranchOpInterface. Differential Revision: https://reviews.llvm.org/D123062 | 4 年前 | |
[mlir] Refactor LICM into a utility LICM is refactored into a utility that is application on any region. The implementation is moved to Transform/Utils. | 4 年前 | |
[mlir][transforms] Add a topological sort utility and pass 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 | 4 年前 |