Skip to content

Commit 1e486ed

Browse files
committed
Use spill cache for more ops and allow opt-out.
1 parent 37c0b35 commit 1e486ed

File tree

6 files changed

+119
-80
lines changed

6 files changed

+119
-80
lines changed

include/circt/Conversion/HWToLLVM.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,7 @@ void populateHWToLLVMConversionPatterns(
6767
Namespace &globals,
6868
DenseMap<std::pair<Type, ArrayAttr>, mlir::LLVM::GlobalOp>
6969
&constAggregateGlobalsMap,
70-
ArraySpillCache &spillCache);
71-
72-
/// Create an HW to LLVM conversion pass.
73-
std::unique_ptr<OperationPass<ModuleOp>> createConvertHWToLLVMPass();
70+
std::optional<ArraySpillCache> &spillCacheOpt);
7471

7572
} // namespace circt
7673

include/circt/Conversion/Passes.td

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,10 @@ def ConvertHWToLLVM : Pass<"convert-hw-to-llvm", "mlir::ModuleOp"> {
509509
let description = [{
510510
This pass translates HW to LLVM.
511511
}];
512-
let constructor = "circt::createConvertHWToLLVMPass()";
512+
let options = [Option<
513+
"spillArraysEarly", "spill-arrays-early", "bool", "true",
514+
"If true, array values will me materialized on the stack at the"
515+
"point of definition. This can reduce redundant stack allocations.">];
513516
let dependentDialects = ["mlir::LLVM::LLVMDialect"];
514517
}
515518

lib/Conversion/ArcToLLVM/LowerArcToLLVM.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -761,13 +761,13 @@ void LowerArcToLLVMPass::runOnOperation() {
761761
// CIRCT patterns.
762762
DenseMap<std::pair<Type, ArrayAttr>, LLVM::GlobalOp> constAggregateGlobalsMap;
763763
populateHWToLLVMTypeConversions(converter);
764-
ArraySpillCache spillCache;
764+
std::optional<ArraySpillCache> spillCacheOpt = ArraySpillCache();
765765
{
766766
OpBuilder spillBuilder(getOperation());
767-
spillCache.spillNonHWOps(spillBuilder, converter, getOperation());
767+
spillCacheOpt->spillNonHWOps(spillBuilder, converter, getOperation());
768768
}
769769
populateHWToLLVMConversionPatterns(converter, patterns, globals,
770-
constAggregateGlobalsMap, spillCache);
770+
constAggregateGlobalsMap, spillCacheOpt);
771771

772772
populateCombToArithConversionPatterns(converter, patterns);
773773
populateCombToLLVMConversionPatterns(converter, patterns);

0 commit comments

Comments
 (0)