#include "circt/Dialect/Comb/CombDialect.h"
#include "circt/Dialect/Comb/CombOps.h"
#include "circt/Dialect/HW/HWDialect.h"
#include "circt/Dialect/HW/HWOps.h"
#include "circt/Dialect/Synth/Analysis/LongestPathAnalysis.h"
#include "circt/Dialect/Synth/SynthOps.h"
#include "circt/Dialect/Synth/Transforms/SynthPasses.h"
#include "mlir/Analysis/TopologicalSortUtils.h"
#include "mlir/IR/OpDefinition.h"
#include "llvm/ADT/PointerIntPair.h"
#include "llvm/ADT/PriorityQueue.h"
#include "circt/Dialect/Synth/Transforms/SynthPasses.h.inc"
Go to the source code of this file.
|
| namespace | circt |
| | The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
|
| |
| namespace | circt::synth |
| |
|
| static LogicalResult | replaceWithBalancedTree (IncrementalLongestPathAnalysis *analysis, mlir::IRRewriter &rewriter, Operation *op, llvm::function_ref< bool(OpOperand &)> isInverted, llvm::function_ref< Value(ValueWithArrivalTime, ValueWithArrivalTime)> createBinaryOp) |
| | Construct a balanced binary tree from a variadic operation using a delay-aware algorithm.
|
| |
◆ DEBUG_TYPE
| #define DEBUG_TYPE "synth-lower-variadic" |
◆ GEN_PASS_DEF_LOWERVARIADIC
| #define GEN_PASS_DEF_LOWERVARIADIC |
◆ replaceWithBalancedTree()
| static LogicalResult replaceWithBalancedTree |
( |
IncrementalLongestPathAnalysis * |
analysis, |
|
|
mlir::IRRewriter & |
rewriter, |
|
|
Operation * |
op, |
|
|
llvm::function_ref< bool(OpOperand &)> |
isInverted, |
|
|
llvm::function_ref< Value(ValueWithArrivalTime, ValueWithArrivalTime)> |
createBinaryOp |
|
) |
| |
|
static |
Construct a balanced binary tree from a variadic operation using a delay-aware algorithm.
This function builds the tree by repeatedly combining the two values with the earliest arrival times, which minimizes the critical path delay.
Definition at line 89 of file LowerVariadic.cpp.