From c9d89a40775a055873adf82cfb0ee1cb6bdcb93c Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 25 Jul 2024 15:00:14 -0700 Subject: Overhaul IR lowering of pointer types. (#4710) * Overhaul IR lowering of pointer types. * Propagate address space in IRBuilder. * Fixup. * Fix. * Fix. * Change how Ptr type is printed to text. * Fix. --- source/slang/slang-ast-builder.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'source/slang/slang-ast-builder.cpp') diff --git a/source/slang/slang-ast-builder.cpp b/source/slang/slang-ast-builder.cpp index a672c1b7e..ce4c32c3a 100644 --- a/source/slang/slang-ast-builder.cpp +++ b/source/slang/slang-ast-builder.cpp @@ -290,9 +290,9 @@ Type* ASTBuilder::getSpecializedBuiltinType(ArrayView genericArgs, const c return rsType; } -PtrType* ASTBuilder::getPtrType(Type* valueType) +PtrType* ASTBuilder::getPtrType(Type* valueType, AddressSpace addrSpace) { - return dynamicCast(getPtrType(valueType, "PtrType")); + return dynamicCast(getPtrType(valueType, addrSpace, "PtrType")); } // Construct the type `Out` @@ -306,9 +306,9 @@ InOutType* ASTBuilder::getInOutType(Type* valueType) return dynamicCast(getPtrType(valueType, "InOutType")); } -RefType* ASTBuilder::getRefType(Type* valueType) +RefType* ASTBuilder::getRefType(Type* valueType, AddressSpace addrSpace) { - return dynamicCast(getPtrType(valueType, "RefType")); + return dynamicCast(getPtrType(valueType, addrSpace, "RefType")); } ConstRefType* ASTBuilder::getConstRefType(Type* valueType) @@ -327,6 +327,12 @@ PtrTypeBase* ASTBuilder::getPtrType(Type* valueType, char const* ptrTypeName) return as(getSpecializedBuiltinType(valueType, ptrTypeName)); } +PtrTypeBase* ASTBuilder::getPtrType(Type* valueType, AddressSpace addrSpace, char const* ptrTypeName) +{ + Val* args[] = { valueType, getIntVal(getUInt64Type(), (IntegerLiteralValue)addrSpace) }; + return as(getSpecializedBuiltinType(makeArrayView(args), ptrTypeName)); +} + ArrayExpressionType* ASTBuilder::getArrayType(Type* elementType, IntVal* elementCount) { if (!elementCount) -- cgit v1.2.3