summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-sccp.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2022-12-07 12:02:30 -0800
committerGitHub <noreply@github.com>2022-12-07 12:02:30 -0800
commit3a3a8b5f7701109fc413f42692c4de5769870489 (patch)
tree909df4a30e69f33a76e0158d92b1823629dc2184 /source/slang/slang-ir-sccp.cpp
parentf116f43bd12358e87f351f0d3615628ac4e00921 (diff)
Lower-to-ir no longer produce `Construct` inst. (#2553)
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-ir-sccp.cpp')
-rw-r--r--source/slang/slang-ir-sccp.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/source/slang/slang-ir-sccp.cpp b/source/slang/slang-ir-sccp.cpp
index 0bee2565c..fbc00848b 100644
--- a/source/slang/slang-ir-sccp.cpp
+++ b/source/slang/slang-ir-sccp.cpp
@@ -136,7 +136,10 @@ struct SCCPContext
case kIROp_BitXor:
case kIROp_BitNot:
case kIROp_BitCast:
- case kIROp_Construct:
+ case kIROp_CastIntToFloat:
+ case kIROp_CastFloatToInt:
+ case kIROp_IntCast:
+ case kIROp_FloatCast:
case kIROp_Select:
return true;
default:
@@ -284,7 +287,7 @@ struct SCCPContext
break; \
}
- LatticeVal evalConstruct(IRType* type, LatticeVal v0)
+ LatticeVal evalCast(IRType* type, LatticeVal v0)
{
SLANG_SCCP_RETURN_IF_NONE_OR_ANY(v0)
auto irConstant = as<IRConstant>(v0.value);
@@ -838,18 +841,20 @@ struct SCCPContext
switch (inst->getOp())
{
- case kIROp_Construct:
+ case kIROp_IntCast:
+ case kIROp_FloatCast:
+ case kIROp_CastIntToFloat:
+ case kIROp_CastFloatToInt:
switch (inst->getOperandCount())
{
- case 0:
- return evalDefaultConstruct(inst->getDataType());
-
case 1:
- return evalConstruct(inst->getDataType(), getLatticeVal(inst->getOperand(0)));
+ return evalCast(inst->getDataType(), getLatticeVal(inst->getOperand(0)));
default:
return LatticeVal::getAny();
}
+ case kIROp_DefaultConstruct:
+ return evalDefaultConstruct(inst->getDataType());
case kIROp_Add:
return evalAdd(
inst->getDataType(),