mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-21 10:49:14 +00:00
Replace Type::(Is|As)Pointer with Castable
Change-Id: Ic1b82f1ddc61355021a80d8e72f645f830363c62 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/34269 Reviewed-by: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
@@ -2698,8 +2698,8 @@ bool FunctionEmitter::EmitStatement(const spvtools::opt::Instruction& inst) {
|
||||
// So represent a load by a new const definition.
|
||||
auto expr = MakeExpression(inst.GetSingleWordInOperand(0));
|
||||
// The load result type is the pointee type of its operand.
|
||||
assert(expr.type->IsPointer());
|
||||
expr.type = expr.type->AsPointer()->type();
|
||||
assert(expr.type->Is<ast::type::PointerType>());
|
||||
expr.type = expr.type->As<ast::type::PointerType>()->type();
|
||||
return EmitConstDefOrWriteToHoistedVar(inst, expr);
|
||||
}
|
||||
case SpvOpCopyObject: {
|
||||
@@ -3059,7 +3059,7 @@ TypedExpression FunctionEmitter::MakeAccessChain(
|
||||
type_mgr_->FindPointerToType(pointee_type_id, storage_class);
|
||||
auto* ast_pointer_type = parser_impl_.ConvertType(pointer_type_id);
|
||||
assert(ast_pointer_type);
|
||||
assert(ast_pointer_type->IsPointer());
|
||||
assert(ast_pointer_type->Is<ast::type::PointerType>());
|
||||
current_expr = TypedExpression{ast_pointer_type, next_expr};
|
||||
}
|
||||
return current_expr;
|
||||
@@ -3255,8 +3255,9 @@ bool FunctionEmitter::RegisterLocallyDefinedValues() {
|
||||
if (type) {
|
||||
if (type->AsPointer()) {
|
||||
const auto* ast_type = parser_impl_.ConvertType(inst.type_id());
|
||||
if (ast_type && ast_type->AsPointer()) {
|
||||
info->storage_class = ast_type->AsPointer()->storage_class();
|
||||
if (ast_type && ast_type->As<ast::type::PointerType>()) {
|
||||
info->storage_class =
|
||||
ast_type->As<ast::type::PointerType>()->storage_class();
|
||||
}
|
||||
switch (inst.opcode()) {
|
||||
case SpvOpUndef:
|
||||
@@ -3298,8 +3299,8 @@ ast::StorageClass FunctionEmitter::GetStorageClassForPointerValue(uint32_t id) {
|
||||
const auto type_id = def_use_mgr_->GetDef(id)->type_id();
|
||||
if (type_id) {
|
||||
auto* ast_type = parser_impl_.ConvertType(type_id);
|
||||
if (ast_type && ast_type->IsPointer()) {
|
||||
return ast_type->AsPointer()->storage_class();
|
||||
if (ast_type && ast_type->Is<ast::type::PointerType>()) {
|
||||
return ast_type->As<ast::type::PointerType>()->storage_class();
|
||||
}
|
||||
}
|
||||
return ast::StorageClass::kNone;
|
||||
@@ -3307,10 +3308,10 @@ ast::StorageClass FunctionEmitter::GetStorageClassForPointerValue(uint32_t id) {
|
||||
|
||||
ast::type::Type* FunctionEmitter::RemapStorageClass(ast::type::Type* type,
|
||||
uint32_t result_id) {
|
||||
if (type->IsPointer()) {
|
||||
if (type->Is<ast::type::PointerType>()) {
|
||||
// Remap an old-style storage buffer pointer to a new-style storage
|
||||
// buffer pointer.
|
||||
const auto* ast_ptr_type = type->AsPointer();
|
||||
const auto* ast_ptr_type = type->As<ast::type::PointerType>();
|
||||
const auto sc = GetStorageClassForPointerValue(result_id);
|
||||
if (ast_ptr_type->storage_class() != sc) {
|
||||
return parser_impl_.get_module().create<ast::type::PointerType>(
|
||||
|
||||
@@ -1116,14 +1116,15 @@ bool ParserImpl::EmitModuleScopeVariables() {
|
||||
"SPIR-V type with ID: "
|
||||
<< var.type_id();
|
||||
}
|
||||
if (!ast_type->IsPointer()) {
|
||||
if (!ast_type->Is<ast::type::PointerType>()) {
|
||||
return Fail() << "variable with ID " << var.result_id()
|
||||
<< " has non-pointer type " << var.type_id();
|
||||
}
|
||||
}
|
||||
|
||||
auto* ast_store_type = ast_type->AsPointer()->type();
|
||||
auto ast_storage_class = ast_type->AsPointer()->storage_class();
|
||||
auto* ast_store_type = ast_type->As<ast::type::PointerType>()->type();
|
||||
auto ast_storage_class =
|
||||
ast_type->As<ast::type::PointerType>()->storage_class();
|
||||
auto* ast_var =
|
||||
MakeVariable(var.result_id(), ast_storage_class, ast_store_type);
|
||||
if (var.NumInOperands() > 1) {
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "src/ast/struct_member_decoration.h"
|
||||
#include "src/ast/type/alias_type.h"
|
||||
#include "src/ast/type/array_type.h"
|
||||
#include "src/ast/type/pointer_type.h"
|
||||
#include "src/ast/type/type.h"
|
||||
#include "src/reader/reader.h"
|
||||
#include "src/reader/spirv/entry_point_info.h"
|
||||
|
||||
@@ -665,8 +665,8 @@ TEST_F(SpvParserTest, ConvertType_PointerInput) {
|
||||
EXPECT_TRUE(p->BuildInternalModule());
|
||||
|
||||
auto* type = p->ConvertType(3);
|
||||
EXPECT_TRUE(type->IsPointer());
|
||||
auto* ptr_ty = type->AsPointer();
|
||||
EXPECT_TRUE(type->Is<ast::type::PointerType>());
|
||||
auto* ptr_ty = type->As<ast::type::PointerType>();
|
||||
EXPECT_NE(ptr_ty, nullptr);
|
||||
EXPECT_TRUE(ptr_ty->type()->Is<ast::type::F32Type>());
|
||||
EXPECT_EQ(ptr_ty->storage_class(), ast::StorageClass::kInput);
|
||||
@@ -681,8 +681,8 @@ TEST_F(SpvParserTest, ConvertType_PointerOutput) {
|
||||
EXPECT_TRUE(p->BuildInternalModule());
|
||||
|
||||
auto* type = p->ConvertType(3);
|
||||
EXPECT_TRUE(type->IsPointer());
|
||||
auto* ptr_ty = type->AsPointer();
|
||||
EXPECT_TRUE(type->Is<ast::type::PointerType>());
|
||||
auto* ptr_ty = type->As<ast::type::PointerType>();
|
||||
EXPECT_NE(ptr_ty, nullptr);
|
||||
EXPECT_TRUE(ptr_ty->type()->Is<ast::type::F32Type>());
|
||||
EXPECT_EQ(ptr_ty->storage_class(), ast::StorageClass::kOutput);
|
||||
@@ -697,8 +697,8 @@ TEST_F(SpvParserTest, ConvertType_PointerUniform) {
|
||||
EXPECT_TRUE(p->BuildInternalModule());
|
||||
|
||||
auto* type = p->ConvertType(3);
|
||||
EXPECT_TRUE(type->IsPointer());
|
||||
auto* ptr_ty = type->AsPointer();
|
||||
EXPECT_TRUE(type->Is<ast::type::PointerType>());
|
||||
auto* ptr_ty = type->As<ast::type::PointerType>();
|
||||
EXPECT_NE(ptr_ty, nullptr);
|
||||
EXPECT_TRUE(ptr_ty->type()->Is<ast::type::F32Type>());
|
||||
EXPECT_EQ(ptr_ty->storage_class(), ast::StorageClass::kUniform);
|
||||
@@ -713,8 +713,8 @@ TEST_F(SpvParserTest, ConvertType_PointerWorkgroup) {
|
||||
EXPECT_TRUE(p->BuildInternalModule());
|
||||
|
||||
auto* type = p->ConvertType(3);
|
||||
EXPECT_TRUE(type->IsPointer());
|
||||
auto* ptr_ty = type->AsPointer();
|
||||
EXPECT_TRUE(type->Is<ast::type::PointerType>());
|
||||
auto* ptr_ty = type->As<ast::type::PointerType>();
|
||||
EXPECT_NE(ptr_ty, nullptr);
|
||||
EXPECT_TRUE(ptr_ty->type()->Is<ast::type::F32Type>());
|
||||
EXPECT_EQ(ptr_ty->storage_class(), ast::StorageClass::kWorkgroup);
|
||||
@@ -729,8 +729,8 @@ TEST_F(SpvParserTest, ConvertType_PointerUniformConstant) {
|
||||
EXPECT_TRUE(p->BuildInternalModule());
|
||||
|
||||
auto* type = p->ConvertType(3);
|
||||
EXPECT_TRUE(type->IsPointer());
|
||||
auto* ptr_ty = type->AsPointer();
|
||||
EXPECT_TRUE(type->Is<ast::type::PointerType>());
|
||||
auto* ptr_ty = type->As<ast::type::PointerType>();
|
||||
EXPECT_NE(ptr_ty, nullptr);
|
||||
EXPECT_TRUE(ptr_ty->type()->Is<ast::type::F32Type>());
|
||||
EXPECT_EQ(ptr_ty->storage_class(), ast::StorageClass::kUniformConstant);
|
||||
@@ -745,8 +745,8 @@ TEST_F(SpvParserTest, ConvertType_PointerStorageBuffer) {
|
||||
EXPECT_TRUE(p->BuildInternalModule());
|
||||
|
||||
auto* type = p->ConvertType(3);
|
||||
EXPECT_TRUE(type->IsPointer());
|
||||
auto* ptr_ty = type->AsPointer();
|
||||
EXPECT_TRUE(type->Is<ast::type::PointerType>());
|
||||
auto* ptr_ty = type->As<ast::type::PointerType>();
|
||||
EXPECT_NE(ptr_ty, nullptr);
|
||||
EXPECT_TRUE(ptr_ty->type()->Is<ast::type::F32Type>());
|
||||
EXPECT_EQ(ptr_ty->storage_class(), ast::StorageClass::kStorageBuffer);
|
||||
@@ -761,8 +761,8 @@ TEST_F(SpvParserTest, ConvertType_PointerImage) {
|
||||
EXPECT_TRUE(p->BuildInternalModule());
|
||||
|
||||
auto* type = p->ConvertType(3);
|
||||
EXPECT_TRUE(type->IsPointer());
|
||||
auto* ptr_ty = type->AsPointer();
|
||||
EXPECT_TRUE(type->Is<ast::type::PointerType>());
|
||||
auto* ptr_ty = type->As<ast::type::PointerType>();
|
||||
EXPECT_NE(ptr_ty, nullptr);
|
||||
EXPECT_TRUE(ptr_ty->type()->Is<ast::type::F32Type>());
|
||||
EXPECT_EQ(ptr_ty->storage_class(), ast::StorageClass::kImage);
|
||||
@@ -777,8 +777,8 @@ TEST_F(SpvParserTest, ConvertType_PointerPrivate) {
|
||||
EXPECT_TRUE(p->BuildInternalModule());
|
||||
|
||||
auto* type = p->ConvertType(3);
|
||||
EXPECT_TRUE(type->IsPointer());
|
||||
auto* ptr_ty = type->AsPointer();
|
||||
EXPECT_TRUE(type->Is<ast::type::PointerType>());
|
||||
auto* ptr_ty = type->As<ast::type::PointerType>();
|
||||
EXPECT_NE(ptr_ty, nullptr);
|
||||
EXPECT_TRUE(ptr_ty->type()->Is<ast::type::F32Type>());
|
||||
EXPECT_EQ(ptr_ty->storage_class(), ast::StorageClass::kPrivate);
|
||||
@@ -793,8 +793,8 @@ TEST_F(SpvParserTest, ConvertType_PointerFunction) {
|
||||
EXPECT_TRUE(p->BuildInternalModule());
|
||||
|
||||
auto* type = p->ConvertType(3);
|
||||
EXPECT_TRUE(type->IsPointer());
|
||||
auto* ptr_ty = type->AsPointer();
|
||||
EXPECT_TRUE(type->Is<ast::type::PointerType>());
|
||||
auto* ptr_ty = type->As<ast::type::PointerType>();
|
||||
EXPECT_NE(ptr_ty, nullptr);
|
||||
EXPECT_TRUE(ptr_ty->type()->Is<ast::type::F32Type>());
|
||||
EXPECT_EQ(ptr_ty->storage_class(), ast::StorageClass::kFunction);
|
||||
@@ -812,14 +812,14 @@ TEST_F(SpvParserTest, ConvertType_PointerToPointer) {
|
||||
|
||||
auto* type = p->ConvertType(3);
|
||||
EXPECT_NE(type, nullptr);
|
||||
EXPECT_TRUE(type->IsPointer());
|
||||
EXPECT_TRUE(type->Is<ast::type::PointerType>());
|
||||
|
||||
auto* ptr_ty = type->AsPointer();
|
||||
auto* ptr_ty = type->As<ast::type::PointerType>();
|
||||
EXPECT_NE(ptr_ty, nullptr);
|
||||
EXPECT_EQ(ptr_ty->storage_class(), ast::StorageClass::kInput);
|
||||
EXPECT_TRUE(ptr_ty->type()->IsPointer());
|
||||
EXPECT_TRUE(ptr_ty->type()->Is<ast::type::PointerType>());
|
||||
|
||||
auto* ptr_ptr_ty = ptr_ty->type()->AsPointer();
|
||||
auto* ptr_ptr_ty = ptr_ty->type()->As<ast::type::PointerType>();
|
||||
EXPECT_NE(ptr_ptr_ty, nullptr);
|
||||
EXPECT_EQ(ptr_ptr_ty->storage_class(), ast::StorageClass::kOutput);
|
||||
EXPECT_TRUE(ptr_ptr_ty->type()->Is<ast::type::F32Type>());
|
||||
|
||||
@@ -239,9 +239,9 @@ TEST_F(ParserImplTest, TypeDecl_Ptr) {
|
||||
EXPECT_FALSE(t.errored);
|
||||
ASSERT_NE(t.value, nullptr) << p->error();
|
||||
ASSERT_FALSE(p->has_error());
|
||||
ASSERT_TRUE(t->IsPointer());
|
||||
ASSERT_TRUE(t->Is<ast::type::PointerType>());
|
||||
|
||||
auto* ptr = t->AsPointer();
|
||||
auto* ptr = t->As<ast::type::PointerType>();
|
||||
ASSERT_TRUE(ptr->type()->Is<ast::type::F32Type>());
|
||||
ASSERT_EQ(ptr->storage_class(), ast::StorageClass::kFunction);
|
||||
}
|
||||
@@ -253,9 +253,9 @@ TEST_F(ParserImplTest, TypeDecl_Ptr_ToVec) {
|
||||
EXPECT_FALSE(t.errored);
|
||||
ASSERT_NE(t.value, nullptr) << p->error();
|
||||
ASSERT_FALSE(p->has_error());
|
||||
ASSERT_TRUE(t->IsPointer());
|
||||
ASSERT_TRUE(t->Is<ast::type::PointerType>());
|
||||
|
||||
auto* ptr = t->AsPointer();
|
||||
auto* ptr = t->As<ast::type::PointerType>();
|
||||
ASSERT_TRUE(ptr->type()->IsVector());
|
||||
ASSERT_EQ(ptr->storage_class(), ast::StorageClass::kFunction);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user