mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-12 06:45:16 +00:00
ast: Remove expression constructors that don't take a Source
Parsers need fixing up. Bug: tint:396 Bug: tint:390 Change-Id: I7f823e2489101b43c1b21a6b89c248695a3f35b7 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/35160 Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
5ed161b2d9
commit
1ff59cd0e2
@@ -131,22 +131,23 @@ ast::ArrayAccessorExpression* BoundArrayAccessors::Transform(
|
||||
cast_expr.push_back(ctx->Clone(expr->idx_expr()));
|
||||
|
||||
ast::ExpressionList params;
|
||||
params.push_back(
|
||||
ctx->mod->create<ast::TypeConstructorExpression>(u32, cast_expr));
|
||||
params.push_back(ctx->mod->create<ast::TypeConstructorExpression>(
|
||||
Source{}, u32, cast_expr));
|
||||
params.push_back(ctx->mod->create<ast::ScalarConstructorExpression>(
|
||||
ctx->mod->create<ast::UintLiteral>(Source{}, u32, size - 1)));
|
||||
Source{}, ctx->mod->create<ast::UintLiteral>(Source{}, u32, size - 1)));
|
||||
|
||||
auto* call_expr = ctx->mod->create<ast::CallExpression>(
|
||||
Source{},
|
||||
ctx->mod->create<ast::IdentifierExpression>(
|
||||
ctx->mod->RegisterSymbol("min"), "min"),
|
||||
Source{}, ctx->mod->RegisterSymbol("min"), "min"),
|
||||
std::move(params));
|
||||
call_expr->set_result_type(u32);
|
||||
|
||||
idx_expr = call_expr;
|
||||
}
|
||||
|
||||
auto* arr = ctx->Clone(expr->array());
|
||||
return ctx->mod->create<ast::ArrayAccessorExpression>(arr, idx_expr);
|
||||
return ctx->mod->create<ast::ArrayAccessorExpression>(
|
||||
ctx->Clone(expr->source()), ctx->Clone(expr->array()), idx_expr);
|
||||
}
|
||||
|
||||
} // namespace transform
|
||||
|
||||
@@ -65,7 +65,7 @@ Transform::Output EmitVertexPointSize::Run(ast::Module* in) {
|
||||
mod->AddGlobalVariable(pointsize_var);
|
||||
|
||||
// Build the AST expression & statement for assigning pointsize one.
|
||||
auto* one = mod->create<ast::ScalarConstructorExpression>(
|
||||
auto* one = mod->create<ast::ScalarConstructorExpression>(Source{},
|
||||
mod->create<ast::FloatLiteral>(Source{}, f32, 1.0f));
|
||||
auto* pointsize_ident = mod->create<ast::IdentifierExpression>(
|
||||
Source{}, mod->RegisterSymbol(kPointSizeVar), kPointSizeVar);
|
||||
|
||||
@@ -252,15 +252,16 @@ ast::VariableDeclStatement* FirstIndexOffset::CreateFirstIndexOffset(
|
||||
ast::Variable* buffer_var,
|
||||
ast::Module* mod) {
|
||||
auto* buffer = mod->create<ast::IdentifierExpression>(
|
||||
mod->RegisterSymbol(buffer_var->name()), buffer_var->name());
|
||||
Source{}, mod->RegisterSymbol(buffer_var->name()), buffer_var->name());
|
||||
auto* constructor = mod->create<ast::BinaryExpression>(
|
||||
ast::BinaryOp::kAdd,
|
||||
Source{}, ast::BinaryOp::kAdd,
|
||||
mod->create<ast::IdentifierExpression>(
|
||||
mod->RegisterSymbol(kIndexOffsetPrefix + original_name),
|
||||
Source{}, mod->RegisterSymbol(kIndexOffsetPrefix + original_name),
|
||||
kIndexOffsetPrefix + original_name),
|
||||
mod->create<ast::MemberAccessorExpression>(
|
||||
buffer, mod->create<ast::IdentifierExpression>(
|
||||
mod->RegisterSymbol(field_name), field_name)));
|
||||
Source{}, buffer,
|
||||
mod->create<ast::IdentifierExpression>(
|
||||
Source{}, mod->RegisterSymbol(field_name), field_name)));
|
||||
auto* var =
|
||||
mod->create<ast::Variable>(Source{}, // source
|
||||
original_name, // name
|
||||
|
||||
@@ -74,8 +74,9 @@ TEST_F(FirstIndexOffsetTest, Error_AlreadyTransformed) {
|
||||
void Build() override {
|
||||
AddBuiltinInput("vert_idx", ast::Builtin::kVertexIdx);
|
||||
AddFunction("test")->body()->append(create<ast::ReturnStatement>(
|
||||
Source{}, create<ast::IdentifierExpression>(
|
||||
mod->RegisterSymbol("vert_idx"), "vert_idx")));
|
||||
Source{},
|
||||
create<ast::IdentifierExpression>(
|
||||
Source{}, mod->RegisterSymbol("vert_idx"), "vert_idx")));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -116,8 +117,9 @@ TEST_F(FirstIndexOffsetTest, BasicModuleVertexIndex) {
|
||||
void Build() override {
|
||||
AddBuiltinInput("vert_idx", ast::Builtin::kVertexIdx);
|
||||
AddFunction("test")->body()->append(create<ast::ReturnStatement>(
|
||||
Source{}, create<ast::IdentifierExpression>(
|
||||
mod->RegisterSymbol("vert_idx"), "vert_idx")));
|
||||
Source{},
|
||||
create<ast::IdentifierExpression>(
|
||||
Source{}, mod->RegisterSymbol("vert_idx"), "vert_idx")));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -193,8 +195,9 @@ TEST_F(FirstIndexOffsetTest, BasicModuleInstanceIndex) {
|
||||
void Build() override {
|
||||
AddBuiltinInput("inst_idx", ast::Builtin::kInstanceIdx);
|
||||
AddFunction("test")->body()->append(create<ast::ReturnStatement>(
|
||||
Source{}, create<ast::IdentifierExpression>(
|
||||
mod->RegisterSymbol("inst_idx"), "inst_idx")));
|
||||
Source{},
|
||||
create<ast::IdentifierExpression>(
|
||||
Source{}, mod->RegisterSymbol("inst_idx"), "inst_idx")));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -347,13 +350,15 @@ TEST_F(FirstIndexOffsetTest, NestedCalls) {
|
||||
AddBuiltinInput("vert_idx", ast::Builtin::kVertexIdx);
|
||||
ast::Function* func1 = AddFunction("func1");
|
||||
func1->body()->append(create<ast::ReturnStatement>(
|
||||
Source{}, create<ast::IdentifierExpression>(
|
||||
mod->RegisterSymbol("vert_idx"), "vert_idx")));
|
||||
Source{},
|
||||
create<ast::IdentifierExpression>(
|
||||
Source{}, mod->RegisterSymbol("vert_idx"), "vert_idx")));
|
||||
ast::Function* func2 = AddFunction("func2");
|
||||
func2->body()->append(create<ast::ReturnStatement>(
|
||||
Source{}, create<ast::CallExpression>(
|
||||
Source{},
|
||||
create<ast::IdentifierExpression>(
|
||||
mod->RegisterSymbol("func1"), "func1"),
|
||||
Source{}, mod->RegisterSymbol("func1"), "func1"),
|
||||
ast::ExpressionList{})));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -326,13 +326,13 @@ void VertexPulling::State::AddVertexPullingPreamble(
|
||||
: instance_index_name;
|
||||
// Identifier to index by
|
||||
auto* index_identifier = mod->create<ast::IdentifierExpression>(
|
||||
mod->RegisterSymbol(name), name);
|
||||
Source{}, mod->RegisterSymbol(name), name);
|
||||
|
||||
// An expression for the start of the read in the buffer in bytes
|
||||
auto* pos_value = mod->create<ast::BinaryExpression>(
|
||||
ast::BinaryOp::kAdd,
|
||||
Source{}, ast::BinaryOp::kAdd,
|
||||
mod->create<ast::BinaryExpression>(
|
||||
ast::BinaryOp::kMultiply, index_identifier,
|
||||
Source{}, ast::BinaryOp::kMultiply, index_identifier,
|
||||
GenUint(static_cast<uint32_t>(buffer_layout.array_stride))),
|
||||
GenUint(static_cast<uint32_t>(attribute_desc.offset)));
|
||||
|
||||
@@ -342,8 +342,8 @@ void VertexPulling::State::AddVertexPullingPreamble(
|
||||
block->append(set_pos_expr);
|
||||
|
||||
block->append(mod->create<ast::AssignmentStatement>(
|
||||
mod->create<ast::IdentifierExpression>(mod->RegisterSymbol(v->name()),
|
||||
v->name()),
|
||||
mod->create<ast::IdentifierExpression>(
|
||||
Source{}, mod->RegisterSymbol(v->name()), v->name()),
|
||||
AccessByFormat(i, attribute_desc.format)));
|
||||
}
|
||||
}
|
||||
@@ -353,12 +353,12 @@ void VertexPulling::State::AddVertexPullingPreamble(
|
||||
|
||||
ast::Expression* VertexPulling::State::GenUint(uint32_t value) {
|
||||
return mod->create<ast::ScalarConstructorExpression>(
|
||||
mod->create<ast::UintLiteral>(Source{}, GetU32Type(), value));
|
||||
Source{}, mod->create<ast::UintLiteral>(Source{}, GetU32Type(), value));
|
||||
}
|
||||
|
||||
ast::Expression* VertexPulling::State::CreatePullingPositionIdent() {
|
||||
return mod->create<ast::IdentifierExpression>(
|
||||
mod->RegisterSymbol(kPullingPosVarName), kPullingPosVarName);
|
||||
Source{}, mod->RegisterSymbol(kPullingPosVarName), kPullingPosVarName);
|
||||
}
|
||||
|
||||
ast::Expression* VertexPulling::State::AccessByFormat(uint32_t buffer,
|
||||
@@ -397,26 +397,29 @@ ast::Expression* VertexPulling::State::AccessU32(uint32_t buffer,
|
||||
// base case.
|
||||
auto vbuf_name = GetVertexBufferName(buffer);
|
||||
return mod->create<ast::ArrayAccessorExpression>(
|
||||
Source{},
|
||||
mod->create<ast::MemberAccessorExpression>(
|
||||
mod->create<ast::IdentifierExpression>(mod->RegisterSymbol(vbuf_name),
|
||||
vbuf_name),
|
||||
Source{},
|
||||
mod->create<ast::IdentifierExpression>(
|
||||
mod->RegisterSymbol(kStructBufferName), kStructBufferName)),
|
||||
mod->create<ast::BinaryExpression>(ast::BinaryOp::kDivide, pos,
|
||||
Source{}, mod->RegisterSymbol(vbuf_name), vbuf_name),
|
||||
mod->create<ast::IdentifierExpression>(
|
||||
Source{}, mod->RegisterSymbol(kStructBufferName),
|
||||
kStructBufferName)),
|
||||
mod->create<ast::BinaryExpression>(Source{}, ast::BinaryOp::kDivide, pos,
|
||||
GenUint(4)));
|
||||
}
|
||||
|
||||
ast::Expression* VertexPulling::State::AccessI32(uint32_t buffer,
|
||||
ast::Expression* pos) {
|
||||
// as<T> reinterprets bits
|
||||
return mod->create<ast::BitcastExpression>(GetI32Type(),
|
||||
return mod->create<ast::BitcastExpression>(Source{}, GetI32Type(),
|
||||
AccessU32(buffer, pos));
|
||||
}
|
||||
|
||||
ast::Expression* VertexPulling::State::AccessF32(uint32_t buffer,
|
||||
ast::Expression* pos) {
|
||||
// as<T> reinterprets bits
|
||||
return mod->create<ast::BitcastExpression>(GetF32Type(),
|
||||
return mod->create<ast::BitcastExpression>(Source{}, GetF32Type(),
|
||||
AccessU32(buffer, pos));
|
||||
}
|
||||
|
||||
@@ -448,13 +451,14 @@ ast::Expression* VertexPulling::State::AccessVec(uint32_t buffer,
|
||||
for (uint32_t i = 0; i < count; ++i) {
|
||||
// Offset read position by element_stride for each component
|
||||
auto* cur_pos = mod->create<ast::BinaryExpression>(
|
||||
ast::BinaryOp::kAdd, CreatePullingPositionIdent(),
|
||||
Source{}, ast::BinaryOp::kAdd, CreatePullingPositionIdent(),
|
||||
GenUint(element_stride * i));
|
||||
expr_list.push_back(AccessPrimitive(buffer, cur_pos, base_format));
|
||||
}
|
||||
|
||||
return mod->create<ast::TypeConstructorExpression>(
|
||||
mod->create<ast::type::Vector>(base_type, count), std::move(expr_list));
|
||||
Source{}, mod->create<ast::type::Vector>(base_type, count),
|
||||
std::move(expr_list));
|
||||
}
|
||||
|
||||
ast::type::Type* VertexPulling::State::GetU32Type() {
|
||||
|
||||
Reference in New Issue
Block a user