summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-peephole.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-peephole.cpp
parent4c4826d47eeef4675daae4ae53ff76f4d5ebd84a (diff)
Remove `SharedIRBuilder`. (#2657)
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-ir-peephole.cpp')
-rw-r--r--source/slang/slang-ir-peephole.cpp31
1 files changed, 14 insertions, 17 deletions
diff --git a/source/slang/slang-ir-peephole.cpp b/source/slang/slang-ir-peephole.cpp
index 87c31ffb7..5d5a41726 100644
--- a/source/slang/slang-ir-peephole.cpp
+++ b/source/slang/slang-ir-peephole.cpp
@@ -84,7 +84,7 @@ struct PeepholeContext : InstPassBase
}
else if (remainingKeys.getCount() > 0)
{
- IRBuilder builder(&sharedBuilderStorage);
+ IRBuilder builder(module);
builder.setInsertBefore(inst);
auto newValue = builder.emitElementExtract(updateInst->getElementValue(), remainingKeys);
inst->replaceUsesWith(newValue);
@@ -94,7 +94,7 @@ struct PeepholeContext : InstPassBase
}
else if (isAccessChainNotEqual)
{
- IRBuilder builder(&sharedBuilderStorage);
+ IRBuilder builder(module);
builder.setInsertBefore(inst);
auto newInst = builder.emitElementExtract(updateInst->getOldValue(), chainKey.getArrayView());
inst->replaceUsesWith(newInst);
@@ -189,7 +189,7 @@ struct PeepholeContext : InstPassBase
{
if (vectorType->getElementType() != replacement->getFullType())
return false;
- IRBuilder builder(sharedBuilderStorage);
+ IRBuilder builder(module);
builder.setInsertBefore(inst);
replacement = builder.emitMakeVectorFromScalar(inst->getFullType(), replacement);
}
@@ -319,14 +319,14 @@ struct PeepholeContext : InstPassBase
case kIROp_IsResultError:
if (inst->getOperand(0)->getOp() == kIROp_MakeResultError)
{
- IRBuilder builder(&sharedBuilderStorage);
+ IRBuilder builder(module);
inst->replaceUsesWith(builder.getBoolValue(true));
maybeRemoveOldInst(inst);
changed = true;
}
else if (inst->getOperand(0)->getOp() == kIROp_MakeResultValue)
{
- IRBuilder builder(&sharedBuilderStorage);
+ IRBuilder builder(module);
inst->replaceUsesWith(builder.getBoolValue(false));
maybeRemoveOldInst(inst);
changed = true;
@@ -432,7 +432,7 @@ struct PeepholeContext : InstPassBase
}
if (args.getCount() == arraySize->getValue())
{
- IRBuilder builder(&sharedBuilderStorage);
+ IRBuilder builder(module);
builder.setInsertBefore(inst);
auto makeArray = builder.emitMakeArray(arrayType, (UInt)args.getCount(), args.getBuffer());
inst->replaceUsesWith(makeArray);
@@ -471,7 +471,7 @@ struct PeepholeContext : InstPassBase
}
if (isValid)
{
- IRBuilder builder(&sharedBuilderStorage);
+ IRBuilder builder(module);
builder.setInsertBefore(inst);
auto makeStruct = builder.emitMakeStruct(structType, (UInt)args.getCount(), args.getBuffer());
inst->replaceUsesWith(makeStruct);
@@ -485,7 +485,7 @@ struct PeepholeContext : InstPassBase
case kIROp_CastPtrToBool:
{
auto ptr = inst->getOperand(0);
- IRBuilder builder(&sharedBuilderStorage);
+ IRBuilder builder(module);
builder.setInsertBefore(inst);
auto neq = builder.emitNeq(ptr, builder.getNullVoidPtrValue());
inst->replaceUsesWith(neq);
@@ -499,7 +499,7 @@ struct PeepholeContext : InstPassBase
auto actualType = isTypeInst->getValue()->getDataType();
if (isTypeEqual(actualType, (IRType*)isTypeInst->getTypeOperand()))
{
- IRBuilder builder(&sharedBuilderStorage);
+ IRBuilder builder(module);
builder.setInsertBefore(inst);
auto trueVal = builder.getBoolValue(true);
inst->replaceUsesWith(trueVal);
@@ -559,7 +559,7 @@ struct PeepholeContext : InstPassBase
{
if (inst->getOperand(0)->getOp() == kIROp_MakeOptionalValue)
{
- IRBuilder builder(&sharedBuilderStorage);
+ IRBuilder builder(module);
builder.setInsertBefore(inst);
auto trueVal = builder.getBoolValue(true);
inst->replaceUsesWith(trueVal);
@@ -568,7 +568,7 @@ struct PeepholeContext : InstPassBase
}
else if (inst->getOperand(0)->getOp() == kIROp_MakeOptionalNone)
{
- IRBuilder builder(&sharedBuilderStorage);
+ IRBuilder builder(module);
builder.setInsertBefore(inst);
auto falseVal = builder.getBoolValue(false);
inst->replaceUsesWith(falseVal);
@@ -622,7 +622,7 @@ struct PeepholeContext : InstPassBase
break;
case kIROp_DefaultConstruct:
{
- IRBuilder builder(&sharedBuilderStorage);
+ IRBuilder builder(module);
builder.setInsertBefore(inst);
// See if we can replace the default construct inst with concrete values.
if (auto newCtor = builder.emitDefaultConstruct(inst->getFullType(), false))
@@ -693,9 +693,6 @@ struct PeepholeContext : InstPassBase
bool processFunc(IRInst* func)
{
- SharedIRBuilder* sharedBuilder = &sharedBuilderStorage;
- sharedBuilder->init(module);
- sharedBuilderStorage.deduplicateAndRebuildGlobalNumberingMap();
bool result = false;
for (;;)
@@ -728,9 +725,9 @@ bool peepholeOptimize(IRInst* func)
return context.processFunc(func);
}
-bool tryReplaceInstUsesWithSimplifiedValue(SharedIRBuilder* sharedBuilder, IRInst* inst)
+bool tryReplaceInstUsesWithSimplifiedValue(IRModule* module, IRInst* inst)
{
- if (inst != tryConstantFoldInst(sharedBuilder, inst))
+ if (inst != tryConstantFoldInst(module, inst))
return true;
PeepholeContext context = PeepholeContext(inst->getModule());