summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-autodiff.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-02-16 16:44:04 -0800
committerGitHub <noreply@github.com>2023-02-16 16:44:04 -0800
commit245466d89cfe54b78da486f06d470bc6daaf4625 (patch)
tree522e0af1a9d2756182e143cdc85031ea1bbc2aa0 /source/slang/slang-ir-autodiff.cpp
parent4c4826d47eeef4675daae4ae53ff76f4d5ebd84a (diff)
Remove `SharedIRBuilder`. (#2657)
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-ir-autodiff.cpp')
-rw-r--r--source/slang/slang-ir-autodiff.cpp33
1 files changed, 9 insertions, 24 deletions
diff --git a/source/slang/slang-ir-autodiff.cpp b/source/slang/slang-ir-autodiff.cpp
index 2ce5a48f7..1232cf50d 100644
--- a/source/slang/slang-ir-autodiff.cpp
+++ b/source/slang/slang-ir-autodiff.cpp
@@ -214,7 +214,7 @@ IRStructKey* DifferentialPairTypeBuilder::_getOrCreateDiffStructKey()
{
if (!this->globalDiffKey)
{
- IRBuilder builder(sharedContext->sharedBuilder);
+ IRBuilder builder(sharedContext->moduleInst);
// Insert directly at top level (skip any generic scopes etc.)
builder.setInsertInto(sharedContext->moduleInst);
@@ -230,7 +230,7 @@ IRStructKey* DifferentialPairTypeBuilder::_getOrCreatePrimalStructKey()
if (!this->globalPrimalKey)
{
// Insert directly at top level (skip any generic scopes etc.)
- IRBuilder builder(sharedContext->sharedBuilder);
+ IRBuilder builder(sharedContext->moduleInst);
builder.setInsertInto(sharedContext->moduleInst);
this->globalPrimalKey = builder.createStructKey();
@@ -252,7 +252,7 @@ IRInst* DifferentialPairTypeBuilder::_createDiffPairType(IRType* origBaseType, I
break;
}
- IRBuilder builder(sharedContext->sharedBuilder);
+ IRBuilder builder(sharedContext->moduleInst);
builder.setInsertBefore(diffType);
auto pairStructType = builder.createStructType();
@@ -537,8 +537,6 @@ struct StripNoDiffTypeAttributePass : InstPassBase
}
}
});
- sharedBuilderStorage.init(module);
- sharedBuilderStorage.deduplicateAndRebuildGlobalNumberingMap();
}
};
@@ -576,7 +574,7 @@ struct AutoDiffPass : public InstPassBase
// TODO(sai): Move this call.
forwardTranscriber.differentiableTypeConformanceContext.buildGlobalWitnessDictionary();
- IRBuilder builderStorage(&sharedBuilderStorage);
+ IRBuilder builderStorage(module);
IRBuilder* builder = &builderStorage;
// Process all ForwardDifferentiate and BackwardDifferentiate instructions by
@@ -808,7 +806,6 @@ struct AutoDiffPass : public InstPassBase
if (lowerIntermediateContextType(builder))
{
- sharedBuilderStorage.deduplicateAndRebuildGlobalNumberingMap();
hasChanges = true;
}
@@ -817,7 +814,7 @@ struct AutoDiffPass : public InstPassBase
IRStringLit* getDerivativeFuncName(IRInst* func, const char* postFix)
{
- IRBuilder builder(&sharedBuilderStorage);
+ IRBuilder builder(autodiffContext->moduleInst);
builder.setInsertBefore(func);
IRStringLit* name = nullptr;
@@ -846,23 +843,17 @@ struct AutoDiffPass : public InstPassBase
AutoDiffPass(AutoDiffSharedContext* context, DiagnosticSink* sink) :
InstPassBase(context->moduleInst->getModule()),
sink(sink),
- forwardTranscriber(context, &sharedBuilderStorage, sink),
- backwardPrimalTranscriber(context, &sharedBuilderStorage, sink),
- backwardPropagateTranscriber(context, &sharedBuilderStorage, sink),
- backwardTranscriber(context, &sharedBuilderStorage, sink),
+ forwardTranscriber(context, sink),
+ backwardPrimalTranscriber(context, sink),
+ backwardPropagateTranscriber(context, sink),
+ backwardTranscriber(context, sink),
pairBuilderStorage(context),
autodiffContext(context)
{
-
// We start by initializing our shared IR building state,
// since we will re-use that state for any code we
// generate along the way.
//
- sharedBuilderStorage.init(module);
- sharedBuilderStorage.deduplicateAndRebuildGlobalNumberingMap();
-
- context->sharedBuilder = &sharedBuilderStorage;
-
forwardTranscriber.pairBuilder = &pairBuilderStorage;
backwardPrimalTranscriber.pairBuilder = &pairBuilderStorage;
backwardPropagateTranscriber.pairBuilder = &pairBuilderStorage;
@@ -924,12 +915,6 @@ bool finalizeAutoDiffPass(IRModule* module)
// Create shared context for all auto-diff related passes
AutoDiffSharedContext autodiffContext(module->getModuleInst());
- SharedIRBuilder sharedBuilder;
- sharedBuilder.init(module);
- sharedBuilder.deduplicateAndRebuildGlobalNumberingMap();
-
- autodiffContext.sharedBuilder = &sharedBuilder;
-
// Replaces IRDifferentialPairType with an auto-generated struct,
// IRDifferentialPairGetDifferential with 'differential' field access,
// IRDifferentialPairGetPrimal with 'primal' field access, and