diff options
Diffstat (limited to 'source/slang/slang-lower-to-ir.cpp')
| -rw-r--r-- | source/slang/slang-lower-to-ir.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/source/slang/slang-lower-to-ir.cpp b/source/slang/slang-lower-to-ir.cpp index ca32b0f2d..5d83a351f 100644 --- a/source/slang/slang-lower-to-ir.cpp +++ b/source/slang/slang-lower-to-ir.cpp @@ -2062,6 +2062,21 @@ struct ValLoweringVisitor : ValVisitor<ValLoweringVisitor, LoweredValInfo, Lower } } + IRInst* convertToUInt64Value(IRInst* inst) + { + if (inst->getOp() == kIROp_IntLit) + { + auto constVal = as<IRConstant>(inst); + return context->irBuilder->getIntValue( + context->irBuilder->getUInt64Type(), + constVal->value.intVal); + } + else + { + return context->irBuilder->emitCast(context->irBuilder->getUInt64Type(), inst); + } + } + IRType* visitPtrType(PtrType* type) { auto astValueType = type->getValueType(); @@ -2072,12 +2087,14 @@ struct ValLoweringVisitor : ValVisitor<ValLoweringVisitor, LoweredValInfo, Lower if (auto astAccessQualifier = type->getAccessQualifier()) { - accessQualifier = getSimpleVal(context, lowerVal(context, astAccessQualifier)); + accessQualifier = + convertToUInt64Value(getSimpleVal(context, lowerVal(context, astAccessQualifier))); } if (auto astAddrSpace = type->getAddressSpace()) { - addrSpace = getSimpleVal(context, lowerVal(context, astAddrSpace)); + addrSpace = + convertToUInt64Value(getSimpleVal(context, lowerVal(context, astAddrSpace))); } else { |
